From: Chet Ramey Date: Mon, 7 Jan 2019 14:27:52 +0000 (-0500) Subject: bash-5.0 distribution sources and documentation X-Git-Tag: bash-5.0 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d233b485e83c3a784b803fb894280773f16f2deb;p=thirdparty%2Fbash.git bash-5.0 distribution sources and documentation --- 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 43cb1341a..262fd6568 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,820 @@ +This document details the changes between this version, bash-5.0-release, and +the previous version, bash-5.0-rc1. + +1. Changes to Bash + +a. Tilde expansion isn't performed on indexed array subscripts, even for + backwards compatibility. + +b. The shell doesn't exit in posix mode if the eval builtin gets a parse + error when run by the command builtin. + +c. Fixed a bug that caused a shell comment in an alias to not find the end + of the alias properly. + +d. Reverted a change from April, 2018 that caused strings containing + backslashes to be flagged as glob patterns. + +2. Changes to Readline + +3. New Features in Bash + +4. New Features in Readline + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.0-rc1, and +the previous version, bash-5.0-beta2. + +1. Changes to Bash + +a. Fix to initial word completion detection code. + +b. Fixed a bug that caused issues with assignment statements containing ^A in + the value assigned when IFS contains ^A. + +c. Added a fallback to fnmatch() when strcoll can't correctly deal with + bracket expression character equivalence classes. + +d. Fixed a bug that caused $BASH_COMMAND to contain the trap handler command + when running a trap handler containing [[ or (( commands. + +e. Fixed a bug that caused nameref assignments in the temporary environment + to potentially create variables with invalid names. + +f. Fixed a bug that caused `local -' to turn off alias expansion in scripts. + +g. Fixed a parser issue with a command string containing EOF after an invalid + command as an argument to a special builtin not causing a posix-mode shell + to exit. + +h. Made a slight change to the FNV-1 string hash algorithm used for associative + arrays (corrected the initial seed). + +2. Changes to Readline + +3. New Features in Bash + +a. The `select' command now supports command forms without a word list + following `in'. + +4. New Features in Readline + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.0-beta2, and +the previous version, bash-5.0-beta. + +1. Changes to Bash + +a. Fixed a bug that could cause a seg fault while parsing a subshell command + inside a command substitution. + +b. Fixed several small memory leaks uncovered by coverity. + +c. Fixed a problem with command substitution inside an interactive shell that + could cause the parent to receive a SIGHUP. + +d. Fixed a problem with using `*' and `@' as subscripts when assigning values + to an associative array with assoc_expand_once enabled. + +e. Fixed a bug that could cause a huge memory allocation when completing a + word beginning with an invalid tilde expansion. + +f. Cleaned up some incompatiblities with bash-4.4 when expanding indexed array + subscripts used in arithmetic expansions when assoc_expand_once is enabled. + +g. The ${parameter@a} expansion will display attributes even if `parameter' is + unset. + +h. Fixed a bug that caused the output of `set' to cut off some variables before + printing the value. + +i. Treat a failure to assign a variable when using the ${x:=value} expansion + as an expansion error, so non-interactive posix-mode shells exit + +j. Fixed a problem when expanding $* in a context where word splitting is not + performed when IFS is NULL. + +k. Temp files used to store here documents are forced readable, no matter what + the user's umask says. + +l. Fixed a problem where an interrupted brace expansion could cause the shell + to attempt to free an invalid memory location. + +m. Make sure to check for any terminating signals after running a trap + handler; don't wait until the next time we process traps. + +n. Fixed a bug that caused "return" to act like a special builtin with respect + to variable assignments even when preceded by "command". + +o. POSIX-mode shells now return failure if the cd builtin fails due to the + absolute directory name being longer than PATH_MAX, instead of trying + again with a relative pathname. + +p. Fixed a problem with FUNCNAME occasionally being visible when not executing + a shell function. + +q. Fixed a problem with the expansions performed on the WORD in the case + command. + +r. Fixed a slight POSIX compatibility when removing "IFS whitespace" during + word splitting and the read builtin. + +s. Fixed a problem with expanding an array with subscript `*' when all the + elements expand to the empty string, and making sure the expansion honors + the `:' specifier. + +2. Changes to Readline + +a. Fixed a bug with adding multibyte characters to an incremental search string. + +b. Fixed a bug with redoing text insertions in vi mode. + +c. Fixed a bug with pasting text into an incremental search string if bracketed + paste mode is enabled. ESC cannot be one of the incremental search + terminator characters for this to work. + +d. Fixed a bug with anchored search patterns when performing searches in vi + mode. + +3. New Features in Bash + +a. Associative and indexed arrays now allow subscripts consisting solely of + whitespace. + +b. `checkwinsize' is now enabled by default. + +c. The `localvar_unset' shopt option is now visible and documented. + +d. The `progcomp_alias' shopt option is now visible and documented. + +e. The signal name processing code now understands `SIGRTMIN+n' all the way + up to SIGRTMAX. + +f. There is a new `seq' loadable builtin. + +g. Trap execution now honors the (internal) max invocations of `eval', since + traps are supposed to be executed as if using `eval'. + +h. The $_ variable doesn't change when the shell executes a command that forks. + +i. The `kill' builtin now supports -sSIGNAME and -nSIGNUM, even though + conforming applications aren't supposed to use them. + +j. POSIX mode now enables the `shift_verbose' option. + +4. New Features in Readline + +a. Readline now allows application-defined keymap names; there is a new public + function, rl_set_keymap_name(), to do that. + +b. The "Insert" keypad key, if available, now puts readline into overwrite + mode. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.0-beta, and +the previous version, bash-5.0-alpha. + +1. Changes to Bash + +a. Fixed a bug that allowed subshells to "inherit" enclosing loops -- this + is where POSIX says the subshell is not "enclosed" by the loop. + +b. Added more UTF-8-specific versions of multibyte functions, and optimized + existing functions if the current locale uses UTF-8 encoding. + +c. In POSIX mode, assignments preceding regular builtins should not persist + when the builtin completes. + +d. Added additional checks to special array assignment (e.g., BASH_ALIASES) + so it can't be used to bypass validity checks performed in other places. + +e. The `!!' history expansion now refers to the previous history entry as + expected, even if used on the second or subsequent line of a multi-line + history entry. + +f. Fixed a bug that could cause the shell to dereference a NULL pointer if + the environment (`environ') is set to NULL. + +g. Bash uses slightly better integer overflow handling for brace sequence + expansion on systems where ints are 32 bits and intmax_t is 64 bits. + +h. Fixed a bug setting attributes for a variable named as an argument to + `declare' that also appears as a nameref in the temporary environment. + +i. Fixed several bugs that could cause assignments to namerefs to create + variables with invalid names. + +j. Fixed a bug that could result in the SIGINT handler being set incorrectly + in asynchronous subshells. + +k. Fixed a bug that could cause `bash -t' to not execute the specified command. + +l. Fixed several bugs that caused the shell to operate on the wrong variable + when using namerefs with the same name as a global variable in shell + functions. + +m. Internal changes to how the shell handles variables with invalid names in + the initial environment and to prevent variables with invalid names from + being added to the environment instead of passing them on to children. + +n. Changes to make sure that an expansion that results in a quoted null string + is reflected in the expansion, even if the word expands to nothing. + +o. Changes to make sure that $* and ${array[*]} (and $@/${array[@]}) expand + the same way after the recent changes for POSIX interpretation 888. + +p. Saving and restoring the positional parameters at function entry and exit + is considerably more efficient; noticeably so when there are large numbers + of positional parameters. + +q. Fixed a bug that caused `lastpipe' and `pipefail' to return an incorrect + status for the pipeline if there was more than one external command in a + loop body appearing in the last pipeline element. + +r. Fixed a bug that caused value conversion errors with the printf builtin's + %u and %f conversion specifications and invalid constants. + +2. Changes to Readline + +a. Added more UTF-8-specific versions of multibyte functions, and optimized + existing functions if the current locale uses UTF-8 encoding. + +b. Fixed a problem with bracketed-paste inserting more than one character and + interacting with other readline functions. + +c. Fixed a bug that caused the history library to attempt to append a history + line to a non-existent history entry. + +d. If using bracketed paste mode, output a newline after the \r that is the + last character of the mode disable string to avoid overwriting output. + +e. Fixes to the vi-mode `b', `B', `w', `W', `e', and `E' commands to better + handle multibyte characters. + +f. Fixed a redisplay problem that caused an extra newline to be generated on + accept-line when the line length is exactly the screenwidth. + +3. New Features in Bash + +a. Bash no longer allows variable assignments preceding a special builtin that + changes variable attributes to propagate back to the calling environment + unless the compatibility level is 44 or lower. + +b. You can set the default value for $HISTSIZE at build time in config-top.h. + +c. The `complete' builtin now accepts a -I option that applies the completion + to the initial word on the line. + +d. The internal bash malloc now uses mmap (if available) to satisfy requests + greater than 128K bytes, so free can use mfree to return the pages to the + kernel. + +e. The shell doesn't automatically set BASH_ARGC and BASH_ARGV at startup + unless it's in debugging mode, as the documentation has always said, but + will dynamically create them if a script references them at the top level + without having enabled debugging mode. + +f. The localvar_inherit option will not attempt to inherit a value from a + variable of an incompatible type (indexed vs. associative arrays, for + example). + +g. The `globasciiranges' option is now enabled by default; it can be set to + off by default at configuration time. + +4. New Features in Readline + +a. The history expansion library now understands command and process + substitution and extended globbing and allows them to appear anywhere in a + word. + +b. The history library has a new variable that allows applications to set the + initial quoting state, so quoting state can be inherited from a previous + line. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.0-alpha, and +the previous version, bash-4.4-release. + +1. Changes to Bash + +a. Fixed a bug that could cause traps in background jobs to give the terminal + to the wrong process group. + +b. Fixed a bug that caused `kill -l 0' to print an out-of-range error. + +c. Fixed a problem that could result in here-documents being displayed in + the wrong order. + +d. Fixed a number of out-of-bounds and free memory read errors found via + fuzzing. + +e. Fixed a subshell inheritance problem that could cause a subshell to wait for + the wrong process. + +f. Fixed a bug that caused SHLVL to be incremented one too many times when + creating subshells. + +g. A job dying due to SIGINT can now interrupt sourcing a file in a shell with + job control enabled. + +h. Fixed a spurious warning about unterminated ${ or $( constructs during + word completion. + +i. The shell no longer runs traps if a signal arrives while reading command + substitution output. + +j. Fixed an arithmetic expansion error that could allow ++var++ as valid + syntax. + +k. Fixed an error that allowed out-of-bounds references to the directory stack. + +l. The shell does a better job of saving multi-line history entries with + embedded comments. + +m. Fixed a bug that could cause quoted bracket expressions in regular expression + arguments to `[[' to not match correctly. + +n. Fixed a bug that could cause an IFS character in a word to result in an + extra '\001' character in the expansion. + +o. A trailing backslash in a glob pattern can match a trailing backslash in the + string. + +p. Fixed a memory leak in the process creation code path when job control is + enabled. + +q. Fixed a bug that caused `printf' to output broken surrogate pairs for + Japanese locales. + +r. Fixed a bug that caused a SIGINT generated from `kill' in a dot script to + kill an interactive shell. + +s. Fixed a bug that could cause the `read' builtin to not fully read a + multibyte character. + +t. Fixed a bug that could cause identifiers to be evaluated in conditional + arithmetic expressions even when evaluation is suppressed. + +u. Fixed a bug that could result in command substitution, when executed in a + context where word splitting is not performed, to leave a stray '\001' + character in the string. + +v. Fixed a bug that could cause history expansion to be disabled in a non- + interactive shell even if `-o histexpand' is supplied at startup. + +w. Fixed a bug that caused `read -N' to strip leading whitespace IFS characters. + +x. Fixed a bug that caused spurious tilde expansion in arithmetic expressions. + +y. If indirect expansion attempts to indirectly reference through an unset + variable, report an error. + +z. Added a guard to prevent the shell from looping while receiving an endless + stream of SIGTTIN at shell startup. + +aa. Fixed a bug with parsing here documents inside a command substitution when + looking for the closing delimiter. + +bb. Fixed a bug that caused printf to not quote all characters in the + current locale when using the `%q' format specifier. + +cc. Fixed a bug with bash's internal buffered I/O system that caused the input + pointer to not be reset when read(2) returned an EOF. + +dd. Bash now installs its SIGWINCH signal handler with SA_RESTART, so it will + not interrupt open/read/write system calls. + +ee. The ERR trap now reports line numbers more reliably. + +ff. The shell no longer tries to manipulate the terminal process group if a + command or process substitution is killed by SIGTERM when job control is + enabled. + +gg. Fixed a bug that caused extglob patterns to match filenames beginning with + a period. + +hh. File descriptors open for writing to here documents are no longer available + to subshells. + +ii. Make sure word completion doesn't perform command or process substitution. + +jj. Fixed a bug with parsing $$'...' inside a command substitution. + +kk. Fixed a bug that caused bash to remove backslash-newline pairs from the + body of a here-document with a quoted delimiter inside a command + substitution. + +ll. Fixed a bug that could cause the shell to hang when adding a pid to the + table of background process exit statuses. + +mm. Fixed a bug that could cause 0x01 characters to be doubled in the output + of process substitution. + +nn. Restricted shells now clear the hash table before making the PATH variable + read-only. + +oo. There are a number of changes to the expansion of $* and $@ in contexts + where word splitting does not occur (quoted and unquoted), with IFS set + to NULL or a non-standard value, mostly to deal with the consequences of + the behavior defined in Posix interpretation 888. + +pp. There are a number of changes to nameref variable handling to avoid + creating variables with invalid names. + +qq. A non-interactive posix mode shell no longer exits when an assignment + statement fails if the assignment is utimately being performed by the + `command' builtin. + +rr. When using character class names for globbing, don't allow case + insensitivity, even if nocaseglob is enabled. + +ss. Fixed a bug that allowed some redirections to stay in place if a later + redirection failed. + +tt. Fixed a bug in how command and process substitutions are recognized within + other parameter expansions. + +uu. Fixed a bug that caused bash to loop under certain circumstances when + performing arithmetic expansion on a variable whose value is an invalid + expression. + +vv. Fixed a bug that could cause bash to expand aliases inappropriately while + parsing compound commands like `case'. + +ww. Fixed a bug that could cause `read -N' to fail to read complete multibyte + characters, even when the sequences are incomplete or invalid, with or + without readline. + +xx. Fixed a bug that could cause `case' to fail to match patterns containing + 0x01 characters. + +yy. Fixed a bug that caused exported functions to contain stray 0x01 characters. + +zz. Fixed some inconsistencies with how the history number is handled in the + various prompt strings. + +aaa. Fixed a bug that could cause a core dump if READLINE_LINE was unset + inside a shell function bound to a key sequence with `bind -x'. + +bbb. Fixed a bug that could cause bash to not read a token terminator correctly + if a command substitution was used inside an arithmetic `for' command. + +ccc. Fixed problems that could occur with a fatal arithmetic expansion error + in a context (like prompt expansion) where you can't jump back to the + top level. + +ddd. Expression errors in arithmetic `for' commands are treated more like + shell syntax errors. + +eee. Fixed a parser synchronization error resulting from a syntax error + followed immediately by an EOF. + +fff. When executing a shell function, the first line in the function ($LINENO) + is line 1 instead of line 0, as Posix requires. + +ggg. In Posix mode, bash will canonicalize the value of PWD it inherits from + the environment and use that to set its idea of the current directory. + +hhh. If LINENO is exported, bash needs to regenerate its value each time it + constructs the environment. + +iii. Fixed a bug with restoring the SIGINT handler when using `wait -n'. + +jjj. Make sure the `coproc' command returns an appropriate status if the NAME + argument is invalid. + +kkk. Fixed a problem with arithmetic expressions containing array references + that contain arithmetic expressions with syntax errors. + +lll. The `select' command and help builtin will use $COLUMNS before the window + size returned from the kernel as the terminal width. + +mmm. `read -n 0' and `read -N 0' now try a zero-length read in an attempt to + detect file descriptor errors. + +nnn. The `read' builtin now does a better job of acting on signals that don't + interrupt read(2). + +ooo. Fixed some cases where `printf -v' did not return failure status on a + variable assignment error. + +ppp. Fixed temporary environment propagation back to the current environment + so that it doesn't happen for special builtins run by the `command' + builtin. + +qqq. Fixed a bug when searching for the end of a here-document delimiter in a + command substitution. + +rrr. Fixed a bug that could cause `cd ${DIRSTACK[0]}' to fail. + +sss. Fixed a bug that could cause reserved words to not be recognized in a + for statement without the `in' inside a command substitution. + +ttt. Fixed a bug that could cause a double-free in a timed command with an + expansion error. + +uuu. Fixed a bug that could cause a core dump if a script switches from a UTF-8 + locale to a different locale after displaying a lone surrogate character. + +vvv. Fixed cases where bash prematurely removed FIFOs attached to process + substitutions. + +www. Fixed a problem with calculating the size of the table that stores exit + statuses from background processes when the child process resource limit + is very large. + +xxx. Fixed a memory leak with functions using `return' when using FIFOs for + standard input. + +yyy. `wait' without arguments attempts to wait for all active process + substitution processes. + +zzz. Fixed a bug where an indirect parameter was subjected to word splitting + when trying to find the indirected variable name. + +aaaa. Fixed a bug that could allow restricted shell users to add commands to + the hash table. + +bbbb. When using the `!(patlist)' extended globbing operator, a filename + beginning with a `.' that doesn't match any of the patterns is not + returned as a match if leading dots must be matched explicitly. + +cccc. Fixed a bug that could cause line number and source file information for + a function definition to be incorrect if there are multiple definitions. + +dddd. Fixed a bug that could cause builtins like `readonly' to behave + differently when applied to arrays and scalar variables within functions. + +eeee. Fixed a bug that could cause alias expansion to add an extra space to + a quoted string that begins outside the alias expansion. + +ffff. Fixed a bug that could result in unwanted alias expansion after timing + the null command. + +gggg. Fixed a bug that could cause a core dump if a timestamp in a history + file overflowed a time_t. + +hhhh. Restricted shells can no longer redirect from /dev/tcp or /dev/udp, since + the kernel calls make those file descriptors read-write. + +iiii. Fixed a problem with splitting double-quoted words for programmable + completion when the double quote immediately follows another word + delimiter. + +jjjj. Fixed a bug resulting in a use-after-free if two file descriptors share + the same input buffer. + +kkkk. The error message resulting from ${x:?} and ${x?} now differs depending + on whether the variable is null or unset. + +llll. In Posix mode, the shell exits if a variable assignment fails and precedes + an empty simple command (after expansion). + +mmmm. Fixed a timing problem with SIGALRM that could cause the read builtin to + drop characters. + +nnnn. Added code to deal with kill(2) failing to send the shell a fatal signal + due to Linux pid namespace peculiarities. + +oooo. Fixed a bug that made \C-@ (NUL) unusable in key sequences used for + `bind -x' commands. + +pppp. Fixed a bug that could cause SIGINT recursion when running an external + command in a trap the shell takes after a command exits due to SIGINT. + +qqqq. Make sure the shell turns off job control before running the command- + not-found handle, so the command doesn't try to manipulate process + groups. + +rrrr. Fixed a problem with timing process substitutions that caused the shell + to print timing information for the calling command. + +ssss. Fixed a bug that caused backquotes in a here-document delimiter to mark + the delimiter as quoted (inhibiting expansion of the here-document + contents). + +tttt. Fixed several problems with 0x01 and 0x177 in case pattern lists and + conditional command pattern matches. + +uuuu. Fixed a bug that could cause the pattern matching engine to not recognize + locale-specific character classes. + +vvvv. The auto-configuration now tests for /dev/stdin and /dev/fd independently. + +wwww. The `globstar' code now skips over symbolic links to directories, + preventing them from being scanned twice. + +xxxx. When running `bind -x' commands, bash now sets READLINE_POINT based on + the number of characters in the readline line buffer, not the number of + bytes. + +yyyy. Fixed a problem that could cause recursive trap evaluation of the RETURN + trap when using `eval return'. + +zzzz. Fixed a bug with expanding 0x01 in an unquoted here-document. + +aaaaa. The process substitution code now closes and unlinks FIFOs when the + process on the other side exits, in order to prevent SIGPIPE or + waiting until a FIFO opened for read has a writer. + +bbbbb. Fixed a bug with recursive calls to the parser overwriting the token in + an {id}>foo construct. + +ccccc. After a Posix discussion, the pattern matching engine just skips over + invalid character classes in bracket expressions, instead of matching + them like individual characters in the expression. + +ddddd. Fixed a posix-mode problem with variable scoping when creating variables + from assignment statements preceding special builtins. + +eeeee. Fixed a bug that could cause patterns containing backslashes to not be + run through the pattern matching engine. + +fffff. Fixed a bug that could cause redirections to compound commands to not + be `undone' if the file descriptor in the redirection was closed when + the redirection was initially processed. + +ggggg. Fixed a bug that could cause buffer corruption when using `bind -x' in + a command execute as a result of a key binding installed by `bind -x'. + +2. Changes to Readline + +a. Added a guard to prevent nested macros from causing an infinite expansion + loop. + +b. Instead of allocating enough history list entries to hold the maximum list + size, cap the number allocated initially. + +c. Added a strategy to avoid allocating huge amounts of memory if a block of + history entries without timestamps occurs after a block with timestamps. + +d. Added support for keyboard timeouts when an ESC character is the last + character in a macro. + +e. There are several performance improvements when in a UTF-8 locale. + +f. Readline does a better job of preserving the original set of blocked + signals when using pselect() to wait for input. + +g. Fixed a bug that caused multibyte characters in macros to be mishandled. + +h. Fixed several bugs in the code that calculates line breaks when expanding + prompts that span several lines, contain multibyte characters, and contain + invisible character seqeuences. + +i. Fixed several bugs in cursor positioning when displaying lines with prompts + containing invisible characters and multibyte characters. + +j. When performing case-insensitive completion, Readline no longer sorts the + list of matches unless directed to do so. + +k. Fixed a problem with key sequences ending with a backslash. + +l. Fixed out-of-bounds and free memory read errors found via fuzzing. + +m. Fixed several cases where the mark was set to an invalid value. + +n. Fixed a problem with the case-changing operators in the case where the + lower and upper case versions of a character do not have the same number + of bytes. + +o. Handle incremental and non-incremental search character reads returning EOF. + +p. Handle the case where a failing readline command at the end of a multi-key + sequence could be misinterpreted. + +q. The history library now prints a meaningful error message if the history + file isn't a regular file. + +r. Fixed a problem with vi-mode redo (`.') on a command when trying to replace + a multibyte character. + +s. The key binding code now attempts to remove a keymap if a key unbinding + leaves it empty. + +t. Fixed a line-wrapping issue that caused problems for some terminal + emulators. + +u. If there is a key bound to the tty's VDISCARD special character, readline + disables VDISCARD while it is active. + +v. Fixed a problem with exiting bracketed paste mode on terminals that assume + the bracketed paste mode character sequence contains visible characters. + +w. Fixed a bug that could cause a key binding command to refer to an + uninitialized variable. + +3. New Features in Bash + +a. The `wait' builtin can now wait for the last process substitution created. + +b. There is an EPOCHSECONDS variable, which expands to the time in seconds + since the Unix epoch. + +c. There is an EPOCHREALTIME variable, which expands to the time in seconds + since the Unix epoch with microsecond granularity. + +d. New loadable builtins: rm, stat, fdflags. + +e. BASH_ARGV0: a new variable that expands to $0 and sets $0 on assignment. + +f. When supplied a numeric argument, the shell-expand-line bindable readline + command does not perform quote removal and suppresses command and process + substitution. + +g. `history -d' understands negative arguments: negative arguments offset from + the end of the history list. + +h. The `name' argument to the `coproc' reserved word now undergoes word + expansion, so unique coprocs can be created in loops. + +i. A nameref name resolution loop in a function now resolves to a variable by + that name in the global scope. + +j. The `wait' builtin now has a `-f' option, which signfies to wait until the + specified job or process terminates, instead of waiting until it changes + state. + +k. There is a define in config-top.h that allows the shell to use a static + value for $PATH, overriding whatever is in the environment at startup, for + use by the restricted shell. + +l. Process substitution does not inherit the `v' option, like command + substitution. + +m. If a non-interactive shell with job control enabled detects that a foreground + job died due to SIGINT, it acts as if it received the SIGINT. + +n. The SIGCHLD trap is run once for each exiting child process even if job + control is not enabled when the shell is in Posix mode. + +o. A new shopt option: localvar_inherit; if set, a local variable inherits the + value of a variable with the same name at the nearest preceding scope. + +p. `bind -r' now checks whether a key sequence is bound before binding it to + NULL, to avoid creating keymaps for a multi-key sequence. + +q. A numeric argument to the line editing `operate-and-get-next' command + specifies which history entry to use. + +r. The positional parameters are now assigned before running the shell startup + files, so startup files can use $@. + +s. There is a compile-time option that forces the shell to disable the check + for an inherited OLDPWD being a directory. + +t. The `history' builtin can now delete ranges of history entries using + `-d start-end'. + +u. The `vi-edit-and-execute-command' bindable readline command now puts readline + back in vi insertion mode after executing commands from the edited file. + +v. The command completion code now matches aliases and shell function names + case-insensitively if the readline completion-ignore-case variable is set. + +w. There is a new `assoc_expand_once' shell option that attempts to expand + associative array subscripts only once. + +x. The shell only sets up BASH_ARGV and BASH_ARGC at startup if extended + debugging mode is active. The old behavior of unconditionally setting them + is available as part of the shell compatibility options. + +y. The `umask' builtin now allows modes and masks greater than octal 777. + +z. The `times' builtin now honors the current locale when printing a decimal + point. + +aa. There is a new (disabled by default, undocumented) shell option to enable + and disable sending history to syslog at runtime. + +4. New Features in Readline + +a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as + Posix specifies (uses fnmatch(3) if available). + +b. There are new `next-screen-line' and `previous-screen-line' bindable + commands, which move the cursor to the same column in the next, or previous, + physical line, respectively. + +c. There are default key bindings for control-arrow-key key combinations. + +d. A negative argument (-N) to `quoted-insert' means to insert the next N + characters using quoted-insert. + +e. New public function: rl_check_signals(), which allows applications to + respond to signals that readline catches while waiting for input using + a custom read function. + +f. There is new support for conditionally testing the readline version in an + inputrc file, with a full set of arithmetic comparison operators available. + +g. There is a simple variable comparison facility available for use within an + inputrc file. Allowable operators are equality and inequality; string + variables may be compared to a value; boolean variables must be compared to + either `on' or `off'; variable names are separated from the operator by + whitespace. + +------------------------------------------------------------------------------ This document details the changes between this version, bash-4.4-release, and the previous version, bash-4.4-rc2. @@ -21,7 +838,6 @@ e. Fixed several potential buffer overflow issues in the word expansion code. 3. New Features in Bash 4. New Features in Readline - ------------------------------------------------------------------------------ This document details the changes between this version, bash-4.4-rc2, and the previous version, bash-4.4-beta2. diff --git a/COMPAT b/COMPAT index 9959b962f..ce6a791cb 100644 --- a/COMPAT +++ b/COMPAT @@ -2,9 +2,9 @@ Compatibility with previous versions ==================================== This document details the incompatibilities between this version of bash, -bash-4.4, and the previous widely-available versions, bash-3.x (which is -still the `standard' version for Mac OS X), 4.1/4.2 (which are still -standard on a few Linux distributions), and bash-4.3, the current +bash-5.0, and the previous widely-available versions, bash-3.x (which is +still the `standard' version for Mac OS X), 4.2/4.3 (which are still +standard on a few Linux distributions), and bash-4.4, the current widely-available version. These were discovered by users of bash-2.x through 4.x, so this list is not comprehensive. Some of these incompatibilities occur between the current version and versions 2.0 and @@ -391,6 +391,20 @@ above. argument to `declare' or a similar builtin expands to a word that looks like a compound array assignment (e.g. declare w=$x where x='(foo)'). +60. Bash-5.0 only sets up BASH_ARGV and BASH_ARGC at startup if extended + debugging mode is active. The old behavior of unconditionally setting + BASH_ARGC and BASH_ARGV is available at compatibility levels less than + or equal to 44. + +61. Bash-5.0 doesn't allow a `break' or `continue' in a subshell to attempt + to break or continue loop execution inherited from the calling context. + +62. Bash-5.0 doesn't allow variable assignments preceding builtins like + export and readonly to modify variables with the same name in preceding + contexts (including the global context) unless the shell is in posix + mode, since export and readonly are special builtins. + + Shell Compatibility Level ========================= @@ -446,10 +460,22 @@ compat43 set (declare -a foo='(1 2)') - word expansion errors are considered non-fatal errors that cause the current command to fail, even in Posix mode - - when executing a shell function, the loop state (while/until/etc.) is - not reset, so `break' or `continue' in a shell function will break or - continue loops in the calling context. Bash-4.4 and later reset the - loop state to prevent this. + - when executing a shell function, the loop state (while/until/etc.) + is not reset, so `break' or `continue' in that function will break + or continue loops in the calling context. Bash-4.4 and later reset + the loop state to prevent this. + +compat44 set + - the shell sets up the values used by BASH_ARGV and BASH_ARGC so + they can expand to the shell's positional parameters even if extended + debug mode is not enabled + - a subshell inherits loops from its parent contenxt, so `break' + or `continue' will cause the subshell to exit + - variable assignments preceding builtins like export and readonly + that set attributes continue to affect variables with the same + name in the calling environment even if the shell is not in posix + mode + ------------------------------------------------------------------------------- diff --git a/CWRU/changelog b/CWRU/changelog index f37159d8b..c33023fc0 100644 --- a/CWRU/changelog +++ b/CWRU/changelog @@ -1,11681 +1,4967 @@ - 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 +subst.c + - skip_matched_pair: make the flags argument of 1 affect whether or + not backslash can quote characters in the string, so it affects + all quoting mechanisms -{parse.y,builtins/printf.def} - - call sv_tz before calling localtime() when formatting time strings - in prompt strings or using printf. Fixes bug reported by - Dennis Williamson +arrayfunc.c + - unbind_array_element: now takes a third (flags) argument; flags&1 + means to not expand an associative array index. This is only called + from a shell builtin context, which means the argument should have + already undergone word expansion, so it should be ok. Will still + be a problem for uses like "unset -v 'var[$ind]'", quoted to avoid + globbing + - valid_array_reference: pass second flags argument to skipsubscript; + still set to 0 by all callers -execute_cmd.c - - modify fix of 2/9 to add casts when those variables are passed to - functions; some compilers throw errors instead of warnings. Report - and fix from Joachim Schmitz +arrayfunc.h + - unbind_array_element: updated prototype -support/shobj-conf - - add a stanza for nsk on the Tandem 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 [/] -{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 - +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/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 - - 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 + - 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 - - 3/4 - --- -lib/readline/bind.c - - add a missing free of `names' in rl_function_dumper. Bug report - and fix from Michael Snyder + - 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/5 - --- -lib/readline/rltty.c - - change rl_deprep_terminal so it uses fileno (stdin) for the tty fd - if rl_instream is not set, like rl_prep_terminal +builtins/exec.def + - exec_builtin: don't bother to decrement the shell level if we are + already in a `(command)' subshell. Reported by Stephane Chazelas + - 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/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 - 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 +subst.c + - read_comsub: only warn once for null bytes in command substitution + output, instead of once for every null byte -lib/readline/input.c - - if _rl_caught_signal indicates that read() was interrupted by a - SIGHUP or SIGTERM, return READERR or EOF as appropriate - - call rl_event_hook, if it's set, if call to read in rl_getc - returns -1/EINTR. If rl_event_hook doesn't do anything, this - continues the loop as before. This handles the other fatal - signals +arrayfunc.c + - array_variable_part: now takes a `flags' argument; changed all callers + to initially pass 0 + - array_variable_name: now takes a `flags' argument; changed all callers + to initially pass 0 + - array_variable_name: pass `flags' argument to skipsubscript instead + of just passing 0 -execute_cmd.c - - add a couple of QUIT; calls to execute_disk_command and - execute_simple_command to improve responsiveness to interrupts - and fatal signals +arrayfunc.h + - array_variable_{name,part}: added new argument to prototypes -input.c - - rearrange getc_with_restart so that the return values from read() - are handled right + 9/29 + ---- +bashline.c + - bash_directory_completion_hook: don't bother to try and expand a + ${ or $( that isn't complete; expand_prompt_string will complain. + Fixes reports from John Passaro and + Valentin Bajrami -parse.y - - don't need to set terminate_immediately in yy_stream_get, since - getc_with_restart checks for terminating signals itself - - since readline returns READERR on SIGHUP or SIGTERM, don't need - to set terminate_immediately. Still doesn't handle other - signals well -- will have to check that some more +lib/readline/history.c + - _hs_append_history_line: use a strategy that attempts to avoid + realloc copying memory to a newly-allocated block if the history + line we're appending to gets `too long' (currently 256 bytes). + We reallocate in powers of 2 starting at 512, and rely on realloc + not allocating a new block and copying into it if the size is the + same as the last call to realloc. Addresses issue raised by + Hubert Schmid -bashline.c - - new function, bash_event_hook, for rl_event_hook. Just checks for - terminating signals and acts on them using CHECK_TERMSIG. - - set rl_event_hook to bash_event_hook +trap.h + - check_signals: new extern declaration + - trapped_signal_received: new extern declaration builtins/read.def - - take out setting terminate_immediately; add calls to CHECK_TERMSIG - after read calls - -doc/{bash.1,bashref.texi} - - move the text describing the effect of negative subscripts used to - reference indexed array elements to the paragraphs describing - ${parameter[subscript]}, since that's where they are implemented. - Pointed out by Christopher F. A. Johnson + - read_builtin: if one of the zread* functions returns < 0 (which + usually only happens in Posix mode), make sure we call check_signals() + before eventually calling run_pending_traps() because zread() isn't + going to call it + - include trap.h for correct extern functions and variable declarations -arrayfunc.[ch],subst.c - - array_expand_index now takes a new first argument: a SHELL_VAR * - of the array variable being subscripted. Can be used later to fully - implement negative subscripts +lib/sh/zread.c + - zread: if executing a builtin, call check_signals_and_traps() for + backwards compatibility. If not, call check_signals() only, because + we don't want to run traps during, for instance, reading command + substitution output. Fixes race condition bug reported by Luiz Angelo + Daros de Luca - 3/14 + 9/30 ---- -lib/glob/glob.c - - fix mbskipname to not turn the directory entry name into a wide char - string if the conversion of the pattern to a wide char string fails - - fix mbskipname to call skipname if either the pattern or the filename - can't be converted into a wide-char string +subst.c + - command_substitute: reset parse_and_execute_level to 0 in the child + process, since it's independent of the other parse_and_execute + calls. Adds command substitution inside other parse_and_execute + calls optimizations to suppress forks, as suggested by + Martijn Dekker -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 + 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 - 3/15 + 10/5 ---- -bashline.c - - new variable, bash_filename_quote_characters to store the value - assigned to rl_filename_quote_characters so it can be restored - if changed. - - change bashline_reset and attempt_shell_completion to restore - rl_filename_quote_characters if not set to default +support/shobj-conf + - darwin: set compatibility_version for a shared build of the readline + library (the standalone readline distribution shares this file) to + $(SHLIB_MAJOR)$(SHLIB_MINOR). Recommendation from Max Horn + - 3/22 + 10/6 ---- -lib/glob/glob.c - - wdequote_pathname falls back to udequote_pathname if xdupmbstowcs - fails to convert the pathname to a wide-character string +array.h + - array_first_index: new convenience define -lib/glob/xmbsrtowcs.c - - xdupmbstowcs2: change to fix problem with leading '\\' (results in - nms == 0, which causes it to short-circuit with failure right - away). Fixes bug pointed out by Werner Fink - - xdupmbstowcs2: compensate for mbsnrtowcs returning 0 by taking the - next single-byte character and going on - - xdupmbstowcs2: change memory allocation to increase by WSBUF_INC - bytes; try to avoid calls to realloc (even if they don't actually - result in more memory being allocated) +array.c + - ADD_AFTER: new define, complement of ADD_BEFORE + - UNSET_LASTREF: now takes an array as an argument, prepping for move + of lastref pointer into the array struct + - array_insert: check whether we are adding at the beginning of the + array and take a fast path if so + - array_insert: use same strategy as array_reference to find the place + to insert, starting from the last-referenced element and moving + forward or back from there; use ADD_AFTER if moving backward + - array_insert: if replacing an existing element, just replace the + value with new->value instead of the entire element + - array_reference: short-circuit quickly if looking for an element + before the first assigned index + - array_reference: if we don't find the element, leave lastref pointing + to the closest element under the assumption we will be assigning or + looking for something close + - array_reference: take advantage of ordered indexes to short-circuit + when looking for element that is not set - 3/24 + 10/7 ---- -doc/{bash.1,bashref.texi} - - slightly modify BASH_SUBSHELL description based on complaint from - Sam Liddicott +array.c + - array_remove: short-circuit if asked to remove index after max + index or before first index - 3/25 - ---- -trap.c - - change free_trap_strings to not call free_trap_string for signals - that are being ignored, like reset_or_restore_signal_handlers. - Fixes bug reported by Satoshi Takahashi + 10/10 + ----- +lib/malloc/malloc.c + - internal_realloc: if we are requesting reallocation to the same size + as the block's current size, short-circuit and return `mem' right + after doing bounds check + - internal_realloc: if we are reducing the size of an allocation, and + the new size fits in the next lower bin, just keep the same block + and adjust the size, so we can avoid some copies - 3/26 - ---- -lib/readline/rltypedefs.h - - remove old Function/VFunction/CPFunction/CPPFunction typedefs as - suggested by Tom Tromey +parse.y + - set_line_mbstate: keep track of the allocated size of + shell_input_line_property, only request reallocation if the size + increases, but don't let it get too big -lib/readline/rlstdc.h - - move defines for USE_VARARGS/PREFER_STDARG/PREFER_VARARGS from - config.h.in to here because declaration of rl_message in - readline.h uses the defines. This makes it hard for another packages - to use after the header files are installed, since config.h is not - one of the installed files. Suggested by Tom Tromey - + 10/11 + ----- +jobs.c + - wait_for_background_pids: make sure we wait for pid in + last_procsub_child since it's not found in any job -- still needs + more work to wait for multiple process substitutions - 3/27 - ---- -print_cmd.c - - change indirection_string from a static buffer to a dynamic one - managed by indirection_level_string(), so we don't end up truncating - PS4. Suggested by Dennis Williamson +subst.c + - process_substitute: if make_child fails, make sure we call + restore_pipeline to undo the previous save_pipeline() -lib/readline/shell.c - - change sh_set_lines_and_columns to use static buffers instead of - allocating the buffers to pass to setenv/putenv + 10/15 + ----- +subst.c + - process_substitute,command_substitute: leave subshell_level (reflected + as $BASH_SUBSHELL) intact for any exit trap instead of decrementing + it. Suggested by Martijn Dekker -lib/readline/terminal.c - - change _rl_get_screen_size to not call sh_set_lines_and_columns if - ignore_env == 0 - - _rl_sigwinch_resize_terminal: new function to just retrieve terminal - size, ignoring environment +builtins/evalstring.c + - optimize_subshell_command: new function, framework for optimizing + out forks for command that have already forked and are executing + in a subshell. Not used yet -lib/readline/rlprivate.h - - new external declaration for _rl_sigwinch_resize_terminal() (currently - unused) +expr.c + - readtok: if we have a post-increment or post-decrement, and the + previous token is not a string, check whether the previous token is + a number that results from a pre-increment or pre-decrement, and + make that an error. Report from Conrad Hoffmann -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 + 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 - 3/29 - ---- -lib/sh/snprintf.c - - include math.h for any defines for isinf/isnan - - use code from gnulib documentation to implement isinf/isnan if they - are not defined + 10/19 + ----- +variables.c + - get_bashpid: BASHPID is no longer readonly; assignments to it are + just ignored. -configure.in - - don't check for isinf or isnan; c99 says they're macros anyway +doc/{bash.1,bashref.texi} + - BASHPID: note that assignments are ignored and unsetting BASHPID + causes it to lose its special properties -config.h.in - - remove defines for ISINF_IN_LIBC and ISNAN_IN_LIBC, no longer used - by snprintf.c + 10/28 + ----- +builtins/pushd.def + - popd_builtin: make sure to check the normalized stack offset + (i.e., negatives counting back from the end of the stack) is within + bounds before trying to free that stack entry. Report from + Fernando Muñoz - 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 +lib/readline/histfile.c + - chown: protect calls with HAVE_CHOWN. Fixes for MinGW{64,32} from + J. Peter Mugaas -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 +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 -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 +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 - 4/6 - --- +array.c + - array_create: set lastref element to 0 + - array_copy: if copying the lastref in array a, set the new lastref + in the copy to the same element + - IS_LASTREF, LASTREF_START, LASTREF, INVALIDATE_LASTREF, SET_LASTREF, + UNSET_LASTREF: change to use new array `lastref' member -config-top.h - - change DEFAULT_PATH_VALUE to something more useful and modern +pathexp.c + - quote_string_for_globbing: if quoting for a regexp, make sure to + skip and copy a leading `^' in a bracket expression, and skip and + copy a subsequent `]' (after an optional `^'), so that leading + bracket doesn't close the bracket expression. Report from + Stephane Chazelas - 4/8 - --- -tests/printf2.sub - - make sure LC_ALL and LC_CTYPE are set so LANG assignment takes effect. - Reported by Cedric Arbogast + 10/29 + ----- +subst.c + - extract_delimited_string: add calls to CHECK_STRING_OVERRUN for + $( inside $((, nested OPENERs, nested ALT_OPENERs, and backquotes + - skip_to_delim: add calls to CHECK_STRING_OVERRUN for $(, ${, + process substitution + - extract_dollar_brace_string: add calls to CHECK_STRING_OVERRUN for + $( + - extract_dollar_brace_string: use skipsubscript to skip over the + array subscript in ${var[sub]} (non-quoted case uses string_extract, + which already uses skipsubscript). Tagged for bash-5.0 - 4/11 - ---- -include/chartypes.h - - fix a couple of dicey defines (though ones that don't cause any - compiler warnings) in IN_CTYPE_DOMAIN + 10/30 + ----- +variables.c + - EPOCHSECONDS: new dynamic variable, time in seconds since Unix + epoch; assignments are ignored. Can be used on systems where + strftime() doesn't support '%s' + - EPOCHREALTIME: new dynamic variable, time in seconds since Unix + epoch with microsecond granularity -doc/{bashref.texi,bash.1} - - add note referring to duplicating file descriptors in sections - describing redirecting stdout and stderr and appending to stdout - and stderr. Suggested by Matthew Dinger +doc/{bash.1,bashref.texi} + - EPOCHSECONDS documentation + - EPOCHREALTIME documentation -pcomplete.c - - it_init_helptopics: new function to support completing on help topics, - not just builtins - - it_helptopics: new programmable completion list of help topics - - build list of helptopic completions in gen_action_completions on - demand +execute_cmd.c + - decpoint: moved to locale.c, renamed locale_decpoint; changed callers -pcomplete.h - - new extern declaration for it_helptopics +{bashintl,externs}.h + - locale_decpoint: extern declaration or #define if support for + localeconv() not there -builtins/complete.def - - the `helptopic' action now maps to CA_HELPTOPIC intead of CA_BUILTIN, - since there are more help topics than just builtins. Suggested by - Clark Wang + 10/31 + ----- +lib/malloc/malloc.c + - posix_memalign: add new posix-mandated interface - 4/12 - ---- -print_cmd.c - - fix print_arith_for_command to add a call to PRINT_DEFERRED_HEREDOCS - before ending the body of the command, so heredocs get attached to - the right command instead of to the loop. From gentoo bug 363371 - http://bugs.gentoo.org/show_bug.cgi?id=363371 +examples/loadables/rm.c + - rm: minimal loadable builtin, removes files and directories, only + handles -r and -f options. Original from Tim Ruehsen + , heavily rewritten for inclusion as loadable -execute_cmd.c - - change coproc_pidchk to unset the appropriate shell variables when - the (currently single) known coproc pid terminates - - cleanup and new functions to fully support multiple coprocesses when - and if I decide to go there +examples/loadables/Makefile.in + - rm: add rules to build rm as one of the `other' targets - 4/13 +examples/loadables/stat.c + - stat: new loadable builtin that takes a filename and loads the info + returned by stat(2) into an associative array specified by the -A + argument (default STAT) + + 11/1 ---- -print_cmd.c - - fix print_group_command to add a call to PRINT_DEFERRED_HEREDOCS - after call to make_command_string_internal before printing closing - `}' - - fix make_command_string_internal to add a call to - PRINT_DEFERRED_HEREDOCS after recursive call to - make_command_string_internal in case cm_subshell before printing - closing `)' +variables.c + - BASH_ARGV0: new dynamic variable, returns $0 on reference and sets + $0 on assignment. From a suggestion from Rocky Bernstein + a few years ago - 4/14 +doc/{bash.1,bashref.texi} + - BASH_ARGV0: document + + 11/2 ---- -print_cmd.c - - change overlapping strcpy in named_function_string to memmove +lib/glob/sm_loop.c + - parse_collsym: make sure to not return an out-of-bounds read if a + collating symbol is unterminated. Fixes OOB read reported by + Jerzy Kramarz + - brackmatch: after incrementing p, before checking whether it's a + character range, check whether *p was NULL before the increment + and short-circuit the bracket expression if it is -sig.h - - UNBLOCK_SIGNAL: convenience define, same as UNBLOCK_CHILD, just - restores an old signal mask +jobs.c + - discard_last_procsub_child: new function, safely discards + last_procsub_child and sets it to NULL -trap.c - - set_signal: instead of setting the signal handler to SIG_IGN while - installing the new trap handler, block the signal and unblock it - after the new handler is installed. Fixes bug reported by Roman - Rakus +subst.c + - process_substitute: call discard_last_procsub_child instead of + calling discard_pipeline directly. Fixes bug reported by + Christian Weisgerber - 4/15 + 11/3 ---- -doc/{bash.1,bashref.texi} - - make it clear that enabling monitor mode means that all jobs run in - separate process groups +shell.h + - EX_DISKFALLBACK: new special return status available to builtins; + means to attempt to execute a disk command with the same name as + the builtin - 4/18 - ---- -builtins/fc.def - - update fix of 4/15/2010 to not take saved_command_line_count into - account when stepping down the history list to make sure that - last_hist indexes something that is valid. Fixes bug reported by - +examples/loadables/rm.c + - if we see the -i option, return EX_DISKFALLBACK - 4/19 - ---- -builtins/fc.def - - fc_gethnum: make sure the calculation to decide the last history - entry is exactly the same as fc_builtin. Fixes bug uncovered by - fix of 4/18 to stop seg fault +execute_cmd.c + - execute_simple_command: if executing a builtin returns EX_DISKFALLBACK, + try running execute_disk_command instead - 4/22 +bashline.c + - shell_expand_line: use expand_word to expand the readline line + buffer, which allows us to pass flags with the word. If a numeric + argument is supplied, do not perform quote removal (pass + Q_HERE_DOCUMENT since here-doc quoting does the right thing) and + do not perform command or process subsitution. From a suggestion + by Dabrien 'Dabe' Murphy 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/terminal.c - - change _rl_enable_meta_key to set a flag indicating that it sent the - enable-meta sequence - - _rl_disable_meta_key: new function to turn off meta mode after we - turned it on with _rl_enable_meta_key +lib/readline/macro.c + - _rl_peek_macro_key: return the next character from the current + keyboard macro; the next character from the `next' keyboard macro, + if there is one, if at the end of the current macro; or 0 to + indicate that we are at the end of a keyboard macro sequence lib/readline/rlprivate.h - - extern declaration for _rl_disable_meta_key + - _rl_peek_macro_key: extern declaration -configure.in - - if not cross-compiling, set CFLAGS_FOR_BUILD from any CFLAGS inherited - from the environment. Fixes HP/UX build problem reported by - "Daniel Richard G." +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 - 4/26 - ---- -config-top.h - - define MULTIPLE_COPROCS to 0 so the code is still disabled but easy - to enable via configure option or editing this file +lib/glob/sm_loop.c + - GMATCH: allow trailing backslash in pattern to explicitly match a + backslash that is the last character in the string. Bug report from + Stephane Chazelas - 4/29 + 11/5 ---- -lib/sh/eaccess.c - - freebsd provides faccessat, with the same misfeature as their eaccess - and access implementations (X_OK returns true for uid==0 regardless - of the actual file permissions), so reorganize code to check the - file permissions as with eaccess. Report and fix from Johan Hattne - +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 - 5/2 - --- -doc/{bash.1,bashref.texi} - - add forward reference to `Pattern Matching' from `Pathname - Expansion', suggested by Greg Wooledge +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 - 5/5 - --- -pcomplib.c - - the bash_completion project now distributes over 200 completions - for various programs, with no end in sight, so increase the value - of COMPLETE_HASH_BUCKETS from 32 to 128 +execute_cmd.c + - execute_simple_command: free memory allocated and passed to + make_child in the child process if JOB_CONTROL is defined + - execute_command_internal: free memory allocated and passed to + make_child in the child process created to run a () subshell or a + compound command within a pipeline if JOB_CONTROL is defined + - execute_coproc: free memory allocated and passed to make_child in + the child process if JOB_CONTROL is defined + - execute_disk_command: free memory allocated and passed to + make_child in the child process if JOB_CONTROL is defined. This + series of fixes is the result of reports from + Eduardo A. Bustamante López -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 + 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 - 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 +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 - 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 +builtins/read.def + - check for and read multibyte characters in all cases, not just when + we are reading a specific number of characters, as long as + mb_cur_max > 1 - 5/10 - ---- subst.c - - remove_quoted_nulls: fix problem that caused it to skip over the - character after a CTLNUL, which had the effect of skipping every - other of a series of CTLNULs. Fixes bug reported by - Marten Wikstrom + - expand_word_internal: some improvements to code that converts istring + into a WORD_LIST * to avoid multiple allocations and copies of + istring, which is already malloc'ed memory -- reduce number of malloc + and free calls - 5/11 - ---- -subst.c - - extract_process_subst: add SX_COMMAND flag to call to - extract_delimited_string, since we're expanding the same sort of - command as command substitution. Fixes bug reported in Ubuntu - bug 779848 +test.c + - unary_test: make sure if we test -v array[@] or array[*] that we + free the return value from array_value - 5/12 + 11/8 ---- -configure.in - - set the prefer_shared and prefer_static variables appropriately - depending on the value of $opt_static_link +expr.c + - expcond: make sure to set `noeval' before reading tokens depending on + the result of the conditional test, since readtok() can evaluate + identifiers (and recursively those containing expressions). Report + and fix from Koichi MURASE -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 +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/13 + 11/9 ---- -lib/readline/readline.c - - _rl_internal_teardown: add call to _rl_disable_meta_key to make the - meta key active only for the duration of the call to readline() - - _rl_internal_setup: move call to _rl_enable_meta_key here from - readline_initialize_everything so the meta key is active only for - the duration of the call to readline(). Suggestion from Miroslav - Lichvar +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 -builtins/help.def - - help_builtin: change strncmp to strcmp so that `help read' no longer - matches `readonly'. Suggested by Clark Wang +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 -config.h.in - - add define for GLIBC21, checked using jm_GLIBC21 as part of the tests - for libintl + 11/11 + ----- +configure.ac,aclocal.m4 + - BASH_FUNC_SBRK: make sure sbrk actually works, instead of being just + a stub function like on several Linux distributions lib/malloc/malloc.c - - internal_free: don't use the cached value of memtop when deciding - whether or not to adjust the break and give memory back to the kernel - when using the GNU C library, since glibc uses sbrk for its own - internal purposes. From Debian bug 614815, reported by Samuel - Thibault + - malloc_usable_size: return the maximum number of bytes available for + a particular memory allocation (size of block allocated for it) -aclocal.m4 - - BASH_STRUCT_WEXITSTATUS_OFFSET: change AC_RUN_IFELSE to AC_TRY_RUN - to avoid warning about not using AC_LANG_SOURCE - - 5/14 - ---- -bashline.[ch] - - two new functions, bashline_set_event_hook and bashline_reset_event_hook, - to set rl_event_hook to bash_event_hook and back to NULL, respectively - - don't set rl_event_hook unconditionally - -sig.c - - termsig_sighandler: if the shell is currently interactive and - readline is active, call bashline_set_event_hook to cause - termsig_handler to be called via bash_event_hook when the shell - returns from the signal handler - - 5/15 - ---- -lib/readline/display.c - - _rl_col_width: Mac OS X has a bug in wcwidth: it does not return 0 - for UTF-8 combining characters. Added workaround dependent on - MACOSX. Fixes problem pointed out by Thomas De Contes - - - 5/16 - ---- -lib/readline/rlmbutil.h - - WCWIDTH: wrapper for wcwidth that returns 0 for Unicode combining - characters on systems where wcwidth is broken (e.g., Mac OS X). - -lib/readline/{complete,display,mbutil}.c - - use WCWIDTH instead of wcwidth - - 5/17 - ---- -lib/readline/display.c - - update_line: after computing ofd and nfd, see whether the next - character in ofd is a zero-width combining character. If it is, - back ofd and nfd up one, so the base characters no longer compare - as equivalent. Fixes problem reported by Keith Winstein - - -lib/readline/nls.c - - _rl_utf8locale: new flag variable, set to non-zero if the current - locale is UTF-8 - - utf8locale(): new function, returns 1 if the passed lspec (or the - current locale) indicates that the locale is UTF-8. Called from - _rl_init_eightbit - -lib/readline/rlprivate.h - - extern declaration for _rl_utf8locale - -locale.c - - locale_utf8locale: new flag variable, set to non-zero if the current - locale is UTF-8 (currently unused) - - locale_isutf8(): new function, returns 1 if the passed lspec (or the - current locale) indicates that the locale is UTF-8. Should be called - whenever the locale or LC_CTYPE value is modified - -aclocal.m4 - - BASH_WCWIDTH_BROKEN: new test for whether or not wcwidth returns - zero-width characters like unicode combining characters as having - display length 1; define WCWIDTH_BROKEN in this case - -config.h.in - - WCWIDTH_BROKEN: new define - -lib/readline/rlmbutil.h - - change WCWIDTH macro to use _rl_utf8locale and the full range of - Unicode combining characters (U+0300-U+036F) - - 5/19 - ---- -lib/readline/rlprivate.h - - _rl_search_context: new member, prevc, will hold character read - prior to lastc - -lib/readline/isearch.c - - _rl_isearch_dispatch: if the character causes us to index into - another keymap, save that character in cxt->prevc - - _rl_isearch_dispatch: if we index into another keymap, but don't - find a function that's special to i-search, and the character that - caused us to index into that keymap would have terminated the - search, push back cxt->prevc and cxt->lastc to make it appear as - if `prevc' terminated the search, and execute lastc as a command. - We have to push prevc back so we index into the same keymap before - we read lastc. Fixes bug report from Davor Cubranic - - - 5/20 - ---- -expr.c - - expr_bind_variable: pay attention to the return value from - bind_variable and check whether or not we should error out due to - a readonly or noassign variable. Fixes bug reported by Eric - Blake - - 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 - -lib/readline/doc/{rluser.texi,readline.3} - - document history-substring-search-forward and - history-substring-search-backward - - 5/27 - ---- -{nojobs,jobs}.c - - add support for DONT_REPORT_SIGTERM so that the shell doesn't print - a message when a job exits due to SIGTERM since that's the default - signal sent by the kill builtin. Suggested by Marc Herbert - - -config-top.h - - DONT_REPORT_SIGTERM: new user-modifiable setting. Commented out - by default - - 5/28 - ---- -lib/readline/bind.c - - _rl_skip_to_delim: skip to a closing double quote or other delimiter, - allowing backslash to quote any character, including the delimiter - - rl_parse_and_bind: call _rl_skip_to_delim instead of using inline - code - - rl_parse_and_bind: allow quoted strings as the values of string - variables. Variable values without double quotes have trailing - whitespace removed (which still allows embedded whitespace, for - better or worse). Fixes problem with string variables not matching - in `set' command if values happen to have trailing spaces or tabs - (debian bash bug #602762), but introduces slight incompatibility. - - 5/29 - ---- -doc/{bash.1,bashref.texi} - - clarify unset description to specify that without options, a - variable, then a shell function if there is no variable by that - name, is unset. Fixes discrepancy reported by Mu Qiao - - - 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 - -arrayfunc.c - - expand_compound_array_assignment: defer expansion of words between - parens when performing compound assignmnt to an associative array - variable - - assign_compound_array_list: perform the same expansions when doing - a compound array assignment to an associative array variable as - when doing a straight array index assignment. The idea is that - foo=( [ind1]=bar [ind2]=quux) - is the same as - foo[ind1]=bar ; foo[ind2]=quux - - This fixes problems with double-expansion and quote removal being - performed on the array indices - - 6/13 - ---- -doc/{bash.1,bashref.texi} - - Add a little text to make it clear that the locale determines how - range expressions in glob patterns are handled. - - - 6/21 - ---- -builtins/read.def - - display a message and return error status if -a is used with an - existing associative array. Fixes bug reported by Curtis Doty - - - 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 - -doc/{bash.1,bashref.texi} - - checkwinsize: remove language saying that only interactive shells - check the window size after each command - -lib/readline/histfile.c - - history_backupfile: new file, creates a backup history file name - given a filename (appending `-') - - history_do_write: when overwriting the history file, back it up - before writing. Restore backup file on a write error. Suggested - by chkno@chkno.net - -bashline.c - - find_cmd_name: two new arguments, return the start and end of the - actual text string used to find the command name, without taking - whitespace into account - - attempt_shell_completion: small changes to make sure that completion - attempted at the beginning of a non-empty line does not find a - programmable completion, even if the command name starts at point - - attempt_shell_completion: small change to make sure that completion - does not find a progcomp when in whitespace before the command - name - - attempt_shell_completion: small change to make sure that completion - does not find a progcomp when point is at the first character of a - command name, even when there is leading whitespace (similar to - above). Fixes problems noted by Ville Skytta - -subst.c - - brace_expand_word_list: since the individual strings in the strvec - returned by brace_expand are already allocated, don't copy them to - newly-allocated memory when building the WORD_LIST, just use them - intact - -locale.c - - locale_mb_cur_max: cache value of MB_CUR_MAX when we set or change - the locale to avoid a function call every time we need to read it - -shell.h - - new struct to save shell_input_line and associated variables: - shell_input_line_state_t - - add members of sh_parser_state_t to save and restore token and the - size of the token buffer - -parse.y - - {save,restore}_input_line_state: new functions to save and restore - shell_input_line and associated variables - - {save,restore}_parser_state: add code to save and restore the token - and token buffer size - - xparse_dolparen: call save_ and restore_input_line_state to avoid - problems with overwriting shell_input_line when we recursively - call the parser to parse a command substitution. Fixes bug - reported by Rui Santos - -include/shmbutil.h - - use locale_mb_cur_max instead of MB_CUR_MAX in ADVANCE_CHAR and - similar macros - -lib/glob/smatch.c - - rangecmp,rangecmp_wc: change to take an additional argument, which - forces the use of strcoll/wscoll when non-zero. If it's 0, a new - variable `glob_asciirange' controls whether or not we use strcoll/ - wscoll. If glob_asciirange is non-zero, we use straight - C-locale-like ordering. Suggested by Aharon Robbins - - - 6/30 - ---- -execute_cmd.c - - execute_pipeline: make sure the lastpipe code is protected by - #ifdef JOB_CONTROL. Fixes problem reported by Thomas Cort - - - 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/signals.c - - rl_signal_handler: if we're in callback mode, don't interrupt - immediately on a SIGWINCH - - 7/3 - --- -bashline.c - - set_directory_hook: and its siblings are a new set of functions to - set, save, and restore the appropriate directory completion hook - - change callers to use {set,save,restore}_directory_hook instead of - manipulating rl_directory_rewrite_hook directly - - dircomplete_expand: new variable, defaults to 0, if non-zero causes - directory names to be word-expanded during word and filename - completion - - change {set,save,restore}_directory_hook to look at dircomplete_expand - and change rl_directory_completion_hook or rl_directory_rewrite_hook - appropriately - -bashline.h - - extern declaration for set_directory_hook so shopt code can use it - - 7/6 - --- -builtins/shopt.def - - globasciiranges: new settable shopt option, makes glob ranges act - as if in the C locale (so b no longer comes between A and B). - Suggested by Aharon Robbins - - 7/7 - --- -doc/{bash.1,bashref.texi} - - document new `globasciiranges' shopt option - - 7/8 - --- -builtins/shopt.def - - direxpand: new settable option, makes filename completion expand - variables in directory names like bash-4.1 did. - - shopt_set_complete_direxpand: new function, does the work for the - above by calling set_directory_hook - -doc/{bash.1,bashref.texi} - - document new `direxpand' shopt option - - 7/15 - ---- -lib/readline/isearch.c - - _rl_isearch_dispatch: when adding character to search string, use - cxt->lastc (which we use in the switch statement) instead of c, - since lastc can be modified earlier in the function - - 7/18 - ---- -lib/readline/rlprivate.h - - _rl_search_context: add another member to save previous value of - (multibyte) lastc: pmb is to mb as prevc is to lastc - -lib/readline/isearch.c: - - _rl_isearch_dispatch: if a key sequence indexes into a new keymap, - but doesn't find any bound function (k[ind].function == 0) or is - bound to self-insert (k[ind].function == rl_insert), back up and - insert the previous character (the one that caused the index into a - new keymap) and arrange things so the current character is the next - one read, so both of them end up in the search string. Fixes bug - reported by Clark Wang - - _rl_isearch_dispatch: a couple of efficiency improvements when adding - characters to the isearch string - - 7/24 - ---- -lib/readline/isearch.c - - _rl_isearch_dispatch: save and restore cxt->mb and cxt->pmb - appropriately when in a multibyte locale - -doc/{bash.1,bashref.texi} - - correct description of {x}>file (and other redirection operators - that allocate a file descriptor) to note the the fd range is - greater than or equal to 10. Fixes problem reported by - Christian Ullrich - -lib/readline/signals.c - - rl_signal_handler: don't interrupt immediately if in callback mode - -lib/readline/callback.c - - rl_callback_read_char: install signal handlers only when readline - has control in callback mode, so readline's signal handlers aren't - called when the application is active (e.g., between the calls to - rl_callback_handler_install and rl_callback_read_char). If the - readline signal handlers only set a flag, which the application - doesn't know about, the signals will effectively be ignored until - the next time the application calls into the readline callback - interface. Fixes problem of calling unsafe functions from signal - handlers when in callback mode reported by Jan Kratochvil - - -execute_cmd.c - - fix_assignment_words: when in Posix mode, the `command' builtin - doesn't change whether or not the command name it protects is an - assignment builtin. One or more instances of `command' - preceding `export', for instance, doesn't make `export' treat its - assignment statement arguments differently. Posix interpretation - #351 - -doc/{bash.1,bashref.texi} - - document new Posix-mode behavior of `command' when preceding builtins - that take assignment statements as arguments - -builtins/printf.def - - printstr: if fieldwidth or precision are < 0 or > INT_MAX when - supplied explicitly (since we take care of the `-' separately), - clamp at INT_MAX like when using getint(). Fixes issue reported - by Ralph Coredroy - - 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 - - -builtins/printf.def - - getint: if garglist == 0, return whatever getintmax returns (0). - Fixes bug reported by Ralph Coredroy - - 7/28 - ---- -doc/{bash.1,bashref.texi} - - minor changes to the descriptions of the cd and pushd builtins - -lib/sh/zread.c - - zsyncfd: change variable holding return value from lseek to - off_t. Bug report and fix from Gregory Margo - - 8/1 - --- -expr.c - - don't check for division by 0 when in a context where no evaluation - is taking place. Fixes bug reported by dnade.ext@orange-ftgroup.com - - 8/6 - --- -execute_cmd.c - - execute_command_internal: the parent branch of the subshell code - (where the child calls execute_in_subshell) should not close all - open FIFOs with unlink_fifo_list if it's part of a shell function - that's still executing. Fixes bug reported by Maarten Billemont - - - 8/9 - --- -builtins/common.c - - get_exitstat: return EX_BADUSAGE (2) on a non-numeric argument - -builtins/return.def - - return_builtin: just call get_exitstat to get the return status, - let it handle proper parsing and handling of arguments. Fixes - issue most recently raised by Linda Walsh . - Reverses change from 9/11/2008 (see above) - - 8/16 - ---- -doc/{bash.1,bashref.texi} - - clean up `set -e' language to make it clearer that any failure of - a compound command will cause the shell to exit, not just subshells - and brace commands - - 8/17 - ---- -configure.in - - make the various XXX_FOR_BUILD variables `precious' to autoconf to - avoid stale data - - change how CC_FOR_BUILD is initialized when cross-compiling and not, - but do not change behavior - - initialize CFLAGS_FOR_BUILD to -g when cross-compiling - - initialize LIBS_FOR_BUILD to $(LIBS) when not cross-compiling, empty - when cross-compiling - - create AUTO_CFLAGS variable to hold basic CFLAGS defaults; used when - CFLAGS not inherited from environment (like effect of old - auto_cflags variable) - - substitute LIBS_FOR_BUILD into output Makefiles - [changes inspired by bug report from Nathan Phillip Brink - -- gentoo bug 378941] - -builtins/Makefile.in - - substitute LIBS_FOR_BUILD from configure, not strictly initialized - to $(LIBS) - - 8/27 - ---- -doc/{bash.1,bashref.texi} - - minor changes to the here string description to clarify the - expansions performed on the word - -support/shobj-conf - - handle compilation on Lion (Mac OS X 10.7/darwin11) with changes - to darwin stanzas. Fixes readline bug reported by Vincent - Sheffer - -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 - - 8/30 - ---- -lib/sh/strtrans.c - - ansic_quote: changes to quote (or not) multibyte characters. New - code converts them to wide characters and uses iswprint to check - valid wide chars. From a patch sent by Roman Rakus - - - 9/7 - --- -lib/sh/shquote.c - - sh_backslash_quote: change to be table-driven so we can use a - different table if we want to - - sh_backslash_quote: takes a second char table[256] argument; - -externs.h - - sh_backslash_quote: add second argument to function prototype - -bashline.c,braces.c,parse.y,builtins/printf.def - - change callers of sh_backslash_quote to add second argument - -bashline.c - - filename_bstab: table of characters to pass to sh_backslash_quote; - characters with value 1 will be backslash-quoted - - set_filename_bstab: turn on characters in filename backslash-quote - table according to passed string argument - - call set_filename_bstab every time rl_filename_quote_characters is - assigned a value - - bash_quote_filename: call sh_backslash_quote with filename_bstab - as second argument. This allows other characters in filenames to - be quoted without quoting, for instance, a dollar sign in a shell - variable reference - - 9/8 - --- -bashline.c - - complete_fullquote: new variable, controls table passed to - sh_backslash_quote. If non-zero (the default), the standard set - of shell metacharacters -- as in bash versions up to and including - bash-4.2 -- gets backslash-quoted by the completion code. If zero, - sh_backslash_quote gets the table with the characters in the - variable reference removed, which means they are removed from the - set of characters to be quoted in filenames - - 9/10 - ---- -bashline.c - - bash_filename_stat_hook: new function, designed to expand variable - references in filenames before readline passes them to stat(2) - to determine whether or not they are a directory - - 9/15 - ---- -builtins/declare.def - - if assign_array_element fails due to a bad (or empty) subscript, mark - it as an assignment error and don't attempt any further processing - of that declaration. Fixes segfault bug reported by Diego Augusto - Molina - - 9/19 - ---- -expr.c - - exppower: replace the simple exponentiation algorithm with an - implementation of exponentiation by squaring. Inspired by report - from Nicolas ARGYROU - -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 - - 9/20 - ---- -lib/intl/localealias.c - - read_alias_file: close resource leak (fp) when returning on error - - 9/22 - ---- -execute_command.c - - execute_intern_function: implement Posix interpretation 383 by making - it an error to define a function with the same name as a special - builtin when in Posix mode. - http://austingroupbugs.net/view.php?id=383#c692 - - 9/25 - ---- -doc/{bash.1,bashref.texi} - - formatting and some content changes from Benno Schulenberg - - - document new posix-mode behavior from interp 383 change of 9/22 - - 9/30 - ---- -execute_cmd.c - - shell_execve: add strerror to error message about executable file - that shell can't execute as a shell script. From suggestion by - daysleeper - - 10/1 - ---- -bashhist.c - - maybe_add_history: act as if literal_history is set when parser_state - includes PST_HEREDOC, so we save the bodies of here-documents just - as they were entered. Fixes bug reported by Jonathan Wakely - - - bash_add_history: make sure that the second and subsequent lines of - a here document don't have extra newlines or other delimiting - chars added, since they have the trailing newline preserved, when - `lithist' is set and history_delimiting_chars isn't called - -execute_cmd.c - - execute_command_internal: avoid fd exhaustion caused by using - process substitution in loops inside shell functions by using - copy_fifo_list and close_new_fifos (). Fixes debian bash bug - 642504 - -lib/readline/complete.c - - new variable, rl_filename_stat_hook, used by append_to_match. If - filename completion is desired, and rl_filename_stat_hook points - to a function, call that function to expand the filename in an - application-specific way before calling stat. - -bashline.c - - bash_default_completion: if variable completion returns a single - match, use bash_filename_stat_hook and file_isdir to determine - whether or not the variable name expands to a directory. If it - does, set the filename_append_character to `/'. This is not - perfect, so we will see how it works out. Adds functionality - requested by Peter Toft 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/readline/readline.h - - new extern declaration for rl_filename_stat_hook - -lib/readline/doc/rltech.texi - - rl_directory_rewrite_hook: now documented - - rl_filename_stat_hook: document - -pcomplete.c - - gen_action_completions: in the CA_DIRECTORY case, turn off - rl_filename_completion_desired if it was off before we called - rl_filename_completion_function and we didn't get any matches. - Having it on causes readline to quote the matches as if they - were filenames. Adds functionality requested by many, - including Clark Wang - -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 - - 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 - - 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) - -lib/sh/Makefile.in - - remove some dependencies on version.h where it doesn't make sense - -variables.c - - initialize_shell_variables: while reading the environment, a shell - running in posix mode now checks for SHELLOPTS being readonly (it - gets set early on in main()) before trying to assign to it. It - saves an error message and the variable gets parsed as it should. - Fixes bug reported by Len Giambrone - - 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 - - - 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 - - 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 - -lib/readline/complete.c - - rl_callback_read_char: add calls to a macro CALLBACK_READ_RETURN - instead of straight return; add same call at end of function. - Placeholder for future work in deinstalling signal handlers when - readline is not active - - 10/25 - ----- -expr.c - - exp2: catch arithmetic overflow when val1 == INTMAX_MIN and val2 == -1 - for DIV and MOD and avoid SIGFPE. Bug report and pointer to fix - from Jaak Ristioja - - expassign: same changes for arithmetic overflow for DIV and MOD - - 10/28 - ----- -subst.c - - parameter_brace_expand: allow pattern substitution when there is an - expansion of the form ${var/} as a no-op: replacing nothing with - nothing - - parameter_brace_patsub: don't need to check for PATSUB being NULL; - it never is - -flags.c - - if STRICT_POSIX is defined, initialize history_expansion to 0, since - history expansion (and its treatment of ! within double quotes) is - not a conforming posix environment. From austin-group issue 500 - -lib/readline/histexpand.c - - history_expand: when processing a string within double quotes - (DQUOTE == 1), make the closing double quote inhibit history - expansion, as if the word were outside double quotes. In effect, - we assume that the double quote is followed by a character in - history_no_expand_chars. tcsh and csh seem to do this. This - answers a persistent complaint about history expansion - - 10/29 - ----- -make_cmd.c - - make_arith_for_command: use skip_to_delim to find the next `;' - when breaking the string between the double parens into three - separate components instead of a simple character loop. Fixes - bug reported by Dan Douglas - - 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 - -builtins/read.def - - read_builtin: don't call bind_read_variable with a potentially-null - string - -pcomplete.c - - gen_command_matches: don't call dispose_word_desc with a NULL arg - - gen_compspec_completions: fix memory leak by freeing `ret' before - calling gen_action_completions (tcs, ...). happens when - performing directory completion as default and no completions - have been generated - - gen_progcomp_completions: make sure to set foundp to 0 whenever - returning NULL - - it_init_aliases: fix memory leak by freeing alias_list before - returning - -bashline.c - - command_word_completion_function: don't call restore_tilde with a - NULL directory_part argument - - bash_directory_expansion: bugfix: don't throw away results of - rl_directory_rewrite_hook if it's set and returns non-zero - - bind_keyseq_to_unix_command: free `kseq' before returning error - -arrayfunc.c - - assign_array_element_internal: make sure `akey' is freed if non-null - before returning error - - assign_compound_array_list: free `akey' before returning error - - array_value_internal: free `akey' before returning error - - unbind_array_element: free `akey' before returning error - -subst.c - - array_length_reference: free `akey' before returning error in case - of expand_assignment_string_to_string error - - array_length_reference: free `akey' after call to assoc_reference - - skip_to_delim: if skipping process and command substitution, free - return value from extract_process_subst - - parameter_brace_substring: free `val' (vtype == VT_VARIABLE) before - returning if verify_substring_values fails - - parameter_brace_expand: remove two duplicate lines that allocate - ret in parameter_brace_substring case - - parameter_brace_expand: convert `free (name); name = xmalloc (...)' - to use `xrealloc (name, ...)' - - parameter_brace_expand: free `name' before returning when handling - ${!PREFIX*} expansion - - split_at_delims: fix memory leak by freeing `d2' before returning - -redir.c - - redirection_error: free `filename' if the redirection operator is - REDIR_VARASSIGN by assigning allocname - -eval.c - - send_pwd_to_eterm: fix memory leak by freeing value returned by - get_working_directory() - -builtins/cd.def - - change_to_directory: fix memory leak by freeing return value from - resetpwd() - - cd_builtin: fix memory leak by freeing value returned by dirspell() - - cd_builtin: fix memory leak by freeing `directory' if appropriate - before overwriting with return value from resetpwd() - -builtins/type.def - - describe_command: free `full_path' before overwriting it with return - value from sh_makepath - -builtins/complete.def - - compgen_builtin: fix memory leak by calling strlist_dispose (sl) - before overwriting sl with return value from completions_to_stringlist - -builtins/hash.def - - list_hashed_filename_targets: fix memory leak by freeing `target' - -make_cmd.c - - make_arith_for_command: free `init', `test', and `step' before - returning error on parse error - -jobs.c - - initialize_job_control: don't call move_to_high_fd if shell_tty == -1 - -general.c - - check_dev_tty: don't call close with an fd < 0 - - legal_number: deal with NULL `string' argument, return invalid - -lib/sh/fmtulong.c - - fmtulong: if the `base' argument is invalid, make sure we index - buf by `len-1' at maximum - -print_cmd.c - - print_deferred_heredocs: don't try to dereference a NULL `cstring' - - cprintf: make sure to call va_end (args) - -variables.c - - push_dollar_vars: fix call to xrealloc to use sizeof (WORD_LIST *) - instead of sizeof (WORD_LIST **) - -lib/sh/zmapfd.c - - zmapfd: if read returns error, free result and return -1 immediately - instead of trying to reallocate it - - 11/6 - ---- -execute_cmd.c - - cpl_reap: rewrote to avoid using pointer after freeing it; now builds - new coproc list on the fly while traversing the old one and sets the - right values for coproc_list when done - - 11/12 - ----- -builtins/set.def - - if neither -f nor -v supplied, don't allow a readonly function to - be implicitly unset. Fixes bug reported by Jens Schmidt - - -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 - -pcomplete.h - - COPT_NOQUOTE: new complete/compgen option value - -builtins/complete.def - - noquote: new complete/compgen option; will be used to disable - filename completion quoting - -pcomplete.c - - pcomp_set_readline_variables: pay attention to COPT_NOQUOTE; turns - of rl_filename_quoting_desired if set; turns it on if unset (value - is inverted, since default is on) - -doc/bash.1,lib/readline/doc/rluser.texi - - document new -o noquote option to complete/compgen/compopt - -pathexp.c - - quote_string_for_globbing: if QGLOB_REGEXP, make sure characters - between brackets in an ERE bracket expression are not inappropriately - quoted with backslashes. This is a pretty substantial change, - should be stressed when opening bash up for alpha and beta tests. - Fixes bug pointed out by Stephane Chazleas - - -doc/{bash.1,bashref.texi} - - document that regexp matches can be inconsistent when quoting - characters in bracket expressions, since usual quoting characters - lose their meaning within brackets - - note that regular expression matching when the pattern is stored - in a shell variable which is quoted for expansion causes string - matching - -redir.h - - RX_SAVEFD: new flag value; notes that a redirection denotes an - fd used to save another even if it's not >= SHELL_FD_BASE - -redir.c - - do_redirection_internal: when deciding whether or not to reset the - close-on-exec flag on a restored file descriptor, trust the value - of redirect->flags & RX_SAVCLEXEC even if the fd is < SHELL_FD_BASE - if the RX_SAVEFD flag is set - - add_undo_redirect: set the RX_SAVEFD flag if the file descriptor - limit is such that the shell can't duplicate to a file descriptor - >= 10. Fixes a limitation that tripped a coreutils test reported - by Paul Eggert - - 11/19 - ----- -doc/{bash.1,bashref.texi},lib/readline/doc/hsuser.texi - - make it clear that bash runs HISTFILESIZE=$HISTSIZE after reading - the startup files - - make it clear that bash runs HISTSIZE=500 after reading the - startup files - - make it clear that setting HISTSIZE=0 causes commands to not be - saved in the history list - - make it clear that setting HISTFILESIZE=0 causes the history file - to be truncated to zero size - -variables.c - - sv_histsize: change so setting HISTSIZE to a value less than 0 - causes the history to be `unstifled' - - sv_histsize: change so setting HISTFILESIZE to a value less than 0 - results in no file truncation - - make it clear that numeric values less than 0 for HISTFILESIZE or - HISTSIZE inhibit the usual functions - - 11/23 - ----- -parse.y - - save_input_line_state: add missing `return ls' at the end, since the - function is supposed to return its argument. Pointed out by - Andreas Schwab - -builtins/read.def - - skip over NUL bytes in input, as most modern shells seem to. Bug - report by Matthew Story - -lib/readline/vi_mode.c - - rl_vi_replace: set _rl_vi_last_key_before_insert to invoking key - - 11/25 - ----- -builtins/read.def - - read_builtin: if xrealloc returns same pointer as first argument, - don't bother with the remove_unwind_protect/add_unwind_protect pair - - read_builtin: set a flag (`reading') around calls to zread/zreadc - and readline() - - sigalrm: change to set flag (`sigalrm_seen') and only longjmp if - currently in read(2) (reading != 0) - - CHECK_ALRM: new macro, checks sigalrm_seen and longjmps if non-zero, - behavior of old SIGALRM catching function - - read_builtin: call CHECK_ALRM in appropriate places while reading - line of input. Fixes bug reported by Pierre Gaston - - -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 - -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 - -lib/readline/util.c - - rl_settracefp: new utility function to set the tracing FILE * - -lib/readline/signals.c - - _rl_sigcleanup: pointer to a function that will be called with the - signal and a void * argument from _rl_handle_signal - - _rl_sigcleanarg: void * that the rest of the code can set to have - passed to the signal cleanup function - - _rl_handle_signal: if _rl_sigcleanup set, call as - (*_rl_sigcleanup) (sig, _rl_sigcleanarg) - -lib/readline/rlprivate.h - - extern declarations for _rl_sigcleanup and _rl_sigcleanarg - -lib/readline/complete.c - - _rl_complete_sigcleanup: signal cleanup function for completion code; - calls _rl_free_match_list on _rl_sigcleanarg if signal == SIGINT - - rl_complete_internal: before calling display_matches if what_to_do - == `?', set _rl_sigcleanup to _rl_complete_sigcleanup so the match - list gets freed on SIGINT; avoids possible memory leak pointed out - by Garrett Cooper - - rl_complete_internal: in default switch case, call _rl_free_match_list - before returning to avoid memory leak - -doc/bashref.texi - - start at a set of examples for the =~ regular expression matching - operator, touching on keeping the pattern in a shell variable and - quoting portions of the pattern to remove their special meaning - - 12/1 - ---- -lib/glob/gmisc.c - - extglob_pattern: new function, returns 1 if pattern passed as an - argument looks like an extended globbing pattern - -lib/glob/glob.c - - skipname: return 0 immediately if extglob_pattern returns non-zero, - let the extended globbing code do the right thing with skipping - names beginning with a `.' - - mbskipname: return 0 immediately if extglob_pattern returns non-zero, - let the extended globbing code do the right thing with skipping - names beginning with a `.'. Fixes bug reported by Yongzhi Pan - - - 12/2 - ---- -lib/glob/smatch.c - - patscan, patscan_wc: no longer static so other parts of the glob - library can use them, renamed to glob_patscan, glob_patscan_wc - -lib/glob/glob.c - - extern declarations for glob_patscan, glob_patscan_wc - - wchkname: new function, does skipname on wchar_t pattern and dname, - old body of mbskipname after converting to wide chars - - extglob_skipname: new function, checks all subpatterns in an extglob - pattern to determine whether or not a filename should be skipped. - Calls skipname for each subpattern. Dname is only skipped if all - subpatterns indicate it should be. Better fix for bug reported by - Yongzhi Pan - - wextglob_skipname: wide-char version of extglob_skipname, calls - wchkname instead of calling back into mbskipname for each - subpattern to avoid problems with char/wchar_t mismatch - - skipname: call extglob_skipname if extglob_pattern returns non-zero - - mbskipname: call wextglob_skipname if extglob_pattern returns non-zero - - mbskipname: short-circuit immediately if no multibyte chars in - pattern or filename - -execute_cmd.c - - execute_cond_node: added parens to patmatch assignment statement to - make intent clearer - - 12/3 - ---- -configure.in,config.h.in - - check for imaxdiv, define HAVE_IMAXDIV if present - -expr.c - - expassign, exp2: use imaxdiv if available. Doesn't help with checks - for overflow from 10/25 - - 12/6 - ---- -lib/readline/complete.c - - compute_lcd_of_matches: if we're ignoring case in the matches, only - use what the user typed as the lcd if it matches the first match - (after sorting) up to the length of what was typed (if what the - user typed is longer than the shortest of the possible matches, use - the shortest common length of the matches instead). If it doesn't - match, use the first of the list of matches, as if case were not - being ignored. Fixes bug reported by Clark Wang - - - 12/7 - ---- -builtins/cd.def - - cd_builtin: add code to return error in case cd has more than one - non-option argument, conditional on CD_COMPLAINS define (which is - not defined anywhere) - -doc/{bash.1,bashref.texi} - - note that additional arguments to cd following the directory name - are ignored. Suggested by Vaclav Hanzl - - 12/10 - ----- -lib/readline/input.c - - rl_read_key: don't need to increment key sequence length here; doing - it leads to an off-by-one error - -lib/readline/macro.c - - rl_end_kbd_macro: after off-by-one error with rl_key_sequence_length - fixed, can decrement current_macro_index by rl_key_sequence_length - (length of key sequence that closes keyboard macro) - -lib/readline/readline.c - - _rl_dispatch_subseq: fix extra increment of rl_key_sequence_length - when ESC maps to a new keymap and we're converting meta characters - to ESC+key - - _rl_dispatch_subseq: better increment of rl_key_sequence_length - before we dispatch to a function in the ISFUNC case (where the - second increment above should have happened) - - rl_executing_keyseq: the full key sequence that ended up executing - a readline command. Available to the calling application, maintained - by _rl_dispatch_subseq, indexed by rl_key_sequence_length - - rl_executing_key: the key that was bound to the currently-executing - readline command. Same as the `key' argument to the function - -lib/readline/readline.h - - rl_executing_keyseq: extern declaration - - rl_executing_key: extern declaration - - rl_key_sequence_length: declaration moved here from rlprivate.h, - now part of public interface - -lib/readline/rlprivate.h - - new extern declaration for _rl_executing_keyseq_size, buffer size - for rl_executing_keyseq - -lib/readline/doc/rltech.texi - - documented new variables: rl_executing_key, rl_executing_keyseq, - rl_key_sequence_length - - 12/13 - ----- -bashline.c - - bash_execute_unix_command: replace ad-hoc code that searches - cmd_xmap for correct command with call to rl_function_of_keyseq - using rl_executing_keyseq; now supports key sequences longer - than two characters. Fixes bug reported by Michael Kazior - - - 12/15 - ----- -make_cmd.c - - make_function_def: don't null out source_file before calling - make_command so it can be used later on when the function definition - is executed - -execute_cmd.c - - execute_intern_function: second argument is now FUNCTION_DEF * - instead of COMMAND * - - execute_command_internal: call execute_intern_function with the - new second argument (the entire FUNCTION_DEF instead of just the - command member) - - execute_intern_function: if DEBUGGER is defined, call - bind_function_def before calling bind_function, just like - make_function_def does (might be able to take out the call in - make_function_def depending on what the debugger does with it). - Fixes bug reported by - -expr.c - - more minor changes to cases of INTMAX_MIN % -1 and INTMAX_MIN / 1; - fix typos and logic errors - - 12/16 - ----- -bashline.c - - find_cmd_start: change flags to remove SD_NOSKIPCMD so it skips over - command substitutions and doesn't treat them as command separators - - attempt_shell_completion: instead of taking first return from - find_cmd_name as command name to use for programmable completion, - use loop to skip over assignment statements. Fixes problem reported - by Raphael Droz - - 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. - -lib/readline/text.c - - _rl_insert_next: if we're defining a macro, make sure the key gets - added to the macro text (should really audit calls to rl_read_key() - and make sure the right thing is happening for all of them) - -bashline.[ch] - - print_unix_command_map: new function, prints all bound commands in - cmd_xmap using rl_macro_dumper in a reusable format - -builtins/bind.def - - new -X option: print all keysequences bound to Unix commands using - print_unix_command_map. Feature suggested by Dennis Williamson - (2/2011) - -doc/{bash.1,bashref.texi} - - document new `bind -X' option - - 12/24 - ----- - -doc/{bash.1,bashref.texi} - - add a couple of sentences to the description of the case modification - operators making it clearer that each character of parameter is - tested against the pattern, and that the pattern should only attempt - to match a single character. Suggested by Bill Gradwohl - - - 12/28 - ----- -shell.c - - init_noninteractive: instead of calling set_job_control(0) to - unconditionally turn off job control, turn on job control if - forced_interactive or jobs_m_flag is set - - shell_initialize: call initialize_job_control with jobs_m_flag as - argument so `bash -m script' enables job control while running the - script - -jobs.c - - initialize_job_control: if the `force' argument is non-zero, turn on - job control even if the shell is not currently interactive - (interactive == 0) - - 12/29 - ----- - -flags.h - - new extern declaration for jobs_m_flag - -builtins/{cd,set}.def,doc/{bash.1,bashref.texi} - - added text clarifying the descriptions of cd -L and -P, suggested by - Padraig Brady - - slight change to the description of `set -P' about resolving symbolic - links - -lib/readline/doc/rluser.texi - - Added an example to the programmable completion section: _comp_cd, - a completion function for cd, with additional verbiage. Text - includes a reference to the bash_completion project - - 1/1/2012 - -------- -jobs.c - - set_job_status_and_cleanup: note that a job is stopped due to - SIGTSTP (any_tstped) if job_control is set; there's no need to - test interactive - - 1/5 - --- -quit.h - - LASTSIG(): new macro, expands to signal number of last terminating - signal received (terminating_signal or SIGINT) - -trap.c - - first_pending_trap: returns lowest signal number with a trap pending - - trapped_signal_received: set to the last trapped signal the shell - received in trap_handler(); reset to 0 in run_pending_traps - -builtins/read.def - - read_builtin: changes to posix-mode (posixly_correct != 0) to make - `read' interruptible by a trapped signal. After the trap runs, - read returns 128+sig and does not assign the partially-read line - to the named variable(s). From an austin-group discussion started - by David Korn - - 1/11 - ---- -doc/{bash.1,bashref.texi} - - slight changes to the descriptions of the compat32 and compat40 shell - options to clarify their meaning - - 1/12 - ---- -lib/readline/{colors.[ch],parse-colors.[ch]} - - new files, part of color infrastructure support - -Makefile.in,lib/readline/Makefile.in - - arrange to have colors.o and parse-colors.o added to readline - library - -{configure,config.h}.in - - check for stdbool.h, define HAVE_STDBOOL_H if found - - 1/14 - ---- -lib/readline/bind.c - - colored_stats: new bindable variable, enables using colors to - indicate file type when listing completions - -lib/readline/complete.c - - _rl_colored_stats: new variable, controlled by colored-stats bindable - variable - - colored_stat_start, colored_stat_end: new functions to set and reset - the terminal color appropriately depending on the type of the - filename to be printed - - print_filename: changes to print colors if `colored-stats' variable - set. Changes contributed by Raphael Droz - - -lib/readline/readline.c - - rl_initialize_everything: add call to _rl_parse_colors to parse - color values out of $LS_COLORS. May have to add to rl_initialize - to make more dynamic if LS_COLORS changes (which doesn't happen - very often, if at all) - -lib/readline/rlprivate.h - - _rl_colored_stats: new extern declaration - -lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 - - colored-stats: document new bindable readline variable - -lib/readline/colors.c - - _rl_print_color_indicator: call rl_filename_stat_hook before calling - lstat/stat so we can get color indicators for stuff like - $HOME/Applications - -lib/readline/complete.c - - stat_char: call rl_filename_stat_hook before calling lstat/stat - -findcmd.[ch],execute_cmd.c - - search_for_command: now takes a second `flags' argument; changed - header function prototype and callers - - search_for_command: if (flags & 1), put the command found in $PATH - into the command hash table (previous default behavior) - -execute_cmd.c - - is_dirname: call search_for_command with flags argument of 0 so it - doesn't try to put something in the command hash table - -bashline.c - - bash_command_name_stat_hook: a hook function for readline's - filename_stat_hook that does $PATH searching the same way that - execute_cmd.c:execute_disk_command() does it, and rewrites the - passed filename if found. Does not put names into command hash - table. This allows command name completion to take advantage - of `visible-stats' and `colored-stats' settings. - - executable_completion: new function, calls the directory completion - hook to expand the filename before calling executable_file or - executable_or_directory; change command_word_completion_function to - call executable_completion. This allows $HOME/bin/[TAB] to do - command completion and display alternatives - - 1/17 - ---- -pcomplete.c - - gen_command_matches: now takes a new second argument: the command - name as deciphered by the programmable completion code and used - to look up the compspec; changed callers (gen_compspec_completions) - - gen_shell_function_matches: now takes a new second argument: the - command that originally caused the completion function to be - invoked; changed callers (gen_compspec_completions)) - - build_arg_list: now takes a new second argument: the command name - corresponding to the current compspec; changed callers - (gen_command_matches, gen_shell_function_matches) - - build_arg_list: now uses `cmd' argument to create $1 passed to - invoked command or shell function - - gen_compspec_completions: if we skipped a null command at the - beginning of the line (e.g., for completing `>'), add a new word for - it at the beginning of the word list and increment nw and cw - appropriately. This is all a partial fix for the shortcoming - pointed out by Sung Pae - - 1/18 - ---- - -{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 - -lib/readline/util.c - - _rl_audit_tty: new function, send a string to the kernel tty audit - system - -lib/readline/rlprivate.h - - _rl_audit_tty: new extern declaration - -lib/readline/readline.c - - readline: call _rl_audit_tty with line to be returned before returning - it if the Linux tty audit system is available and it's been enabled - in rlconf.h Original patch from Miroslav Trmac; recent request - from Miroslav Lichvar - - 1/21 - ---- - -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 - -trap.c - - use BLOCK_SIGNAL/UNBLOCK_SIGNAL instead of code dependent on - HAVE_POSIX_SIGNALS and BSD signals - - 1/24 - ---- - -print_cmd.c - - print_redirection_list: change the conditions under which - r_duplicating_output_word is mapped to r_err_and_out to more or - less match those used in redir.c. Fixes bug pointed out by - Dan Douglas - - - 1/29 - ---- -lib/readline/signals.c - - _rl_block_sigwinch,_rl_release_sigwinch: don't compile in bodies - unless SIGWINCH is defined. Fixes bug reported by Pierre Muller - - -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/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 - - 2/4 - --- -lib/readline/undo.c - - _rl_free_undo_list: new function, old body of rl_free_undo_list, - frees undo entries in UNDO_LIST * passed as argument - - rl_free_undo_list: call _rl_free_undo_list - -lib/readline/rlprivate.h - - _rl_free_undo_list: new extern declaration - - _rl_keyseq_timeout: new extern declaration (see below) - -lib/readline/misc.c - - rl_clear_history: new function. Clears the history list and frees - all associated data similar to history.c:clear_history(), but - takes rl_undo_list into account and frees and UNDO_LISTs saved as - `data' members of a history list entry - -lib/readline/doc/rltech.texi - - rl_clear_history: documented - -lib/readline/readline.c - - _rl_keyseq_timeout: new variable to hold intra-key timeout value - from 1/21 fix; specified in milliseconds. Default value is 500 - - _rl_dispatch_subseq: change to use _rl_keyseq_timeout as intra-key - timeout if it's greater than 0; no timeout if <= 0 - - _rl_dispatch_subseq: don't check for queued keyboard input if we have - pushed or pending input, or if we're reading input from a macro - -lib/readline/bind.c - - keyseq-timeout: new bindable variable, shadows _rl_keyseq_timeout - - string_varlist: add keyseq-timeout - - sv_seqtimeout: new function to modify value of _rl_keyseq_timeout; - clamps negative values at 0 for now - - _rl_get_string_variable_value: return value for keyseq-timeout - -doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} - - keyseq-timeout: documented - -lib/readline/isearch.c - - _rl_isearch_dispatch: modification to fix from 7/18 to not use - cxt->keymap and cxt->okeymap, since by the time this code is - executed, they are equal. Use `f' to check for rl_insert or - unbound func - - _rl_isearch_dispatch: if we're switching keymaps, not in - callback mode, and don't have pending or pushed input, use - _rl_input_queued to resolve a potentially ambiguous key sequence. - Suggested by Roger Zauner - - _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 - - - 2/5 - --- -builtins/gen-helpfiles.c - - new file: reads struct builtin and writes the long docs to files - in the `helpdirs' subdirectory. The filename is given in the - previously-unused `handle' member of the struct builtin. Links - with `tmpbuiltins.o', which is created by Makefile to have the - right long documentation. When not cross-compiling, gets the - right #defines based on configuration options from config.h instead - of trying to parse conditional parts of def files. Fixes - shortcoming pointed out by Andreas Schwab - -builtins/Makefile.in - - tmpbuiltins.c: new generated file, created to enable creation of - separate helpfiles based on correct #defines instead of trying to - parse conditional parts of def files - - gen-helpfiles: new program to generate helpfiles, links with - tmpbuiltins.o - - HELPFILES_TARGET: new target, substituted by configure to `helpdoc' - if separate helpfiles requested - - targets: new target, libbuiltins.a and $(HELPFILES_TARGET) - - CREATED_OBJECTS: new variable, holds created object files for - make clean; changed make clean to remove created objects - - helpdoc: changed to call gen-helpfiles instead of mkbuiltins - -Makefile.in - - when building libbuiltins.a, recursively call make with `targets' - argument to make sure separate helpfiles get built - -configure.in - - substitute `helpdoc' as value of HELPFILES_TARGET if - --enable-separate-helpfiles supplied as configure argument - -builtins/mkbuiltins.c - - `-nofunctions': new argument, causes mkbuiltins to not write value - for function implementing a particular builtin to struct builtin - and to write document file name to `handle' member of struct builtin - - no longer writes separate helpfiles; that is left to gen-helpfiles - - 2/8 - --- -subst.c - - make sure last_command_exit_value is set to a non-zero value before - any calls to report_error, since `-e' set will short-circuit - report_error. Fixes bug reported by Ewan Mellor - - -variables.c - - make_local_array_variable: added second argument; if non-zero, - function will return an existing local associative array variable - instead of insisting on an indexed array - -variable.h,subst.c - - make_local_array_variable: changed prototype and caller - -builtins/declare.def - - declare_internal: add second arg to call to make_local_array_variable; - making_array_special, which indicates we're processing an - assignment like declare a[b]=c. Fixes seg fault resulting from - a being an already-declared local associative array variable in a - function. Ubuntu bash bug 928900. - - 2/14 - ---- - -execute_cmd.c - - execute_command_internal: if redirections into or out of a loop fail, - don't try to free ofifo_list unless saved_fifo is non-zero. It's - only valid if saved_fifo is set - - 2/15 - ---- -{arrayfunc,braces,variables}.c - - last_command_exit_value: make sure it's set before any calls to - report_error, since -e will cause that to exit the shell - -builtins/common.c - - get_job_by_name: call internal_error instead of report_error so this - doesn't exit the shell - - 2/18 - ---- -builtins/evalstring.c - - parse_and_execute: make sure the file descriptor to be redirected to - is 1 before calling cat_file. One fix for bug reported by Dan Douglas - - -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 - - 2/19 - ---- -lib/sh/strtrans.c - - ansicstr: use 0x7f as the boundary for characters that translate - directly from ASCII to unicode (\u and \U escapes) instead of - UCHAR_MAX, since everything >= 0x80 requires more than one byte. - Bug and fix from John Kearney - -builtins/printf.def - - tescape: ditto for printf \u and \U escape sequences - - 2/20 - ---- -lib/sh/unicode.c - - u32toutf8: fix to handle encodings up to six bytes long correctly - (though technically UTF-8 only has characters up to 4 bytes long). - Report and fix from John Kearney - - u32toutf8: first argument is now an unsigned 32-bit quantity, - changed callers (u32cconv) to pass c instead of wc - - u32reset: new function, resets local static state to uninitialized - (locale information, currently) - -locale.c - - call u32reset whenever LC_CTYPE/LC_ALL/LANG is changed to reset the - cached locale information used by u32cconv. From a report from - John Kearney - - 2/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 - -lib/readline/parens.c - - _rl_enable_paren_matching: make paren matching work in vi insert - mode. Bug report from - - 2/22 - ---- -lib/sh/shquote.c - - sh_backslash_quote: quote tilde in places where it would be - expanded. From a report from John Kearney - - 2/23 - ---- -execute_cmd.c - - execute_pipeline: wrap the discard_unwind_frame call in #ifdef - JOB_CONTROL, since the frame is only created if JOB_CONTROL is - defined. Bug and fix from Doug Kehn - - 2/25 - ---- -error.c - - report_error: make sure last_command_exit_value is non-zero before - we call exit_shell, since the exit trap may reference it. Call - exit_shell with last_command_exit_value to allow exit statuses - other than 1 - -unicode.c - - stub_charset: use local static buffer to hold charset, don't change - value returned by get_locale_var. Based on idea and code from - John Kearney - - 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 - - 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 - - parameter_brace_patsub: run the replacement string through quote - removal even if the expansion is within double quotes, because - the parser and string extract functions treat the quotes and - backslashes as special. If they're treated as special, quote - removal should remove them (this is the Posix position and - compatible with ksh93). THIS IS NOT BACKWARDS COMPATIBLE. - - 3/4 - --- -lib/readline/complete.c - - rl_menu_complete: fix to make show-all-if-ambiguous and - menu-complete-display-prefix work together if both are set. Fix - from Sami Pietila - - 3/5 - --- -bashline.c - - dircomplete_expand_relpath: new variable, if non-zero, means that - `shopt -s direxpand' should expand relative pathnames. Zero by - default, not user-settable yet - - bash_directory_completion_hook: if we have a relative pathname that - isn't changed by canonicalization or spell checking after being - appended to $PWD, then don't change what the user typed. Controlled - by dircomplete_expand_relpath - - 3/7 - --- -m4/timespec.m4 - - new macros, cribbed from gnulib and coreutils: find out whether we - have `struct timespec' and what file includes it - -m4/stat-time.m4 - - new macros, cribbed from gnulib and coreutils: find out whether the - mtime/atime/ctime/etctime fields of struct stat are of type - struct timespec, and what the name is - -include/stat-time.h - - new file, cribbed from gnulib, with additions from coreutils: include - the right file to get the struct timespec define, or provide our own - replacement. Provides a bunch of inline functions to turn the - appropriate members of struct stat into `struct timespec' values, - zeroing out the tv_nsec field if necessary - -test.c - - include "stat-time.h" for the nanosecond timestamp resolution stuff - - stat_mtime: new function, returns struct stat and the mod time - normalized into a `struct timespec' for the filename passed as the - first argument - - filecomp: call stat_mtime instead of sh_stat for each filename - argument to get the mtime as a struct timespec - - filecomp: call timespec_cmp instead of using a straight arithmetic - comparison for the -nt and -ot operators, using timespec returned by - stat_mtime. Added functionality requested by by Werner Fink - 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 - - 3/16 - ---- -array.c - - array_insert: fix memory leak by deleting element to be added in the - case of an error - - 3/18 - ---- -lib/sh/mbschr.c - - mbschr: don't call mbrlen unless is_basic is false; devolves to a - straight character-by-character run through the string - - 3/19 - ---- -stringlib.c - - substring: use memcpy instead of strncpy, since we know the length - and are going to add our own NUL terminator - - 3/20 - ---- -subst.c - - parameter_brace_expand_rhs: if expand_string_for_rhs returns a quoted - null string (a list with one element for which - QUOTED_NULL(list->word->word) returns true), return the quoted null - and set the flags in the returned word to indicate it. Fixes bug - reported by Mark Edgar - -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 - - 3/21 - ---- -config-top.h - - OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT: define to 1 to optimize - sequential indexed array assignment patterns. Defined to 1 by - default - -array.c - - array_insert: if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT is defined, - start the search at lastref (see change from 3/15) - - 3/27 - ---- -print_cmd.c - - debug_print_word_list: new debugging function, prints a word list - preceded by an optional string and using a caller-specified - separator - - 4/1 - --- -command.h - - W_ASSNGLOBAL: new flag, set to indicate declare -g - -execute_cmd.c - - fix_assignment_words: note that we have a -g argument to an assignment - builtin and set the W_ASSNGLOBAL flag in the variable word - -subst.c - - dump_word_flags: print out W_ASSNGLOBAL if present - - do_assignment_internal: only set ASS_MKLOCAL if W_ASSIGNARG is set - and W_ASSNGLOBAL is not. Don't want to create a local variable even - if variable_context is non-zero if ASSNGLOBAL is set. Fixes bug - reported by Bill Gradwohl - - 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 - - -lib/sh/shmbchar.c - - sh_mbsnlen: new function, returns the number of (possibly multibyte) - characters in a passed string with a passed length, examining at most - maxlen (third argument) bytes - -externs.h - - sh_mbsnlen: extern declaration for new function - -shell.c - - exit_shell: call maybe_save_shell_history if remember_on_history is - set, not just in interactive shells. That means the history is - saved if history is enabled, regardless of whether or not the shell - is interactive - -doc/{bash.1,bashref.texi} - - TMOUT: fix description to make it explicit that TMOUT is the timeout - period for a complete line of input, not just any input. Fixes - problem reported in Ubuntu bug 957303: - https://bugs.launchpad.net/ubuntu/+source/bash/+bug/957303 - - HISTFILE: document change to write history list to history file in - any shell with history enabled, not just interactive shells. This - seems to be more logical behavior. Suggested by Greg Wooledge - - - 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 - - 4/18 - ---- -tests/printf3.sub - - try using "perl -e 'print time'" to get the current time in seconds - since the epoch if "date +%s" is not available (solaris 8-10) - - 4/19 - ---- -tests/run-printf - - use cat -v instead of relying on diff -a being available to convert - control characters to ascii and avoid the dreaded "Binary files - /tmp/xx and printf.right differ" - - 4/20 - ---- -lib/sh/strftime.c - - incoporated new version from Aharon Robbins - - 4/22 - ---- -doc/{bash.1,bashref.texi} - - slight change to the description of /dev/tcp and /dev/udp - -subst.c - - match_wpattern: logic fix to the calculation of `simple' (was |=, - needs to be &=). Bug report from Mike Frysinger , - 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 - - 4/25 - ---- -execute_cmd.c - - execute_pipeline: change the call to move_to_high_fd to make it use - getdtablesize() and to not stomp on existing open file descriptors, - like the fd the shell is using to read a script. Bug report from - Greg Wooledge - - 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 - - 5/19 - ---- -variables.c - - bind_int_variable: if an assignment statement like x=y comes in - from the expression evaluator, and x is an array, handle it like - x[0]=y. Fixes bug reported by Dan Douglas - - 5/24 - ---- - -braces.c - - mkseq: handle possible overflow and break the sequence generating - loop if it occurs. Fixes OpenSUSE bug 763591: - https://bugzilla.novell.com/show_bug.cgi?id=763591 - - 5/25 - ---- -Makefile.in - - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools - buildversion, mksignames, mksyntax - - LDFLAGS_FOR_BUILD: add to compilation recipes for test tools - recho, zecho, printenv, xcase - -builtins/Makefile.in - - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools - gen-helpfiles, psize.aux - -variables.c - - bind_int_variable: if LHS is a simple variable name without an array - reference, but resolves to an array variable, call - bind_array_variable with index 0 to make x=1 equivalent to x[0]=1. - Fixes bug reported by Dan Douglas - - 5/27 - ---- -subst.c - - expand_word_internal: make sure has_dollar_at doesn't get reset before - recursive calls to param_expand or expand_word_internal, since it has - to save state of what came before. Use temp variable and make sure - has_dollar_at is incremented if recursive call processes "$@". - Fixes bug reported by gregrwm 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 - - 6/1 - --- -sig.c - - termsig_handler: don't try to save the shell history on a terminating - signal any more, since it just causes too many problems on Linux - systems using glibc and glibc malloc - -lib/readline/vi_mode.c - - rl_vi_change_to: change to correctly redo `cc', since `c' is not a vi - motion character. From Red Hat bug 813289 - - rl_vi_delete_to: change to correctly redo `dd', since `d' is not a vi - motion character - - rl_vi_yank_to: change to correctly redo `yy', since `y' is not a vi - motion character - - 6/4 - --- -lib/sh/mktime.c - - current versions of VMS do not need to include . Fix from - John E. Malmberg - - 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 - - - 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 - - 6/6 - --- -braces.c - - mkseq: try and be smarter about not overallocating elements in - the return array if the increment is not 1 or -1 - - 6/7 - --- -parse.y - - history_delimiting_chars: if the parser says we're in the middle of - a compound assignment (PST_COMPASSIGN), just return a space to avoid - adding a stray semicolon to the history entry. Fixes bug reported - by "Davide Brini" - - 6/8 - --- -bashline.c - - bash_directory_completion_hook: don't attempt spelling correction - on the directory name unless the direxpand option is set and we are - going to replace the directory name with the corrected one in the - readline line. Suggested by Linda Walsh - -lib/sh/shquote.c - - sh_backslash_quote: now takes a third argument: flags. If non-zero, - tildes are not backslash-escaped. Have to handle both printf %q, - where they should be escaped, and filename completion, where they - should not when used as usernames - -externs.h - - sh_backslash_quote: declaration now takes a third argument - -builtins/printf.def - - printf_builtin: call sh_backslash_quote with 1 as third argument - so tildes get escaped - -{bashline,bracecomp}.c - - call sh_backslash_quote with 0 as third argument so tildes are not - escaped in completed words - -doc/bash.1 - - add `coproc' to the list of reserved words. From a report by - Jens Schweikhardt - - 6/10 - ---- -execute_cmd.c - - line_number_for_err_trap: now global, so parse_and_execute can save - and restore it with unwind-protect - -builtins/evalstring.c - - parse_prologue: save and restore line_number_for_err_trap along - with line_number - - restore_lastcom: new function, unwind-protect to restore - the_printed_command_except_trap - - parse_prologue: use restore_lastcom to save and restore the value - of the_printed_command_except_trap around calls to parse_and_execute - (eval/source/.) - - 6/15 - ---- -lib/readline/complete.c - - complete_fncmp: change filename comparison code to understand - multibyte characters, even when doing case-sensitive or case-mapping - comparisons. Fixes problem reported by Nikolay Shirokovskiy - - - 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 - - 6/21 - ---- - -execute_cmd.c - - execute_pipeline: make sure `lastpipe_flag' is initialized to 0 on - all systems, since it's tested later in the function. Fixes bug - reported by John E. Malmberg - - 6/22 - ---- -mailcheck.c - - file_mod_date_changed: return 0 right away if mailstat() does not - return success. Fixes bug with using uninitialized values reported - by szymon.kalasz@uj.edu.pl - -builtins/set.def - - the `monitor' option is not available when the shell is compiled - without job control, since the underlying `m' flag is not available - -nojobs.c - - job_control: now declared as int variable, initialized to 0, never - modified - -jobs.h - - job_control: extern declaration no longer dependent on JOB_CONTROL - -execute_cmd.c - - execute_pipeline: made necessary changes so `lastpipe' shell option - is now available in all shells, even those compiled without - JOB_CONTROL defined - - 6/23 - ---- -lib/glob/glob.c - - glob_filename: check for interrupts before returning if glob_vector - returns NULL or an error. Bug reported by Serge van den Boom - , 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 - - 6/25 - ---- -lib/readline/input.c - - rl_read_key: restructure the loop that calls the event hook a little, - so that the hook is called only after rl_gather_tyi returns no input, - and any pending input is returned first. This results in better - efficiency for processing pending input without calling the hook - on every input character as bash-4.1 did. From a report from - Max Horn - - 6/26 - ---- -trap.c - - signal_is_pending: return TRUE if SIG argument has been received and - a trap is waiting to execute - -trap.h - - signal_is_pending: extern declaration - -lib/glob/glob.c - - glob_vector: check for pending SIGINT trap each time through the loop, - just like we check for interrupt_state or terminating_signal, and - set `lose = 1' so we clean up after ourselves and interrupt the - operation before running the trap. This may require a change later, - maybe call run_pending_traps and do that if run_pending_traps returns? - -variables.c - - sv_histtimefmt: set history_comment_character to default (`#') if - it's 0 when we're turning on history timestamps. The history code - uses the history comment character to prefix timestamps, and - leaving it at 0 effectively removes them from the history. From a - report to help-bash by Dennis Williamson - - 6/27 - ---- -lib/readline/signals.c - - rl_maybe_restore_sighandler: new function, sets handler for SIG to - HANDLER->sa_handler only if it's not SIG_IGN. Needs to be called - on same signals set using rl_maybe_set_sighandler, which does not - override an existing SIG_IGN handler (SIGALRM is ok since it does - the check inline; doesn't mess with SIGWINCH) - - 6/30 - ---- -variables.h - - additional defines for the new `nameref' variable attribute - (att_nameref): nameref_p, nameref_cell, var_setref - -variables.c - - find_variable_nameref: resolve SHELL_VAR V through chain of namerefs - - find_variable_last_nameref: resolve variable NAME until last in a - chain of possibly more than one nameref starting at shell_variables - - find_global_variable_last_nameref: resolve variable NAME until last - in a chain of possibly more than one nameref starting at - global_variables - - find_nameref_at_context: resolve SHELL_VAR V through chain of namerefs - in a specific variable context (usually a local variable hash table) - - find_variable_nameref_context: resolve SHELL_VAR V through chain of - namerefs following a chain of varible contexts - - find_variable_last_nameref_context: resolve SHELL_VAR V as in - find_variable_last_context, but return the final nameref instead of - what the final nameref resolves to - - find_variable_tempenv, find_variable_notempenv, find_global_variable, - find_shell_variable, find_variable: modified to follow namerefs - - find_global_variable_noref: look up a global variable without following - any namerefs - - find_variable_noref: look up a shell variable without following any - namerefs - - bind_variable_internal: modify to follow a chain of namerefs in the - global variables table; change to handle assignments to a nameref by - following nameref chain - - bind_variable: modify to follow chain of namerefs when binding to a - local variable - - unbind_variable: changes to unset nameref variables (unsets both - nameref and variable it resolves to) - -subst.c - - parameter_brace_expand_word: change to handle expanding nameref whose - value is x[n] - - parameter_brace_expand_indir: change to expand in ksh93-compatible - way if variable to be indirected is nameref and a simple (non-array) - expansion - - param_expand: change to expand $foo where foo is a nameref whose value - is x[n] - -execute_cmd.c - - execute_for_command: changes to implement ksh93 semantics when index - variable is a nameref - -builtins/setattr.def - - show_var_attributes: change to add `n' to flags list if att_nameref - is set - -builtins/set.def - - unset_builtin: changes to error messages to follow nameref variables - -builtins/declare.def - - document new -n option - - declare_internal: new `-n' and `+n' options - - declare_internal: handle declare -n var[=value] and - declare +n var[=value] for existing and non-existant variables. - Enforce restriction that nameref variables cannot be arrays. - Implement semi-peculiar ksh93 semantics for typeset +n ref=value - - 7/5 - --- -variables.c - - unbind_variable: unset whatever a nameref resolves to, leaving the - nameref variable itself alone - - unbind_nameref: new function, unsets a nameref variable, not the - variable it references - -variables.h - - unbind_nameref: extern declaration - -builtins/set.def - - unset_builtin: modify to add -n option, which calls unbind_nameref - leaving unbind_variable for the usual case. This required slight - changes and additions to the test suite - -doc/{bash.1,bashref.texi} - - document namerefs and typeset/declare/local/unset -n - - 7/13 - ---- -lib/sh/casemod.c - - include shmbchar.h for is_basic and supporting pieces - - sh_casemod: use _to_wupper and _to_wlower to convert wide character - case instead of TOUPPER and TOLOWER. Fixes bug reported by - Dennis Williamson , 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 - -lib/readline/signals.c - - _rl_{block,release}_sigint: remove the code that actually blocks and - releases the signals, since we defer signal handling until calls to - RL_CHECK_SIGNALS() - -lib/readline/{callback,readline,util}.c - - if HAVE_POSIX_SIGSETJMP is defined, use sigsetjmp/siglongjmp without - saving and restoring the signal mask instead of setjmp/longjmp - -lib/readline/rltty.c - - prepare_terminal_settings: don't mess with IXOFF setting if - USE_XON_XOFF defined - -doc/{bash.1,bashref.texi} - - add some text to the description of set -e clarifying its effect - on shell functions and shell function execution. Suggested by - Rainer Blome - -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 - - 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 - - -support/shobj-conf - - Mac OS X: drop MACOSX_DEPLOYMENT_TARGET=10.3 from the LDFLAGS. We - can finally kill Panther - - 7/28 - ---- -subst.c - - command_substitute: make sure last_made_pid gets reset if make_child - fails - -execute_cmd.c - - execute_command_internal: case cm_simple: decide whether or not to - wait_for a child if already_making_children is non-zero, indicates - that there is an unwaited-for child. More of fix for bug report - from Michael Haubenwallner - -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 - - - 7/29 - ---- -shell.c - - subshell_exit: new function, exits the shell (via call to sh_exit()) - after calling any defined exit trap - -externs.h - - subshell_exit: new extern declaration - -execute_cmd.c - - execute_command_internal: make sure to call subshell_exit for - {} group commands executed asynchronously (&). Part of fix for - EXIT trap bug reported by Maarten Billemont - -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 - - 8/6 - --- -lib/readline/histexpand.c - - history_expand_internal: now takes an additional argument saying - whether the history expansion occurs within a quoted string, set to - the open quote character - - history_expand_internal: use new argument instead of checking prev - char and initializing quoted_search_delimiter, pass qc directly to - get_history_event, where it allows a matching quote to terminate a - string defining an event - - history_expand: change single-quote handling code so that if - history_quotes_inhibit_expansion is 0, single quotes are treated - like double quotes - - history_expand: change call to history_expand_internal to pass new - argument of `"' if double-quoted string, `'' if single-quoted string; - this lets history_expand decide what is a quoted string and what - is not - - 8/7 - --- -configure.in - - AC_CANONICAL_BUILD: invoke for later use - -lib/readline/macro.c - - _rl_prev_macro_key: new function, inverse of _rl_next_macro_key: - backs up the index into the current macro by 1 - -lib/readline/rlprivate.h - - _rl_prev_macro_key: extern declaration - - -lib/readline/readline.c - - _rl_dispatch_subseq, _rl_subseq_result: don't call _rl_unget_char - if we're currently reading from a macro; call _rl_prev_macro_key - instead. Fixes bug reported by Clark Wang - - 8/13 - ---- -builtins/evalstring.c - - evalstring(): new function, wrapper around parse_and_execute. - make sure we handle cases where parse_and_execute can call `return' - and short-circuit without cleaning up properly. We call - parse_and_execute_cleanup() then jump to the previous-saved return - location - -builtins/common.h - - extern declaration for evalstring() - -builtins/eval.def - - eval_builtin: make sure we handle `eval " ... return"' in contexts - where `return' is valid by calling evalstring(). Fixes bug with - `eval return' in sourced files reported by Clark Wang - - -trap.c - - run_pending_traps: call evalstring instead of parse_and_execute. - XXX - still needs to handle saving and restoring token state in the - presence of `return'; could use unwind_protects for that - -builtins/mapfile.def - - run_callback: call evalstring instead of parse_and_execute - - 8/15 - ---- -bashline.c - - bash_filename_stat_hook: make sure we don't free local_dirname - before using it to canonicalize any expanded filename. Make sure - it always points to *dirname and only free it if we're replacing - it. - -lib/readline/complete.c - - append_to_match: make sure we call rl_filename_stat_hook with - newly-allocated memory to avoid problems with freeing it twice - - 8/17 - ---- -variables.c,config-top.h - - if ARRAY_EXPORT is defined to 1 when variables.c is compiled, the - code that allows indexed arrays to be exported is enabled and - included - - 8/19 - ---- -shell.c - - call start_debugger from main() only if dollar_vars[1] != 0 (close - enough to a non-interactive shell, since we can be interactive with - -i while running a shell script). Fixes oddity reported by - Techlive Zheng - - 8/20 - ---- -arrayfunc.c - - quote_array_assignment_chars: don't bother quoting if the word has - not been marked as an assignment (W_ASSIGNMENT) - - quote_array_assignment_chars: turn on W_NOGLOB in the word flags - so assignment statements don't undergo globbing. Partial fix for - problems reported by Dan Douglas - - 8/21 - ---- -command.h - - W_NOBRACE: new word flag that means to inhibit brace expansion - -subst.c - - brace_expand_word_list: suppress brace expansion for words with - W_NOBRACE flag - - 8/22 - ---- -builtins/read.def - - read_builtin: don't call dequote_string on what we've read, even if - we saw an escape character, unless (input_string && *input_string). - We may have escaped an IFS whitespace character. Fixes seg fault - reported by - -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 - - 8/23 - ---- -jobs.c - - remove references to first_pid and pid_wrap, since we're not using - them for anything anymore - - 8/24 - ---- -subst.c - - changes for W_NOBRACE everywhere appropriate: so it can be displayed - for debugging, and passed out of expand_word_internal - -doc/{bash.1,bashref.texi} - - small changes to make it clearer that the = and == operators are - equivalent, and will cause pattern matching when used with [[. - From a question from Michal Soltys - -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 - -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - document new show-mode-in-prompt variable, off by default - - 9/3 - --- - -jobs.c - - set_childmax: new function, external mechanism for other parts of - the shell to set js.c_childmax, the number of saved exited child - statuses to remember -jobs.h - - set_childmax: extern declaration - -variables.c - - CHILD_MAX: new special variable, with sv_childmax function to - run when it changes. Setting CHILD_MAX to a value greater than - zero but less than some maximum (currently 8192) sets the number of - exited child statuses to remember. set_childmax (jobs.c) ensures - that the number does not drop below the posix-mandated minimum - (CHILD_MAX) - -doc/{bash.1,bashref.texi} - - CHILD_MAX: document new meaning and action when variable is set - - 9/5 - --- -redir.c - - redir_varassign: call stupidly_hack_special_variables after - assigning fd number to specified variable, so we can use constructs - like {BASH_XTRACEFD}>foo. Suggested by Pierre Gaston - - - 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 - - 9/9 - --- -lib/readline/complete.c - - rl_username_completion_function: protect call to setpwent() with - #ifdef (HAVE_GETPWENT)/#endif. Fixes bug reported by - Gerd Hofmann - -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 - - 9/13 - ---- -configure.ac,config.h.in - - enable-direxpand-default: new configure option, turns the `direxpand' - shell option on by default - -bashline.c - - dircomplete_expand, dircomplete_expand_relpath: initialize to 1 if - DIRCOMPLETE_EXPAND_DEFAULT is defined and non-zero - -doc/bashref.texi - - enable-direxpand-default: document new configure option - - 9/14 - ---- -shell.c - - --protected: make option valid only when wordexp is compiled into - the shell. Fix from Roman Rakus - -configure.ac - - HP NonStop (*-nsk*): compile --without-bash-malloc. Change from - Joachim Schmitz - - 9/16 - ---- -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 - - 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 - - 9/21 - ---- -builtins/help.def - - show_builtin_command_help: break code that displays the short-doc - for each builtin in two columns into a new function: dispcolumn - - wdispcolumn: multibyte-char version of dispcolumn; uses wide - chars and printf "%ls" format. Fixes problem reported by - Nguyá»n Thái Ngá»c Duy - - 9/22 - ---- -execute_cmd.c - - execute_disk_command: before running the command-not-found hook, - call kill_current_pipeline() to make sure we don't add processes - to an existing pipeline or wait for processes erroneously - - 9/23 - ---- -lib/readline/input.c - - rl_input_available_hook: new hook function, called from - _rl_input_available (or _rl_input_queued) to return whether or not - input is available wherever the input source is - -lib/readline/doc/rltech.texi - - rl_input_available_hook: document - - 9/27 - ---- -lib/glob/sm_loop.c: - - GMATCH: after one or more `*', an instance of ?(x) can match zero or - 1 times (unlike ?, which has to match one character). The old code - failed if it didn't match at least once. Fixes `a*?(x)' bug. - - GMATCH: if we hit the end of the search string, but not the end of - the pattern, and the rest of the pattern is something that can - match the NUL at the end of the search string, we should successfully - match. Fixes `a*!(x)' bug reported by - - 10/2 - ---- -command.h - - add c_lock member to coproc structure for future use to tell who is - manipulating it - -execute_cmd.c - - execute_coproc: block SIGCHLD while parent is forking coproc - process and adding pid to sh_coproc struct to avoid race condition - where child is reaped before the pid is assigned and the coproc is - never marked as having died. Fixes race condition identified by - Davide Baldini - - add assignments to c_lock member of struct coproc in various - functions that manipulate it; was used to identify race condition - - coproc_pidchk: don't call coproc_dispose to avoid using malloc and - other functions in a signal handler context - - coproc_dispose: call BLOCK_SIGNAL/UNBLOCK_SIGNAL for SIGCHLD while - manipulating the sh_coproc struct - - 10/6 - ---- -lib/readline/complete.c - - rl_display_match_list: if printing completions horizontally, don't - bother with spacing calculations if limit == 1, which means we are - printing one completion per line no matter what. Fixes bug - reported by David Kaasen - - 10/7 - ---- -builtins/declare.def - - declare_internal: add error checking for nameref attribute and - variable assignments: self-references, attempts to make an array - variable a nameref - -subst.c - - parameter_brace_expand: handle parameter_brace_expand_word returning - &expand_param_fatal or &expand_param_error and return the appropriate - error value - - parameter_brace_expand_word: if a nameref variable's value is not a - valid identifier, return an error - - param_expand: if a nameref variable's value is not a valid identifier, - return an error - -test.c - - unary_operator: add new -R variable, returns true if variable is set - and has the nameref attribute. From ksh93 - -builtins/test.def - - add -R to description of conditional commands for help test - -doc/{bash.1,bashref.texi} - - document new -R unary conditional operator - - 10/13 - ----- -trap.c - - check_signals_and_traps: new function, convenience function for the - rest of the shell to check for pending terminating and interrupt - signals, and to check for and process any pending traps - - any_signals_trapped: new function, returns non-zero if any signals - are trapped and -1 if not - -trap.h - - extern declaration for check_signals_and_traps - -bashline.c - - bashline_reset: make sure we reset the event hook - - bash_event_hook: call check_signals_and_traps instead of just - checking for terminating signals so we can run pending traps and - react to interrupts, and reset the event hook when we're done - - - 10/14 - ----- -trap.c - - trap_handler: if executing in a readline signal handler context, - call bashline_set_event_hook to install bash_event_hook to process - the signal (if bash cares about it) - -sig.c - - sigint_sighandler: call bashline_set_event_hook to set the event - hook if we're executing in a readline signal handler context - -lib/readline/input.c - - rl_getc: call RL_CHECK_SIGNALS if read returns -1/EINTR and the caught - signal is SIGINT or SIGQUIT rather than waiting until the next time - around the loop - - rl_getc: call rl_event_hook after calling RL_CHECK_SIGNALS to allow - an application signal handler to set the event hook in its own - signal handler (e.g., like bash trap_handler or sigint_sighandler) - - -parse.y - - yy_readline_get: don't set interrupt_immediately before we call - readline(). Inspired by report from lanshun zhou - - -input.c - - getc_with_restart: add call to run_pending_traps after call to - CHECK_TERMSIG - -lib/sh/zread.c - - zread: call check_signals_and_traps if read() returns -1/EINTR - instead of just ignoring the EINTR and deferring handling any - signal that generated it - -builtins/mapfile.def - - mapfile: don't set interrupt_immediately before calling zgetline() - (which uses zread internally) - -builtins/read.def - - read_builtin: don't set interrupt_immediately before calling zread - (moved code around so that it was only being set right around calls - to zread to avoid signal handler conflicts). Inspired by report - from lanshun zhou - - edit_line: don't set interrupt_immediately around call to readline() - - include shmbutil.h - - read_builtin: don't call read_mbchar unless is_basic(c) returns - false for the character we just read - - 10/15 - ----- -sig.c - - throw_to_top_level: if interrupt_state is non-zero, make sure that - last_command_exit_value reflects 128+SIGINT if it's not already - greater than 128 - - 10/20 - ----- -builtins/wait.def - - WAIT_RETURN: set wait_signal_received back to 0 for the potential - next call to wait - -quit.h - - CHECK_WAIT_INTR: macro to check whether trap_handler handled a - signal and set wait_signal_received; longjmp to wait_intr_buf in - that case - -jobs.c - - wait_for, waitchld: call CHECK_WAIT_INTR at the same places we call - CHECK_TERMSIG to check for terminating signals - - wait_sigint_handler: don't longjmp out of the wait builtin unless - interrupt_immediately is set; otherwise just SIGRETURN from the - handler - - wait_sigint_handler: if interrupt_immediately not set, but we are - executing in the wait builtin and SIGINT is not trapped, treat it - as a `normally received' SIGINT: restore the signal handler and - send SIGINT to ourselves - - waitchld: when in posix mode and running SIGCHLD traps, don't longjmp - to wait_intr_buf (and let wait be interrupted) if we're running from - a signal handler. Wait for CHECK_WAIT_INTR to do the longjmp. - run_pending_traps will run the SIGCHLD trap later - -nojobs.c - - reap_zombie_children, wait_for_single_pid, wait_for: call - CHECK_WAIT_INTR where we call CHECK_TERMSIG - - wait_sigint_handler: don't longjmp out of the wait builtin unless - interrupt_immediately is set; otherwise just SIGRETURN from the - handler - -trap.c - - trap_handler: make sure wait_signal_received is set if the wait - builtin is executing, and only longjmp if interrupt_immediately is - set. This whole set of fixes was prompted by report from - lanshun zhou - - 10/24 - ----- -lib/glob/glob.c - - glob_filename: only check directory_name for globbing chars if - it's of non-zero length - -lib/sh/strchrnul.c - - new simpler implementation - -subst.c - - command_substitute: call set_shellopts after turning off errexit - in subshells so it's reflected in $SHELLOPTS - - 11/7 - ---- -builtins/evalstring.c - - parse_and_execute: treat ERREXIT case like reader_loop does: set - variable_context to 0 before longjmping back to top_level. Don't - run the unwind-protect context to avoid side effects from popping - function contexts. Part of fix for problem reported by Nikolai - Kondrashov - -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 - ----- -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 - -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/malloc/malloc.c - - block_signals: renamed to _malloc_block_signals, made public - - unblock_signals: renamed to _malloc_unblock_signals, made public - -lib/malloc/imalloc.h - - extern declarations for _malloc_{un,}block_signals - -lib/malloc/table.c - - mregister_alloc, mregister_free: block signals around table - manipulation - - 11/15 - ----- -trap.c - - run_pending_traps: set SIG_INPROGRESS flag around calls to - run_sigchld_handler so other parts of the shell know that the - SIGCHLD trap handler is executing - - run_pending_traps: if we get a situation where we are looking at - running a SIGCHLD trap but the trap string is IMPOSSIBLE_TRAP_HANDLER - and the SIG_INPROGRESS flag is set, just skip it. This is possible - if run_pending_traps is called from a SIGCHLD trap handler run by - run_sigchld_trap - -doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} - - corrected description of the effect of `set history-size 0'. Report - from Vesa-Matti J Kari - -include/stdc.h - - CPP_STRING: new define, replaces __STRING - -lib/malloc/{malloc.c,imalloc.h} - - replace __STRING with CPP_STRING - - 11/16 - ----- -lib/readline/bind.c - - sv_histsize: if argument evaluates to a value < 0, unstifle the - history - - 11/22 - ----- -redir.c - - do_redirection_internal: if we have REDIR_VARASSIGN set in the - redirection flags and we set up `redirector' using fcntl or dup2, - don't add a redirect to make sure it stays open. Let the - script programmer manage the file handle. Fixes bug reported by - Sam Liddicott - - 11/24 - ----- -jobs.c - - wait_for_any_job: new function, waits for an unspecified background - job to exit and returns its exit status. Returns -1 on no background - jobs or no children or other errors. Calls wait_for with new - sentinel value ANY_PID - - wait_for: changes to handle argument of ANY_PID: don't look up or - try to modify the child struct, only go through the wait loop once. - Return -1 if waitpid returns no children - -jobs.h - - ANY_PID: new define - -builtins/wait.def - - new option: -n. Means to wait for the next job and return its exit - status. Returns 127 if there are no background jobs (or no - children). Feature most recently requested by Elliott Forney - - -doc/{bash.1,bashref.texi} - - document new `wait -n' option - -execute_cmd.c - - execute_command_internal: save make_command_string () result in a - temp variable before calling savestring() on it; avoids evaluating - make_command_string() result twice. Fix from John E. Malmberg - - - 11/28 - ----- - -builtins/declare.def - - declare_internal: if an array variable is declared using `declare -a' - or `declare -A', but not assigned a value, set the `invisible' - attribute so the variable does not show up as set. Fix for bug - about variable initialization reported by Tim Friske - -builtins/{mapfile,read}.def - - after calling find_or_make_array_variable, make sure the invisible - flag is turned off, in case the variable was declared previously - using `declare -a' or `declare -A'. Side effect of above change to - declare_internal - -subst.c - - shell_expand_word_list: handle the W_ASSNGLOBAL flag and put -g into - the list of options passed to make_internal_declare as appropriate. - Fix for bug reported by Tim Friske - - 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 - - 12/2 - ---- -subst.c - - process_substitute: turn off the `expanding_redir' flag, which - controls whether or not variables.c:find_variable_internal uses the - temporary environment to find variables. We want to use the - temp environment, since we don't have to worry about order of - evaluation in a subshell. Fixes bug reported by Andrey Borzenkov - - - 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 - - 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 - -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 - - 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 - - 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 - - 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 - - 12/15 - ----- -lib/readline/display.c - - displaying_prompt_first_line: new variable, indicates whether or - not the first line of output is displaying the prompt. Always true - in normal mode, sometimes false in horizontal scrolling mode - - rl_redisplay: set displaying_prompt_first_line to true unless we - are in horizontal mode; set to false in horizontal mode if the left - margin of the displayed line is greater than the end of the prompt - string - - rl_redisplay: when in horizontal scroll mode, don't adjust - _rl_last_c_pos by the wrap offset unless the line is displaying - a prompt containing invisible chars - - update line: don't adjust _rl_last_c_pos by the wrap offset unless - the line is displaying a prompt containing invisible chars - - update_line: if shrinking the line by reducing the number of - displayed characters, but we have already moved the cursor to the - beginning of the line where the first difference starts, don't - try to delete characters - -builtins/read.def - - unbuffered_read: set to 2 if invoked as `read -N' - - if unbuffered_read is set to 2, compute the number of chars we - need to read and read that many with zreadn. Posix mode still - uses zreadintr. Code from Mike Frysinger - -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 - -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 - ----- -include/posixjmp.h - - setjmp_nosigs: new define, call setjmp in such a way that it will - not manipulate the signal mask - -{expr,test,trap}.c - - setjmp_nosigs: call instead of setjmp; don't need to manipulate - signal mask - -builtins/read.def - - read_builtin: setjmp_nosigs: call instead of setjmp; don't need - to manipulate signal mask - -builtins/evalstring.c: - - parse_and_execute: setjmp_nosigs: call instead of setjmp; don't need - to manipulate signal mask - - parse_string: setjmp_nosigs: call instead of setjmp; don't need - to manipulate signal mask - - parse_and_execute: save and restore the signal mask if we get a - longjmp that doesn't cause us to return or exit (case DISCARD) - - 12/24 - ----- -general.c - - bash_tilde_expand: only set interrupt_immediately if there are no - signals trapped; we want to jump to top level if interrupted but - not run any trap commands - - 12/25 - ----- -jobs.c - - run_sigchld_trap: no longer set interrupt_immediately before calling - parse_and_execute, even if this is no longer run in a signal handler - context - -input.c - - getc_with_restart: add call to QUIT instead of CHECK_TERMSIG - -parse.y - - yy_stream_get: now that getc_with_restart calls QUIT, don't need to - set interrupt_immediately (already had call to run_pending_traps) - -execute_cmd.c - - execute_subshell_builtin_or_function,execute_function,execute_in_subshell: - setjmp_nosigs: call instead of setjmp when saving return_catch; don't - need to manipulate signal mask - - execute_subshell_builtin_or_function,execute_in_subshell: - setjmp_nosigs: call instead of setjmp where appropriate when saving - top_level; don't need to manipulate signal mask if we're going to - exit right away - -subst.c - - command_substitute: setjmp_nosigs: call instead of setjmp when saving - return_catch; don't need to manipulate signal mask - - command_substitute: setjmp_nosigs: call instead of setjmp where - appropriate when saving top_level; don't need to manipulate signal - mask if we're going to exit right away - -trap.c - - run_exit_trap: setjmp_nosigs: call instead of setjmp when saving - return_catch; don't need to manipulate signal mask - - run_exit_trap: setjmp_nosigs: call instead of setjmp where - appropriate when saving top_level; don't need to manipulate signal - mask if we're going to exit right away - - _run_trap_internal: setjmp_nosigs: call instead of setjmp when saving - return_catch; don't need to manipulate signal mask - -builtins/evalfile.c - - _evalfile: setjmp_nosigs: call instead of setjmp when saving - return_catch; don't need to manipulate signal mask - -builtins/evalstring.c - - evalstring: setjmp_nosigs: call instead of setjmp when saving - return_catch; don't need to manipulate signal mask - -shell.c - - main: setjmp_nosigs: call instead of setjmp where appropriate when - saving top_level; don't need to manipulate signal mask if we're - going to exit right away - - run_one_command: setjmp_nosigs: call instead of setjmp where - appropriate when saving top_level; don't need to manipulate signal - mask if we're going to exit right away - - run_wordexp: setjmp_nosigs: call instead of setjmp where - appropriate when saving top_level; don't need to manipulate signal - mask if we're going to exit right away - -eval.c - - reader_loop: save and restore the signal mask if we get a longjmp - that doesn't cause us to return or exit (case DISCARD) - - 12/26 - ----- -parse.y - - shell_input_line_{index,size,len}: now of type size_t; in some cases - the unsigned property makes a difference - - STRING_SAVER: saved_line_{size,index} now of type size_t - - shell_getc: don't allow shell_input_line to grow larger than SIZE_MAX; - lines longer than that are truncated until read sees a newline; - addresses theoretical buffer overflow described by Paul Eggert - - - set_line_mbstate: size_t changes like shell_getc - - shell_getc: if shell_input_line is larger than 32K, free it and - start over to avoid large memory allocations sticking around - -variables.c - - bind_global_variable: new function, binds value to a variable in - the global shell_variables table - -variables.h - - bind_global_variable: new extern declaration - -builtins/declare.def - - declare_internal: if -g given with name=value, but variable is not - found in the global variable table, make sure to call - bind_global_variable so the variable is created and modified at - global scope. Fixes a bug where declare -g x=y could modify `x' - at a previous function scope - -command.h - - W_ASSIGNARRAY: new word flag, compound indexed array assignment - -subst.h - - ASS_MKGLOBAL: new assignment flag, forcing global assignment even in - a function context, used by declare -g - -execute_cmd.c - - fix_assignment_words: set W_ASSIGNARRAY flag if -a option given to - declaration builtin - -subst.c - - do_assignment_internal: explicitly handle case where we are - executing in a function and we want to create a global array or - assoc variable - - shell_expand_word_list: call make_internal_declare if -a option - given to declaration builtin (W_ASSIGNARRAY); handle -g option with - it (W_ASSNGLOBAL). Fixes inconsistency noticed by Vicente Couce - Diaz , where declare -ag foo=(bar) could modify - array variable foo at previous function scope, not global scope - - 12/27 - ----- -bashline.c - - Minix needs the third argument to tputs to be a void funtion taking - an int argument, not an int-returning function. Fix from - John E. Malmberg as part of VMS bash port - - 12/29 - ----- -configure.ac,version.c,patchlevel.h - - bash-4.3-devel: new version, new shell compatibility level (43) - -subst.c - - parameter_brace_patsub: put the bash-4.2 code back in from the - change of 3/3 that runs the replacement string through quote - removal, make it dependent on shell_compatibility_level <= 42 - -builtins/shopt.def - - compat42: new shopt option - - set_compatibility_level: change logic to set and unset various - compat variables and shell_compatibility_level - -COMPAT - - new documentation for bash-4.3 compatibility changes - -doc/{bash.1,bashref.texi} - - compat42: document new shopt option - -builtins/shopt.def - - set_compatibility_opts: new function, sets the various shopt - compat variables based on the value of shell_compatibility_level - -builtins/common.h - - set_compatibility_opts: new extern declaration - -variables.c - - BASH_COMPAT: new special variable; sets the shell compatibility - level. Accepts values in decimal (4.2) or integer (42) form; - Unsetting variable, setting it to empty string, or setting it to - out-of-range value sets the shell's compatibility level to the - default for the current version. Valid values are 3.1/31 through - the current version - - sv_shcompat: new function implementing logic for BASH_COMPAT - -variables.h - - sv_shcompat: new extern declaration - -doc/{bash.1,bashref.texi} - - BASH_COMPAT: description of new variable - -lib/readline/complete.c - - _rl_colored_stats: default back to 0 for 4.3 release branch - - 1/5/2013 - -------- -quit.h - - remove spurious call to itrace in CHECK_WAIT_INTR - -bashline.c - - bash_event_hook: if we're going to jump to top_level, make sure we - clean up after readline() by calling rl_cleanup_after_signal(). - Fixes bug reported against devel branch by Raphaël Droz - - - bash_event_hook: reset the event hook before checking for signals - or traps in case we longjmp - -doc/{bash.1,bashref.texi} - - small additions to the set -e section to make it more clear that - contexts where -e is ignored extend to compound commands as well - as shell functions - -lib/readline/readline.h - - rl_signal_event_hook: new extern declaration - -lib/readline/input.c - - rl_signal_event_hook: new variable, hook function to call when a - function (currently just read(2)) is interrupted by a signal and - not restarted - - rl_getc: call rl_signal_event_hook instead of rl_event_hook - -lib/readline/doc/rltech.texi - - rl_signal_event_hook: document new function - -bashline.c - - changes to set rl_signal_event_hook instead of rl_event_hook - -lib/readline/readline.h - - change readline version numbers to 6.3 - - 1/6 - --- -doc/{bash.1,bashref.texi} - - a couple of changes to the descriptions of the ERR trap and its - effects based on a message from Rob Nagler - - 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 - -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 - - - 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 - - - 1/13 - ---- -redir.c - - redirection_error: before expanding the redirection word (if - expandable_redirection_filename returns true), disable command - substitution during expansion. Fixes bug reported by Dan Douglas - - -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 - - 1/15 - ---- -builtins/cd.def - - cd_builtin: make sure call to internal_getopt handles -e option. - Fixes bug reported by - - 1/17 - ---- -subst.c - - expand_word_list_internal: make sure tempenv_assign_error is - initialized to 0 - -execute_cmd.c - - execute_simple_command: make sure tempenv_assign_error is reset to 0 - after it's tested to see if an error should force the shell to exit. - Fixes problem where a the failure of a tempenv assignment preceding - a non-special builtin `sticks' and causes the next special builtin - to exit the shell. From a discussion on bug-bash started by - douxin - - 1/20 - ---- -subst.c - - parameter_brace_expand_rhs: call stupidly_hack_special_variables - after assigning with ${param[:]=word} even if IFS is changing. - Suggested by Dan Douglas [TENTATIVE, needs work - on IFS side effects] - -command.h - - W_GLOBEXP (which was unused) is now W_SPLITSPACE (which isn't used - yet) - -{execute_cmd,subst,variables}.c - - removed all code that mentioned W_GLOBEXP - - removed mention of gnu_argv_flags and code that set it - - 1/22 - ---- -subst.c - - param_expand: set W_SPLITSPACE if we expand (unquoted) $* and - IFS is unset or null so we can be sure to split this on spaces - no matter what happens with IFS later - - expand_word_internal: note that param_expand returns W_SPLITSPACE - in the returned word flags and keep track of that state with - `split_on_spaces' - - 1/23 - ---- -subst.c - - expand_word_internal: if split_on_spaces is non-zero, make sure - we split `istring' on spaces and return the resultant word. The - previous expansions should have quoted spaces in the positional - parameters where necessary. Suggested by Dan Douglas - - -execute_cmd.c - - execute_command_internal: make sure any subshell forked to run a - group command or user subshell at the end of a pipeline runs any - EXIT trap it sets. Fixes debian bash bug 698411 - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698411 - -subst.c - - shell_expand_word_list: fix code that creates args for and calls - make_internal_declare to avoid calling it twice (missing `else' - in 12/26 change) - - do_assignment_internal: fix code from 12/26 change to fix problem - where an existing assoc variable could be converted to an array - without checking `mkassoc' - - 1/24 - ---- -builtins/evalfile.c - - _evalfile: add missing `close (fd)' calls before returning to - avoid fd leaks. Bug and fix from Roman Rakus - - 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 - - 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 - - - 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 - - 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 - - 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 - -builtins/setattr.def - - set_var_attribute: check whether bind_variable (called when the - variable whose attributes are being modified is found in the temp - environment) just modified a read-only global variable, and don't - bother marking the temporary variable for propagation if so. The - propagation is superfluous and will result in a strange error - message - - 2/2 - --- -variables.c - - initialize_shell_variables: don't try to import function definitions - with invalid names from the environment if already in posix mode, - but create them as (invisible) exported variables so they pass - through the environment. Print an error message so user knows - what's wrong. Fixes bug reported by Tomas Trnka - - 2/9 - --- - -builtins/read.def - - sigalrm_seen, alrmbuf: now global so the rest of the shell (trap.c) - can use them - - sigalrm: just sets flag, no longer longjmps to alrmbuf; problem was - longjmp without manipulating signal mask, leaving SIGALRM blocked - -quit.h - - move CHECK_ALRM macro here from builtins/read.def so trap.c: - check_signals() can call it - -trap.c - - check_signals: add call to CHECK_ALRM before QUIT - - check_signals_and_traps: call check_signals() instead of including - CHECK_ALRM and QUIT inline. Integrating check for read builtin's - SIGALRM (where zread call to check_signals_and_traps can see it) - fixes problem reported by Mike Frysinger - - 2/12 - ---- -lib/glob/xmbsrtowcs.c - - xdupmbstowcs2: fixed but where end of string was not handled - correctly, causing loop to go past end of string in a bunch of cases. - Fixes bug reported by "Dashing" - - - 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 - - 2/14 - ---- -configure.ac - - add check for sig_atomic_t; already a placeholder for it in - config.h.in - - 2/15 - ---- -subst.c - - do_compound_assignment: don't call assign_compound_array_list with - a NULL variable in case make_local_xxx_variable returns NULL - (it will if you try to shadow a readonly or noassign variable). - Fixes bug reported by Richard Tollerton - - 2/16 - ---- -variables.c - - make_local_variable: print error messager if an attempt is made to - create a local variable shadowing a `noassign' variable. Previously - we just silently refused to do it - -trap.[ch] - - get_original_signal: now global so rest of the shell can use it - -sig.c - - initialize_shell_signals: install a signal handler for SIGTERM - that does nothing except set a sigterm_received flag instead of - ignoring it with SIG_IGN, as long as SIGTERM is not ignored when - the shell is started. Use get_original_signal early to get the - original handler, since we will do that later anyway - - set_signal_handler: if installing sigterm_sighandler as the SIGTERM - handler, make sure to add SA_RESTART flag to make it as close to - SIG_IGN as possible - -sig.h - - sigterm_sighandler: new extern declaration - -quit.h - - RESET_SIGTERM: set sigterm_receved to 0 - - CHECK_SIGTERM: check sigterm_received; if it's non-zero, treat it - as a fatal signal and call termsig_handler to exit the shell - -jobs.c - - make_child: call RESET_SIGTERM just before fork() so we can detect - if the child process received a SIGTERM before it's able to change - the signal handler back to what it was when the shell started - (presumably SIG_DFL). Only has effect if the shell installed - sigterm_sighandler for SIGTERM, interactive shells that were not - started with SIG_IGN as the SIGTERM handler - - make_child: call RESET_SIGTERM in the parent after fork() so the - rest of the shell won't react to it - -execute_cmd.c - - execute_simple_command: call CHECK_SIGTERM after make_child in child - to catch SIGTERM received after fork() and before restoring old - signal handlers - - execute_disk_command: call CHECK_SIGTERM after make_child in child - process after restoring old signal handlers and again just before - calling shell_execve. Fixes race condition observed by - Padraig Brady when testing with his `timeout' - program - -lib/readline/display.c - - open_some_spaces: new function, subset of insert_some_chars that just - opens up a specified number of spaces to be overwritten - - insert_some_spaces: now just calls to open_some_spaces followed by - _rl_output_some_chars - - update_line: use col_temp instead of recalculating it using - _rl_col_width in the case where we use more columns with fewer bytes - - update_line: use open_some_spaces and then output the right number - of chars instead of trying to print new characters then overwrite - existing characters in two separate calls. This includes removing - some dodgy code and making things simpler. Fix from Egmont - Koblinger - - use new variable `bytes_to_insert' instead of overloading temp in - some code blocks (nls - nfd, bytes that comprise the characters - different in the new line from the old) - - 2/18 - ---- -redir.c - - do_redirection_internal: add undoable redirection for the implicit - close performed by the <&n- and >&n- redirections. Fixes bug - reported by Stephane Chazelas - - 2/19 - ---- -sig.c - - termsig_handler: an interactive shell killed by SIGHUP and keeping - command history will try to save the shell history before exiting. - This is an attempt to preserve the save-history-when-the-terminal- - window-is-closed behavior - - 2/21 - ---- -braces.c - - brace_expand: if a sequence expansion fails (e.g. because the - integers overflow), treat that expansion as a simple string, including - the braces, and try to process any remainder of the string. The - remainder may include brace expansions. Derived from SuSE bug - 804551 example (https://bugzilla.novell.com/show_bug.cgi?id=804551) - - 2/23 - ---- -{quit,sig}.h,sig.c - - sigterm_received declaration now in sig.h; type is sig_atomic_t - - sigwinch_received type now sig_atomic_t - - sig.h includes bashtypes.h and if SIG_DFL not defined - (same logic as trap.h) to pick up sig_atomic_t - -unwind_prot.c - - include sig.h before quit.h (reverse order) - - 2/27 - ---- -builtins/shopt.def - - reset_shopt_options: make sure check_window_size is reset to the - default from config.h, not unconditionally to 0 - -jobs.[ch] - - last_made_pid, last_asynchronous_pid: now volatile. Change from SuSE - -jobs.c - - wait_for: if we're using sigaction to install a handler for SIGCHLD, - make sure we specify SA_RESTART - -lib/{tilde,readline}/shell.c - - get_home_dir: instead of looking in the password file every time, - look once and cache the result - -sig.[ch] - - sigwinch_received, sigterm_received: now `volatile' qualified - -sig.c,quit.h - - interrupt_state,terminating_signal: now sig_atomic_t - - 3/1 - --- -MANIFEST,examples/* - - removed around 120 files without FSF copyrights; requested by - Karl Berry in early January - - 3/2 - --- -lib/malloc/malloc.c - - morecore: only check whether SIGCHLD is trapped if SIGCHLD is defined - -doc/bashref.texi - - Fixed most of the examples in the GNU Parallel section to use better - shell idioms following complaints on bug-bash; added a couple of - examples and smoothed out the text - -quit.h - - include "sig.h" for sig_atomic_t - -lib/readline/display.c - - update_line: when inserting one or more characters at the end of - the display line in a non-multibyte environment, just write from the - first difference to the end of the line and return. We don't have - to adjust _rl_last_c_pos. This is needed to adjust from the old - two-part copy to a single call to _rl_output_some_chars (change of - 2/16) - - 3/4 - --- -Makefile.in,doc/Makefile.in - - PACKAGE_TARNAME, docdir: new variables substituted by autoconf - - OTHER_DOCS,OTHER_INSTALLED_DOCS: new variables with auxiliary - documentation files to be installed into $(docdir) - - install: add new rule to install $(OTHER_DOCS) - - uninstall: add new rule to uninstall $(docdir)/$(OTHER_INSTALLED_DOCS) - -doc/bash.1 - - add URL to `POSIX' file in `SEE ALSO' section; put pointer to that - section in --posix and set -o posix descriptions - -examples/ - - removed around 110 examples at the request of the FSF due to copyright - issues - - 3/5 - --- -builtins/setattr.def - - readonly: modified help text slightly to make it clearer that - functions aren't changed or displayed unless the -f option is given. - Report from - - 3/9 - --- -include/typemax.h - - SIZE_MAX: define to 65535 (Posix minimum maximum) if not defined - -parse.y - - include "typemax.h" for possible SIZE_MAX definition, make sure we - include it after shell.h - -{braces,expr}.c - - include "typemax.h" for possible INTMAX_MIN and INTMAX_MAX definitions - - 3/10 - ---- -bashline.c - - bash_default_completion: make sure completion type of `!' (same as - TAB but with show-all-if-ambiguous set) and glob-word-completion - sets rl_filename_completion_desired to 0 so extra backslashes don't - get inserted by `quoting' the completion. We can't kill all the - matches because show-all-if-ambiguous needs them. Bug report from - Marcel (Felix) Giannelia - -[bash-4.3-alpha frozen] - - 3/14 - ---- -general.c - - trim_pathname: use memmove instead of memcpy since the source and - destination pathnames may overlap. Report and fix from Matthew - Riley - - 3/18 - ---- -configure.ac - - socklen_t is defined as `unsigned int' if configure can't find it - - 3/20 - ---- -lib/readline/complete.c - - S_ISVTX: since it's not defined on all platforms (Minix), make sure - its use is protected with #ifdef - - 3/21 - ---- -doc/{bash.1,bashref.texi} - - Added mention of ${!name[@]} and ${!name[*]} expansions to get all - indices of an array. Suggested by Jonathan Leffler - - - 3/24 - ---- -subst.h - - SD_IGNOREQUOTE: new define for skip_to_delim; if set, means that - single quotes (for now) will be treated as ordinary characters - -subst.c - - skip_to_delim: handle SD_IGNOREQUOTE. no callers use it for now - - 3/25 - ---- -support/config.{guess,sub} - - updated to versions from autoconf-2.69 - - 3/31 - ---- -lib/sh/shquote.c - - sh_single_quote: short-circuit quoting a single "'" instead of - creating a long string with empty single-quoted strings - -parser.h - - DOLBRACE_QUOTE2: new define, like DOLBRACE_QUOTE, but need to single- - quote results of $'...' expansion because quote removal will be - done later. Right now this is only done for ${word/pat/rep} - -parse.y - - parse_matched_pair: set state to DOLBRACE_QUOTE2 for pattern - substitution word expansion so we don't treat single quote specially - in the pattern or replacement string - - parse_matched_pair: if we're parsing a dollar-brace word expansion - (${...}) and we're not treating single quote specially within - double quotes, single-quote the translation of $'...' ansi-c - escaped strings. Original report and fix from Eduardo A. - Bustamante López - -subst.c - - extract_dollar_brace_string: ${word/pat/rep} scanning now sets the - DOLBRACE_QUOTE2 flag instead of DOLBRACE_QUOTE so we don't treat - single quotes specially within a double-quoted string - -execute_cmd.c - - fix_assignment_words: skip over assignment statements preceding a - command word before trying to figure out whether or not assignment - statements following a possible declaration command should be - treated specially. Fixes bug reported by Dan Douglas - - - 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 - - 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 - -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 - -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/13 - ---- -subst.c - - process_substitute: run the EXIT trap before exiting, as other - shells seem to. Fixes problem pointed out by Dan Douglas - - -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 - ---- -lib/readline/complete.c - - rl_completion_matches: make sure xrealloc returns something non-null - (can happen when interrupted by a signal) before trying to add - matches to match_list - -subst.c - - array_remove_pattern: return NULL right away if array_variable_part - returns an invisible variable - - array_length_reference: handle array_variable_part returning an - invisible variable - - get_var_and_type: handle array_variable_part returning an invisible - variable - - 4/15 - ---- -execute_cmd.c - - execute_command_internal: make sure to run the EXIT trap for group - commands anywhere in pipelines, not just at the end. From a point - raised by Andreas Schwab - -variables.c - - bind_int_variable: make sure invisible flag is unset. Fixes problems - like "declare -ai a; : $(( a[4]=4 ));" - -arrayfunc.c - - array_variable_part: return variable even if invisible flag set, - callers must handle invisible vars - - 4/18 - ---- -builtins/set.def - - unset_builtin: if -n flag given, call unset_nameref instead of - unset_variable - -variables.c - - find_variable_nameref: print warning message if nameref circular - reference detected, return NULL and let caller deal with it - -builtins/declare.def - - declare_builtin: only disallow global references at this point if - we are at the global scope - - 5/16 - ---- -configure.ac - - update release status to beta - - 5/23 - ---- -trap.c - - run_pending_traps: save and restore pipeline around calls to - evalstring() in case we get a trap while running a trap. Have to - figure out the recursive running traps issue elsewhere. Fixes - bug reported by Roman Rakus - - run_pending_traps: make sure to set running_trap to the appropriate - signal value when running a trap command - - run_pending_traps: short-circuit immediately if running_trap set - when invoked. Could change this later to only skip if it would - run the same trap as currently being run (running_trap == sig + 1) - -configure.ac - - add warning if bison not found - -lib/readline/doc/rltech.texi - - new section with an example program illustrating the callback - interface. Suggested by Peng Yu - -examples/loadables/Makefile.in - - remove references to `cut' and `getconf', which were removed in - early March - - 5/28 - ---- -lib/sh/pathphys.c - - sh_realpath: correct inverted two arguments to call to sh_makepath. - Report and fix from Julien Thomas - - 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 - - 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/readline/signals.c - - _rl_signal_handler: call any defined signal hook after calling - rl_resize_terminal when handling a SIGWINCH. We already have called - the original SIGWINCH handler but will not be resending the signal - to ourselves - - 6/27 - ---- -lib/readline/doc/history.3, doc/bash.1 - - fix description of the `$' modifier to note that it expands to the - last *word*, which is not always the last argument. Report from - ariyetz@gmail.com via gnu.org RT - - 6/29 - ---- -lib/glob/smatch.c - - glob_asciiranges: initialize to value of GLOBASCII_DEFAULT instead - of 0 (0 if not defined) - -configure.ac,config.h.in - - --enable-glob-asciiranges-default: new option, controls the value of - GLOBASCII_DEFAULT; use it to turn globasciiranges shopt option on - by default - -doc/bashref.texi - - document new --enable-glob-asciiranges-default configure option - -variables.c - - assign_in_env: implement += value appending semantics for assignments - preceding command names - - 7/4 - --- -expr.c - - set lasttok = NUM in all of the functions that result in a number, - even if it's a boolean, to avoid errors with constructs like - 1 * x = 1, which should be an asignment error. Fixes problem - pointed out by Dan Douglas - -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 - - 7/6 - --- -lib/sh/casemod.c - - sh_modcase: make sure argument passed to is_basic is <= UCHAR_MAX, - since cval can convert something to a wchar_t greater than UCHAR_MAX. - Fixes bug reported by Tomasz Tomasik - - 7/8 - --- -lib/readline/history.c - - add_history_time: if history_length == 0, referencing history_length - - 1 will result in an array bounds error, so make history_length be - at least 1 before going on. Fixes bug reported by Geng Sheng Liu - - -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 - - 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 - - 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 + 11/12 ----- -subst.c - - expand_string_for_rhs: when expanding in this context (rhs of a word - expansion or pattern removal), we don't perform word splitting, so - we don't want to split $* if IFS is empty. Fixes bug reported by - Stephane Chazelas +configure.ac + - changes to make --enable-profiling work on Linux (-pg, no static link, + no -static in LDFLAGS) - 10/23 - ----- -subst.c - - param_expand: when expanding $* in a pattern context where the - expansion is quoted (Q_PATQUOTE), don't quote the expansion -- - the outer quotes don't make the characters in the expansion of - $* special. Posix interp 221. Reported by Stephane Chazelas - +Makefile.in + - changes to make --enable-profiling work on Linux (take + ${PROFILE_FLAGS} out of BASE_CCFLAGS, add to CCFLAGS instead; add + BASE_LDFLAGS define that doesn't include -pg or -static; use + BASE_LDFLAGS in LDFLAGS; move ${PROFILE_FLAGS} and ${STATIC_LD} to + LDFLAGS) + +tests/run-gprof + - changes to make profiling test suite with gprof work on Linux (set + GMON_OUT_PREFIX to handle multiple profiled processes per test; + change default filename to gmon.out from bash.gmon; look for + gprof output files in ${TMPDIR} instead of /tmp; handle multiple + profiling files starting with $GMON_OUT_PREFIX) - 10/28 +locale.c + - locale_isutf8: use locale_charset() if it's available and nl_langinfo + isn't + - locale_isutf8: add code to parse a locale specification and determine + whether the encoding is UTF-8 (or utf8) in the absence of + nl_langinfo and locale_charset + - set_default_locale: make sure to set locale_utf8locale early on + - locale_utf8locale: set via call to locale_isutf8 wherever LANG, + LC_ALL, or LC_CTYPE is set + + 11/13 ----- -lib/readline/bind.c - - enable-bracketed-paste: new bindable variable, enables support for - a terminal's `bracketed paste mode'. Code contributed by - Daniel Colascione +lib/readline/display.c + - rl_redisplay: handle report of potential integer overflow in + horizontal display mode from Mateusz Lenik -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - enable-bracketed-paste: add description +lib/sh/mbschr.c + - mbschr: if in a UTF-8 locale (locale_utf8locale) and we are looking + for an ASCII character, use (essentially) strchr as a shortcut -lib/readline/{readline.c,rlprivate.h} - - _rl_enable_bracketed_paste: declarations - - #defines for use by bracketed paste implementation +lib/sh/shmbchar.c + - utf8_{mbstrlen,mblen,mbsmbchar,mbsnlen}: UTF-8-specific replacement + functions (should also be able to use utf8_mblen in subst.c: + string_extract_verbatim) + - mbsmbchar: if locale_utf8locale is true, call utf8_mbsmbchar + - mbsmbchar: in UTF-8 locale, use utf8_mblen instead of mbrlen (not + used if earlier shortcut taken) -lib/readline/rltty.c - - rl_prep_terminal: send BRACK_PASTE_INIT string to terminal if we - are supposed to enable bracketed-paste mode; change terminal_prepped - to indicate we sent that string and need to clean up - - rl_deprep_terminal: if terminal_prepped indicates we sent the - bracketed-paste mode init string to the terminal, send the cleanup - string before restoring the terminal modes +lib/sh/unicode.c + - u32cconv: don't use nl_langinfo early to call u32toutf8() + - u32cconv: use locale_utf8locale to set utf8locale + - u32cconv: when initializing (u32init == 0), use locale_charset, then + nl_langinfo, then stub_charset to determine the charset + - u32cconv: even if we don't have iconv, if locale_utf8locale is non- + zero, return u32toutf8 -lib/readline/kill.c - - rl_bracketed_paste_begin: function to read bracketed paste until - BRACK_PASTE_SUFF; discard the suffix, and insert the rest of the - paste as a single (undoable) object. Bound to BRACK_PASTE_PREF + 11/15 + ----- +lib/readline/nls.c + - _rl_init_locale: new function, split off code that determines current + locale from _rl_init_eightbit, use it to set _rl_utf8locale -lib/readline/funmap.c - - bracketed-paste-begin: new bindable command, executes - rl_bracketed_paste_begin +lib/readiline/rlprivate.h + - _rl_init_locale: new extern declaration lib/readline/readline.c - - bind_bracketed_paste_prefix: new function, sets up to recognize - the bracketed paste prefix sequence (BRACK_PASTE_PREF) in emacs - keymap and vi insertion keymap - - readline_initialize_everything: call bind_bracketed_paste_prefix + - rl_initialize: if not initializing everything the first time, call + _rl_init_locale to check current locale and set _rl_utf8locale - 11/1 - ---- -builtins/ulimit.def - - RLIMIT_POSIXLOCKS: now synonym for RLIMIT_LOCKS - - -k: new option: RLIMIT_KQUEUES, max kqueues allocated for this - process - - -P: new option: RLIMIT_NPTS, max number of pseudoterminals available - to this process - -doc/{bash.1,bashref.texi} - - document `ulimit -k' option - - document `ulimit -P' option +lib/readline/text.c + - _rl_insert_char: optimize cases where we are inserting a single-byte + character in a locale with multibyte characters + - _rl_insert_char: check whether character is single byte if we know + we are in a UTF-8 locale, optimize single-byte case to avoid calls + to mbrtowc and memmove/memcpy + +lib/readline/mbutil.c + - _rl_char_value: if we are in a UTF-8 locale (_rl_utf8locale) and the + current character does not have the eighth bit set ((c & 0x80) == 0), + return that char without bothering to call mbrtowc + - _rl_adjust_point: don't bother calling mbrlen if we are in a UTF-8 + locale and the current character is not a multibyte character + - _rl_find_next_mbchar_internal: if we are in a UTF-8 locale, use that + to avoid calls to mbrtowc -parse.y - - `timespec list_terminator' production: if the list terminator is `;' - set last_read_token to `;' to allow things like `time ; command' to - time null commands and not throw a syntax error. Patch from - Piotr Grzybowski - - `BANG list_terminator' production: do the same thing +lib/readline/display.c + - _rl_col_width: if in a UTF-8 locale, take advantage of that to avoid + calls to mbrlen and mbrtowc + - rl_redisplay: if in a UTF-8 locale, take advantage of that to avoid + calls to mbrtowc -variables.c - - sv_optind: use find_shell_variable and get_variable_value so we can - have the variable's context in the case we need to do something - when we are restoring a previous variable context's value + 11/17 + ----- +lib/readline/histlib.h + - PATTERN_SEARCH: new flag for history search interfaces, means to + search for a pattern as Posix specifies -builtins/getopt.h - - sh_getopt_state_t: struct to save sh_getopt's internal state so we - can restore it around function calls in the event that we have a - local copy of OPTIND +lib/readline/histsearch.c + - history_search_internal: now takes a `flags' argument instead of just + an `anchored' argument to accommodate PATTERN_SEARCH + - _hs_history_patsearch: new internal interface to use when flags + specify PATTERN_SEARCH -builtins/getopt.[ch] - - sh_getopt_{save,restore}_istate: new functions to save and restore - getopt's internal state - - sh_getopt_{alloc,dispose}_istate: new functions to allocate and - deallocate sh_getopt_istate_t objects +lib/readline/rlprivate.h + - SF_PATTERN: new flag for non-incremental search contexts, means to + treat search string as a pattern (maps to PATTERN_SEARCH) -execute_cmd.c - - maybe_restore_getopt_state: restore sh_getopt state after executing - function body iff the funtion declared a local copy of OPTIND - - execute_function: save sh_getopt state before executing function body - - execute_function: note in getopt_state->flags whether or not the - function declared a local copy of OPTIND; used by - maybe_restore_getopt_state - - execute_function: maybe restore sh_getopt state before returning via - call to maybe_restore_getopt_state. Fixes bugs with getopts and - state between calls reported in 2011 by Bernd Eggink - and in 2014 by Oyvind Hvidsten - +lib/readline/search.c + - noninc_dosearch: takes an additional `flags' argument for SF_PATTERN + - noninc_search_from_pos: takes an additional `flags' argument for + SF_PATTERN + - noninc_dosearch: pass flags argument through to noninc_search_from_pos + - _rl_nsearch_init: if we are in vi command mode, and `pchar' (key used + to invoke the search) is `?' or `/', add SF_PATTERN to the flags + to conform to Posix spec for vi-mode editing + - _rl_nsearch_dosearch: if cxt->sflags indicates that we should do a + pattern search, pass SF_PATTERN to noninc_search_from_pos + - rl_noninc_forward_search_again: if in vi command mode and key == `N', + make sure flags arg passed to noninc_dosearch includes SF_PATTERN + - rl_noninc_reverse_search_again: if in vi command mode and key == `n', + make sure flags arg passed to noninc_dosearch includes SF_PATTERN + - rl_history_search_internal: pass extra flags arg to noninc_search_from_pos -configure.ac - - enable-function-import: new option, controls whether function imports - are included. Enabled by default. Patch from David Galos - + 11/18 + ----- +lib/readline/search.c + - noninc_search_from_pos: takes a new argument, a pointer to int where + it stores the offset of the match in the history line (if non-NULL), + modified callers + - rl_history_search_internal: pass newcol pointer to + noninc_search_from_pos to avoid having to recompute the match offset + in the matching history entry config.h.in - - FUNCTION_IMPORT: define controlled by enable-function-import above - -variables.c - - initialize_shell_variables: include code to import function - definitions from the environment if FUNCTION_IMPORT is defined - -doc/bashref.texi - - --enable_function-import: document new configuration option - - 11/5 - ---- -lib/readline/history.c - - history_lines_read_from_file: new variable, set by read_history and - read_history_range to the actual number of lines read from the - history file. The value is valid immediately after a call to one - of those functions - - history_lines_written_to_file: new variable, set by write_history, - history_do_write, and history_truncate_file to the actual number of - lines written to the history file. The value is valid immediately - after a call to one of those functions - -variables.c - - sv_histsize: set history_lines_in_file after history_truncate_file() - only if hmax < history_lines_in_file (lines we've already read); a - cosmetic change only - -bashhist.c - - load_history: set history_lines_in_file after read_history() from - history_lines_read_from_file, since read_history reads all of the - lines from the history file even if it's more than $HISTSIZE - - maybe_save_shell_history: after calling write_history(), set - history_lines_in_file to history_lines_written_to_file, since we - can assume that we read everyhing we just wrote - -builtins/history.def - - history_builtin: after calling read_history (history -r), set the - new value of history_lines_in_file, for the same reason as above - - history_builtin: after calling read_history_range (history -n), set - history_lines_in_file from history_lines_read_from_file - - 11/6 - ---- -lib/readline/histfile.c - - history_truncate_file: since we move the old file to a backup copy - before truncating, make sure the new file is owned by the same uid - as the old - - history_do_write: use chown in the same way as history_truncate_file + - define HAVE_FNMATCH if we have the fnmatch function (configure was + already checking for it) + +lib/readline/histsearch.c + - _hs_history_patsearch: transform the pattern into one ending in a + `*' to avoid having to perform multiple match attempts from each + index in the history line + - history_search_internal: changes to handle pattern matching if + PATTERN_SEARCH is in the flags and HAVE_FNMATCH is defined. This + makes vi-mode history searching treat the user-specified search + string as an fnmatch pattern, as Posix requires. Fixes issue + reported by - 11/12 + 11/19 ----- -lib/readline/display.c - - expand_prompt: takes a new `flags' argument; only one flag defined - so far: PMT_MULTILINE - - expand_prompt: changed all callers to add new flags argument - - rl_expand_prompt, redraw_prompt: make sure to set PMT_MULTILINE in - FLAGS argument to expand_prompt if expanding parts of a prompt - containing embedded newlines - - expand_prompt: only add mode char to last line of a prompt with - embedded newlines, so mode indicator doesn't get lost and gets - updated properly. Fixes problem reported by Renlin Li - +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/13 + 11/20 ----- +builtins/common.c + - display_signal_list: make `kill -l 0' print `EXIT', modifying change + from 9/17 -lib/readline/display.c - - prompt_modestr: changed prompt_modechar to return a string denoting - the editing mode; default strings for emacs and both vi modes are - #defines in this file. prompt_modestr takes an argument in which - it returns the length of the mode string - - expand_prompt: if expanding mode strings in the prompt, get the - mode string to use and add it at the beginning of the prompt string, - before expanding it. This will allow future work allowing the mode - string to contain invisible characters - - 11/15 + 11/21 ----- -lib/readline/rlprivate.h - - _rl_{emacs,vi_cmd,vi_ins}_mode_str: extern declarations for - variables to hold current values of user-settable mode strings; - variables to hold lengths +subst.c + - expand_word_internal: when the shell encounters a backslash as the + last character of the string, don't try to add a '\'0' to the end + of the string if the string is quoted, just add a <\> and + skip to the end of string processing. Fixes oob-read error + reported by Jerzy Kramarz -lib/readline/rlconf.h - - defines for default values of the mode strings for each editing mode - and keymap +test.c + - two_arguments: check argv[pos][1] before checking argv[pos][2] when + looking for a unary argument. Fixes oob-read error on single `-' + in unary operator position reported by Jerzy Kramarz + + - ANDOR: check s[1] before checking s[2] in case s[1] == end of string. + Fixes oob-read error reported by Jerzy Kramarz -lib/readline/display.c - - _rl_{emacs,vi_cmd,vi_ins}_mode_str: new variables to hold values of - user-settable mode strings - - _rl_{emacs,vi_cmd,vi_ins}_modestr_len: new variables to hold lengths - of corresponding mode string variables - - prompt_modestr: return appropriate user-settable mode string - variables +subst.c + - command_substitute: now takes additional flags argument, changed one + caller (param_expand) to pass through PF_ASSIGNRHS flag; other callers + pass 0 + - command_substitute: pass through flags argument to read_comsub + - read_comsub: now takes additional new flags argument to indicate + whether or not the word is in a context where word splitting will + eventually be performed + - read_comsub: if we are running in a context where word splitting + will not take place (PF_ASSIGNRHS), we read a CTLESC, and CTLESC is + in $IFS, add a CTLESC to make sure it gets through a round of + dequoting -lib/readline/bind.c - - {emacs,vi-ins,vi-cmd}-mode-string: new user-settable mode string - variables - - sv_{emacs,viins,vicmd}_modestr: variable handling functions for user- - settable mode string variables. Non-null values are run through - rl_translate_keyseq so users can include invisible character - sequences in the mode strings; null values restore the default - - _rl_get_string_variable_value: handle values for new user-settable - mode string variables. Original code contributed by Dylan Cali - + 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 + -lib/readline/doc/rluser.texi - - {emacs,vi-ins,vi-cmd}-mode-string: document, including the fact that - you can use \1 and \2 to bracket sequences of non-printing - characters +bashhist.h + - HISTEXPAND_DEFAULT: default value of history_expansion, moved here + from flags.c - 11/16 - ----- -lib/readline/history.c - - add_history: replace loop that copies history list down one item - with call to memmove to take advantage of whatever efficiencies - libc can offer. Won't be any slower than current loop +flags.[ch] + - histexp_flag: new variable, this is what set -H/set -o histexpand + sets; history_expansion set to value of this variable; defaults to 0 + - history_expansion: now set to HISTEXPAND_DEFAULT -lib/readline/display.c - - rl_redraw_prompt_last_line: new function, calls redraw_prompt if - the prompt contains multiple lines; calls rl_forced_update_display - if not +bashhist.c + - bash_history_reinit: if interact == 0, set history_expansion to the + value of histexp_flag, to allow -H option to enable history + expansion + - bash_history_reinit: if interact == 0, make sure + history_expansion_inhibited is set opposite of histexp_flag, so + enabling history expansion with -H invocation option turns off + inhibited expansion. If interactive shell, we turn it off so + history_expansion controls whether or not history expansion takes + place. In practice, this function is always called with interact == 0, + and -c command still doesn't perform history expansion -lib/readline/readline.h - - rl_redraw_prompt_last_line: extern declaration, undocumented in - texinfo manual until I get it a little more work +shell.c + - init_interactive: make sure histexp_flag and history_expansion are + identical in an interactive shell; allows both -H/+H option and + default compilation options (HISTEXPAND_DEFAULT) to work -bashline.c - - bash_execute_unix_command: instead of unconditionally calling - rl_forced_update_display, call rl_redraw_prompt_last_line if we - cleared the last line before executing the command. This keeps - commands that don't display any other output but just manipulate - the contents of the line buffer from redisplaying the prompt lines - before the last newline multiple times. Fixes bug reported by - Jesper Nygards 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/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/18 + 11/25 ----- -builtins/mapfile.def - - mapfile_builtin: don't allow a valid array reference through to - mapfile(), since it will just create a shell variable with that name. - Bug and fix from Eduardo A. Bustamante López +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/19 + 11/27 ----- -lib/readline/complete.c - - _rl_colored_completion_prefix: new variable, if non-zero, and color - support is compiled in, and the $LS_COLORS variable exists and - contains color definitions, display any common prefix of a set of - completions in blue when displaying all the possible completions. - Doesn't work with menu-complete, which inserts possible completions - inline - - colored_prefix_start(), colored_prefix_end(): new functions, used to - bracket colored completion prefixes - - fnprint: if prefix_bytes is non-zero, and _rl_colored_completion_prefix - is > 0, display the first PREFIX_BYTES bytes of the word bracketed - by calls to colored_prefix_start and colored_prefix_end - - print_filename: if _rl_colored_completion_prefix is > 0, compute the - length in bytes of the common prefix and pass that to fnprint +parse.y + - shell_getc: if we are reading input from a string, and we get the + ending '\0', and we are not expanding an alias, return EOF right + away. It might be an eval'ed string that has a syntax error. + Fixes bug reported by Dan Douglas -lib/readline/readline.c - - readline_initialize_everything: initialize the colors from $LS_COLORS - if _rl_colored_completion_prefix is non-zero + 11/28 + ----- +subst.c + - expand_word_internal: if we're expanding a quoted string containing + a tilde as the first character of a word, only expand the tilde if + we're expanding an array subscript (Q_ARRAYSUB), not if we're + expanding any arithmetic expression (Q_ARITH). This fixes a + backwards compatibility issue with expressions like ~0 reported by + Bize Ma -lib/readline/colors.c - - _rl_print_prefix_color: new function, changes text color to that - defined for the common prefix of a set of possible completions - (currently cyan, same as directories); currently uses C_PREFIX, - defined in colors.h as C_DIR +subst.c + - parameter_brace_expand_indir: if the variable is not special and + the indirect variable is unset (!variable where variable is unset), + report an error. This is a slight incompatibility with previous + versions, which did not differentiate between indirecting an unset + variable and an indirect expansion resulting in an unset variable. + Fixes omission reported by otenba@protonmail.com -lib/readline/colors.h - - _rl_print_prefix_color: new extern declaration + 11/30 + ----- +lib/readline/doc/{rluser.texi,readline.3},doc/bash.1 + - do-uppercase-version: since this doesn't actually exist, replace it + with do-lowercase-version, with the caveat that do-lowercase-version + results in undefined behavior if bound to a character that's + already lowercase. Suggested by Branden Robinson + -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 +lib/readline/doc/rluser.texi + - history-substring-search-forward: was misspelled as "substr-search"; + ditto for search-backward - 11/20 - ----- -builtins/printf.def - - printf_builtin: allow null (empty) format strings supplied with - -v var to set `var' to the empty string. That is, printf -v var "" - is now the same as var="". Change suggested by Mike Frysinger - +doc/bash.1 + - history-substring-search-{backward,forward}: add documentation, text + straight from readline.3 -pathexp.h - - FNMATCH_NOCASEGLOB: macro to decide whether or not to pass - FNM_CASEFOLD flag to strmatch depending on whether glob_ignore_case - is set; analogout to FNMATCH_IGNCASE +jobs.c + - initialize_job_control: if the terminal's process group is valid, + but the shell is not the foreground process, check for terminating + signals (like SIGHUP, which the kernel would send if the process + group were orphaned) during the loop where we try to stop the shell + if it's not in the foreground. Not a perfect solution; the kernel + might not send SIGHUP -pathexp.c - - glob_name_is_acceptable: use FNMATCH_NOCASEMATCH to determine flags - passed to strmatch; if nocaseglob is used to generate glob matches, - it should be used to generate ignored matches + 12/1 + ---- +jobs.c + - initialize_job_control: only go through the SIGTTIN loop 16 times at + most before deciding we're in the background and probably a member of + an orphaned process group; set original_pgrp to the terminal's pgrp + (so the eventual give_terminal_to doesn't leave the terminal in the + wrong pgrp); and bail on job control initialization + +tests/run-all + - unset SHELLOPTS to avoid its options `polluting' the test + environment. Suggestion from Vladimir Marek + + +tests/execscript + - use $PWD/exec8.sub to protect against someone who has a cd command + in his bashrc. Report from Vladimir Marek + - 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 + 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 -externs.h - - match_pattern_{wchar,char}: updated extern declarations + 12/3 + ---- +parse.y + - read_comsub: if we look for a character following a `<' and it's + not `<' (indicating that we don't have to read a here-document), + make sure we push that character back and go through the loop again + so we note the right word start location. Fixes bug reported by + parasite parasite <42parasite@gmail.com> subst.c - - match_{upattern,wpattern}: update strmatch/wcsmatch calls to include - FNMATCH_IGNCASE in flags argument - - match_{upattern,wpattern}: update match_pattern_{char,wchar} calls - to include FNMATCH_IGNCASE in flags argument (consistent with calls - to strmatch). This makes pattern substitution word expansion honor - nocasematch shell option. Feature requested by Davide Baldini - - - match_wpattern: make sure to fold case if necessary when doing simple - matching + - parameter_brace_expand_indir: clean up checks for unset variables to + minimize incompatibilities with previous versions -doc/{bash.1,bashref.texi} - - pattern substitution: updated description to include honoring setting - of nocasematch when performing matching + 12/5 + ---- +lib/readline/history.c + - add_history: don't update history_length until all of the updates to + the_history are complete, so history_length is always consistent. + Report and fix from Hong Cho -subst.c - - expand_word_internal: optimize handling of "$@" idiom by calling - list_rest_of_args() and quote_list() directly at the top of the - function instead of going through normal code path - - cached_quoted_dollar_at: WORD_LIST of quoted positional parameters, - used by same code above that optimizes "$@"; if non-null we just - return a copy of the list; if null, we save a copy of the list we - create - - invalidate_cached_quoted_dollar_at: convenience function to allow - other parts of the shell (e.g., remember_args()) to destroy the - cached list of quoted positional parameter when the positional - parameters change +bashline.c + - bash_backward_shellword: fix to work better at the end of the line, + with multiple trailing whitespace characters. Inspired by report + from Kirill Timofeev -builtins/common.c - - remember_args: call invalidate_cached_quoted_dollar_at() +Makefile.in + - bashbug: use `^' as the sed delimiter instead of `%'; some compilers + use `%' in CFLAGS. Report from Vladimir Marek + -builtins/shift.def - - shift_builtin: call invalidate_cached_quoted_dollar_at after modifying - dollar_vars[] + 12/6 + ---- +test.c + - test_unop: make sure op[1] != 0 before testing op[2] + - term: make sure argv[pos][1] != 0 before testing argv[pos][2]. Fixes + oob-read reported by Jerzy Kramarz -builtins/source.def - - maybe_pop_dollar_vars: call invalidate_cached_quoted_dollar_at just - to be safe + 12/7 + ---- +lib/glob/glob.c + - glob_filename: assign the return value of realloc (results, ...) to + a temp pointer, so if realloc returns NULL, we make sure we free + results. Report from Kirill Timofeev - 11/23 + 12/12 ----- -builtins/evalfile.c - - _evalfile: return -1 if errno == ENOENT and the flags don't include - FEVAL_ENOENTOK. If we print an error message we should return an - error - - force_execute_file: new function, reads and executes commands from - a file but returns an error if file doesn't exist +lib/sh/shquote.c + - sh_backslash_quote: if FLAGS&2, backslash-quote other single-byte + characters that are in the current locale's character class -builtins/common.h - - force_execute_file: new extern declaration +builtins/printf.def + - printf_builtin: when processing the `%q' format, make sure to + backslash quote all 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 + -shell.c - - main: call start_debugger even if dollar_vars[1] == 0 if the shell - isn't interactive (interactive_shell == 0) - - start_debugger: call force_execute_file instead of maybe_execute_file; - turn off debugging mode if it returns value < 0 +lib/sh/eaccess.c + - sh_stat: if DEV_FD_STAT_BROKEN is defined, take /dev/fd/N and turn + it into a stat on file descriptor N, as if /dev/fd were not + available. This is the case on some old versions of SunOS. Report + and patch from Dmitry Goncharov - 11/24 - ----- -hashlib.h - - DEFAULT_HASH_BUCKETS: doubled to 128, cost in memory use is small but - changes traversal order when not sorting results +config.h.in + - DEV_FD_STAT_BROKEN: add define - 11/25 - ----- -doc/{bash.1,bashref.texi} - - make it clearer, by breaking it out into a separate paragraph, that - referencing an array without a subscript is equivalent to referencing - it with subscript 0 - - add text saying that referencing any variable using a valid subscript - is OK +configure.ac + - --enable-dev-fd-stat-broken: new command-line option, defines + DEV_FD_STAT_BROKEN if supplied at configure time - 11/28 - ----- +doc/bashref.texi + - --enable-dev-fd-stat-broken: document new command-line option for + configure arrayfunc.c - - bind_array_variable, bind_assoc_variable: allow binding value to a - readonly variable if the ASS_FORCE flag is set in the FLAGS - argument + - assoc_expand_once: new variable, declared here just because -subst.h - - ASS_FORCE: new assignment flag; means to allow assignment even if - variable is marked readonly +arrayfunc.h + - assoc_expand_once: extern declaration + - AV_NOEXPAND: new flag value for the array_value family of functions: + means to not run associative array subscripts through word expansion -builtins/declare.def - - when assigning a value to an array or assoc variable using - something like `declare -r foo=bar' where foo is an existing array - variable, pass the ASS_FORCE to assign_array_var_from_string so - the assignment is allowed. Fixes debian bug 765759 - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=765759 +builtins/set.def + - unset_builtin: call unbind_array_element with assoc_expand_once as + third arg, controls whether we expand associative array subscripts + (if 1, we suppress the usual expansion). With accompanying shopt, + provides backwards compatible option to solve problem with quotes + and other characters in associative array subscripts pointed out + most recently by Mingye Wang (Arthur2e5) -builtins/setattr.def - - var_attribute_string: new function to return (as argument) a char - array with attribute flag values for a given variable; returns the - length of the array +builtins/shopt.def + - assoc_expand_once: new option, controls value of internal variable + with the same name. Currently undocumented because I'm not completely + sold on the name -lib/sh/shquote.c - - sh_quote_reusable: function returning a version of its string - argument that is quoted for reuse +expr.c + - evalexp: now takes a second argument, flags. Changed all callers in + multiple other files (builtins/let.def,execute_cmd.c,arrayfunc.c, + subst.c,test.c,variables.c) externs.h - - sh_quote_reusable: extern declaration - -builtins/common.h - - MAX_ATTRIBUTES: define used to size arrays for attribute flag - characters - - var_attribute_string: new extern function declaration - -subst.c - - array_remove_pattern: fixed a bug where `var' instead of `v' was - tested for invisible attribute - - get_var_and_type: fill in a valid *VARP if returning VT_VARIABLE - because callers may need to use it - - parameter_brace_transform: family of functions to implement the new - mksh-inspired ${param@spec} transformation word expansions. Some - of the operators transform the (expanded) value of the parameter, - the rest expand to information about the parameter itself - (array_transform, parameter_list_transform, list_transform, - string_transform, pos_params_assignment, array_var_assignment, - string_var_assignment) - - parameter_brace_expand: changes to parse the new `@' word expansion - operator and call parameter_brace_transform appropriately - - parameter_brace_expand: make sure we handle ${#@} as we have before - even in the presence of the new `@' operator + - EXP_EXPANDED, new flag for second argument to evalexp -variables.c - - push_temp_var: make sure to call bind_variable_internal with the - ASS_FORCE flag so we override readonly variables created with - something like `tempvar=foo declare -r foo'. - - bind_variable_internal: honor ASS_FORCE flag to allow binding even - if a variable is readonly +builtins/let.def + - let_builtin: add EXP_EXPANDED to flags passed to evalexp execute_cmd.c - - struct func_array_state: new state to save state of BASH_LINENO, - BASH_SOURCE, and FUNCNAME during function execution so it can be - restored on a jump to top level - - restore_funcarray_state: new function to restore func_array_state - - execute_function: fill in func_array_state variable, add unwind- - protect to restore it on jump to top level, call explicitly at - end of function if subshell != 0 (may not be necessary, but safe - for now). Fixes bug with local assignments to FUNCNAME reported - by Arfrever Frehtes Taifersar Arahesis - - 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 - + - execute_arith_command: add EXP_EXPANDED to flags passed to evalexp, + since the command string is run through expand_words_no_vars before + being evaluated -config.h.in - - HAVE_PSELECT: define if pselect(2) available +expr.c + - set expression-global variable already_expanded if flags arg to + evalexp contains EXP_EXPANDED + - if assoc_expand_once option set and already_expanded flag set, pass + 1 in flags to array_variable_part to skip over quotes and expansions + in the subscript + - if those two variables set, pass AV_NOEXPAND as flag to + get_array_value to prevent word expansions on the subscript -configure.ac - - check for pselect(2), define HAVE_PSELECT if found +arrayfunc.c + - if flags passed to unbind_array_element includes 1, pass flag on to + skipsubscript so we don't expect matched quotes or process + expansions in the subscript + - if flags to array_value_internal include AV_NOEXPAND, pass 1 as flag + to array_variable_part to pass along to skipsubscript + - if flags to array_value_internal include AV_NOEXPAND, don't call + expand_assignment_string_to_string; just use the unexpanded subscript + to produce the key [THIS IS A WORK IN PROGRESS] -lib/readline/input.c - - rl_getc: use pselect(2) to wait for input ready on readline's - input fd or for a signal to arrive, will handle SIGWINCH (which - does not interrupt read(2)) and thus allow resize to happen without - having to wait to read more input. Only works if pselect available - and returns -1/EINTR on a signal even if the signal was installed - with SA_RESTART. From a suggestion from Egmont Koblinger - + 12/14 + ----- +subst.h + - ASS_NOEXPAND: assignment flag that inhibits expansion of associative + array subscripts - 12/3 - ---- variables.c - - flush_temporary_env: new function, disposes all temp variables in - temporary_env hash table - - bind_variable: only try to update a temporary variable's value in the - temporary env if the value argument is not null. Fixes bug reported - by + - bind_int_variable: takes new flags arg; flags are taken from the + ASS_ set of assignment flags, changed callers (bashline.c, expr.c, + pcomplete.c) + - bind_int_variable: if flags includes ASS_NOEXPAND, pass 1 as flag to + valid_array_reference and array_variable_part to pass along to + skipsubscript, so we don't try to skip over quoted strings in the + subscript + - bind_int_variable: pass flags along to assign_array_element variables.h - - flush_temporary_env: new extern declaration - -subst.c - - command_substitute: if running command substitution as part of - expanding a redirection (expanding_redir == 1), flush any temporary - environment we've inherited as part of this command, since we are not - supposed to have access to the temporary environment. Since - expanding_redir only controls access to the temporary environment for - variable lookup and binding, we can turn it off in the subshell + - bind_int_variable: updated extern declaration with new flags arg - 12/4 - ---- -builtins/printf.def - - printstr: make sure a missing precision specifier after a `.' is - treated as 0, as printf(3) specifies. Fixes ubuntu bash bug - 1399087 (https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1399087) +expr.c + - expr_bind_variable: if the assoc_expand_once option is enabled, and + the flags to evalexp indicate that we have already run the expression + through word expansion, pass ASS_NOEXPAND as flag to bind_int_variable - 12/5 - ---- -subst.c - - skip_to_delim: if scanning past process substitution (skipcmd == 1, - noprocsub == 0), use extract_delimited_string instead of - extract_process_subst, which was changed a while back (bash-4.3.23) - to use xparse_dolparen. xparse_dolparen complains if the command - or process substitution is unterminated, since it runs the parser, - which is not what we want here. Command substitution does the same - thing. Fixes bug reported by Daniel Kahn Gillmor - as Debian bash bug 771968 - (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=771968) +arrayfunc.c + - assign_array_element: if flags includes ASS_NOEXPAND, pass 1 as flag + to array_variable_name to pass along to skipsubscript + - assign_array_element: if flags includes ASS_NOEXPAND, don't run an + associative array subscript through word expansion, just use as-is - 12/6 - ---- subst.c - - command_substitute: short-circuit without forking on a command string - that consists entirely of s and newlines - -jobs.c - - make_child: changes to allow interrupts through if fork fails and - we are sleeping for `forksleep' seconds - - waitchld: make things a little more resilient if CHILD ends up NULL + - param_expand: call evalexp with EXP_EXPANDED flag for arithmetic + substitution because the string has already been expanded with + expand_arith_string - 12/12 + 12/15 ----- -lib/readline/complete.c - - rl_display_match_list: when calculating common prefix to display in - color, make sure we correctly handle a common prefix with a trailing - `/' as we do when checking whether or not to add an ellipis. - printable_part() doesn't return the whole pathname if it ends in a - slash, to avoid printing null strings, so we have to make sure we - have the entire prefix +builtins/read.def + - read_builtin: use value of assoc_expand_once for valid_array_reference + as with other uses + - bind_read_variable: if assoc_expand_once is set, pass ASS_NOEXPAND + to assign_array_element -lib/readline/complete.c - - _rl_complete_display_matches_interrupt: new variable, set to 1 by - _rl_complete_sigcleanup to let rl_display_match_list know it has - freed the match list - - display_matches: check for signals during the printing loops with - RL_SIG_RECEIVED(), return immediately if there is a pending signal - (might not want to do this if it's SIGWINCH -- CHECK) - - rl_complete_internal: if _rl_complete_display_matches_interrupt - set after calling display_matches, just null out `matches' since - it's already been freed and call any application-set signal hook +general.c + - assignment: instead of checking whether flags == 0 to allow a `[', + explicitly check for (flags&1) to disallow it. This leaves the door + open for additional flag values - 12/14 +builtins/printf.def + - printf_builtin: use value of assoc_expand_once for + valid_array_reference as with other uses + - bind_printf_variable: if assoc_expand_once is set, pass ASS_NOEXPAND + to assign_array_element + + 12/16 ----- -parse.y - - time_command_acceptable: if the token before a newline is `|', - return 0, since it's not really valid to time inside a pipeline. - Only handles a single newline but allows things like - echo a | - time cat - to invoke /usr/bin/time, which is probably enough to catch the - stray carriage return. Fixes bug reported by Andre Majorel - +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 -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 +doc/bash.1,lib/readline/doc/hsuser.texi + - documented new behavior of negative offsets for `history -d' - 12/15 + 12/17 ----- -lib/sh/Makefile.in - - add missing dependencies for shmatch.o. Pointed out by Sergey - Mikhailov +lib/readline/history.c + - remove_history: use memmove to move the history list around instead + of a loop that copies pointers one at a time, similar to add_history - 12/16 + 12/19 ----- -{execute_cmd,subst}.c - - W_ASSIGNINT: remove, not used any more - -execute_cmd.c - - fix_assignment_words: don't look for `-i' option and set W_ASSIGNINT - flag any more; doing things a different way - - shell_expand_word_list: instead of using W_ASSIGNINT flag, since it - doesn't take into account all options that can transform values on - assignment (-l/-u/-c can also), go through option arguments looking - for options that need special handling and add them to the `opts' - array for make_internal_declare to use. Fixes bug with constructs - like `declare -al foo=(UPONE UPTWO UPTHREE)' not being lowercased on - assignment reported by Linda Walsh - +configure.ac + - linux: make sure PGRP_PIPE is defined unconditionally for all kernel + versions greater than 2.3.* +lib/readline/history.c + - clear_history: when clearing the history, reset history_base to 1 + (its default) + - remove_history_range: new function, removes a set of history entries + and returns them all for deallocation - 12/18 - ----- -lib/readline/readline.c - - rl_internal_char: when we read EOF on a non-empty line, check for - signals and invoke any readline signal handling and any application- - installed signal hook +lib/readline/history.h + - remove_history_range: extern declaration 12/20 ----- -lib/readline/readline.c - - rl_internal_char: if we read EOF on a non-empty line, set c to - _rl_eof_char the first time through. If we read EOF the next time, - return EOF from readline(). If callbacks are defined, this returns - EOF immediately, since lastc isn't available. Fix for problem - most recently identified by Jiri Kukacka , - it has come up in the past +execute_cmd.c + - eval_arith_for_expr: pass EXP_EXPANDED to evalexp, since we run the + expression through expand_words_no_vars 12/21 ----- -builtins/declare.def - - declare_internal: keep track of whether or not an assignment statement - argument to declare is an array subscript assignment; need to - differentiate assignments from straight declarations (declare a[4]) - which are accepted for backwards compatibility - - assignment statements like declare a[2]=foo are now treated as - straight subscript assignment statements if a already exists as an - array variable - - declare foo='(1 2 3)' is treated as an assignment to foo[0] if foo - exists and is an array, just as it would be if it were an assignment - statement and `declare' was not present. All this from a proposal - by Stephane Chazelas +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 - ----- -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 - + ----- +arrayfunc.[ch],subst.c + - array_expand_index: added new FLAGS argument, reserved for future use, + changed callers - 12/23 + 12/24 ----- -builtins/setattr.def - - show_var_attributes: call print_array_assignment and print_assoc_assignment - with a `not quoted' flag so the assignment statements are not - surrounded by single quotes. Caused changes to a lot of test output +variables.c + - can_optimize_assignment,optimized_assignment: see if we can detect + whether or not we're trying to append a string to a string variable, + and optimize that using realloc/strcpy. Based on a log-ago + suggestion from Aharon Robbins - 12/29 + 12/27 ----- -lib/readline/complete.c - - stat_char: Windows doesn't handle X_OK flag to access(2); use file - extensions to determine whether or not a file is executable. Bug - report and fix from Eli Zaretskii - -configure.ac - - changed version to bash-4.4-devel +builtins/help.def + - help_builtin: don't pass return value from ngettext() directly to + printf -lib/readline/readline.h - - changed version to readline-6.4 + 12/28 + ----- +sig.c + - set_signal_handler: set SA_RESTART for SIGWINCH, so window size + changes don't interrupt open/read/write. Suggested by + Andriy Prystupa back in 10/2016 12/30 ----- -readline.h - - struct readline_state: fix types of `ignorefunc' and `attemptfunc' - members +execute_cmd.c + - coproc_pidchk: if MULTIPLE_COPROCS, call cpl_search to find coproc + associated with pid, don't remove it from the list with cpl_delete. + Just mark as dead and wait for coproc_reap/cpl_reap to take care + of disposing it + - execute_coproc: NEW FEATURE: run the coproc name through word + expansion before creating the coproc; this allows unique coprocs + to be created in loops. Originally requested way back in 2012 by + Erik Brandsberg + +command.h + - subshell_com: now has a line number member: line -lib/sh/shquote.c,externs.h - - sh_contains_shell_metas, sh_contains_quotes: now take `const char *' - as parameter +make_cmd.c + - make_subshell_command: assign current line number (line number of the + ending right paren) to `line' member -stringlib.c,externs.h - - strcreplace: `text' argument now `const char *' +copy_cmd.c + - copy_subshell_command: copy the `line' member -pathexp.[ch] - - quote_globbing_chars: `string' argument now `const char *', accompanying - changes to function local variables +execute_command.c + - execute_command_internal: when executing a user subshell (`(command)'), + set the line number and line number for the ERR trap from the line + number saved in the subshell command struct. Fix from + Eduardo A. Bustamante López + - 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 -pcomplete.c - - preproc_filterpat: `text' argument now `const char *' - - filter_stringlist: `text' argument now `const char *' +variables.c + - bind_variable_internal: move can_optimize_assignment call to the + right place 12/31 ----- -builtins/evalstring.c - - should_suppress_fork: new function, broke code that decides whether - to turn on CMD_NO_FORK flag out of parse_and_execute into a separate - function +variables.c + - find_variable_nameref: treat a circular variable reference as + referring to a variable of that name in the global scope (for now), + if one exists. PROVISIONAL change: inspired by suggestion back in + 6/2016 by Grisha Levit -execute_cmd.c - - execute_command_internal: AND_AND, OR_OR: call should_suppress_fork - for the RHS of && and ||, make `make' invocations marginally more - efficient + 1/2/2017 + -------- +{expr,general,hashcmd}.c + - include flags.h for flag values -flags.c - - get_current_flags: returns a bitmap of all single-letter shell - options with a non-zero value meaning option is enabled - - set_current_flags: set current single-letter options from a passed - bitmap, which has presumably been initialized with get_current_flags +make_cmd.c + - include shell.h instead of the files it includes flags.h - - {get,set}_current_flags: new extern declarations - -builtins/declare.def - - declare_internal: if invoked as `local', interpret name argument of - `-' to mean to save (and restore at shell return) single-letter - shell options + - new extern declarations for want_pending_command, read_from_stdin -variables.c - - push_func_var: if we encounter `-' as the name of a local variable, - take the value and call set_current_flags on it to restore old - flag settings +subst.h + - add extern declaration for expanding_redir, assigning_in_environment -builtins/set.def - - get_current_options: returns a bitmap of all shell options settable - with `set', with a non-zero value meaning option is enabled - - set_current_options: set current shell options from a passed - bitmap, which has presumably been initialized with get_current_options +trap.h + - add extern declaration for running_trap +execute_cmd.h + - added extern declarations for variables declared in execute_cmd.c, + changed files that declare lots of extern variables - 1/1/2015 - -------- -lib/readline/parens.c - - _rl_blink_matching_paren: initialize to 0 whether or not select(2) is - available. Inconsistency reported by Mark Karpov - +shell.h + - added extern declarations for variables declared in shell.c, + changed files that declare lots of extern variables -builtins/declare.def - - declare_internal: use get_current_options instead of - get_current_flags, so `local -' can be generalized +parser.h + - added extern declarations for variables declared in parse.y, + changed files that declare lots of extern variables -variables.c - - push_func_var: use set_current_options instead of set_current_flags - so `local -' can be generalized +[lots of changes to reduce the number of extern declarations in C and DEF files] -doc/{bash.1,bashref.texi} - - document new `local -' feature; originally inspired by Robert Elz - describing feature in NetBSD sh +parse.y + - xparse_dolparen: need ALIAS or DPAREN_ARITHMETIC to be defined to + use STRING_SAVER 1/3 --- -lib/readline/{complete,funmap,kill,histfile,util} -lib/readline/readline.h -lib/tilde/tilde.c - - fixes for filename- and evironment-related issues on Windows. Fixes - from Eli Zaretskii - - 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 + - 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 -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 +jobs.c + - end_job_control: only attempt to give the terminal back to + original_pgrp if job_control != 0; don't test interactive_shell - 1/10 - ---- -bashhist.c - - bash_history_inhibit_expansion: use skip_to_delim with the history - expansion character to see whether or not the instance of the - history expansion character should be skipped because, for instance, - it is in a command substitution. Fixes issue reported by - Zigmund.Ozean@zig-home.localdomain +execute_cmd.c + - execute_disk_command: call QUIT after search_for_command, since + the only time QUIT gets called is when the path is actually + searched. It doesn't happen for an absolute pathname. Fix for + bug reported by Russell King - 1/14 + 1/16 ---- -lib/readline/isearch.c - - _rl_isearch_dispatch: if we are in a multibyte locale, make sure to - use _rl_find_prev_mbchar when trying to delete characters from the - search string, instead of just chopping off the previous byte. - Fixes bug reported by Kyrylo Shpytsya - -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 - +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 -builtins/read.def - - read_builtin: if REPLY has the readonly or noassign attribute, return - failure +lib/glob/glob.c + - wchkname -> wskipname + - wskipname: now takes a third `flags' argument, like the other variants + of skipname - 1/16 + 1/17 ---- redir.c - - redir_open: if open() returns -1/EINTR, check traps as well as - using QUIT to handle signals + - here_document_to_fd: set the file descriptor open for writing to the + here document to be close-on-exec. Fixes bug reported by + Siteshwar Vashisht 1/18 ---- -jobs.c - - wait_for: make sure queue_sigchld is set to 1 before unblocking - SIGCHLD if MUST_UNBLOCK_CHLD is defined +{gmisc,gm_loop}.c + - match_pattern_char,match_pattern_wchar: moved to gm_loop.c (new file), + compile twice for single and wide characters as with the rest of + the functions + - umatchlen,wmatchlen: ditto + - extglob_pattern_p: move to gm_loop.c, generalize for regular and + wide-char versions 1/19 ---- -pcomplete.h - - new progcomp option: COPT_NOSORT, means to not sort list of possible - completions - -pcomplete.c - - pcomp_set_readline_variables: if COPT_NOSORT set in compspec flags, - set rl_sort_completion_duplicates to 0 - -builtins/complete.def - - _compopt: new option value: -o nosort, sets COPT_NOSORT in compspec - option flags. Provides new -o nosort option for complete and compgen +lib/readline/complete.c + - stat_char: fix small memory leak if stat/lstat returns -1 bashline.c - - attempt_shell_completion: make sure rl_sort_completion_matches is - set to 1 before completion is attempted; allow a compspec to turn - it off - -lib/readline/kill.c - - rl_vi_yank_pop: new function, vi-mode version of yank-pop. Original - code from Ian Kelling + - bash_filename_stat_hook,bash_directory_completion_hook: make sure + expand_prompt_string is caled wth W_NOPROCSUB flag + - directory_exists: don't dequote the filename passed as an argument; + this function should never get quoted pathnames -lib/readline/funmap.c - - `vi-yank-pop': bindable name mapped to rl_vi_yank_pop - -lib/readline/readline.h - - rl_vi_yank_pop: extern declaration - - 1/21 - ---- -lib/sh/shquote.c - - sh_backslash_quote: change to understand and handle multibyte - characters, using is_basic, COPY_CHAR_P. See - https://bugzilla.redhat.com/show_bug.cgi?id=1184320 for original - report +subst.c + - expand_word_internal: when calling expand_word_internal recursively + after reading a double-quoted string, make sure the W_NOCOMSUB and + W_NOPROCSUB flags make it to the recursive invocation. Fixes bug + reported by Jens Heyens 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 +lib/readline/signals.c + - _rl_orig_sigset: original signal mask, set and restored by + rl_set_signals (rl_clear_signals doesn't block signals). If we + are not installing signal handlers, just save signal mask each + time rl_set_signals is called -include/chartypes.h, lib/readline/chardefs.h - - make sure all ctype.h macros are called with unsigned char args, - casting to make sure +lib/readline/input.c + - rl_getc: use _rl_orig_sigmask in the call to pselect(), so we block + the set of signals originally blocked by the calling application. + Fixes bug reported by Frédéric Brière -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 +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/31 + 1/30 ---- -lib/readline/histfile.c - - history_truncate_file, history_do_write: if the first rename(2) - of the history file to the backup file fails, set the backup file - name to NULL to prevent any later attempts to restore the - original. Report from Jonathan Hankins - - history_do_write: don't attempt to back up non-regular files. - Report from Jonathan Hankins +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/2 + 2/1 --- -trap.c - - run_interrupt_trap: now takes an argument indicating whether or not - it was called just before a longjmp to top_level; change callers - - run_interrupt_trap: if running a trap and we are being called before - a longjmp to top_level, call run_trap_cleanup on running trap so - a QUIT call while running a DEBUG trap, for instance, doesn't leave - sigmodes[DEBUG_TRAP] including SIG_INPROGRESS. Fixes bug reported - by Chih-Chieh Chou - -sig.c - - throw_to_top_level: change call to run_interrupt_trap to pass arg 1 - - termsig_handler: change call to run_interrupt_trap +jobs.h + - JWAIT_PERROR,JWAIT_FORCE: new defines for the wait_for_ family of + functions -trap.h - - run_interrupt_trap: update extern prototype declaration +jobs.c + - wait_for_job, wait_for_any_job: take new flags argument for use by + the wait builtin + - wait_for_job: if JWAIT_FORCE flag supplied, loop waiting for job to + terminate instead of change state + - wait_for_single_pid: if JWAIT_FORCE flag supplied, loop waiting for + child process to terminate instead of change state - 2/4 - --- -lib/readline/histfile.c - - histfile_backup, histfile_restore: new functions to back up and restore - history file to `filename-', following (one level of) symlinks through - so we don't rename the symlink itself. From a suggestion by - Jonathan Hankins +builtins/wait.def + - takes a new `-f' option, signifying to wait until the specified job + or process terminates, instead of changes state -assoc.c - - assoc_to_assign: if an index happens to be `@' or `*', make sure it's - double-quoted. Bug report from Greg Wooledge +doc/{bash.1,bashref.texi} + - wait: document the new -f option and its behavior when job control + is enabled + - job control: add a paragraph describing how the wait builtin changes + behavior when job control is enabled: it returns when a job changes + state - 2/5 + 2/2 --- -lib/readline/bind.c - - rl_bind_key: if we are rebinding a key that is not bound to a - function or a macro, construct a key sequence and pass it to - rl_bind_keyseq. Make sure that '\' when it is used as a key is - changed to "\\" so it can survive rl_translate_keyseq. Fixes - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776743 +examples/loadables/fdflags.c + - fdflags: new loadable builtin to set and unset file descriptor flags + (such as non-blocking, though bash undoes that) for descriptors bash + has open. Developed in consultation with Christos Zoulas + - 2/8 + 2/3 --- -include/posixjmp.h - - _rl_longjmp, sh_longjmp: new defines, expand to siglongjmp or longjmp - depending on autoconf results, used to avoid redefining longjmp, - remove _OPENNT conditional code. Report from Eric Blake - - -{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 +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 - 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 - +lib/readline/readline.h + - rl_{next,previous}_screen_line: extern declarations - 2/24 - ---- -lib/readline/histfile.c - - history_do_write,history_truncate_file: if the write fails, make sure - to set history_lines_written_to_file to 0 so we don't lose those - history entries +lib/readline/funmap.c + - {next,previous}-screen-line: new bindable command names - 2/27 - ---- -execute_cmd.c - - execute_function: unwind-protect the value of line_number_for_err_trap, - so a function that returns a non-zero value and triggers an ERR trap - has the right value for LINENO. Any simple command in the function - body can change it. Bug report from Paul Donohue +lib/readline/doc/{rluser.texi,readline.3} + - {next,previous}-screen-line: document behavior, including limitations - 3/5 + 2/5 --- -lib/sh/shquote.c - - sh_backslash_quote: cast `c' to `unsigned char' before using as - index into backslash_table. Report and fix from - alexeyv.90@gmail.com - -arrayfunc.[ch] - - valid_array_reference: added second `flags' argument for future use; - currently unused - -parse.y,{redir,subst,variables,test}.c -builtins/{declare,printf,read,set}.def - - valid_array_reference: changed callers +lib/readline/input.c + - rl_read_key: when reading input from a macro, make sure to return + the next character as an unsigned char, so we handle multibyte + character sequences correctly. Report and fix from Grisha Levit + - 3/7 + 2/6 --- -lib/readline/signals.c - - _rl_handle_signal: if readline gets a SIGTSTP or SIGTTIN, block - SIGTTOU so a backgrounded readline can reset the terminal settings - appropriately, otherwise the terminal state and readline's idea - of it can get messed up. Original report from Dave Wysochanski - 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 +shell.c + - --pretty-print: new invocation option, currently undocumented, dumps + a pretty-printed version of a shell script given as an argument to + stdout + - main: call pretty_print_loop() if we're in pretty-printing mode in + a non-interactive shell -lib/readline/display.c - - rl_redisplay: fixed case where multibyte character in the prompt - (e.g., \u03bb) in the last screen column causes problems with line - wrapping because the newline marker is put in the middle of the - multibyte char. Most recently reported on Ubuntu by - +eval.c + - pretty_print_loop: new function, similar to reader_loop, reads + commands and prints them by displaying the result from + make_command_string() -pathexp.c - - quote_string_for_globbing: if a bracket expression doesn't have a - closing right bracket, rescan it from just after the opening - bracket without treating it as a bracket expression. Bug report - from Stephane Chazelas +externs.h + - pretty_print_loop: new extern declaration - 3/9 + 2/9 --- -subst.c - - process_substitute: keep the last pipeline created to run a process - substitution in LAST_PROCSUB_CHILD; discard it when another one is - created - -jobs.[ch] - - discard_pipeline: now global, so process_substitute can call it +doc/{bash.1,bashref.texi} + - here strings: correct documentation to note they do not undergo + brace expansion. Report from Conor McCarthy -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 - + 2/9 + --- +lib/readline/display.c + - expand_prompt: instead of recomputing the line break offsets for + prompts that span multiple screen lines on every call to rl_redisplay, + do it here. Manage a local array local_prompt_newlines; set an offset + every time `physchars' hits a multiple of the screen width. Inspired + by https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843819 + - rl_redisplay: don't calculate multi-line prompt line break indices + here; use the values calculated by expand_prompt + - rl_{save,restore}_prompt: save and restore local_prompt_newlines - 3/10 + 2/11 ---- -arrayfunc.c - - unbind_array_element: make sure skipsubscript() doesn't try to parse - embedded quotes in the subscript, since this has already been through - one round of word expansion before calling the unset builtin. (This - function is only called by the unset builtin). Fixes bug reported by - +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 - 3/17 + 2/15 ---- jobs.c - - waitchld: move code that adds the last process substitution pid to - the bgpids array from waitchld (where it can call malloc in a signal - handler context) to cleanup_dead_jobs + - bgp_add: if hashed pid collides with bgpids.head index, print a + warning and move to the next index. Attempt to avoid collision + problem reported by Graham Northup - 3/19 + 2/17 ---- subst.c - - parameter_brace_expand: if expanding an array in a context where word - splitting will not take place (W_ASSIGNRHS only for now), make sure - to pass the double-quoted flag to chk_atstar so we don't get the - unquoted $* behavior, which will cause unwanted word splitting. - Fixes bug reported by isabella parakiss - -arrayfunc.c - - unbind_array_element: don't assume that caller will check and pass - only array variables; don't allow non-array variables to be unset - using the `@' or `*' subscripts and don't allow any subscripts other - than 0; return -2 in those cases - - unbind_array_element: unset a non-array variable if passed a subscript - of `0' (e.g., `unbind "scalar[0]"'). This is new functionality that - parallels the ${scalar[0]} expansion + - process_substitute: call remove_quoted_escapes on the command string + like command substitution does, since the string will be run through + the parser again. Fixes bug reported by David Simmons + -builtins/set.def - - unset_builtin: don't check whether a variable is an array if it's - referenced using array syntax (scalar[0]); pass it to - unbind_array_element anyway and check the result. This means that - `unset scalar' and `unset scalar[0]' are equivalent +config-top.h + - STATIC_PATH_VALUE: new config variable, undefined by default - 3/20 - ---- -builtins/set.def - - set_builtin: make `-i' an invalid option, unconditionally for now. - From a bug-bash discussion started by Peng Yu +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 - 3/21 + 2/18 ---- -lib/readline/colors.c - - _rl_print_color_indicator: handle dangling symlinks (C_ORPHAN) and - the `target' specifier for links (dereference S_ISLNK if the target - exists). Bug report and fix from andreas@stapelspeicher.org - -{arrayfunc,subst}.c - - add code to save and restore this_command_name in places that set - this_command_name to NULL to prevent error messages from arithmetic - evaluation. Fixes bug reported by brian.carpenter@gmail.com - -builtins/mapfile.def - - do_chop: remove a new DELIM argument from the line, instead of - unconditionally removing newline - - mapfile: if -d delim is supplied and we are breaking fields at DELIM, - remove DELIM if the -t option is supplied by passing DELIM to do_chop(). - Suggested by Geir Hauge - -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 - +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 - 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 +subst.c + - expand_string_for_pat: change expansion of WORD in ${param[%[%]][#[#]]word} + to use this new function, initially identical to + expand_string_for_rhs + - getpattern: use expand_string_for_pat to expand the pattern - 3/23 + 2/19 ---- -doc/{bash.1,bashref.texi} - - INVOCATION: add language to make it clear that non-interactive login - shells execute ~/.bash_logout if they run the `exit' builtin. From a - question from Christoph Anton Mitterer - - 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 + - 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 - 4/10 + 2/20 ---- -trap.c - - trap_if_untrapped: new function, sets a trap on a signal if that - signal is not already trapped - - maybe_set_debug_trap: new function, sets DEBUG trap to command string - argument only if it's not already trapped - -trap.h - - maybe_set_debug_trap: new extern declaration - - -builtins/source.def - - source_builtin: if the -T option isn't set, use maybe_set_debug_trap - in the unwind-protect instead of unconditionally restoring the old - trap string. That means if the sourced file changes the DEBUG trap, - that new trap will persist instead of being undone when the old - value is restored. Fixes bug reported by Scott Bronson - - -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 +subst.c + - expand_string_for_rhs: now takes `op' (brace expansion operator) as + an additional argument; changed call in parameter_brace_expand_rhs + - expand_string_for_rhs: make sure to set expand_no_split_dollar_star + if `op' is `=', since we are supposed to preserve the assignment + statement expansion semantics on the RHS of ${param=word} - 4/15 - ---- jobs.c - - delete_job: only add J_ASYNC (and not J_FOREGROUND) jobs to the - bgpids array, since Posix says shells only need to save the status - of async jobs. Report and fix from John Fremlin - - 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 + - bgp_delindex: make sure to set ps->pid to NO_PID so we more + effectively remove it from the hash table. It shouldn't matter as + long as nothing in pidstat_table points to it, but better to be safe + - bgp_delete,bgp_search: generalize previous collision detection to + loop detection: abort search if we are going to go back to the + first index we tried - 4/19 + 2/21 ---- -ulimit.def - - fix typo in limits[] declaration of `k' +lib/readline/vi_mode.c + - rl_vi_bword: if we're trying to move backward to non-whitespace + in a line that begins with whitespace, make sure we don't move + point to 0 and test memory locations before the start of the + buffer. Report and fix from Jason Hood - 4/20 - ---- -configure.ac - - add template definitions set by AC_USE_SYSTEM_EXTENSIONS from a report - from Andreas Schwab +lib/readline/display.c + - expand_prompt: if _rl_screenwith == 0, call rl_reset_screen_size to + initialize it. If it's still 0 after that, guess that the screen + width is 80 and use that to guess how many screen lines the prompt + consumes -variables.c - - FUNCTIONS_HASH_BUCKETS: constant used to size the hash tables used for - shell functions and the text of shell function definitions. Initially - set to 512, even though it's a really rare case that someone has more - than around 150 functions, even with bash-completion +lib/readline/readline.c + - readline_internal_setup: if in emacs editing mode, and we are + showing the editing mode in the prompt, call _rl_reset_prompt() to + make sure that the updated setting of _rl_show_mode_in_prompt + (presumably set in an inputrc file) is reflected in the redisplay + performed by rl_callback_newline via readline_internal_setup. + Fix from Jason Hood - 4/21 + 2/22 ---- -shell.c - - main: malloc_set_register: change arg to 0 to disable keeping track of - allocations and frees in table; change to 1 for malloc debugging on - demand. Table is too small to keep effective track of allocations on - a modern system, need to use something like valgrind +builtins/complete.def + - print_one_completion,print_compopts: make sure to display the + `nosort' and `noquote' options if they've been set for a particular + compspec. Fix from Grisha Levit - 4/22 - ---- -shell.c - - main: move cmd_init() (initialize word desc and word list object - caches) after startup files are read so the cache doesn't get filled - up with semi-permanent storage for shell functions and variables +builtins/read.def + - read_builtin: if -e is supplied, read needs to free rlbuf before + returning, since it uses discard_unwind_frame at that point. Bug + and fix from ZhangXiao 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 - + - 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 - 4/23 + 2/23 ---- -execute_cmd.c - - execute_disk_command: don't overwrite value of subshell_environment - by assigning SUBSHELL_FORK; just OR in SUBSHELL_FORK so something - like SUBSHELL_ASYNC or SUBSHELL_PIPE is preserved +general.c + - make_absolute: convert deprecated cygwin_conv_to_full_posix_path + to cygwin_conv_path (CCP_WIN_A_TO_POSIX, ...) -jobs.c - - wait_for: don't call give_terminal_to if running in a subshell - environment, not just if running_in_background is set; don't want - shell functions waiting for a process to complete in a pipeline to - give the terminal to the wrong process group. Part of fix for bug - reported by Valentin Bajrami - - 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 - +{shell,variables}.c,config-top.h + - modify change from 2/17: rename STATIC_PATH_VALUE to RBASH_STATIC_PATH_VALUE; + don't use it in shell_initialize; set PATH to it just before + imposing restricted shell restrictions - 4/24 + 2/24 ---- -redir.c - - redirection_error: if the redirection involves {varname}, only use - `varname' in the error message if the error code is < 0 (one of the - internal redirection errors, like ambiguous or bad variable name); - otherwise the issue is probably with the filename and should be treated - as usual. Fixes problem reported by Dr. David Alan Gilbert - +subst.c + - expand_string_for_rhs: revert change from 2/19 concerning setting + expand_no_split_dollar_star so we are consistent with the Posix + examples. This anticipates Martijn Dekker initiating an austin + group discussion about this case -configure.ac,config.h.in - - sys/ioctl.h: add check in AC_CHECK_HEADERS macro, define HAVE_SYS_IOCTL_H + 2/25 + ---- +pcomplete.c + - gen_shell_function_matches: if COMPREPLY is an associative array, + don't coerce it to an indexed array, which will fail to produce any + matches anyway. Report from Grisha Levit + - bind_comp_words: if COMP_WORDS exists as a nameref variable, ignore + the nameref attribute. Report from Grisha Levit + -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 +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 - 4/27 - ---- -lib/malloc/table.c - - mem_table: now a circular buffer showing the state of the last - REG_TABLE_SIZE allocations rather than a hash table that quickly - fills up + 3/1 + --- +subst.c + - expand_word_list_internal: if a variable assignment fails (e.g., due + to a readonly variable) in a non-interactive posix mode shell, don't + abort the shell if the assignment is being performed by the command + builtin, even if it's something like `command eval v=1'. Fixes + RedHat bug https://bugzilla.redhat.com/show_bug.cgi?id=1389838 + (reported by Denys Vlasenko) -builtins/declare.def - - typeset_builtin: add -n to list of supported options. Omission - reported by Valentin Bajrami + 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 -unwind_prot.c - - use object caches instead of malloc/free to allocate and deallocate - unwind-protect elements - - uwp_init: initialize unwind-protect element object cache +lib/glob/smatch.c + - is_cclass: broke into two functions: is_valid_cclass and cclass_test, + for future expansion. No functionality change -unwind_prot.h - - uwp_init: extern declaration +lib/glob/sm_loop.c + - BRACKMATCH: when testing a character against a character class name, + use the unfolded (original) character, since we're not performing a + comparison. This is what glibc does. Fixes bug reported by + Lukáš BaÅinka -shell.c - - main: call uwp_init right after calling cmd_init -- initialize all the - object caches at the same place + 3/4 + --- +doc/{bash.1,bashref.texi} + - note that the arguments to -eq and the rest of the arithmetic + operators are evaluated as expressions when using [[. Report from + Rob la Lau -lib/malloc/table.[ch] - - mlocation_table: new table to keep track of allocation locations by - file and line, functions to initialize table, record an allocation, - and dump the table to stderr - - mregister_alloc: call mlocation_register_alloc to record the location - (source file/line) for each allocation to pinpoint malloc hot spots - by number of calls. More detail than gprof -parse.y - - set_line_mbstate: replace free/xmalloc pair with xrealloc call - - read_token_word: call alloc_word_desc instead of xmalloc so we can take - advantage of the WORD_DESC cache + 3/7 + --- +lib/readline/display.c + - update_line: completely rewrote the code that handles line wrapping + in the presence of multibyte/double-width characters; punts to a + dumb update in cases where the number of screen positions doesn't + match + - update_line: in one case, where we are deleting characters from the + line, if we are writing a non-space into the last screen character + position, note that we are no longer using a space as a placeholder + for a line wrap where there is a multi-width character that won't + fit on the screen line (wrapped_line[current_line+1] = 0) - 4/28 + 3/10 ---- -execute_cmd.c - - execute_simple_command: if command execution fails because the command - is a directory, and the `autocd' option is set, add a `--' argument - to the constructed `cd' command to protect against command names with - the same name as options to `cd'. Report and fix from - isabella parakiss +lib/readline/readline.c + - bind_arrow_keys_internal: add default key bindings for control- + arrow keys, suggested by Per Bothner - 4/30 + 3/13 ---- -jobs.c - - printable_job_status, j_strsignal: change calls to strcpy and sprintf - that write to retcode_name_buffer to use strncpy and snprintf to - avoid buffer overflows caused by malicious translations. Bug and fix - from Trammell Hudson - - 5/1 - --- -strtrans.c - - ansicstr: make sure the buffer is at least 12 bytes to ensure enough - space for any eventual call to u32cesc for one multibyte char +doc/{bash.1,bashref.texi} + - clarify the prompt strings the undergo expansion (PS0, PS1, PS2, and + PS4) before being displayed. Based on a report from Grisha Levit + - 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 + 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 -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 - +execute_cmd.c + - execute_null_command: if we fork to execute the command, the subshell + is not interactive + - execute_null_command: for safety's sake, if a redirection attached + to a null command affects fd 0 or the fd the shell is reading for + input, and the redirection can potentially change or close that file + descriptor, force a fork so the redirection is done in a subshell -shell.c - - open_shell_script: set running_shell_script to 1, set to 0 in every - other case (new variable) - - main: when checking whether or not to call start_debugger, test - running_shell_script instead of dollar_vars[1]. The goal is to not - invoke the debugger for interactive shells but allow it to run for - things like `bash --debugger -i /tmp/script'. Problem reported by - Rocky Bernstein + 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 -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 - +execute_cmd.c + - undo_partial_redirects: new function, performs redirections specified + in redirection_undo_list and disposes of them. Intended to be used + to unwind redirections performed before a redirection error + - dispose_partial_redirects: new function, disposes of + redirection_undo_list and nulls the list + - execute_command_internal: use undo_partial_redirects - 5/10 - ---- -lib/glob/gmisc.c - - match_pattern_char, match_pattern_wchar: if passed an empty string, - return a match if the first character of the pattern is `*' +execute_cmd.h + - undo_partial_redirects: extern declaration + - dispose_partial_redirects: extern declaration subst.c - - pat_subst: change to allow empty strings to be replaced as long as - pattern matches empty string. Report and fix from isabella parakiss - + - exp_jump_to_top_level: if we are throwing an expansion error while + expanding a redirection (expanding_redir != 0), undo any undoable + redirections by calling undo_partial_redirects() so we don't leave + any in place - 5/12 +variables.c + - initialize_shell_variables: if SHELLOPTS is in the environment, + unset the readonly attribute on any existing variable with that + name. It may have been created by processing a -o option on the + command line. Fixes issue reported by Stephane Chazelas + + + 3/16 ---- -lib/sh/strtrans.c - - ansic_wshouldquote: make behavior consistent in the event of an - invalid multibyte sequence: return 1 to the caller so the string - will be $'...' quoted +lib/readline/histfile.c + - read_history_range: short-circuit and do nothing if the history file + is of 0 size + - read_history_range: make sure the buffer is zero-terminated so the + timestamp tests work right for history files of 1 character. Report + and recommended fix from Denis Martinez -builtins/cd.def - - cd_builtin: print the right error message even if printable_filename - changes errno (e.g., EILSEQ) +lib/readline/complete.c + - compute_lcd_of_matches: when trying to compute the common prefix + of a set of matches while performing case-insensitive completion + matching, don't sort the match list unless rl_sort_completion_matches + is non-zero. Fixes problem reported by Roee Bar -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 + 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 -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 - +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 - 5/15 + 3/21 ---- -aclocal.m4 - - BASH_CHECK_MULTIBYTE: when checking for locale_charset, add $LIBINTL - to $LIBS. If we're using the included lib/intl/libintl.a, it will - include a version of locale_charset +subst.h + - ASS_NOEVAL, ASS_NOLONGJMP: new values for assignments, used by + make_variable_value - 5/17 - ---- -lib/readline/bind.c - - sv_isrchterm: make sure we check for v[end] == 0 while in the loop - looking for whitespace. Bug report and fix from Sergio Durigan - Junior +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 -lib/sh/shmbchar.c - - mbstrlen,mbsmbchar: move calculation of MB_CUR_MAX out of loop; - calculate it once at beginning +bashline.c + - bash_execute_unix_command: don't bother to attempt optimization by + checking whether the call to parse_and_execute changes $READLINE_LINE; + it can be defeated by the new code that optimizes appends to string + variables. Bug reported by Grisha Levit -lib/sh/mbscmp.c - - mbscmp: move calculation of MB_CUR_MAX out of loop; calculate it once - at beginning + 3/22 + ---- +subst.c + - expand_string_for_rhs: re-apply change from 2/19 based on discussion + on the austin-group mailing list about how unquoted ${var-$*} + expands when IFS is null. Originally reported by Martijn Dekker + -lib/sh/mbscasecmp.c - - mbscasecmp: move calculation of MB_CUR_MAX out of loop; calculate it - once at beginning + 3/25 + ---- +parse.y + - read_token_word: if we read a WORD immediately after a CASE, FOR, or + SELECT, increment `expecting_in_token' to note that we're going to + be reading IN as the next non-newline token + - special_case_tokens: if we're expecting an IN (expecting_in_token > 0) + and we have an "in", return IN and decrement expecting_in_token. This + is a better implementation of Posix grammar rule 6 than the previous + code in that function (which is still there for posterity, but should + eventually be removed). Fixes bug reported by Torka Noda + -lib/sh/shquote.c - - sh_backslash_quote: move calculation of MB_CUR_MAX out of loop; - calculate it once at beginning +subst.c + - string_list_pos_params: if the expansion is not quoted, and IFS is + null, return a string containing the quoted positional parameters + separated by spaces. Callers know what to do with the string + - parameter_brace_substring,parameter_brace_remove_pattern, + parameter_brace_transform,parameter_brace_patsub,parameter_brace_casemod: + for the VT_POSPARMS case, after calling the operator-specific + expansion function, which eventually calls string_list_pos_params, + leave the returned string alone, since it's already quoted properly + - parameter_brace_expand: after calling the above functions to perform + expansions, if the expansion is being performed on an unquoted $* + when IFS is null, set the W_SPLITSPACE flag in the return WORD_DESC + so that splitting on spaces is performed on the already-quoted word. + Fixes bug reported by Grisha Levit -lib/sh/casemod.c - - sh_modcase: move calculation of MB_CUR_MAX out of loop; calculate it - once at beginning + 3/28 + ---- +subst.c + - process_substitute: change so the subshell doesn't inherit the 'v' + option, like command substitution now does (as of bash-4.4). + Suggested by Grisha Levit + 3/30 + ---- subst.c - - expand_word_internal: move calculation of MB_CUR_MAX out of loops; - calculate it once at beginning of function (XXX should use - locale_mb_cur_max) + - parameter_brace_casemod: now takes a pflags parameter, like + parameter_brace_patsub; changed callers + - parameter_brace_transform: now takes a pflags parameter, like + parameter_brace_patsub; changed callers + - pos_params_pat_subst,pos_params_modcase: if mflags indicates we're + on the rhs of an assignment statement and not going to perform + word splitting, we're expanding $*, and $IFS is null, make sure + string_list_pos_params treats the expansion as double-quoted, so + the positional parameters will be concatenated. Fixes bug reported + by Grisha Levit - 5/22 + 3/31 ---- -lib/readline/rlmbutil.h - - _rl_wcwidth: new function, short-circuits wcwidth calls for ASCII - printable characters, returns 1 for those - - WCWIDTH: call _rl_wcwidth instead of wcwidth +doc/{bash.1,bashref.texi} + - add notes to the description of pipelines emphasizing that each + element of a pipeline is executed in a subshell, referring to the + description of a command execution environment, and that the + lastpipe option can modify that behavior. From a discussion with + Jean Delvare -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 - + 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 - 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 +array.c + - array_patsub,array_modcase: handle ${A[*]} identically to $* when + not quoted and IFS is null (separate with spaces). Makes things + like ${A[*]/x/y} behave the same as ${*/x/y} when IFS is null -lib/readline/rlprivate.h - - _rl_optimize_typeahead: extern declaration +subst.c + - parameter_brace_patsub,parameter_brace_casemod: if expanding ${A[*]} + when the match is on the rhs of an assignment statement (PF_ASSIGNRHS) + and ifs is null, make sure the match is performed as if it were + quoted + - parameter_brace_substring: now takes a PFLAGS argument + - parameter_brace_substring: if expanding $* in a context where we + don't want to do word splitting (expand_no_split_dollar_star && + PF_NOSPLIT2), make sure we expand $* as if it were quoted + - parameter_brace_substring: if expanding an unquoted $* on the rhs of + an assignment statement when IFS is null, make sure we expand the $* + as if it were quoted -lib/readline/doc/{hstech.texi,history.3} - - next_history: clarify under what circumstances the history offset is - incremented; suggestion from Glenn Golden + 4/4 + --- +doc/{bash.1,bashref.texi} + - read: document that a delim argument of '' terminates each line when + a NUL character appears -print_cmd.c - - print_arith_command: should be compiled in if either DPAREN_ARITHMETIC - or ARITH_FOR_COMMAND is defined. Report from Flavio Medeiros - + 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 -flags.c - - change_flag: new variable verbose_flag, set when `v' flag modified; - sets value of echo_input_at_read correspondingly + 4/7 + --- +subst.c + - pos_params_pat_subst: if MATCH_ASSIGNRHS is set, don't expand $* + as quoted unless expand_no_split_dollar_star is also set. Fixes + expansion bug reported on 4/4 by Grisha Levit + - 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 -flags.h - - verbose_flag: new extern declaration + 4/8 + --- +builtins/read.def + - read_mbchar: if unbuffered == 2, we are running read -N and need to + use zreadn to read the rest of the multibyte char, since the + previous call to zreadn may have buffered characters. Fixes bug + reported by Stephane Chazelas -shell.c - - long_options: --verbose now sets verbose_flag - - main: set echo_input_at_read from verbose_flag after parsing any - long options +pathexp.h + - QGLOB_CTLESC: new flag for quote_string_for_globbing: means to turn + CTLESC CTLESC (quoted CTLESC that's usually removed as part of + word splitting or quote removal) into CTLESC -builtins/fc.def - - fc_builtin: don't unwind-protect echo_input_at_read directly; set it - to 1 before calling fc_execute_file as before, and reset it to value - of global verbose_flag using set_verbose_flag called from an - unwind_protect. Report from isabella parakiss +pathexp.c + - quote_string_for_globbing: if QGLOB_CTLESC is present in flags, + turn CTLESC CTLESC into CTLESC, even if the first CTLESC is preceded + by a backslash. Callers can't do this because the remaining CTLESC + will be treated as a quoting character and turned into a backslash -builtins/shopt.def - - shopt_set_debug_mode: new function, called when the extdebug shell - option changes. Right now, it sets function_trace_mode when extdebug - is enabled, and turns off when extdebug is disabled. The - documentation has always said that shopt does this. Report from - Peng Yu +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 + - 5/27 - ---- -findcmd.[ch] - - add support for EXECIGNORE shell variable, list of extglob patterns - that prevent matching filenames from being identified as executable - files + 4/9 + --- +subst.c + - string_transform: after calling ansiexpand for the `E' transformation, + need to call dequote_escapes because ansiexpand assumes it is being + called by the parser and arranges for ansicstr to quote CTLESC and + CTLNUL with CTLESC. Reported by Grisha Levit variables.c - - EXECIGNORE: arrange for findcmd.c:setup_exec_ignore to be called when - $EXECIGNORE changes + - mk_env_string: when exporting functions, run them through + dequote_escapes because any strings containing CTLESC or CTLNUL are + still quoted with CTLESC. Reported by Grisha Levit + -variables.h - - sv_execignore: extern declaration +subst.[ch] + - quote_escapes,dequote_escapes: now take const char * argument -doc/{bash.1,bashref.texi} - - document EXECIGNORE variable +execute_cmd.c + - execute_intern_function: if the function name contains CTLESC, run + it through dequote_escapes just in case it got CTLESC quoting + CTLESC or CTLNUL from the parser - 5/28 + 4/11 ---- -lib/readline/callback.c - - rl_callback_sigcleanup: new function, cleans up and unsets any state - rl_callback_read_char uses. Intended to be used after a signal +eval.c + - reader_loop: make sure PS0 is expanded and displayed before + incrementing the command number -lib/readline/signals.c - - _rl_handle_signal: call rl_callback_sigcleanup on SIGINT. Fixes bug - reported to python group by Martin Panter +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 -lib/readline/isearch.c - - _rl_isearch_cleanup: now a public function so rl_callback_cleanup can - call it + 4/12 + ---- +support/Makefile.in + - clean: remove man2html.o as part of this production instead of + waiting until `distclean'. Reported by chrlis -lib/readline/search.c - - _rl_nsearch_cleanup: now a public function so rl_callback_cleanup can - call it +subst.c + - string_list_pos_params: if we are expanding $* in a context where + IFS is null and expand_no_split_dollar_star is set (no word + splitting), use string_list_dollar_star to force the positional + parameters to be joined without first separating them into a list + and attempting to join them later. Fixes problem with constructs + like ${var=${*:1}}, pointed out by Grisha Levit + . This undoes change to @Q from 4/7, so + list_transform change reverted -lib/readline/rlprivate.h - - _rl_[in]search_cleanup: extern declarations + 4/19 + ---- +builtins.h + - added BUILTINS_H include guard -lib/readline/readline.h - - rl_callback_sigcleanup: new extern declaration +examples/loadables/Makefile.in + - install loadables.h as sample include file, along with Makefile.inc -lib/readline/doc/rltech.texi - - rl_callback_sigcleanup: documented + 4/23 + ---- +bashline.c + - maybe_make_readline_line: don't try to do anything if the passed + NEW_LINE is NULL. Report from Jaren Stangret , + fix from Eduardo Bustamante -lib/readline/readline.h - - bump readline version to 7.0 due to addition of rl_callback_sigcleanup + 4/24 + ---- +parse.y + - xparse_dolparen: if the current token (the last thing read_token + returned to yylex) is shell_eof_token, assume that it is the new + bison lookahead token and clear it. Fixes bug reported by + Werner Fink - 5/29 + 4/25 ---- -builtins/declare.def - - declare_internal: if we are trying to change attributes or value for - a nameref variable whose value points to an unset variable, make - sure we create a new variable whose name is the value of the nameref - variable. That is, +doc/{bash.1,bashref.texi} + - cmdhist: clarify that this option only has an effect if history is + enabled. Suggested by Matthew Braun - declare -n foo=bar - unset foo # unsets bar - declare -i foo + 4/26 + ---- +jobs.c + - wait_for: if a non-interactive shell with job control enabled (set -m) + detects that a foreground job died due to SIGINT, act as if the shell + also received the SIGINT. Prompted by an austin-group-l discussion + - waitchld: run SIGCHLD trap for each child exited even if job control + is not enabled when in Posix mode. Prompted by an austin-group-l + discussion - should create a (invisible) variable named `bar' with the integer - attribute. Fixes problem reported by Greg Wooledge - + 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 + -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/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 -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 + 4/28 + ---- +lib/glob/sm_loop.c + - GMATCH: implement a clever technique from glibc that avoids + backtracking past a `*' if we've already chosen to use it and need + matches beyond it. Look at https://research.swtch.com/glob for a + longer explanation. This results in a significant speedup for globs + with multiple instances of `*', especially with more than 4. - 6/2 + 5/2 --- -general.c - - conf_standard_path: moved get_standard_path here from command.def; made - public function - -general.h - - conf_standard_path: extern declaration - +lib/readline/bind.c + - rl_translate_keyseq: make sure a trailing backslash in the key + sequence is preserved. Report from Eduardo Bustamante + - 6/3 + 5/3 --- -parse.y - - parse_matched_pair: make sure that command substitution constructs - within ${...} expansions are parsed as such using parse_comsub, so - the P_FIRSTCLOSE flag doesn't stop parsing if a right brace appears - within the comsub. Report from Christos Zoulas - -findcmd.c - - search_for_command: take two new flags for FLAGS arg: CMDSRCH_STDPATH, - which means use the command -p path, and CMDSRCH_TEMPENV, currently - unused. Existing flag value of 1 now CMDSRCH_HASH - - search_for_command: don't set `path' to NULL if it wasn't found in - the temporary environment; we can use it later - - search_for_command: look for the hashed file if temp_path == 0, not - if we set path back to 0 (or path lookup failed) - - search_for_command: just call find_user_command_in_path with a - pathlist argument that's set depending on the flags passed - - find_in_path: new function, just calls find_user_command_in_path at - this point - - search_for_command: don't put non-existent files into the hash table - -findcmd.h - - CMDSRCH_*: new flags for search_for_command - - find_in_path: extern declaration +builtins/builtin.def + - builtin_builtin: make sure to set this_shell_builtin to the builtin + command being executed, overwriting `builtin'. Leave + last_shell_builtin alone. Fixes bug reported by Luiz Angelo Daros + de Luca -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 +jobs.c + - waitchld: modify change of 4/26 to run SIGCHLD traps even if job + control is not enabled -builtins/command.def - - command_builtin: if -p given with -v or -V, pass the CDESC_STDPATH - flag to describe_command +lib/readline/misc.c + - rl_get_previous_history: if we didn't find a previous history entry + to use, call rl_maybe_unsave_line before returning because we + aren't going to use the saved line, and it has the same undo list + as rl_undo_list. Fixes fuzzing bug reported by Eduardo Bustamante + + - rl_get_{next,previous}_history: if there is no history list, don't + bother doing anything -builtins/type.def - - describe_command: if given the CDESC_STDPATH flag, use find_in_path - with the conf_standard_path() result. Since `all' will never be on - with this flag, at least not yet, we can allocate and free the path - list. Fixes the bug of a temporary environment value for PATH - preceding a `command -pv' or `command -pV' persisting when the - command finishes and means we use fewer unwind-protects + 5/4 + --- +expr.c + - popexp: if we error out due to stack underflow, make sure to zero out + expression and lasttp; they may contain undefined values we don't + want evalerror to print + - expr_unwind: handle expr_depth decrementing below zero + - evalexp: restore the old value of evalbuf even if we error and + longjmp; we may have called evalexp recursively + - evalerror: make sure expression is non-NULL before trying to print it. + These fix fuzzing bug reported by Eduardo Bustamante + , happens only in cases where we don't longjmp on + a fatal expansion error - 6/4 + 5/5 --- -Makefile.in (plus other Makefile.ins) - - VPATH: remove `.' from VPATH value. It's not needed any more and it - trips a GNU make 4.1 bug on Cygwin. Report and fix from Eric Blake - +parse.y + - read_token_word: when checking for a word that's a target of a + redirection, we can potentially call valid_array_reference, which + can end up calling the parser recursively. If it does that, we + need to make sure that yylval.word doesn't change, so we set it back + to the_word. Fixes another fuzzing bug -lib/readline/histfile.c - - history_tempfile: new function, takes history file name as template - and creates a temp file name including the PID - - history_truncate_file, history_do_write: instead of creating backup - and restoring it on failure, use history_tempfile to create a temp - file name, write to it, then rename to original history filename - (handling symlinks using history_restore()). Original report and - patch from Russell Stuart +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 + -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 - +lib/readline/kill.c + - _rl_copy_to_kill_ring: make sure the current slot in the kill ring + has something in it, even if the last command was a kill, before + trying to modify it. Another fuzzing bug - 6/9 + 5/6 --- -execute_cmd.c - - execute_in_subshell: don't call restore_default_signal for the exit - trap, reset_signal_handlers already does the right thing and keeps - the trap string around; no need to kill trap string. Bug report - from Miroslav Koskar - - 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 +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 + -execute_cmd.c - - REAP: test for job_control == 0 also to determine whether or not - to call reap_dead_jobs, since shells without job control enabled - don't report on background process status + 5/8 + --- +builtins/read.def + - read_mbchar: handle zreadn/zreadc/zread returning EOF in the middle + of an incomplete multibyte sequence. Fixes another fuzzing bug + - read_builtin: use mb_cur_max instead of constant 4 when deciding + whether the next character can exceed the number of bytes available + in input_string -doc/bash.1,lib/readline/doc/hsuser.texi - - history: clarify documentation of -a option to note that it will not - append the same line to the history file more than once. Fixes - problem reported by Reuben Thomas +lib/readline/input.c + - MinGW: include before . Fix from Eli Zaretskii + - 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 +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 - - 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 + - token_is_assignment: use the allocated buffer approach in all cases, + not just if we're not using bash malloc. This avoids the assignment + to t[i+1] writing beyond the end of the allocated token if + i == token_buffer_size - 1. Another fuzzing bug + - xparse_dolparen: if parse_string returns < 0, we clear out the + current shell_input_line before performing a longjmp, since we're + abandoning parsing of this command. This is consistent with how + the parser resynchronizes after other syntax errors + - GRAMMAR: add 'error yacc_EOF' production to handle a syntax error + that's immediately followed by an EOF after resynchronization. + Fixes another fuzzing bug - 6/13 + 5/10 ---- -subst.c - - dequote_string: don't turn strings consisting of a single CTLESC - into empty strings; return them unmodified. The idea is that there - is nothing to quote. This means that something like - c=$'\001' - x=$c - results in x containing '\001' when IFS=$'\001'. See if this will - cause problems by adding a debugging statement in the code +lib/readline/text.c + - _rl_set_mark_at_pos: don't let the mark be set to a position < 0. + Fixes a fuzzing bug + - rl_exchange_point_and_mark: don't do anything if the mark is already + less than 0 - 6/15 + 5/12 ---- -parse.y - - CHECK_FOR_RESERVED_WORD: don't return ESAC when you read `esac' - after a `|' while in a case pattern list (parser_state & PST_CASEPAT). - This is Posix grammar rule 4 - (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_10_02) +lib/readline/rlmbutil.h + - wchar_t: make sure this is defined as int if multibyte characters + aren't supported - 6/16 +lib/readline/text.c + - _rl_change_case: don't force use of ascii toupper and tolower if + isascii returns true; it's not defined to work on characters outside + the 0..255 (really 0..127) range. Bug reported by + Eduardo Bustamante + + 5/14 ---- -jobs.c - - wait_for: make sure we queue SIGCHLD signals if a SIGCHLD trap - handler is running (signal_in_progress or IMPOSSIBLE_TRAP_HANDLER), - since we allow recursive trap invocations now - - wait_for: make sure we treat SIGCHLD as trapped if the trap handler - is set to IMPOSSIBLE_TRAP_HANDLER so we don't miss signals during - calls to run_sigchld_trap() +lib/readline/text.c + - rl_change_case: handle case where the old and new characters (after + the case change) are not the same number of bytes. Pointed out in + http://lists.gnu.org/archive/html/bug-bash/2015-01/msg00091.html -trap.c - - run_pending_traps: since we allow recursive trap handler invocations, - make sure we set pending_traps[SIGCHLD] to 0 while we mark the - signal handler in progress (SIG_INPROGRESS) and don't reset it to 0 - after run_sigchld_trap returns in case more SIGCHLDs have been - queued while it's running +lib/readline/display.c + - expand_prompt: use `ret' as first parameter to _rl_find_prev_mbchar + since that needs the base of the array. Bug from fuzzing reported by + Eduardo Bustamante - 6/22 + 5/15 ---- -lib/readline/readline.c - - _rl_dispatch_subseq: if we shadowed any function, not just self- - insert, bind that function to the key we shadowed and dispatch on it. - This preserves and dispatches off the original key, not ANYOTHERKEY, - and makes sure we are dispatching from a keymap with the right key - binding. Fixes bug reported by Carlos Pita - +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 - 6/23 + 5/16 ---- bashline.c - - attempt_shell_completion: don't read past the end of rl_line_buffer - while skipping assignment statements before command names. Fix for - bug reported by Hanno Böck + - 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 -lib/readline/parens.c - - _rl_enable_paren_matching: make paren matching work in vi insert - mode. Really, this time. Bug report from Carlos Pita - +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 - 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 - +examples/bash-completion/ + - new place to include a current or recent version of the + bash-completion package - 6/30 + 5/19 ---- -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 +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 - 7/7 - --- + 5/24 + ---- +lib/readline/search.c + - _rl_nsearch_callback,noninc_search: handle _rl_search_getchar + returning -1 (EOF or read error) by aborting the search. + Fuzzing bug reported by Eduardo Bustamante -{jobs,nojobs}.c - - wait_sigint_cleanup: new function, to be called by longjmp targets - for wait_intr_buf. Performs any necessary cleanup of internal waitchld - state before going back to top level + 5/25 + ---- +variables.c + - localvar_inherit: new variable, controlled by shopt localvar_inherit + option + - make_local_variable: if localvar_inherit is set, the new local + variable inherits a previous scope's variable's value, attributes + (except nameref), and dynamic variable information. If a local + variable inherits a value, the local is not invisible -jobs.h - - wait_sigint_cleanup: new extern declaration +builtins/shopt.def + - localvar_inherit: new option -builtins/wait.def - - wait_builtin: call wait_sigint_cleanup after longjmp back to - wait_intr_buf on interrupt +doc/{bash.1,bashref.texi} + - localvar_inherit: document new shopt option -[bash-4.4-alpha frozen] + 5/29 + ---- +lib/readline/readline.c + - _rl_subseq_result: only return -1 and back up the chain if we are + dealing with a result (r) that's already < 0 and we are at the end + of a multi-key sequence. Otherwise, a failing readline command (e.g., + delete-char at the end of a line) could cause this code to be + executed. Report from Nuzhna Pomoshch - 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 +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 - 7/10 + 5/30 ---- +variables.c + - set_pwd: if in Posix mode, and PWD appears in initial environment as + an absolute pathname to the current directory, set PWD to the result + of canonicalizing the environment value, or to the physical path if + canonicalization fails. From a suggestion by Eduardo Bustamante + -pcomplib.c - - compspec_copy: set the refcount on the copy to 1, since it's a freshly - allocated copy and there are no other pointers to it. Fixes memory - leak from gen_progcomp_completions + 5/31 + ---- +builtins/read.def + - read_builtin: if -n or -N option is supplied with a 0 argument, + don't attempt to read any characters; bail out right away. Reported + by Eduardo Bustamante , relaying from IRC -lib/readline/complete.c - - printable_part: if the pathname passed is just `/', just return it - instead of potentially reading before the `/'. Fixes bug reported - by Hanno Böck + 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 - 7/11 - ---- -support/man2html.c - - change calls to malloc to use xmalloc; provide standard xmalloc - definition. Report from Bill Parker +variables.h + - att_regenerate: new internal variable attribute: if set, regenerate + dynamic variable's value when it's exported and we are creating the + export environment -builtins/wait.def - - wait_intr_flag: set to denote validity of wait_intr_buf as target - for longjmp; reset by WAIT_RETURN macro; should always be 0 when - wait_builtin returns +variables.c + - init_dynamic_variables: LINENO, EPOCHSECONDS, EPOCHREALTIME: set + internal regenerate attribute for these dynamic variables + - make_env_array_from_var_list: if a dynamic variable has the + regenerate attribute set, call the dynamic value function to generate + an updated value before placing it in the environment. From a report + about exporting LINENO from Robert Elz -quit.h - - CHECK_WAIT_INTR: now also checks wait_intr_flag to ensure valid state - of wait_intr_buf before sh_longjmp + 6/4 + --- +lib/glob/sm_loop.c + - BRACKMATCH: at the matched: label, make sure we get the bracket + character we're looking for (char class, collating symbol. etc.) + before we decrement the count of braces we're looking for. Eventually + we could do something about badly-formed bracket expressions -{jobs,nojobs}.c - - wait_intr_flag: extern declaration for use by CHECK_WAIT_INTR + 6/7 + --- +lib/readline/histlib.h + - strchr: only declare if __STDC__ is not defined, since we already + include . Report from Chi-Hsuan Yen -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 + 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 -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 +lib/readline/mbutil.c + - _rl_get_char_len: use MB_CUR_MAX in the call to mbrlen; there's no + need to look at the rest of the string when we're just interested in + the length of a single character - 7/14 + 6/12 ---- -execute_cmd.c - - execute_connection: remove the fork optimization from and AND_AND - and OR_OR cases; it has trouble with `a && b && c', since the `&&' - is left-associative. Putting that code here can result in unwanted - fork optimizations since the `b' will end up as `second' on a - recursive call to execute_command. Bug reported by Mike Frysinger - - -builtins/evalstring.c - - optimize_fork: moved code from execute_connection to here; checks - whether the RHS of a && or || passes the suppress_fork() tests and - turns on the NO_FORK bit if so - - parse_and_execute: if suppress_fork() tests fail, check whether the - command to be executed is a connection and attempt to optimize the - fork for the right side using optimize_fork(). The key is dealing - with the entire command passed to `bash -c' or `eval' +jobs.c + - wait_for: when waiting for the next child to exit (ANY_PID), make + sure to restore the old SIGINT handler before returning. Fixes + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864649 -builtins/common.h - - optimize_fork: new extern declaration + 6/14 + ---- +lib/readline/display.c + - expand_prompt: make sure `ret' is NULL-terminated before calling + _rl_prev_mbchar_internal, since that calls strlen, which requires + the passed string to be NULL-terminated. Another fuzzing bug. -execute_cmd.c - - execute_command_internal: enable code put in to undo redirections - before exiting the shell due to `set -e' in the case of a shell - function that gets command-not-found or a syntax error. Reported - back in May, 2014 by Mark Ferrell + 6/15 + ---- +lib/readline/isearch.c + - _rl_isearch_fini: use rl_replace_line instead of strcpy so rl_end + gets set right + - _rl_isearch_fini: after restoring rl_point, call _rl_fix_point so + we don't set rl_point > rl_end. Fixes a fuzzing bug -bashhist.c - - bash_history_inhibit_expansion: enable change from 1/10 that skips - over history expansion character in command and process - substitution +lib/readline/mbutil.c + - _rl_find_next_mbchar_internal: if _rl_adjust_point returns < 0, + just punt, treat the value as a byte, and advance point by 1 - 7/15 - ---- -lib/readline/{history,undo}.c - - replace_history_data now _hs_replace_history_data +lib/readline/util.c + - rl_tilde_expand: rearrange code in the whitespace loop so that + `start' gets tested first and we don't try to dereference + rl_line_buffer[-1]. Another fuzzing bug from dualbus@gmail.com - 7/16 - ---- -lib/readline/readline.c - - make sure _rl_to_lower doesn't ever get characters that are outside - of its valid range by casting arg to unsigned char +bashline.c + - bash_dequote_filename: make sure that pointers that are used as + indices into sh_syntaxtab are cast to unsigned char first, to + avoid problems with signed chars > 128. Fixes a fuzzing bug. -lib/readline/colors.h - - change completion prefix color (C_PREFIX) to be the same as C_SOCK, - which is less likely to collide with file type colorings (magenta) +lib/readline/kill.c + - _rl_copy_to_kill_ring: when reallocating the kill ring, make sure to + allocate one more than the max number of kills so the loop that + copies the kill ring entries down runs right (and to mirror the + initial allocation). Fixes a fuzzing bug. -lib/readline/complete.c - - fnprint: now takes an additional argument: the full, expanded pathname - corresponding to the `toprint' argument - - fnprint: don't zero out prefix_bytes if we're not printing the - ellipisis but we still want to use prefix_bytes for displaying - the common prefix in a color - - print_filename: move colored-stats display responsibility into fnprint - - fnprint: change so colored-prefix and colored-stats can cooperate - and display filenames with multiple colors: one for the prefix and - one for the file type. The prefix is displayed in the prefix color - and the remainder of the pathname, if any, is displayed in the color - corresponding to the file type. Report and suggestion from Mike - Frysinger +lib/readline/isearch.c + - _rl_isearch_dispatch: make sure that cxt->sline_index never goes < 0 + even when searching a line in reverse. Fixes a fuzzing bug - 7/17 + 6/16 ---- -lib/readline/readline.[ch] - - rl_readline_state: now unsigned long, prepare for more than 32 states +parse.y + - xparse_dolparen: short-circuit immediately if passed a empty string +lib/readline/display.c + - update_line: when wrapping multibyte characters, make sure we deal + with WCWIDTH returning -1. Fixes a fuzzing bug - 7/18 + 6/17 ---- -lib/readline/history.h - - history_offset: now declared here, was always a global variable - - copy_history_entry: now declared here, part of the public interface - - alloc_history_entry: now declared here, part of the public interface +execute_cmd.c + - execute_coproc: make sure `invert' is set before trying to use it + when returning failure on invalid coproc name. Report and fix from + Eduardo Bustamante + - 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 + - 7/20 - ---- -lib/readline/readline.h - - RL_STATE_CHARSEARCH: new state, for vi mode character search. Was - previously handled by simply setting _rl_callback_func +lib/readline/display.c + - update_line: make sure all references to `wrapped_line' are wrapped + with #ifdef HANDLE_MULTIBYTE. Report and fix from Eduardo Bustamante + lib/readline/vi_mode.c - - rl_domove_motion_callback: split into two functions, remaining code - after _rl_dispatch call goes into new function - _rl_vi_domove_motion_cleanup - - rl_vi_char_search: set RL_STATE_CHARSEARCH - - rl_vi_char_search: sets `i2' member of callback data to the key used - to invoke the char search - - _rl_vi_callback_char_search: unset RL_STATE_CHARSEARCH after reading - the character to find - - _rl_vi_domove_motion_cleanup: make sure RL_STATE_VIMOTION is unset in - all cases where this function returns - - _rl_vi_domove_motion_cleanup: use `end' member of vi motion context - as value of rl_end to restore after adding blank at end of line in - rl_domove_motion_callback; avoids need to keep `old_end' and somehow - pass it between the two functions + - _rl_vi_change_char: don't use rl_point++ when you mean to move + forward a character; use _rl_vi_append_forward to account for + multibyte characters and take vi end of line handling into account + - _rl_vi_last_replacement: now an array of chars whether we are + using multibyte chars or not. If we're not, the character we read + to use as the replacement is saved as the first element of the array + - rl_vi_change_char,_rl_vi_callback_change_char: changes to deal with + _rl_vi_last_replacement being an array. Fixes bug reported by + Eduardo Bustamante + +lib/readline/mbutil.c + - _rl_get_char_len: look at at most MB_CUR_MAX characters, but maybe + fewer if the length of the string is less -lib/readline/rlprivate.h - - _rl_vi_domove_motion_cleanup: new extern declaration +builtins/bind.def + - unbind_keyseq: new function for the -r option; checks whether the + key sequence is actually bound before trying to bind it to NULL. + Partial fix for https://savannah.gnu.org/support/?109329 -lib/readline/callback.c - - rl_callback_read_char: handle RL_STATE_CHARSEARCH, including case - where char search is vi motion command for d/c/y/m and RL_STATE_VIMOTION - is set when this is called. Last of set of fixes for bug reported - by Carlos Pita with vi-mode `dty' command - in callback mode +parse.y + - augment `error yacc_EOF' production to call YYABORT in non-interactive + shells or calls to parse_and_execute (eval, command substitution, + etc.) Fixes bug reported by Martijn Dekker - 7/21 + 6/19 ---- -subst.c - - command_substitute, process_substitute: add QUIT call in the child - after restoring original signal handlers to catch post-fork SIGINT - or terminating signal - -jobs.c,nojobs.c - - make_child: after forking, clear interrupt_state in child - before restoring signal mask so children get their own set of - interrupts +bashline.c + - edit_and_execute_command: don't add rl_line_buffer to the history + list if it's empty; consistent with how other code treats an empty + line - 7/22 - ---- -lib/sh/shquote.c - - sh_double_quote: since all uses of the return value from this function - are for display and not subject to subsequent expansion, we don't - need to protect CTLESC and CTLNUL with CTLESC. Bug report and fix - from isabella parakiss +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 + -parse.y - - decode_prompt_string: need to protect literal instances of CTLESC - and CTLNUL with CTLESC, even if they are not coming out of one of - the backslash-expansions +general.c + - line_isblank: new function: returns true if passed string is composed + entirely of blanks -subst.c - - make_internal_declare: fixed memory leak; make_internal_declare should - free the memory it allocates to construct the word list. From Red - Hat bug 1245233; https://bugzilla.redhat.com/show_bug.cgi?id=1245233 +general.h + - line_isblank: new extern declaration -lib/readline/readline.c - - _rl_dispatch_subseq: when checking whether an ESC in vi insert mode - should be treated as part of a key sequence or as a single char, - make sure we are getting input from the keyboard before we check - _rl_input_queued(). If we are getting input from a macro, this - causes a needless delay. Report from Carlos Pita - +parse.y + - history_delimiting_chars: return "" for a blank line, since there's + nothing to delimit with `;' - 7/23 + 6/21 ---- -input.c - - save_bash_input: before checking to see whether or not a new fd has a - stale associated buffer, make sure that the new fd is within bounds. - Bug report and fix from Alexey Makhalov +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 - 7/24 - ---- -doc/{bash.1,bashref.texi} - - note that the `return' builtin accepts arguments beginning with `-' - without requiring `--' +expr.c + - evalexp: after running expr_unwind, make sure we reset expr_depth + to 0 for the next call + - expr_streval: if after a call to get_array_value (which can call + the expression evaluator recursively) we discover that expr_depth + is less than it was before we called it, we assume there has been + some kind of error and an expr_unwind, so we treat it as an + error and either longjmp back to the expression top level or return + 0 immediately. Fixes bug reported by Eduardo Bustamante + - 7/27 + 6/23 ---- -examples/loadables/Makefile.in - - add variables and targets to support `make install'; installs - supported builtins in $(libdir)/bash +doc/{bash.1,bashref.texi} + - add text noting that $* and ${array[*]} (unquoted) can also expand + to multiple words - 7/28 + 6/29 ---- -lib/readline/{readline,rlprivate}.h, lib/readline/display.c - - rearrange some structure members for better alignment and to reduce - padding. Fix from - -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 +general.[ch] + - default_columns: new function, returns the value of COLUMNS, or + refreshes it if check_window_size is set and COLUMNS is unset. By + default, it returns 80 execute_cmd.c - - execute_function: use maybe_set_error_trap in the same way as - maybe_set_debug_trap. Fixes bug reported by David Waddell - + - select_query: use default_columns() instead of fetching value of + COLUMNS directly - 7/29 - ---- -jobs.c - - wait_for: no longer need to call job_signal_status when checking - whether a comsub shell reaped a child that died due to SIGINT; code - now uses child_caught_sigint +builtins/help.def + - show_builtin_command_help: use default_columns() instead of fetching + value of COLUMNS directly - 7/30 + 6/30 ---- -builtins/exec.def - - exec_builtin: after call to restore_original_signals, need to call - default_tty_job_signals to undo changes done by initialize_job_signals. - Fix for problem reported by Andreas Schwab - -doc/{bash.1,bashref.texi} - - clarify definition of metacharacter to explicitly include newline; - prompted by report from George Gallo +builtins/read.def + - read_builtin: call QUIT during the read loop, just in case we get a + signal we should act on that didn't cause read to be interrupted. + Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1466737 + - read_builtin: if -n or -N is supplied with a 0 argument, try a zero- + length read to detect errors and return failure if that read returns + a value < 0. Suggested by dualbus@gmail.com - 8/3 + 7/4 --- -lib/readline/search.c - - _rl_free_history_entry: should be void, not int. Report from - Dilyan Palauzov +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 -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 +bashline.c + - operate_and_get_next: if given an explicit argument, use that to + choose which line in the history to use. - 8/6 - --- -lib/readline/colors.[ch] - - _rl_print_color_indicator: now takes `const char *' argument +lib/readline/doc/rluser.texi,doc/bash.1 + - operate-and-get-next: document new effect of explicit numeric arg lib/readline/complete.c - - colored_stat_start: now takes `const char *' argument - -lib/malloc/table.h - - ma_table_t: `file' member is now `const char *' - -lib/malloc/table.c - - mlocation_register_alloc: make sure variable assigned to `file' in - ma_table_t is of type `const char *'. Fixes from Dilyan Palauzov - - -lib/termcap/termcap.[ch] - - tputs: should return int instead of void + - fnprint: make sure print_len is initialized before using it on + systems without multibyte character support. Report and fix from + Juan Manuel Guerrero -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 + 7/6 --- -subst.c - - parameter_brace_expand: if a substitution (parameter expansion) error - occurs, and shell_compatibility_level is <= 43, return expansion error - as in all previous versions. If shell_compatibility_level is > 43, - a posix-mode non-interactive shell will consider this a fatal error. - Problem reported by Christian Neukirchen - -doc/bashref.texi - - documented that word expansion errors cause fatal errors in posix mode - non-interactive shells +builtins/printf.def + - PRETURN,printf_builtin: check variable returned by bind_printf_variable, + return failure if that indicates we can't perform an assignment + because the variable is marked readonly or noassign. Fixes bug + reported by Arnaud Gaillard - 8/8 + 7/7 --- -subst.h - - SD_COMPLETE: skip_to_delim being called as part of word completion - - SX_COMPLETE: one of the string_extract functions being called as - part of word completion - -bashline.c - - find_cmd_start,find_cmd_end,find_cmd_name: call skip_to_delim with - SD_COMPLETE flag +lib/readline/text.c + - rl_quoted_insert: new feature: a negative argument means to insert + the next -COUNT characters using quoted-insert. Original feature + from Jason Hood . Still needs work on + redisplay + - _rl_insert_next_callback: implement support for negative arguments + similar to rl_quoted_insert: we just insert one at a time and keep + increasing the count until it hits 0 -subst.c - - skip_double_quoted: takes new flags argument; changed callers - - skip_double_quoted: if flags argument includes SX_COMPLETE, pass it - to extract_command_subst - - extract_command_subst: if flags&SX_COMPLETE, call - extract_delimited_string instead of xparse_dolparen, since completion - may call this for unterminated command substitutions. Fixes - (imperfectly) bug reported by Ingo Ruhnke - - skip_to_delim: if passed the SD_COMPLETE flag, pass the SX_COMPLETE - flag to skip_double_quoted - - char_is_quoted: pass SX_COMPLETE flag to skip_double_quoted - - unclosed_pair: pass SX_COMPLETE flag to skip_double_quoted +lib/readline/misc.c + - _rl_arg_callback: if the return value from _rl_arg_dispatch indicates + we should keep reading a numeric argument, update the message with + the new arg value - 8/9 + 7/8 --- -execute_cmd.c - - time_command: catch longjmps to top_level and print command timing - statistics even after a jump to top_level. Fixes issue reported by - Sam Watkins +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 - 8/10 + 7/11 ---- -config-top.h - - OPENLOG_OPTS: if SYSLOG_HISTORY is defined, define to LOG_PID, so - each message is tagged with the pid +lib/readline/vi_mode.c + - rl_vi_replace: when making the new keymap for vi replacement mode, + make sure that ANYOTHERKEY is set correctly, otherwise some input + will cause _rl_dispatch to return -2 to the top level. Fixes fuzzing + bug reported by Ben Wong -bashhist.h - - bash_syslog_history: the first time it's called, call openlog with - OPENLOG_OPTS and SYSLOG_FACILITY + 7/19 + ---- +builtins/read.def + - struct ttsave: make the attrs member a struct, not a pointer, to force + a structure copy that will survive a longjmp to another context. + Leaving it as a pointer to a local struct is not portable - 8/11 + 9/10 ---- -doc/{bash.1,bashref.texi} - - GROUPS,FUNCNAME: change description to note that assignments are - silently ignored, but do not return an error (which would constitute - an assignment error and cause posix mode shells to abort). Problem - pointed out by Grzegorz Bajson +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 - 8/12 + 9/17 ---- -subst.c - - parameter_brace_expand_indir: if the value of the indirectly expanded - variable isn't something that the shell would expand if it were inside - ${}, error out right away before calling parameter_brace_expand_word. - Fixes problem reported by isabella parakiss - - parameter_brace_expand: handle returning &expand_wdesc_error or - &expand_wdesc_fatal from parameter_brace_expand_indir in case it does - that someday +builtins/printf.def + - asciicode: don't use mblen to check whether or not a character is a + valid multibyte character; use mbtowc right away and then inspect + the return value. Fixes bug reported by Stephane Chazelas + - 8/13 + 9/27 ---- -jobs.c - - {save,restore}_pipeline: saved_pipeline now a linked list of pipelines, - new ones allocated in save_pipeline and freed in restore_pipeline. - This allow multiple nested calls to save_pipeline (e.g., in traps - and then in process substitution). Fix for bug reported by isabella - parakiss +{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 -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 +builtins/read.def,variables.c + - fixed a couple of problems (READLINE, ARRAY_VARS) that prevented + the minimal config from building - 8/14 + 10/1 ---- -lib/readline/text.c - - rl_insert: when optimizing typeahead, make sure we set rl_last_func - ourselves if we set pending input, since the mainline code path - won't set rl_last_func if input is pending. Fixes bug reported by - Hiroo Hayashi +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 + - 8/15 + 10/4 ---- -builtins/type.def - - describe_command: if using the short description (CDESC_SHORTDESC) in - posix mode, describe posix special builtins as such. Requested by - Stephane Chazelas - -builtins/enable.def - - BASH_LOADABLES_PATH: a colon-separated list of directories where bash - looks for loadable builtins specified as arguments to `enable -f' - -doc/{bash.1,bashref.texi} - - BASH_LOADABLES_PATH: document new shell variable +subst.c + - expand_string_for_rhs: now takes an additional PFLAGS argument from + its caller (one so far); passes that through to call_expand_word_internal + as W_ASSIGNRHS. Fixes bug reported by Martijn Dekker + + - 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 + -configure.ac,Makefile.in,builtins/Makefile.in - - loadablesdir: set in configure, substitute into Makefiles. Reserved - for future use +command.h + - W_NOASSNTILDE: new word flag, means to not perform tilde expansion + following a `:' even if the word has the W_ASSIGNRHS flag enabled - 8/18 - ---- subst.c - - shell_expand_word_list: if make_internal_declare fails, make sure to - propagate that error return back and make the assignment statement - fail. Fixes seg fault reported by Sergey Tselikh + - expand_word_internal: if we see a `:' with the W_NOASSNTILDE flag + set, just add the character and inhibit any subsequent tilde + expansion. Currently not set anywhere, but it could be set in + expand_string_for_rhs to satisfy its peculiar semantics - 8/20 + 10/6 ---- -builtins/declare.def - - declare_internal: made a slight tweak to the warning message about - quoted compound assignments by printing it only if the array (indexed - or assoc) does not already exist +lib/sh/casemod.c + - sh_modcase: convert even single-byte wide characters to wide upper + or lowercase equivalents to accommodate locales where single-byte + characters have multibyte upper and lower case conversions. Bug + reported by Stephane Chazelas - 8/21 + 10/7 ---- -braces.c - - mkseq: call strvec_dispose before throw_to_top_level if we saw SIGINT - to avoid a memory leak - -trap.c - - maybe_set_return_trap: set the RETURN trap to string if it's not - already trapped, in the same way as the debug and error traps +doc/{bash.1,bashref.texi} + - slight changes to the description of command_not_found_handle to + clarify that it's executed in a separate execution environment, + just like if the command was found. Reported by Martijn Dekker + -execute_cmd.c - - execute_function: use maybe_set_return_trap to allow functions to set - return traps that persist across calls even if function tracing is - enabled + 10/8 + ---- +lib/readline/doc/{history.3,hstech.texi} + - history_get: clarify the range of valid values for the OFFSET + argument. From a report by Kevin Ryde -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 + 10/21 + ----- +subst.c + - expand_string_for_rhs: set W_NOASSNTILDE if the operator is `=' + for backwards compatibility with bash-4.4 -lib/readline/{misc,text,vi_mode}.c - - fix return values from rl_read_key to handle < 0 +shell.c + - main: set positional parameters before running the startup files, + so the startup files can inspect $@. Often-requested feature, + most recently from Stephane Chazelas - 8/22 - ---- + 10/27 + ----- +doc/{bash.1,bashref.texi} + - Arrays: add some clarifying language to make it clear that array + references that don't use the ${a[s]} syntax are subject to + globbing when passed as arguments to commands such as unset, and + should be quoted for safety. Change prompted by a report from + Eli Barzilay 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 + - 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 -builtins/declare.def - - declare_internal: only print the warning now if the variable is not - already an array or if we are not creating an array with -a or -A, - cuts down the spurious warnings - - declare_internal: even if the rhs of the assignment looks like a - compound array, if we're not assigning to an existing array or we're - not creating an array, make it an array subscript assignment. This - means things like declare a[1]='(foo)' and a[1]='(foo)' behave - identically + 10/30 + ----- +builtins/pushd.def + - get_directory_stack: make sure the current directory (element 0 of + the stack) is passed to polite_directory_format under the same + conditions as the rest of the stack entries (flags & 1). Otherwise + something like `cd ${DIRSTACK[0]}' will fail. Fixes bug reported + by Steve Jones -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 - +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 - 8/23 + 11/1 ---- -sig.c - - sigint_sighandler: if we get a SIGINT while this_shell_builtin == - wait_builtin, perform the special handling only if wait_intr_flag - is non-zero, don't just use it to set wait_sigint_received. This - makes sure we run bashline_set_event_hook. Fixes bug reported by - isabella parakiss +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 + - 8/25 + 11/3 ---- -subst.h - - SD_HISTEXP: new flag for skip_to_delim, indicates we are looking for - the history expansion character (special double quote handling) - - skip_to_delim: handle SD_HISTEXP flag, changes double quote handling - to be similar to history library: don't call skip_double_quote, make - sure single quotes aren't special in double quotes, but continue to - skip over $(), ${}, and other similar constructs +lib/readline/isearch.c + - _rl_isearch_dispatch: if we are searching in reverse order, let + sline_index go to -1 to avoid searching the same line twice. It + gets reset right after that, so there's no danger of indexing into + the history line with a negative index. - 8/27 + 11/7 ---- -support/bash.pc.in - - new file, pkgconfig template for bash, installed to support nascent - loadable builtins dev environment - -examples/loadables/Makefile.inc - - new file, example Makefile with correct definitions for loadable - builtin development - -configure.ac - - headersdir: directory where headers get installed to support loadable - builtin development - - examples/loadables/Makefile.inc, support/bash.pc: create - -Makefile.in - - INSTALLED_HEADERS, INSTALLED_BUILTINS_HEADERS, INSTALLED_INCFILES, - CREATED_HEADERS: new variables holding names of include files to - install into $(headersdir) for loadable builtin development - - install-headers,install-headers-dirs: new targets to support - installing headers into $(headersdir) and subdirectories for loadable - builtin development - - uninstall-headers: target to uninistall headers in $(headersdir) - - uninstall: call uninstall-headers whether or not install-headers - was done; add uninstall in examples/loadables - - install: add install in examples/loadables - - clean: add clean in examples/loadables - -examples/loadables/Makefile.in - - install-supported, install-unsupported: new targets, make install - chooses one based on $(SHOBJ_STATUS) - - install-supported: now cds to the top level build directory and - installs the header files - - install-supported: now installs Makefile.inc to $(loadablesdir) as - an example - - uninstall-supported,uninistall-unsupported: uninstall targets, - make uninstall chooses one based on $(SHOBJ_STATUS) - - 8/31 - ---- -lib/glob/Makefile.in - - CPPFLAGS: move after ${INCLUDES} so library-specific include paths - take precedence. This is what the other parts of the shell do. - Report from Poor Yorick +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 -builtins/read.def - - reset_alarm: cancel alarm before restoring signal handler to avoid - possible race condition. Report and fix from Oleg Popov - + 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 - - 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 + - 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 -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 + 11/24 + ----- +lib/readline/bind.c + - rl_empty_keymap: new public function, returns non-zero if there are + no keys bound in the keymap passed as an argument - 9/3 - --- -doc/{bash.1,bashref.texi} - - add \? to the list of backslash escapes expanded by $'...' ANSI-C - quoting. It was expanded but not documented +lib/readline/readline.h + - rl_empty_keymap: new public extern declaration -lib/readline/util.c - - _rl_audit_tty: updated from Red Hat patch +lib/readline/doc/rltech.texi + - rl_empty_keymap: document new function -lib/readline/readline.c - - HAVE_DECL_AUDIT_USER_TTY: correct #define check +lib/readline/bind.c + - rl_generic_bind: keep track of the previous keymap and previous + index in a multi-key key sequence so we can remove an empty terminal + keymap and remove a previous override to ANYOTHERKEY. Right now, + this only works for one previous keymap level. Inspired by a report + from Clark Wang - 9/13 - ---- -shell.c - - read_from_stdin: make sure value set to 1 appropriately if the shell - is reading from standard input, as Posix seems to specify (?) + 11/25 + ----- +lib/readline/display.c + - _rl_update_final: make sure that computing the length of the visible + bottom line (botline_length) takes any invisible characters in the + prompt into account (woff). This value is used as part of the check + whether or not we want to remove the line-wrapping indicator on + terminals like xterm + - _rl_update_final: when removing the line-wrapping indicator on xterm, + make sure we take invisible characters in the prompt (woff) into + account when computing the character in the rightmost physical + screen position. Fixes cosmetic line-wrapping issue reported by + Egmont Koblinger + + 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 -lib/readline/kill.c - - _rl_copy_to_kill_ring: don't assume that rl_kill_ring has been - allocated if _rl_last_command_was_kill is non-zero; make sure it's - non-null before indexing into it + 11/28 + ----- +lib/readline/signals.c + - rl_check_signals: new public function: a wrapper for RL_CHECK_SIGNALS + that can be used by applications that install a wrapper for + rl_getc (rl_getc_function) so they can respond to signals that + arrive while waiting for input in the same way as rl_getc. The app + can use rl_pending_signal() to get the most recently-received + signal. From a discussion about Gnuplot initiated by + Rin Okuyama - 9/15 - ---- -variables.c - - initialize_shell_variables: cope with a NULL env pointer. Fixes bug - reported by ziyunfei <446240525@qq.com> +lib/readline/readline.h + - rl_check_signals: new extern declaration - 9/16 - ---- -builtins/exec.def - - exec_builtin: if -c is supplied, pass an empty array instead of a NULL - pointer to shell_execve +lib/readline/doc/rltech.texi + - rl_check_signals: document new public function variables.c - - set_pwd: only believe $PWD if it begins with a slash; try to - canonicalize it and set it to physical path if canonicalization fails. - Reported by ziyunfei <446240525@qq.com> + - set_pwd: test for and force an inherited OLDPWD to be a directory + if OLDPWD_CHECK_DIRECTORY is defined in config-top.h (it is by + default). Issue raised by Mikulas Patocka - 9/17 - ---- -subst.c - - do_compound_assignment: make sure to dispose of word list generated - by expand_compound_array_assignment; fixes memory leak reported in - https://bugzilla.redhat.com/show_bug.cgi?id=1264101 +config-top.h + - OLDPWD_CHECK_DIRECTORY: new define, defined to 1 by default -variables.c - - adjust_shell_level: clamp the value of shell_level at 1000 and reset - there, instead of > 1000, since the itos replacement code doesn't - handle the value 1000. Fixes bug reported by ziyunfei - <446240525@qq.com> - -shell.h,parse.y - - save_parser_state,restore_parser_state: now save and restore - redir_stack, short-circuiting if need_here_doc == 0. If we save a - non-zero value for need_here_doc, we have to make sure there is - something valid for gather_here_documents to work on. Fixes bug - reported by Brian Carpenter + 11/29 + ----- +Makefile.in + - pathexp.o: add dependencies on libintl.h. Reported by + Ross Burton - 9/18 + 12/1 ---- -array.c - - array_to_assign: use ansic_shouldquote to check whether each element - value contains non-printable characters and use ansic_quote to - generate the value instead of using sh_double_quote unconditionally +lib/sh/ufuncs.c + - fsleep: add blocking and releasing SIGCHLD using sigprocmask + around call to select(2) even if pselect(2) is not available -assoc.c - - assoc_to_assign: if either the key or the value of an associative - array element contains non-printable characters (ansic_shouldquote - returns true), use ansic_quote to quote them instead of using double - quotes unconditionally + 12/3 + ---- +execute_cmd.c + - coproc_setstatus: new utility function, take a pointer to a coproc + and a status and mark the coproc as dead and having been reaped + with that status. Used by child processes who want to invalidate + the coproc's pid - 9/19 + 12/5 ---- subst.c - - pat_subst: handle REP being NULL. Fixes bug reported by Brian - Carpenter + - process_substitute: instead of just having a flag to denote that a + file descriptor is connected to a process substitution, store the + pid of the child process (still needs work) + - find_procsub_child,set_procsub_status,reap_procsubs: utility + functions to allow the job control code to detect that a process + substitution child has died and deallocate the file descriptors + or pathname -builtins/evalstring.c - - parse_string: if we get a longjmp to top_level with DISCARD as the - code (in which case we are going to go on), return -DISCARD to our - caller (always xparse_dolparen) after doing our own cleanup instead - of calling jump_to_top_level +subst.h + - find_procsub_child,set_procsub_status,reap_procsubs: extern + declarations -parse.y - - xparse_dolparen: if parse_string returns < 0, do the appropriate - cleanup and then jump_to_top_level with the negative of the return - value. This allows us to do the appropriate parser cleanup in - case we're not going to exit the shell. Fixes bug reported by Brian - Carpenter +nojobs.c + - set_pid_status: if we are reaping a process substitution, call + set_procsub_status to record the fact -subst.c - - extract_delimited_string: if a recursive call to one of the extract_ - functions or a call to ADVANCE_CHAR leaves i past the end of the - string, cut the loop off at the end of the string. Fixes bug - reported by Brian Carpenter +jobs.c + - waitchld: if we are reaping a process substitution, call + set_procsub_status to record the fact. Doesn't really do anything + yet - 9/20 + 12/6 ---- -subst.c - - get_var_and_type: return appropriate values if variable indirection - results in a NULL variable. Fixes bug reported by Brian Carpenter - - -lib/readline/history.c - - history_get_time: handle strtol overflows caused by malicious - modifications to timestamps in the history file. Fixes issue - reported by rens@endoria.net +execute_cmd.c + - execute_command: don't call unlink_fifo_list if we're in the + middle of executing a list of commands (executing_list != 0). + Partial fix for bug reported by Stephane Chazelas + + - execute_simple_command: don't close process substitution file + descriptors in the parent after forking children in a pipeline; + defer until pipeline completes, since parent may have inherited + fds from a calling scope (e.g., via `.'). EXPERIMENTAL + - execute_disk_command: don't close process substitution file + descriptors in the parent after forking the child. EXPERIMENTAL - 9/21 + 12/7 ---- -lib/readline/rlconf.h - - ENABLE_AUDIT_TTY_SUPPORT: now undefined (off) by default +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - show-mode-in-prompt: clarify that this must be enabled before the + vi and emacs mode strings are prefixed to the prompt. Report from + Rob Foehl - 9/24 + 12/8 ---- -jobs.c - - waitchld: if we get a SIGINT while waiting for a child to exit, but - the kernel doesn't interrupt the waitpid(2) call, assume the child - caught SIGINT if it exited for some reason other than SIGINT. Fix - suggested by Stephane Chazelas +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 -input.c - - make_buffered_stream: use B_TEXT in buffered stream flags instead - of (typo) O_TEXT. Report and fix from Eric Blake +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 - 9/27 - ---- execute_cmd.c - - shell_execve: call reset_parser before calling initialize_subshell, - which calls delete_all_aliases. reset_parser wants to free the - pushed string list, which has pointers back into the alias table - (use after free) - - execute_simple_command: if we fork for an async command, make sure - the child process increments shell_level before performing any - word expansions, so $BASH_SUBSHELL is incremented. Fixes issue - reported by ziyunfei <446240525@qq.com> - - 10/1 - ---- -builtins/kill.def - - kill_builtin: make -L equivalent to -l for compatibility with other - (Linux) versions of kill + - execute_builtin_or_function: if we return via the return builtin, we + don't get a chance to free the saved fifo list, so add an unwind- + protect to make sure it happens. Part of fix for leak reported by + Oyvind Hvidsten + - 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 -doc/{bash.1,bashref.texi} - - kill: document new `-L' option +subst.c + - add_fifo_list: for the FIFO case (no /dev/fd), make sure we + initialize the new members of the fifo list after xrealloc - 10/2 + 12/9 ---- -[bash-4.4-beta frozen] +subst.c + - dev_fd_list: now a list of type `pid_t' so we can store process + associated with the pipe fd into the right element; change all + necessary functions (copy_fifo_list, add_fifo_list) + - process_substitute: store pid of child process into the right + index in dev_fd_list after opening the pipe. Process ID of -1 means + process has been reaped and fd needs to be closed (or FIFO needs to + be unlinked); value of 0 means slot is unused - 10/5 - ---- -doc/{bash.1,bashref.texi} - - LC_TIME: document that the shell recognizes it and calls setlocale - when it changes; and that the shell uses it for time formatting +jobs.c + - wait_for_background_pids: call reap_procsubs to make sure we clean + up all reaped process substitutions before trying to wait for + everything (still needs work) - 10/6 - ---- -subst.c - - skip_single_quoted: now takes an additional `flags' argument, like - skip_double_quoted; changed callers - - skip_single_quoted: now pays attention to SX_COMPLETE flag, allows - backslash to escape single quote, like $'...' allows - - skip_to_delim: added case where we are completing and we are - skipping over a $'...' string to call skip_single_quoted with - SX_COMPLETE flag to allow backslash to quote single quote. Fixes - bug reported by Daniel Colascione - - char_is_quoted: make analogous changes to handle $'...' so we can - accommodate $'ab \' cd' +tests/{run-procsub,procsub.{tests,right}} + - new file, tests of process substitution that have failed in the past - 10/11 + 12/10 ----- -subst.c,bashjmp.h - - no_longjmp_on_fatal_error: now global so other parts of the shell can - use it - -arrayfunc.c - - expand_array_index: if no_longjmp_on_fatal_error is non-zero, don't - longjmp to top_level, just return 0. Fixes bug reported by - isabella parakiss +jobs.c + - wait_for_background_pids: warn if one of the jobs is stopped subst.c - - CQ_RETURN: restore old value of no_longjmp_on_fatal_error (oldjmp); - make sure all callers (skip_matched_pair, skip_to_delim, - char_is_quoted) save no_longjmp_on_fatal_error to oldjmp before - setting it to 1 + - wait_procsubs: new function, call wait_for for every "live" process + substitution -expr.c - - expr_streval: if longjmping after an unbound variable error, jump - back to expr toplevel (evalbuf) if no_longjmp_on_fatal_error is set - in an interactive shell +jobs.c + - wait_for_background_pids: call wait_procsubs to reap any living + process subsitutions -variables.c - - push_func_var: if pushing an array variable, such as when a variable - in the temporary environment is promoted to an array by mapfile when - the shell is in posix mode (so variable assignments preceding special - builtins or shell functions persist in the shell environment after - the builtin returns), make sure to copy the array or hash table so - the variable is duplicated correctly. Fixes seg fault reported by - Linda Walsh - - 10/13 + 12/13 ----- -variables.c - - initialize_shell_variables: add call to sv_shcompat, so BASH_COMPAT - can be set in the initial environment +lib/readline/bind.c + - parser_if: add support for testing the readline version, using the + full set of arithmetic comparison operators (and supporting both + = and ==), using version numbers of the form major[.[minor]] -execute_cmd.c - - execute_function: set loop_level to 0 only if shell_compatibility_level - is greater than bash-4.3; this was kind of an incompatible change. - Report from Carlos Pita + 12/14 + ----- +subst.[ch] + - string_list_dollar_star: now takes QUOTED and PFLAGS arguments like + string_list_dollar_at, changed all callers. Not used yet. -COMPAT,doc/{bash.1,bashref.texi} - - compat43: added loop_level changes to description + 12/16 + ----- +subst.c + - param_expand: broke out cases of expanding unquoted (quoted == 0) + $* on the rhs of an assignment statement (pflags & PF_ASSIGNRHS) + with various values of IFS (unset, null, set to non-null value) to + capture the expansion subtleties. From a report back on 11/24 by + Martijn Dekker - 10/15 + 12/17 ----- -lib/sh/casemod.c,lib/readline/display.c - - make sure mb_cur_max variable is defined outside of HANDLE_MULTIBYTE - if it's used outside HANDLE_MULTIBYTE. Fixes from Greg Wooledge - +array.h + - set_element_value: new define, sets array element AE to VALUE -support/Makefile.in - - bash.pc: remove as part of distclean, not clean. Report from Andreas - Schwab +variables.c + - set_pipestatus_array: use set_element_value where appropriate - 10/17 + 12/18 ----- subst.c - - array_var_assignment: make sure to call quote_string or quote_escapes - on the assignment string, so spaces in the assignment survive word - splitting. Fixes bug reported by isabella parakiss - + - 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 - 10/20 + 12/19 ----- doc/{bash.1,bashref.texi} - - word splitting: make sure that newline is listed as one of the IFS - whitespace characters. Fixes omission reported by ziyunfei - <446240525@qq.com> + - indirect expansion: make sure to note that the value of the indirect + variable does not undergo word splitting as one of its expansions, + as in fix from 12/18 -lib/readline/histfile.c - - history_do_write: make sure that we only create and use the tempfile - if the history file exists and is a regular file. Reported several - times, most recent check the result of a report from - + 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 + - 10/22 +variables.c + - assign_hashcmd: if running in a restricted shell, make sure the + target of the hash assignment can be found via a $PATH search, to + prevent users assigning commands to the hash table they would not + ordinarily have access to. Fixes issue raised by Drew Parker + + +builtins/hash.def + - hash_builtin: if running in a restricted shell, make sure the + pathname target of `hash -p' can be found via a $PATH search, to + prevent users assigning commands to the hash table they would not + ordinarily have access to. + + 12/27 ----- -jobs.c - - delete_all_jobs: if running_only == 0, we are eventually going to - clear the bgpids list, so don't bother to add pids to it in - delete_job (call with DEL_NOBGPID flag if running_only == 0) +array.c,arrayfunc.c,... + - many changes to clean up unused variables and functions. From a + report from Siteshwar Vashisht - 10/24 + 12/28 ----- -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 +lib/readline/terminal.c + - _rl_term_clrscroll: save the `E3' termcap capability, which clears + the scrollback buffer where supported. Unused right now -subst.c - - inherit_errexit: new variable to control whether or not command - substitution inherits the -e (errexit) option. Disabled by default +lib/readline/rlprivate.h + - _rl_term_clrscroll: extern declaration -general.c - - posix_initialize: set inherit_errexit = 1 when Posix mode is enabled +lib/readline/bind.c + - parser_if: added simple variable comparison capability. Allowable + operators are `=', `==', and `!='; boolean variables must be + compared to either `on' or `off'; variable names must be separated + from the operator by whitespace -builtins/shopt.def - - inherit_errexit: new shell option, tracks value of inherit_errexit, - allows command substitution to inherit the setting of errexit without - posix mode. From a request and patch submitted by Christoph Gysin - +doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} + - document new `if variable comparison value' construct -{version,version2}.c - - use #if HAVE_SNPRINTF instead of #if defined in case configure - decides to #define it to 0. Fixes problem reported by Klaus Ziegler - + 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 -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 + 1/3 + --- +variables.[ch] + - bind_function_def: takes an additional flags argument. If FLAGS&1, + overwrite any existing function_def hash table entry; if FLAGS==0, + leave any existing function_def alone. - 10/26 - ----- -subst.h - - SD_ARITHEXP: new flag value for skip_to_delim, supports parsing - arithmetic expressions in parameter expansions +make_cmd.c + - make_function_def: call bind_function_def with flags == 0 + +execute_cmd.c + - execute_intern_function: call bind_function_def with flags == 1 so + we have function_def information that's correct for where the + function is defined, not just where it's last parsed. Fixes report + from Bruno Vasselle ; final piece of + fix from 12/15/2011 + 1/4 + --- subst.c - - skip_to_delim: handle SD_ARITHEXP flag by skipping parentheses for - subexpressions and allowing ?: expression to not terminate an - arithmetic expression delimited by `:' - - skiparith: just call skip_to_delim with the SD_ARITHEXP option and - the right delimiter string and return the right result. Fixes bug - reported by - -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 + - param_expand: deal with string_list_dollar_star returning NULL. + Fixes bug reported by Martijn Dekker - 10/27 - ----- -builtins/{set,ulimit}.def - - {set,ulimit}_builtin: make sure that --help is treated the same as - -? and prints a message and returns. Fixes bug reported by ziyunfei - <446240525@qq.com> +builtins/history.def + - history_builtin: enabled code that performs range deletion + + 1/5 + --- +subst.c + - do_assignment_internal: if performing a compound assignment, make + sure to pass ASS_CHKLOCAL flag to do_compound_assignment if the + assignment word has the W_CHKLOCAL flag set + - do_compound_assignment: honor ASS_CHKLOCAL flag and check for an + existing local variable before creating or modifying a global + variable -builtins/*.def - - make sure to consistently use builtin_help() instead of mix of that - function and builtin_usage() +builtins/declare.def + - declare_internal: new (undocumented so far) option: -G. Means to + act on global variables (create, modify) if no local variable is + found with the specified name + - declare_find_variable: new declare-specific wrapper functon for + declare builtin; obeys -g and -G options in one place + - declare_internal: if no variable is found after following any nameref + chain, look up the variable using declare_find_variable to honor the + -G option. XXX - so far, this is the only place that function is used - 10/29 - ----- -doc/{bash.1,bashref.texi} - - BASH_CMDS, BASH_ALIASES: note that removing elements from these - array variables is not currently reflected in the command hash - table and alias list, respectively. Reported by isabella parakiss - +subst.c + - shell_expand_word_list: before calling make_internal_declare, add + 'G' to the options list if W_CHKLOCAL is set in the word's flags. + This makes builtins like `readonly' that modify local variables in + a function behave the same for scalar and array variables - 10/30 - ----- -eval.c - - reader_loop: if PS0 is set in an interactive shell, expand and - display it after reading a (complete) command but before executing - it. This differs from the DEBUG trap because the DEBUG trap is - executed once for each simple command (and some others, like each - time through a for loop). From a patch submitted by Dan Stromberg - + 1/11 + ---- +parse.y + - shell_getc: move code that decides whether to append a space to an + alias expansion here from mk_alexpansion, so we can inhibit adding + a space if we're currently parsing a single or double quoted string + + 1/12 + ---- parse.y - - prompt_again: set ps0_prompt from $PS0 in an interactive shell + - clear_string_list_expander: take a pointer to an alias that's about + to be freed and make sure there aren't any pointers to it in the + list of pushed strings. If there are, zero it out in the pushed + string list to avoid referencing freed memory in pop_string() -doc/{bash.1,bashref.texi} - - PS0: document new prompt string +alias.c + - free_alias_data: if an alias being freed is currently being expanded, + call clear_string_list_expander to remove references to it from the + list of pushed strings - 11/3 + 1/14 ---- -subst.c - - cond_expand_node: if special > 0, remove quoted nulls from the word - list, since no word splitting takes place. Fixes bug reported by - Corentin Peuvrel +pcomplib.c + - progcomp_search: add code to look up an alias for the CMD argument + and return the completions for the first word of that alias if one + is found. Just a start at completing aliases, a much-requested + feature - 11/4 - ---- -doc/{bash.1,builtins.texi} - - inherit_errexit: add to shopt description; modify Posix mode - description +pcomplete.h + - COPT_LASTUSER: last flag value used by user-settable completion + options + - PCOMP_RETRYFAIL, PCOMP_NOTFOUND: new #defines, possible return values + from programmable_completions in FOUNDP argument. Moved RETRYFAIL + define here from pcomplete.c to avoid collisions with user-settable + option values (COPT_*) - 11/9 + 1/15 ---- -lib/readline/util.c - - rl_tilde_expand: fix out-of-bounds read caused when this function - is invoked with rl_point == 0. Bug reported by Hanno Böck - +pcomplete.c + - programmable_completions: if we don't find any completions for a + command, and RETRY is 0, see if the command is a defined alias, + expand it, and try to expand the first word of the value as a + command, and find any programmable completions for it. Here right + now, could be moved to attempt_shell_completion later if we need + to do more analysis of the expanded line. We'll see how it works + in practice. (Disabled for now.) - 11/11 - ----- -{nojobs,jobs}.c - - get_original_tty_job_signals: force the original signal disposition - for SIGTSTP/SIGTTIN/SIGTTOU to SIG_DFL in interactive shells. This - will force child processes to get SIG_DFL even if the shell is - started with those signals ignored. From a bug report from - Keith Thompson + 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 - 11/13 - ----- -make_cmd.c - - make_function_def: if a function is being defined without a source - file, and the shell has not been initialized, assume that the - function is being imported from the environment and set the - source_file struct member to "environment". Set to "main" if the - shell has been initialized. Fixes bug reported on savannah by - Arno-Can Uestuensoez - https://savannah.gnu.org/support/index.php?108903 + 1/19 + ---- +lib/readline/rltty.c + - prepare_terminal_settings (termios/termio): if there is a function + bound to the VDISCARD character in the current keymap, set VDISCARD + to _POSIX_VDISABLE while readline is active. From a report from + Rhialto -subst.c - - skip_to_delim: if the shell is in posix mode (posixly_correct != 0) - and performing history expansion ((flags & SD_HISTEXP) != 0), allow - double quotes to quote the history expansion character. TENTATIVE - CHANGE, inspired by - https://savannah.gnu.org/support/index.php?108491 + 1/22 + ---- +builtins/history.def + - histtime: check whether or not localtime() returns NULL, and make + sure we only call strftime() with a valid struct tm. This can happen + when the timestamps in the history file overflow a time_t. Fixes bug + reported by Luke Dashjr - 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 +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 - 11/16 - ----- -doc/{bash.1,bashref.texi} - - document new posix-mode behavior of not giving ! special meaning - within double quotes, even if histexpand is enabled + 1/26 + ---- +bashline.c + - command_word_completion_function: match alias and shell function + names case-insensitively if the readline completion-ignore-case + variable is set. Inspired by report from - 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 +lib/readline/display.c + - update_line: when performing a dumb update after wrapping the line + (usually due to printing the prompt), make sure we adjust + _rl_last_c_pos if there are invisible characters in prompt lines + other than the first (we assume those invisible characters are in + the last line, which is nearly always the case). We adjust by the + total number of invisible chars less the number of invisible chars + in the first prompt line. From a report in + https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1745273 - 11/20 - ----- -subst.c - - process_substitute: don't unconditionally set pipeline_pgrp to - shell_pgrp; do that only if pipeline_pgrp == 0 (we haven't forked - yet) or if we know we haven't forked for a command, a pipeline, - or an async command. Fixes bug reported by - - as https://savannah.gnu.org/support/index.php?108593 +execute_cmd.c + - execute_command_internal: if redirections attached to a compound + command fail, make sure we discard the `internal_fifos' unwind- + protect frame after freeing the copied fifo_list and before returning - 11/24 - ----- -variables.c - - set_pwd: inherit the value of OLDPWD from the initial environment - if it names a directory. From a report from John Wiersba - + 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 -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 - + 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} - - HISTIGNORE,GLOBIGNORE: note that the pattern matching is subject to - the setting of the `extglob' variable. Clarification raised by - Aharon Robbins + - shopt: document `assoc_expand_once' shell option -builtins/jobs.def,doc/{bash.1,bashref.texi} - - disown: add text to synopsis making it clear that disown takes a - pid argument. From a report from Matthew Stanfield - - -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 + 2/1 + --- +config-top.h + - DONT_REPORT_SIGTERM: define, so non-interactive shells will no + longer print termination messages for child processes killed by + SIGTERM -trap.c - - _run_trap_internal: make sure to catch and use return values supplied - as arguments to `return'; instead of just catching return, make sure - we use return_catch_value as well. Fixes bug reported by - Grisha Levit , affects RETURN, DEBUG, ERROR - traps + 2/6 + --- +lib/readline/text.c + - rl_insert: don't attempt to optimize typeahead if we are only reading + a fixed number of characters (rl_num_chars_to_read > 0) - 11/30 - ----- -lib/readline/display.c - - rl_redisplay: fix code that deals with prompts that contain - multibyte characters whose physical length is longer than the screen - width (so the prompt line wraps) to deal with invisible characters - in the prompt and set the inv_lbreaks offsets correctly and set - lpos appropriately - - _rl_move_cursor_relative: always called with either visible line or - invisible line. Decide whether we are being called with the invisible - line (or a portion thereof) as the DATA argument; make sure to account - for invisible characters in the last line of the prompt by offsetting - the desired buffer offset (NEW) by where DATA starts in invisible line - and checking whether that is past the last invisible character in - the prompt - - _rl_move_cursor_relative: do the same for the visible line by using - the visible line lbreaks array instead of _rl_screenwidth, since - that fails in the presence of multibyte characters (buffer offset - vs. physical screen position). These fix bug with prompts with - multibyte characters and invisible characters that are longer than - the screen width reported by Ryo Furue +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 - 12/1 + 2/11 ---- -parse.y,make_cmd.c - - here_doc_first_line: new variable, set to non-zero to indicate the - first line of possibly multiple here documents associated with the - current command. Set in parse.y:gather_here_documents() before - reading any here documents, set to 0 after reading the first line - of any here document in make_cmd.c:make_here_document(). +jobs.c + - bgp_resize: fix problems with (pid_t) overflow when calculating new + size for table when js.c_childmax is near the limit of a pid_t + (e.g., 2**31 - 1 on a 32-bit system, or 2**63-1 on a system with + 32-bit pid_t). Fixes hang reported by Natanael Copa + based on his patch from 12/8. + - bgp_resize: cap max table size for bgpids at MAX_CHILD_MAX (32768) -parse.y - - history_delimiting_chars: if parser_state indicates we are reading - a here document, don't use current_command_line_count to see whether - or not we're on the first line of a here document -- it can be fooled - by multi-line commands (or even backslash-escaped newlines). Use - here_doc_first_line to check that directly. Fixes bug reported by - Geoffrey Allott - -shell.h,parse.y - - save and restore here_doc_first_line as part of the shell's parser - state +include/typemax.h + - TYPE_MINIMUM, TYPE_MAXIMUM: updated definitions from coreutils-8.29, + silences some compiler warnings + + 2/14 + ---- +Makefile.in + - maybe-clean: use cd and pwd -P to test whether or not two directory + names identical, since topdir = '.' and BUILD_DIR = full pathname + when you use something like `bash ./configure'. Problem reported by + Michael Felt -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 - +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 - 12/2 + 2/15 ---- -aclocal.m4 - - RL_LIB_READLINE_VERSION: if cross-compiling, assume current version - of readline if cross-compiling bash while using an external readline - library. Fix from Barry Davis +copy_cmd.c + - copy_word_list: build the list in the right order, avoiding having + to reverse it at the end. Helps with long argument lists -execute_cmd.c - - execute_builtin: save and restore value of builtin_ignoring_errexit - instead of assuming we can set it back to 0 -- the ignore-errexit - cases might be nested - - execute_builtin: after a builtin executes and eval_unwind is set, - set exit_immediately_on_error to 0 if builtin_ignoring_errexit is - set, and back to the value of errexit otherwise, just like the - code that sets -e does. Fixes short-circuiting bug reported by - Marcin Swigon +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 - 12/5 - ---- -builtins/setattr.def - - set_or_show_attributes: instead of using a fixed string for the - options argument to `declare', which results in export adding the - readonly attribute, build the option string dynamically like in - subst.c:shell_expand_word_list() - - set_or_show_attributes: don't add the -r option to declare if the - attribute passed as an argument doesn't include att_readonly; add - -x if the attribute includes att_exported - - set_or_show_attributes: add the -g option to declare so readonly - and export in functions that go through this code path don't create - local variables. Part of fix for bug reported by ziyunfei - <446240525@qq.com> +variables.c + - save_bash_argv: new function, initializes BASH_ARGV and BASH_ARGC + from the saved positional parameters + - init_bash_argv: initialize BASH_ARGV and BASH_ARGC if + bash_argv_initialized == 0 + +builtins/shopt.def + - shopt_set_debug_mode: if we're turning on debug mode, initialize + BASH_ARGC and BASH_ARGV if bash_argv_initialized == 0 + 2/16 + ---- execute_cmd.c - - make_internal_declare: if we have an assignment builtin that isn't - supposed to create local variables (export/readonly), make sure to - add the W_ASSNGLOBAL flag to each assignment statement word. - Part of fix for bug reported by ziyunfei <446240525@qq.com> where - readonly can create local variables when invoked with a compound - array assignment as an argument within a shell function + - execute_function: make sure BASH_ARGV and BASH_ARGC are initialized + before calling push_args (and before calling remember_args) -subst.c - - make_internal_declare: added third argument: command name. Not used - in any useful way yet - - do_compound_assignment: handle attempted assignments to readonly - variables and print error messages, like bind_variable does and the - callers expect. This means that assignments to readonly array - variables can't go through a code path that allows them to fail - silently - -doc/Makefile.in - - uninstall: run install-info --delete after removing the installed - info file to update the directory file +builtins/source.def + - source_builtin: make sure BASH_ARGV and BASH_ARGC are initialized + before calling push_args (and before calling remember_args) -execute_cmd.c - - execute_disk_command: since we still (and have always) perform - redirections in child processes, we need to mark that state so - we know that we're in a child process. subshell_performing_redirections - is the new variable; non-zero when executing do_redirections() +builtins/evalfile.c + - _evalfile: if the shell compatibility level is 44 or lower, make + sure BASH_ARGV and BASH_ARGC are initialized before calling + array_push -subst.c - - process_substitute: if we are executing process substitution in a - redirection expansion context (expanding_redir == 1), the child - process should not have access to any temporary environment the - parent has. Call flush_tempenv() in the child process to get rid - of it. Fix for bug reported by Clint Hepner +builtins/shopt.def + - compat44: new shell option. This will be the last compatXX option - 12/9 - ---- -jobs.c - - waitchld: if in posix mode and attempting to let SIGCHLD interrupt the - wait builtin, make sure wait_intr_flag is non-zero before trying to - longjmp to wait_intr_buf. Fixes bug reported by Aharon Robbins - +doc/{bash.1,bashref.texi} + - compat44: document new shell option - 12/10 - ----- -lib/readline/display.c - - update_line: if a prompt containing invisible characters changes, - and the change is within the prompt string, we need to redraw the - entire prompt. After that redraw, if the cursor position is after - the first index where the old and new lines differ, we can short- - circuit the update if the line length stays the same - - update_line: if we redraw the entire prompt string because the prompt - contains invisible characters and the first difference is in the - middle of the prompt, we possibly need to adjust our idea of the - first differing character in the old and new lines. We punt and do - a dumb update in this case. Fixes bug with dynamic vi-mode mode - strings containing invisible characters reported by Dylan Cali - + 2/21 + ---- +builtins/common.h + - ISOPTION: check s[1] before s[2] to avoid out of bound reads. Fixes + bug reported by jeremy@feusi.co - 12/11 - ----- -lib/readline/display.c - - update_line: if we move up to a new screen line, we need to recompute - the number of invisible characters on the new current line - (visible_wrap_offset). Fixes bug reported to bug-readline by - Per Bothner - - 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 +input.h + - B_SHAREDBUF: new flag for buffered input fds, indicates that this + fd shares its b_buffer with another fd - 12/18 - ----- -execute_cmd.c - - execute_function: unwind-protect and restore BASH_ARGC and BASH_ARGV - - restore_funcarray_state: now global +input.c + - duplicate_buffered_stream: when duplicating *from* the buffer + corresponding to bash input, make sure the new buffer has B_SHAREDBUF + in the flags, because copy_buffered_stream copies pointers + - duplicate_buffered_stream: if the buffer being copied to has the + B_SHAREDBUF flag set, make sure the b_buffer doesn't get freed. + Fixes use-after-free bug reported by jeremy@feusi.co + - save_bash_input,close_buffered_stream: make sure a buffer with + B_SHAREDBUF set has its b_buffer set to NULL before calling + free_buffered_stream -execute_cmd.h - - make func_array_state type global, add extern function declaration - for restore_funcarray_state + 2/24 + ---- +subst.c + - parameter_brace_expand_error: add parameter saying whether or not + we are checking whether value is null, so we can have different + error messages for ${x:?} and ${x?}. Report and fix from + don fong -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 - + 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 + - 12/20 - ----- -lib/readline/isearch.c - - _rl_isearch_dispatch: after removing the only character from the - search string with DEL, leaving the search string empty, don't match - the previous line if we didn't have a match before + 3/11 + ---- +variables.c + - makunbound: if new variable localvar_unset is non-zero, mark local + vars in previous scopes as invisible and unset so they will show + up as unset until that previous scope returns (similar to how local + variables in the current local scope are handled). localvar_unset + is currently set to 0 with no way for a script to change its value. + Eventually there will be an option to modify it. From a bug-bash + discussion started by Nikolai Kondrashov back + on 2/11/2018 - 12/22 - ----- -bashhist.c - - enable_history_list,remember_on_history: initialize to 0 instead of 1 + 3/13 + ---- +subst.c + - expand_word_list_internal: short-circuit and exit right away if a + variable assignment preceding a special builtin fails in posix mode + - expand_word_list_internal: if a variable assignment precedes an + empty command name (after expansion), fix to exit right away when + the shell is in posix mode -shell.c - - init_interactive,init_interactive_script: set enable_history_list and - remember_on_history to 1 (defaults) + 3/15 + ---- +doc/{bash.1,bashref.texi} + - Add text to Pathname Expansion clarifying that a slash must be + matched by a slash in the pattern when matching pathnames, but + not in other matching contexts. Suggested by - 12/23 - ----- -variables.c - - initialize_shell_variables: don't inherit PS4 from the environment - if the shell is running with euid == 0; just reset it to `+ '. This - is a known potential vulnerability, since PS4 expansion performs - command substitution in the root shell's context before displaying - it. Discussion started by up201407890@alunos.dcc.fc.up.pt +builtins/common.c + - read_octal: allow octal numbers greater than 777 to accommodate + modes and umasks that include sticky/setuid/setgid bits. Report + and fix from Martijn Dekker -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 + 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 - 12/28 - ----- -lib/readline/{history.h,histfile.c} - - history_file_version: new int variable, reserved for future use - - history_multiline_entries: new int variable, can be set by the - calling application to enable reading multi-line history entries - from the history file (currently undocumented) +builtins/read.def + - read_builtin: be slightly less aggressive checking for timeouts and + SIGALRM: if we successfully read a character, don't check for a + timeout until we store or process it. Fixes timing problem + reported by Rob Foehl -lib/readline/history.c - - _hs_append_history_line: new function, append a line passed as an - argument to a specified history entry, used to create multi-line - history entries + 3/22 + ---- +sig.c + - termsig_handler: add a call to exit(1) after the kill, just in case + there are circumstances where the SIG_DFL signal handler is + ignored. Report from Andrei Vagin -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 + 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. -builtins/evalstring.c - - parse_prologue: always unwind-protect history_expansion_inhibited, - since history expansion can be enabled in non-interactive shells, - and calling eval once in a non-interactive shell inhibits history - expansion forever even if `set -o histexpand' was run before the - eval +lib/readline/readline.h + - rl_function_of_keyseq_len: add extern declaration for new function -builtins/common.h - - SEVAL_NOHISTEXP: new flag for parse_and_execute/parse_string; means - to not perform history expansion (decouple from SEVAL_NOHIST, which - now means to not remember commands on history); changed all callers - that had SEVAL_NOHIST to have SEVAL_NOHIST|SEVAL_NOHISTEXP +lib/readline/doc/rltech.texi + - rl_function_of_keyseq_len: document new function interface -builtins/evalstring.c - - parse_prologue: instead of calling bash_history_disable, set - remember_on_history to 0 if SEVAL_NOHIST and history_expansion_inhibited - to 1 if SEVAL_NOHISTEXP +bashline.c + - bash_execute_unix_command: use rl_function_of_keyseq_len to handle + key sequences with embedded NULs (\C-@). Fix from Koichi Murase + - 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 +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 -bashhist.c - - bash_history_inhibit_expansion: use skip_to_histexp instead of - skip_to_delim + 4/2 + --- +jobs.c + - wait_for: when setting the SIGINT signal handler to wait_sigint_handler + make sure we're not setting old_sigint_handler recursively, as we + can when running an external command in a trap we took after a + command exited due to SIGINT. We don't want to overwrite + old_sigint_handler here. Fixes bug reported by Dr. Werner Fink + -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 + - 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 -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 + 4/4 --- subst.c - - command_substitute,process_substitute: before replacing the file - descriptor underlying stdout (fd 1), make sure to purge any pending - stdio output that hasn't been written successfully, even after a - call to fflush(). Fixes bug reported by cks@cs.toronto.edu + - process_substitute: handle longjmp back to top_level and function + returns (return_catch) in the child process, like command + substitution, so we don't longjmp back to some arbitrary spot from + the `exit' or `return' builtins, or on an expansion error, like + the command timing code. Fixes bug reported by Basin Ilya + - 1/7 + 4/6 --- -builtins/{echo,printf}.def - - echo_builtin,printf_builtin: don't use terminate_immediately; use - calls to QUIT in the body of the print loop after writes and flushes. - Fixes problem with running the signal handler and exit trap in a - signal context and other bug reported by cks@cs.toronto.edu - -builtins/common.c - - sh_chkwrite: put in calls to QUIT to catch signals that interrupt - writes +parse.y + - read_token_word: when reading a matched pair of backquotes as part + of a word, treat it as quoted so the characters are read as a single + word, but do not let the presence of the backquote mark the word as + quoted. Fixes here-document delimiter bug reported by Denys Vlasenko + -shell.c - - get_current_user_info: protect endpwent() with #ifdef HAVE_GETPWENT. - Fixes bug reported by pb + 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 - 1/8 + 4/9 --- -lib/readline/bind.c - - _rl_init_file_error: now a varargs function so it can take format - strings and arguments and pass them to vfprintf - - rl_parse_and_bind: print a warning if we encounter a key binding - string with one or more hyphens but we don't find a valid modifier - (`control', `meta', etc.). Prompted by a report from Andrew Kurn - - - rl_parse_and_bind: improve several existing error messages now that - _rl_init_file_error takes a variable number of arguments - - rl_variable_bind: print error message upon encountering unknown - variable +smatch.c + - posix_cclass_only: helper function that checks whether a pattern has + only posix single-byte character classes ([:alpha:], etc.) or has + none at all + - xstrmatch: if running in a multibyte locale, make sure to short- + circuit to the single-byte matching code only if there are no + unrecognized character class names, since the wide character ctype + functions allow locales to define their own character class names + (e.g., "hyphen"). Fixes issue reported by yangyajing - 1/10 + 4/10 ---- -lib/readline/bind.c - - rl_parse_and_bind: if a `bare' keybinding is supplied without any - terminating `:' or whitespace separating it from the command to be - bound, signal an error +configure.ac,cross-build/qnx.cache + - qnx: add a configure cache file for cross-building, treat qnx 7 like + qnx 6 in terms of cpp options. Fix from Brian Carnes + - 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 +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 - 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 + 4/11 ---- -execute_cmd.c - - HASH_BANG_BUFSIZE: use #define for size of buffer used in - READ_SAMPLE_BUF instead of straight constant 80 - - HASH_BANG_BUFSIZ: increase to 128 because Linux allows 128 chars in - exec header. Reported by Ludovic Courtès +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 + -configure.ac - - remove support for purify and purecoverage - - change release level to `rc1' +bashline.c + - bash_execute_unix_command: changes to make READLINE_POINT apply to + characters instead of bytes when in a multibyte locale. Report and + fix from Koichi Murase - 1/15 + 4/12 ---- -builtins/enable.def - - dyn_load_builtin: fix missing argument to builtin_error if load function - returns an error. Fix from Aharon Robbins +builtins/evalstring.c + - parse_and_execute_cleanup: now takes an argument which is the value + of running_trap at some point before parse_and_execute was called; + changed callers in sig.c, builtins/evalfile.c - 1/18 - ---- -builtins/history.def - - histtime: display a better error message for invalid timestamps; use - existing `??' string for empty/missing timestamps or invalid history - entries. Suggestion from Reuben Thomas +builtins/common.h + - parse_and_execute_cleanup: changed prototype - 1/21 + 4/13 ---- -lib/readline/text.c - - rl_insert: when trying to optimize typeahead, make sure to reset the - key sequence and key sequence length when we read a character that is - not bound to self-insert. Bug report from Geir Hauge - +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 - 1/25 - ---- -doc/{bash.1,bashref.texi} - - word splitting: add example showing how -d'' is equivalent to -d - after word splitting and null argument removal +parse.y + - read_a_line: if remove_quoted_newline is non-zero, indicating the + here-document delimiter is unquoted, we will be running the contents + of the here-document through word expansion and need to quote CTLESC + and CTLNUL in the input. Fixes bug with ^A in here document reported + by Jorge Alberto Baca Garcia - 1/27 + 4/18 ---- -doc/{bash.1,bashref.texi} - - read: modify description to make it more clear that the line is split - using the same rules as word splitting, and use `delimiters' instead - of `separators', which people read the wrong way +pathexp.c + - quote_string_for_globbing: make sure the QGLOB_CTLESC code handles + both CTLESC CTLESC and CTLESC CTLNUL in the same way. Fixes bug + reported by Martijn Dekker - 2/2 - --- -variables.c - - initialize_shell_variables: allow FUNCNEST to set funcnest_max when - imported from the environment. Inspired by - https://bugzilla.redhat.com/show_bug.cgi?id=1274553 + 4/19 + ---- +execute_cmd.c + - execute_command_internal: before executing any command in the current + shell, and before copying any existing FIFO list, call + reap_procsubs to unlink or close any process substitution pipes + associated with processes that have exited. Fixes hang in test suite + when trying to open a FIFO with no process having it open for + reading - 2/11 + 4/26 ---- -bashhist.c - - bash_history_inhibit_expansion: function should be compiled in only if - BANG_HISTORY is defined. Report from isabella parakiss - +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 -[bash-4.4-rc1 frozen] +lib/glob/sm_loop.c + - BRACKMATCH: if we have an invalid character class in an otherwise + well-formed bracket expression, don't try to match each character + of the (invalid) class individually; just skip over the class and + move on. From a message on the austin-group list from + Stephane Chazelas - 2/15 + 4/27 ---- -lib/readline/text.c - - rl_refresh_line: call rl_redraw_prompt_last_line instead of - rl_forced_update_display to avoid redrawing all lines of a multiline - prompt (overwriting the last line of the multiline prompt in the - process). Report from Hugh Davenport +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 - 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 +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 - 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 +lib/glob/glob_loop.c + - INTERNAL_GLOB_PATTERN_P: same change to return TRUE for a backslash + that doesn't end the pattern - 2/21 - ---- -lib/sh/netconn.c - - isnetconn: return false if getpeername fails with errno == EBADF. - Bug and fix from Andrew Gregory +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/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 +lib/sh/clock.c + - print_clock_t: use locale_depoint() in the same way as print_timeval - 2/22 + 4/29 ---- -lib/readline/complete.c - - rl_display_match_list: don't bother calling strrchr to check the - return value from printable_part() if rl_filename_completion_desired - is non-zero, since in that case printable_part just returns its - argument. Fixes git completion issue reported by - Dilyan Palauzov - - _rl_colored_completion_prefix: default is now 0, testing is complete +subst.c + - expand_cond_node: if special != 0, make sure to add QGLOB_CTLESC + to the flags passed to quote_string_for_globbing. Same issue as the + one with `case' fixed on 4/7, report from Martijn Dekker + - 2/23 + 4/30 ---- +redir.c + - do_redirection_internal: r_close_this: if the file descriptor is + already closed before the shell is asked to close it, make sure to + add an undo list redirect to make sure it stays closed. Report from + Martijn Dekker + + 5/2 + --- variables.c - - assign_hashcmd: if the shell is restricted, reject attempts to add - pathnames containing slashes to the hash table, as the hash builtin - does. Fixes bug reported to savannah by Sylvain Beucler as - https://savannah.gnu.org/support/?108969 + - push_posix_temp_var: new function, takes the SHELL_VAR * passed as + an argument and uses the name and value to create a global variable + - merge_temporary_env: if posixly_correct is set, call + push_posix_temp_var to create global variables, otherwise call + push_temp_var to preserve the old behavior. Right now, it's only + called when in posix mode, but that might change. This undoes the + change from 4/27 when in posix mode - 2/24 - ---- -subst.c - - NEED_FPURGE_DECL: need it before externs.h included, since fpurge - is now used in this file. Fixes warning reported by Mike - Frysinger - - skip_double_quoted: add missing argument to declaration + 5/3 + --- +sig.c + - struct that holds the terminating signal information has a new + field: whether that signal is expected to cause a core dump + - termsig_handler: if the call to kill(2) doesn't kill the process, + we have a problem. If our pid is not 1, we just exit with status + 128+sig (fake the sig exit status). If the pid is 1, we assume + we're in a Linux pid namespace and aren't allowed to send a signal + to ourselves. If we need to generate a core dump, we try to get + the kernel to SIGSEGV us by dereferencing location 0. If not, we + just exit with 128+sig. From a report and patch from Andrei Vagin + -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 + 5/4 + --- +bashline.c + - bash_execute_unix_command: make sure that parse_and_execute is called + with newly-allocated memory to avoid prematurely freeing the + command. Report and fix from Koichi Murase - 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 - + 5/7 + --- +builtins/shopt.def + - syslog_history: a shell option to control whether history is logged + to syslog; can be modified at runtime. Original patch from + Siteshwar Vashisht -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 - +config-top.h + - SYSLOG_SHOPT: new configurable option, determines whether there is a + shell option to control syslogging history lines at runtime and sets + the default value of the option -lib/readline/vi_keymap.c - - bind rl_vi_unix_word_rubout to ^W by default in both insert and - command mode +bashline.c + - syslog_history: new variable to control whether history lines are + sent to syslog; default value is the value of SYSLOG_SHOPT (or 1 + if that's not defined) + - bash_add_history: send history lines to syslog if syslog_history is + non-zero -lib/readline/rltty.c - - _rl_bind_tty_special_chars: if in vi mode, bind the WERASE character - to rl_vi_unix_word_rubout + 5/10 + ---- -lib/readline/funmap.c - - vi-unix-word-rubout is new bindable name for rl_vi_unix_word_rubout +variables.c + - push_var_context: if we are in Posix mode and manipulating the + temporary environment (temporary_env), implement behavior specified + in Posix interp 1009 and make sure that temporary assignments + preceding function calls modify the current environment *before* + the function is executed. -lib/readline/readline.h - - rl_vi_unix_word_rubout: new extern declaration +[bash-5.0-alpha frozen] - 2/28 + 5/12 ---- -doc/bash.1 - - document readline blink-matching-paren variable - - document readline completion-display-width variable - - document readline completion-map-case variable - - note that the default value of history-size depends on the value of - the HISTSIZE variable. All from a message from Branden Robinson - - -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 - +execute_cmd.c + - execute_in_subshell: subshells should set loop_level == 0, since + they are no longer "enclosed" by the loop, according to posix. + Report from Aeron.E. Wang - 3/12 + 5/24 ---- -lib/readline/display.c: - - rl_clear_visible_line: clear all screen lines occupied by the current - visible readline line. Inspired by report from Lauri Ranta - +Makefile.in + - pkgconfigdir: don't fail installing bash.pc if this directory doesn't + exist or isn't writable -- there's no error in failing to install + something nothing will use + - install-headers-dirs: creat $(pkgconfigdir) if it doesn't exist -lib/readline/readline.h - - rl_clear_visible_line: extern declaration +lib/sh/shmbchar.c + - utf8_mblen: replace with version from gnulib + - utf8_mbstrlen: reimplement using utf8_mblen so it handles invalid + multibyte sequences in the same way as mbstrlen -lib/readline/doc/rltech.texi - - rl_clear_visible_line: add documentation +lib/readline/mbutil.c + - _rl_utf8_mblen: utf-8 specific version of mblen from gnulib - 3/19 - ---- -findcmd.c - - file_status: add inadvertently-dropped test for EXECIGNORE to the - `other' bits check. The check was in the original patch - - search_for_command: if the file should not be considered executable - because it's in the EXECIGNORE blacklist, don't set file_to_lose_on, - since the attempt to execute the last-ditch path will circumvent the - EXECIGNORE setting. Fixes bug reported by Dennis Williamson - +include/shmbutil.h + - ADVANCE_CHAR,COPY_CHAR_P: do better job detecting end of string in + UTF-8 locales (should not be called with an empty string, but to + be safe) - 3/28 + 5/25 ---- -lib/readline/display.c - - rl_redisplay: when computing where the cursor should go (and the - physical cursor position) after displaying the prompt, don't adjust - the cursor position by wadjust if there are no multibyte chars in - the prompt. lpos is already a physical cursor position; _rl_screenwidth - is the physical screen width, and we're not calling _rl_col_width and - don't need to take invisible characters into account again. Fixes - bug reported by Andreas Schwab +lib/sh/utf8.c + - new file, utf-8-specific functions collected from other files - 4/1 - --- -parse.y - - parse_comsub: when we read `esac' followed by a break character, - turn on the LEX_RESWDOK flag because we can now read another case - statement or other compound command. Fixes bug reported by - Christian Franke , 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 +externs.h + - extern declarations moved around for utf8.c - 4/7 - --- -builtins/{alias,complete,jobs}.def - - {alias,compopt,disown}: add missing `CASE_HELPOPT;' so --help option - prints help longdoc instead of builtin_usage() +include/shmbutil.h + - SADD_MBCHAR, SADD_MBQCHAR_BODY, ADVANCE_CHAR_P: if the locale is a + UTF-8 locale, don't bother with a call to mbrlen if the current + character cannot start a multibyte character - 4/8 - --- -arrayfunc.c - - assign_array_var_from_word_list: use bind_array_var_internal instead - of inline code, so value conversions happen on assignment (case - modification, arithmetic evaluation, etc). Fixes bug reported by - Geir Hauge +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 - 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/readline/mbutil.c + - _rl_get_char_len: don't call mbrlen if we are in a UTF-8 locale and + the character cannot start a multibyte sequence -lib/glob/sm_loop.c - - EXT: if we see ?(pat), we can match 0 or 1 times, so if we don't - match, we should consume the extglob pattern and go on to attempt - to match the rest of the pattern against the string. Fixes bug - reported by Isabella Parakiss - - 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 +builtins/read.def + - read_builtin: if mb_cur_max > 1, call read_mbchar only if we're not + in a utf-8 locale or, if we are, the character we just read indicates + the start of a multibyte sequence - 4/13 +subst.c + - string_extract_verbatim: don't call MBRLEN if we're in a utf-8 + locale and the current character can't start a multibyte sequence + - setifs: don't call MBRLEN if we're in a utf-8 locale and the first + character of $IFS can't start a multibyte sequence + +lib/readline/kill.c + - rl_bracketed_paste_begin: make sure we return 0 here if rl_insert_text + returns the right number of characters inserted to be consistent + with other functions. Returns 1 otherwise. Report and fix from + Gabe Krabbe back in March, 2018 + +lib/readline/readline.c + - rl_subseq_result: make sure r is < 0 before checking map[ANYOTHERKEY] + to see if we shadowed a key that should now be tried + + 5/27 ---- -bashhist.c - - hc_erasedups: fix memory leak by freeing history entry returned by - remove_history. Bug and fix from Seiichi Ishitsuka - +variables.c + - assign_aliasvar: perform same validity check on subscript assignment + as alias builtin performs on name argument. Bug report from + Mike Jonkmans - 4/19 + 5/29 ---- -config-top.h - - CD_COMPLAINS: now settable in config-top.h; enables (fatal) error - messages if cd is given multiple directory arguments +builtins/setattr.def + - set_var_attribute: we should not propagate a variable assignment + preceding a builtin back to the calling environment unless the + shell is in posix mode. Since previous versions of the shell do + this, setting the shell compatibility level to 44 or less will + continue the propagation behavior + + 6/1 + --- +lib/readline/histexpand.c + - history_tokenize_word: as part of teaching history tokenization more + and more about shell syntax, allow command and process subsitution + and extended globbing patterns to appear within a word being + tokenized and not just at the beginning. Fixes bug reported back in + 2/2017 by ecki@tofex.de + +bashhist.c + - load_history: use HISTSIZE_DEFAULT (still defaults to "500") to set + the initial value of $HISTSIZE. HISTSIZE_DEFAULT can be overridden + in config-top.h - 4/20 - ---- -execute_cmd.c - - coproc_setvars: refuse to create variables with names that are not - valid identifiers. Suggestion from Piotr Grzybowski - + 6/4 + --- +configure.ac + - make sure we link against an external readline library that's at + least version 8 -rltty.c - - rl_tty_set_echoing: interface to set _rl_echoing_p, returning old - value. Inspired by gdb use of _rl_echoing_p when switching - between terminal and curses modes described by Doug Evans - + 6/8 + --- +pcomplete.h + - INITIALWORD: internal compspec name for programmable completion on + the initial (usually the command) word bashline.c - - bash_execute_unix_command: use rl_clear_visible_line instead of - erasing current line on the screen, inspired by same report from - 3/12. Still tentative change + - attempt_shell_completion: if we are in a command position and the + user has defined a compspec for INITIALWORD, use programmable + completion to complete command words. Original patch from + Luca Boccassi -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 +lib/readline/doc/rluser.texi,builtins/complete.def,doc/bash.1 + - make it clearer that -D takes precedence over -E when supplied as + options to `complete', not when they are applied during completion - 4/22 - ---- -builtins/evalstring.c - - should_suppress_fork: don't suppress the fork if there are any traps - set, since that requires that we hang around to react to a signal or - collect the command's exit status and run something. Fixes bug - reported by Brian Vandenberg +builtins/complete.def + - complete_builtin,compgen_builtin: add support for -I option + - print_one_completion,print_compopts: display -I when appropriate -histexpand.c - - history_tokenize_word: handle >| as a single token. Fix from - Piotr Grzybowski from a report from - idallen@idallen-fibe.dyndns.org +lib/readline/doc/rluser.texi,doc/bash.1 + - complete,compgen: document new -I option and its effect - 4/24 + 6/10 ---- -execute_cmd. - - coproc_setvars: don't overwrite readonly variables used as coproc - names. From a report from Grisha Levit +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 -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 + 6/12 + ---- +bashline.c + - attempt_shell_completion: don't all the programmable completion for + INITIALWORD if programmable completion is disabled + - attempt_shell_completion: make sure in_command_position remains set + for an empty command word on an otherwise blank line, making the + presence of assignment statements optional. Report from + Luca Boccassi -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 + 6/20 + ---- +lib/malloc/malloc.c + - morecore,internal_malloc,internal_free: requests for more than + 128K bytes (defined as MMAP_THRESHOLD and saved in the new + malloc_mmap_threshold variable) are now satisfied via mmap and + freed via munmap. We only use mmap if we have mmap and MAP_ANON + (or MAP_ANONYMOUS). These blocks are not available for splitting + or coalescing, so every request for 128K bytes or smaller is + satisfied via sbrk(). We don't use mremap for realloc yet, but + we could in the future + +lib/malloc/mstats.h + - malloc_stats: the malloc stats now include the number of calls to + mmap and the total number of bytes requested via mmap. The number + of calls to munmap is captured in each bucket's lesscore count + +lib/malloc/stats.c + - print_malloc_stats: now prints an indication of where the change from + sbrk to mmap takes place, and prints number of mmap calls and total + number of bytes allocated using mmap - 4/25 + 6/22 ---- -subst.c - - command_substitute: update the conditions under which we give the - terminal to pipeline_pgrp with give_terminal_to to the same ones - where wait_for uses to decide whether to give the terminal back to - shell_pgrp. This code exists to undo the work wait_for does; it - has to give the terminal back to pipeline_pgrp only under those - conditions when wait_for gives it back to the shell pgrp. Fix for - bug reported by Paulo Bardes +variables.c + - get_bashargcv: new dynamic "fetch" variable for BASH_ARGV and + BASH_ARGC, for backwards compatibility: if a script makes a + reference to either variable at the top level (not in a shell + function) without enabling debugging mode and not having initialized + the variable previously (using a simple semaphore), create the + variables - 4/26 + 6/25 ---- +configure.ac + - opt_bash_malloc: bash malloc no longer disabled for systems that + require eight-bit alignment; the bash malloc has had this for a + long time + + 7/4 + --- bashline.c - - bash_filename_stat_hook: temporarily disable the `nounset' shell - option around calls to expand_prompt_string so we don't get error - messages during completion. Fixes issue reported by Eric Pruitt - + - pre_process_line: if command-oriented history is enabled, and the + line being expanded is the second or later in a multi-line command, + and we know the command is being saved as the current history entry, + decrease history_length before calling history_expand so references + like !! refer to the previous history entry as usual - 4/27 - ---- -doc/{bash.1,bashref.texi} - - extdebug: clarify that having this option enabled at shell startup - acts identically to --debugger. From a report from Grisha Levit - +lib/readline/histexpand.c + - history_quoting_state: new variable, can be set by calling + application before calling history_expand to note that the string + being expanded is part of a quoted string. Can be set to a single + quote, a double quote, or 0 (no quoting) + - history_expand: look at history_quoting_state and honor the + single-quote setting by not expanding any initial portion of the + line before the closing single quote. This allows history expansions + to be performed on a line containing a closing single quote if they + appear after the single quote -jobs.[ch] - - wait_for_single_pid: now takes additional `int flags' argument +lib/readline/history.h + - history_quoting_state: extern declaration -{jobs,execute_cmd}.c,builtins/wait.def - - wait_for_single_pid: changed callers to add extra argument +bashhist.c + - bash_history_inhibit_expansion: if history_quoting_state indicates + that this string is single-quoted, skip over the single-quoted + portion and determine whether or not the portion after the + quoted string needs to be inhibited from history expansion -jobs.c - - wait_for_single_pid: if (flags & 1) == 0, don't print the error - message if PID isn't found; changed execute_pipeline call when - lastpipe is set +parse.y + - shell_getc: set history_quoting_state based on the contents of the + current delimiter before calling pre_process_line - 4/28 - ---- -general.c - - bash_tilde_expand: try not setting interrupt_immediately or - terminate_immediately; see what happens with networked password - databases + 7/6 + --- +lib/readline/doc/hsuser.texi + - describe the default behavior of backslash and single and double + quotes - 4/29 - ---- -subst.c - - parameter_brace_expand, parameter_brace_expand_rhs: now take an - additional `pflags' argument from its caller so we can pass - state - - parameter_brace_expand_rhs: if expand_string_for_rhs returns a - quoted null, but l_hasdollat is set to 1, meaning we saw a quoted - "$@" of some form, we need to turn off special handling of "$@" - so something like "${@-${@-$@}}" expands to an empty string like - Posix says it should. Fixes bug reported by Grisha Levit - +lib/readline/doc/hstech.texi + - history_quoting_state: describe effect of setting this variable + - history_quotes_inihibit_expansion: expand the description to include + the default quoting behavior that setting this variable enables - 5/1 + 7/9 --- -variables.c - - bind_variable_internal: if we have a nameref variable with a valid - array reference that is invalid for assignment (e.g., a[*]), and - assign_array_element returns NULL, short-circuit and return NULL. - Fixes bug reported by Grisha Levit +support/man2html.c + - unescape: use memmove instead of strcpy to handle overlapping strings + Report and fix from Bernhard M. Wiedemann -general.[ch] - - valid_nameref_value: new function, return 1 if passed argument is - a valid variable name argument for a nameref variable: a valid - identifier, a valid array reference, or a valid positional - parameter. Second argument indicates whether the value is to be - used for an assignment; in this case, return an error if the name - consists of all digits +lib/sh/getenv.c + - getenv: check that environ is non-NULL before looking through it. + Report and fix from Keeley Hoek + + 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: disallow values for nameref variables that don't - pass the tests in valid_nameref_value. Part of fix for bug - reported by Grisha Levit + - 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 + - bind_variable_internal: if we're assigning through a nameref, don't + create a variable with an invalid name under any circumstances - 5/2 - --- -builtins/declare.def - - declare_internal: don't allow nameref attribute to be applied to an - existing readonly variable; it can be used to circumvent readonly - value. Fix for bug reported by Grisha Levit +builtins/common.c + - get_job_spec: make sure to return NO_JOB if atoi() returns < 0 due + to integer overflow. + Bug reported by Simon Wörner -{variables,execute_cmd,arrayfunc,subst}.c,builtins/{declare,set}.def - - find_variable_last_nameref, find_global_variable_last_nameref: change - callers to add flags argument (initially 0) +parse.y,externs.h + - reset_readahead_token: new convenience function for the rest of + the shell, resets token_to_read if it's a newline (as it will be + after reset_parser is called) - 5/3 - --- -variables.c - - bind_variable_internal: make sure we run the value of a namref - variable through valid_nameref_value before doing the assignment. - This can go away if we stop allowing namerefs to refer to positional - parameters +eval.c + - reader_loop: if we're just going to execute one command, make sure + the read-ahead token isn't set to something that will result in a + NULL command (by calling reset_readahead_token), since the code + will take that as the one command and set EOF_Reached -execute_cmd.c - - execute_select_command: if bind_variable returns NULL, handle it as - an error, as if attempting assignment to a readonly variable - - execute_for_command: use 1 as second argument to - find_variable_last_nameref, so it will return an invisible nameref - to assign for each variable in the list - - execute_for_command: if the current word in the list is an invalid - identifier and the loop variable is a nameref, handle it as an error, - as if attempting assignment to a readonly variable + 7/15 + ---- +doc/{bash.1,bashref.texi} + - indirect expansion: clarify that the expansion works on parameters, + not just variables (NAMEs). Suggested by konsolebox + + + 7/16 + ---- +doc/{bash.1,bashref.texi} + - INSIDE_EMACS: document its effect on line editing + + 7/17 + ---- +lib/readline/{readline.c,rlprivate.h} + - _rl_eof_found: new variable, private to the readline library, that + indicates whether the current call to readline() will return NULL + because we read EOF + +lib/readline/rltty.c + - rl_deprep_terminal: if bracketed paste mode is active, the last + character of the string to disable it is \r (to avoid confusing + the terminal driver about where the cursor is). In this case, + output a newline before returning so subsequent text (like the + `exit' bash prints) doesn't overwrite the prompt. Bug from + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=903936 - 5/4 - --- variables.c - - bind_int_variable: add warning if assigning an int to a nameref - variable - - assign_in_env: if assigning a variable in the temporary environment - that is a namref, throw an error if trying to assign an invalid - value - - bind_variable_value: use valid_nameref_value instead of calls to - legal_identifier and valid_array_reference + - make_local_assoc_variable: add second argument like corresponding + local array function, to allow this function to return an existing + local array variable to the caller for the caller to handle -execute_cmd.c - - coproc_setvars: if we have a nameref variable as the coproc name, but - it can't be assigned to for some reason, remove the nameref attribute - and issue a warning that we are doing so - - coproc_setvars: don't allow assignment to a nameref variable with an - invalid variable name, using same code as find_or_make_array_variable +variables.h + - make_local_assoc_variable: change function prototype to add second + arg -general.c - - valid_nameref_value: disallow values consisting solely of digits, - like the positional parameters +{subst.c,variables.c} + - make_local_assoc_variable: change callers builtins/declare.def - - declare_internal: don't call valid_nameref_value on the existing value - of a variable that's being converted to a nameref -- that value is - going to be thrown away and we've already checked the new value - - declare_internal: call bind_variable_value with the ASS_NAMEREF flag - if we're assigning to an existing nameref variable (for instance, - `declare -n x ; declare x=42') + - declare_internal: call make_local_assoc_variable with a non-zero + second arg to have it return an existing local array variable to be + flagged as an error. Fixes bug reported by Grisha Levit + + - declare_internal: call make_local_array_variable with unconditional + second argument of 1 for the same reason as above - 5/5 - --- + 7/18 + ---- variables.c - - make_local_variable: if we are being asked to create a local copy of - a nameref variable from a prior scope (checked by looking up - using find_variable_noref), use the nameref variable, not the variable - it references (which we find using find_variable). Bug report from - Grisha Levit ; fix by Piotr Grzybowski - + - 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 -builtins/declare.def - - declare_internal: if asked to do the same thing as above (difference - is declare -n r=foo in previous case; declare -n r in this one), - don't follow reference var from a previous context. Create a new - local variable (using make_local_variable) and inherit attributes - from previous scope's nameref as above +test.c + - unary_test: rearrange code slightly to avoid a wasted variable lookup + if the argument to -v is a subscripted array reference - 5/6 - --- -builtins/declare.def - - declare_internal: if we are assigning a value to an existing - invisible nameref variable, validate value early so we don't end up - removing the variable after the assignment fails + 7/19 + ---- +variables.c + - nameref_transform_name: if a name doesn't resolve to a shell variable, + this function will check whether it resolves to a nameref that + points to a variable that hasn't been created yet -builtins/shopt.def - - toggle_shopts: don't call set_bashopts here unless $BASHOPTS exists, - since we don't want to set it up before it gets read from the - environment. Keeping BASHOPTS read-only should keep users from - unsetting it. Fix from Grisha Levit - - 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 +variables.h + - nameref_transform_name: extern declaration -shell.c - - start_debugger: make sure that function_trace_mode and error_trace_mode - reflect the value of debugging_mode, so they are both disabled if we - disable debugging mode because we can't find the debugger start file. - Fix from Grisha Levit - - start_debugger: set $SHELLOPTS and $BASHOPTS to the option values are - reflected if we change or set them here. Fix from Grisha Levit +subst.c + - do_compound_assignment: make sure that we follow any nameref chain + if the name passed resolves to a nameref that points to a variable + that doesn't exist. Fixes issue raised by Grisha Levit -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 +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 -flags.c - - reset_shell_flags: add missing flags, re-initialize history_expansion - based on STRICT_POSIX + 7/20 + ---- +builtins/declare.def + - declare_internal: if we are creating a global variable with -g, even + if we're not giving it a value, check for namerefs at the global + scope to avoid confusion with namerefs at the local (function) scope. - 5/8 - --- -lib/readline/histexpand.c - - history_expand: if any expansion returns 1 from history_expand_internal, - indicating that :p was supplied, make it apply to the entire line - like tcsh and csh. Fixes bug reported by Dean Stanton - +subst.c + - expand_word_internal: if a double-quoted string expands to nothing, + make sure we note that for later by setting had_quoted_null, just + as we do for single-quoted empty strings -variables.[ch] - - ifsname: move define to variables.h +subst.[ch] + - W_SAWQUOTEDNULL: new flag (replaces W_HASCTLESC, which is unused), + means that we saw a possibly-discarded quoted null while expanding + this word -execute_cmd.c - - execute_for_command: check whether or not the word in the for command - is IFS; call setifs every time the variable is assigned a value. - Fixes bug report from Grisha Levit +subst.c + - expand_word_internal: if expansion results in a non-empty word but + we saw a quoted null during expansion (had_quoted_null == 1), set + W_SAWQUOTED_NULL in the returned word + - expand_word_internal: if a recursive call to param_expand comes back + with W_SAWQUOTEDNULL set in the resulting word, set had_quoted_null + to note it + - parameter_brace_expand_rhs: if a recursive call to expand_word_internal + returns a non-quoted-null string (after an optional call to + string_list) make sure we pass the W_SAWQUOTEDNULL flag back to the + caller + - word_list_split: if a word expands to nothing after expansion and + splitting, but we saw a quoted null during the expansion + (W_SAWQUOTEDNULL), return an empty word - 5/16 + 7/25 ---- -general.c - - valid_nameref_value: explicitly handle name == 0 and *name == 0 right - away to save calls to legal_identifier -builtins/declare.def - - declare_internal: if trying to set nameref attribute on a variable - with a null value, flag as invalid assignment, just as if running - `declare -n r=""'. Fixes bug report from Grisha Levit +subst.c + - do_compound_assignment: if creating a local variable, make sure to + set `newname' to the name of the variable returned from find_variable, + since that follows namerefs. Fixes issue raised by Grisha Levit - - declare_internal: when creating a variable with a temporary value - (""), use ASS_FORCE in the assignment flags to bypass name validity - checks on nameref variable names + 7/29 + ---- +subst.c + - get_var_and_type: if VALUE is NULL, check before calling dequote_string. + Report and fix from Grisha Levit + + 7/30 + ---- variables.c - - bind_variable_internal: don't call valid_nameref_value if we're - forcing assignment with (flags & ASS_FORCE) + - make_local_{array,assoc}_variable: make sure we're not trying to + inherit a value from an incompatible array type. Fixes issue raised + by Grisha Levit + - 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 + -builtins/read.def - - read_builtin: handle bind_variable returning NULL when setting REPLY. - Report and fix from Grisha Levit + 8/2 + --- +array.c + - array_subrange: change to use string_list_pos_params after creating a + WORD_LIST from the array slice, like assoc_subrange does -builtins/setattr.def - - set_var_attribute: handle bind_variable returning NULL +subst.c + - parameter_brace_substring: since assoc_subrange and array_subrange + both call string_list_pos_params now, treat the results the same as + the VT_POSPARAMS case (pos_params also calls string_list_pos_params). + Fixes behavior difference between ${a[@]:sub} and ${@:sub} reported + by Ilkka Virta -lib/sh/tmpfile.c - - sh_seedrand(): call srandom() to seed the random number generator - - sh_mktmpname, sh_mktmpfd: if we have random(), assume we have - srandom() and seed the random number generator. Still looking for - better value to see random number generator with + 8/3 + --- +array.c + - array_patsub: rewrite to work in terms of a WORD_LIST * and call + string_list_pos_params on the result to be consistent with the + expansions of ${@/pat/rep} and ${*/pat/rep} -variables.c - - check_unbind_variable: use internal_error instead of builtin_error +assoc.c + - assoc_patsub: rewrite to work in terms of a WORD_LIST * and call + string_list_pos_params on the result to be consistent with the + expansions of ${@/pat/rep} and ${*/pat/rep} -{execute_cmd,variables}.c - - fix some places where bind_variable could return NULL and it was not - checked. Fix from Piotr Grzybowski +subst.c + - parameter_brace_patsub: change how return value of {array,assoc}_patsub + is treated to make it identical to pos_params_pat_subst, since they + all call string_list_pos_params now + - expand_string_for_pat: make sure we preserve the value of + expand_no_split_dollar_star instead of just unconditionally setting + it back to 0 in case it was 1 before this function was called - 5/17 - ---- -arrayfunc.c - - convert_var_to_{array,assoc}: make sure to turn off nameref attribute, - since namerefs can't be arrays + 8/6 + --- +array.c + - array_modcase: rewrite to work in terms of a WORD_LIST * and call + string_list_pos_params on the result to be consistent with the + expansions of ${@,,} and ${*,,} -execute_cmd.c - - coproc_setvars: if the coproc name names a nameref, resolve the - nameref and use it as the name of the coproc. Suggested by Grisha - Levit +assoc.c + - assoc_modcase: rewrite to work in terms of a WORD_LIST * and call + string_list_pos_params on the result to be consistent with the + expansions of ${@,,} and ${*,,} subst.c - - command_substitute: don't bother calling QUIT after calling - reset_signal_handlers in the child, kill the child with SIGINT in - case we just reset the signal handler to SIG_DFL and we should just - exit instead of throwing to top level. Fixes bug reported by - Grisha Levit + - parameter_brace_casemod: change how return value of {array,assoc}_modcase + is treated to make it identical to pos_params_modcase, since they + all call string_list_pos_params now + + 8/8 + --- +builtins/declare.def + - declare_internal: if we are making local variables, and not dealing + with the nameref attribute, make sure that any nameref variable we + followed when resolving the name given was at the same variable + context. If not, we just want to make or use a local variable with + the name passed; if so, we want to use the nameref value as the + variable name. Report from Grisha Levit + + 8/9 + --- +configure.ac + - globasciiranges: RRI now on by default, must be turned off explicitly + at configure time or runtime with `shopt -u globasciiranges' - 5/18 + 8/14 ---- variables.c - - find_variable_nameref_for_create: find a nameref variable whose value - doesn't resolve to an existing variable and see whether or not that - value is appropriate for a new variable to be created - - find_variable_nameref_for_assignment: find a nameref variable whose - value doesn't resolve to an existing variable and see whether or not - that value is appropriate for a new variable to be created. - Difference between _assignment and _create is that _assignment - allows the nameref value to be a subscripted array reference + - dispose_saved_dollar_vars: decrement stack pointer before looking + for saved positional parameters to dispose; stack pointer always + points to the first unused slot -builtins/setattr.def - - set_var_attribute: if variable lookup doesn't return anything, check - for a nameref and make sure that any reference value is something we - should be working on here, using find_variable_nameref_for_create(). - If it fails, error out and return, otherwise it's probably a reference - to a variable that hasn't been set yet, so let bind_variable take care - of that. Report from Grisha Levit + 8/15 + ---- +variables.c + - dollar_arg_stack: now a stack of struct saved_dollar_vars, which has + an array for the first ten (dollar_vars) and a WORD_LIST * for the + remaining (rest_of_args). Fixes performance issue with function calls + and large numbers of positional parameters raised by + Bize Ma + - {save,restore,free,free_saved}_dollar_vars: new functions to manage + dollar_vars and dollar_arg_stack members. Need to keep these in sync + with whatever remember_args does + - push_dollar_vars: use save_dollar_vars, which just copies pointers, + and directly assign rest_of_args, without copying the words, to the + dollar_arg_stack entry. Have to clear dollar_vars and rest_of_args + with the assumption that callers will call remember_args(args, 1) + immediately following + - pop_dollar_vars: free current positional parameters and restore old + ones from pointers saved in dollar_arg_stack, making sure to + invalidate any cached value for "$@" + - dispose_saved_dollar_vars: free saved pointers from current index + into dollar_arg_stack -arrayfunc.c - - bind_array_variable: if find_shell_variable returns NULL, check for a - nameref using find_variable_nameref_for_create and create a new array - variable with the value if it returns a valid nameref variable. - Makes `unset var; declare -n ref=var ; ref[0]=foo' work right. - Report from Grisha Levit +doc/{bash.1,bashref.texi} + - POSIXLY_CORRECT: make sure to note that bash makes sure this variable + is set when posix mode is enabled - 5/19 + 8/17 ---- -variables.[ch] - - unbind_variable_noref: unset a variable NAME without following any - nameref chain. If the first instance of the variable with that name - is a nameref, just unset that nameref variable. +{jobs,nojobs}.c + - set_jobs_list_frozen: set jobs_list_frozen to a particular value. + Intended to save and restore the value around code sections instead + of unconditionally unfreezing it. -builtins/getopts.def - - getopts_unbind_variable: if OPTARG is going to be unbound, use - unbind_variable_noref to unbind that name even if it is a nameref - variable. Issue raised by Grisha Levit +jobs.h + - set_jobs_list_frozen: extern declaration execute_cmd.c - - coproc_unsetvars: use unbind_variable_noref in case someone sets the - coproc _PID variable as a nameref pointing to something read-only or - strange. Issue raised by Grisha Levit + - 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 -builtins/set.def - - set_ignoreeof: use unbind_variable_noref to unset "IGNOREEOF" and - "ignoreeof" - - set_posix_mode: use unbind_variable_noref to unset "POSIXLY_CORRECT" + 8/24 + ---- +execute_cmd.c + - lastpipe_cleanup: call set_jobs_list_frozen instead of + unfreeze_jobs_list + - execute_pipeline: set up lastpipe_cleanup with old value of + jobs_list_frozen -variables.c - - make_vers_array: use unbind_variable_noref to unset "BASH_VERSINFO" + 9/3 + --- +builtins/printf.def + - getuintmax,getfloatmax: on a conversion error, return as much of the + value as we were able to convert instead of 0. Fixes bug reported + by Robert Elz -lib/sh/shmatch.c - - sh_regmatch: use unbind_variable_noref to unset "BASH_REMATCH" + 9/4 + --- +lib/readline/text.c,lib/readline/rlprivate.h + - _rl_backward_char_internal: new function, guts of rl_backward_char + and rl_backward_byte, not currently used there -bashline.c - - bash_execute_unix_command: use check_unbind_variable to unset - READLINE_LINE and READLINE_POINT +lib/readline/vi_mode.c + - _rl_vi_advance_point: new function, move point forward by one + character, handling multibyte locales and characters and the end + of line semantics + - _rl_vi_backup_point: new function, move point backward by one + character, handling multibyte locales and characters + - rl_vi_eword,rl_vi_eWord: use rl_vi_advance_point instead of a simple + increment to handle multibyte characters. Fixes bug reported by + Enrico Maria De Angelis -pcomplete.c - - unbind_compfunc_variables: use unbind_variable_noref to unset - COMP_LINE, COMP_POINT, COMP_WORDS, COMP_CWORD, COMP_TYPE, COMP_KEY - - gen_shell_function_matches: use unbind_variable_noref to unset - COMPREPLY + 9/5 + --- +lib/readline/vi_mode.c + - rl_vi_fword,rl_vi_fWord: use rl_vi_advance_point instead of a simple + increment to handle multibyte characters + - rl_vi_bword,rl_vi_bWord: use rl_vi_backup_point instead of a simple + decrement (and _rl_vi_advance_point where necessary) to handle + multibyte characters + - rl_vi_complete,_rl_vi_change_mbchar_case,_rl_vi_domove_motion_cleanup: + use _rl_vi_advance_point instead of simple rl_point increment + - vi_delete_dispatch,vi_change_dispatch,vi_yank_dispatch: use + INCREMENT_POS instead of a simple increment to rl_mark to handle + multibyte characters + - rl_vi_column: use _rl_forward_char_internal, starting with + rl_point == 0, to handle multibyte characters (Posix says `character + position', not index) -config-top.h - - USE_MKTEMP/USE_MKSTEMP: define by default to use libc version of - mktemp and mkstemp in lib/sh/tmpfile.c. Recommended by Mike - Frysinger to fix a FreeBSD problem + 9/7 + --- +configure.ac + - changed release status to `beta' -configure.ac,config.h.in - - mkstemp: check for mkstemp, define HAVE_MKSTEMP if available + 9/9 + --- +lib/readline/display.c + - _rl_update_final: if the bottom line has zero characters and we are + on that line at column 0, don't bother with an additional \r\n. + Fixes redisplay nit reported by Per Bothner -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 +configure.ac + - openbsd needs DEV_FD_STAT_BROKEN defined - 5/24 - ---- -lib/readline/display.c - - update_line,_rl_move_cursor_relative: save value of MB_CUR_MAX in a - variable and use it throughout the functions instead of recomputing it - every time (which possibly costs a function call) +[bash-5.0-beta frozen] - 5/25 + 9/11 ---- -builtins/declare.def - - declare_internal: only check whether the value being assigned to a - nameref variable is a valid identifier if we're not appending to an - existing value. Suggested by Grisha Levit - - declare_internal: add a couple of more checks on nameref names: - o make sure `declare -n x[3]=y' is an error - o nameref variable self-references now produce a warning when - in function scope - o nameref variable self-references using subscripted arrays - (a=a[0]) now produce warnings at function scope and errors at - global scope +builtins/exec.def + - exec_builtin: make sure to sync the buffered stream where bash is + reading input (especially if it's fd 0) so a command exec'd by the + script can read the rest of stdin after the exec - 5/29 + 9/15 ---- -builtins/declare.def - - declare_internal: use name of readonly variable when calling sh_readonly - instead of name passed as argument to declare in case we've followed - a nameref chain - - declare_internal: when turning off attributes on a nameref variable - after following the nameref chain and turning them off on the target - variable, don't allow the readonly attribute to be removed. This is - primarily intended to turn off the nameref attribute. Issue pointed - out by Grisha Levit - - declare_internal: if we are attempting to modify an existing global - nameref variable, and the -n option is supplied, operate on the - nameref variable itself, not the variable it references +lib/readline/histexpand.c + - history_tokenize_internal: if the event contains embedded newlines + (e.g., bash with command-oriented history and lithist), use them as + word delimiters, equivalent to space and tab, so they don't end up + as separate words. Fixes issue pointed out by Viktor Dukhovni + + - history_tokenize_word: don't break if we get a newline (though we + shouldn't get one due to the loop in history_tokenize_internal + - history_expand_internal: use newline as a whitespace character when + expanding by words, as we do with history_tokenize_internal -doc/{bash.1,bashref.texi} - - change the descriptions of namerefs and declare -n slightly to note - that using the -n option to declare will operate on the nameref - variable itself rather than the variable it references +jobs.h + - J_PIPEFAIL: new flag for `flags' element of job struct -variables.c - - bind_variable_internal: if trying to assign to a read-only variable, - print the error message using the variable's name instead of the - name passed to bind_variable in case we followed a nameref +jobs.c + - stop_pipeline: if pipefail_opt set, newjob gets J_PIPEFAIL in its + flags word + - raw_job_exit_status: use J_PIPEFAIL (setting of pipefail when job + created) instead of current setting of pipefail status to determine + how to compute exit status of pipeline. Tentative implementation of + Posix proposal -builtins/declare.def - - declare_internal: when we're creating a (possibly invisible) variable - as part of another operation, assigning NULL, make sure to use - ASS_FORCE to avoid warning messages from any existing nameref - variables we follow - - declare_internal: allow the nameref attribute to be removed from a - readonly nameref variable without a value but do not allow it to be - removed from a readonly nameref variable that has a value, even if it - doesn't reference an existing variable. This distinction is for ksh93 - compatibility. Pointed out by Grisha Levit +expr.c + - exp0: don't call expr_bind_variable with a NULL string. Fixes + fuzzing bug reported by Eduardo Bustamante + - expr_bind_variable: don't try to do anything with a NULL or empty + LHS - 5/31 + 9/16 ---- -builtins/declare.def - - declare_internal: if the call to bind_variable_value fails for some - reason, make sure to restore the nameref attribute to flags_on and - flags_off before calling NEXT_VARIABLE +lib/readline/undo.c + - rl_do_undo: before we release the undo list entry we've just + processed, make sure we avoid any pointer aliasing issues caused + by having the entry being removed as part of the undo list in + _rl_saved_line_for_history. Fixes fuzzing bug reported by + Eduardo Bustamante -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 - + 9/17 + ---- +[bash-5.0-beta released] - 6/1 - --- -builtins/declare.def - - declare_internal: if a nameref assignment fails, only call delete_var - to delete the variable if we created it in declare_internal in the - first place + 9/18 + ---- +lib/readline/bind.c + - name_and_keymap: new struct for keymap names and maps + - builtin_keymap_names: static array of builtin keymap names and + maps; preparing for allowing applications to set the names of + keymaps they create; keymap_names is initially a pointer to + this array + - _rl_get_keymap_by_name,_rl_get_keymap_by_map: new functions for + searching the keymap_names array and returning an index + - rl_get_keymap_by_name, rl_get_keymap_name: rewritten in terms of + new functions above + - rl_set_keymap_name (char *name, Keymap map): new function, set + name of MAP to NAME. NAME must not be builtin; MAP must not be one + of the builtin keymaps. Request and initial implementation from + Tom Tromey -general.c - - check_selfref: new function, checks a NAME against a VALUE for nameref - self-reference +lib/readline/readline.h + - rl_set_keymap_name: new extern declaration for new public function -general.h - - check_selfref: extern declaration +lib/readline/doc/rltech.texi + - rl_set_keymap_name: add documentation -builtins/declare.def - - declare_internal: call check_selfref to determine whether a given NAME - and VALUE constitute an invalid nameref variable self-reference +lib/readline/doc/rluser.texi + - add text to `set keymap' description to note that applications + can add keymap names that can be used there + + 9/20 + ---- +parse.y + - shell_getc: don't execute the alias hack (returning a space at the + end of the string) if we are parsing a command substitution that + starts with a double paren (subshell inside a comsub), in which + case the flags are PSH_DPAREN. Fixes fuzzing bug reported by + Eduardo Bustamante -variables.c - - bind_variable_internal: call check_selfref to determine whether a - given NAME and VALUE constitute an invalid nameref variable self- - reference +lib/readline/isearch.c + - _rl_isearch_dispatch: default case: make sure we check multibyte + char length when deciding whether to enlarge the search string + buffer, instead of using the old assumption. Fixes fuzzing bug + reported by Eduardo Bustamante - 6/2 - --- -parse.y - - clear_shell_input_line: new function, clears contents of shell_input_line - and sets index to 0, but doesn't free it +builtins/fc.def,execute_cmd.c + - fixed some missing free()s uncovered by coverity. Report from + Siteshwar Vashisht -externs.h - - clear_shell_input_line: extern declaration +lib/glob/glob.c + - glob_vector: make sure name_vector is initialized to NULL -builtins/evalstring.c - - parse_and_execute: call clear_shell_input_line after setting input to - string to be executed. Fixes problem with command substitution and - multi-line aliases reported by Grisha Levit +lib/sh/{pathcanon,pathphys}.c + - {pathcanon,pathphys}: use memmove instead of strcpy on a possibly- + overlapping region of memory -eval.c - - parse_command: only execute PROMPT_COMMAND if the shell is not - currently expanding an alias; use the same tests as parse.y:SHOULD_PROMPT - and parse.y:prompt_again() use to decide whether or not to print a - prompt. Fixes problems with PROMPT_COMMAND and multi-line aliases - reported by Grisha Levit +subst.c + - parameter_list_transform: make sure to dispose the word list in all + cases before returning + - parameter_brace_expand_rhs: make sure t1 is freed before returning + due to an invalid name resulting from an indirect expansion -builtins/set.def - - unset_builtin: changes to fix three problems reported by Grisha - Levit : - o if -n is supplied, we should not try to unset a function if - a variable isn't found - o unsetting namerefs whose values are array references does - not work - o unset -n n[0], where n is a nameref, would unset the - referenced variable instead of `n' +support/man2html.c + - fixed a couple of memory leaks -redir.c - - redir_varvalue: handle case where nameref var points to subscripted - array reference. Reported by Grisha Levit + 9/21 + ---- +subst.c + - process_substitute: if we are part of a job control process chain + (pipeline_pgrp != shell_pgrp), have the child shell forked to run + the process substitution set pipeline_pgrp to its own PID, + effectively becoming a process group leader without changing + its own process group. Fixes stray SIGHUP issue reported by + Jeremy Townshend + + 9/23 + ---- +arrayfunc.c + - assign_array_element: if we are assigning to an existing associative + array, and assoc_expand_once is set, allow `*' and `@' as subscripts. + Partial fix for report from Grisha Levit variables.c - - bind_variable_value: make sure to call check_selfref only if aflags - includes ASS_NAMEREF and not ASS_FORCE. Reported by Grisha Levit + - bind_int_variable: if valid_array_reference (lhs) is not true, + make sure that the lhs is a valid identifier before assigning the + value + +arrayfunc.c + - valid_array_reference: allow blank subscripts. They are treated as + `normal' keys for associative arrays and evaluate to 0 for indexed + arrays. More of fix for report from Grisha Levit -general.c - - valid_nameref_value: now understands a FLAGS value of 2 to mean that - the name will be used to create a variable, so only legal_identifier - matters + 9/24 + ---- +bashline.c + - restore_tilde: if the expanded length (xl) is longer than vl + we end up requesting a negative amount of memory (an extremely + large unsigned number). Just punt and return val in this case. + Fuzzing bug reported by Eduardo Bustamante + - restore_tilde: make sure we return what the user typed if tilde + expansion fails -arrayfunc.c - - find_or_make_array_variable: call valid_nameref_value with FLAGS value - of 2 to indicate we will be creating a variable. Fixes mapfile issue - reported by Grisha Levit + 9/29 + ---- +builtins/shopt.def + - uncomment `localvar_unset' option definition - 6/5 - --- -builtins/declare.def - - declare_internal: only pass ASS_FORCE as part of assignment flags to - assignments concerning arrays - - declare_internal: when at the global scope, if we resolve a nameref - and commit to using the new name, go back to to the beginning of the - loop and use the new name in the checks and variable references. - Make sure we construct the new name as a straight substitution of - the nameref value into the old name, including array subscripts and - rebuilding the correct values for `offset' and `value', since they - are relative to the original value of name. - Fixes several issues with checking use of subscripted array variables - as nameref values - - declare_internal: when calling assign_array_element, make sure to - pass ASS_APPEND if aflags includes it, so things like - declare -a var; var[1]=1; declare var[1]+=4 - append to the value appropriately and var[1] ends up being `14' +doc/{bash.1,bashref.texi} + - document `localvar_unset' shell option arrayfunc.c - - valid_array_reference: make sure the array reference is properly - terminated after the first subscript; return invalid if there is - anything following the closing `]' + - valid_array_reference: if we are parsing a subscript for an existing + associative array, the `assoc_expand_once' option is set, and the + VA_ONEWORD flag is set in FLAGS (meaning there should be nothing + following the closing `]'), don't call skipsubscript to find the + closing `]', use one that is at the end of the word. Part of fix for + issue reported by Grisha Levit - 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 - +builtins/{printf,set}.def + - pass VA_ONEWORD as part of flags value everywhere valid_array_reference + is used - 6/14 - ---- -test.c - - posixtest: handle four-argument case where argv[1] == '(' and - argv[4] == ')' by performing two-argument test on $2 and $3. - Reported by Joerg Schilling +config-top.h + - CHECKWINSIZE_DEFAULT: now 1, so check_window_size is on by default + - HISTEXPAND_DEFAULT: new define, allows builder to enable or disable + history expansion by default at build time - 6/15 - ---- -variables.c - - sv_ignoreeof: make sure ignoreeof is set only if IGNOREEOF is set and - has a value (no `local IGNOREEOF'). Reported by Grisha Levit - - - sv_strict_posix: make sure posixly_correct is set only if - POSIXLY_CORRECT is set and has a value. Reported by Grisha Levit - +doc/{bash.1,bashref.texi} + - checkwinsize: document new default value - 6/16 +bashhist.h + - HISTEXPAND_DEFAULT: don't define if it's already defined. Strict + POSIX mode continues to default to off + + 9/30 ---- -builtins/declare.def - - declare_internal: analogous to 6/12 change; when performing an array - subscript assignment on a nameref, display a warning, remove the - nameref attribute, and go on +lib/readline/input.c + - win32_isatty: win32-specific changes from GDB. Patch submitted by + Tom Tromey , originally from Eli Zaretskii + - 6/21 + 10/1 ---- -execute_cmd.c - - shell_execve: make sure errno is (re)set appropriately before - returning error value on exec format error +lib/readline/vi_mode.c + - rl_vi_start_inserting: start an undo group so we can grab the text + inserted here as a single unit, avoiding any insert coalescing + performed by rl_insert_text. Report and fix from Richard Todd + - 6/23 + 10/3 ---- subst.c - - param_expand: when expanding $* in a context where splitting is not - desired (pflags & PF_ASSIGNRHS), make sure to quote the word and the - included separators. Reported by Dan Douglas + - parameter_brace_transform: if we're asked to display the attributes + of an unset variable, check that the variable exists even if + get_var_and_type returns NULL (it checks invisible_p). Requested by + Michal Pesa - 6/30 +lib/readline/kill.c + - _rl_bracketed_text: new function, collects the text pasted in + bracketed paste mode and consumes the bracketed paste end marker; + returns the pasted text and its length + - rl_bracketed_paste_begin: call _rl_bracketed_text to collect the + text + +lib/readline/isearch.c + - _rl_isearch_dispatch: set cxt->lastc to -7 if the input resolves to + rl_bracketed_paste_begin + - _rl_isearch_dispatch: if cxt->lastc == -7, call _rl_bracketed_text + to collect the pasted text and add it to the accumulating search + string. Only works if ESC is not one of the isearch terminators. + Fixes issue reported in Debian bug report 891780, + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=891780 + + 10/5 ---- -configure.ac - - release version is now `beta2' +variables.c + - push_posix_tempvar_internal: new function, body of push_func_var + with additional argument saying whether it's being called from a + function or (special) builtin code path + - push_builtin_var: new function, calls push_posix_tempvar_internal + with second argument indicating builtin code path + - push_func_var: now a stub that calls push_posix_tempvar_internal + with second argument indicating function code path + - pop_scope: if called from a special builtin, call push_builtin_var + instead of push_func_var to do the right variable propagation + +builtins/shopt.def + - progcomp_alias: uncomment, make available to users +doc/{bash.1,bashref.texi},lib/readline/doc/rluser.texi + - progcomp_alias: document shopt option, describe its use in + the section on programmable completion + +trap.c + - decode_signal: handle SIGRTMIN+n at runtime, with the `SIG' prefix + or without, case-insensitively if requested, and return SIGRTMIN+n. + These values could be different than what was available at compile + time. Report and patch from Rasmus Villemoes + + 10/8 + ---- execute_cmd.c - - execute_simple_command: even if already_making_children is non-zero, - don't call wait_for if last_made_pid == NO_PID. Indirectly inspired - by report from Nicolas Vivet + - execute_command_internal: only set line_number from command->value.Subshell + if the type == cm_subshell; otherwise defer and set later - 7/2 - --- -subst.c - - expand_word_internal: when adding an IFS character to the accumulated - string, don't quote it if word expansion is not going to be - performed ((word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0) in the - default case. This was already the case everwhere else, when we did - `goto add_ifs_character;'. Fixes bug reported by Ibrahim M. Ghazal - + 10/10 + ----- +examples/loadables/seq.c + - seq: new loadable builtin, derived originally from coreutils:seq.c + but with very little of that code remaining -subst.[ch],arrayfunc.c - - string_list_dollar_at: now takes a new third argument, currently - reserved for future use; changed callers and declaration + 10/12 + ----- +trap.c + - run_pending_traps,_run_trap_internal: honor evalnest_max and + increment/decrement evalnest accordingly, since trap actions + are processed as if run by `eval'. Feature suggsted by Mike + Gerwitz - 7/7 - --- -[bash-4.4-beta2 frozen] + 10/16 + ----- +expr.c + - expr_skipsubscript: new function, calls skipsubscript with flags + similar to arrayfunc.c:valid_array_subscript if assoc_expand_once + is set and it looks like we've already expanded the subscript of + an associative array. Reported back on 8/27 by Grisha Levit + + - readtok: call expr_skipsubscript instead of skipsubscript - 7/9 - --- -bashline.c - - check_redir: make sure that index is > 0 before checking previous - char; fixes out of bounds read reported by Hanno Böck - +arrayfunc.c + - valid_array_reference: call skipsubscript with a third arg computed + from the VA_NOEXPAND flag only if we're expanding an associative + array subscript -- we already figure out whether or not we are - 7/16 - ---- -subst.c - - parameter_brace_expand: if ${array[@]} or ${array[*]} is supplied - with an unset (or empty) array, and -u is enabled, don't make it - an unbound variable error, like $@ or $* when there are no - positional parameters. Based on report from Ian Allen - +[bumped release status to beta2] -lib/readline/signals.c - - rl_pending_signal(): return the number of any signal readline has - caught but is waiting to handle - -lib/readline/callback.c - - rl_persistent_signal_handlers: new variable, restores readline-6.2 - signal handler semantics: installed at rl_callback_handler_install - time and removed with rl_clear_signals when a complete line has - been read - - _rl_callback_newline: call rl_set_signals if rl_persistent_signal_handlers - is non-zero - - rl_callback_read_char: install signal handlers with rl_set_signals - if rl_persistent_signal_handlers is 0 (the default) - - CALLBACK_READ_RETURN: uninstall signal handlers with rl_clear_signals - only if rl_persistent_signal_handlers is 0 (the default) + 10/20 + ----- +builtins/setattr.def + - set_or_show_attributes: after isolating NAME, make sure to restore + the "[+]=" in case we need the word later. Issue pointed out by + Grisha Levit -lib/readline/readline.h - - rl_pending_signal: new extern declaration - - rl_persistent_signal_handlers: new extern declaration + 10/21 + ----- +lib/readline/search.c + - noninc_search_from_pos: if we are supposed to be searching for a + pattern (vi mode), make sure to pass S to _hs_history_patsearch, + since that has any leading `^' stripped - 7/19 - ---- +lib/readline/histsearch.c + - _hs_history_patsearch: if the search isn't anchored, put a `*' at + the beginning to force fnmatch to match anywhere in the line (could + look at this later to make a change to history_search_internal that + would avoid the need to add the leading `*') + +subst.c + - parameter_brace_expand_rhs: treat a failure to assign a variable with + a ${param:=value} expansion as an expansion error, and, in a non- + interactive posix-mode shell, exit the shell + - param_expand: don't set W_SPLITSPACE for $* unless IFS is NULL; + consistent with other uses of W_SPLITSPACE + + 10/22 + ----- +doc/{bash.1,bashref.texi} + - tweak description of bash conditional expressions to note that the + test and [ commands determine their behavior based on the number of + arguments. Suggested by Ilkka Virta + + 10/24 + ----- execute_cmd.c - - execute_while_or_until: make sure we decrement `continuing' the way - we decrement `breaking' if the loop test indicates we will be - breaking out of the loop. That keeps `until continue' from - keeping `continuing' set to 1. Reported by Dan Douglas - + - execute_simple_command: don't set $_ to NULL when executing a + command that forks; just leave it unchanged. Tweaked the documentation + slightly as a result. Inspired by report from Ricky Tigg + - 7/20 + 10/28 + ----- +redir.c + - here_document_to_fd: make sure the temp files used to store here + documents are readable (and writable, where necessary) by the user. + This can happen in the unlikely case that someone decides to shoot + himself in the foot by setting the umask to 400. Issue originally + raised back in March by Stephane Chazelas + ; fix inspired by Martijn Dekker + + + 10/29 + ----- +lib/readline/terminal.c + - bind_termcap_arrow_keys: bind the "kI" capability (what the Insert + keypad key outputs) to overwrite mode. Patch from Xose Vazquez Perez + + + 10/30 + ----- +braces.c + - mkseq: make sure to terminate result array before passing it to + strvec_dispose on an interrupt. Report and fix from Corbin Souffrant + + + 11/6 ---- trap.c - - run_pending_traps,_run_trap_internal: save and restore temporary_env, - set temporary_env to 0 before trap runs so traps don't inherit a - command's temporary env. Fixes bug with IFS assignment in tempenv - and trap reported by Andriy Martynets - -jobs.c - - run_sigchld_trap: save and restore temporary_env, set temporary_env - to 0 before trap runs so traps don't inherit a command's temporary - env (see above) + - _run_trap_internal: if the signal shows up as SIG_CHANGED after + running the trap handler, check for terminating signals and run any + terminating signal handler indicates. Fixes issue reported by + Owen Stephens - 7/21 + 11/7 ---- execute_cmd.c - - execute_function: unwind-protect function_line_number, in case we - are executing a function inside another function. Reported by - Grisha Levit in context of evaled functions - and DEBUG traps - - execute_arith_for_command,execute_arith_command,execute_simple_command, - execute_cond_command: make sure line_number doesn't go < 0 when - adjusting it by function_line_number + - execute_builtin: don't merge the temporary environment when the + `return' builtin is being executed if it's being executed by the + `command' builtin, since that's supposed to inhibit the special + builtin properties. Part of POSIX conformance problems reported + by Martin Rehak - 7/23 - ---- -subst.c,command.h - - move the PF_ constants to command.h so other files can see them, now - that PF_ASSIGNRHS has meaning to string_list_dollar_at +builtins/cd.def + - bindpwd: if canonicalization fails when -P is specified (e.g. if the + directory name length exceeds PATH_MAX), reset dirname ($PWD value) = + to the_current_working_directory (Posix cd description, step 10.) + Part of POSIX conformance problems reported by Martin Rehak + -arrayfunc.h - - AV_ASSIGNRHS: new flag, indicate that ${a[@]} is being expanded on - the RHS of an assignment statement +builtins/kill.def + - kill_builtin: support -sSIG and -nSIG without requiring them to be + separate arguments. POSIX says a "conforming implementation" should + accept them. + Part of POSIX conformance problems reported by Martin Rehak + + 11/8 + ---- arrayfunc.c - - array_value_internal: if AV_ASSIGNRHS passed for ${a[@]}, pass - PF_ASSIGNRHS to string_list_dollar_at to support args separated by - spaces even if $IFS does not have the default value. Reported by - Dan Douglas + - array_value_internal: return NULL for invisible array variables. + Fixes issue with FUNCNAME sometimes returning invalid value reported + by Great Big Dot -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 +builtins/cd.def + - change_to_directory: if we are in posix mode, and the chdir to the + absolute pathname ($PWD/dirname) fails, return an error without + trying to use just `dirname' (posix cd step 10). + Part of POSIX conformance problems reported by Martin Rehak + -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 +execute_cmd.c + - execute_case_command: use expand_word_leave_quoted to expand the + word, then dequote the resulting string. This performs the + expansions in the order posix specifies. + Part of POSIX conformance problems reported by Martin Rehak + - 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 + - expand_word_unsplit: rewrite in terms of expand_word_leave_quoted + - ifs_whitespace: new macro, Posix ifs whitespace (ISSPACE; member + of current locale's space char class) + - ifs_whitesep: new macro, whitespace that is a member of $IFS; used + by list_string and get_word_from_string + - list_string: use ifs_whitesep instead of spctabnl in case $IFS + contains whitespace characters that are not space, tab, or newline + - get_word_from_string: use ifs_whitesep instead of spctabnl in case + $IFS contains whitespace characters that are not space, tab, or + newline. + Part of POSIX conformance problems reported by Martin Rehak + -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 + 11/9 ---- -lib/readline/display.c - - update_line: we can't use PROMPT_ENDING_INDEX unless we're testing - against _rl_last_c_pos; if we are testing buffer indices, we need to - use prompt_last_invisible directly. Fixes mode string redisplay issue - with short prompt strings reported by Steve Jones +general.c + - posix_initialize: enable the shift_verbose option when turning on + posix mode, and disable it when posix mode is disabled. From a + report by Eric Blake - 8/4 - --- -nojobs.c - - without_job_control: new function, resets child state that's - eventually used to decide whether or not to wait_for children +doc/bashref.texi + - posix mode: note the effect of posix mode on shift_verbose -execute_cmd.c - - initialize_subshell: call without_job_control in both the - JOB_CONTROL and no job control paths so we can reset the state in - subshells that will not cause them to wait_for children - inappropriately. Fixes bug reported by Dan Cross + 11/12 + ----- +subst.c + - parameter_brace_expand: if parameter_brace_expand_word returns an + error, make sure to set TEMP = 0 (to note that the variable is unset). + From a report by Grisha Levit + - param_expand: if expanding $! when set -u is enabled, honor the + PF_IGNUNBOUND flag and just return NULL, relying on the caller to + take care of understanding that the variable is unset + From a report by Grisha Levit + - parameter_brace_expand: if we are checking nullness, and we have a + valid array expansion, a quoted null string resulting from the array + expansion of a * or @ subscript satisfies the nullness check. + From a report by Grisha Levit - 8/5 - --- -configure.ac - - release version is now `rc2' + 11/14 + ----- +aclocal.m4 + - BASH_CHECK_LIB_TERMCAP: add last-ditch check for libncursesw, since + it's apparently the only curses library on some distributions. + Report from John Frankish + 11/16 + ----- bashline.c - - command_word_completion_function: if direxpand is set, make sure to - run hint_text through bash_directory_completion_hook, since - readline will do that and we want to be able to match the results - readline returns. Fixes bug reported by Pat Somaru - - -command.h - - W_COMPLETE: new flag word value - - PF_COMPLETE: new flags value for param_expand + - attempt_shell_completion: allow an initial word completion to + complete a partial first word (point appears in the middle of + the word) before resorting to command completion. Report and fix + from Luca Boccassi -subst.h - - SX_STRIPDQ: new flag, used for string_extract_double_quoted +[bash-5.0-beta2 frozen] + 11/27 + ----- bashline.c - - bash_filename_stat_hook,bash_directory_completion_hook: pass W_COMPLETE - flag to expand_prompt_string + - attempt_shell_completion: better fix for problems with fix from + 11/16. Report and fix from Tom Ryder + +expr.c + - expr_skipsubscript: fix return type. Report and fix from + Andreas Schwab + 11/29 + ----- subst.c - - expand_word_internal: if W_COMPLETE in word->flags, pass PF_COMPLETE - to param_expand - - param_expand: if PF_COMPLETE in pflags, pass SX_COMPLETE to - extract_command_subst. This allows `"$(echo ~/' to perform - completion successfully - - string_extract_double_quoted: turn third argument into a flags arg, - old STRIPDQ is now set if flags&SX_STRIPDQ - - string_extract_double_quoted: changed callers, if third argument was - 1, pass SX_STRIPDQ instead - - expand_word_internal: if W_COMPLETE in word->flags, pass SX_COMPLETE - in flags to string_extract_double_quoted for case '"' - - string_extract_double_quoted: if SX_COMPLETE in flags, pass it to - extract_command_subst - - expand_word_internal: if W_COMPLETE in word->flags, make sure W_COMPLETE - is in temp word passed to recursive call to expand_word_internal to - expand double-quoted string. Fixes bug reported by John Passaro - + - quote_escapes_internal: refactored quote_escapes into a function + that takes an additional flag saying whether or not we are going + to split the result. If we are not, and CTLESC is in IFS, we quote + the CTLESC (ditto for CTLNUL) to prevent it being removed when the + string is dequoted. + - quote_escapes: call quote_escapes_internal with FLAGS == 0 + - quote_rhs: new function, calls quote_escapes with FLAGS == PF_NOSPLIT2 + so that a CTLESC will be quoted if CTLESC is in $IFS + - parameter_brace_expand_word: call quote_rhs on the value of a variable + if PFLAGS includes PF_ASSIGNRHS, indicating that we will not be + splitting the word, but we will be dequoting it. Fixes bug reported + by Martijn Dekker + - param_expand: same change as for parameter_brace_expand_word - 8/9 - --- -[bash-4.4-rc2 frozen] +execute_cmd.c + - execute_in_subshell: if we are running a trap (running_trap > 0), + turn off the SIG_INPROGRESS and SIG_CHANGED flags for that signal + by calling run_trap_cleanup and reset running_trap to 0 (watch the + second part!). Tagged for bash-5.1. + + 11/30 + ----- +lib/readline/doc/rltech.texi + - rl_set_keymap_name: correct typo in the name; some updates to the + description that clarify usage. Report from - 8/10 + 12/4 ---- -subst.c - - sub_append_string: use size_t variable to store string length to - avoid integer overflow. Report from Siteshwar Vashisht - - - sub_append_string: `size' argument is now pointer to size_t; changed - istring_index in expand_word_internal to accommodate change +aclocal.m4 + - BASH_FUNC_FNMATCH_EQUIV_FALLBACK: a test of whether fnmatch(3) + understands bracket equivalence classes ([=c=]) for characters + that collate with equal weights but are not identical -lib/sh/ufuncs.c - - include "posixselect.h" if HAVE_SELECT is defined, make sure that - fd_set and the rest are defined +configure.ac,config.h.in + - call BASH_FUNC_FNMATCH_EQUIV_FALLBACK and define + FNMATCH_EQUIV_FALLBACK to 1 if it can be used for equivalence + classes - 8/11 + 12/5 ---- -lib/readline/histexpand.c - - history_tokenize_word: use ISDIGIT instead of isdigit for more - argument checking - - "chardefs.h": include for ISDIGIT define and . 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 +execute_cmd.c + - eval_arith_for_expr,execute_arith_command,execute_cond_command: make + sure running_trap == 0 before we reset the_printed_command_except_trap + Report from Peng Yu -lib/glob/glob.c - - sh_eaccess: change local prototype +lib/glob/smatch.c + - _fnmatch_fallback_wc: new function, takes two wide characters c1 and + c2, converts them to a pattern ([[=c2=]]) and a string (c1) for + fnmatch to determine whether or not they are members of the same + equivalence class + - collequiv_wc: call _fnmatch_fallback_wc if rangecmp_wc returns + non-zero if FNMATCH_EQUIV_FALLBACK is defined, so we know that + fnmatch understands equivalence classes. Another Posix test suite + issue from Martin Rehak -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 + 12/6 + ---- +redir.c + - add missing cases to switch statements to shut up gcc -configure.ac,config.h.in - - uintptr_t: make sure it's defined to an integer type wide enough to - hold a pointer + 12/7 + ---- +builtins/set.def + - find_minus_o_option: new helper function, returns index into + o_options given option name + - minus_o_option_value,set_minus_o_option: use find_minus_o_option -lib/sh/tmpfile.c - - sh_seedrand: use `uintptr_t' to cast pointer value to int value, - instead of allowing truncation to take place, since srandom takes - an `unsigned int'. - Fix from Mike Frysinger +general.c + - new table of variables (currently all shopt options) that are + modified by going into and out of posix mode; num_posix_options() + returns the number of variables + - get_posix_options: fill in a bitmap passed as an argument (or return + a new one) of values of posix-mode-modified variables in the table + - set_posix_options: set values of posix-mode-modified variables from + the table using the passed bitmap for values -arrayfunc.[ch] - - valid_array_reference,array_variable_name,array_variable_part, - array_value_internal,array_value,get_array_value: first argument - (always variable name) now a `const char *' - Fix from Mike Frysinger +builtins/set.def + - get_current_options: make the bitmap large enough to hold the options + in the set table and the table of posix-mode-modified variables; call + get_posix_options to fill in those values after the values from the + o_options table + - set_current_options: call set_posix_options to reset the values of + the posix-mode-modified variables at the end of the bitmap, after + the o_options values. Fixes issue reported by PJ Eby + - 8/19 + 12/9 ---- -print_cmd.c - - xtrace_print_word_list: if (xtflags & 2), don't try to quote the - words in the LIST argument. Intended to be used in places where - the list has not yet been expanded - - xtrace_print_for_command_head: call xtrace_print_word_list with - flags argument of 2. Fixes issue reported by Aharon Robbins - - - xtrace_print_select_command_head: call xtrace_print_word_list with - flags argument of 2 +parse.y + - select_command: add two additional productions to support select + commands without a word_list following the `in'. Fixes omission + reported by Martijn Dekker - 8/21 - ---- -lib/sh/netopen.c - - netopen: fix memory leak by freeing allocated path before error - return. Fix from Dmitry Goncharov + 12/11 + ----- +variables.c + - assign_in_env: don't allow namerefs in temporary environment + assignments to create variables with invalid names for export. Fixes + bug reported by Grisha Levit -doc/{bash.1,bashref.texi} - - change conditional commands description to make it clearer that - bash doesn't emulate /dev/fd if the OS provides it + 12/14 + ----- +parse.y + - don't change last_command_exit_value in the 'error yacc_EOF' production + if the parser sets it to something non-zero; just make sure it + indicates an error. Fixes problem with unexpected EOF in eval + reported by Martijn Dekker - 8/22 - ---- -braces.c - - expand_amble: free partial and tem on failure to allocate memory - for merged partial+result strvec. Fix from Dmitry Goncharov - + 12/17 + ----- +expr.c + - exp2 -> expmuldiv - 8/23 - ---- -jobs.c - - wait_for: don't call get_tty_state when a job finishes if we're - running it as part of programmable completion. We test - rl_readline_state. Fixes bug reported by Jaro Punta - +lib/sh/smatch.c + - fnmatch: add extern declaration if FNMATCH_EQUIV_FALLBACK is being + used - 8/24 - ---- -subst.c - - pat_subst: fix memory leak (mstr). Fix from Dmitry Goncharov - - - split_at_delims: fix memory leak (d2). Fix from Dmitry Goncharov - +hashlib.c + - hash_string: add FNV offset as initial value for hash instead of + starting at 0, changes hash for associative arrays and requires a + bunch of changes to the "right" test suite files - 8/26 - ---- -subst.c - - match_upattern,match_wpattern: make sure that a trailing `*' is - not escaped (preceded by an odd number of backslashes) before we - append a `*' when checking whether a pattern matches anywhere in - the string - -lib/readline/{input,signals}.c - - protect instances of SIGQUIT with #ifdef SIGQUIT; apparently - MinGW doesn't define it - - protect instances of SIGHUP with #ifdef SIGHUP; apparently - MinGW doesn't define it. From a report from Simon Sobisch - - -xmalloc.o - - allocerr: only try to find the break and report it if we're using - the bash malloc; there's no guarantee that any other malloc is - using sbrk() +variables.c + - rseed: make it explicitly 32 bits; that's all we're interested in + anyway -doc/{bash.1,bashref.texi} - - quote removal: add paragraph mentioning quote removal to beginning - of expansions section, referencing later paragraph. Report from - Michel Lanne + 12/18 + ----- - 8/30 - ---- -lib/readline/input.c - - protect instances of SIGALRM and SIGWINCH with #ifdef; apparently - MinGW doesn't define them. From a report from Simon Sobisch - +variables.c + - brand: add some comments, make the constants explicitly 32 bits; + use signed 32-bit values for the intermediate calculations. The + algorithm is still minstd + +[bash-5.0-rc1 frozen] + + 12/21 + ----- +doc/bash.1 + - }1: remove macro definition; it's outlived its bugfix purpose. + Report from Derek Schrock + 12/22 + ----- subst.c - - SPECIAL_VAR: make sure name is not the empty string before going on, - empty strings can result in unitialized reads - - CHECK_STRING_OVERRUN: semi-general macro to use in *extract* and - similar functions to to check whether a function called to parse an - embedded construct (like a backquoted command substitution) doesn't - consume the entire string because it's unterminated - - skip_double_quoted: make sure other extraction functions don't - consume the entire string (which they can if the construct is - unterminated) before incrementing the index and going on. Uses - CHECK_STRING_OVERRUN - - extract_dollar_brace_string: check for unterminated embedded - constructs consuming the entire string with CHECK_STRING_OVERRUN ('`') - - skip_matched_pair: use CHECK_STRING_OVERRUN to make sure unterminated - embedded "`", $(, ${ don't cause out-of-bounds reads - -[bash-4.4 frozen] + - expand_arith_string: set W_NOTILDE in the flags so we don't perform + tilde expansion at all, even for the previously-special-case array + subscript expansion. Report from Bize Ma + - expand_word_internal: take out Q_ARRAYSUB check for tilde expansion + + 12/26 + ----- +builtins/evalstring.c + - parse_and_execute: if the eval builtin gets a parser error while + parsing a string in posix mode, don't exit the shell if the eval + was run by the command builtin. report from Martijn Dekker + + +examples/loadables/{basename,dirname}.c + - dirname_builtin: skip over any `--' ending the options. Report from + Peng Yu + + 12/27 + ----- +examples/loadables/mkdir.c + - make_path: add argument noting whether or not the user specified -m; + only attempt the chmod on an existing directory if the user did so + - make_path: when creating intermediate directories, perform the + mkdir (path, 0) and chmod separately as the posix text recommends + + 12/28 + ----- +parser.h + - PST_COMMENT: new state, set when the shell is reading characters + until newline as part of comment processing + +parse.y + - shell_getc: don't return a space at the end of a token if the parser + is consuming a comment. Fixes bug reported by Harald van Dijk + + + 12/31 + ----- +lib/glob/glob_loop.c + - INTERNAL_GLOB_PATTERN_P: revert change from 4/27 that makes this + function return non-zero for a backslash in the string. Based on a + report from Tom Ryder + +[bash-5.0 frozen] diff --git a/INSTALL b/INSTALL index c60d59176..91f1dd9a7 100644 --- a/INSTALL +++ b/INSTALL @@ -38,10 +38,24 @@ don't want to keep, you may remove or edit it. To find out more about the options and arguments that the 'configure' script understands, type - bash-2.04$ ./configure --help + bash-4.2$ ./configure --help at the Bash prompt in your Bash source directory. +If you want to build Bash in a directory separate from the source +directory - to build for multiple architectures, for example - just use +the full path to the configure script. The following commands will +build bash in a directory under '/usr/local/build' from the source code +in '/usr/local/src/bash-4.4': + + mkdir /usr/local/build/bash-4.4 + cd /usr/local/build/bash-4.4 + bash /usr/local/src/bash-4.4/configure + make + +See *note Compiling For Multiple Architectures:: for more information +about building in a directory separate from the source. + If you need to do unusual things to compile Bash, please try to figure out how 'configure' could check whether or not to do them, and mail diffs or instructions to so they can be @@ -57,8 +71,6 @@ code directory by typing 'make clean'. To also remove the files that 'configure' created (so you can compile Bash for a different kind of computer), type 'make distclean'. -Next: Compiling For Multiple Architectures, Prev: Basic Installation, Up: Installing Bash - Compilers and Options ===================== @@ -76,8 +88,6 @@ On systems that have the 'env' program, you can do it like this: The configuration process uses GCC to build Bash if it is available. -Next: Installation Names, Prev: Compilers and Options, Up: Installing Bash - Compiling For Multiple Architectures ==================================== @@ -86,10 +96,10 @@ time, by placing the object files for each architecture in their own directory. To do this, you must use a version of 'make' that supports the 'VPATH' variable, such as GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run the 'configure' -script from the source directory. You may need to supply the -'--srcdir=PATH' argument to tell 'configure' where the source files are. -'configure' automatically checks for the source code in the directory -that 'configure' is in and in '..'. +script from the source directory (*note Basic Installation::). You may +need to supply the '--srcdir=PATH' argument to tell 'configure' where +the source files are. 'configure' automatically checks for the source +code in the directory that 'configure' is in and in '..'. If you have to use a 'make' that does not supports the 'VPATH' variable, you can compile Bash for one architecture at a time in the source code @@ -108,8 +118,6 @@ The 'mkclone' script requires Bash, so you must have already built Bash for at least one architecture before you can create build directories for other architectures. -Next: Specifying the System Type, Prev: Compiling For Multiple Architectures, Up: Installing Bash - Installation Names ================== @@ -125,8 +133,6 @@ option '--exec-prefix=PATH', 'make install' will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. -Next: Sharing Defaults, Prev: Installation Names, Up: Installing Bash - Specifying the System Type ========================== @@ -140,8 +146,6 @@ canonical name with three fields: 'CPU-COMPANY-SYSTEM' (e.g., See the file 'support/config.sub' for the possible values of each field. -Next: Operation Controls, Prev: Specifying the System Type, Up: Installing Bash - Sharing Defaults ================ @@ -154,8 +158,6 @@ looks for 'PREFIX/share/config.site' if it exists, then A warning: the Bash 'configure' looks for a site script, but not all 'configure' scripts do. -Next: Optional Features, Prev: Sharing Defaults, Up: Installing Bash - Operation Controls ================== @@ -185,8 +187,6 @@ Operation Controls 'configure' also accepts some other, not widely used, boilerplate options. 'configure --help' prints the complete list. -Prev: Operation Controls, Up: Installing Bash - Optional Features ================= @@ -248,8 +248,8 @@ and linked, rather than changing run-time features. '--enable-largefile' Enable support for large files - (http://www.sas.com/standards/large_file/x_open.20Mar96.html) if - the operating system requires special compiler options to build + (http://www.unix.org/version2/whatsnew/lfs20mar.html) if the + operating system requires special compiler options to build programs which can access large files. This is enabled by default, if the operating system provides large file support. @@ -321,6 +321,12 @@ unless the operating system does not provide the necessary support. '--enable-debugger' Include support for the bash debugger (distributed separately). +'--enable-dev-fd-stat-broken' + If calling 'stat' on /dev/fd/N returns different results than + calling 'fstat' on file descriptor N, supply this option to enable + a workaround. This has implications for conditional commands that + test file attributes. + '--enable-direxpand-default' Cause the 'direxpand' shell option (*note The Shopt Builtin::) to be enabled by default when the shell starts. It is normally @@ -391,7 +397,7 @@ unless the operating system does not provide the necessary support. '--enable-prompt-string-decoding' Turn on the interpretation of a number of backslash-escaped - characters in the '$PS1', '$PS2', '$PS3', and '$PS4' prompt + characters in the '$PS0', '$PS1', '$PS2', and '$PS4' prompt strings. See *note Controlling the Prompt::, for a complete list of prompt string escape sequences. diff --git a/MANIFEST b/MANIFEST index a306b6ffc..03de22102 100644 --- a/MANIFEST +++ b/MANIFEST @@ -11,6 +11,7 @@ cross-build d doc d examples d #examples/obashdb d +examples/bash-completion d examples/complete d examples/functions d examples/scripts d @@ -209,6 +210,7 @@ builtins/bashgetopt.h f cross-build/cygwin32.cache f cross-build/x86-beos.cache f cross-build/opennt.cache f +cross-build/qnx.cache f include/ansi_stdlib.h f include/chartypes.h f include/filecntl.h f @@ -239,6 +241,7 @@ lib/glob/glob.c f lib/glob/glob.h f lib/glob/glob_loop.c f lib/glob/gmisc.c f +lib/glob/gm_loop.c f lib/glob/xmbsrtowcs.c f lib/glob/collsyms.h f lib/glob/doc/Makefile f @@ -450,6 +453,7 @@ lib/sh/tmpfile.c f lib/sh/uconvert.c f lib/sh/ufuncs.c f lib/sh/unicode.c f +lib/sh/utf8.c f lib/sh/vprint.c f lib/sh/wcsdup.c f lib/sh/wcsnwidth.c f @@ -534,6 +538,8 @@ po/nb.gmo f po/nl.po f po/pl.gmo f po/pl.po f +po/pt.gmo f +po/pt.po f po/pt_BR.gmo f po/pt_BR.po f po/ro.gmo f @@ -631,6 +637,7 @@ support/mkversion.sh f 755 support/mksignames.c f support/signames.c f support/bashbug.sh f +support/bashbug.sh.in f support/man2html.c f support/recho.c f support/zecho.c f @@ -649,6 +656,8 @@ examples/INDEX.html f #examples/obashdb/README f #examples/obashdb/bashdb f #examples/obashdb/bashdb.el f +examples/bash-completion/README f +examples/bash-completion/bash-completion-2.5.tar.xz f examples/complete/bash_completion f examples/complete/cdfunc f examples/complete/complete-examples f @@ -666,12 +675,14 @@ examples/loadables/necho.c f examples/loadables/hello.c f examples/loadables/print.c f examples/loadables/realpath.c f +examples/loadables/seq.c f examples/loadables/setpgid.c f examples/loadables/sleep.c f examples/loadables/strftime.c f examples/loadables/truefalse.c f #examples/loadables/getconf.h f #examples/loadables/getconf.c f +examples/loadables/fdflags.c f examples/loadables/finfo.c f examples/loadables/cat.c f #examples/loadables/cut.c f @@ -681,6 +692,7 @@ examples/loadables/dirname.c f examples/loadables/tty.c f examples/loadables/pathchk.c f examples/loadables/tee.c f +examples/loadables/rm.c f examples/loadables/rmdir.c f examples/loadables/head.c f examples/loadables/printenv.c f @@ -693,6 +705,7 @@ examples/loadables/mkdir.c f examples/loadables/ln.c f examples/loadables/mypid.c f examples/loadables/unlink.c f +examples/loadables/stat.c f examples/loadables/perl/Makefile.in f examples/loadables/perl/README f examples/loadables/perl/bperl.c f @@ -701,9 +714,12 @@ examples/loadables/perl/iperl.c f #examples/loadables/xtitle.c f examples/functions/array-stuff f examples/functions/array-to-string f +examples/functions/arrayops.bash f examples/functions/autoload f examples/functions/autoload.v2 f examples/functions/autoload.v3 f +examples/functions/autoload.v4 f +examples/functions/autoload.v4.t f examples/functions/basename f #examples/functions/basename2 f #examples/functions/coproc.bash f @@ -808,6 +824,8 @@ tests/test-glue-functions f tests/alias.tests f tests/alias1.sub f tests/alias2.sub f +tests/alias3.sub f +tests/alias4.sub f tests/alias.right f tests/appendop.tests f tests/appendop1.sub f @@ -824,6 +842,7 @@ tests/arith4.sub f tests/arith5.sub f tests/arith6.sub f tests/arith7.sub f +tests/arith8.sub f tests/array.tests f tests/array.right f tests/array1.sub f @@ -847,6 +866,12 @@ tests/array18.sub f tests/array19.sub f tests/array20.sub f tests/array21.sub f +tests/array22.sub f +tests/array23.sub f +tests/array24.sub f +tests/array25.sub f +tests/array26.sub f +tests/array27.sub f tests/array-at-star f tests/array2.right f tests/assoc.tests f @@ -859,6 +884,8 @@ tests/assoc5.sub f tests/assoc6.sub f tests/assoc7.sub f tests/assoc8.sub f +tests/assoc9.sub f +tests/assoc10.sub f tests/attr.tests f tests/attr.right f tests/attr1.sub f @@ -883,6 +910,9 @@ tests/source7.sub f tests/case.tests f tests/case.right f tests/case1.sub f +tests/case2.sub f +tests/case3.sub f +tests/case4.sub f tests/casemod.tests f tests/casemod.right f tests/comsub.tests f @@ -890,6 +920,7 @@ tests/comsub.right f tests/comsub1.sub f tests/comsub2.sub f tests/comsub3.sub f +tests/comsub4.sub f tests/comsub-eof.tests f tests/comsub-eof0.sub f tests/comsub-eof1.sub f @@ -933,6 +964,7 @@ tests/dollar-at3.sub f tests/dollar-at4.sub f tests/dollar-at5.sub f tests/dollar-at6.sub f +tests/dollar-at7.sub f tests/dollar-star1.sub f tests/dollar-star2.sub f tests/dollar-star3.sub f @@ -940,11 +972,15 @@ tests/dollar-star4.sub f tests/dollar-star5.sub f tests/dollar-star6.sub f tests/dollar-star7.sub f +tests/dollar-star8.sub f +tests/dollar-star9.sub f tests/dollar.right f tests/dstack.tests f tests/dstack.right f tests/dstack2.tests f tests/dstack2.right f +tests/dynvar.tests f +tests/dynvar.right f tests/errors.tests f tests/errors.right f tests/errors1.sub f @@ -953,6 +989,8 @@ tests/errors3.sub f tests/errors4.sub f tests/errors5.sub f tests/errors6.sub f +tests/errors7.sub f +tests/errors8.sub f tests/execscript f tests/exec.right f tests/exec1.sub f 755 @@ -979,6 +1017,9 @@ tests/exp6.sub f tests/exp7.sub f tests/exp8.sub f tests/exp9.sub f +tests/exp10.sub f +tests/exp11.sub f +tests/exp12.sub f tests/exportfunc.tests f tests/exportfunc.right f tests/exportfunc1.sub f @@ -995,6 +1036,7 @@ tests/extglob3.sub f tests/extglob3.tests f tests/extglob3.right f tests/extglob4.sub f +tests/extglob5.sub f tests/func.tests f tests/func.right f tests/func1.sub f @@ -1015,6 +1057,9 @@ tests/getopts9.sub f tests/getopts10.sub f tests/glob.tests f tests/glob1.sub f +tests/glob2.sub f +tests/glob3.sub f +tests/glob4.sub f tests/glob.right f tests/globstar.tests f tests/globstar.right f @@ -1025,6 +1070,7 @@ tests/heredoc.right f tests/heredoc1.sub f tests/heredoc2.sub f tests/heredoc3.sub f +tests/heredoc4.sub f tests/herestr.tests f tests/herestr.right f tests/herestr1.sub f @@ -1033,14 +1079,18 @@ tests/histexp1.sub f tests/histexp2.sub f tests/histexp3.sub f tests/histexp4.sub f +tests/histexp5.sub f +tests/histexp6.sub f tests/histexp.right f tests/history.tests f tests/history.right f tests/history.list f 444 tests/history1.sub f tests/history2.sub f +tests/history3.sub f tests/ifs.tests f tests/ifs.right f +tests/ifs1.sub f tests/ifs-posix.tests f tests/ifs-posix.right f tests/input-line.sh f @@ -1062,6 +1112,7 @@ tests/jobs2.sub f tests/jobs3.sub f tests/jobs4.sub f tests/jobs5.sub f +tests/jobs6.sub f tests/jobs.right f tests/lastpipe.right f tests/lastpipe.tests f @@ -1093,6 +1144,9 @@ tests/nameref15.sub f tests/nameref16.sub f tests/nameref17.sub f tests/nameref18.sub f +tests/nameref19.sub f +tests/nameref20.sub f +tests/nameref21.sub f tests/nameref.right f tests/new-exp.tests f tests/new-exp1.sub f @@ -1105,6 +1159,7 @@ tests/new-exp7.sub f tests/new-exp8.sub f tests/new-exp9.sub f tests/new-exp10.sub f +tests/new-exp11.sub f tests/new-exp.right f tests/nquote.tests f tests/nquote.right f @@ -1126,10 +1181,16 @@ tests/parser.right f tests/parser1.sub f tests/posix2.tests f tests/posix2.right f +tests/posix2syntax.sub f tests/posixexp.tests f tests/posixexp.right f tests/posixexp1.sub f tests/posixexp2.sub f +tests/posixexp3.sub f +tests/posixexp4.sub f +tests/posixexp5.sub f +tests/posixexp6.sub f +tests/posixexp7.sub f tests/posixexp2.tests f tests/posixexp2.right f tests/posixpat.tests f @@ -1144,9 +1205,13 @@ tests/printf1.sub f tests/printf2.sub f tests/printf3.sub f tests/printf4.sub f +tests/procsub.tests f +tests/procsub.right f +tests/procsub1.sub f tests/quote.tests f tests/quote.right f tests/quote1.sub f +tests/quote2.sub f tests/read.tests f tests/read.right f tests/read1.sub f @@ -1171,12 +1236,13 @@ tests/redir8.sub f tests/redir9.sub f tests/redir10.sub f tests/redir11.sub f -tests/redir12.sub f tests/rhs-exp.tests f tests/rhs-exp.right f tests/rhs-exp1.sub f tests/rsh.tests f tests/rsh.right f +tests/rsh1.sub f +tests/rsh2.sub f tests/run-all f tests/run-minimal f tests/run-alias f @@ -1201,6 +1267,7 @@ tests/run-dbg-support f tests/run-dbg-support2 f tests/run-dirstack f tests/run-dollars f +tests/run-dynvar f tests/run-errors f tests/run-execscript f tests/run-exp-tests f @@ -1242,6 +1309,7 @@ tests/run-posixpat f tests/run-posixpipe f tests/run-precedence f tests/run-printf f +tests/run-procsub f tests/run-quote f tests/run-read f tests/run-redir f @@ -1272,6 +1340,7 @@ tests/shopt.right f tests/strip.tests f tests/strip.right f tests/test.tests f +tests/test1.sub f tests/test.right f tests/tilde.tests f tests/tilde.right f @@ -1285,6 +1354,7 @@ tests/trap2a.sub f 755 tests/trap3.sub f tests/trap4.sub f tests/trap5.sub f +tests/trap6.sub f tests/type.tests f tests/type.right f tests/type1.sub f @@ -1295,7 +1365,7 @@ tests/unicode1.sub f tests/unicode2.sub f tests/unicode3.sub f tests/varenv.right f -tests/varenv.sh f +tests/varenv.tests f tests/varenv1.sub f tests/varenv2.sub f tests/varenv3.sub f @@ -1304,6 +1374,14 @@ tests/varenv5.sub f tests/varenv6.sub f tests/varenv7.sub f tests/varenv8.sub f +tests/varenv9.sub f +tests/varenv10.sub f +tests/varenv11.sub f +tests/varenv12.sub f +tests/varenv13.sub f +tests/varenv14.sub f +tests/varenv15.sub f +tests/varenv15.in f tests/version f tests/version.mini f tests/vredir.tests f diff --git a/Makefile.in b/Makefile.in index c7b62bc05..5fcb44b01 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,6 +1,6 @@ -# Makefile for bash-4.4, version 4.18 +# Makefile for bash-5.0, version 4.27 # -# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# Copyright (C) 1996-2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -41,6 +41,7 @@ infodir = @infodir@ includedir = @includedir@ datadir = @datadir@ localedir = @localedir@ +pkgconfigdir = ${libdir}/pkgconfig loadablesdir = @loadablesdir@ headersdir = @headersdir@ @@ -77,6 +78,7 @@ AR = @AR@ ARFLAGS = @ARFLAGS@ RANLIB = @RANLIB@ SIZE = @SIZE@ +STRIP = strip INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -144,16 +146,23 @@ LOCAL_LDFLAGS = @LOCAL_LDFLAGS@ SYSTEM_FLAGS = -DPROGRAM='"$(Program)"' -DCONF_HOSTTYPE='"$(Machine)"' -DCONF_OSTYPE='"$(OS)"' -DCONF_MACHTYPE='"$(MACHTYPE)"' -DCONF_VENDOR='"$(VENDOR)"' $(LOCALE_DEFS) -BASE_CCFLAGS = $(PROFILE_FLAGS) $(SYSTEM_FLAGS) $(LOCAL_DEFS) \ +BASE_CCFLAGS = $(SYSTEM_FLAGS) $(LOCAL_DEFS) \ $(DEFS) $(LOCAL_CFLAGS) $(INCLUDES) -CCFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS) +CCFLAGS = $(ADDON_CFLAGS) $(BASE_CCFLAGS) ${PROFILE_FLAGS} $(CPPFLAGS) $(CFLAGS) CCFLAGS_FOR_BUILD = $(BASE_CCFLAGS) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) -LDFLAGS = @LDFLAGS@ $(STATIC_LD) $(LOCAL_LDFLAGS) $(PROFILE_FLAGS) $(CFLAGS) +BASE_LDFLAGS = @LDFLAGS@ $(LOCAL_LDFLAGS) $(CFLAGS) +LDFLAGS = ${ADDON_LDFLAGS} ${BASE_LDFLAGS} ${PROFILE_FLAGS} ${STATIC_LD} LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ $(LOCAL_LDFLAGS) $(CFLAGS_FOR_BUILD) +ASAN_XCFLAGS = -fsanitize=address -fno-omit-frame-pointer +ASAN_XLDFLAGS = -fsanitize=address + +GCOV_XCFLAGS = -fprofile-arcs -ftest-coverage +GCOV_XLDFLAGS = -fprofile-arcs -ftest-coverage + INCLUDES = -I. @RL_INCLUDE@ -I$(srcdir) -I$(BASHINCDIR) -I$(LIBSRC) $(INTL_INC) # Maybe add: -Wextra @@ -222,7 +231,7 @@ SHLIB_SOURCE = ${SH_LIBSRC}/clktck.c ${SH_LIBSRC}/getcwd.c \ ${SH_LIBSRC}/input_avail.c ${SH_LIBSRC}/mbscasecmp.c \ ${SH_LIBSRC}/fnxform.c ${SH_LIBSRC}/unicode.c \ ${SH_LIBSRC}/wcswidth.c ${SH_LIBSRC}/wcsnwidth.c \ - ${SH_LIBSRC}/shmbchar.c + ${SH_LIBSRC}/shmbchar.c ${SH_LIBSRC}/utf8.c SHLIB_LIB = -lsh SHLIB_LIBNAME = libsh.a @@ -583,22 +592,38 @@ $(Program): .build $(OBJECTS) $(BUILTINS_DEP) $(LIBDEP) @echo " ***********************************************************" @echo -bashbug: $(SUPPORT_SRC)bashbug.sh config.h Makefile $(VERSPROG) - @sed -e "s%!MACHINE!%$(Machine)%" -e "s%!OS!%$(OS)%" \ - -e "s%!CFLAGS!%$(CCFLAGS)%" -e "s%!CC!%$(CC)%" \ - -e "s%!RELEASE!%$(Version)%" -e "s%!PATCHLEVEL!%$(PatchLevel)%" \ - -e "s%!MACHTYPE!%$(MACHTYPE)%" -e "s%!RELSTATUS!%$(RELSTATUS)%" \ - $(SUPPORT_SRC)bashbug.sh > $@ +bashbug: $(SDIR)/bashbug.sh config.h Makefile $(VERSPROG) + @sed -e "s%!PATCHLEVEL!%$(PatchLevel)%" \ + $(SDIR)/bashbug.sh > $@ @chmod a+rx bashbug strip: $(Program) .made - strip $(Program) + $(STRIP) $(Program) ls -l $(Program) -$(SIZE) $(Program) lint: ${MAKE} ${MFLAGS} CFLAGS='${GCC_LINT_FLAGS}' .made +asan: + ${MAKE} ${MFLAGS} ADDON_CFLAGS='${ASAN_XCFLAGS}' ADDON_LDFLAGS='${ASAN_XLDFLAGS}' .made + +# cheating +gcov: + ${MAKE} ${MFLAGS} CFLAGS=-g ADDON_CFLAGS='${GCOV_XCFLAGS}' ADDON_LDFLAGS='${GCOV_XLDFLAGS}' .made + + +# have to make this separate because making tests depend on $(PROGRAM) +asan-tests: asan $(TESTS_SUPPORT) + @-test -d tests || mkdir tests + @cp $(TESTS_SUPPORT) tests + @( cd $(srcdir)/tests && \ + PATH=$(BUILD_DIR)/tests:$$PATH THIS_SH=$(THIS_SH) $(SHELL) ${TESTSCRIPT} ) + +profiling-tests: ${PROGRAM} + @test "X$$PROFILE_FLAGS" == "X" && { echo "profiling-tests: must be built with profiling enabled" >&2; exit 1; } + @${MAKE} ${MFLAGS} tests TESTSCRIPT=run-gprof + version.h: $(SOURCES) config.h Makefile patchlevel.h $(SHELL) $(SUPPORT_SRC)mkversion.sh -b -S ${topdir} -s $(RELSTATUS) -d $(Version) -o newversion.h \ && mv newversion.h version.h @@ -810,7 +835,7 @@ install-headers-dirs: @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(headersdir) @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(headersdir)/builtins @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(headersdir)/include - @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(libdir)/pkgconfig + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(pkgconfigdir) install-headers: install-headers-dirs @for hf in $(INSTALLED_HEADERS) ; do \ @@ -825,14 +850,14 @@ install-headers: install-headers-dirs @for hf in $(CREATED_HEADERS) ; do \ ${INSTALL_DATA} $(BUILD_DIR)/"$$hf" $(DESTDIR)$(headersdir)/$$hf; \ done - $(INSTALL_DATA) $(SDIR)/bash.pc $(DESTDIR)$(libdir)/pkgconfig/bash.pc + -$(INSTALL_DATA) $(SDIR)/bash.pc $(DESTDIR)$(pkgconfigdir)/bash.pc uninstall-headers: -( cd $(DESTDIR)$(headersdir) && $(RM) $(INSTALLED_HEADERS) ) -( cd $(DESTDIR)$(headersdir)/include && $(RM) $(INSTALLED_INCFILES) ) -( cd $(DESTDIR)$(headersdir)/builtins && $(RM) $(INSTALLED_BUILTINS_HEADERS) ) -( cd $(DESTDIR)$(headersdir) && $(RM) $(CREATED_HEADERS) ) - -( $(RM) $(DESTDIR)$(libdir)/pkgconfig/bash.pc ) + -( $(RM) $(DESTDIR)$(pkgconfigdir)/bash.pc ) uninstall: .made $(RM) $(DESTDIR)$(bindir)/$(Program) $(DESTDIR)$(bindir)/bashbug @@ -902,7 +927,7 @@ maintainer-clean: basic-clean $(RM) $(CREATED_SUPPORT) Makefile pathnames.h maybe-clean: - -if test "X$(topdir)" != "X$(BUILD_DIR)" ; then \ + -if test X"`cd $(topdir) && pwd -P`" != X"`cd $(BUILD_DIR) && pwd -P`" ; then \ $(RM) parser-built y.tab.c y.tab.h ; \ fi @@ -981,19 +1006,19 @@ error.o: command.h general.h xmalloc.h externs.h input.h bashhist.h error.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h error.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h error.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -error.o: make_cmd.h subst.h sig.h pathnames.h externs.h +error.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.h error.o: input.h execute_cmd.h eval.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h trap.h flags.h ${DEFSRC}/common.h eval.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h eval.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h eval.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -eval.o: make_cmd.h subst.h sig.h pathnames.h externs.h +eval.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h eval.o: input.h execute_cmd.h execute_cmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h execute_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h execute_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h execute_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -execute_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h +execute_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h execute_cmd.o: ${BASHINCDIR}/memalloc.h ${GRAM_H} flags.h builtins.h jobs.h quit.h siglist.h execute_cmd.o: execute_cmd.h findcmd.h redir.h trap.h test.h pathexp.h execute_cmd.o: $(DEFSRC)/common.h ${DEFDIR}/builtext.h ${GLOB_LIBSRC}/strmatch.h @@ -1003,31 +1028,31 @@ expr.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h expr.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h expr.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h expr.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -expr.o: make_cmd.h subst.h sig.h pathnames.h externs.h +expr.o: make_cmd.h subst.h sig.h pathnames.h externs.h flags.h execute_cmd.h expr.o: ${BASHINCDIR}/chartypes.h findcmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h findcmd.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h findcmd.o: ${BASHINCDIR}/stdc.h error.h general.h xmalloc.h variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h findcmd.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h -findcmd.o: flags.h hashlib.h pathexp.h hashcmd.h +findcmd.o: flags.h hashlib.h pathexp.h hashcmd.h execute_cmd.h findcmd.o: ${BASHINCDIR}/chartypes.h flags.o: config.h flags.h flags.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h flags.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h -flags.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +flags.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h execute_cmd.h flags.o: make_cmd.h subst.h sig.h pathnames.h externs.h bashhist.h general.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h general.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h general.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h general.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -general.o: make_cmd.h subst.h sig.h pathnames.h externs.h +general.o: make_cmd.h subst.h sig.h pathnames.h externs.h flags.h parser.h general.o: ${BASHINCDIR}/maxpath.h ${BASHINCDIR}/posixtime.h general.o: ${BASHINCDIR}/chartypes.h hashcmd.o: config.h ${BASHINCDIR}/posixstat.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h hashcmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h hashcmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashcmd.h hashcmd.o: execute_cmd.h findcmd.h ${BASHINCDIR}/stdc.h pathnames.h hashlib.h -hashcmd.o: quit.h sig.h +hashcmd.o: quit.h sig.h flags.h hashlib.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h hashlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h hashlib.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h @@ -1035,7 +1060,7 @@ hashlib.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h hashlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h input.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h input.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h input.h error.h externs.h -input.o: quit.h +input.o: quit.h shell.h pathnames.h list.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h list.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h list.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h @@ -1058,11 +1083,12 @@ make_cmd.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h error.h flags.h m make_cmd.o: variables.h arrayfunc.h conftypes.h array.h hashlib.h subst.h input.h externs.h make_cmd.o: jobs.h quit.h sig.h siglist.h syntax.h dispose_cmd.h parser.h make_cmd.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h ${BASHINCDIR}/ocache.h +make_cmd.o: shell.h execute_cmd.h pathnames.h y.tab.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h y.tab.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h y.tab.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h y.tab.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -y.tab.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h +y.tab.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h execute_cmd.o y.tab.o: trap.h flags.h parser.h input.h mailcheck.h $(DEFSRC)/common.h y.tab.o: $(DEFDIR)/builtext.h bashline.h bashhist.h jobs.h siglist.h alias.h pathexp.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h @@ -1089,7 +1115,7 @@ shell.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR} shell.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h shell.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h shell.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -shell.o: make_cmd.h subst.h sig.h pathnames.h externs.h +shell.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h shell.o: flags.h trap.h mailcheck.h builtins.h $(DEFSRC)/common.h shell.o: jobs.h siglist.h input.h execute_cmd.h findcmd.h bashhist.h bashline.h shell.o: ${GLOB_LIBSRC}/strmatch.h ${BASHINCDIR}/posixtime.h @@ -1097,7 +1123,7 @@ sig.o: config.h bashtypes.h sig.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h sig.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h sig.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -sig.o: make_cmd.h subst.h sig.h pathnames.h externs.h +sig.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.h sig.o: jobs.h siglist.h trap.h $(DEFSRC)/common.h bashline.h bashhist.h sig.o: ${DEFDIR}/builtext.h siglist.o: config.h bashtypes.h siglist.h trap.h @@ -1127,8 +1153,8 @@ test.o: ${DEFSRC}/common.h trap.o: config.h bashtypes.h trap.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h trap.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h trap.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h -trap.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -trap.o: make_cmd.h subst.h sig.h pathnames.h externs.h +trap.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h parser.h +trap.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.h trap.o: signames.h $(DEFSRC)/common.h trap.o: ${DEFDIR}/builtext.h jobs.h unwind_prot.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h @@ -1137,7 +1163,7 @@ variables.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINC variables.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h variables.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h variables.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -variables.o: make_cmd.h subst.h sig.h pathnames.h externs.h +variables.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h variables.o: flags.h execute_cmd.h mailcheck.h input.h $(DEFSRC)/common.h variables.o: findcmd.h bashhist.h hashcmd.h pathexp.h variables.o: pcomplete.h ${BASHINCDIR}/chartypes.h @@ -1152,14 +1178,14 @@ jobs.o: config.h bashtypes.h trap.h ${BASHINCDIR}/filecntl.h input.h ${BASHINCDI jobs.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h jobs.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h jobs.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h -jobs.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +jobs.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h parser.h jobs.o: execute_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h jobs.o: jobs.h flags.h $(DEFSRC)/common.h $(DEFDIR)/builtext.h jobs.o: ${BASHINCDIR}/posixwait.h ${BASHINCDIR}/unionwait.h jobs.o: ${BASHINCDIR}/posixtime.h nojobs.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h bashjmp.h ${BASHINCDIR}/posixjmp.h nojobs.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h jobs.h quit.h siglist.h externs.h -nojobs.o: sig.h error.h ${BASHINCDIR}/shtty.h input.h +nojobs.o: sig.h error.h ${BASHINCDIR}/shtty.h input.h parser.h nojobs.o: $(DEFDIR)/builtext.h # shell features that may be compiled in @@ -1175,6 +1201,7 @@ arrayfunc.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h comman arrayfunc.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h arrayfunc.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h arrayfunc.o: make_cmd.h subst.h sig.h pathnames.h externs.h pathexp.h +arrayfunc.o: execute_cmd.h arrayfunc.o: $(DEFSRC)/common.h arrayfunc.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h assoc.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h @@ -1217,14 +1244,14 @@ bashhist.o: ${BASHINCDIR}/filecntl.h bashhist.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h bashhist.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h bashhist.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -bashhist.o: make_cmd.h subst.h sig.h pathnames.h externs.h +bashhist.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h bashhist.o: flags.h input.h parser.h pathexp.h $(DEFSRC)/common.h bashline.h bashhist.o: $(GLOB_LIBSRC)/strmatch.h bashline.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashline.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h bashline.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h bashline.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -bashline.o: make_cmd.h subst.h sig.h pathnames.h externs.h +bashline.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h bashline.o: builtins.h bashhist.h bashline.h execute_cmd.h findcmd.h pathexp.h bashline.o: $(DEFSRC)/common.h $(GLOB_LIBSRC)/glob.h alias.h bashline.o: pcomplete.h ${BASHINCDIR}/chartypes.h input.h @@ -1279,6 +1306,7 @@ mailcheck.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h make_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h nojobs.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h y.tab.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +pathexp.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h pcomplete.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h pcomplib.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h print_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h @@ -1310,12 +1338,12 @@ builtins/common.o: ${BASHINCDIR}/memalloc.h variables.h arrayfunc.h conftypes.h builtins/common.o: quit.h unwind_prot.h ${BASHINCDIR}/maxpath.h jobs.h builtins.h builtins/common.o: dispose_cmd.h make_cmd.h subst.h externs.h bashhist.h builtins/common.o: execute_cmd.h ${BASHINCDIR}/stdc.h general.h xmalloc.h error.h pathnames.h -builtins/common.o: ${DEFDIR}/builtext.h +builtins/common.o: ${DEFDIR}/builtext.h parser.h builtins/common.o: ${BASHINCDIR}/chartypes.h builtins/evalfile.o: bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins/evalfile.o: shell.h syntax.h config.h bashjmp.h command.h general.h xmalloc.h error.h builtins/evalfile.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -builtins/evalfile.o: make_cmd.h subst.h sig.h pathnames.h externs.h +builtins/evalfile.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h builtins/evalfile.o: jobs.h builtins.h flags.h input.h execute_cmd.h builtins/evalfile.o: bashhist.h $(DEFSRC)/common.h builtins/evalstring.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h @@ -1345,12 +1373,12 @@ builtins/bind.o: $(DEFSRC)/bashgetopt.h pathnames.h builtins/break.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/break.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/break.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/break.o: pathnames.h +builtins/break.o: pathnames.h execute_cmd.h builtins/builtin.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/builtin.o: quit.h $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h builtins/builtin.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/builtin.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/builtin.o: pathnames.h +builtins/builtin.o: pathnames.h execute_cmd.h builtins/caller.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/caller.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/caller.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h @@ -1391,33 +1419,34 @@ builtins/exit.o: bashtypes.h builtins/exit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/exit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/exit.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/exit.o: pathnames.h +builtins/exit.o: pathnames.h execute_cmd.h builtins/fc.o: bashtypes.h ${BASHINCDIR}/posixstat.h builtins/fc.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins.h command.h ${BASHINCDIR}/stdc.h builtins/fc.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/fc.o: flags.h unwind_prot.h variables.h arrayfunc.h conftypes.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h builtins/fc.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h quit.h -builtins/fc.o: $(DEFSRC)/bashgetopt.h bashhist.h pathnames.h +builtins/fc.o: $(DEFSRC)/bashgetopt.h bashhist.h pathnames.h parser.h builtins/fc.o: ${BASHINCDIR}/chartypes.h builtins/fg_bg.o: bashtypes.h $(DEFSRC)/bashgetopt.h builtins/fg_bg.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/fg_bg.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/fg_bg.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/fg_bg.o: pathnames.h +builtins/fg_bg.o: pathnames.h execute_cmd.h builtins/getopts.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/getopts.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/getopts.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/getopts.o: pathnames.h -builtins/hash.o: bashtypes.h +builtins/getopts.o: pathnames.h execute_cmd.h +builtins/hash.o: bashtypes.h execute_cmd.h builtins/hash.o: builtins.h command.h findcmd.h ${BASHINCDIR}/stdc.h $(DEFSRC)/common.h builtins/hash.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/hash.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/hash.o: pathnames.h builtins/help.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/help.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/help.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/help.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h +builtins/help.o: conftypes.h quit.h execute_cmd.h builtins/help.o: $(GLOB_LIBSRC)/glob.h pathnames.h -builtins/history.o: bashtypes.h pathnames.h +builtins/history.o: bashtypes.h pathnames.h parser.h builtins/history.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/history.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/history.o: ${BASHINCDIR}/filecntl.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h @@ -1457,16 +1486,16 @@ builtins/read.o: pathnames.h builtins/return.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/return.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/return.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h -builtins/return.o: pathnames.h +builtins/return.o: pathnames.h execute_cmd.h builtins/set.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/set.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/set.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h flags.h -builtins/set.o: pathnames.h +builtins/set.o: pathnames.h parser.h builtins/setattr.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/setattr.o: quit.h $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h builtins/setattr.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/setattr.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/setattr.o: pathnames.h flags.h +builtins/setattr.o: pathnames.h flags.h execute_cmd.h builtins/shift.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/shift.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/shift.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h @@ -1481,7 +1510,7 @@ builtins/source.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h builtins/source.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/source.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/source.o: findcmd.h $(DEFSRC)/bashgetopt.h flags.h trap.h -builtins/source.o: pathnames.h +builtins/source.o: pathnames.h execute_cmd.h builtins/suspend.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/suspend.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/suspend.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h @@ -1489,7 +1518,7 @@ builtins/suspend.o: pathnames.h builtins/test.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/test.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/test.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h -builtins/test.o: test.h pathnames.h +builtins/test.o: execute_cmd.h test.h pathnames.h builtins/times.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/times.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/times.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h @@ -1503,7 +1532,7 @@ builtins/type.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h x builtins/type.o: quit.h $(DEFSRC)/common.h findcmd.h builtins/type.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/type.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/type.o: pathnames.h +builtins/type.o: pathnames.h execute_cmd.h parser.h builtins/ulimit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/ulimit.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/ulimit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h @@ -1515,6 +1544,7 @@ builtins/umask.o: ${BASHINCDIR}/chartypes.h pathnames.h builtins/wait.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/wait.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/wait.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/wait.o: execute_cmd.h builtins/wait.o: ${BASHINCDIR}/chartypes.h pathnames.h builtins/complete.o: config.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h diff --git a/NEWS b/NEWS index 931dc846b..9e4570b2a 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,181 @@ +This is a terse description of the new features added to bash-5.0 since +the release of bash-4.4. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. The `wait' builtin can now wait for the last process substitution created. + +b. There is an EPOCHSECONDS variable, which expands to the time in seconds + since the Unix epoch. + +c. There is an EPOCHREALTIME variable, which expands to the time in seconds + since the Unix epoch with microsecond granularity. + +d. New loadable builtins: rm, stat, fdflags. + +e. BASH_ARGV0: a new variable that expands to $0 and sets $0 on assignment. + +f. When supplied a numeric argument, the shell-expand-line bindable readline + command does not perform quote removal and suppresses command and process + substitution. + +g. `history -d' understands negative arguments: negative arguments offset from + the end of the history list. + +h. The `name' argument to the `coproc' reserved word now undergoes word + expansion, so unique coprocs can be created in loops. + +i. A nameref name resolution loop in a function now resolves to a variable by + that name in the global scope. + +j. The `wait' builtin now has a `-f' option, which signfies to wait until the + specified job or process terminates, instead of waiting until it changes + state. + +k. There is a define in config-top.h that allows the shell to use a static + value for $PATH, overriding whatever is in the environment at startup, for + use by the restricted shell. + +l. Process substitution does not inherit the `v' option, like command + substitution. + +m. If a non-interactive shell with job control enabled detects that a foreground + job died due to SIGINT, it acts as if it received the SIGINT. + +n. The SIGCHLD trap is run once for each exiting child process even if job + control is not enabled when the shell is in Posix mode. + +o. A new shopt option: localvar_inherit; if set, a local variable inherits the + value of a variable with the same name at the nearest preceding scope. + +p. `bind -r' now checks whether a key sequence is bound before binding it to + NULL, to avoid creating keymaps for a multi-key sequence. + +q. A numeric argument to the line editing `operate-and-get-next' command + specifies which history entry to use. + +r. The positional parameters are now assigned before running the shell startup + files, so startup files can use $@. + +s. There is a compile-time option that forces the shell to disable the check + for an inherited OLDPWD being a directory. + +t. The `history' builtin can now delete ranges of history entries using + `-d start-end'. + +u. The `vi-edit-and-execute-command' bindable readline command now puts readline + back in vi insertion mode after executing commands from the edited file. + +v. The command completion code now matches aliases and shell function names + case-insensitively if the readline completion-ignore-case variable is set. + +w. There is a new `assoc_expand_once' shell option that attempts to expand + associative array subscripts only once. + +x. The shell only sets up BASH_ARGV and BASH_ARGC at startup if extended + debugging mode is active. The old behavior of unconditionally setting them + is available as part of the shell compatibility options. + +y. The `umask' builtin now allows modes and masks greater than octal 777. + +z. The `times' builtin now honors the current locale when printing a decimal + point. + +aa. There is a new (disabled by default, undocumented) shell option to enable + and disable sending history to syslog at runtime. + +bb. Bash no longer allows variable assignments preceding a special builtin that + changes variable attributes to propagate back to the calling environment + unless the compatibility level is 44 or lower. + +cc. You can set the default value for $HISTSIZE at build time in config-top.h. + +dd. The `complete' builtin now accepts a -I option that applies the completion + to the initial word on the line. + +ee. The internal bash malloc now uses mmap (if available) to satisfy requests + greater than 128K bytes, so free can use mfree to return the pages to the + kernel. + +ff. The shell doesn't automatically set BASH_ARGC and BASH_ARGV at startup + unless it's in debugging mode, as the documentation has always said, but + will dynamically create them if a script references them at the top level + without having enabled debugging mode. + +gg. The localvar_inherit option will not attempt to inherit a value from a + variable of an incompatible type (indexed vs. associative arrays, for + example). + +hh. The `globasciiranges' option is now enabled by default; it can be set to + off by default at configuration time. + +ii. Associative and indexed arrays now allow subscripts consisting solely of + whitespace. + +jj. `checkwinsize' is now enabled by default. + +kk. The `localvar_unset' shopt option is now visible and documented. + +ll. The `progcomp_alias' shopt option is now visible and documented. + +mm. The signal name processing code now understands `SIGRTMIN+n' all the way + up to SIGRTMAX. + +nn. There is a new `seq' loadable builtin. + +oo. Trap execution now honors the (internal) max invocations of `eval', since + traps are supposed to be executed as if using `eval'. + +pp. The $_ variable doesn't change when the shell executes a command that forks. + +qq. The `kill' builtin now supports -sSIGNAME and -nSIGNUM, even though + conforming applications aren't supposed to use them. + +rr. POSIX mode now enables the `shift_verbose' option. + +2. New Features in Readline + +a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as + Posix specifies (uses fnmatch(3) if available). + +b. There are new `next-screen-line' and `previous-screen-line' bindable + commands, which move the cursor to the same column in the next, or previous, + physical line, respectively. + +c. There are default key bindings for control-arrow-key key combinations. + +d. A negative argument (-N) to `quoted-insert' means to insert the next N + characters using quoted-insert. + +e. New public function: rl_check_signals(), which allows applications to + respond to signals that readline catches while waiting for input using + a custom read function. + +f. There is new support for conditionally testing the readline version in an + inputrc file, with a full set of arithmetic comparison operators available. + +g. There is a simple variable comparison facility available for use within an + inputrc file. Allowable operators are equality and inequality; string + variables may be compared to a value; boolean variables must be compared to + either `on' or `off'; variable names are separated from the operator by + whitespace. + +h. The history expansion library now understands command and process + substitution and extended globbing and allows them to appear anywhere in a + word. + +i. The history library has a new variable that allows applications to set the + initial quoting state, so quoting state can be inherited from a previous + line. + +j. Readline now allows application-defined keymap names; there is a new public + function, rl_set_keymap_name(), to do that. + +k. The "Insert" keypad key, if available, now puts readline into overwrite + mode. + +------------------------------------------------------------------------------- This is a terse description of the new features added to bash-4.4 since the release of bash-4.3. As always, the manual page (doc/bash.1) is the place to look for complete descriptions. diff --git a/POSIX b/POSIX index 84ab6bea6..f3f4a0b7e 100644 --- a/POSIX +++ b/POSIX @@ -11,205 +11,224 @@ files. The following list is what's changed when 'POSIX mode' is in effect: - 1. When a command in the hash table no longer exists, Bash will + 1. Bash ensures that the 'POSIXLY_CORRECT' variable is set. + + 2. When a command in the hash table no longer exists, Bash will re-search '$PATH' to find the new location. This is also available with 'shopt -s checkhash'. - 2. The message printed by the job control code and builtins when a job + 3. The message printed by the job control code and builtins when a job exits with a non-zero status is 'Done(status)'. - 3. The message printed by the job control code and builtins when a job + 4. The message printed by the job control code and builtins when a job is stopped is 'Stopped(SIGNAME)', where SIGNAME is, for example, 'SIGTSTP'. - 4. Alias expansion is always enabled, even in non-interactive shells. + 5. Alias expansion is always enabled, even in non-interactive shells. - 5. Reserved words appearing in a context where reserved words are + 6. Reserved words appearing in a context where reserved words are recognized do not undergo alias expansion. - 6. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number + 7. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number and '!!' to '!' are enabled, and parameter expansion is performed on the values of 'PS1' and 'PS2' regardless of the setting of the 'promptvars' option. - 7. The POSIX startup files are executed ('$ENV') rather than the + 8. The POSIX startup files are executed ('$ENV') rather than the normal Bash files. - 8. Tilde expansion is only performed on assignments preceding a + 9. Tilde expansion is only performed on assignments preceding a command name, rather than on all assignment statements on the line. - 9. The default history file is '~/.sh_history' (this is the default + 10. The default history file is '~/.sh_history' (this is the default value of '$HISTFILE'). - 10. Redirection operators do not perform filename expansion on the + 11. Redirection operators do not perform filename expansion on the word in the redirection unless the shell is interactive. - 11. Redirection operators do not perform word splitting on the word in + 12. Redirection operators do not perform word splitting on the word in the redirection. - 12. Function names must be valid shell 'name's. That is, they may not + 13. Function names must be valid shell 'name's. That is, they may not contain characters other than letters, digits, and underscores, and may not start with a digit. Declaring a function with an invalid name causes a fatal syntax error in non-interactive shells. - 13. Function names may not be the same as one of the POSIX special + 14. Function names may not be the same as one of the POSIX special builtins. - 14. POSIX special builtins are found before shell functions during + 15. POSIX special builtins are found before shell functions during command lookup. - 15. Literal tildes that appear as the first character in elements of + 16. When printing shell function definitions (e.g., by 'type'), Bash + does not print the 'function' keyword. + + 17. Literal tildes that appear as the first character in elements of the 'PATH' variable are not expanded as described above under *note Tilde Expansion::. - 16. The 'time' reserved word may be used by itself as a command. When + 18. The 'time' reserved word may be used by itself as a command. When used in this way, it displays timing statistics for the shell and its completed children. The 'TIMEFORMAT' variable controls the format of the timing information. - 17. When parsing and expanding a ${...} expansion that appears within + 19. When parsing and expanding a ${...} expansion that appears within double quotes, single quotes are no longer special and cannot be used to quote a closing brace or other special character, unless the operator is one of those defined to perform pattern removal. In this case, they do not have to appear as matched pairs. - 18. The parser does not recognize 'time' as a reserved word if the + 20. The parser does not recognize 'time' as a reserved word if the next token begins with a '-'. - 19. The '!' character does not introduce history expansion within a + 21. The '!' character does not introduce history expansion within a double-quoted string, even if the 'histexpand' option is enabled. - 20. If a POSIX special builtin returns an error status, a + 22. If a POSIX special builtin returns an error status, a non-interactive shell exits. The fatal errors are those listed in the POSIX standard, and include things like passing incorrect options, redirection errors, variable assignment errors for assignments preceding the command name, and so on. - 21. A non-interactive shell exits with an error status if a variable + 23. A non-interactive shell exits with an error status if a variable assignment error occurs when no command name follows the assignment statements. A variable assignment error occurs, for example, when trying to assign a value to a readonly variable. - 22. A non-interactive shell exits with an error status if a variable + 24. A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a special builtin, but not with any other simple command. - 23. A non-interactive shell exits with an error status if the + 25. A non-interactive shell exits with an error status if the iteration variable in a 'for' statement or the selection variable in a 'select' statement is a readonly variable. - 24. Non-interactive shells exit if FILENAME in '.' FILENAME is not + 26. Non-interactive shells exit if FILENAME in '.' FILENAME is not found. - 25. Non-interactive shells exit if a syntax error in an arithmetic + 27. Non-interactive shells exit if a syntax error in an arithmetic expansion results in an invalid expression. - 26. Non-interactive shells exit on word expansion errors. + 28. Non-interactive shells exit if a parameter expansion error occurs. - 27. Non-interactive shells exit if there is a syntax error in a script + 29. Non-interactive shells exit if there is a syntax error in a script read with the '.' or 'source' builtins, or in a string processed by the 'eval' builtin. - 28. Process substitution is not available. + 30. Process substitution is not available. - 29. While variable indirection is available, it may not be applied to + 31. While variable indirection is available, it may not be applied to the '#' and '?' special parameters. - 30. Assignment statements preceding POSIX special builtins persist in + 32. When expanding the '*' special parameter in a pattern context + where the expansion is double-quoted does not treat the '$*' as if + it were double-quoted. + + 33. Assignment statements preceding POSIX special builtins persist in the shell environment after the builtin completes. - 31. Assignment statements preceding shell function calls persist in + 34. Assignment statements preceding shell function calls persist in the shell environment after the function returns, as if a POSIX special builtin command had been executed. - 32. The 'command' builtin does not prevent builtins that take + 35. The 'command' builtin does not prevent builtins that take assignment statements as arguments from expanding them as assignment statements; when not in POSIX mode, assignment builtins lose their assignment statement expansion properties when preceded by 'command'. - 33. The 'bg' builtin uses the required format to describe each job + 36. The 'bg' builtin uses the required format to describe each job placed in the background, which does not include an indication of whether the job is the current or previous job. - 34. The output of 'kill -l' prints all the signal names on a single + 37. The output of 'kill -l' prints all the signal names on a single line, separated by spaces, without the 'SIG' prefix. - 35. The 'kill' builtin does not accept signal names with a 'SIG' + 38. The 'kill' builtin does not accept signal names with a 'SIG' prefix. - 36. The 'export' and 'readonly' builtin commands display their output + 39. The 'export' and 'readonly' builtin commands display their output in the format required by POSIX. - 37. The 'trap' builtin displays signal names without the leading + 40. The 'trap' builtin displays signal names without the leading 'SIG'. - 38. The 'trap' builtin doesn't check the first argument for a possible + 41. The 'trap' builtin doesn't check the first argument for a possible signal specification and revert the signal handling to the original disposition if it is, unless that argument consists solely of digits and is a valid signal number. If users want to reset the handler for a given signal to the original disposition, they should use '-' as the first argument. - 39. The '.' and 'source' builtins do not search the current directory + 42. The '.' and 'source' builtins do not search the current directory for the filename argument if it is not found by searching 'PATH'. - 40. Enabling POSIX mode has the effect of setting the + 43. Enabling POSIX mode has the effect of setting the 'inherit_errexit' option, so subshells spawned to execute command substitutions inherit the value of the '-e' option from the parent shell. When the 'inherit_errexit' option is not enabled, Bash clears the '-e' option in such subshells. - 41. When the 'alias' builtin displays alias definitions, it does not + 44. Enabling POSIX mode has the effect of setting the 'shift_verbose' + option, so numeric arguments to 'shift' that exceed the number of + positional parameters will result in an error message. + + 45. When the 'alias' builtin displays alias definitions, it does not display them with a leading 'alias ' unless the '-p' option is supplied. - 42. When the 'set' builtin is invoked without options, it does not + 46. When the 'set' builtin is invoked without options, it does not display shell function names and definitions. - 43. When the 'set' builtin is invoked without options, it displays + 47. When the 'set' builtin is invoked without options, it displays variable values without quotes, unless they contain shell metacharacters, even if the result contains nonprinting characters. - 44. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname + 48. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname constructed from '$PWD' and the directory name supplied as an argument does not refer to an existing directory, 'cd' will fail instead of falling back to PHYSICAL mode. - 45. The 'pwd' builtin verifies that the value it prints is the same as + 49. When the 'cd' builtin cannot change a directory because the length + of the pathname constructed from '$PWD' and the directory name + supplied as an argument exceeds PATH_MAX when all symbolic links + are expanded, 'cd' will fail instead of attempting to use only the + supplied directory name. + + 50. The 'pwd' builtin verifies that the value it prints is the same as the current directory, even if it is not asked to check the file system with the '-P' option. - 46. When listing the history, the 'fc' builtin does not include an + 51. When listing the history, the 'fc' builtin does not include an indication of whether or not a history entry has been modified. - 47. The default editor used by 'fc' is 'ed'. + 52. The default editor used by 'fc' is 'ed'. - 48. The 'type' and 'command' builtins will not report a non-executable + 53. The 'type' and 'command' builtins will not report a non-executable file as having been found, though the shell will attempt to execute such a file if it is the only so-named file found in '$PATH'. - 49. The 'vi' editing mode will invoke the 'vi' editor directly when + 54. The 'vi' editing mode will invoke the 'vi' editor directly when the 'v' command is run, instead of checking '$VISUAL' and '$EDITOR'. - 50. When the 'xpg_echo' option is enabled, Bash does not attempt to + 55. When the 'xpg_echo' option is enabled, Bash does not attempt to interpret any arguments to 'echo' as options. Each argument is displayed, after escape characters are converted. - 51. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' + 56. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' and '-f' options. - 52. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not + 57. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not interrupt the 'wait' builtin and cause it to return immediately. The trap command is run once for each child that exits. - 53. The 'read' builtin may be interrupted by a signal for which a trap + 58. The 'read' builtin may be interrupted by a signal for which a trap has been set. If Bash receives a trapped signal while executing 'read', the trap handler executes and 'read' returns an exit status greater than 128. - 54. Bash removes an exited background process's status from the list + 59. Bash removes an exited background process's status from the list of such statuses after the 'wait' builtin is used to obtain it. There is other POSIX behavior that Bash does not implement by default diff --git a/README b/README index ad87aa8a6..c28d63df8 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ Introduction ============ -This is GNU Bash, version 4.4. Bash is the GNU Project's Bourne +This is GNU Bash, version 5.0. Bash is the GNU Project's Bourne Again SHell, a complete implementation of the POSIX shell spec, but also with interactive command line editing, job control on architectures that support it, csh-like features such as history @@ -15,8 +15,8 @@ See the file POSIX for a discussion of how the Bash defaults differ from the POSIX spec and a description of the Bash `posix mode'. There are some user-visible incompatibilities between this version -of Bash and previous widely-distributed versions, bash-4.2 and -bash-4.3. For details, see the file COMPAT. The NEWS file tersely +of Bash and previous widely-distributed versions, bash-4.3 and +bash-4.4. For details, see the file COMPAT. The NEWS file tersely lists features that are new in this release. Bash is free software, distributed under the terms of the [GNU] General @@ -88,6 +88,18 @@ to bash-maintainers@gnu.org. While the Bash maintainers do not promise to fix all bugs, we would like this shell to be the best that we can make it. +Other Packages +============== + +This distribution includes, in examples/bash-completion, a recent version +of the `bash-completion' package, which provides programmable completions +for a number of commands. It's available as a package in many distributions, +and that is the first place from which to obtain it. If it's not a package +from your vendor, you may install the included version. + +The latest version of bash-completion is always available from +https://github.com/scop/bash-completion. + Enjoy! Chet Ramey diff --git a/aclocal.m4 b/aclocal.m4 index d3bac077b..1413267fc 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,4 +1,4 @@ -dnl +nl dnl Bash specific tests dnl dnl Some derived from PDKSH 5.1.3 autoconf tests @@ -962,7 +962,8 @@ AC_CACHE_VAL(bash_cv_termcap_lib, [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, - bash_cv_termcap_lib=gnutermcap)])])])])]) + [AC_CHECK_LIB(ncursesw, tgetent, bash_cv_termcap_lib=libncursesw, + bash_cv_termcap_lib=gnutermcap)])])])])])]) if test "X$_bash_needmsg" = "Xyes"; then AC_MSG_CHECKING(which library has the termcap functions) fi @@ -1307,7 +1308,7 @@ AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers, typedef RETSIGTYPE sigfunc(); -int nsigint; +volatile int nsigint; #ifdef HAVE_POSIX_SIGNALS sigfunc * @@ -1357,7 +1358,7 @@ AC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING, [AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) AC_MSG_CHECKING(for presence of necessary job control definitions) AC_CACHE_VAL(bash_cv_job_control_missing, -[AC_TRY_RUN([ +[AC_TRY_COMPILE([ #include #ifdef HAVE_SYS_WAIT_H #include @@ -1367,42 +1368,38 @@ AC_CACHE_VAL(bash_cv_job_control_missing, #endif #include -/* Add more tests in here as appropriate. */ -main() -{ +/* add more tests in here as appropriate */ + /* signal type */ #if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) -exit(1); +#error #endif /* signals and tty control. */ #if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) -exit (1); +#error #endif /* process control */ #if !defined (WNOHANG) || !defined (WUNTRACED) -exit(1); +#error #endif /* Posix systems have tcgetpgrp and waitpid. */ #if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) -exit(1); +#error #endif #if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) -exit(1); +#error #endif /* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ #if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) -exit(1); +#error #endif -exit(0); -}], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing, - [AC_MSG_WARN(cannot check job control if cross-compiling -- defaulting to missing) - bash_cv_job_control_missing=missing] +], , bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing )]) AC_MSG_RESULT($bash_cv_job_control_missing) if test $bash_cv_job_control_missing = missing; then @@ -1585,9 +1582,7 @@ fi AC_DEFUN(BASH_CHECK_DEV_STDIN, [AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available) AC_CACHE_VAL(bash_cv_dev_stdin, -[if test -d /dev/fd && (exec test -r /dev/stdin < /dev/null) ; then - bash_cv_dev_stdin=present - elif test -d /proc/self/fd && (exec test -r /dev/stdin < /dev/null) ; then +[if (exec test -r /dev/stdin < /dev/null) ; then bash_cv_dev_stdin=present else bash_cv_dev_stdin=absent @@ -1798,6 +1793,8 @@ if test "$am_cv_func_iconv" = yes; then LIBS="$OLDLIBS" fi +AC_CHECK_SIZEOF(wchar_t, 4) + ]) dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB @@ -1856,7 +1853,7 @@ main() ], ac_cv_rl_version=`cat conftest.rlv`, ac_cv_rl_version='0.0', -ac_cv_rl_version='6.3')]) +ac_cv_rl_version='8.0')]) CFLAGS="$_save_CFLAGS" LDFLAGS="$_save_LDFLAGS" @@ -4195,3 +4192,71 @@ fi AC_MSG_RESULT($bash_cv_wexitstatus_offset) AC_DEFINE_UNQUOTED([WEXITSTATUS_OFFSET], [$bash_cv_wexitstatus_offset], [Offset of exit status in wait status word]) ]) + +AC_DEFUN([BASH_FUNC_SBRK], +[ + AC_CHECK_FUNCS_ONCE([sbrk]) + if test X$ac_cv_func_sbrk = Xyes; then + AC_CACHE_CHECK([for working sbrk], [bash_cv_func_sbrk], + [AC_TRY_RUN([ +#include +#include + +int +main(int c, char **v) +{ + void *x; + + x = sbrk (4096); + exit ((x == (void *)-1) ? 1 : 0); +} +], bash_cv_func_sbrk=yes, bash_cv_func_snprintf=sbrk, + [AC_MSG_WARN([cannot check working sbrk if cross-compiling]) + bash_cv_func_sbrk=yes] +)]) + if test $bash_cv_func_sbrk = no; then + ac_cv_func_sbrk=no + fi + fi + if test $ac_cv_func_sbrk = no; then + AC_DEFINE(HAVE_SBRK, 0, + [Define if you have a working sbrk function.]) + fi +]) + +AC_DEFUN(BASH_FUNC_FNMATCH_EQUIV_FALLBACK, +[AC_MSG_CHECKING(whether fnmatch can be used to check bracket equivalence classes) +AC_CACHE_VAL(bash_cv_fnmatch_equiv_fallback, +[AC_TRY_RUN([ +#include +#include +#include +#include +#include + +char *pattern = "[[=a=]]"; + +/* char *string = "ä"; */ +unsigned char string[4] = { '\xc3', '\xa4', '\0' }; + +int +main (int c, char **v) +{ + setlocale (LC_ALL, "de_DE.UTF-8"); + if (fnmatch (pattern, (const char *)string, 0) != FNM_NOMATCH) + exit (0); + exit (1); +} + +], bash_cv_fnmatch_equiv_fallback=yes, bash_cv_fnmatch_equiv_fallback=no, + [AC_MSG_WARN(cannot check fnmatch if cross compiling -- defaulting to no) + bash_cv_fnmatch_equiv_fallback=no] +)]) +AC_MSG_RESULT($bash_cv_fnmatch_equiv_fallback) +if test "$bash_cv_fnmatch_equiv_fallback" = "yes" ; then + bash_cv_fnmatch_equiv_value=1 +else + bash_cv_fnmatch_equiv_value=0 +fi +AC_DEFINE_UNQUOTED([FNMATCH_EQUIV_FALLBACK], [$bash_cv_fnmatch_equiv_value], [Whether fnmatch can be used for bracket equivalence classes]) +]) diff --git a/alias.c b/alias.c index 8b3f22898..74ae87009 100644 --- a/alias.c +++ b/alias.c @@ -158,6 +158,10 @@ free_alias_data (data) register alias_t *a; a = (alias_t *)data; + + if (a->flags & AL_BEINGEXPANDED) + clear_string_list_expander (a); /* call back to the parser */ + free (a->value); free (a->name); free (data); diff --git a/alias.h b/alias.h index 4d0075f85..87174a322 100644 --- a/alias.h +++ b/alias.h @@ -67,4 +67,7 @@ extern char *alias_expand_word __P((char *)); /* Return a new line, with any aliases expanded. */ extern char *alias_expand __P((char *)); +/* Helper definition for the parser */ +extern void clear_string_list_expander __P((alias_t *)); + #endif /* _ALIAS_H_ */ diff --git a/array.c b/array.c index 6a6db7763..bca18c544 100644 --- a/array.c +++ b/array.c @@ -9,7 +9,7 @@ * chet@ins.cwru.edu */ -/* Copyright (C) 1997-2009 Free Software Foundation, Inc. +/* Copyright (C) 1997-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -52,40 +52,30 @@ ae->prev = new; \ new->next = ae; \ } while(0) + +#define ADD_AFTER(ae, new) \ + do { \ + ae->next->prev = new; \ + new->next = ae->next; \ + new->prev = ae; \ + ae->next = new; \ + } while (0) static char *array_to_string_internal __P((ARRAY_ELEMENT *, ARRAY_ELEMENT *, char *, int)); -/* lastref should be moved into the array structure so each array can be - optimized separately */ - -static ARRAY *lastarray = 0; -static ARRAY_ELEMENT *lastref = 0; +static char *spacesep = " "; -#define IS_LASTREF(a) (lastarray && (a) == lastarray) +#define IS_LASTREF(a) (a->lastref) #define LASTREF_START(a, i) \ - (IS_LASTREF(a) && i >= element_index(lastref)) ? lastref \ - : element_forw(a->head) - -#define INVALIDATE_LASTREF(a) \ -do { \ - if ((a) == lastarray) { \ - lastarray = 0; \ - lastref = 0; \ - } \ -} while (0) - -#define SET_LASTREF(a, e) \ -do { \ - lastarray = (a); \ - lastref = (e); \ -} while (0) - -#define UNSET_LASTREF() \ -do { \ - lastarray = 0; \ - lastref = 0; \ -} while (0) + (IS_LASTREF(a) && i >= element_index(a->lastref)) ? a->lastref \ + : element_forw(a->head) + +#define LASTREF(a) (a->lastref ? a->lastref : element_forw(a->head)) + +#define INVALIDATE_LASTREF(a) a->lastref = 0 +#define SET_LASTREF(a, e) a->lastref = (e) +#define UNSET_LASTREF(a) a->lastref = 0; ARRAY * array_create() @@ -93,10 +83,11 @@ array_create() ARRAY *r; ARRAY_ELEMENT *head; - r =(ARRAY *)xmalloc(sizeof(ARRAY)); + r = (ARRAY *)xmalloc(sizeof(ARRAY)); r->type = array_indexed; r->max_index = -1; r->num_elements = 0; + r->lastref = (ARRAY_ELEMENT *)0; head = array_create_element(-1, (char *)NULL); /* dummy head */ head->prev = head->next = head; r->head = head; @@ -149,6 +140,8 @@ ARRAY *a; for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) { new = array_create_element(element_index(ae), element_value(ae)); ADD_BEFORE(a1->head, new); + if (ae == LASTREF(a)) + SET_LASTREF(a1, new); } return(a1); } @@ -391,7 +384,6 @@ array_remove_quoted_nulls(array) ARRAY *array; { ARRAY_ELEMENT *a; - char *t; if (array == 0 || array_head(array) == 0 || array_empty(array)) return (ARRAY *)NULL; @@ -414,8 +406,8 @@ int starsub, quoted; ARRAY *a2; ARRAY_ELEMENT *h, *p; arrayind_t i; - char *ifs, *sifs, *t; - int slen; + char *t; + WORD_LIST *wl; p = a ? array_head (a) : 0; if (p == 0 || array_empty (a) || start > array_max_index(a)) @@ -440,32 +432,12 @@ int starsub, quoted; a2 = array_slice(a, h, p); - if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) - array_quote(a2); - else - array_quote_escapes(a2); - - if (starsub && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) { - /* ${array[*]} */ - array_remove_quoted_nulls (a2); - sifs = ifs_firstchar ((int *)NULL); - t = array_to_string (a2, sifs, 0); - free (sifs); - } else if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) { - /* ${array[@]} */ - sifs = ifs_firstchar (&slen); - ifs = getifs (); - if (ifs == 0 || *ifs == 0) { - if (slen < 2) - sifs = xrealloc(sifs, 2); - sifs[0] = ' '; - sifs[1] = '\0'; - } - t = array_to_string (a2, sifs, 0); - free (sifs); - } else - t = array_to_string (a2, " ", 0); + wl = array_to_word_list(a2); array_dispose(a2); + if (wl == 0) + return (char *)NULL; + t = string_list_pos_params(starsub ? '*' : '@', wl, quoted); + dispose_words(wl); return t; } @@ -476,46 +448,28 @@ ARRAY *a; char *pat, *rep; int mflags; { - ARRAY *a2; - ARRAY_ELEMENT *e; - char *t, *sifs, *ifs; - int slen; + char *t; + int pchar, qflags; + WORD_LIST *wl, *save; if (a == 0 || array_head(a) == 0 || array_empty(a)) return ((char *)NULL); - a2 = array_copy(a); - for (e = element_forw(a2->head); e != a2->head; e = element_forw(e)) { - t = pat_subst(element_value(e), pat, rep, mflags); - FREE(element_value(e)); - e->value = t; + wl = array_to_word_list(a); + if (wl == 0) + return (char *)NULL; + + for (save = wl; wl; wl = wl->next) { + t = pat_subst (wl->word->word, pat, rep, mflags); + FREE (wl->word->word); + wl->word->word = t; } - if (mflags & MATCH_QUOTED) - array_quote(a2); - else - array_quote_escapes(a2); - - if (mflags & MATCH_STARSUB) { - array_remove_quoted_nulls (a2); - sifs = ifs_firstchar((int *)NULL); - t = array_to_string (a2, sifs, 0); - free(sifs); - } else if (mflags & MATCH_QUOTED) { - /* ${array[@]} */ - sifs = ifs_firstchar (&slen); - ifs = getifs (); - if (ifs == 0 || *ifs == 0) { - if (slen < 2) - sifs = xrealloc (sifs, 2); - sifs[0] = ' '; - sifs[1] = '\0'; - } - t = array_to_string (a2, sifs, 0); - free(sifs); - } else - t = array_to_string (a2, " ", 0); - array_dispose (a2); + pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; + qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + + t = string_list_pos_params (pchar, save, qflags); + dispose_words(save); return t; } @@ -527,49 +481,32 @@ char *pat; int modop; int mflags; { - ARRAY *a2; - ARRAY_ELEMENT *e; - char *t, *sifs, *ifs; - int slen; + char *t; + int pchar, qflags; + WORD_LIST *wl, *save; if (a == 0 || array_head(a) == 0 || array_empty(a)) return ((char *)NULL); - a2 = array_copy(a); - for (e = element_forw(a2->head); e != a2->head; e = element_forw(e)) { - t = sh_modcase(element_value(e), pat, modop); - FREE(element_value(e)); - e->value = t; + wl = array_to_word_list(a); + if (wl == 0) + return ((char *)NULL); + + for (save = wl; wl; wl = wl->next) { + t = sh_modcase(wl->word->word, pat, modop); + FREE(wl->word->word); + wl->word->word = t; } - if (mflags & MATCH_QUOTED) - array_quote(a2); - else - array_quote_escapes(a2); - - if (mflags & MATCH_STARSUB) { - array_remove_quoted_nulls (a2); - sifs = ifs_firstchar((int *)NULL); - t = array_to_string (a2, sifs, 0); - free(sifs); - } else if (mflags & MATCH_QUOTED) { - /* ${array[@]} */ - sifs = ifs_firstchar (&slen); - ifs = getifs (); - if (ifs == 0 || *ifs == 0) { - if (slen < 2) - sifs = xrealloc (sifs, 2); - sifs[0] = ' '; - sifs[1] = '\0'; - } - t = array_to_string (a2, sifs, 0); - free(sifs); - } else - t = array_to_string (a2, " ", 0); - array_dispose (a2); + pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; + qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + + t = string_list_pos_params (pchar, save, qflags); + dispose_words(save); return t; } + /* * Allocate and return a new array element with index INDEX and value * VALUE. @@ -618,6 +555,8 @@ arrayind_t i; char *v; { register ARRAY_ELEMENT *new, *ae, *start; + arrayind_t startind; + int direction; if (a == 0) return(-1); @@ -633,6 +572,12 @@ char *v; a->num_elements++; SET_LASTREF(a, new); return(0); + } else if (i < array_first_index(a)) { + /* Hook at the beginning */ + ADD_AFTER(a->head, new); + a->num_elements++; + SET_LASTREF(a, new); + return(0); } #if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT /* @@ -640,26 +585,48 @@ char *v; * handle optimizes the case of sequential or almost-sequential * assignments that are not at the end of the array. */ - start = LASTREF_START(a, i); + start = LASTREF(a); + /* Use same strategy as array_reference to avoid paying large penalty + for semi-random assignment pattern. */ + startind = element_index(start); + if (i < startind/2) { + start = element_forw(a->head); + startind = element_index(start); + direction = 1; + } else if (i >= startind) { + direction = 1; + } else { + direction = -1; + } #else start = element_forw(ae->head); + startind = element_index(start); + direction = 1; #endif - for (ae = start; ae != a->head; ae = element_forw(ae)) { + for (ae = start; ae != a->head; ) { if (element_index(ae) == i) { /* * Replacing an existing element. */ - array_dispose_element(new); free(element_value(ae)); - ae->value = v ? savestring(v) : (char *)NULL; + /* Just swap in the new value */ + ae->value = new->value; + new->value = 0; + array_dispose_element(new); SET_LASTREF(a, ae); return(0); - } else if (element_index(ae) > i) { + } else if (direction == 1 && element_index(ae) > i) { ADD_BEFORE(ae, new); a->num_elements++; SET_LASTREF(a, new); return(0); + } else if (direction == -1 && element_index(ae) < i) { + ADD_AFTER(ae, new); + a->num_elements++; + SET_LASTREF(a, new); + return(0); } + ae = direction == 1 ? element_forw(ae) : element_back(ae); } array_dispose_element(new); INVALIDATE_LASTREF(a); @@ -676,11 +643,27 @@ ARRAY *a; arrayind_t i; { register ARRAY_ELEMENT *ae, *start; + arrayind_t startind; + int direction; if (a == 0 || array_empty(a)) return((ARRAY_ELEMENT *) NULL); - start = LASTREF_START(a, i); - for (ae = start; ae != a->head; ae = element_forw(ae)) + if (i > array_max_index(a) || i < array_first_index(a)) + return((ARRAY_ELEMENT *)NULL); /* Keep roving pointer into array to optimize sequential access */ + start = LASTREF(a); + /* Use same strategy as array_reference to avoid paying large penalty + for semi-random assignment pattern. */ + startind = element_index(start); + if (i < startind/2) { + start = element_forw(a->head); + startind = element_index(start); + direction = 1; + } else if (i >= startind) { + direction = 1; + } else { + direction = -1; + } + for (ae = start; ae != a->head; ) { if (element_index(ae) == i) { ae->next->prev = ae->prev; ae->prev->next = ae->next; @@ -699,6 +682,12 @@ arrayind_t i; #endif return(ae); } + ae = (direction == 1) ? element_forw(ae) : element_back(ae); + if (direction == 1 && element_index(ae) > i) + break; + else if (direction == -1 && element_index(ae) < i) + break; + } return((ARRAY_ELEMENT *) NULL); } @@ -711,18 +700,48 @@ ARRAY *a; arrayind_t i; { register ARRAY_ELEMENT *ae, *start; + arrayind_t startind; + int direction; if (a == 0 || array_empty(a)) return((char *) NULL); - if (i > array_max_index(a)) + if (i > array_max_index(a) || i < array_first_index(a)) return((char *)NULL); /* Keep roving pointer into array to optimize sequential access */ - start = LASTREF_START(a, i); - for (ae = start; ae != a->head; ae = element_forw(ae)) + start = LASTREF(a); /* lastref pointer */ + startind = element_index(start); + if (i < startind/2) { /* XXX - guess */ + start = element_forw(a->head); + startind = element_index(start); + direction = 1; + } else if (i >= startind) { + direction = 1; + } else { + direction = -1; + } + for (ae = start; ae != a->head; ) { if (element_index(ae) == i) { SET_LASTREF(a, ae); return(element_value(ae)); } - UNSET_LASTREF(); /* XXX SET_LASTREF(a, start) ? */ + ae = (direction == 1) ? element_forw(ae) : element_back(ae); + /* Take advantage of index ordering to short-circuit */ + /* If we don't find it, set the lastref pointer to the element + that's `closest', assuming that the unsuccessful reference + will quickly be followed by an assignment. No worse than + not changing it from the previous value or resetting it. */ + if (direction == 1 && element_index(ae) > i) { + start = ae; /* use for SET_LASTREF below */ + break; + } else if (direction == -1 && element_index(ae) < i) { + start = ae; /* use for SET_LASTREF below */ + break; + } + } +#if 0 + UNSET_LASTREF(a); +#else + SET_LASTREF(a, start); +#endif return((char *) NULL); } diff --git a/array.h b/array.h index fb4f789f3..0c456507b 100644 --- a/array.h +++ b/array.h @@ -33,6 +33,7 @@ typedef struct array { enum atype type; arrayind_t max_index; int num_elements; + struct array_element *lastref; struct array_element *head; } ARRAY; @@ -94,6 +95,7 @@ extern ARRAY *array_from_string __P((char *, char *)); #define array_num_elements(a) ((a)->num_elements) #define array_max_index(a) ((a)->max_index) +#define array_first_index(a) ((a)->head->next->ind) #define array_head(a) ((a)->head) #define array_empty(a) ((a)->num_elements == 0) @@ -102,6 +104,8 @@ extern ARRAY *array_from_string __P((char *, char *)); #define element_forw(ae) ((ae)->next) #define element_back(ae) ((ae)->prev) +#define set_element_value(ae, val) ((ae)->value = (val)) + /* Convenience */ #define array_push(a,v) \ do { array_rshift ((a), 1, (v)); } while (0) diff --git a/arrayfunc.c b/arrayfunc.c index 47c595e0b..e4ae34d05 100644 --- a/arrayfunc.c +++ b/arrayfunc.c @@ -30,6 +30,7 @@ #include "bashintl.h" #include "shell.h" +#include "execute_cmd.h" #include "pathexp.h" #include "shmbutil.h" @@ -39,9 +40,12 @@ #include "builtins/common.h" -extern char *this_command_name; -extern int last_command_exit_value; -extern int array_needs_making; +/* This variable means to not expand associative array subscripts more than + once, when performing variable expansion. */ +int assoc_expand_once = 0; + +/* Ditto for indexed array subscripts -- currently unused */ +int array_expand_once = 0; static SHELL_VAR *bind_array_var_internal __P((SHELL_VAR *, arrayind_t, char *, char *, int)); static SHELL_VAR *assign_array_element_internal __P((SHELL_VAR *, char *, char *, char *, int, char *, int)); @@ -195,6 +199,8 @@ bind_array_var_internal (entry, ind, key, value, flags) FREE (newval); VUNSETATTR (entry, att_invisible); /* no longer invisible */ + + /* check mark_modified_variables if we ever want to export array vars */ return (entry); } @@ -258,9 +264,6 @@ bind_assoc_variable (entry, name, key, value, flags) char *value; int flags; { - SHELL_VAR *dentry; - char *newval; - if ((readonly_p (entry) && (flags&ASS_FORCE) == 0) || noassign_p (entry)) { if (readonly_p (entry)) @@ -272,29 +275,32 @@ bind_assoc_variable (entry, name, key, value, flags) } /* Parse NAME, a lhs of an assignment statement of the form v[s], and - assign VALUE to that array element by calling bind_array_variable(). */ + assign VALUE to that array element by calling bind_array_variable(). + Flags are ASS_ assignment flags */ SHELL_VAR * assign_array_element (name, value, flags) char *name, *value; int flags; { char *sub, *vname; - int sublen; - SHELL_VAR *entry, *nv; + int sublen, isassoc; + SHELL_VAR *entry; - vname = array_variable_name (name, &sub, &sublen); + vname = array_variable_name (name, (flags & ASS_NOEXPAND) != 0, &sub, &sublen); if (vname == 0) return ((SHELL_VAR *)NULL); - if ((ALL_ELEMENT_SUB (sub[0]) && sub[1] == ']') || (sublen <= 1)) + entry = find_variable (vname); + isassoc = entry && assoc_p (entry); + + if (((isassoc == 0 || (flags & ASS_NOEXPAND) == 0) && (ALL_ELEMENT_SUB (sub[0]) && sub[1] == ']')) || (sublen <= 1)) { free (vname); err_badarraysub (name); return ((SHELL_VAR *)NULL); } - entry = find_variable (vname); entry = assign_array_element_internal (entry, name, vname, sub, sublen, value, flags); free (vname); @@ -317,7 +323,10 @@ assign_array_element_internal (entry, name, vname, sub, sublen, value, flags) if (entry && assoc_p (entry)) { sub[sublen-1] = '\0'; - akey = expand_assignment_string_to_string (sub, 0); /* [ */ + if ((flags & ASS_NOEXPAND) == 0) + akey = expand_assignment_string_to_string (sub, 0); /* [ */ + else + akey = savestring (sub); sub[sublen-1] = ']'; if (akey == 0 || *akey == 0) { @@ -329,7 +338,7 @@ assign_array_element_internal (entry, name, vname, sub, sublen, value, flags) } else { - ind = array_expand_index (entry, sub, sublen); + ind = array_expand_index (entry, sub, sublen, 0); /* negative subscripts to indexed arrays count back from end */ if (entry && ind < 0) ind = (array_p (entry) ? array_max_index (array_cell (entry)) : 0) + 1 + ind; @@ -450,7 +459,6 @@ expand_compound_array_assignment (var, value, flags) int flags; { WORD_LIST *list, *nlist; - WORD_LIST *hd, *tl, *t, *n; char *val; int ni; @@ -583,7 +591,7 @@ assign_compound_array_list (var, nlist, flags) if (array_p (var)) { - ind = array_expand_index (var, w + 1, len); + ind = array_expand_index (var, w + 1, len, 0); /* negative subscripts to indexed arrays count back from end */ if (ind < 0) ind = array_max_index (array_cell (var)) + 1 + ind; @@ -759,17 +767,19 @@ quote_array_assignment_chars (list) /* This function is called with SUB pointing to just after the beginning `[' of an array subscript and removes the array element to which SUB expands from array VAR. A subscript of `*' or `@' unsets the array. */ +/* If FLAGS&1 we don't expand the subscript; we just use it as-is. */ int -unbind_array_element (var, sub) +unbind_array_element (var, sub, flags) SHELL_VAR *var; char *sub; + int flags; { int len; arrayind_t ind; char *akey; ARRAY_ELEMENT *ae; - len = skipsubscript (sub, 0, (var && assoc_p(var))); + len = skipsubscript (sub, 0, (flags&1) || (var && assoc_p(var))); /* XXX */ if (sub[len] != ']' || len == 0) { builtin_error ("%s[%s: %s", var->name, sub, _(bash_badsub_errmsg)); @@ -790,7 +800,7 @@ unbind_array_element (var, sub) if (assoc_p (var)) { - akey = expand_assignment_string_to_string (sub, 0); /* [ */ + akey = (flags & 1) ? sub : expand_assignment_string_to_string (sub, 0); if (akey == 0 || *akey == 0) { builtin_error ("[%s]: %s", sub, _(bash_badsub_errmsg)); @@ -798,11 +808,12 @@ unbind_array_element (var, sub) return -1; } assoc_remove (assoc_cell (var), akey); - free (akey); + if (akey != sub) + free (akey); } else if (array_p (var)) { - ind = array_expand_index (var, sub, len+1); + ind = array_expand_index (var, sub, len+1, 0); /* negative subscripts to indexed arrays count back from end */ if (ind < 0) ind = array_max_index (array_cell (var)) + 1 + ind; @@ -818,7 +829,7 @@ unbind_array_element (var, sub) else /* array_p (var) == 0 && assoc_p (var) == 0 */ { akey = this_command_name; - ind = array_expand_index (var, sub, len+1); + ind = array_expand_index (var, sub, len+1, 0); this_command_name = akey; if (ind == 0) { @@ -879,42 +890,62 @@ print_assoc_assignment (var, quoted) /***********************************************************************/ /* Return 1 if NAME is a properly-formed array reference v[sub]. */ + +/* We need to reserve 1 for FLAGS, which we pass to skipsubscript. */ int valid_array_reference (name, flags) const char *name; int flags; { char *t; - int r, len; + int r, len, isassoc; + SHELL_VAR *entry; t = mbschr (name, '['); /* ] */ + isassoc = 0; if (t) { *t = '\0'; r = legal_identifier (name); + if (flags & VA_NOEXPAND) /* Don't waste a lookup if we don't need one */ + isassoc = (entry = find_variable (name)) && assoc_p (entry); *t = '['; if (r == 0) return 0; - /* Check for a properly-terminated non-blank subscript. */ - len = skipsubscript (t, 0, 0); - if (t[len] != ']' || len == 1) - return 0; - if (t[len+1] != '\0') + + if (isassoc && ((flags & (VA_NOEXPAND|VA_ONEWORD)) == (VA_NOEXPAND|VA_ONEWORD))) + len = strlen (t) - 1; + else if (isassoc) + len = skipsubscript (t, 0, flags&VA_NOEXPAND); /* VA_NOEXPAND must be 1 */ + else + /* Check for a properly-terminated non-null subscript. */ + len = skipsubscript (t, 0, 0); /* arithmetic expression */ + + if (t[len] != ']' || len == 1 || t[len+1] != '\0') return 0; + +#if 0 + /* Could check and allow subscripts consisting only of whitespace for + existing associative arrays, using isassoc */ for (r = 1; r < len; r++) if (whitespace (t[r]) == 0) return 1; return 0; +#else + /* This allows blank subscripts */ + return 1; +#endif } return 0; } /* Expand the array index beginning at S and extending LEN characters. */ arrayind_t -array_expand_index (var, s, len) +array_expand_index (var, s, len, flags) SHELL_VAR *var; char *s; int len; + int flags; { char *exp, *t, *savecmd; int expok; @@ -923,12 +954,19 @@ array_expand_index (var, s, len) exp = (char *)xmalloc (len); strncpy (exp, s, len - 1); exp[len - 1] = '\0'; +#if 0 /* XXX - not yet -- maybe bash-5.1 */ + if ((flags & AV_NOEXPAND) == 0) + t = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH|Q_ARRAYSUB); /* XXX - Q_ARRAYSUB for future use */ + else + t = exp; +#endif t = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH|Q_ARRAYSUB); /* XXX - Q_ARRAYSUB for future use */ savecmd = this_command_name; this_command_name = (char *)NULL; - val = evalexp (t, &expok); + val = evalexp (t, 0, &expok); this_command_name = savecmd; - free (t); + if (t != exp) + free (t); free (exp); if (expok == 0) { @@ -947,8 +985,9 @@ array_expand_index (var, s, len) in *SUBP. If LENP is non-null, the length of the subscript is returned in *LENP. This returns newly-allocated memory. */ char * -array_variable_name (s, subp, lenp) +array_variable_name (s, flags, subp, lenp) const char *s; + int flags; char **subp; int *lenp; { @@ -965,7 +1004,7 @@ array_variable_name (s, subp, lenp) return ((char *)NULL); } ind = t - s; - ni = skipsubscript (s, ind, 0); + ni = skipsubscript (s, ind, flags); /* XXX - was 0 not flags */ if (ni <= ind + 1 || s[ni] != ']') { err_badarraysub (s); @@ -992,15 +1031,16 @@ array_variable_name (s, subp, lenp) non-null, return a pointer to the start of the subscript in *SUBP. If LENP is non-null, the length of the subscript is returned in *LENP. */ SHELL_VAR * -array_variable_part (s, subp, lenp) +array_variable_part (s, flags, subp, lenp) const char *s; + int flags; char **subp; int *lenp; { char *t; SHELL_VAR *var; - t = array_variable_name (s, subp, lenp); + t = array_variable_name (s, flags, subp, lenp); if (t == 0) return ((SHELL_VAR *)NULL); var = find_variable (t); /* XXX - handle namerefs here? */ @@ -1042,7 +1082,7 @@ array_value_internal (s, quoted, flags, rtype, indp) WORD_LIST *l; SHELL_VAR *var; - var = array_variable_part (s, &t, &len); + var = array_variable_part (s, (flags&AV_NOEXPAND) ? 1 : 0, &t, &len); /* XXX */ /* Expand the index, even if the variable doesn't exist, in case side effects are needed, like ${w[i++]} where w is unset. */ @@ -1067,6 +1107,8 @@ array_value_internal (s, quoted, flags, rtype, indp) } else if (var == 0 || value_cell (var) == 0) /* XXX - check for invisible_p(var) ? */ return ((char *)NULL); + else if (invisible_p (var)) + return ((char *)NULL); else if (array_p (var) == 0 && assoc_p (var) == 0) l = add_string_to_list (value_cell (var), (WORD_LIST *)NULL); else if (assoc_p (var)) @@ -1082,15 +1124,16 @@ array_value_internal (s, quoted, flags, rtype, indp) return ((char *) NULL); } + /* Caller of array_value takes care of inspecting rtype and duplicating + retval if rtype == 0, so this is not a memory leak */ if (t[0] == '*' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) { - temp = string_list_dollar_star (l); - retval = quote_string (temp); /* XXX - leak here */ + temp = string_list_dollar_star (l, quoted, (flags & AV_ASSIGNRHS) ? PF_ASSIGNRHS : 0); + retval = quote_string (temp); free (temp); } else /* ${name[@]} or unquoted ${name[*]} */ - /* XXX - bash-4.4/bash-5.0 test AV_ASSIGNRHS and pass PF_ASSIGNRHS */ - retval = string_list_dollar_at (l, quoted, (flags & AV_ASSIGNRHS) ? PF_ASSIGNRHS : 0); /* XXX - leak here */ + retval = string_list_dollar_at (l, quoted, (flags & AV_ASSIGNRHS) ? PF_ASSIGNRHS : 0); dispose_words (l); } @@ -1102,7 +1145,7 @@ array_value_internal (s, quoted, flags, rtype, indp) { if ((flags & AV_USEIND) == 0 || indp == 0) { - ind = array_expand_index (var, t, len); + ind = array_expand_index (var, t, len, flags); if (ind < 0) { /* negative subscripts to indexed arrays count back from end */ @@ -1120,7 +1163,10 @@ array_value_internal (s, quoted, flags, rtype, indp) else if (assoc_p (var)) { t[len - 1] = '\0'; - akey = expand_assignment_string_to_string (t, 0); /* [ */ + if ((flags & AV_NOEXPAND) == 0) + akey = expand_assignment_string_to_string (t, 0); /* [ */ + else + akey = savestring (t); t[len - 1] = ']'; if (akey == 0 || *akey == 0) { @@ -1134,6 +1180,11 @@ array_value_internal (s, quoted, flags, rtype, indp) FREE (akey); return ((char *)NULL); } + else if (invisible_p (var)) + { + FREE (akey); + return ((char *)NULL); + } if (array_p (var) == 0 && assoc_p (var) == 0) return (ind == 0 ? value_cell (var) : (char *)NULL); else if (assoc_p (var)) @@ -1182,7 +1233,7 @@ array_keys (s, quoted) WORD_LIST *l; SHELL_VAR *var; - var = array_variable_part (s, &t, &len); + var = array_variable_part (s, 0, &t, &len); /* [ */ if (var == 0 || ALL_ELEMENT_SUB (t[0]) == 0 || t[1] != ']') @@ -1202,7 +1253,7 @@ array_keys (s, quoted) if (t[0] == '*' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) { - temp = string_list_dollar_star (l); + temp = string_list_dollar_star (l, quoted, 0); retval = quote_string (temp); free (temp); } diff --git a/arrayfunc.h b/arrayfunc.h index 5ee275916..cd51ee073 100644 --- a/arrayfunc.h +++ b/arrayfunc.h @@ -25,12 +25,24 @@ #if defined (ARRAY_VARS) +/* This variable means to not expand associative array subscripts more than + once, when performing variable expansion. */ +extern int assoc_expand_once; + +/* The analog for indexed array subscripts */ +extern int array_expand_once; + /* Flags for array_value_internal and callers array_value/get_array_value */ #define AV_ALLOWALL 0x001 #define AV_QUOTED 0x002 #define AV_USEIND 0x004 #define AV_USEVAL 0x008 /* XXX - should move this */ #define AV_ASSIGNRHS 0x010 /* no splitting, special case ${a[@]} */ +#define AV_NOEXPAND 0x020 /* don't run assoc subscripts through word expansion */ + +/* Flags for valid_array_reference. Value 1 is reserved for skipsubscript() */ +#define VA_NOEXPAND 0x001 +#define VA_ONEWORD 0x002 extern SHELL_VAR *convert_var_to_array __P((SHELL_VAR *)); extern SHELL_VAR *convert_var_to_assoc __P((SHELL_VAR *)); @@ -52,21 +64,21 @@ extern WORD_LIST *expand_compound_array_assignment __P((SHELL_VAR *, char *, int extern void assign_compound_array_list __P((SHELL_VAR *, WORD_LIST *, int)); extern SHELL_VAR *assign_array_var_from_string __P((SHELL_VAR *, char *, int)); -extern int unbind_array_element __P((SHELL_VAR *, char *)); +extern int unbind_array_element __P((SHELL_VAR *, char *, int)); extern int skipsubscript __P((const char *, int, int)); extern void print_array_assignment __P((SHELL_VAR *, int)); extern void print_assoc_assignment __P((SHELL_VAR *, int)); -extern arrayind_t array_expand_index __P((SHELL_VAR *, char *, int)); +extern arrayind_t array_expand_index __P((SHELL_VAR *, char *, int, int)); extern int valid_array_reference __P((const char *, int)); extern char *array_value __P((const char *, int, int, int *, arrayind_t *)); extern char *get_array_value __P((const char *, int, int *, arrayind_t *)); extern char *array_keys __P((char *, int)); -extern char *array_variable_name __P((const char *, char **, int *)); -extern SHELL_VAR *array_variable_part __P((const char *, char **, int *)); +extern char *array_variable_name __P((const char *, int, char **, int *)); +extern SHELL_VAR *array_variable_part __P((const char *, int, char **, int *)); #else @@ -75,6 +87,8 @@ extern SHELL_VAR *array_variable_part __P((const char *, char **, int *)); #define AV_USEIND 0 #define AV_ASSIGNRHS 0 +#define VA_ONEWORD 0 + #endif #endif /* !_ARRAYFUNC_H_ */ diff --git a/assoc.c b/assoc.c index 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 9979f99ac..7912cce31 100644 --- a/bashhist.c +++ b/bashhist.c @@ -44,6 +44,7 @@ #include "shell.h" #include "flags.h" +#include "parser.h" #include "input.h" #include "parser.h" /* for the struct dstack stuff. */ #include "pathexp.h" /* for the struct ignorevar stuff */ @@ -59,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 @@ -140,6 +145,11 @@ int command_oriented_history = 1; the history-manipluating builtins can see it. */ int current_command_first_line_saved = 0; +/* Set to the number of the most recent line of a possibly-multi-line command + that contains a shell comment. Used by bash_add_history() to determine + whether to add a newline or a semicolon. */ +int current_command_line_comment = 0; + /* Non-zero means to store newlines in the history list when using command_oriented_history rather than trying to use semicolons. */ int literal_history; @@ -182,12 +192,6 @@ int hist_verify; /* Non-zero means to not save function definitions in the history list. */ int dont_save_function_defs; -/* Variables declared in other files used here. */ -extern int current_command_line_count; - -extern struct dstack dstack; -extern int parser_state; - #if defined (BANG_HISTORY) static int bash_history_inhibit_expansion __P((char *, int)); #endif @@ -209,7 +213,7 @@ bash_history_inhibit_expansion (string, i) char *string; int i; { - int t; + int t, si; char hx[2]; hx[0] = history_expansion_char; @@ -232,9 +236,20 @@ bash_history_inhibit_expansion (string, i) return (1); #endif + si = 0; + /* If we're supposed to be in single-quoted string, skip over the + single-quoted part and then look at what's left. */ + if (history_quoting_state == '\'') + { + si = skip_to_delim (string, 0, "'", SD_NOJMP|SD_HISTEXP); + if (string[si] == 0 || si >= i) + return (1); + si++; + } + /* Make sure the history expansion should not be skipped by quoting or command/process substitution. */ - else if ((t = skip_to_histexp (string, 0, hx, SD_NOJMP|SD_HISTEXP)) > 0) + if ((t = skip_to_histexp (string, si, hx, SD_NOJMP|SD_HISTEXP)) > 0) { /* Skip instances of history expansion appearing on the line before this one. */ @@ -267,8 +282,8 @@ bash_history_reinit (interact) int interact; { #if defined (BANG_HISTORY) - history_expansion = interact != 0; - history_expansion_inhibited = 1; /* XXX */ + history_expansion = (interact == 0) ? histexp_flag : HISTEXPAND_DEFAULT; + history_expansion_inhibited = (interact == 0) ? 1 - histexp_flag : 0; /* changed in bash_history_enable() */ history_inhibit_expansion_function = bash_history_inhibit_expansion; #endif remember_on_history = enable_history_list; @@ -305,7 +320,7 @@ load_history () Note that the history file is automatically truncated to the size of HISTSIZE if the user does not explicitly set the size differently. */ - set_if_not ("HISTSIZE", "500"); + set_if_not ("HISTSIZE", HISTSIZE_DEFAULT); sv_histsize ("HISTSIZE"); set_if_not ("HISTFILESIZE", get_string_value ("HISTSIZE")); @@ -350,6 +365,21 @@ bash_delete_histent (i) return 1; } +int +bash_delete_history_range (first, last) + int first, last; +{ + register int i; + HIST_ENTRY **discard_list; + + discard_list = remove_history_range (first, last); + for (i = 0; discard_list && discard_list[i]; i++) + free_history_entry (discard_list[i]); + history_lines_this_session -= i; + + return 1; +} + int bash_delete_last_history () { @@ -530,7 +560,15 @@ pre_process_line (line, print_changes, addit) add that line to the history if ADDIT is non-zero. */ if (!history_expansion_inhibited && history_expansion && history_expansion_p (line)) { + /* If we are expanding the second or later line of a multi-line + command, decrease history_length so references to history expansions + in these lines refer to the previous history entry and not the + current command. */ + if (history_length > 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1) + history_length--; expanded = history_expand (line, &history_value); + if (history_length >= 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1) + history_length++; if (expanded) { @@ -597,16 +635,24 @@ pre_process_line (line, print_changes, addit) } /* Return 1 if the first non-whitespace character in LINE is a `#', indicating - * that the line is a shell comment. */ + that the line is a shell comment. Return 2 if there is a comment after the + first non-whitespace character. Return 0 if the line does not contain a + comment. */ static int shell_comment (line) char *line; { char *p; + int n; + if (line == 0) + return 0; for (p = line; p && *p && whitespace (*p); p++) ; - return (p && *p == '#'); + if (p && *p == '#') + return 1; + n = skip_to_delim (line, p - line, "#", SD_NOJMP|SD_GLOB|SD_EXTGLOB|SD_COMPLETE); + return (line[n] == '#') ? 2 : 0; } #ifdef INCLUDE_UNUSED @@ -700,7 +746,10 @@ void maybe_add_history (line) char *line; { + int is_comment; + hist_last_line_added = 0; + is_comment = shell_comment (line); /* Don't use the value of history_control to affect the second and subsequent lines of a multi-line command (old code did @@ -708,13 +757,15 @@ maybe_add_history (line) if (current_command_line_count > 1) { if (current_command_first_line_saved && - ((parser_state & PST_HEREDOC) || literal_history || dstack.delimiter_depth != 0 || shell_comment (line) == 0)) + ((parser_state & PST_HEREDOC) || literal_history || dstack.delimiter_depth != 0 || is_comment != 1)) bash_add_history (line); + current_command_line_comment = is_comment ? current_command_line_count : -2; return; } /* This is the first line of a (possible multi-line) command. Note whether or not we should save the first line and remember it. */ + current_command_line_comment = is_comment ? current_command_line_count : -2; current_command_first_line_saved = check_add_history (line, 0); } @@ -748,12 +799,16 @@ check_add_history (line, force) #if defined (SYSLOG_HISTORY) #define SYSLOG_MAXLEN 600 -extern char *shell_name; - #ifndef OPENLOG_OPTS #define OPENLOG_OPTS 0 #endif +#if defined (SYSLOG_SHOPT) +int syslog_history = SYSLOG_SHOPT; +#else +int syslog_history = 1; +#endif + void bash_syslog_history (line) const char *line; @@ -803,12 +858,18 @@ bash_add_history (line) so we have to duplicate some of what that function does here. */ if ((parser_state & PST_HEREDOC) && literal_history && current_command_line_count > 2 && line[strlen (line) - 1] == '\n') chars_to_add = ""; + else if (current_command_line_count == current_command_line_comment+1) + chars_to_add = "\n"; + else if (literal_history) + chars_to_add = "\n"; else - chars_to_add = literal_history ? "\n" : history_delimiting_chars (line); + chars_to_add = history_delimiting_chars (line); using_history (); current = previous_history (); + current_command_line_comment = shell_comment (line) ? current_command_line_count : -2; + if (current) { /* If the previous line ended with an escaped newline (escaped @@ -851,7 +912,8 @@ bash_add_history (line) really_add_history (line); #if defined (SYSLOG_HISTORY) - bash_syslog_history (line); + if (syslog_history) + bash_syslog_history (line); #endif using_history (); diff --git a/bashhist.h b/bashhist.h index c44e7c607..90ecec9e9 100644 --- a/bashhist.h +++ b/bashhist.h @@ -30,6 +30,15 @@ #define HC_IGNBOTH (HC_IGNSPACE|HC_IGNDUPS) +#if defined (STRICT_POSIX) +# undef HISTEXPAND_DEFAULT +# define HISTEXPAND_DEFAULT 0 +#else +# if !defined (HISTEXPAND_DEFAULT) +# define HISTEXPAND_DEFAULT 1 +# endif /* !HISTEXPAND_DEFAULT */ +#endif + extern int remember_on_history; extern int enable_history_list; /* value for `set -o history' */ extern int literal_history; /* controlled by `shopt lithist' */ @@ -40,11 +49,19 @@ extern int history_expansion; extern int history_control; extern int command_oriented_history; extern int current_command_first_line_saved; +extern int current_command_first_line_comment; extern int hist_last_line_added; extern int hist_last_line_pushed; +extern int dont_save_function_defs; + +# if defined (READLINE) +extern int hist_verify; +# endif + # if defined (BANG_HISTORY) extern int history_expansion_inhibited; +extern int double_quotes_inhibit_history_expansion; # endif /* BANG_HISTORY */ extern void bash_initialize_history __P((void)); @@ -53,6 +70,7 @@ extern void bash_history_disable __P((void)); extern void bash_history_enable __P((void)); extern void bash_clear_history __P((void)); extern int bash_delete_histent __P((int)); +extern int bash_delete_history_range __P((int, int)); extern int bash_delete_last_history __P((void)); extern void load_history __P((void)); extern void save_history __P((void)); diff --git a/bashintl.h b/bashintl.h index 7e6b83fc0..dd3268331 100644 --- a/bashintl.h +++ b/bashintl.h @@ -47,4 +47,8 @@ # define setlocale(cat, loc) #endif +#if !defined (HAVE_LOCALE_H) || !defined (HAVE_LOCALECONV) +# define locale_decpoint() '.' +#endif + #endif /* !_BASHINTL_H_ */ diff --git a/bashjmp.h b/bashjmp.h index 79152fe52..8ed1ac472 100644 --- a/bashjmp.h +++ b/bashjmp.h @@ -26,6 +26,7 @@ extern procenv_t top_level; extern procenv_t subshell_top_level; extern procenv_t return_catch; /* used by `return' builtin */ +extern procenv_t wait_intr_buf; extern int no_longjmp_on_fatal_error; diff --git a/bashline.c b/bashline.c index 02758448b..2846aabf7 100644 --- a/bashline.c +++ b/bashline.c @@ -1,6 +1,6 @@ /* bashline.c -- Bash's interface to the readline library. */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -46,6 +46,7 @@ #include "shell.h" #include "input.h" +#include "parser.h" #include "builtins.h" #include "bashhist.h" #include "bashline.h" @@ -65,6 +66,7 @@ #include #include #include +#include #include @@ -200,19 +202,8 @@ static char *prog_complete_return __P((const char *, int)); static char **prog_complete_matches; #endif -/* Variables used here but defined in other files. */ -#if defined (BANG_HISTORY) -extern int hist_verify; -#endif - -extern int current_command_line_count, saved_command_line_count; -extern int last_command_exit_value; -extern int array_needs_making; -extern int posixly_correct, no_symbolic_links; -extern int sigalrm_seen; -extern char *current_prompt_string, *ps1_prompt; +extern int no_symbolic_links; extern STRING_INT_ALIST word_token_alist[]; -extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; /* SPECIFIC_COMPLETION_FUNCTIONS specifies that we have individual completion functions which indicate what type of completion should be @@ -919,9 +910,9 @@ operate_and_get_next (count, c) rl_newline (1, c); /* Find the current line, and find the next line to use. */ - where = where_history (); + where = rl_explicit_arg ? count : where_history (); - if (HISTORY_FULL () || (where >= history_length - 1)) + if (HISTORY_FULL () || (where >= history_length - 1) || rl_explicit_arg) saved_history_line_to_use = where; else saved_history_line_to_use = where + 1; @@ -969,8 +960,11 @@ edit_and_execute_command (count, c, editing_mode, edit_command) /* This breaks down when using command-oriented history and are not finished with the command, so we should not ignore the last command */ using_history (); - current_command_line_count++; /* for rl_newline above */ - bash_add_history (rl_line_buffer); + if (rl_line_buffer[0]) + { + current_command_line_count++; /* for rl_newline above */ + bash_add_history (rl_line_buffer); + } current_command_line_count = 0; /* for dummy history entry */ bash_add_history (""); history_lines_this_session++; @@ -999,6 +993,11 @@ edit_and_execute_command (count, c, editing_mode, edit_command) rl_done = 0; rl_readline_state = rrs; +#if defined (VI_MODE) + if (editing_mode == VI_EDITING_MODE) + rl_vi_insertion_mode (1, c); +#endif + rl_forced_update_display (); return r; @@ -1056,7 +1055,7 @@ bash_forward_shellword (count, key) int count, key; { size_t slen; - int sindex, c, p; + int c, p; DECLARE_MBSTATE; if (count < 0) @@ -1165,15 +1164,18 @@ bash_backward_shellword (count, key) int count, key; { size_t slen; - int sindex, c, p; + int c, p; DECLARE_MBSTATE; - + if (count < 0) return (bash_forward_shellword (-count, key)); p = rl_point; slen = rl_end; - + + if (p == rl_end && p > 0) + p--; + while (count) { if (p == 0) @@ -1186,9 +1188,9 @@ bash_backward_shellword (count, key) while (p > 0) { c = rl_line_buffer[p]; - if (WORDDELIM (c) && char_is_quoted (rl_line_buffer, p) == 0) - BACKUP_CHAR (rl_line_buffer, slen, p); - break; + if (WORDDELIM (c) == 0 || char_is_quoted (rl_line_buffer, p)) + break; + BACKUP_CHAR (rl_line_buffer, slen, p); } if (p == 0) @@ -1420,10 +1422,11 @@ attempt_shell_completion (text, start, end) const char *text; int start, end; { - int in_command_position, ti, saveti, qc, dflags; + int in_command_position, ti, qc, dflags; char **matches, *command_separator_chars; #if defined (PROGRAMMABLE_COMPLETION) int have_progcomps, was_assignment; + COMPSPEC *iw_compspec; #endif command_separator_chars = COMMAND_SEPARATORS; @@ -1442,7 +1445,7 @@ attempt_shell_completion (text, start, end) appears after a character that separates commands. It cannot be a command word if we aren't at the top-level prompt. */ ti = start - 1; - saveti = qc = -1; + qc = -1; while ((ti > -1) && (whitespace (rl_line_buffer[ti]))) ti--; @@ -1453,7 +1456,7 @@ attempt_shell_completion (text, start, end) if (ti >= 0 && (rl_line_buffer[ti] == '"' || rl_line_buffer[ti] == '\'')) { qc = rl_line_buffer[ti]; - saveti = ti--; + ti--; while (ti > -1 && (whitespace (rl_line_buffer[ti]))) ti--; } @@ -1508,7 +1511,9 @@ attempt_shell_completion (text, start, end) #if defined (PROGRAMMABLE_COMPLETION) /* Attempt programmable completion. */ have_progcomps = prog_completion_enabled && (progcomp_size () > 0); - if (matches == 0 && (in_command_position == 0 || text[0] == '\0') && + iw_compspec = progcomp_search (INITIALWORD); + if (matches == 0 && + (in_command_position == 0 || text[0] == '\0' || (in_command_position && iw_compspec)) && current_prompt_string == ps1_prompt) { int s, e, s1, e1, os, foundcs; @@ -1562,7 +1567,7 @@ attempt_shell_completion (text, start, end) else if (start == end && start == s1 && e != 0 && e1 > end) /* beginning of command name, leading whitespace */ foundcs = 0; else if (e == 0 && e == s && text[0] == '\0' && have_progcomps) /* beginning of empty line */ - prog_complete_matches = programmable_completions ("_EmptycmD_", text, s, e, &foundcs); + prog_complete_matches = programmable_completions (EMPTYCMD, text, s, e, &foundcs); else if (start == end && text[0] == '\0' && s1 > start && whitespace (rl_line_buffer[start])) foundcs = 0; /* whitespace before command name */ else if (e > s && was_assignment == 0 && e1 == end && rl_line_buffer[e] == 0 && whitespace (rl_line_buffer[e-1]) == 0) @@ -1576,7 +1581,10 @@ attempt_shell_completion (text, start, end) { prog_complete_matches = programmable_completions (n, text, s, e, &foundcs); /* command completion if programmable completion fails */ - in_command_position = s == start && STREQ (n, text); /* XXX */ + /* If we have a completion for the initial word, we can prefer that */ + in_command_position = s == start && (iw_compspec || STREQ (n, text)); /* XXX */ + if (iw_compspec && in_command_position) + foundcs = 0; } /* empty command name following command separator */ else if (s >= e && n[0] == '\0' && text[0] == '\0' && start > 0 && @@ -1587,8 +1595,8 @@ attempt_shell_completion (text, start, end) } else if (s >= e && n[0] == '\0' && text[0] == '\0' && start > 0) { - foundcs = 0; /* empty command name following assignments */ - in_command_position = was_assignment; + foundcs = 0; /* empty command name following optional assignments */ + in_command_position += was_assignment; } else if (s == start && e == end && STREQ (n, text) && start > 0) { @@ -1597,6 +1605,12 @@ attempt_shell_completion (text, start, end) } else foundcs = 0; + + /* If we have defined a compspec for the initial (command) word, call + it and process the results like any other programmable completion. */ + if (in_command_position && have_progcomps && foundcs == 0 && iw_compspec) + prog_complete_matches = programmable_completions (INITIALWORD, text, s, e, &foundcs); + FREE (n); /* XXX - if we found a COMPSPEC for the command, just return whatever the programmable completion code returns, and disable the default @@ -1639,7 +1653,7 @@ bash_default_completion (text, start, end, qc, compflags) matches = (char **)NULL; /* New posix-style command substitution or variable name? */ - if (!matches && *text == '$') + if (*text == '$') { if (qc != '\'' && text[1] == '(') /* ) */ matches = rl_completion_matches (text, command_subst_completion_function); @@ -1803,7 +1817,7 @@ command_word_completion_function (hint_text, state) static char *dequoted_hint = (char *)NULL; static char *directory_part = (char *)NULL; static char **glob_matches = (char **)NULL; - static int path_index, hint_len, dequoted_len, istate, igncase; + static int path_index, hint_len, istate, igncase; static int mapping_over, local_index, searching_path, hint_is_dir; static int old_glob_ignore_case, globpat; static SHELL_VAR **varlist = (SHELL_VAR **)NULL; @@ -1881,7 +1895,7 @@ command_word_completion_function (hint_text, state) free (hint); hint = dequoted_hint; } - dequoted_len = hint_len = strlen (hint); + hint_len = strlen (hint); if (filename_hint) free (filename_hint); @@ -1909,13 +1923,10 @@ command_word_completion_function (hint_text, state) } dequoted_hint = hint = savestring (hint_text); - dequoted_len = hint_len = strlen (hint); + hint_len = strlen (hint); if (rl_completion_found_quote && rl_completion_quote_character == 0) - { - dequoted_hint = bash_dequote_filename (hint, 0); - dequoted_len = strlen (dequoted_hint); - } + dequoted_hint = bash_dequote_filename (hint, 0); path = get_string_value ("PATH"); path_index = dot_in_path = 0; @@ -1949,7 +1960,9 @@ command_word_completion_function (hint_text, state) alias = alias_list[local_index++]->name; - if (STREQN (alias, hint, hint_len)) + if (igncase == 0 && (STREQN (alias, hint, hint_len))) + return (savestring (alias)); + else if (igncase && strncasecmp (alias, hint, hint_len) == 0) return (savestring (alias)); } #endif /* ALIAS */ @@ -1978,7 +1991,10 @@ command_word_completion_function (hint_text, state) varname = varlist[local_index++]->name; - if (STREQN (varname, hint, hint_len)) + /* Honor completion-ignore-case for shell function names. */ + if (igncase == 0 && (STREQN (varname, hint, hint_len))) + return (savestring (varname)); + else if (igncase && strncasecmp (varname, hint, hint_len) == 0) return (savestring (varname)); } local_index = 0; @@ -2304,7 +2320,6 @@ variable_completion_function (text, state) static char **varlist = (char **)NULL; static int varlist_index; static char *varname = (char *)NULL; - static int namelen; static int first_char, first_char_loc; if (!state) @@ -2323,7 +2338,6 @@ variable_completion_function (text, state) varname = savestring (text + first_char_loc); - namelen = strlen (varname); if (varlist) strvec_dispose (varlist); @@ -2411,7 +2425,7 @@ bash_servicename_completion_function (text, state) #else static char *sname = (char *)NULL; static struct servent *srvent; - static int snamelen, firstc; + static int snamelen; char *value; char **alist, *aentry; int afound; @@ -2419,7 +2433,6 @@ bash_servicename_completion_function (text, state) if (state == 0) { FREE (sname); - firstc = *text; sname = savestring (text); snamelen = strlen (sname); @@ -2552,7 +2565,7 @@ static void maybe_make_readline_line (new_line) char *new_line; { - if (strcmp (new_line, rl_line_buffer) != 0) + if (new_line && strcmp (new_line, rl_line_buffer) != 0) { rl_point = rl_end; @@ -2704,6 +2717,7 @@ shell_expand_line (count, ignore) { char *new_line; WORD_LIST *expanded_string; + WORD_DESC *w; new_line = 0; #if defined (BANG_HISTORY) @@ -2733,9 +2747,19 @@ shell_expand_line (count, ignore) /* If there is variable expansion to perform, do that as a separate operation to be undone. */ + +#if 1 + w = alloc_word_desc (); + w->word = savestring (rl_line_buffer); + w->flags = rl_explicit_arg ? (W_NOPROCSUB|W_NOCOMSUB) : 0; + expanded_string = expand_word (w, rl_explicit_arg ? Q_HERE_DOCUMENT : 0); + dispose_word (w); +#else new_line = savestring (rl_line_buffer); expanded_string = expand_string (new_line, 0); FREE (new_line); +#endif + if (expanded_string == 0) { new_line = (char *)xmalloc (1); @@ -2967,7 +2991,7 @@ restore_tilde (val, directory_part) char *val, *directory_part; { int l, vl, dl2, xl; - char *dh2, *expdir, *ret; + char *dh2, *expdir, *ret, *v; vl = strlen (val); @@ -2979,6 +3003,22 @@ restore_tilde (val, directory_part) expdir = bash_tilde_expand (directory_part, 0); xl = strlen (expdir); + if (*directory_part == '~' && STREQ (directory_part, expdir)) + { + /* tilde expansion failed, so what should we return? we use what the + user typed. */ + v = mbschr (val, '/'); + vl = STRLEN (v); + ret = (char *)xmalloc (xl + vl + 2); + strcpy (ret, directory_part); + if (v && *v) + strcpy (ret + xl, v); + + free (dh2); + free (expdir); + + return ret; + } free (expdir); /* @@ -2989,6 +3029,11 @@ restore_tilde (val, directory_part) l = length of remainder after tilde-prefix */ l = (vl - xl) + 1; + if (l <= 0) + { + free (dh2); + return (savestring (val)); /* XXX - just punt */ + } ret = (char *)xmalloc (dl2 + 2 + l); strcpy (ret, dh2); @@ -3138,7 +3183,6 @@ bash_filename_stat_hook (dirname) int should_expand_dirname, return_value; int global_nounset; WORD_LIST *wl; - struct stat sb; local_dirname = *dirname; should_expand_dirname = return_value = 0; @@ -3216,10 +3260,8 @@ bash_directory_completion_hook (dirname) char **dirname; { char *local_dirname, *new_dirname, *t; - int return_value, should_expand_dirname, nextch, closer, changed; - size_t local_dirlen; + int return_value, should_expand_dirname, nextch, closer; WORD_LIST *wl; - struct stat sb; return_value = should_expand_dirname = nextch = closer = 0; local_dirname = *dirname; @@ -3236,6 +3278,17 @@ bash_directory_completion_hook (dirname) closer = '}'; else nextch = 0; + + if (closer) + { + int p; + char delims[2]; + + delims[0] = closer; delims[1] = 0; + p = skip_to_delim (t, 1, delims, SD_NOJMP|SD_COMPLETE); + if (t[p] != closer) + should_expand_dirname = 0; + } } else if (local_dirname[0] == '~') should_expand_dirname = '~'; @@ -3450,6 +3503,7 @@ history_completion_generator (hint_text, state) while (history_completion_array && history_completion_array[local_index]) { + /* XXX - should this use completion-ignore-case? */ if (strncmp (text, history_completion_array[local_index++], len) == 0) return (savestring (history_completion_array[local_index - 1])); } @@ -3870,7 +3924,7 @@ bash_dequote_filename (text, quote_char) *r++ = *p; /* Backslashes are preserved within double quotes unless the character is one that is defined to be escaped */ - else if (quoted == '"' && ((sh_syntaxtab[p[1]] & CBSDQUOTE) == 0)) + else if (quoted == '"' && ((sh_syntaxtab[(unsigned char)p[1]] & CBSDQUOTE) == 0)) *r++ = *p; *r++ = *++p; @@ -4071,21 +4125,18 @@ bash_execute_unix_command (count, key) int count; /* ignored */ int key; { - Keymap ckmap; /* current keymap */ - Keymap xkmap; /* unix command executing keymap */ - rl_command_func_t *func; int type; register int i, r; intmax_t mi; sh_parser_state_t ps; - char *cmd, *value, *l, *l1, *ce; + char *cmd, *value, *ce, old_ch; SHELL_VAR *v; char ibuf[INT_STRLEN_BOUND(int) + 1]; /* First, we need to find the right command to execute. This is tricky, because we might have already indirected into another keymap, so we have to walk cmd_xmap using the entire key sequence. */ - cmd = (char *)rl_function_of_keyseq (rl_executing_keyseq, cmd_xmap, &type); + cmd = (char *)rl_function_of_keyseq_len (rl_executing_keyseq, rl_key_sequence_length, cmd_xmap, &type); if (cmd == 0 || type != ISMACR) { @@ -4112,25 +4163,37 @@ bash_execute_unix_command (count, key) v = bind_variable ("READLINE_LINE", rl_line_buffer, 0); if (v) VSETATTR (v, att_exported); - l = v ? value_cell (v) : 0; - value = inttostr (rl_point, ibuf, sizeof (ibuf)); - v = bind_int_variable ("READLINE_POINT", value); + i = rl_point; +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1) + { + old_ch = rl_line_buffer[rl_point]; + rl_line_buffer[rl_point] = '\0'; + i = MB_STRLEN (rl_line_buffer); + rl_line_buffer[rl_point] = old_ch; + } +#endif + value = inttostr (i, ibuf, sizeof (ibuf)); + v = bind_int_variable ("READLINE_POINT", value, 0); if (v) VSETATTR (v, att_exported); array_needs_making = 1; save_parser_state (&ps); - r = parse_and_execute (cmd, "bash_execute_unix_command", SEVAL_NOHIST|SEVAL_NOFREE); + r = parse_and_execute (savestring (cmd), "bash_execute_unix_command", SEVAL_NOHIST|SEVAL_NOFREE); restore_parser_state (&ps); v = find_variable ("READLINE_LINE"); - l1 = v ? value_cell (v) : 0; - if (l1 != l) - maybe_make_readline_line (value_cell (v)); + maybe_make_readline_line (v ? value_cell (v) : 0); + v = find_variable ("READLINE_POINT"); if (v && legal_number (value_cell (v), &mi)) { i = mi; +#if defined (HANDLE_MULTIBYTE) + if (i > 0 && MB_CUR_MAX > 1) + i = _rl_find_next_mbchar (rl_line_buffer, 0, i, 0); +#endif if (i != rl_point) { rl_point = i; diff --git a/bashline.h b/bashline.h index d52dfdfa9..2571e11fe 100644 --- a/bashline.h +++ b/bashline.h @@ -24,6 +24,16 @@ #include "stdc.h" extern int bash_readline_initialized; +extern int hostname_list_initialized; + +/* these are controlled via shopt */ +extern int perform_hostname_completion; +extern int no_empty_command_completion; +extern int force_fignore; +extern int dircomplete_spelling; +extern int dircomplete_expand; +extern int dircomplete_expand_relpath; +extern int complete_fullquote; extern void posix_readline_initialize __P((int)); extern void reset_completer_word_break_chars __P((void)); diff --git a/braces.c b/braces.c index 7f31dd5e7..485de369f 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. @@ -61,7 +61,9 @@ extern int errno; extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3))); +#if defined (NOTDEF) extern int last_command_exit_value; +#endif /* Basic idea: @@ -383,7 +385,7 @@ mkseq (start, end, incr, type, width) int type, width; { intmax_t n, prevn; - int i, j, nelem; + int i, nelem; char **result, *t; if (incr == 0) @@ -418,13 +420,13 @@ mkseq (start, end, incr, type, width) /* Instead of a simple nelem = prevn + 1, something like: nelem = (prevn / imaxabs(incr)) + 1; would work */ - nelem = (prevn / sh_imaxabs(incr)) + 1; - if (nelem > INT_MAX - 2) /* Don't overflow int */ + if ((prevn / sh_imaxabs (incr)) > INT_MAX - 3) /* check int overflow */ return ((char **)NULL); + nelem = (prevn / sh_imaxabs(incr)) + 1; result = strvec_mcreate (nelem + 1); if (result == 0) { - internal_error (_("brace expansion: failed to allocate memory for %d elements"), nelem); + internal_error (_("brace expansion: failed to allocate memory for %u elements"), (unsigned int)nelem); return ((char **)NULL); } @@ -436,6 +438,7 @@ mkseq (start, end, incr, type, width) #if defined (SHELL) if (ISINTERRUPT) { + result[i] = (char *)NULL; strvec_dispose (result); result = (char **)NULL; } @@ -494,7 +497,7 @@ expand_seqterm (text, tlen) size_t tlen; { char *t, *lhs, *rhs; - int i, lhs_t, rhs_t, lhs_l, rhs_l, width; + int lhs_t, rhs_t, lhs_l, rhs_l, width; intmax_t lhs_v, rhs_v, incr; intmax_t tl, tr; char **result, *ep, *oep; @@ -743,20 +746,6 @@ comsub: return (c); } -/* Return 1 if ARR has any non-empty-string members. Used to short-circuit - in array_concat() below. */ -static int -degenerate_array (arr) - char **arr; -{ - register int i; - - for (i = 0; arr[i]; i++) - if (arr[i][0] != '\0') - return 0; - return 1; -} - /* Return a new array of strings which is the result of appending each string in ARR2 to each string in ARR1. The resultant array is len (arr1) * len (arr2) long. For convenience, ARR1 (and its contents) @@ -790,7 +779,9 @@ array_concat (arr1, arr2) len1 = strvec_len (arr1); len2 = strvec_len (arr2); - result = (char **)xmalloc ((1 + (len1 * len2)) * sizeof (char *)); + result = (char **)malloc ((1 + (len1 * len2)) * sizeof (char *)); + if (result == 0) + return (result); len = 0; for (i = 0; i < len1; i++) diff --git a/builtins.h b/builtins.h index 0cfea189d..dac95fdba 100644 --- a/builtins.h +++ b/builtins.h @@ -18,6 +18,9 @@ along with Bash. If not, see . */ +#ifndef BUILTINS_H +#define BUILTINS_H + #include "config.h" #if defined (HAVE_UNISTD_H) @@ -60,3 +63,5 @@ extern int num_shell_builtins; /* Number of shell builtins. */ extern struct builtin static_shell_builtins[]; extern struct builtin *shell_builtins; extern struct builtin *current_builtin; + +#endif /* BUILTINS_H */ diff --git a/builtins/Makefile.in b/builtins/Makefile.in index bbb96c379..388ca4eb0 100644 --- a/builtins/Makefile.in +++ b/builtins/Makefile.in @@ -1,6 +1,6 @@ # This Makefile for building libbuiltins.a is in -*- text -*- for Emacs. # -# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -94,7 +94,7 @@ INCLUDES = -I. -I.. @RL_INCLUDE@ -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib -I$ BASE_CCFLAGS = ${PROFILE_FLAGS} $(DEFS) $(LOCAL_DEFS) $(SYSTEM_FLAGS) \ ${INCLUDES} $(LOCAL_CFLAGS) -CCFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS) +CCFLAGS = ${ADDON_CFLAGS} $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS) CCFLAGS_FOR_BUILD = $(BASE_CCFLAGS) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) @@ -331,7 +331,7 @@ bashgetopt.o: ../pathnames.h $(topdir)/externs.h $(srcdir)/common.h bashgetopt.o: $(BASHINCDIR)/chartypes.h common.o: $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h common.o: $(topdir)/shell.h $(topdir)/syntax.h ../config.h $(topdir)/bashjmp.h $(BASHINCDIR)/posixjmp.h -common.o: $(topdir)/sig.h $(topdir)/command.h +common.o: $(topdir)/sig.h $(topdir)/command.h $(topdir)/parser.h common.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/stdc.h $(BASHINCDIR)/memalloc.h common.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/input.h common.o: $(topdir)/siglist.h $(topdir)/bashhist.h $(topdir)/quit.h @@ -347,7 +347,7 @@ evalfile.o: $(topdir)/command.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir evalfile.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/quit.h $(BASHINCDIR)/maxpath.h evalfile.o: $(topdir)/unwind_prot.h $(topdir)/dispose_cmd.h evalfile.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/sig.h -evalfile.o: ../pathnames.h $(topdir)/externs.h +evalfile.o: ../pathnames.h $(topdir)/externs.h $(topdir)/parser.h evalfile.o: $(topdir)/jobs.h $(topdir)/builtins.h $(topdir)/flags.h evalfile.o: $(topdir)/input.h $(topdir)/execute_cmd.h evalfile.o: $(topdir)/bashhist.h $(srcdir)/common.h @@ -386,19 +386,18 @@ bind.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/ bind.o: $(topdir)/subst.h $(topdir)/externs.h $(srcdir)/bashgetopt.h bind.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h $(topdir)/bashline.h bind.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -bind.o: ../pathnames.h break.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h break.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h break.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h break.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h break.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -break.o: ../pathnames.h +break.o: ../pathnames.h $(topdir)/execute_cmd.h builtin.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h builtin.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/externs.h builtin.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h $(topdir)/sig.h builtin.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h builtin.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -builtin.o: $(srcdir)/bashgetopt.h ../pathnames.h +builtin.o: $(srcdir)/bashgetopt.h ../pathnames.h $(topdir)/execute_cmd.h caller.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h caller.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/quit.h $(topdir)/dispose_cmd.h caller.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h @@ -457,10 +456,11 @@ exit.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h exit.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h exit.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/jobs.h exit.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +exit.o: $(topdir)/execute_cmd.h exit.o: $(BASHINCDIR)/maxpath.h ./builtext.h ../pathnames.h fc.o: $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h fc.o: $(topdir)/builtins.h $(topdir)/command.h $(srcdir)/bashgetopt.h -fc.o: $(topdir)/bashhist.h +fc.o: $(topdir)/bashhist.h $(topdir)/parser.h fc.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h fc.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h fc.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h @@ -474,30 +474,34 @@ fg_bg.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h fg_bg.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h fg_bg.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h fg_bg.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +fg_bg.o: $(topdir)/execute_cmd.h fg_bg.o: $(topdir)/jobs.h ../pathnames.h getopts.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h getopts.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h getopts.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h getopts.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h getopts.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +getopts.o: $(topdir)/execute_cmd.h getopts.o: ../pathnames.h hash.o: $(topdir)/builtins.h $(topdir)/command.h $(topdir)/quit.h hash.o: $(topdir)/findcmd.h $(topdir)/hashlib.h $(topdir)/sig.h hash.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h hash.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -hash.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +hash.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h +hash.o: $(topdir)/conftypes.h $(topdir)/execute_cmd.h hash.o: $(srcdir)/common.h $(BASHINCDIR)/maxpath.h ../pathnames.h help.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h help.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h help.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h help.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h -help.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +help.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h +help.o: $(topdir)/conftypes.h $(topdir)/execute_cmd.h help.o: ${srcdir}/common.h $(topdir)/sig.h ../pathnames.h history.o: $(topdir)/bashtypes.h history.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h history.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h history.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h -history.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h +history.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h $(topdir)/parser.h history.o: ${BASHINCDIR}/filecntl.h $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h history.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/bashhist.h $(BASHINCDIR)/maxpath.h history.o: ../pathnames.h @@ -552,20 +556,22 @@ return.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h return.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h return.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h return.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h -return.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +return.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h +return.o: $(topdir)/conftypes.h $(topdir)/execute_cmd.h return.o: ../pathnames.h set.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h set.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/externs.h set.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h set.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h set.o: $(BASHINCDIR)/maxpath.h $(topdir)/error.h $(topdir)/sig.h -set.o: $(topdir)/arrayfunc.h ../pathnames.h +set.o: $(topdir)/arrayfunc.h ../pathnames.h $(topdir)/parser.h setattr.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h setattr.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h setattr.o: $(topdir)/quit.h $(srcdir)/common.h $(srcdir)/bashgetopt.h setattr.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h setattr.o: $(topdir)/externs.h $(topdir)/flags.h $(topdir)/sig.h -setattr.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +setattr.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h +setattr.o: $(topdir)/conftypes.h $(topdir)/execute_cmd.h setattr.o: $(topdir)/arrayfunc.h ../pathnames.h shift.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h shift.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h @@ -586,6 +592,7 @@ source.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir source.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h source.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h source.o: $(srcdir)/bashgetopt.h $(topdir)/flags.h $(topdir)/trap.h +source.o: $(topdir)/execute_cmd.h source.o: ../pathnames.h suspend.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h suspend.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h @@ -598,7 +605,7 @@ test.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h test.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h test.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h test.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -test.o: $(topdir)/test.h ../pathnames.h +test.o: $(topdir)/execute_cmd.h $(topdir)/test.h ../pathnames.h times.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h times.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h times.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h @@ -615,6 +622,7 @@ type.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h type.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h type.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h $(topdir)/sig.h type.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h +type.o: $(topdir)/execute_cmd.h $(topdir)/parser.h type.o: $(topdir)/externs.h $(topdir)/hashcmd.h ../pathnames.h type.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h ulimit.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h @@ -634,7 +642,7 @@ wait.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h wait.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h wait.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h wait.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -wait.o: $(topdir)/jobs.h $(topdir)/sig.h +wait.o: $(topdir)/jobs.h $(topdir)/sig.h $(topdir)/execute_cmd.h wait.o: $(BASHINCDIR)/chartypes.h ../pathnames.h complete.o: ../config.h ../pathnames.h diff --git a/builtins/alias.def b/builtins/alias.def index 508002475..bf484f335 100644 --- a/builtins/alias.def +++ b/builtins/alias.def @@ -65,8 +65,6 @@ $END static void print_alias __P((alias_t *, int)); -extern int posixly_correct; - /* Hack the alias command in a Korn shell way. */ int alias_builtin (list) diff --git a/builtins/bind.def b/builtins/bind.def index 649d73f6f..2b18873c2 100644 --- a/builtins/bind.def +++ b/builtins/bind.def @@ -88,8 +88,7 @@ extern int errno; static int query_bindings __P((char *)); static int unbind_command __P((char *)); - -extern int no_line_editing; +static int unbind_keyseq __P((char *)); #define BIND_RETURN(x) do { return_code = x; goto bind_exit; } while (0) @@ -265,11 +264,8 @@ bind_builtin (list) if ((flags & RFLAG) && remove_seq) { - if (rl_bind_keyseq (remove_seq, (rl_command_func_t *)NULL) != 0) - { - builtin_error (_("`%s': cannot unbind"), remove_seq); - BIND_RETURN (EXECUTION_FAILURE); - } + opt = unbind_keyseq (remove_seq); + BIND_RETURN (opt); } if (flags & XFLAG) @@ -342,4 +338,38 @@ unbind_command (name) rl_unbind_function_in_map (function, rl_get_keymap ()); return EXECUTION_SUCCESS; } + +static int +unbind_keyseq (seq) + char *seq; +{ + char *kseq; + int kslen; + + kseq = (char *)xmalloc ((2 * strlen (seq)) + 1); + if (rl_translate_keyseq (seq, kseq, &kslen)) + { + free (kseq); + builtin_error (_("`%s': cannot unbind"), seq); + return EXECUTION_FAILURE; + } + if (rl_function_of_keyseq (kseq, (Keymap)0, (int *)0) == 0) + { + free (kseq); + return (EXECUTION_SUCCESS); + } + + /* I wish this didn't have to translate the key sequence again, but readline + doesn't have a binding function that takes a translated key sequence as + an argument. */ + if (rl_bind_keyseq (seq, (rl_command_func_t *)NULL) != 0) + { + free (kseq); + builtin_error (_("`%s': cannot unbind"), seq); + return (EXECUTION_FAILURE); + } + + free (kseq); + return (EXECUTION_SUCCESS); +} #endif /* READLINE */ diff --git a/builtins/break.def b/builtins/break.def index bdc1182a8..876d0635d 100644 --- a/builtins/break.def +++ b/builtins/break.def @@ -43,11 +43,9 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../execute_cmd.h" #include "common.h" -extern char *this_command_name; -extern int posixly_correct; - static int check_loop_level __P((void)); /* The depth of while's and until's. */ diff --git a/builtins/builtin.def b/builtins/builtin.def index 3e765e410..74060ee09 100644 --- a/builtins/builtin.def +++ b/builtins/builtin.def @@ -1,7 +1,7 @@ This file is builtin.def, from which is created builtin.c. It implements the builtin "builtin" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -31,7 +31,7 @@ as a shell function, but need to execute the builtin within the function. Exit Status: Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is -not a shell builtin.. +not a shell builtin. $END #include @@ -43,11 +43,10 @@ $END #endif #include "../shell.h" +#include "../execute_cmd.h" #include "common.h" #include "bashgetopt.h" -extern char *this_command_name; - /* Run the command mentioned in list directly, without going through the normal alias/function/builtin/filename lookup process. */ int @@ -71,7 +70,7 @@ builtin_builtin (list) function = find_shell_builtin (command); #endif /* !DISABLED_BUILTINS */ - if (!function) + if (function == 0) { sh_notbuiltin (command); return (EXECUTION_FAILURE); @@ -79,6 +78,7 @@ builtin_builtin (list) else { this_command_name = command; + this_shell_builtin = function; /* overwrite "builtin" as this builtin */ list = list->next; return ((*function) (list)); } diff --git a/builtins/cd.def b/builtins/cd.def index 421e819b2..fe75b57f1 100644 --- a/builtins/cd.def +++ b/builtins/cd.def @@ -54,8 +54,6 @@ $PRODUCES cd.c extern int errno; #endif /* !errno */ -extern int posixly_correct; -extern int array_needs_making; extern const char * const bash_getcwd_errstr; static int bindpwd __P((int)); @@ -140,7 +138,7 @@ bindpwd (no_symlinks) int no_symlinks; { char *dirname, *pwdvar; - int old_anm, r; + int old_anm, r, canon_failed; SHELL_VAR *tvar; r = sh_chkwrite (EXECUTION_SUCCESS); @@ -150,6 +148,13 @@ bindpwd (no_symlinks) : get_working_directory ("cd"); #undef tcwd + /* If canonicalization fails, reset dirname to the_current_working_directory */ + if (dirname == 0) + { + canon_failed = 1; + dirname = the_current_working_directory; + } + old_anm = array_needs_making; pwdvar = get_string_value ("PWD"); @@ -165,7 +170,7 @@ bindpwd (no_symlinks) if (setpwd (dirname) == EXECUTION_FAILURE) r = EXECUTION_FAILURE; - if (dirname == 0 && eflag) + if (canon_failed && eflag) r = EXECUTION_FAILURE; if (dirname && dirname != the_current_working_directory) @@ -547,7 +552,7 @@ change_to_directory (newdir, nolinks, xattr) int nolinks, xattr; { char *t, *tdir, *ndir; - int err, canon_failed, r, ndlen, dlen; + int err, canon_failed, r, ndlen; tdir = (char *)NULL; @@ -566,7 +571,6 @@ change_to_directory (newdir, nolinks, xattr) : sh_canonpath (t, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); ndlen = strlen (newdir); - dlen = strlen (t); /* Use the canonicalized version of NEWDIR, or, if canonicalization failed, use the non-canonical form. */ @@ -583,7 +587,11 @@ change_to_directory (newdir, nolinks, xattr) /* In POSIX mode, if we're resolving symlinks logically and sh_canonpath returns NULL (because it checks the path, it will return NULL if the resolved path doesn't exist), fail immediately. */ +#if defined (ENAMETOOLONG) if (posixly_correct && nolinks == 0 && canon_failed && (errno != ENAMETOOLONG || ndlen > PATH_MAX)) +#else + if (posixly_correct && nolinks == 0 && canon_failed && ndlen > PATH_MAX) +#endif { #if defined ENAMETOOLONG if (errno != ENOENT && errno != ENAMETOOLONG) @@ -653,8 +661,9 @@ change_to_directory (newdir, nolinks, xattr) /* We're not in physical mode (nolinks == 0), but we failed to change to the canonicalized directory name (TDIR). Try what the user passed - verbatim. If we succeed, reinitialize the_current_working_directory. */ - if (chdir (newdir) == 0) + verbatim. If we succeed, reinitialize the_current_working_directory. + POSIX requires that we just fail here, so we do in posix mode. */ + if (posixly_correct == 0 && chdir (newdir) == 0) { t = resetpwd ("cd"); if (t == 0) diff --git a/builtins/command.def b/builtins/command.def index dcb510d5b..d58c985bc 100644 --- a/builtins/command.def +++ b/builtins/command.def @@ -60,10 +60,6 @@ $END extern size_t confstr __P((int, char *, size_t)); #endif -extern int subshell_environment; - -static void restore_path __P((char *)); - /* Run the commands mentioned in LIST without paying attention to shell functions. */ int @@ -71,7 +67,6 @@ command_builtin (list) WORD_LIST *list; { int result, verbose, use_standard_path, opt; - char *old_path, *standard_path; COMMAND *command; verbose = use_standard_path = 0; @@ -144,20 +139,3 @@ command_builtin (list) return (result); } - -/* Restore the value of the $PATH variable after replacing it when - executing `command -p'. */ -static void -restore_path (var) - char *var; -{ - if (var) - { - bind_variable ("PATH", var, 0); - free (var); - } - else - unbind_variable ("PATH"); - - stupidly_hack_special_variables ("PATH"); -} diff --git a/builtins/common.c b/builtins/common.c index b100ebe1c..00be24ea0 100644 --- a/builtins/common.c +++ b/builtins/common.c @@ -1,6 +1,6 @@ /* common.c - utility functions for all builtins */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -49,6 +49,7 @@ #include "../shell.h" #include "maxpath.h" #include "../flags.h" +#include "../parser.h" #include "../jobs.h" #include "../builtins.h" #include "../input.h" @@ -67,13 +68,6 @@ extern int errno; #endif /* !errno */ -extern int indirection_level, subshell_environment; -extern int line_number; -extern int last_command_exit_value; -extern int trap_saved_exit_value; -extern int running_trap; -extern int posixly_correct; -extern char *this_command_name, *shell_name; extern const char * const bash_getcwd_errstr; /* Used by some builtins and the mainline code. */ @@ -543,7 +537,7 @@ read_octal (string) { digits++; result = (result * 8) + (*string++ - '0'); - if (result > 0777) + if (result > 07777) return -1; } @@ -684,7 +678,7 @@ get_job_spec (list) if (DIGIT (*word) && all_digits (word)) { job = atoi (word); - return (job > js.j_jobslots ? NO_JOB : job - 1); + return ((job < 0 || job > js.j_jobslots) ? NO_JOB : job - 1); } jflags = 0; @@ -782,13 +776,9 @@ display_signal_list (list, forcecols) list = list->next; continue; } -#if defined (JOB_CONTROL) /* POSIX.2 says that `kill -l signum' prints the signal name without the `SIG' prefix. */ - printf ("%s\n", (this_shell_builtin == kill_builtin) ? name + 3 : name); -#else - printf ("%s\n", name); -#endif + printf ("%s\n", (this_shell_builtin == kill_builtin && signum > 0) ? name + 3 : name); } else { diff --git a/builtins/common.h b/builtins/common.h index ed852305d..f0687640d 100644 --- a/builtins/common.h +++ b/builtins/common.h @@ -23,7 +23,7 @@ #include "stdc.h" -#define ISOPTION(s, c) (s[0] == '-' && !s[2] && s[1] == c) +#define ISOPTION(s, c) (s[0] == '-' && s[1] == c && !s[2]) #define ISHELP(s) (STREQ ((s), "--help")) #define CHECK_HELPOPT(l) \ @@ -200,10 +200,11 @@ extern WORD_LIST *get_directory_stack __P((int)); /* Functions from evalstring.c */ extern int parse_and_execute __P((char *, const char *, int)); extern int evalstring __P((char *, const char *, int)); -extern void parse_and_execute_cleanup __P((void)); +extern void parse_and_execute_cleanup __P((int)); extern int parse_string __P((char *, const char *, int, char **)); extern int should_suppress_fork __P((COMMAND *)); extern void optimize_fork __P((COMMAND *)); +extern void optimize_subshell_command __P((COMMAND *)); /* Functions from evalfile.c */ extern int maybe_execute_file __P((const char *, int)); @@ -211,4 +212,32 @@ extern int force_execute_file __P((const char *, int)); extern int source_file __P((const char *, int)); extern int fc_execute_file __P((const char *)); +/* variables from common.c */ +extern sh_builtin_func_t *this_shell_builtin; +extern sh_builtin_func_t *last_shell_builtin; + +/* variables from evalfile.c */ +extern int sourcelevel; + +/* variables from evalstring.c */ +extern int parse_and_execute_level; + +/* variables from break.def/continue.def */ +extern int breaking; +extern int continuing; +extern int loop_level; + +/* variables from read.def */ +extern int sigalrm_seen; + +/* variables from shift.def */ +extern int print_shift_error; + +/* variables from source.def */ +extern int source_searches_cwd; +extern int source_uses_path; + +/* variables from wait.def */ +extern int wait_intr_flag; + #endif /* !__COMMON_H */ diff --git a/builtins/complete.def b/builtins/complete.def index 6bdf88b47..76b3eedd8 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 initial (usually the + command) word When completion is attempted, the actions are applied in the order the -uppercase-letter options are listed above. The -D option takes -precedence over -E. +uppercase-letter options are listed above. If multiple options are supplied, +the -D option takes precedence over -E, and both take precedence over -I. Exit Status: Returns success unless an invalid option is supplied or an error occurs. @@ -79,6 +81,7 @@ struct _optflags { int rflag; int Dflag; int Eflag; + int Iflag; }; static int find_compact __P((char *)); @@ -195,7 +198,7 @@ build_actions (list, flagp, actp, optp) opt_given = 0; reset_internal_getopt (); - while ((opt = internal_getopt (list, "abcdefgjko:prsuvA:G:W:P:S:X:F:C:DE")) != -1) + while ((opt = internal_getopt (list, "abcdefgjko:prsuvA:G:W:P:S:X:F:C:DEI")) != -1) { opt_given = 1; switch (opt) @@ -307,6 +310,18 @@ build_actions (list, flagp, actp, optp) builtin_usage (); return (EX_USAGE); } + case 'I': + if (flagp) + { + flagp->Iflag = 1; + break; + } + else + { + sh_invalidopt ("-I"); + builtin_usage (); + return (EX_USAGE); + } case 'F': Farg = list_optarg; break; @@ -355,7 +370,8 @@ complete_builtin (list) return (EXECUTION_SUCCESS); } - opt_given = oflags.pflag = oflags.rflag = oflags.Dflag = oflags.Eflag = 0; + opt_given = oflags.pflag = oflags.rflag = 0; + oflags.Dflag = oflags.Eflag = oflags.Iflag = 0; acts = copts = (unsigned long)0L; Garg = Warg = Parg = Sarg = Xarg = Farg = Carg = (char *)NULL; @@ -370,8 +386,14 @@ complete_builtin (list) list = loptend; - wl = oflags.Dflag ? make_word_list (make_bare_word (DEFAULTCMD), (WORD_LIST *)NULL) - : (oflags.Eflag ? make_word_list (make_bare_word (EMPTYCMD), (WORD_LIST *)NULL) : 0); + if (oflags.Dflag) + wl = make_word_list (make_bare_word (DEFAULTCMD), (WORD_LIST *)NULL); + else if (oflags.Eflag) + wl = make_word_list (make_bare_word (EMPTYCMD), (WORD_LIST *)NULL); + else if (oflags.Iflag) + wl = make_word_list (make_bare_word (INITIALWORD), (WORD_LIST *)NULL); + else + wl = (WORD_LIST *)NULL; /* -p overrides everything else */ if (oflags.pflag || (list == 0 && opt_given == 0)) @@ -515,6 +537,8 @@ print_one_completion (cmd, cs) PRINTCOMPOPT (COPT_DEFAULT, "default"); PRINTCOMPOPT (COPT_DIRNAMES, "dirnames"); PRINTCOMPOPT (COPT_FILENAMES, "filenames"); + PRINTCOMPOPT (COPT_NOQUOTE, "noquote"); + PRINTCOMPOPT (COPT_NOSORT, "nosort"); PRINTCOMPOPT (COPT_NOSPACE, "nospace"); PRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs"); @@ -562,10 +586,12 @@ print_one_completion (cmd, cs) /* simple arguments that don't require quoting */ PRINTARG (cs->funcname, "-F"); - if (STREQ (cmd, EMPTYCMD)) - printf ("-E\n"); - else if (STREQ (cmd, DEFAULTCMD)) + if (STREQ (cmd, DEFAULTCMD)) printf ("-D\n"); + else if (STREQ (cmd, EMPTYCMD)) + printf ("-E\n"); + else if (STREQ (cmd, INITIALWORD)) + printf ("-I\n"); else printf ("%s\n", cmd); @@ -589,6 +615,8 @@ print_compopts (cmd, cs, full) XPRINTCOMPOPT (COPT_DEFAULT, "default"); XPRINTCOMPOPT (COPT_DIRNAMES, "dirnames"); XPRINTCOMPOPT (COPT_FILENAMES, "filenames"); + XPRINTCOMPOPT (COPT_NOQUOTE, "noquote"); + XPRINTCOMPOPT (COPT_NOSORT, "nosort"); XPRINTCOMPOPT (COPT_NOSPACE, "nospace"); XPRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs"); } @@ -598,14 +626,18 @@ print_compopts (cmd, cs, full) PRINTCOMPOPT (COPT_DEFAULT, "default"); PRINTCOMPOPT (COPT_DIRNAMES, "dirnames"); PRINTCOMPOPT (COPT_FILENAMES, "filenames"); + PRINTCOMPOPT (COPT_NOQUOTE, "noquote"); + PRINTCOMPOPT (COPT_NOSORT, "nosort"); PRINTCOMPOPT (COPT_NOSPACE, "nospace"); PRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs"); } - if (STREQ (cmd, EMPTYCMD)) - printf ("-E\n"); - else if (STREQ (cmd, DEFAULTCMD)) + if (STREQ (cmd, DEFAULTCMD)) printf ("-D\n"); + else if (STREQ (cmd, EMPTYCMD)) + printf ("-E\n"); + else if (STREQ (cmd, INITIALWORD)) + printf ("-I\n"); else printf ("%s\n", cmd); } @@ -675,6 +707,8 @@ compgen_builtin (list) COMPSPEC *cs; STRINGLIST *sl; char *word, **matches; + char *old_line; + int old_ind; if (list == 0) return (EXECUTION_SUCCESS); @@ -715,7 +749,15 @@ compgen_builtin (list) cs->filterpat = STRDUP (Xarg); rval = EXECUTION_FAILURE; + + /* probably don't have to save these, just being safe */ + old_line = pcomp_line; + old_ind = pcomp_ind; + pcomp_line = (char *)NULL; + pcomp_ind = 0; sl = gen_compspec_completions (cs, "compgen", word, 0, 0, 0); + pcomp_line = old_line; + pcomp_ind = old_ind; /* If the compspec wants the bash default completions, temporarily turn off programmable completion and call the bash completion code. */ @@ -753,7 +795,7 @@ compgen_builtin (list) $BUILTIN compopt $DEPENDS_ON PROGRAMMABLE_COMPLETION $FUNCTION compopt_builtin -$SHORT_DOC compopt [-o|+o option] [-DE] [name ...] +$SHORT_DOC compopt [-o|+o option] [-DEI] [name ...] Modify or display completion options. Modify the completion options for each NAME, or, if no NAMEs are supplied, @@ -764,6 +806,7 @@ Options: -o option Set completion option OPTION for each NAME -D Change options for the "default" command completion -E Change options for the "empty" command completion + -I Change options for completion on the initial word Using `+o' instead of `-o' turns off the specified option. @@ -784,15 +827,15 @@ int compopt_builtin (list) WORD_LIST *list; { - int opts_on, opts_off, *opts, opt, oind, ret, Dflag, Eflag; + int opts_on, opts_off, *opts, opt, oind, ret, Dflag, Eflag, Iflag; WORD_LIST *l, *wl; COMPSPEC *cs; - opts_on = opts_off = Eflag = Dflag = 0; + opts_on = opts_off = Eflag = Dflag = Iflag = 0; ret = EXECUTION_SUCCESS; reset_internal_getopt (); - while ((opt = internal_getopt (list, "+o:DE")) != -1) + while ((opt = internal_getopt (list, "+o:DEI")) != -1) { opts = (list_opttype == '-') ? &opts_on : &opts_off; @@ -813,6 +856,9 @@ compopt_builtin (list) case 'E': Eflag = 1; break; + case 'I': + Iflag = 1; + break; CASE_HELPOPT; default: builtin_usage (); @@ -821,8 +867,14 @@ compopt_builtin (list) } list = loptend; - wl = Dflag ? make_word_list (make_bare_word (DEFAULTCMD), (WORD_LIST *)NULL) - : (Eflag ? make_word_list (make_bare_word (EMPTYCMD), (WORD_LIST *)NULL) : 0); + if (Dflag) + wl = make_word_list (make_bare_word (DEFAULTCMD), (WORD_LIST *)NULL); + else if (Eflag) + wl = make_word_list (make_bare_word (EMPTYCMD), (WORD_LIST *)NULL); + else if (Iflag) + wl = make_word_list (make_bare_word (INITIALWORD), (WORD_LIST *)NULL); + else + wl = (WORD_LIST *)NULL; if (list == 0 && wl == 0) { diff --git a/builtins/declare.def b/builtins/declare.def index f4819b423..7eac6f583 100644 --- a/builtins/declare.def +++ b/builtins/declare.def @@ -40,11 +40,11 @@ Options which set attributes: -a to make NAMEs indexed arrays (if supported) -A to make NAMEs associative arrays (if supported) -i to make NAMEs have the `integer' attribute - -l to convert NAMEs to lower case on assignment + -l to convert the value of each NAME to lower case on assignment -n make NAME a reference to the variable named by its value -r to make NAMEs readonly -t to make NAMEs have the `trace' attribute - -u to convert NAMEs to upper case on assignment + -u to convert the value of each NAME to upper case on assignment -x to make NAMEs export Using `+' instead of `-' turns off the given attribute. @@ -88,9 +88,7 @@ $END #include "builtext.h" #include "bashgetopt.h" -extern int array_needs_making; -extern int posixly_correct; - +static SHELL_VAR *declare_find_variable __P((const char *, int, int)); static int declare_internal __P((register WORD_LIST *, int)); /* Declare or change variable attributes. */ @@ -120,6 +118,13 @@ int local_builtin (list) register WORD_LIST *list; { + /* Catch a straight `local --help' before checking function context */ + if (list && list->word && STREQ (list->word->word, "--help")) + { + builtin_help (); + return (EX_USAGE); + } + if (variable_context) return (declare_internal (list, 1)); else @@ -130,11 +135,31 @@ local_builtin (list) } #if defined (ARRAY_VARS) -# define DECLARE_OPTS "+acfgilnprtuxAF" +# define DECLARE_OPTS "+acfgilnprtuxAFG" #else -# define DECLARE_OPTS "+cfgilnprtuxF" +# define DECLARE_OPTS "+cfgilnprtuxFG" #endif +static SHELL_VAR * +declare_find_variable (name, mkglobal, chklocal) + const char *name; + int mkglobal, chklocal; +{ + SHELL_VAR *var; + + if (mkglobal == 0) + return (find_variable (name)); + else if (chklocal) + { + var = find_variable (name); + if (var && local_p (var) && var->context == variable_context) + return var; + return (find_global_variable (name)); + } + else + return (find_global_variable (name)); +} + /* The workhorse function. */ static int declare_internal (list, local_var) @@ -142,12 +167,14 @@ declare_internal (list, local_var) int local_var; { int flags_on, flags_off, *flags; - int any_failed, assign_error, pflag, nodefs, opt, mkglobal, onref, offref; + int any_failed, assign_error, pflag, nodefs, opt, onref, offref; + int mkglobal, chklocal; char *t, *subscript_start; SHELL_VAR *var, *refvar, *v; FUNCTION_DEF *shell_fn; - flags_on = flags_off = any_failed = assign_error = pflag = nodefs = mkglobal = 0; + flags_on = flags_off = any_failed = assign_error = pflag = nodefs = 0; + mkglobal = chklocal = 0; refvar = (SHELL_VAR *)NULL; reset_internal_getopt (); while ((opt = internal_getopt (list, DECLARE_OPTS)) != -1) @@ -185,6 +212,10 @@ declare_internal (list, local_var) case 'f': *flags |= att_function; break; + case 'G': + if (flags == &flags_on) + chklocal = 1; + /*FALLTHROUGH*/ case 'g': if (flags == &flags_on) mkglobal = 1; @@ -288,6 +319,7 @@ declare_internal (list, local_var) { char *value, *name, *oldname; int offset, aflags, wflags, created_var, namelen; + int assoc_noexpand; #if defined (ARRAY_VARS) int making_array_special, compound_array_assign, simple_array_assign; int var_exists, array_exists, creating_array, array_subscript_assignment; @@ -295,13 +327,18 @@ declare_internal (list, local_var) name = savestring (list->word->word); wflags = list->word->flags; - offset = assignment (name, 0); +#if defined (ARRAY_VARS) + assoc_noexpand = assoc_expand_once && (wflags & W_ASSIGNMENT); +#else + assoc_noexpand = 0; +#endif + offset = assignment (name, assoc_noexpand ? 2 : 0); aflags = 0; created_var = 0; if (local_var && variable_context && STREQ (name, "-")) { - var = make_local_variable ("-"); + var = make_local_variable ("-", 0); FREE (value_cell (var)); /* just in case */ value = get_current_options (); var_setvalue (var, value); @@ -363,7 +400,7 @@ restart_new_var_name: compound_array_assign = simple_array_assign = 0; array_subscript_assignment = 0; subscript_start = (char *)NULL; - if (t = strchr (name, '[')) /* ] */ + if ((t = strchr (name, '[')) && (flags_on & att_function) == 0) /* ] */ { /* If offset != 0 we have already validated any array reference because assignment() calls skipsubscript() */ @@ -403,19 +440,38 @@ restart_new_var_name: refvar = (SHELL_VAR *)NULL; if (variable_context && mkglobal == 0 && ((flags_on & att_function) == 0)) { + char *newname; + /* check name for validity here? */ + var = find_variable (name); + if (var == 0) + newname = nameref_transform_name (name, ASS_MKLOCAL); + else if ((flags_on & att_nameref) == 0 && (flags_off & att_nameref) == 0) + { + /* Ok, we're following namerefs here, so let's make sure that if + we followed one, it was at the same context (see below for + more details). */ + refvar = find_variable_last_nameref (name, 1); + newname = (refvar && refvar->context != variable_context) ? name : var->name; + refvar = (SHELL_VAR *)NULL; + } + else + newname = name; /* dealing with nameref attribute */ + #if defined (ARRAY_VARS) + /* Pass 1 as second argument to make_local_{assoc,array}_variable + return an existing {array,assoc} variable to be flagged as an + error below. */ if (flags_on & att_assoc) - var = make_local_assoc_variable (name); + var = make_local_assoc_variable (newname, 1); else if ((flags_on & att_array) || making_array_special) - var = make_local_array_variable (name, making_array_special); + var = make_local_array_variable (newname, 1); else #endif if (offset == 0 && (flags_on & att_nameref)) { /* First look for refvar at current scope */ refvar = find_variable_last_nameref (name, 1); - var = find_variable (name); /* VARIABLE_CONTEXT != 0, so we are attempting to create or modify the attributes for a local variable at the same scope. If we've used a reference from a previous context to resolve VAR, we @@ -423,18 +479,19 @@ restart_new_var_name: if (refvar && refvar->context != variable_context) { refvar = 0; - var = make_local_variable (name); + var = make_local_variable (name, 0); } else if (refvar && refvar->context == variable_context) var = refvar; /* Maybe we just want to create a new local variable */ else if (var == 0 || var->context != variable_context) - var = make_local_variable (name); + var = make_local_variable (name, 0); /* otherwise we have a var at the right context */ } else /* XXX - check name for validity here with valid_nameref_value */ - var = make_local_variable (name); /* sets att_invisible for new vars */ + var = make_local_variable ((flags_on & att_nameref) ? name : newname, 0); /* sets att_invisible for new vars */ + if (var == 0) { any_failed++; @@ -528,21 +585,17 @@ restart_new_var_name: #endif if (var == 0 && (flags_on & att_nameref)) { -#if 0 - /* See if we are trying to modify an existing nameref variable */ - var = mkglobal ? find_global_variable_last_nameref (name, 1) : find_variable_last_nameref (name, 1); -#else /* See if we are trying to modify an existing nameref variable, but don't follow the nameref chain. */ var = mkglobal ? find_global_variable_noref (name) : find_variable_noref (name); -#endif if (var && nameref_p (var) == 0) var = 0; } /* However, if we're turning off the nameref attribute on an existing nameref variable, we first follow the nameref chain to the end, - modify the value of the variable this nameref variable references, - *CHANGING ITS VALUE AS A SIDE EFFECT* then turn off the nameref + modify the value of the variable this nameref variable references + if there is an assignment statement argument, + *CHANGING ITS VALUE AS A SIDE EFFECT*, then turn off the nameref flag *LEAVING THE NAMEREF VARIABLE'S VALUE UNCHANGED* */ else if (var == 0 && (flags_off & att_nameref)) { @@ -560,7 +613,18 @@ restart_new_var_name: any_failed++; NEXT_VARIABLE (); } + + /* If all we're doing is turning off the nameref attribute, don't + bother with VAR at all, whether it exists or not. Just turn it + off and go on. */ + if (refvar && flags_on == 0 && offset == 0 && (flags_off & ~att_nameref) == 0) + { + VUNSETATTR (refvar, att_nameref); + NEXT_VARIABLE (); + } + if (refvar) + /* XXX - use declare_find_variable here? */ var = mkglobal ? find_global_variable (nameref_cell (refvar)) : find_variable (nameref_cell (refvar)); } #if defined (ARRAY_VARS) @@ -579,19 +643,20 @@ restart_new_var_name: } #endif - /* See if we are trying to set flags or value for an existing nameref - that points to a non-existent variable: e.g., + /* See if we are trying to set flags or value (or create) for an + existing nameref that points to a non-existent variable: e.g., declare -n foo=bar unset foo # unsets bar declare -i foo foo=4+4 declare -p foo */ - if (var == 0 && (flags_on || flags_off || offset)) + if (var == 0 && (mkglobal || flags_on || flags_off || offset)) { refvar = mkglobal ? find_global_variable_last_nameref (name, 0) : find_variable_last_nameref (name, 0); if (refvar && nameref_p (refvar) == 0) refvar = 0; if (refvar) + /* XXX - use declare_find_variable here? */ var = mkglobal ? find_global_variable (nameref_cell (refvar)) : find_variable (nameref_cell (refvar)); if (refvar && var == 0) { @@ -637,12 +702,18 @@ restart_new_var_name: value = name + namelen; } free (oldname); + + /* OK, let's turn off the nameref attribute. + Now everything else applies to VAR. */ + if (flags_off & att_nameref) + VUNSETATTR (refvar, att_nameref); + goto restart_new_var_name; /* NOTREACHED */ } } if (var == 0) - var = mkglobal ? find_global_variable (name) : find_variable (name); + var = declare_find_variable (name, mkglobal, chklocal); #if defined (ARRAY_VARS) var_exists = var != 0; @@ -821,10 +892,13 @@ restart_new_var_name: assign_array_var_from_string (var, value, aflags|ASS_FORCE); else if (simple_array_assign && subscript_start) { + int local_aflags; /* declare [-aA] name[N]=value */ *subscript_start = '['; /* ] */ /* XXX - problem here with appending */ - var = assign_array_element (name, value, aflags&ASS_APPEND); /* XXX - not aflags */ + local_aflags = aflags&ASS_APPEND; + local_aflags |= assoc_noexpand ? ASS_NOEXPAND : 0; + var = assign_array_element (name, value, local_aflags); /* XXX - not aflags */ *subscript_start = '\0'; if (var == 0) /* some kind of assignment error */ { @@ -885,9 +959,12 @@ restart_new_var_name: { tvalue = var_isset (var) ? savestring (value_cell (var)) : savestring (""); tv = bind_variable (var->name, tvalue, 0); - tv->attributes |= var->attributes & ~att_tempvar; - if (tv->context > 0) - VSETATTR (tv, att_propagate); + if (tv) + { + tv->attributes |= var->attributes & ~att_tempvar; + if (tv->context > 0) + VSETATTR (tv, att_propagate); + } free (tvalue); } VSETATTR (var, att_propagate); diff --git a/builtins/echo.def b/builtins/echo.def index 3f8b5a939..4e2243dbe 100644 --- a/builtins/echo.def +++ b/builtins/echo.def @@ -1,7 +1,7 @@ This file is echo.def, from which is created echo.c. It implements the builtin "echo" in Bash. -Copyright (C) 1987-2016 Free Software Foundation, Inc. +Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -62,6 +62,10 @@ Options: 0 to 3 octal digits \xHH the eight-bit character whose value is HH (hexadecimal). HH can be one or two hex digits + \uHHHH the Unicode character whose value is the hexadecimal value HHHH. + HHHH can be one to four hex digits. + \UHHHHHHHH the Unicode character whose value is the hexadecimal value + HHHHHHHH. HHHHHHHH can be one to eight hex digits. Exit Status: Returns success unless a write error occurs. @@ -99,8 +103,6 @@ int xpg_echo = 1; int xpg_echo = 0; #endif /* DEFAULT_ECHO_TO_XPG */ -extern int posixly_correct; - /* Print the words in LIST to standard output. If the first word is `-n', then don't print a trailing newline. We also support the echo syntax from Version 9 Unix systems. */ diff --git a/builtins/evalfile.c b/builtins/evalfile.c index 316b7940f..32a7c8d68 100644 --- a/builtins/evalfile.c +++ b/builtins/evalfile.c @@ -1,6 +1,6 @@ /* evalfile.c - read and evaluate commands from a file or file descriptor */ -/* Copyright (C) 1996-2015 Free Software Foundation, Inc. +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -36,6 +36,7 @@ #include "../bashintl.h" #include "../shell.h" +#include "../parser.h" #include "../jobs.h" #include "../builtins.h" #include "../flags.h" @@ -68,13 +69,6 @@ extern int errno; #define FEVAL_REGFILE 0x080 #define FEVAL_NOPUSHARGS 0x100 -extern int posixly_correct; -extern int indirection_level, subshell_environment; -extern int return_catch_flag, return_catch_value; -extern int last_command_exit_value; -extern int executing_command_builtin; -extern int current_token; /* parse.y */ - /* How many `levels' of sourced files we have. */ int sourcelevel = 0; @@ -92,7 +86,7 @@ _evalfile (filename, flags) size_t file_size; sh_vmsg_func_t *errfunc; #if defined (ARRAY_VARS) - SHELL_VAR *funcname_v, *nfv, *bash_source_v, *bash_lineno_v; + SHELL_VAR *funcname_v, *bash_source_v, *bash_lineno_v; ARRAY *funcname_a, *bash_source_a, *bash_lineno_a; struct func_array_state *fa; # if defined (DEBUGGER) @@ -260,7 +254,9 @@ file_error_and_exit: arguments */ if ((flags & FEVAL_NOPUSHARGS) == 0) { - array_push (bash_argv_a, (char *)filename); + if (shell_compatibility_level <= 44) + init_bash_argv (); + array_push (bash_argv_a, (char *)filename); /* XXX - unconditionally? */ tt[0] = '1'; tt[1] = '\0'; array_push (bash_argc_a, tt); if (flags & FEVAL_UNWINDPROT) @@ -282,7 +278,7 @@ file_error_and_exit: force parse_and_execute () to clean up. */ if (return_val) { - parse_and_execute_cleanup (); + parse_and_execute_cleanup (-1); result = return_catch_value; } else diff --git a/builtins/evalstring.c b/builtins/evalstring.c index 6dc756c27..1496eeec2 100644 --- a/builtins/evalstring.c +++ b/builtins/evalstring.c @@ -1,6 +1,6 @@ /* evalstring.c - evaluate a string as one or more shell commands. */ -/* Copyright (C) 1996-2015 Free Software Foundation, Inc. +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -39,6 +39,7 @@ #include "../jobs.h" #include "../builtins.h" #include "../flags.h" +#include "../parser.h" #include "../input.h" #include "../execute_cmd.h" #include "../redir.h" @@ -60,19 +61,6 @@ extern int errno; #define IS_BUILTIN(s) (builtin_address_internal(s, 0) != (struct builtin *)NULL) -extern int indirection_level, subshell_environment; -extern int line_number, line_number_for_err_trap; -extern int current_token, shell_eof_token; -extern int last_command_exit_value; -extern int running_trap; -extern int loop_level; -extern int executing_list; -extern int comsub_ignore_return; -extern int posixly_correct; -extern int return_catch_flag, return_catch_value; -extern sh_builtin_func_t *this_shell_builtin; -extern char *the_printed_command_except_trap; - int parse_and_execute_level = 0; static int cat_file __P((REDIRECT *)); @@ -124,14 +112,41 @@ optimize_fork (command) command->value.Connection->second->value.Simple->flags |= CMD_NO_FORK; } } + +void +optimize_subshell_command (command) + COMMAND *command; +{ + if (running_trap == 0 && + command->type == cm_simple && + signal_is_trapped (EXIT_TRAP) == 0 && + signal_is_trapped (ERROR_TRAP) == 0 && + any_signals_trapped () < 0 && + command->redirects == 0 && command->value.Simple->redirects == 0 && + ((command->flags & CMD_TIME_PIPELINE) == 0) && + ((command->flags & CMD_INVERT_RETURN) == 0)) + { + command->flags |= CMD_NO_FORK; + command->value.Simple->flags |= CMD_NO_FORK; + } + else if (command->type == cm_connection && + (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR)) + optimize_subshell_command (command->value.Connection->second); +} /* How to force parse_and_execute () to clean up after itself. */ void -parse_and_execute_cleanup () +parse_and_execute_cleanup (old_running_trap) + int old_running_trap; { - if (running_trap) + if (running_trap > 0) { - run_trap_cleanup (running_trap - 1); + /* We assume if we have a different value for running_trap than when + we started (the only caller that cares is evalstring()), the + original caller will perform the cleanup, and we should not step + on them. */ + if (running_trap != old_running_trap) + run_trap_cleanup (running_trap - 1); unfreeze_jobs_list (); } @@ -433,11 +448,11 @@ parse_and_execute (string, from_file, flags) } else { - last_result = EXECUTION_FAILURE; + last_result = EX_BADUSAGE; /* was EXECUTION_FAILURE */ if (interactive_shell == 0 && this_shell_builtin && (this_shell_builtin == source_builtin || this_shell_builtin == eval_builtin) && - last_command_exit_value == EX_BADSYNTAX && posixly_correct) + last_command_exit_value == EX_BADSYNTAX && posixly_correct && executing_command_builtin == 0) { should_jump_to_top_level = 1; code = ERREXIT; @@ -644,6 +659,10 @@ evalstring (string, from_file, flags) int flags; { volatile int r, rflag, rcatch; + volatile int was_trap; + + /* Are we running a trap when we execute this function? */ + was_trap = running_trap; rcatch = 0; rflag = return_catch_flag; @@ -663,7 +682,9 @@ evalstring (string, from_file, flags) if (rcatch) { - parse_and_execute_cleanup (); + /* We care about whether or not we are running the same trap we were + when we entered this function. */ + parse_and_execute_cleanup (was_trap); r = return_catch_value; } else diff --git a/builtins/exec.def b/builtins/exec.def index 7d7edce03..d4670673c 100644 --- a/builtins/exec.def +++ b/builtins/exec.def @@ -68,13 +68,13 @@ $END #endif #include "common.h" #include "bashgetopt.h" +#include "input.h" /* Not all systems declare ERRNO in errno.h... and some systems #define it! */ #if !defined (errno) extern int errno; #endif /* !errno */ -extern int subshell_environment; extern REDIRECT *redirection_undo_list; extern char *exec_argv0; @@ -190,8 +190,11 @@ exec_builtin (list) /* Decrement SHLVL by 1 so a new shell started here has the same value, preserving the appearance. After we do that, we need to change the - exported environment to include the new value. */ - if (cleanenv == 0) + exported environment to include the new value. If we've already forked + and are in a subshell, we don't want to decrement the shell level, + since we are `increasing' the level */ + + if (cleanenv == 0 && (subshell_environment & SUBSHELL_PAREN) == 0) adjust_shell_level (-1); if (cleanenv) @@ -219,6 +222,11 @@ exec_builtin (list) default_tty_job_signals (); /* undo initialize_job_signals */ #endif /* JOB_CONTROL */ +#if defined (BUFFERED_INPUT) + if (default_buffered_input >= 0) + sync_buffered_stream (default_buffered_input); +#endif + exit_value = shell_execve (command, args, env); /* We have to set this to NULL because shell_execve has called realloc() diff --git a/builtins/exit.def b/builtins/exit.def index f28c2342c..5167b2e0c 100644 --- a/builtins/exit.def +++ b/builtins/exit.def @@ -41,17 +41,14 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../execute_cmd.h" #include "../jobs.h" +#include "../trap.h" #include "common.h" #include "builtext.h" /* for jobs_builtin */ extern int check_jobs_at_exit; -extern int last_command_exit_value; -extern int running_trap, trap_saved_exit_value; -extern int subshell_environment; -extern sh_builtin_func_t *this_shell_builtin; -extern sh_builtin_func_t *last_shell_builtin; static int exit_or_logout __P((WORD_LIST *)); static int sourced_logout; diff --git a/builtins/fc.def b/builtins/fc.def index fe164710e..62a28c4c5 100644 --- a/builtins/fc.def +++ b/builtins/fc.def @@ -75,6 +75,7 @@ $END #include "../shell.h" #include "../builtins.h" #include "../flags.h" +#include "../parser.h" #include "../bashhist.h" #include "maxpath.h" #include @@ -85,11 +86,6 @@ $END extern int errno; #endif /* !errno */ -extern int current_command_line_count; -extern int literal_history; -extern int posixly_correct; -extern int subshell_environment, interactive_shell; - extern int unlink __P((const char *)); extern FILE *sh_mktmpfp __P((char *, int, char **)); @@ -423,6 +419,7 @@ fc_builtin (list) { sh_wrerror (); fclose (stream); + FREE (fn); return (EXECUTION_FAILURE); } fclose (stream); @@ -463,7 +460,7 @@ fc_builtin (list) /* Turn on the `v' flag while fc_execute_file runs so the commands will be echoed as they are read by the parser. */ begin_unwind_frame ("fc builtin"); - add_unwind_protect ((Function *)xfree, fn); + add_unwind_protect (xfree, fn); add_unwind_protect (unlink, fn); add_unwind_protect (set_verbose_flag, (char *)NULL); echo_input_at_read = 1; diff --git a/builtins/fg_bg.def b/builtins/fg_bg.def index 1565e0a12..6a68d6ab0 100644 --- a/builtins/fg_bg.def +++ b/builtins/fg_bg.def @@ -46,13 +46,12 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../execute_cmd.h" #include "../jobs.h" #include "common.h" #include "bashgetopt.h" #if defined (JOB_CONTROL) -extern char *this_command_name; - static int fg_bg __P((WORD_LIST *, int)); /* How to bring a job into the foreground. */ diff --git a/builtins/getopts.def b/builtins/getopts.def index 590b11035..f473ef01d 100644 --- a/builtins/getopts.def +++ b/builtins/getopts.def @@ -77,6 +77,7 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../execute_cmd.h" #include "common.h" #include "bashgetopt.h" #include "getopt.h" @@ -85,8 +86,6 @@ $END #define G_INVALID_OPT -2 #define G_ARG_MISSING -3 -extern char *this_command_name; - static int getopts_unbind_variable __P((char *)); static int getopts_bind_variable __P((char *, char *)); static int dogetopts __P((int, char **)); diff --git a/builtins/hash.def b/builtins/hash.def index bec4b073b..b30393081 100644 --- a/builtins/hash.def +++ b/builtins/hash.def @@ -61,15 +61,14 @@ $END #include "../shell.h" #include "../builtins.h" +#include "../execute_cmd.h" #include "../flags.h" #include "../findcmd.h" #include "../hashcmd.h" #include "common.h" #include "bashgetopt.h" -extern int posixly_correct; extern int dot_found_in_search; -extern char *this_command_name; static int add_hashed_command __P((char *, int)); static int print_hash_info __P((BUCKET_CONTENTS *)); @@ -149,10 +148,23 @@ hash_builtin (list) return (list_hashed_filename_targets (list, list_portably)); #if defined (RESTRICTED_SHELL) - if (restricted && pathname && strchr (pathname, '/')) + if (restricted && pathname) { - sh_restricted (pathname); - return (EXECUTION_FAILURE); + if (strchr (pathname, '/')) + { + sh_restricted (pathname); + return (EXECUTION_FAILURE); + } + /* If we are changing the hash table in a restricted shell, make sure the + target pathname can be found using a $PATH search. */ + w = find_user_command (pathname); + if (w == 0 || *w == 0 || executable_file (w) == 0) + { + sh_notfound (pathname); + free (w); + return (EXECUTION_FAILURE); + } + free (w); } #endif diff --git a/builtins/help.def b/builtins/help.def index 95a1a360b..006c4b5d1 100644 --- a/builtins/help.def +++ b/builtins/help.def @@ -37,7 +37,7 @@ Options: PATTERN Arguments: - PATTERN Pattern specifiying a help topic + PATTERN Pattern specifying a help topic Exit Status: Returns success unless PATTERN is not found or an invalid option is given. @@ -64,6 +64,7 @@ $END #include "../shell.h" #include "../builtins.h" +#include "../execute_cmd.h" #include "../pathexp.h" #include "common.h" #include "bashgetopt.h" @@ -78,9 +79,6 @@ extern int errno; extern const char * const bash_copyright; extern const char * const bash_license; -extern char *this_command_name; -extern struct builtin *current_builtin; - static void show_builtin_command_help __P((void)); static int open_helpfile __P((char *)); static void show_desc __P((char *, int)); @@ -132,7 +130,7 @@ help_builtin (list) if (glob_pattern_p (list->word->word)) { - printf (ngettext ("Shell commands matching keyword `", "Shell commands matching keywords `", (list->next ? 2 : 1))); + printf ("%s", ngettext ("Shell commands matching keyword `", "Shell commands matching keywords `", (list->next ? 2 : 1))); print_word_list (list, ", "); printf ("'\n\n"); } @@ -260,7 +258,7 @@ show_desc (name, i) char *name; int i; { - register int j; + register int j, r; char **doc, *line; int fd, usefile; @@ -272,8 +270,9 @@ show_desc (name, i) fd = open_helpfile (doc[0]); if (fd < 0) return; - zmapfd (fd, &line, doc[0]); + r = zmapfd (fd, &line, doc[0]); close (fd); + /* XXX - handle errors if zmapfd returns < 0 */ } else line = doc ? doc[0] : (char *)NULL; @@ -421,7 +420,6 @@ wdispcolumn (i, buf, bufsize, width, height) char *helpdoc; wchar_t *wcstr; size_t slen, n; - int wclen; /* first column */ helpdoc = _(shell_builtins[i].short_doc); @@ -531,10 +529,7 @@ Use `man -k' or `info' to find out more about commands not in this list.\n\ A star (*) next to a name means that the command is disabled.\n\ \n")); - t = get_string_value ("COLUMNS"); - width = (t && *t) ? atoi (t) : 80; - if (width <= 0) - width = 80; + width = default_columns (); width /= 2; if (width > sizeof (blurb)) diff --git a/builtins/history.def b/builtins/history.def index 48b59aeb5..77093a455 100644 --- a/builtins/history.def +++ b/builtins/history.def @@ -1,7 +1,7 @@ This file is history.def, from which is created history.c. It implements the builtin "history" in Bash. -Copyright (C) 1987-2016 Free Software Foundation, Inc. +Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -31,7 +31,8 @@ entry with a `*'. An argument of N lists only the last N entries. Options: -c clear the history list by deleting all of the entries - -d offset delete the history entry at position OFFSET. + -d offset delete the history entry at position OFFSET. Negative + offsets count back from the end of the history list -a append history lines from this session to the history file -n read all history lines not already read from the history file @@ -74,6 +75,7 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../parser.h" #include "../bashhist.h" #include #include "bashgetopt.h" @@ -83,9 +85,6 @@ $END extern int errno; #endif -extern int current_command_line_count; -extern int force_append_history; /* shopt -s histappend */ - static char *histtime __P((HIST_ENTRY *, const char *)); static int display_history __P((WORD_LIST *)); static void push_history __P((WORD_LIST *)); @@ -104,8 +103,8 @@ int history_builtin (list) WORD_LIST *list; { - int flags, opt, result, old_history_lines, obase; - char *filename, *delete_arg; + int flags, opt, result, old_history_lines, obase, ind; + char *filename, *delete_arg, *range; intmax_t delete_offset; flags = 0; @@ -178,16 +177,82 @@ history_builtin (list) return (sh_chkwrite (EXECUTION_SUCCESS)); } #endif + else if ((flags & DFLAG) && (range = strchr ((delete_arg[0] == '-') ? delete_arg + 1 : delete_arg, '-'))) + { + intmax_t delete_start, delete_end; + *range++ = '\0'; + if (legal_number (delete_arg, &delete_start) == 0 || legal_number (range, &delete_end) == 0) + { + range[-1] = '-'; + sh_erange (delete_arg, _("history position")); + return (EXECUTION_FAILURE); + } + if (delete_arg[0] == '-' && delete_start < 0) + { + /* the_history[history_length] == 0x0, so this is correct */ + delete_start += history_length; + if (delete_start < history_base) + { +start_error: + sh_erange (delete_arg, _("history position")); + return (EXECUTION_FAILURE); + } + } + /* numbers as displayed by display_history are offset by history_base */ + else if (delete_start > 0) + delete_start -= history_base; + if (delete_start < 0 || delete_start >= history_length) + goto start_error; + if (range[0] == '-' && delete_end < 0) + { + delete_end += history_length; + if (delete_end < history_base) + { +range_error: + sh_erange (range, _("history position")); + return (EXECUTION_FAILURE); + } + } + else if (delete_end > 0) + delete_end -= history_base; + if (delete_end < 0 || delete_end >= history_length) + goto range_error; + result = bash_delete_history_range (delete_start, delete_end); + if (where_history () > history_length) + history_set_pos (history_length); + return (result ? EXECUTION_SUCCESS : EXECUTION_FAILURE); + } else if (flags & DFLAG) { - if ((legal_number (delete_arg, &delete_offset) == 0) - || (delete_offset < history_base) - || (delete_offset > (history_base + history_length))) + if (legal_number (delete_arg, &delete_offset) == 0) { sh_erange (delete_arg, _("history position")); return (EXECUTION_FAILURE); } - opt = delete_offset; + /* check for negative offsets, count back from end of list */ + if (delete_arg[0] == '-' && delete_offset < 0) + { + /* since the_history[history_length] == 0x0, this calculation means + that history -d -1 will delete the last history entry, which at + this point is the history -d -1 we just added. */ + ind = history_length + delete_offset; + if (ind < history_base) + { + sh_erange (delete_arg, _("history position")); + return (EXECUTION_FAILURE); + } + opt = ind + history_base; /* compensate for opt - history_base below */ + } + else if ((delete_offset < history_base) || (delete_offset > (history_base + history_length))) + { + sh_erange (delete_arg, _("history position")); + return (EXECUTION_FAILURE); + } + else + opt = delete_offset; + + /* Positive arguments from numbers as displayed by display_history need + to be offset by history_base */ result = bash_delete_histent (opt - history_base); /* Since remove_history changes history_length, this can happen if we delete the last history entry. */ @@ -256,10 +321,12 @@ histtime (hlist, histtimefmt) { static char timestr[128]; time_t t; + struct tm *tm; t = history_get_time (hlist); - if (t) - strftime (timestr, sizeof (timestr), histtimefmt, localtime (&t)); + tm = t ? localtime (&t) : 0; + if (t && tm) + strftime (timestr, sizeof (timestr), histtimefmt, tm); else if (hlist->timestamp && hlist->timestamp[0]) snprintf (timestr, sizeof (timestr), _("%s: invalid timestamp"), (hlist->timestamp[0] == '#') ? hlist->timestamp + 1: hlist->timestamp); diff --git a/builtins/kill.def b/builtins/kill.def index f05189dec..8d6e3ed12 100644 --- a/builtins/kill.def +++ b/builtins/kill.def @@ -70,8 +70,6 @@ $END extern int errno; #endif /* !errno */ -extern int posixly_correct; - static void kill_error __P((pid_t, int)); #if !defined (CONTINUE_AFTER_KILL_ERROR) @@ -120,6 +118,7 @@ kill_builtin (list) if (list) { sigspec = list->word->word; +use_sigspec: if (sigspec[0] == '0' && sigspec[1] == '\0') sig = 0; else @@ -133,6 +132,16 @@ kill_builtin (list) return (EXECUTION_FAILURE); } } + else if (word[0] == '-' && word[1] == 's' && ISALPHA (word[2])) + { + sigspec = word + 2; + goto use_sigspec; + } + else if (word[0] == '-' && word[1] == 'n' && ISDIGIT (word[2])) + { + sigspec = word + 2; + goto use_sigspec; + } else if (ISOPTION (word, '-')) { list = list->next; diff --git a/builtins/let.def b/builtins/let.def index 23e684fdc..d090a45bc 100644 --- a/builtins/let.def +++ b/builtins/let.def @@ -100,7 +100,7 @@ let_builtin (list) for (; list; list = list->next) { - ret = evalexp (list->word->word, &expok); + ret = evalexp (list->word->word, EXP_EXPANDED, &expok); if (expok == 0) return (EXECUTION_FAILURE); } @@ -124,7 +124,7 @@ exp_builtin (list) } exp = string_list (list); - ret = evalexp (exp, &expok); + ret = evalexp (exp, EXP_EXPANDED, &expok); (void)free (exp); return (((ret == 0) || (expok == 0)) ? EXECUTION_FAILURE : EXECUTION_SUCCESS); } diff --git a/builtins/mapfile.def b/builtins/mapfile.def index 0d64f6189..995d34acd 100644 --- a/builtins/mapfile.def +++ b/builtins/mapfile.def @@ -59,7 +59,7 @@ $END $BUILTIN readarray $FUNCTION mapfile_builtin -$SHORT_DOC readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array] +$SHORT_DOC readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array] Read lines from a file into an array variable. A synonym for `mapfile'. @@ -232,7 +232,7 @@ mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_n break; } - xfree (line); + free (line); if (unbuffered_read == 0) zsyncfd (fd); @@ -244,12 +244,11 @@ int mapfile_builtin (list) WORD_LIST *list; { - int opt, code, fd, clear_array, flags; + int opt, code, fd, flags; intmax_t intval; long lines, origin, nskip, callback_quantum; char *array_name, *callback; - clear_array = 1; fd = 0; lines = origin = nskip = 0; flags = MAPF_CLEARARRAY; diff --git a/builtins/printf.def b/builtins/printf.def index d39a6d3f2..bc6ef57de 100644 --- a/builtins/printf.def +++ b/builtins/printf.def @@ -1,7 +1,7 @@ This file is printf.def, from which is created printf.c. It implements the builtin "printf" in Bash. -Copyright (C) 1997-2016 Free Software Foundation, Inc. +Copyright (C) 1997-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -148,8 +148,11 @@ extern int errno; QUIT; \ if (vflag) \ { \ - bind_printf_variable (vname, vbuf, 0); \ + SHELL_VAR *v; \ + v = bind_printf_variable (vname, vbuf, 0); \ stupidly_hack_special_variables (vname); \ + if (v == 0 || readonly_p (v) || noassign_p (v)) \ + return (EXECUTION_FAILURE); \ } \ if (conv_bufsize > 4096 ) \ { \ @@ -244,6 +247,9 @@ printf_builtin (list) char mbch[25]; /* 25 > MB_LEN_MAX, plus can handle 4-byte UTF-8 and large Unicode characters*/ int mbind, mblen; #endif +#if defined (ARRAY_VARS) + int arrayflags; +#endif conversion_error = 0; retval = EXECUTION_SUCCESS; @@ -258,7 +264,8 @@ printf_builtin (list) case 'v': vname = list_optarg; #if defined (ARRAY_VARS) - if (legal_identifier (vname) || valid_array_reference (vname, 0)) + arrayflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0; + if (legal_identifier (vname) || valid_array_reference (vname, arrayflags)) #else if (legal_identifier (vname)) #endif @@ -293,9 +300,10 @@ printf_builtin (list) /* Allow printf -v var "" to act like var="" */ if (vflag && list->word->word && list->word->word[0] == '\0') { - bind_printf_variable (vname, "", 0); + SHELL_VAR *v; + v = bind_printf_variable (vname, "", 0); stupidly_hack_special_variables (vname); - return (EXECUTION_SUCCESS); + return ((v == 0 || readonly_p (v) || noassign_p (v)) ? EXECUTION_FAILURE : EXECUTION_SUCCESS); } if (list->word->word == 0 || list->word->word[0] == '\0') @@ -577,7 +585,7 @@ printf_builtin (list) else if (ansic_shouldquote (p)) xp = ansic_quote (p, 0, (int *)0); else - xp = sh_backslash_quote (p, 0, 1); + xp = sh_backslash_quote (p, 0, 3); if (xp) { /* Use printstr to get fieldwidth and precision right. */ @@ -711,8 +719,8 @@ printstr (fmt, string, len, fieldwidth, precision) int fw, pr; /* fieldwidth and precision */ intmax_t mfw, mpr; - if (string == 0 || len == 0) - return 0; + if (string == 0) + string = ""; #if 0 s = fmt; @@ -955,7 +963,9 @@ bexpand (string, len, sawc, lenp) *sawc = 0; if (lenp) *lenp = 0; - return ((char *)NULL); + ret = (char *)xmalloc (1); + ret[0] = '\0'; + return (ret); } ret = (char *)xmalloc (len + 1); @@ -1192,8 +1202,10 @@ getuintmax () if (*ep) { sh_invalidnum (garglist->word->word); +#if 0 /* Same POSIX.2 conversion error requirements as getintmax(). */ ret = 0; +#endif conversion_error = 1; } else if (errno == ERANGE) @@ -1221,8 +1233,10 @@ getfloatmax () if (*ep) { sh_invalidnum (garglist->word->word); +#if 0 /* Same thing about POSIX.2 conversion error requirements. */ ret = 0; +#endif conversion_error = 1; } else if (errno == ERANGE) @@ -1239,18 +1253,17 @@ asciicode () register intmax_t ch; #if defined (HANDLE_MULTIBYTE) wchar_t wc; - size_t mblength, slen; + size_t slen; + int mblength; #endif DECLARE_MBSTATE; #if defined (HANDLE_MULTIBYTE) slen = strlen (garglist->word->word+1); - mblength = MBLEN (garglist->word->word+1, slen); - if (mblength > 1) - { - mblength = mbtowc (&wc, garglist->word->word+1, slen); - ch = wc; /* XXX */ - } + wc = 0; + mblength = mbtowc (&wc, garglist->word->word+1, slen); + if (mblength > 0) + ch = wc; /* XXX */ else #endif ch = (unsigned char)garglist->word->word[1]; @@ -1268,10 +1281,10 @@ bind_printf_variable (name, value, flags) SHELL_VAR *v; #if defined (ARRAY_VARS) - if (valid_array_reference (name, 0) == 0) + if (valid_array_reference (name, assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0) == 0) v = bind_variable (name, value, flags); else - v = assign_array_element (name, value, flags); + v = assign_array_element (name, value, flags | (assoc_expand_once ? ASS_NOEXPAND : 0)); #else /* !ARRAY_VARS */ v = bind_variable (name, value, flags); #endif /* !ARRAY_VARS */ diff --git a/builtins/pushd.def b/builtins/pushd.def index 6579e4c8a..71e040979 100644 --- a/builtins/pushd.def +++ b/builtins/pushd.def @@ -678,7 +678,7 @@ get_directory_stack (flags) d = "."; else { - t = polite_directory_format (d); + t = (flags&1) ? polite_directory_format (d) : d; /* polite_directory_format sometimes returns its argument unchanged. If it does not, we can free d right away. If it does, we need to mark d to be deleted later. */ diff --git a/builtins/read.def b/builtins/read.def index b54b3af6c..b57c8c398 100644 --- a/builtins/read.def +++ b/builtins/read.def @@ -1,7 +1,7 @@ This file is read.def, from which is created read.c. It implements the builtin "read" in Bash. -Copyright (C) 1987-2015 Free Software Foundation, Inc. +Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -39,7 +39,7 @@ Options: variable ARRAY, starting at zero -d delim continue until the first character of DELIM is read, rather than newline - -e use Readline to obtain the line in an interactive shell + -e use Readline to obtain the line -i text use TEXT as the initial text for Readline -n nchars return after reading NCHARS characters rather than waiting for a newline, but honor a delimiter if fewer than @@ -93,6 +93,7 @@ $END #include "../shell.h" #include "common.h" #include "bashgetopt.h" +#include "trap.h" #include @@ -111,15 +112,10 @@ $END extern int errno; #endif -extern void run_pending_traps __P((void)); - -extern int posixly_correct; -extern int trapped_signal_received; - struct ttsave { int fd; - TTYSTRUCT *attrs; + TTYSTRUCT attrs; }; #if defined (READLINE) @@ -152,9 +148,8 @@ static struct ttsave termsave; avoids problems with the semi-tricky stuff we do with the xfree of input_string at the top of the unwind-protect list (see below). */ -/* Set a flag that CHECK_ALRM can check. This relies on zread calling - trap.c:check_signals_and_traps(), which knows about sigalrm_seen and - alrmbuf. */ +/* Set a flag that CHECK_ALRM can check. This relies on zread or read_builtin + calling trap.c:check_signals(), which knows about sigalrm_seen and alrmbuf. */ static sighandler sigalrm (s) int s; @@ -181,10 +176,12 @@ read_builtin (list) WORD_LIST *list; { register char *varname; - int size, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2; + int size, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2, nflag; volatile int i; int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul; - int raw, edit, nchars, silent, have_timeout, ignore_delim, fd, lastsig, t_errno; + int raw, edit, nchars, silent, have_timeout, ignore_delim, fd; + int lastsig, t_errno; + int mb_cur_max; unsigned int tmsec, tmusec; long ival, uval; intmax_t intval; @@ -196,6 +193,7 @@ read_builtin (list) TTYSTRUCT ttattrs, ttset; #if defined (ARRAY_VARS) WORD_LIST *alist; + int vflags; #endif #if defined (READLINE) char *rlbuf, *itext; @@ -239,10 +237,11 @@ read_builtin (list) rlind = 0; #endif + mb_cur_max = MB_CUR_MAX; tmsec = tmusec = 0; /* no timeout */ nr = nchars = input_is_tty = input_is_pipe = unbuffered_read = have_timeout = 0; delim = '\n'; /* read until newline */ - ignore_delim = 0; + ignore_delim = nflag = 0; reset_internal_getopt (); while ((opt = internal_getopt (list, "ersa:d:i:n:p:t:u:N:")) != -1) @@ -291,6 +290,7 @@ read_builtin (list) ignore_delim = 1; delim = -1; case 'n': + nflag = 1; code = legal_number (list_optarg, &intval); if (code == 0 || intval < 0 || intval != (int)intval) { @@ -338,7 +338,8 @@ read_builtin (list) /* Convenience: check early whether or not the first of possibly several variable names is a valid identifier, and bail early if so. */ #if defined (ARRAY_VARS) - if (list && legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, 0) == 0) + vflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0; + if (list && legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, vflags) == 0) #else if (list && legal_identifier (list->word->word) == 0) #endif @@ -364,6 +365,14 @@ read_builtin (list) input_string = (char *)xmalloc (size = 112); /* XXX was 128 */ input_string[0] = '\0'; + /* More input and options validation */ + if (nflag == 1 && nchars == 0) + { + retval = read (fd, &c, 0); + retval = (retval >= 0) ? EXECUTION_SUCCESS : EXECUTION_FAILURE; + goto assign_vars; /* bail early if asked to read 0 chars */ + } + /* $TMOUT, if set, is the default timeout for read. */ if (have_timeout == 0 && (e = get_string_value ("TMOUT"))) { @@ -384,7 +393,11 @@ read_builtin (list) sync_buffered_stream (default_buffered_input); #endif +#if 1 input_is_tty = isatty (fd); +#else + input_is_tty = 1; +#endif if (input_is_tty == 0) #ifndef __CYGWIN__ input_is_pipe = (lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE); @@ -484,7 +497,7 @@ read_builtin (list) /* ttsave() */ termsave.fd = fd; ttgetattr (fd, &ttattrs); - termsave.attrs = &ttattrs; + termsave.attrs = ttattrs; ttset = ttattrs; i = silent ? ttfd_cbreak (fd, &ttset) : ttfd_onechar (fd, &ttset); @@ -501,7 +514,7 @@ read_builtin (list) /* ttsave (); */ termsave.fd = fd; ttgetattr (fd, &ttattrs); - termsave.attrs = &ttattrs; + termsave.attrs = ttattrs; ttset = ttattrs; i = ttfd_noecho (fd, &ttset); /* ttnoecho (); */ @@ -544,7 +557,7 @@ read_builtin (list) { if (rlbuf && rlbuf[rlind] == '\0') { - xfree (rlbuf); + free (rlbuf); rlbuf = (char *)0; } if (rlbuf == 0) @@ -574,11 +587,8 @@ read_builtin (list) print_ps2 = 0; } -#if 0 - if (posixly_correct == 0) - interrupt_immediately++; -#endif reading = 1; + CHECK_ALRM; if (unbuffered_read == 2) retval = posixly_correct ? zreadintr (fd, &c, 1) : zreadn (fd, &c, nchars - nr); else if (unbuffered_read) @@ -586,15 +596,12 @@ read_builtin (list) else retval = posixly_correct ? zreadcintr (fd, &c) : zreadc (fd, &c); reading = 0; -#if 0 - if (posixly_correct == 0) - interrupt_immediately--; -#endif if (retval <= 0) { if (retval < 0 && errno == EINTR) { + check_signals (); /* in case we didn't call zread via zreadc */ lastsig = LASTSIG(); if (lastsig == 0) lastsig = trapped_signal_received; @@ -609,14 +616,16 @@ read_builtin (list) break; } - CHECK_ALRM; QUIT; /* in case we didn't call check_signals() */ #if defined (READLINE) } #endif - CHECK_ALRM; - if (i + 4 >= size) /* XXX was i + 2; use i + 4 for multibyte/read_mbchar */ + if (retval <= 0) /* XXX shouldn't happen */ + CHECK_ALRM; + + /* XXX -- use i + mb_cur_max (at least 4) for multibyte/read_mbchar */ + if (i + (mb_cur_max > 4 ? mb_cur_max : 4) >= size) { char *t; t = (char *)xrealloc (input_string, size += 128); @@ -637,7 +646,8 @@ read_builtin (list) pass_next = 0; if (c == '\n') { - i--; /* back up over the CTLESC */ + if (skip_ctlesc == 0 && i > 0) + i--; /* back up over the CTLESC */ if (interactive && input_is_tty && raw == 0) print_ps2 = 1; } @@ -675,10 +685,31 @@ add_char: CHECK_ALRM; #if defined (HANDLE_MULTIBYTE) - if (nchars > 0 && MB_CUR_MAX > 1 && is_basic (c) == 0) + /* XXX - what if C == 127? Can DEL introduce a multibyte sequence? */ + if (mb_cur_max > 1 && is_basic (c) == 0) { input_string[i] = '\0'; /* for simplicity and debugging */ - i += read_mbchar (fd, input_string, i, c, unbuffered_read); + /* If we got input from readline, grab the next multibyte char from + rlbuf. */ +# if defined (READLINE) + if (edit) + { + size_t clen; + clen = mbrlen (rlbuf + rlind - 1, mb_cur_max, (mbstate_t *)NULL); + /* We only deal with valid multibyte sequences longer than one + byte. If we get anything else, we leave the one character + copied and move on to the next. */ + if ((int)clen > 1) + { + memcpy (input_string+i, rlbuf+rlind, clen-1); + i += clen - 1; + rlind += clen - 1; + } + } + else +# endif + if (locale_utf8locale == 0 || ((c & 0x80) != 0)) + i += read_mbchar (fd, input_string, i, c, unbuffered_read); } #endif @@ -742,20 +773,20 @@ assign_vars: if (legal_identifier (arrayname) == 0) { sh_invalidid (arrayname); - xfree (input_string); + free (input_string); return (EXECUTION_FAILURE); } var = find_or_make_array_variable (arrayname, 1); if (var == 0) { - xfree (input_string); + free (input_string); return EXECUTION_FAILURE; /* readonly or noassign */ } if (assoc_p (var)) { builtin_error (_("%s: cannot convert associative to indexed array"), arrayname); - xfree (input_string); + free (input_string); return EXECUTION_FAILURE; /* existing associative array */ } else if (invisible_p (var)) @@ -772,7 +803,7 @@ assign_vars: assign_array_var_from_word_list (var, alist, 0); dispose_words (alist); } - xfree (input_string); + free (input_string); return (retval); } #endif /* ARRAY_VARS */ @@ -808,7 +839,7 @@ assign_vars: else VUNSETATTR (var, att_invisible); - xfree (input_string); + free (input_string); return (retval); } @@ -825,13 +856,13 @@ assign_vars: { varname = list->word->word; #if defined (ARRAY_VARS) - if (legal_identifier (varname) == 0 && valid_array_reference (varname, 0) == 0) + if (legal_identifier (varname) == 0 && valid_array_reference (varname, vflags) == 0) #else if (legal_identifier (varname) == 0) #endif { sh_invalidid (varname); - xfree (orig_input_string); + free (orig_input_string); return (EXECUTION_FAILURE); } @@ -849,7 +880,7 @@ assign_vars: { t1 = dequote_string (t); var = bind_read_variable (varname, t1); - xfree (t1); + free (t1); } else var = bind_read_variable (varname, t ? t : ""); @@ -863,7 +894,7 @@ assign_vars: FREE (t); if (var == 0) { - xfree (orig_input_string); + free (orig_input_string); return (EXECUTION_FAILURE); } @@ -873,13 +904,13 @@ assign_vars: /* Now assign the rest of the line to the last variable argument. */ #if defined (ARRAY_VARS) - if (legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, 0) == 0) + if (legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, vflags) == 0) #else if (legal_identifier (list->word->word) == 0) #endif { sh_invalidid (list->word->word); - xfree (orig_input_string); + free (orig_input_string); return (EXECUTION_FAILURE); } @@ -910,7 +941,7 @@ assign_vars: { t = dequote_string (input_string); var = bind_read_variable (list->word->word, t); - xfree (t); + free (t); } else var = bind_read_variable (list->word->word, input_string ? input_string : ""); @@ -924,7 +955,7 @@ assign_vars: retval = EXECUTION_FAILURE; FREE (tofree); - xfree (orig_input_string); + free (orig_input_string); return (retval); } @@ -936,10 +967,10 @@ bind_read_variable (name, value) SHELL_VAR *v; #if defined (ARRAY_VARS) - if (valid_array_reference (name, 0) == 0) + if (valid_array_reference (name, assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0) == 0) v = bind_variable (name, value, 0); else - v = assign_array_element (name, value, 0); + v = assign_array_element (name, value, assoc_expand_once ? ASS_NOEXPAND : 0); #else /* !ARRAY_VARS */ v = bind_variable (name, value, 0); #endif /* !ARRAY_VARS */ @@ -973,12 +1004,15 @@ read_mbchar (fd, string, ind, ch, unbuffered) if (ret == (size_t)-2) { ps = ps_back; + /* We don't want to be interrupted during a multibyte char read */ - if (unbuffered) + if (unbuffered == 2) + r = zreadn (fd, &c, 1); + else if (unbuffered) r = zread (fd, &c, 1); else r = zreadc (fd, &c); - if (r < 0) + if (r <= 0) goto mbchar_return; mbchar[i++] = c; continue; @@ -1001,7 +1035,7 @@ static void ttyrestore (ttp) struct ttsave *ttp; { - ttsetattr (ttp->fd, ttp->attrs); + ttsetattr (ttp->fd, &(ttp->attrs)); tty_modified = 0; } diff --git a/builtins/return.def b/builtins/return.def index 4d9fef1d2..77e8d7c78 100644 --- a/builtins/return.def +++ b/builtins/return.def @@ -46,13 +46,10 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../execute_cmd.h" #include "common.h" #include "bashgetopt.h" -extern int last_command_exit_value; -extern int subshell_environment; -extern int return_catch_flag, return_catch_value; - /* If we are executing a user-defined function then exit with the value specified as an argument. if no argument is given, then the last exit status is used. */ diff --git a/builtins/set.def b/builtins/set.def index 8122361e3..d2bba434d 100644 --- a/builtins/set.def +++ b/builtins/set.def @@ -1,7 +1,7 @@ This file is set.def, from which is created set.c. It implements the "set" and "unset" builtins in Bash. -Copyright (C) 1987-2015 Free Software Foundation, Inc. +Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -35,6 +35,7 @@ $PRODUCES set.c #include "../bashintl.h" #include "../shell.h" +#include "../parser.h" #include "../flags.h" #include "common.h" #include "bashgetopt.h" @@ -49,14 +50,6 @@ $PRODUCES set.c # include "../bashhist.h" #endif -extern int posixly_correct, ignoreeof, eof_encountered_limit; -#if defined (HISTORY) -extern int dont_save_function_defs; -#endif -#if defined (READLINE) -extern int no_line_editing; -#endif /* READLINE */ - $BUILTIN set $FUNCTION set_builtin $SHORT_DOC set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] @@ -161,6 +154,8 @@ $END typedef int setopt_set_func_t __P((int, char *)); typedef int setopt_get_func_t __P((char *)); +static int find_minus_o_option __P((char *)); + static void print_minus_o_option __P((char *, int, int)); static void print_all_shell_variables __P((void)); @@ -249,6 +244,18 @@ const struct { ((o_options[i].set_func) ? (*o_options[i].set_func) (onoff, name) \ : (*o_options[i].variable = (onoff == FLAG_ON))) +static int +find_minus_o_option (name) + char *name; +{ + register int i; + + for (i = 0; o_options[i].name; i++) + if (STREQ (name, o_options[i].name)) + return i; + return -1; +} + int minus_o_option_value (name) char *name; @@ -256,21 +263,17 @@ minus_o_option_value (name) register int i; int *on_or_off; - for (i = 0; o_options[i].name; i++) + i = find_minus_o_option (name); + if (i < 0) + return (-1); + + if (o_options[i].letter) { - if (STREQ (name, o_options[i].name)) - { - if (o_options[i].letter) - { - on_or_off = find_flag (o_options[i].letter); - return ((on_or_off == FLAG_UNKNOWN) ? -1 : *on_or_off); - } - else - return (GET_BINARY_O_OPTION_VALUE (i, name)); - } + on_or_off = find_flag (o_options[i].letter); + return ((on_or_off == FLAG_UNKNOWN) ? -1 : *on_or_off); } - - return (-1); + else + return (GET_BINARY_O_OPTION_VALUE (i, name)); } #define MINUS_O_FORMAT "%-15s\t%s\n" @@ -330,9 +333,12 @@ char * get_current_options () { char *temp; - int i; + int i, posixopts; - temp = (char *)xmalloc (1 + N_O_OPTIONS); + posixopts = num_posix_options (); /* shopts modified by posix mode */ + /* Make the buffer big enough to hold the set -o options and the shopt + options modified by posix mode. */ + temp = (char *)xmalloc (1 + N_O_OPTIONS + posixopts); for (i = 0; o_options[i].name; i++) { if (o_options[i].letter) @@ -340,7 +346,11 @@ get_current_options () else temp[i] = GET_BINARY_O_OPTION_VALUE (i, o_options[i].name); } - temp[i] = '\0'; + + /* Add the shell options that are modified by posix mode to the end of the + bitmap. They will be handled in set_current_options() */ + get_posix_options (temp+i); + temp[i+posixopts] = '\0'; return (temp); } @@ -352,6 +362,7 @@ set_current_options (bitmap) if (bitmap == 0) return; + for (i = 0; o_options[i].name; i++) { if (o_options[i].letter) @@ -359,6 +370,9 @@ set_current_options (bitmap) else SET_BINARY_O_OPTION_VALUE (i, bitmap[i] ? FLAG_ON : FLAG_OFF, o_options[i].name); } + + /* Now reset the variables changed by posix mode */ + set_posix_options (bitmap+i); } static int @@ -458,32 +472,29 @@ set_minus_o_option (on_or_off, option_name) { register int i; - for (i = 0; o_options[i].name; i++) + i = find_minus_o_option (option_name); + if (i < 0) { - if (STREQ (option_name, o_options[i].name)) - { - if (o_options[i].letter == 0) - { - previous_option_value = GET_BINARY_O_OPTION_VALUE (i, o_options[i].name); - SET_BINARY_O_OPTION_VALUE (i, on_or_off, option_name); - return (EXECUTION_SUCCESS); - } - else - { - if ((previous_option_value = change_flag (o_options[i].letter, on_or_off)) == FLAG_ERROR) - { - sh_invalidoptname (option_name); - return (EXECUTION_FAILURE); - } - else - return (EXECUTION_SUCCESS); - } + sh_invalidoptname (option_name); + return (EX_USAGE); + } + if (o_options[i].letter == 0) + { + previous_option_value = GET_BINARY_O_OPTION_VALUE (i, o_options[i].name); + SET_BINARY_O_OPTION_VALUE (i, on_or_off, option_name); + return (EXECUTION_SUCCESS); + } + else + { + if ((previous_option_value = change_flag (o_options[i].letter, on_or_off)) == FLAG_ERROR) + { + sh_invalidoptname (option_name); + return (EXECUTION_FAILURE); } + else + return (EXECUTION_SUCCESS); } - - sh_invalidoptname (option_name); - return (EX_USAGE); } static void @@ -807,7 +818,7 @@ unset_builtin (list) WORD_LIST *list; { int unset_function, unset_variable, unset_array, opt, nameref, any_failed; - int global_unset_func, global_unset_var; + int global_unset_func, global_unset_var, vflags; char *name, *tname; unset_function = unset_variable = unset_array = nameref = any_failed = 0; @@ -844,6 +855,10 @@ unset_builtin (list) else if (unset_function && nameref) nameref = 0; +#if defined (ARRAY_VARS) + vflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0; +#endif + while (list) { SHELL_VAR *var; @@ -859,7 +874,8 @@ unset_builtin (list) #if defined (ARRAY_VARS) unset_array = 0; - if (!unset_function && nameref == 0 && valid_array_reference (name, 0)) + /* XXX valid array reference second arg was 0 */ + if (!unset_function && nameref == 0 && valid_array_reference (name, vflags)) { t = strchr (name, '['); *t++ = '\0'; @@ -916,7 +932,7 @@ unset_builtin (list) if (var && unset_array) { /* Let unbind_array_element decide what to do with non-array vars */ - tem = unbind_array_element (var, t); + tem = unbind_array_element (var, t, vflags); /* XXX new third arg */ if (tem == -2 && array_p (var) == 0 && assoc_p (var) == 0) { builtin_error (_("%s: not an array variable"), var->name); @@ -938,8 +954,8 @@ unset_builtin (list) if (valid_array_reference (nameref_cell (var), 0)) { tname = savestring (nameref_cell (var)); - if (var = array_variable_part (tname, &t, 0)) - tem = unbind_array_element (var, t); + if (var = array_variable_part (tname, 0, &t, (int *)0)) + tem = unbind_array_element (var, t, vflags); /* XXX new third arg */ free (tname); } else diff --git a/builtins/setattr.def b/builtins/setattr.def index 8f29e11e8..251bcacbc 100644 --- a/builtins/setattr.def +++ b/builtins/setattr.def @@ -34,13 +34,11 @@ $PRODUCES setattr.c #include "../bashintl.h" #include "../shell.h" +#include "../execute_cmd.h" #include "../flags.h" #include "common.h" #include "bashgetopt.h" -extern int posixly_correct; -extern int array_needs_making; -extern char *this_command_name; extern sh_builtin_func_t *this_shell_builtin; #ifdef ARRAY_VARS @@ -279,6 +277,12 @@ set_or_show_attributes (list, attribute, nodefs) } set_var_attribute (name, attribute, undo); + if (assign) /* restore word */ + { + name[assign] = '='; + if (aflags & ASS_APPEND) + name[assign-1] = '+'; + } list = list->next; } } @@ -506,7 +510,7 @@ show_name_attributes (name, nodefs) var = find_variable_noref (name); #endif - if (var /* && invisible_p (var) == 0 */) /* XXX bash-4.4/bash-5.0 */ + if (var /* && invisible_p (var) == 0 */) { show_var_attributes (var, READONLY_OR_EXPORT, nodefs); return (0); @@ -539,7 +543,7 @@ set_var_attribute (name, attribute, undo) int attribute, undo; { SHELL_VAR *var, *tv, *v, *refvar; - char *tvalue, *refname; + char *tvalue; if (undo) var = find_variable (name); @@ -562,18 +566,23 @@ set_var_attribute (name, attribute, undo) var->attributes |= tv->attributes & ~att_tempvar; /* This avoids an error message when propagating a read-only var later on. */ - if (var->context == 0 && (attribute & att_readonly)) + if (posixly_correct || shell_compatibility_level <= 44) { - /* Don't bother to set the `propagate to the global variables - table' flag if we've just bound the variable in that table */ - v = find_global_variable (tv->name); - if (v != var) + if (var->context == 0 && (attribute & att_readonly)) + { + /* Don't bother to set the `propagate to the global variables + table' flag if we've just bound the variable in that + table */ + v = find_global_variable (tv->name); + if (v != var) + VSETATTR (tv, att_propagate); + } + else VSETATTR (tv, att_propagate); + if (var->context != 0) + VSETATTR (var, att_propagate); } - else - VSETATTR (tv, att_propagate); - if (var->context != 0) - VSETATTR (var, att_propagate); + SETVARATTR (tv, attribute, undo); /* XXX */ stupidly_hack_special_variables (tv->name); diff --git a/builtins/shopt.def b/builtins/shopt.def index 2febb7eeb..f6dc6f97c 100644 --- a/builtins/shopt.def +++ b/builtins/shopt.def @@ -1,7 +1,7 @@ This file is shopt.def, from which is created shopt.c. It implements the Bash `shopt' builtin. -Copyright (C) 1994-2016 Free Software Foundation, Inc. +Copyright (C) 1994-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -26,8 +26,8 @@ $SHORT_DOC shopt [-pqsu] [-o] [optname ...] Set and unset shell options. Change the setting of each shell option OPTNAME. Without any option -arguments, list all shell options with an indication of whether or not each -is set. +arguments, list each supplied OPTNAME, or all shell options if no +OPTNAMEs are given, with an indication of whether or not each is set. Options: -o restrict OPTNAMEs to those defined for use with `set -o' @@ -91,6 +91,8 @@ extern int glob_star; extern int glob_asciirange; extern int lastpipe_opt; extern int inherit_errexit; +extern int localvar_inherit; +extern int localvar_unset; #if defined (EXTENDED_GLOB) extern int extended_glob; @@ -108,20 +110,25 @@ extern int enable_hostname_completion __P((int)); #if defined (PROGRAMMABLE_COMPLETION) extern int prog_completion_enabled; -#endif - -#if defined (RESTRICTED_SHELL) -extern char *shell_name; +extern int progcomp_alias; #endif #if defined (DEBUGGER) extern int debugging_mode; #endif +#if defined (ARRAY_VARS) +extern int assoc_expand_once; +extern int array_expand_once; +#endif + +#if defined (SYSLOG_HISTORY) && defined (SYSLOG_SHOPT) +extern int syslog_history; +#endif + static void shopt_error __P((char *)); static int set_shellopts_after_change __P((char *, int)); -static int shopt_enable_hostname_completion __P((char *, int)); static int set_compatibility_level __P((char *, int)); #if defined (RESTRICTED_SHELL) @@ -129,6 +136,7 @@ static int set_restricted_shell __P((char *, int)); #endif #if defined (READLINE) +static int shopt_enable_hostname_completion __P((char *, int)); static int shopt_set_complete_direxpand __P((char *, int)); #endif @@ -141,6 +149,7 @@ static int shopt_compat40; static int shopt_compat41; static int shopt_compat42; static int shopt_compat43; +static int shopt_compat44; typedef int shopt_set_func_t __P((char *, int)); @@ -153,6 +162,9 @@ static struct { shopt_set_func_t *set_func; } shopt_vars[] = { { "autocd", &autocd, (shopt_set_func_t *)NULL }, +#if defined (ARRAY_VARS) + { "assoc_expand_once", &assoc_expand_once, (shopt_set_func_t *)NULL }, +#endif { "cdable_vars", &cdable_vars, (shopt_set_func_t *)NULL }, { "cdspell", &cdspelling, (shopt_set_func_t *)NULL }, { "checkhash", &check_hashed_filenames, (shopt_set_func_t *)NULL }, @@ -169,6 +181,7 @@ static struct { { "compat41", &shopt_compat41, set_compatibility_level }, { "compat42", &shopt_compat42, set_compatibility_level }, { "compat43", &shopt_compat43, set_compatibility_level }, + { "compat44", &shopt_compat44, set_compatibility_level }, #if defined (READLINE) { "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL}, { "direxpand", &dircomplete_expand, shopt_set_complete_direxpand }, @@ -206,6 +219,8 @@ static struct { #if defined (HISTORY) { "lithist", &literal_history, (shopt_set_func_t *)NULL }, #endif + { "localvar_inherit", &localvar_inherit, (shopt_set_func_t *)NULL }, + { "localvar_unset", &localvar_unset, (shopt_set_func_t *)NULL }, { "login_shell", &shopt_login_shell, set_login_shell }, { "mailwarn", &mail_warning, (shopt_set_func_t *)NULL }, #if defined (READLINE) @@ -216,6 +231,9 @@ static struct { { "nullglob", &allow_null_glob_expansion, (shopt_set_func_t *)NULL }, #if defined (PROGRAMMABLE_COMPLETION) { "progcomp", &prog_completion_enabled, (shopt_set_func_t *)NULL }, +# if defined (ALIAS) + { "progcomp_alias", &progcomp_alias, (shopt_set_func_t *)NULL }, +# endif #endif { "promptvars", &promptvars, (shopt_set_func_t *)NULL }, #if defined (RESTRICTED_SHELL) @@ -223,6 +241,9 @@ static struct { #endif { "shift_verbose", &print_shift_error, (shopt_set_func_t *)NULL }, { "sourcepath", &source_uses_path, (shopt_set_func_t *)NULL }, +#if defined (SYSLOG_HISTORY) && defined (SYSLOG_SHOPT) + { "syslog_history", &syslog_history, (shopt_set_func_t *)NULL }, +#endif { "xpg_echo", &xpg_echo, (shopt_set_func_t *)NULL }, { (char *)0, (int *)0, (shopt_set_func_t *)NULL } }; @@ -345,6 +366,14 @@ reset_shopt_options () command_oriented_history = 1; #endif +#if defined (SYSLOG_HISTORY) +# if defined (SYSLOG_SHOPT) + syslog_history = SYSLOG_SHOPT; +# else + syslog_history = 1; +# endif /* SYSLOG_SHOPT */ +#endif + #if defined (READLINE) complete_fullquote = 1; force_fignore = 1; @@ -572,10 +601,13 @@ shopt_set_debug_mode (option_name, mode) #if defined (DEBUGGER) error_trace_mode = function_trace_mode = debugging_mode; set_shellopts (); + if (debugging_mode) + init_bash_argv (); #endif return (0); } +#if defined (READLINE) static int shopt_enable_hostname_completion (option_name, mode) char *option_name; @@ -583,6 +615,7 @@ shopt_enable_hostname_completion (option_name, mode) { return (enable_hostname_completion (mode)); } +#endif static int set_compatibility_level (option_name, mode) @@ -590,6 +623,7 @@ set_compatibility_level (option_name, mode) int mode; { int ind; + char *rhs; /* If we're setting something, redo some of the work we did above in toggle_shopt(). Unset everything and reset the appropriate option @@ -598,6 +632,7 @@ set_compatibility_level (option_name, mode) { shopt_compat31 = shopt_compat32 = 0; shopt_compat40 = shopt_compat41 = shopt_compat42 = shopt_compat43 = 0; + shopt_compat44 = 0; ind = find_shopt (option_name); *shopt_vars[ind].value = mode; } @@ -615,9 +650,16 @@ set_compatibility_level (option_name, mode) shell_compatibility_level = 42; else if (shopt_compat43) shell_compatibility_level = 43; + else if (shopt_compat44) + shell_compatibility_level = 44; else shell_compatibility_level = DEFAULT_COMPAT_LEVEL; + /* Make sure the current compatibility level is reflected in BASH_COMPAT */ + rhs = itos (shell_compatibility_level); + bind_variable ("BASH_COMPAT", rhs, 0); + free (rhs); + return 0; } @@ -628,10 +670,13 @@ set_compatibility_opts () { shopt_compat31 = shopt_compat32 = 0; shopt_compat40 = shopt_compat41 = shopt_compat42 = shopt_compat43 = 0; + shopt_compat44 = 0; switch (shell_compatibility_level) { case DEFAULT_COMPAT_LEVEL: break; + case 44: + shopt_compat44 = 1; break; case 43: shopt_compat43 = 1; break; case 42: diff --git a/builtins/source.def b/builtins/source.def index b3df1f9fd..bdd197fd1 100644 --- a/builtins/source.def +++ b/builtins/source.def @@ -69,6 +69,7 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../execute_cmd.h" #include "../flags.h" #include "../findcmd.h" #include "common.h" @@ -79,10 +80,6 @@ $END extern int errno; #endif /* !errno */ -extern int posixly_correct; -extern int last_command_exit_value; -extern int executing_command_builtin; - static void maybe_pop_dollar_vars __P((void)); /* If non-zero, `.' uses $PATH to look up the script to be sourced. */ @@ -169,12 +166,14 @@ source_builtin (list) } begin_unwind_frame ("source"); - add_unwind_protect ((Function *)xfree, filename); + add_unwind_protect (xfree, filename); if (list->next) { push_dollar_vars (); add_unwind_protect ((Function *)maybe_pop_dollar_vars, (char *)NULL); + if (debugging_mode || shell_compatibility_level <= 44) + init_bash_argv (); /* Initialize BASH_ARGV and BASH_ARGC */ remember_args (list->next, 1); if (debugging_mode) push_args (list->next); /* Update BASH_ARGV and BASH_ARGC */ diff --git a/builtins/test.def b/builtins/test.def index d6c89bf9b..bd9a203b6 100644 --- a/builtins/test.def +++ b/builtins/test.def @@ -125,11 +125,10 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../execute_cmd.h" #include "../test.h" #include "common.h" -extern char *this_command_name; - /* TEST/[ builtin. */ int test_builtin (list) diff --git a/builtins/trap.def b/builtins/trap.def index d43b0ef66..09846981f 100644 --- a/builtins/trap.def +++ b/builtins/trap.def @@ -97,9 +97,6 @@ static int display_traps __P((WORD_LIST *)); #define REVERT 1 /* Revert to this signals original value. */ #define IGNORE 2 /* Ignore this signal. */ -extern int posixly_correct, subshell_environment; -extern int sourcelevel, running_trap; - int trap_builtin (list) WORD_LIST *list; diff --git a/builtins/type.def b/builtins/type.def index 3187add22..699ecd200 100644 --- a/builtins/type.def +++ b/builtins/type.def @@ -64,6 +64,8 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../parser.h" +#include "../execute_cmd.h" #include "../findcmd.h" #include "../hashcmd.h" @@ -76,9 +78,6 @@ $END extern int find_reserved_word __P((char *)); -extern char *this_command_name; -extern int expand_aliases, posixly_correct; - /* For each word in LIST, find out what the shell is going to do with it as a simple command. i.e., which file would this shell use to execve, or if it is a builtin command, or an alias. Possible flag diff --git a/builtins/ulimit.def b/builtins/ulimit.def index 62def4f6f..9b88c8cb3 100644 --- a/builtins/ulimit.def +++ b/builtins/ulimit.def @@ -203,8 +203,6 @@ extern int errno; #define BLOCKSIZE(x) (((x) == POSIXBLK) ? (posixly_correct ? 512 : 1024) : (x)) -extern int posixly_correct; - static int _findlim __P((int)); static int ulimit_internal __P((int, char *, int, int)); diff --git a/builtins/wait.def b/builtins/wait.def index 974f959b7..5deb3735c 100644 --- a/builtins/wait.def +++ b/builtins/wait.def @@ -1,7 +1,7 @@ This file is wait.def, from which is created wait.c. It implements the builtin "wait" in Bash. -Copyright (C) 1987-2015 Free Software Foundation, Inc. +Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -22,18 +22,21 @@ $BUILTIN wait $FUNCTION wait_builtin $DEPENDS_ON JOB_CONTROL $PRODUCES wait.c -$SHORT_DOC wait [-n] [id ...] +$SHORT_DOC wait [-fn] [id ...] Wait for job completion and return exit status. Waits for each process identified by an ID, which may be a process ID or a job specification, and reports its termination status. If ID is not given, waits for all currently active child processes, and the return -status is zero. If ID is a a job specification, waits for all processes +status is zero. If ID is a job specification, waits for all processes in that job's pipeline. If the -n option is supplied, waits for the next job to terminate and returns its exit status. +If the -f option is supplied, and job control is enabled, waits for the +specified ID to terminate, instead of waiting for it to change status. + Exit Status: Returns the status of the last ID; fails if ID is invalid or an invalid option is given. @@ -68,12 +71,12 @@ $END #include "../bashansi.h" #include "../shell.h" +#include "../execute_cmd.h" #include "../jobs.h" #include "common.h" #include "bashgetopt.h" extern int wait_signal_received; -extern int last_command_exit_signal; procenv_t wait_intr_buf; int wait_intr_flag; @@ -97,14 +100,14 @@ int wait_builtin (list) WORD_LIST *list; { - int status, code, opt, nflag; + int status, code, opt, nflag, wflags; volatile int old_interrupt_immediately; USE_VAR(list); - nflag = 0; + nflag = wflags = 0; reset_internal_getopt (); - while ((opt = internal_getopt (list, "n")) != -1) + while ((opt = internal_getopt (list, "nf")) != -1) { switch (opt) { @@ -112,6 +115,9 @@ wait_builtin (list) case 'n': nflag = 1; break; + case 'f': + wflags |= JWAIT_FORCE; + break; #endif CASE_HELPOPT; default: @@ -151,7 +157,7 @@ wait_builtin (list) #if defined (JOB_CONTROL) if (nflag) { - status = wait_for_any_job (); + status = wait_for_any_job (wflags); if (status < 0) status = 127; WAIT_RETURN (status); @@ -179,7 +185,7 @@ wait_builtin (list) if (legal_number (w, &pid_value) && pid_value == (pid_t)pid_value) { pid = (pid_t)pid_value; - status = wait_for_single_pid (pid, 1); + status = wait_for_single_pid (pid, wflags|JWAIT_PERROR); } else { @@ -209,7 +215,7 @@ wait_builtin (list) /* Job spec used. Wait for the last pid in the pipeline. */ UNBLOCK_CHILD (oset); - status = wait_for_job (job); + status = wait_for_job (job, wflags); } #endif /* JOB_CONTROL */ else diff --git a/command.h b/command.h index 3da5b77da..32495162a 100644 --- a/command.h +++ b/command.h @@ -94,13 +94,15 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, #define W_HASQUOTEDNULL 0x040000 /* word contains a quoted null character */ #define W_DQUOTE 0x080000 /* word should be treated as if double-quoted */ #define W_NOPROCSUB 0x100000 /* don't perform process substitution */ -#define W_HASCTLESC 0x200000 /* word contains literal CTLESC characters */ +#define W_SAWQUOTEDNULL 0x200000 /* word contained a quoted null that was removed */ #define W_ASSIGNASSOC 0x400000 /* word looks like associative array assignment */ #define W_ASSIGNARRAY 0x800000 /* word looks like a compound indexed array assignment */ #define W_ARRAYIND 0x1000000 /* word is an array index being expanded */ #define W_ASSNGLOBAL 0x2000000 /* word is a global assignment to declare (declare/typeset -g) */ #define W_NOBRACE 0x4000000 /* Don't perform brace expansion */ #define W_COMPLETE 0x8000000 /* word is being expanded for completion */ +#define W_CHKLOCAL 0x10000000 /* check for local vars on assignment */ +#define W_NOASSNTILDE 0x20000000 /* don't do tilde expansion like an assignment statement */ /* Flags for the `pflags' argument to param_expand() and various parameter_brace_expand_xxx functions; also used for string_list_dollar_at */ @@ -352,6 +354,7 @@ typedef struct group_com { typedef struct subshell_com { int flags; + int line; COMMAND *command; } SUBSHELL_COM; diff --git a/config-top.h b/config-top.h index d89682e5b..56dbd51e6 100644 --- a/config-top.h +++ b/config-top.h @@ -53,7 +53,7 @@ /* Define DONT_REPORT_SIGTERM if you don't want to see `Terminates' message when a job exits due to SIGTERM, since that's the default signal sent by the kill builtin. */ -/* #define DONT_REPORT_SIGTERM */ +#define DONT_REPORT_SIGTERM /* Define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS if you don't want builtins like `echo' and `printf' to report errors when output does not succeed @@ -66,6 +66,10 @@ "/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:." #endif +/* If you want to unconditionally set a value for PATH in every restricted + shell, set this. */ +/* #define RBASH_STATIC_PATH_VALUE "/rbin:/usr/rbin" */ + /* The value for PATH when invoking `command -p'. This is only used when the Posix.2 confstr () function, or CS_PATH define are not present. */ #ifndef STANDARD_UTILS_PATH @@ -120,17 +124,25 @@ # define OPENLOG_OPTS LOG_PID #endif +/* Define if you want syslogging history to be controllable at runtime via a + shell option; if defined, the value is the default for the syslog_history + shopt option */ +#if defined (SYSLOG_HISTORY) +/* #define SYSLOG_SHOPT 1 */ +#endif + /* Define if you want to include code in shell.c to support wordexp(3) */ /* #define WORDEXP_OPTION */ -/* Define as 1 if you want to enable code that implements multiple coprocs */ +/* Define as 1 if you want to enable code that implements multiple coprocs + executing simultaneously */ #ifndef MULTIPLE_COPROCS # define MULTIPLE_COPROCS 0 #endif /* Define to 0 if you want the checkwinsize option off by default, 1 if you want it on. */ -#define CHECKWINSIZE_DEFAULT 0 +#define CHECKWINSIZE_DEFAULT 1 /* Define to 1 if you want to optimize for sequential array assignment when using indexed arrays, 0 if you want bash-4.2 behavior, which favors @@ -149,7 +161,8 @@ no longer exists. This behavior is the default in Posix mode. */ #define CHECKHASH_DEFAULT 0 -/* Define to the maximum level of recursion you want for the eval builtin. +/* Define to the maximum level of recursion you want for the eval builtin + and trap handlers (since traps are run as if run by eval). 0 means the limit is not active. */ #define EVALNEST_MAX 0 @@ -160,3 +173,16 @@ /* Define to use libc mktemp/mkstemp instead of replacements in lib/sh/tmpfile.c */ #define USE_MKTEMP #define USE_MKSTEMP + +/* Define to force the value of OLDPWD inherited from the environment to be a + directory */ +#define OLDPWD_CHECK_DIRECTORY 1 + +/* Define to set the initial size of the history list ($HISTSIZE). This must + be a string. */ +/*#define HISTSIZE_DEFAULT "500"*/ + +/* Define to 0 if you want history expansion to be disabled by default in + interactive shells; define to 1 for the historical behavior of enabling + when the shell is interactive. */ +#define HISTEXPAND_DEFAULT 1 diff --git a/config.h.in b/config.h.in index a5ad9e729..8554aecca 100644 --- a/config.h.in +++ b/config.h.in @@ -242,6 +242,9 @@ /* The number of bytes in a `long long', if we have one. */ #undef SIZEOF_LONG_LONG +/* The number of bytes in a `wchar_t', if supported */ +#undef SIZEOF_WCHAR_T + /* System paths */ #define DEFAULT_MAIL_DIRECTORY "/usr/spool/mail" @@ -449,6 +452,7 @@ #undef SYS_TIME_H_DEFINES_STRUCT_TIMESPEC #undef PTHREAD_H_DEFINES_STRUCT_TIMESPEC +#undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC #undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC #undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC #undef HAVE_STRUCT_STAT_ST_ATIMENSEC @@ -605,6 +609,12 @@ /* Define if you have the fcntl function. */ #undef HAVE_FCNTL +/* Define if you have the fnmatch function. */ +#undef HAVE_FNMATCH + +/* Can fnmatch be used as a fallback to match [=equiv=] with collation weights? */ +#undef FNMATCH_EQUIV_FALLBACK + /* Define if you have the fpurge/__fpurge function. */ #undef HAVE_FPURGE #undef HAVE___FPURGE @@ -1021,6 +1031,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 @@ -1126,6 +1139,8 @@ #undef GETCWD_BROKEN +#undef DEV_FD_STAT_BROKEN + /* Additional defines for configuring lib/intl, maintained by autoscan/autoheader */ /* Define if you have the header file. */ @@ -1158,6 +1173,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 60f86d649..2f6266297 100755 --- a/configure +++ b/configure @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac for Bash 4.4, version 4.082. +# From configure.ac for Bash 5.0, version 5.005. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for bash 4.4-release. +# Generated by GNU Autoconf 2.69 for bash 5.0-release. # # Report bugs to . # @@ -581,8 +581,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='4.4-release' -PACKAGE_STRING='bash 4.4-release' +PACKAGE_VERSION='5.0-release' +PACKAGE_STRING='bash 5.0-release' PACKAGE_BUGREPORT='bug-bash@gnu.org' PACKAGE_URL='' @@ -802,6 +802,7 @@ enable_cond_command enable_cond_regexp enable_coprocesses enable_debugger +enable_dev_fd_stat_broken enable_direxpand_default enable_directory_stack enable_disabled_builtins @@ -1393,7 +1394,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures bash 4.4-release to adapt to many kinds of systems. +\`configure' configures bash 5.0-release to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1458,7 +1459,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 4.4-release:";; + short | recursive ) echo "Configuration of bash 5.0-release:";; esac cat <<\_ACEOF @@ -1486,6 +1487,9 @@ Optional Features: --enable-coprocesses enable coprocess support and the coproc reserved word --enable-debugger enable support for bash debugger + --enable-dev-fd-stat-broken + enable this option if stat on /dev/fd/N and fstat on + file descriptor N don't return the same results --enable-direxpand-default enable the direxpand shell option by default --enable-directory-stack @@ -1562,7 +1566,7 @@ Some influential environment variables: CC_FOR_BUILD C compiler used when compiling binaries used only at build time CFLAGS_FOR_BUILD - Compliation options (CFLAGS) used when compiling binaries used + Compilation options (CFLAGS) used when compiling binaries used only at build time LDFLAGS_FOR_BUILD Linker options (LDFLAGS) used when compiling binaries used only @@ -1651,7 +1655,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bash configure 4.4-release +bash configure 5.0-release generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2360,7 +2364,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by bash $as_me 4.4-release, which was +It was created by bash $as_me 5.0-release, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2645,6 +2649,7 @@ as_fn_append ac_header_list " unistd.h" as_fn_append ac_header_list " sys/param.h" as_fn_append ac_header_list " sys/time.h" as_fn_append ac_func_list " alarm" +as_fn_append ac_func_list " sbrk" as_fn_append ac_func_list " fpurge" as_fn_append ac_func_list " __fpurge" as_fn_append ac_func_list " snprintf" @@ -2753,7 +2758,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ac_config_headers="$ac_config_headers config.h" -BASHVERS=4.4 +BASHVERS=5.0 RELSTATUS=release case "$RELSTATUS" in @@ -2842,33 +2847,38 @@ opt_with_installed_readline=no #htmldir= case "${host_cpu}-${host_os}" in +# mostly obsolete platforms alpha*-*) opt_bash_malloc=no ;; # alpha running osf/1 or linux *[Cc]ray*-*) opt_bash_malloc=no ;; # Crays *-osf1*) opt_bash_malloc=no ;; # other osf/1 machines +*-dgux*) opt_bash_malloc=no ;; # DG/UX machines sparc-svr4*) opt_bash_malloc=no ;; # sparc SVR4, SVR4.2 -sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment -mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment m68k-sysv) opt_bash_malloc=no ;; # fixes file descriptor leak in closedir +*-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins +*-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft +*-beos*) opt_bash_malloc=no ;; # they say it's suitable +# These need additional investigation sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF -#*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here -#*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree -*-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment -*-mirbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment *-aix*) opt_bash_malloc=no ;; # AIX machines +*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment +# Mach-derived systems have a ton of extra malloc functions and lack sbrk(2) *-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep *-openstep*) opt_bash_malloc=no ;; # i386/Sparc/HP machines running Openstep *-macos*) opt_bash_malloc=no ;; # Apple MacOS X *-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X) *-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X) -*-dgux*) opt_bash_malloc=no ;; # DG/UX machines -*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX 6.x *-machten4) opt_bash_malloc=no ;; # MachTen 4.x -*-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins -*-beos*) opt_bash_malloc=no ;; # they say it's suitable -*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment -*-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft +# Niche or non-mainstream-shell-user systems +*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX [67].x *-nsk*) opt_bash_malloc=no ;; # HP NonStop *-haiku*) opt_bash_malloc=no ;; # Haiku OS +# Deprecated -- bash malloc is suitable +#sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment +#mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment +#*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here +#*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree +#*-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment +#*-mirbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment esac # memory scrambling on free() @@ -2976,8 +2986,9 @@ opt_casemod_attrs=yes opt_casemod_expansions=yes opt_extglob_default=no opt_dircomplete_expand_default=no -opt_globascii_default=no +opt_globascii_default=yes opt_function_import=yes +opt_dev_fd_stat_broken=no opt_static_link=no opt_profiling=no @@ -2998,7 +3009,7 @@ if test $opt_minimal_config = yes; then opt_net_redirs=no opt_progcomp=no opt_separate_help=no opt_multibyte=yes opt_cond_regexp=no opt_coproc=no opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no - opt_globascii_default=no + opt_globascii_default=yes fi # Check whether --enable-alias was given. @@ -3061,6 +3072,11 @@ if test "${enable_debugger+set}" = set; then : enableval=$enable_debugger; opt_debugger=$enableval fi +# Check whether --enable-dev-fd-stat-broken was given. +if test "${enable_dev_fd_stat_broken+set}" = set; then : + enableval=$enable_dev_fd_stat_broken; opt_dev_fd_stat_broken=$enableval +fi + # Check whether --enable-direxpand-default was given. if test "${enable_direxpand_default+set}" = set; then : enableval=$enable_direxpand_default; opt_dircomplete_expand_default=$enableval @@ -3326,6 +3342,10 @@ fi if test $opt_function_import = yes; then $as_echo "#define FUNCTION_IMPORT 1" >>confdefs.h +fi +if test $opt_dev_fd_stat_broken = yes; then +$as_echo "#define DEV_FD_STAT_BROKEN 1" >>confdefs.h + fi if test $opt_memscramble = yes; then @@ -4896,6 +4916,9 @@ if test "x$cross_compiling" = "xyes"; then i[3456]86-*-beos*) cross_cache=${srcdir}/cross-build/x86-beos.cache ;; + *-qnx*) + cross_cache=${srcdir}/cross-build/qnx.cache + ;; *) echo "configure: cross-compiling for $host is not supported" >&2 ;; esac @@ -4915,16 +4938,10 @@ fi CFLAGS=${CFLAGS-"$AUTO_CFLAGS"} # LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"} # XXX -# turn off paren warnings in gcc -if test "$GCC" = yes # && test -n "$DEBUG" -then - CFLAGS="$CFLAGS -Wno-parentheses -Wno-format-security" -fi - if test "$opt_profiling" = "yes"; then PROFILE_FLAGS=-pg case "$host_os" in - solaris2*) ;; + solaris2*|linux*) ;; *) opt_static_link=yes ;; esac DEBUG= MALLOC_DEBUG= @@ -4940,7 +4957,7 @@ if test "$opt_static_link" = yes; then if test -n "$GCC" || test "$ac_cv_c_compiler_gnu" = "yes"; then STATIC_LD="-static" case "$host_os" in - solaris2*) ;; + solaris2*|linux*) ;; *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental esac fi @@ -4952,7 +4969,11 @@ fi if test "X$cross_compiling" = "Xno"; then CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'} CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} # XXX - should it be '$(CPPFLAGS)' - LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} + if test X"$opt_profiling" = Xyes; then + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(BASE_LDFLAGS)'} + else + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} + fi # CFLAGS set above to default value if not passed in environment CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'} LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'} @@ -5195,6 +5216,45 @@ fi $as_echo "$ac_cv_lib_ncurses_tgetent" >&6; } if test "x$ac_cv_lib_ncurses_tgetent" = xyes; then : bash_cv_termcap_lib=libncurses +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5 +$as_echo_n "checking for tgetent in -lncursesw... " >&6; } +if ${ac_cv_lib_ncursesw_tgetent+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lncursesw $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ncursesw_tgetent=yes +else + ac_cv_lib_ncursesw_tgetent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5 +$as_echo "$ac_cv_lib_ncursesw_tgetent" >&6; } +if test "x$ac_cv_lib_ncursesw_tgetent" = xyes; then : + bash_cv_termcap_lib=libncursesw else bash_cv_termcap_lib=gnutermcap fi @@ -5209,6 +5269,8 @@ fi fi +fi + if test "X$_bash_needmsg" = "Xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 $as_echo_n "checking which library has the termcap functions... " >&6; } @@ -5268,7 +5330,7 @@ if ${ac_cv_rl_version+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : - ac_cv_rl_version='6.3' + ac_cv_rl_version='8.0' else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5382,7 +5444,7 @@ fi case "$ac_cv_rl_version" in - 5*|6*|7*|8*|9*) ;; + 8*|9*) ;; *) opt_with_installed_readline=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: installed readline library is too old to be linked with bash" >&5 $as_echo "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;} @@ -9270,7 +9332,7 @@ fi done for ac_header in sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \ - sys/param.h sys/socket.h sys/stat.h \ + sys/mman.h sys/param.h sys/socket.h sys/stat.h \ sys/time.h sys/times.h sys/types.h sys/wait.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -9804,7 +9866,7 @@ fi for ac_func in dup2 eaccess fcntl getdtablesize getgroups gethostname \ getpagesize getpeername getrlimit getrusage gettimeofday \ - kill killpg lstat pselect readlink sbrk select setdtablesize \ + kill killpg lstat pselect readlink select setdtablesize \ setitimer tcgetpgrp uname ulimit waitpid do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -10265,7 +10327,7 @@ else int main () { -int main() { long double r; char *foo, bar; r = strtold(foo, &bar);} +long double r; char *foo, bar; r = strtold(foo, &bar); ; return 0; } @@ -11024,7 +11086,7 @@ fi rm -f conftest.mmap conftest.txt for ac_func in __argz_count __argz_next __argz_stringify dcgettext mempcpy \ - munmap stpcpy strcspn + munmap mremap stpcpy strcspn do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -11445,6 +11507,40 @@ done LIBS="$OLDLIBS" fi +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5 +$as_echo_n "checking size of wchar_t... " >&6; } +if ${ac_cv_sizeof_wchar_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_wchar_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (wchar_t) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_wchar_t=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5 +$as_echo "$ac_cv_sizeof_wchar_t" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t +_ACEOF + + + if test "$opt_static_link" != yes; then @@ -14408,6 +14504,61 @@ fi + + + + + if test X$ac_cv_func_sbrk = Xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working sbrk" >&5 +$as_echo_n "checking for working sbrk... " >&6; } +if ${bash_cv_func_sbrk+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check working sbrk if cross-compiling" >&5 +$as_echo "$as_me: WARNING: cannot check working sbrk if cross-compiling" >&2;} + bash_cv_func_sbrk=yes + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main(int c, char **v) +{ + void *x; + + x = sbrk (4096); + exit ((x == (void *)-1) ? 1 : 0); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_func_sbrk=yes +else + bash_cv_func_snprintf=sbrk +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sbrk" >&5 +$as_echo "$bash_cv_func_sbrk" >&6; } + if test $bash_cv_func_sbrk = no; then + ac_cv_func_sbrk=no + fi + fi + if test $ac_cv_func_sbrk = no; then + +$as_echo "#define HAVE_SBRK 0" >>confdefs.h + + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the existence of strsignal" >&5 $as_echo_n "checking for the existence of strsignal... " >&6; } if ${bash_cv_have_strsignal+:} false; then : @@ -15118,6 +15269,67 @@ $as_echo "#define HAVE_PRINTF_A_FORMAT 1" >>confdefs.h fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fnmatch can be used to check bracket equivalence classes" >&5 +$as_echo_n "checking whether fnmatch can be used to check bracket equivalence classes... " >&6; } +if ${bash_cv_fnmatch_equiv_fallback+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check fnmatch if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check fnmatch if cross compiling -- defaulting to no" >&2;} + bash_cv_fnmatch_equiv_fallback=no + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include +#include + +char *pattern = "[[=a=]]"; + +/* char *string = "ä"; */ +unsigned char string[4] = { '\xc3', '\xa4', '\0' }; + +int +main (int c, char **v) +{ + setlocale (LC_ALL, "de_DE.UTF-8"); + if (fnmatch (pattern, (const char *)string, 0) != FNM_NOMATCH) + exit (0); + exit (1); +} + + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_fnmatch_equiv_fallback=yes +else + bash_cv_fnmatch_equiv_fallback=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fnmatch_equiv_fallback" >&5 +$as_echo "$bash_cv_fnmatch_equiv_fallback" >&6; } +if test "$bash_cv_fnmatch_equiv_fallback" = "yes" ; then + bash_cv_fnmatch_equiv_value=1 +else + bash_cv_fnmatch_equiv_value=0 +fi + +cat >>confdefs.h <<_ACEOF +#define FNMATCH_EQUIV_FALLBACK $bash_cv_fnmatch_equiv_value +_ACEOF + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if signal handlers must be reinstalled when invoked" >&5 @@ -15141,7 +15353,7 @@ else typedef RETSIGTYPE sigfunc(); -int nsigint; +volatile int nsigint; #ifdef HAVE_POSIX_SIGNALS sigfunc * @@ -15201,12 +15413,6 @@ fi $as_echo_n "checking for presence of necessary job control definitions... " >&6; } if ${bash_cv_job_control_missing+:} false; then : $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&5 -$as_echo "$as_me: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&2;} - bash_cv_job_control_missing=missing - else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -15220,51 +15426,54 @@ else #endif #include -/* Add more tests in here as appropriate. */ -main() -{ +/* add more tests in here as appropriate */ + /* signal type */ #if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) -exit(1); +#error #endif /* signals and tty control. */ #if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) -exit (1); +#error #endif /* process control */ #if !defined (WNOHANG) || !defined (WUNTRACED) -exit(1); +#error #endif /* Posix systems have tcgetpgrp and waitpid. */ #if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) -exit(1); +#error #endif #if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) -exit(1); +#error #endif /* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ #if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) -exit(1); +#error #endif -exit(0); + +int +main () +{ + + ; + return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO"; then : bash_cv_job_control_missing=present else bash_cv_job_control_missing=missing -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_job_control_missing" >&5 $as_echo "$bash_cv_job_control_missing" >&6; } @@ -15888,6 +16097,45 @@ fi $as_echo "$ac_cv_lib_ncurses_tgetent" >&6; } if test "x$ac_cv_lib_ncurses_tgetent" = xyes; then : bash_cv_termcap_lib=libncurses +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5 +$as_echo_n "checking for tgetent in -lncursesw... " >&6; } +if ${ac_cv_lib_ncursesw_tgetent+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lncursesw $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ncursesw_tgetent=yes +else + ac_cv_lib_ncursesw_tgetent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5 +$as_echo "$ac_cv_lib_ncursesw_tgetent" >&6; } +if test "x$ac_cv_lib_ncursesw_tgetent" = xyes; then : + bash_cv_termcap_lib=libncursesw else bash_cv_termcap_lib=gnutermcap fi @@ -15902,6 +16150,8 @@ fi fi +fi + if test "X$_bash_needmsg" = "Xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 $as_echo_n "checking which library has the termcap functions... " >&6; } @@ -15976,9 +16226,7 @@ $as_echo_n "checking whether /dev/stdin stdout stderr are available... " >&6; } if ${bash_cv_dev_stdin+:} false; then : $as_echo_n "(cached) " >&6 else - if test -d /dev/fd && (exec test -r /dev/stdin < /dev/null) ; then - bash_cv_dev_stdin=present - elif test -d /proc/self/fd && (exec test -r /dev/stdin < /dev/null) ; then + if (exec test -r /dev/stdin < /dev/null) ; then bash_cv_dev_stdin=present else bash_cv_dev_stdin=absent @@ -16065,10 +16313,12 @@ solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading case "`uname -r`" in - 2.[456789]*|[34]*) $as_echo "#define PGRP_PIPE 1" >>confdefs.h + 1.*|2.[0123]*) : ;; + *) $as_echo "#define PGRP_PIPE 1" >>confdefs.h ;; esac ;; -*qnx6*) LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;; +netbsd*|openbsd*) LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;; +*qnx[67]*) LOCAL_LIBS="-lncurses" ;; *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; powerux*) LOCAL_LIBS="-lgen" ;; cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; @@ -16106,6 +16356,16 @@ m88k-motorola-sysv3) LOCAL_CFLAGS=-DWAITPID_BROKEN ;; mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;; esac +# turn off paren warnings in gcc +if test "$GCC" = yes # && test -n "$DEBUG" +then + CFLAGS="$CFLAGS -Wno-parentheses -Wno-format-security" +# if test -n "$DEBUG" +# then +# CFLAGS="$CFLAGS -Werror" +# fi +fi + # # Shared object configuration section. These values are generated by # ${srcdir}/support/shobj-conf @@ -16124,6 +16384,9 @@ $as_echo_n "checking shared object configuration for loadable builtins... " >&6; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHOBJ_STATUS" >&5 $as_echo "$SHOBJ_STATUS" >&6; } +else + SHOBJ_STATUS=unsupported + fi # try to create a directory tree if the source is elsewhere @@ -16194,7 +16457,7 @@ fi #AC_SUBST(ALLOCA_SOURCE) #AC_SUBST(ALLOCA_OBJECT) -ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/Makefile.inc examples/loadables/perl/Makefile support/bash.pc" +ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/Makefile.inc examples/loadables/perl/Makefile support/bash.pc support/bashbug.sh" ac_config_commands="$ac_config_commands default" @@ -16705,7 +16968,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by bash $as_me 4.4-release, which was +This file was extended by bash $as_me 5.0-release, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16771,7 +17034,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -bash config.status 4.4-release +bash config.status 5.0-release configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -16922,6 +17185,7 @@ do "examples/loadables/Makefile.inc") CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile.inc" ;; "examples/loadables/perl/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;; "support/bash.pc") CONFIG_FILES="$CONFIG_FILES support/bash.pc" ;; + "support/bashbug.sh") CONFIG_FILES="$CONFIG_FILES support/bashbug.sh" ;; "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; diff --git a/configure.ac b/configure.ac index ce4e9b607..52b4cdbdb 100644 --- a/configure.ac +++ b/configure.ac @@ -1,11 +1,11 @@ dnl -dnl Configure script for bash-4.4 +dnl Configure script for bash-5.0 dnl dnl report bugs to chet@po.cwru.edu dnl dnl Process this file with autoconf to produce a configure script. -# Copyright (C) 1987-2016 Free Software Foundation, Inc. +# Copyright (C) 1987-2018 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify @@ -21,9 +21,9 @@ dnl Process this file with autoconf to produce a configure script. # You should have received a copy of the GNU General Public License # along with this program. If not, see . -AC_REVISION([for Bash 4.4, version 4.082])dnl +AC_REVISION([for Bash 5.0, version 5.005])dnl -define(bashvers, 4.4) +define(bashvers, 5.0) define(relstatus, release) AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org]) @@ -63,33 +63,38 @@ dnl some systems should be configured without the bash malloc by default dnl and some need a special compiler or loader dnl look in the NOTES file for more case "${host_cpu}-${host_os}" in +# mostly obsolete platforms alpha*-*) opt_bash_malloc=no ;; # alpha running osf/1 or linux *[[Cc]]ray*-*) opt_bash_malloc=no ;; # Crays *-osf1*) opt_bash_malloc=no ;; # other osf/1 machines +*-dgux*) opt_bash_malloc=no ;; # DG/UX machines sparc-svr4*) opt_bash_malloc=no ;; # sparc SVR4, SVR4.2 -sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment -mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment m68k-sysv) opt_bash_malloc=no ;; # fixes file descriptor leak in closedir +*-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins +*-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft +*-beos*) opt_bash_malloc=no ;; # they say it's suitable +# These need additional investigation sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF -#*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here -#*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree -*-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment -*-mirbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment *-aix*) opt_bash_malloc=no ;; # AIX machines +*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment +# Mach-derived systems have a ton of extra malloc functions and lack sbrk(2) *-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep *-openstep*) opt_bash_malloc=no ;; # i386/Sparc/HP machines running Openstep *-macos*) opt_bash_malloc=no ;; # Apple MacOS X *-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X) *-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X) -*-dgux*) opt_bash_malloc=no ;; # DG/UX machines -*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX 6.x *-machten4) opt_bash_malloc=no ;; # MachTen 4.x -*-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins -*-beos*) opt_bash_malloc=no ;; # they say it's suitable -*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment -*-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft +# Niche or non-mainstream-shell-user systems +*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX [67].x *-nsk*) opt_bash_malloc=no ;; # HP NonStop *-haiku*) opt_bash_malloc=no ;; # Haiku OS +# Deprecated -- bash malloc is suitable +#sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment +#mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment +#*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here +#*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree +#*-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment +#*-mirbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment esac # memory scrambling on free() @@ -177,8 +182,9 @@ opt_casemod_attrs=yes opt_casemod_expansions=yes opt_extglob_default=no opt_dircomplete_expand_default=no -opt_globascii_default=no +opt_globascii_default=yes opt_function_import=yes +opt_dev_fd_stat_broken=no dnl options that affect how bash is compiled and linked opt_static_link=no @@ -199,7 +205,7 @@ if test $opt_minimal_config = yes; then opt_net_redirs=no opt_progcomp=no opt_separate_help=no opt_multibyte=yes opt_cond_regexp=no opt_coproc=no opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no - opt_globascii_default=no + opt_globascii_default=yes fi AC_ARG_ENABLE(alias, AC_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enableval) @@ -214,6 +220,7 @@ AC_ARG_ENABLE(cond-command, AC_HELP_STRING([--enable-cond-command], [enable the AC_ARG_ENABLE(cond-regexp, AC_HELP_STRING([--enable-cond-regexp], [enable extended regular expression matching in conditional commands]), opt_cond_regexp=$enableval) AC_ARG_ENABLE(coprocesses, AC_HELP_STRING([--enable-coprocesses], [enable coprocess support and the coproc reserved word]), opt_coproc=$enableval) AC_ARG_ENABLE(debugger, AC_HELP_STRING([--enable-debugger], [enable support for bash debugger]), opt_debugger=$enableval) +AC_ARG_ENABLE(dev-fd-stat-broken, AC_HELP_STRING([--enable-dev-fd-stat-broken], [enable this option if stat on /dev/fd/N and fstat on file descriptor N don't return the same results]), opt_dev_fd_stat_broken=$enableval) AC_ARG_ENABLE(direxpand-default, AC_HELP_STRING([--enable-direxpand-default], [enable the direxpand shell option by default]), opt_dircomplete_expand_default=$enableval) AC_ARG_ENABLE(directory-stack, AC_HELP_STRING([--enable-directory-stack], [enable builtins pushd/popd/dirs]), opt_dirstack=$enableval) AC_ARG_ENABLE(disabled-builtins, AC_HELP_STRING([--enable-disabled-builtins], [allow disabled builtins to still be invoked]), opt_disabled_builtins=$enableval) @@ -246,7 +253,7 @@ AC_ARG_ENABLE(static-link, AC_HELP_STRING([--enable-static-link], [link bash sta dnl So-called `precious' variables AC_ARG_VAR([CC_FOR_BUILD], [C compiler used when compiling binaries used only at build time]) -AC_ARG_VAR([CFLAGS_FOR_BUILD], [Compliation options (CFLAGS) used when compiling binaries used only at build time]) +AC_ARG_VAR([CFLAGS_FOR_BUILD], [Compilation options (CFLAGS) used when compiling binaries used only at build time]) AC_ARG_VAR([LDFLAGS_FOR_BUILD], [Linker options (LDFLAGS) used when compiling binaries used only at build time]) AC_ARG_VAR([CPPFLAGS_FOR_BUILD], [C preprocessor options (CPPFLAGS) used when compiling binaries used only at build time]) @@ -347,6 +354,9 @@ fi if test $opt_function_import = yes; then AC_DEFINE(FUNCTION_IMPORT) fi +if test $opt_dev_fd_stat_broken = yes; then +AC_DEFINE(DEV_FD_STAT_BROKEN) +fi if test $opt_memscramble = yes; then AC_DEFINE(MEMSCRAMBLE) @@ -440,6 +450,9 @@ if test "x$cross_compiling" = "xyes"; then i[[3456]]86-*-beos*) cross_cache=${srcdir}/cross-build/x86-beos.cache ;; + *-qnx*) + cross_cache=${srcdir}/cross-build/qnx.cache + ;; *) echo "configure: cross-compiling for $host is not supported" >&2 ;; esac @@ -461,18 +474,12 @@ dnl default values CFLAGS=${CFLAGS-"$AUTO_CFLAGS"} # LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"} # XXX -# turn off paren warnings in gcc -if test "$GCC" = yes # && test -n "$DEBUG" -then - CFLAGS="$CFLAGS -Wno-parentheses -Wno-format-security" -fi - dnl handle options that alter how bash is compiled and linked dnl these must come after the test for cc/gcc if test "$opt_profiling" = "yes"; then PROFILE_FLAGS=-pg case "$host_os" in - solaris2*) ;; + solaris2*|linux*) ;; *) opt_static_link=yes ;; esac DEBUG= MALLOC_DEBUG= @@ -488,7 +495,7 @@ if test "$opt_static_link" = yes; then if test -n "$GCC" || test "$ac_cv_prog_gcc" = "yes"; then STATIC_LD="-static" case "$host_os" in - solaris2*) ;; + solaris2*|linux*) ;; *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental esac fi @@ -500,7 +507,11 @@ fi if test "X$cross_compiling" = "Xno"; then CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'} CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} # XXX - should it be '$(CPPFLAGS)' - LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} + if test X"$opt_profiling" = Xyes; then + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(BASE_LDFLAGS)'} + else + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} + fi # CFLAGS set above to default value if not passed in environment CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'} LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'} @@ -538,7 +549,7 @@ then RL_LIB_READLINE_VERSION case "$ac_cv_rl_version" in - 5*|6*|7*|8*|9*) ;; + 8*|9*) ;; *) opt_with_installed_readline=no AC_MSG_WARN([installed readline library is too old to be linked with bash]) AC_MSG_WARN([using private bash version]) @@ -702,7 +713,7 @@ AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \ regex.h syslog.h ulimit.h) AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \ - sys/param.h sys/socket.h sys/stat.h \ + sys/mman.h sys/param.h sys/socket.h sys/stat.h \ sys/time.h sys/times.h sys/types.h sys/wait.h) AC_CHECK_HEADERS(netinet/in.h arpa/inet.h) @@ -770,7 +781,7 @@ AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING)) dnl checks for system calls AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \ getpagesize getpeername getrlimit getrusage gettimeofday \ - kill killpg lstat pselect readlink sbrk select setdtablesize \ + kill killpg lstat pselect readlink select setdtablesize \ setitimer tcgetpgrp uname ulimit waitpid) AC_REPLACE_FUNCS(rename) @@ -808,7 +819,7 @@ AC_CHECK_DECLS([strtold], [ AC_CACHE_VAL(bash_cv_strtold_broken, [AC_TRY_COMPILE( [#include ], - [int main() { long double r; char *foo, bar; r = strtold(foo, &bar);}], + [long double r; char *foo, bar; r = strtold(foo, &bar);], bash_cv_strtold_broken=no, bash_cv_strtold_broken=yes, [AC_MSG_WARN(cannot check for broken strtold if cross-compiling, defaulting to no)]) ] @@ -838,7 +849,7 @@ AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h]) dnl AC_FUNC_MALLOC AC_FUNC_MMAP AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \ - munmap stpcpy strcspn]) + munmap mremap stpcpy strcspn]) INTL_DEP= INTL_INC= LIBINTL_H= if test "x$USE_INCLUDED_LIBINTL" = "xyes"; then @@ -980,6 +991,9 @@ BASH_STRUCT_WEXITSTATUS_OFFSET BASH_CHECK_TYPE_STRUCT_TIMESPEC BASH_STAT_TIME +dnl checks for system calls +BASH_FUNC_SBRK + dnl presence and behavior of C library functions BASH_FUNC_STRSIGNAL BASH_FUNC_OPENDIR_CHECK @@ -1010,6 +1024,8 @@ fi BASH_FUNC_PRINTF_A_FORMAT +BASH_FUNC_FNMATCH_EQUIV_FALLBACK + dnl presence and behavior of OS functions BASH_SYS_REINSTALL_SIGHANDLERS BASH_SYS_JOB_CONTROL_MISSING @@ -1093,9 +1109,11 @@ solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading case "`uname -r`" in - 2.[[456789]]*|[[34]]*) AC_DEFINE(PGRP_PIPE) ;; + 1.*|2.[[0123]]*) : ;; + *) AC_DEFINE(PGRP_PIPE) ;; esac ;; -*qnx6*) LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;; +netbsd*|openbsd*) LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;; +*qnx[[67]]*) LOCAL_LIBS="-lncurses" ;; *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; powerux*) LOCAL_LIBS="-lgen" ;; cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; @@ -1135,6 +1153,16 @@ m88k-motorola-sysv3) LOCAL_CFLAGS=-DWAITPID_BROKEN ;; mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;; esac +# turn off paren warnings in gcc +if test "$GCC" = yes # && test -n "$DEBUG" +then + CFLAGS="$CFLAGS -Wno-parentheses -Wno-format-security" +# if test -n "$DEBUG" +# then +# CFLAGS="$CFLAGS -Werror" +# fi +fi + # # Shared object configuration section. These values are generated by # ${srcdir}/support/shobj-conf @@ -1151,6 +1179,9 @@ then AC_SUBST(SHOBJ_LIBS) AC_SUBST(SHOBJ_STATUS) AC_MSG_RESULT($SHOBJ_STATUS) +else + SHOBJ_STATUS=unsupported + AC_SUBST(SHOBJ_STATUS) fi # try to create a directory tree if the source is elsewhere @@ -1227,7 +1258,7 @@ AC_OUTPUT([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \ lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \ examples/loadables/Makefile examples/loadables/Makefile.inc \ examples/loadables/perl/Makefile \ - support/bash.pc], + support/bash.pc support/bashbug.sh], [ # Makefile uses this timestamp file to record whether config.h is up to date. echo timestamp > stamp-h diff --git a/copy_cmd.c b/copy_cmd.c index 826e0c3a4..d2b5bc9c1 100644 --- a/copy_cmd.c +++ b/copy_cmd.c @@ -69,12 +69,20 @@ WORD_LIST * copy_word_list (list) WORD_LIST *list; { - WORD_LIST *new_list; + WORD_LIST *new_list, *tl; - for (new_list = (WORD_LIST *)NULL; list; list = list->next) - new_list = make_word_list (copy_word (list->word), new_list); + for (new_list = tl = (WORD_LIST *)NULL; list; list = list->next) + { + if (new_list == 0) + new_list = tl = make_word_list (copy_word (list->word), new_list); + else + { + tl->next = make_word_list (copy_word (list->word), (WORD_LIST *)NULL); + tl = tl->next; + } + } - return (REVERSE_LIST (new_list, WORD_LIST *)); + return (new_list); } static PATTERN_LIST * @@ -221,6 +229,7 @@ copy_subshell_command (com) new_subshell = (SUBSHELL_COM *)xmalloc (sizeof (SUBSHELL_COM)); new_subshell->command = copy_command (com->command); new_subshell->flags = com->flags; + new_subshell->line = com->line; return (new_subshell); } diff --git a/cross-build/qnx.cache b/cross-build/qnx.cache new file mode 100644 index 000000000..3f630fd85 --- /dev/null +++ b/cross-build/qnx.cache @@ -0,0 +1,66 @@ +bash_cv_decl_strtoimax=${bash_cv_decl_strtoimax=yes} +bash_cv_decl_strtol=${bash_cv_decl_strtol=yes} +bash_cv_decl_strtoll=${bash_cv_decl_strtoll=yes} +bash_cv_decl_strtoul=${bash_cv_decl_strtoul=yes} +bash_cv_decl_strtoull=${bash_cv_decl_strtoull=yes} +bash_cv_decl_strtoumax=${bash_cv_decl_strtoumax=yes} +bash_cv_decl_under_sys_siglist=${bash_cv_decl_under_sys_siglist=no} +bash_cv_dev_fd=${bash_cv_dev_fd=absent} +bash_cv_dev_stdin=${bash_cv_dev_stdin=present} +bash_cv_dirent_has_d_fileno=${bash_cv_dirent_has_d_fileno=no} +bash_cv_dirent_has_d_namlen=${bash_cv_dirent_has_d_namlen=no} +bash_cv_dirent_has_dino=${bash_cv_dirent_has_dino=yes} +bash_cv_dup2_broken=${bash_cv_dup2_broken=no} +bash_cv_fionread_in_ioctl=${bash_cv_fionread_in_ioctl=yes} +bash_cv_func_ctype_nonascii=${bash_cv_func_ctype_nonascii=no} +bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=present} +bash_cv_func_snprintf=${bash_cv_func_snprintf=yes} +bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken=no} +bash_cv_func_vsnprintf=${bash_cv_func_vsnprintf=yes} +bash_cv_getcwd_malloc=${bash_cv_getcwd_malloc=yes} +bash_cv_getenv_redef=${bash_cv_getenv_redef=yes} +bash_cv_getpw_declared=${bash_cv_getpw_declared=yes} +bash_cv_have_gethostbyname=${bash_cv_have_gethostbyname=no} +bash_cv_have_socklib=${bash_cv_have_socklib=no} +bash_cv_have_strsignal=${bash_cv_have_strsignal=yes} +bash_cv_job_control_missing=${bash_cv_job_control_missing=present} +bash_cv_langinfo_codeset=${bash_cv_langinfo_codeset=no} +bash_cv_mail_dir=${bash_cv_mail_dir=unknown} +bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers=no} +bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust=no} +bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe=no} +bash_cv_printf_a_format=${bash_cv_printf_a_format=yes} +bash_cv_signal_vintage=${bash_cv_signal_vintage=posix} +bash_cv_speed_t_in_sys_types=${bash_cv_speed_t_in_sys_types=no} +bash_cv_std_putenv=${bash_cv_std_putenv=yes} +bash_cv_std_unsetenv=${bash_cv_std_unsetenv=yes} +bash_cv_strtold_broken=${bash_cv_strtold_broken=no} +bash_cv_struct_timeval=${bash_cv_struct_timeval=yes} +bash_cv_struct_timezone=${bash_cv_struct_timezone=yes} +bash_cv_struct_winsize_header=${bash_cv_struct_winsize_header=ioctl_h} +bash_cv_sys_errlist=${bash_cv_sys_errlist=no} +bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes=present} +bash_cv_sys_siglist=${bash_cv_sys_siglist=yes} +bash_cv_sys_struct_timespec_in_time_h=${bash_cv_sys_struct_timespec_in_time_h=yes} +bash_cv_termcap_lib=${bash_cv_termcap_lib=libtermcap} +bash_cv_tiocstat_in_ioctl=${bash_cv_tiocstat_in_ioctl=no} +bash_cv_type_clock_t=${bash_cv_type_clock_t=yes} +bash_cv_type_intmax_t=${bash_cv_type_intmax_t=yes} +bash_cv_type_long_long=${bash_cv_type_long_long='long long'} +bash_cv_type_quad_t=${bash_cv_type_quad_t=no} +bash_cv_type_rlimit=${bash_cv_type_rlimit=rlim_t} +bash_cv_type_sig_atomic_t=${bash_cv_type_sig_atomic_t=yes} +bash_cv_type_sigset_t=${bash_cv_type_sigset_t=yes} +bash_cv_type_socklen_t=${bash_cv_type_socklen_t=yes} +bash_cv_type_uintmax_t=${bash_cv_type_uintmax_t=yes} +bash_cv_type_unsigned_long_long=${bash_cv_type_unsigned_long_long='unsigned long long'} +bash_cv_type_wchar_t=${bash_cv_type_wchar_t=yes} +bash_cv_type_wctype_t=${bash_cv_type_wctype_t=yes} +bash_cv_type_wint_t=${bash_cv_type_wint_t=yes} +bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds=no} +bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=no} +bash_cv_unusable_rtsigs=${bash_cv_unusable_rtsigs=no} +bash_cv_void_sighandler=${bash_cv_void_sighandler=yes} +bash_cv_wcontinued_broken=${bash_cv_wcontinued_broken=no} +bash_cv_wcwidth_broken=${bash_cv_wcwidth_broken=no} +bash_cv_wexitstatus_offset=${bash_cv_wexitstatus_offset=8} diff --git a/doc/FAQ b/doc/FAQ index 87dbb2d02..104d0bc1c 100644 --- a/doc/FAQ +++ b/doc/FAQ @@ -1,6 +1,4 @@ -This is the Bash FAQ, version 4.14, for Bash version 4.4. - -[THIS FAQ IS NO LONGER MAINTAINED] +This is the Bash FAQ, version 4.15, for Bash version 5.0. This document contains a set of frequently-asked questions concerning Bash, the GNU Bourne-Again Shell. Bash is a freely-available command @@ -962,7 +960,7 @@ o `complete' and `compgen' now take a `-o value' option, which controls some directory names and suppress trailing spaces o A new loadable builtin, realpath, which canonicalizes and expands symlinks in pathname arguments. -o When `set' is called without options, it prints function defintions in a +o When `set' is called without options, it prints function definitions in a way that allows them to be reused as input. This affects `declare' and `declare -p' as well. This only happens when the shell is not in POSIX mode, since POSIX.2 forbids this behavior. @@ -2171,17 +2169,11 @@ You may also need Finally, you need to tell readline that you will be inputting and displaying eight-bit characters. You use readline variables to do -this. convert-meta says what to do if you read a character with its -eighth bit set. input-meta says whether to permit characters with the -eighth bit at all. output-meta determines how to display characters -with the eighth bit set: if on, they are output directly; if it is off, -such characters are displayed as a meta-prefixed escape sequence. - -These variables can be set in your .inputrc or using the bash +this. These variables can be set in your .inputrc or using the bash `bind' builtin. Here's an example using `bind': bash$ bind 'set convert-meta off' - bash$ bind 'set input-meta on' + bash$ bind 'set meta-flag on' bash$ bind 'set output-meta on' The `set' commands between the single quotes may also be placed @@ -2287,7 +2279,7 @@ The \w expansion gives the full pathname of the current directory, with a tilde (`~') substituted for the current value of $HOME. The \W expansion gives the basename of the current directory. To put the full pathname of the current directory into the path without any tilde -subsitution, use $PWD. Here are some examples: +substitution, use $PWD. Here are some examples: PS1='\w$ ' # current directory with tilde PS1='\W$ ' # basename of current directory @@ -2404,7 +2396,7 @@ a bash programmer's guide with a chapter on creating loadable builtins a better loadable interface to perl with access to the shell builtins and variables (contributions gratefully accepted) ksh93-like `xx.yy' variables (including some of the .sh.* variables) and - associated disipline functions + associated discipline functions Some of the new ksh93 pattern matching operators, like backreferencing H5) When will the next release appear? diff --git a/doc/bash.0 b/doc/bash.0 index 031be8a4f..a062b8ace 100644 --- a/doc/bash.0 +++ b/doc/bash.0 @@ -9,7 +9,7 @@ SSYYNNOOPPSSIISS bbaasshh [options] [command_string | file] CCOOPPYYRRIIGGHHTT - Bash is Copyright (C) 1989-2016 by the Free Software Foundation, Inc. + Bash is Copyright (C) 1989-2018 by the Free Software Foundation, Inc. DDEESSCCRRIIPPTTIIOONN BBaasshh is an sshh-compatible command language interpreter that executes @@ -22,9 +22,9 @@ DDEESSCCRRIIPPTTIIOONN OOPPTTIIOONNSS All of the single-character shell options documented in the description - of the sseett builtin command can be used as options when the shell is - invoked. In addition, bbaasshh interprets the following options when it is - invoked: + of the sseett builtin command, including --oo, can be used as options when + the shell is invoked. In addition, bbaasshh interprets the following + options when it is invoked: --cc If the --cc option is present, then commands are read from the first non-option argument _c_o_m_m_a_n_d___s_t_r_i_n_g. If there are argu- @@ -41,67 +41,68 @@ OOPPTTIIOONNSS --ss If the --ss option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be - set when invoking an interactive shell. - --DD A list of all double-quoted strings preceded by $$ is printed - on the standard output. These are the strings that are sub- + set when invoking an interactive shell or when reading input + through a pipe. + --DD A list of all double-quoted strings preceded by $$ is printed + on the standard output. These are the strings that are sub- ject to language translation when the current locale is not CC - or PPOOSSIIXX. This implies the --nn option; no commands will be + or PPOOSSIIXX. This implies the --nn option; no commands will be executed. [[--++]]OO [[_s_h_o_p_t___o_p_t_i_o_n]] - _s_h_o_p_t___o_p_t_i_o_n is one of the shell options accepted by the - sshhoopptt builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). If + _s_h_o_p_t___o_p_t_i_o_n is one of the shell options accepted by the + sshhoopptt builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). If _s_h_o_p_t___o_p_t_i_o_n is present, --OO sets the value of that option; ++OO - unsets it. If _s_h_o_p_t___o_p_t_i_o_n is not supplied, the names and - values of the shell options accepted by sshhoopptt are printed on - the standard output. If the invocation option is ++OO, the + unsets it. If _s_h_o_p_t___o_p_t_i_o_n is not supplied, the names and + values of the shell options accepted by sshhoopptt are printed on + the standard output. If the invocation option is ++OO, the output is displayed in a format that may be reused as input. - ---- A ---- signals the end of options and disables further option - processing. Any arguments after the ---- are treated as file- + ---- A ---- signals the end of options and disables further option + processing. Any arguments after the ---- are treated as file- names and arguments. An argument of -- is equivalent to ----. - BBaasshh also interprets a number of multi-character options. These - options must appear on the command line before the single-character + BBaasshh also interprets a number of multi-character options. These + options must appear on the command line before the single-character options to be recognized. ----ddeebbuuggggeerr Arrange for the debugger profile to be executed before the shell - starts. Turns on extended debugging mode (see the description + starts. Turns on extended debugging mode (see the description of the eexxttddeebbuugg option to the sshhoopptt builtin below). ----dduummpp--ppoo--ssttrriinnggss - Equivalent to --DD, but the output is in the GNU _g_e_t_t_e_x_t ppoo (por- + Equivalent to --DD, but the output is in the GNU _g_e_t_t_e_x_t ppoo (por- table object) file format. ----dduummpp--ssttrriinnggss Equivalent to --DD. - ----hheellpp Display a usage message on standard output and exit success- + ----hheellpp Display a usage message on standard output and exit success- fully. ----iinniitt--ffiillee _f_i_l_e ----rrccffiillee _f_i_l_e Execute commands from _f_i_l_e instead of the standard personal ini- - tialization file _~_/_._b_a_s_h_r_c if the shell is interactive (see + tialization file _~_/_._b_a_s_h_r_c if the shell is interactive (see IINNVVOOCCAATTIIOONN below). ----llooggiinn Equivalent to --ll. ----nnooeeddiittiinngg - Do not use the GNU rreeaaddlliinnee library to read command lines when + Do not use the GNU rreeaaddlliinnee library to read command lines when the shell is interactive. ----nnoopprrooffiillee - Do not read either the system-wide startup file _/_e_t_c_/_p_r_o_f_i_l_e or - any of the personal initialization files _~_/_._b_a_s_h___p_r_o_f_i_l_e, - _~_/_._b_a_s_h___l_o_g_i_n, or _~_/_._p_r_o_f_i_l_e. By default, bbaasshh reads these - files when it is invoked as a login shell (see IINNVVOOCCAATTIIOONN + Do not read either the system-wide startup file _/_e_t_c_/_p_r_o_f_i_l_e or + any of the personal initialization files _~_/_._b_a_s_h___p_r_o_f_i_l_e, + _~_/_._b_a_s_h___l_o_g_i_n, or _~_/_._p_r_o_f_i_l_e. By default, bbaasshh reads these + files when it is invoked as a login shell (see IINNVVOOCCAATTIIOONN below). ----nnoorrcc Do not read and execute the personal initialization file - _~_/_._b_a_s_h_r_c if the shell is interactive. This option is on by + _~_/_._b_a_s_h_r_c if the shell is interactive. This option is on by default if the shell is invoked as sshh. ----ppoossiixx - Change the behavior of bbaasshh where the default operation differs + 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 + SSEEEE AALLSSOO below for a reference to a document that details how posix mode affects bash's behavior. ----rreessttrriicctteedd @@ -111,115 +112,115 @@ OOPPTTIIOONNSS Equivalent to --vv. ----vveerrssiioonn - Show version information for this instance of bbaasshh on the stan- + Show version information for this instance of bbaasshh on the stan- dard output and exit successfully. AARRGGUUMMEENNTTSS If arguments remain after option processing, and neither the --cc nor the - --ss option has been supplied, the first argument is assumed to be the - name of a file containing shell commands. If bbaasshh is invoked in this - fashion, $$00 is set to the name of the file, and the positional parame- - ters are set to the remaining arguments. BBaasshh reads and executes com- - mands from this file, then exits. BBaasshh's exit status is the exit sta- - tus of the last command executed in the script. If no commands are - executed, the exit status is 0. An attempt is first made to open the + --ss option has been supplied, the first argument is assumed to be the + name of a file containing shell commands. If bbaasshh is invoked in this + fashion, $$00 is set to the name of the file, and the positional parame- + ters are set to the remaining arguments. BBaasshh reads and executes com- + mands from this file, then exits. BBaasshh's exit status is the exit sta- + tus of the last command executed in the script. If no commands are + executed, the exit status is 0. An attempt is first made to open the file in the current directory, and, if no file is found, then the shell searches the directories in PPAATTHH for the script. IINNVVOOCCAATTIIOONN - A _l_o_g_i_n _s_h_e_l_l is one whose first character of argument zero is a --, or + A _l_o_g_i_n _s_h_e_l_l is one whose first character of argument zero is a --, or one started with the ----llooggiinn option. - An _i_n_t_e_r_a_c_t_i_v_e shell is one started without non-option arguments + An _i_n_t_e_r_a_c_t_i_v_e shell is one started without non-option arguments (unless --ss is specified) and without the --cc option whose standard input and error are both connected to terminals (as determined by _i_s_a_t_t_y(3)), - or one started with the --ii option. PPSS11 is set and $$-- includes ii if - bbaasshh is interactive, allowing a shell script or a startup file to test + or one started with the --ii option. PPSS11 is set and $$-- includes ii if + bbaasshh is interactive, allowing a shell script or a startup file to test this state. - The following paragraphs describe how bbaasshh executes its startup files. - If any of the files exist but cannot be read, bbaasshh reports an error. - Tildes are expanded in filenames as described below under TTiillddee EExxppaann-- + The following paragraphs describe how bbaasshh executes its startup files. + If any of the files exist but cannot be read, bbaasshh reports an error. + Tildes are expanded in filenames as described below under TTiillddee EExxppaann-- ssiioonn in the EEXXPPAANNSSIIOONN section. - When bbaasshh is invoked as an interactive login shell, or as a non-inter- - active shell with the ----llooggiinn option, it first reads and executes com- - mands from the file _/_e_t_c_/_p_r_o_f_i_l_e, if that file exists. After reading + When bbaasshh is invoked as an interactive login shell, or as a non-inter- + active shell with the ----llooggiinn option, it first reads and executes com- + mands from the file _/_e_t_c_/_p_r_o_f_i_l_e, if that file exists. After reading that file, it looks for _~_/_._b_a_s_h___p_r_o_f_i_l_e, _~_/_._b_a_s_h___l_o_g_i_n, and _~_/_._p_r_o_f_i_l_e, - in that order, and reads and executes commands from the first one that - exists and is readable. The ----nnoopprrooffiillee option may be used when the + in that order, and reads and executes commands from the first one that + exists and is readable. The ----nnoopprrooffiillee option may be used when the shell is started to inhibit this behavior. When an interactive login shell exits, or a non-interactive login shell - executes the eexxiitt builtin command, bbaasshh reads and executes commands + executes the eexxiitt builtin command, bbaasshh reads and executes commands from the file _~_/_._b_a_s_h___l_o_g_o_u_t, if it exists. - When an interactive shell that is not a login shell is started, bbaasshh - reads and executes commands from _~_/_._b_a_s_h_r_c, if that file exists. This - may be inhibited by using the ----nnoorrcc option. The ----rrccffiillee _f_i_l_e option - will force bbaasshh to read and execute commands from _f_i_l_e instead of + When an interactive shell that is not a login shell is started, bbaasshh + reads and executes commands from _~_/_._b_a_s_h_r_c, if that file exists. This + may be inhibited by using the ----nnoorrcc option. The ----rrccffiillee _f_i_l_e option + will force bbaasshh to read and execute commands from _f_i_l_e instead of _~_/_._b_a_s_h_r_c. - When bbaasshh is started non-interactively, to run a shell script, for + When bbaasshh is started non-interactively, to run a shell script, for example, it looks for the variable BBAASSHH__EENNVV in the environment, expands - its value if it appears there, and uses the expanded value as the name - of a file to read and execute. BBaasshh behaves as if the following com- + its value if it appears there, and uses the expanded value as the name + of a file to read and execute. BBaasshh behaves as if the following com- mand were executed: if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi - but the value of the PPAATTHH variable is not used to search for the file- + but the value of the PPAATTHH variable is not used to search for the file- name. - If bbaasshh is invoked with the name sshh, it tries to mimic the startup - behavior of historical versions of sshh as closely as possible, while - conforming to the POSIX standard as well. When invoked as an interac- - tive login shell, or a non-interactive shell with the ----llooggiinn option, - it first attempts to read and execute commands from _/_e_t_c_/_p_r_o_f_i_l_e and - _~_/_._p_r_o_f_i_l_e, in that order. The ----nnoopprrooffiillee option may be used to - inhibit this behavior. When invoked as an interactive shell with the - name sshh, bbaasshh looks for the variable EENNVV, expands its value if it is - defined, and uses the expanded value as the name of a file to read and + If bbaasshh is invoked with the name sshh, it tries to mimic the startup + behavior of historical versions of sshh as closely as possible, while + conforming to the POSIX standard as well. When invoked as an interac- + tive login shell, or a non-interactive shell with the ----llooggiinn option, + it first attempts to read and execute commands from _/_e_t_c_/_p_r_o_f_i_l_e and + _~_/_._p_r_o_f_i_l_e, in that order. The ----nnoopprrooffiillee option may be used to + inhibit this behavior. When invoked as an interactive shell with the + name sshh, bbaasshh looks for the variable EENNVV, expands its value if it is + defined, and uses the expanded value as the name of a file to read and execute. Since a shell invoked as sshh does not attempt to read and exe- - cute commands from any other startup files, the ----rrccffiillee option has no - effect. A non-interactive shell invoked with the name sshh does not - attempt to read any other startup files. When invoked as sshh, bbaasshh + cute commands from any other startup files, the ----rrccffiillee option has no + effect. A non-interactive shell invoked with the name sshh does not + attempt to read any other startup files. When invoked as sshh, bbaasshh enters _p_o_s_i_x mode after the startup files are read. - When bbaasshh is started in _p_o_s_i_x mode, as with the ----ppoossiixx command line + When bbaasshh is started in _p_o_s_i_x mode, as with the ----ppoossiixx command line option, it follows the POSIX standard for startup files. In this mode, - interactive shells expand the EENNVV variable and commands are read and - executed from the file whose name is the expanded value. No other + interactive shells expand the EENNVV variable and commands are read and + executed from the file whose name is the expanded value. No other startup files are read. BBaasshh attempts to determine when it is being run with its standard input connected to a network connection, as when executed by the remote shell - daemon, usually _r_s_h_d, or the secure shell daemon _s_s_h_d. If bbaasshh deter- - mines it is being run in this fashion, it reads and executes commands - from _~_/_._b_a_s_h_r_c, if that file exists and is readable. It will not do - this if invoked as sshh. The ----nnoorrcc option may be used to inhibit this - behavior, and the ----rrccffiillee option may be used to force another file to - be read, but neither _r_s_h_d nor _s_s_h_d generally invoke the shell with + daemon, usually _r_s_h_d, or the secure shell daemon _s_s_h_d. If bbaasshh deter- + mines it is being run in this fashion, it reads and executes commands + from _~_/_._b_a_s_h_r_c, if that file exists and is readable. It will not do + this if invoked as sshh. The ----nnoorrcc option may be used to inhibit this + behavior, and the ----rrccffiillee option may be used to force another file to + be read, but neither _r_s_h_d nor _s_s_h_d generally invoke the shell with those options or allow them to be specified. If the shell is started with the effective user (group) id not equal to the real user (group) id, and the --pp option is not supplied, no startup files are read, shell functions are not inherited from the environment, - the SSHHEELLLLOOPPTTSS, BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they - appear in the environment, are ignored, and the effective user id is - set to the real user id. If the --pp option is supplied at invocation, - the startup behavior is the same, but the effective user id is not + the SSHHEELLLLOOPPTTSS, BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they + appear in the environment, are ignored, and the effective user id is + set to the real user id. If the --pp option is supplied at invocation, + the startup behavior is the same, but the effective user id is not reset. DDEEFFIINNIITTIIOONNSS - The following definitions are used throughout the rest of this docu- + The following definitions are used throughout the rest of this docu- ment. bbllaannkk A space or tab. - wwoorrdd A sequence of characters considered as a single unit by the + wwoorrdd A sequence of characters considered as a single unit by the shell. Also known as a ttookkeenn. - nnaammee A _w_o_r_d consisting only of alphanumeric characters and under- - scores, and beginning with an alphabetic character or an under- + nnaammee A _w_o_r_d consisting only of alphanumeric characters and under- + scores, and beginning with an alphabetic character or an under- score. Also referred to as an iiddeennttiiffiieerr. mmeettaacchhaarraacctteerr - A character that, when unquoted, separates words. One of the + A character that, when unquoted, separates words. One of the following: || && ;; (( )) << >> ssppaaccee ttaabb nneewwlliinnee ccoonnttrrooll ooppeerraattoorr @@ -230,63 +231,66 @@ DDEEFFIINNIITTIIOONNSS RREESSEERRVVEEDD WWOORRDDSS _R_e_s_e_r_v_e_d _w_o_r_d_s are words that have a special meaning to the shell. The following words are recognized as reserved when unquoted and either the - first word of a simple command (see SSHHEELLLL GGRRAAMMMMAARR below) or the third + first word of a simple command (see SSHHEELLLL GGRRAAMMMMAARR below) or the third word of a ccaassee or ffoorr command: - !! ccaassee ccoopprroocc ddoo ddoonnee eelliiff eellssee eessaacc ffii ffoorr ffuunnccttiioonn iiff iinn sseelleecctt + !! ccaassee ccoopprroocc ddoo ddoonnee eelliiff eellssee eessaacc ffii ffoorr ffuunnccttiioonn iiff iinn sseelleecctt tthheenn uunnttiill wwhhiillee {{ }} ttiimmee [[[[ ]]]] SSHHEELLLL GGRRAAMMMMAARR SSiimmppllee CCoommmmaannddss - A _s_i_m_p_l_e _c_o_m_m_a_n_d is a sequence of optional variable assignments fol- - lowed by bbllaannkk-separated words and redirections, and terminated by a + A _s_i_m_p_l_e _c_o_m_m_a_n_d is a sequence of optional variable assignments fol- + lowed by bbllaannkk-separated words and redirections, and terminated by a _c_o_n_t_r_o_l _o_p_e_r_a_t_o_r. The first word specifies the command to be executed, - and is passed as argument zero. The remaining words are passed as + and is passed as argument zero. The remaining words are passed as arguments to the invoked command. - The return value of a _s_i_m_p_l_e _c_o_m_m_a_n_d is its exit status, or 128+_n if + The return value of a _s_i_m_p_l_e _c_o_m_m_a_n_d is its exit status, or 128+_n if the command is terminated by signal _n. PPiippeelliinneess - A _p_i_p_e_l_i_n_e is a sequence of one or more commands separated by one of + A _p_i_p_e_l_i_n_e is a sequence of one or more commands separated by one of the control operators || or ||&&. The format for a pipeline is: [ttiimmee [--pp]] [ ! ] _c_o_m_m_a_n_d [ [|||||&&] _c_o_m_m_a_n_d_2 ... ] - The standard output of _c_o_m_m_a_n_d is connected via a pipe to the standard - input of _c_o_m_m_a_n_d_2. This connection is performed before any redirec- + The standard output of _c_o_m_m_a_n_d is connected via a pipe to the standard + input of _c_o_m_m_a_n_d_2. This connection is performed before any redirec- tions specified by the command (see RREEDDIIRREECCTTIIOONN below). If ||&& is used, - _c_o_m_m_a_n_d's standard error, in addition to its standard output, is con- - nected to _c_o_m_m_a_n_d_2's standard input through the pipe; it is shorthand - for 22>>&&11 ||. This implicit redirection of the standard error to the - standard output is performed after any redirections specified by the + _c_o_m_m_a_n_d's standard error, in addition to its standard output, is con- + nected to _c_o_m_m_a_n_d_2's standard input through the pipe; it is shorthand + for 22>>&&11 ||. This implicit redirection of the standard error to the + standard output is performed after any redirections specified by the command. The return status of a pipeline is the exit status of the last command, - unless the ppiippeeffaaiill option is enabled. If ppiippeeffaaiill is enabled, the - pipeline's return status is the value of the last (rightmost) command - to exit with a non-zero status, or zero if all commands exit success- + unless the ppiippeeffaaiill option is enabled. If ppiippeeffaaiill is enabled, the + pipeline's return status is the value of the last (rightmost) command + to exit with a non-zero status, or zero if all commands exit success- fully. If the reserved word !! precedes a pipeline, the exit status of - that pipeline is the logical negation of the exit status as described - above. The shell waits for all commands in the pipeline to terminate + that pipeline is the logical negation of the exit status as described + above. The shell waits for all commands in the pipeline to terminate before returning a value. - If the ttiimmee reserved word precedes a pipeline, the elapsed as well as - user and system time consumed by its execution are reported when the - pipeline terminates. The --pp option changes the output format to that - specified by POSIX. When the shell is in _p_o_s_i_x _m_o_d_e, it does not rec- - ognize ttiimmee as a reserved word if the next token begins with a `-'. - The TTIIMMEEFFOORRMMAATT variable may be set to a format string that specifies - how the timing information should be displayed; see the description of + If the ttiimmee reserved word precedes a pipeline, the elapsed as well as + user and system time consumed by its execution are reported when the + pipeline terminates. The --pp option changes the output format to that + specified by POSIX. When the shell is in _p_o_s_i_x _m_o_d_e, it does not rec- + ognize ttiimmee as a reserved word if the next token begins with a `-'. + The TTIIMMEEFFOORRMMAATT variable may be set to a format string that specifies + how the timing information should be displayed; see the description of TTIIMMEEFFOORRMMAATT under SShheellll VVaarriiaabblleess below. When the shell is in _p_o_s_i_x _m_o_d_e, ttiimmee may be followed by a newline. In - this case, the shell displays the total user and system time consumed - by the shell and its children. The TTIIMMEEFFOORRMMAATT variable may be used to + this case, the shell displays the total user and system time consumed + by the shell and its children. The TTIIMMEEFFOORRMMAATT variable may be used to specify the format of the time information. - Each command in a pipeline is executed as a separate process (i.e., in - a subshell). + Each command in a pipeline is executed as a separate process (i.e., in + a subshell). See CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT for a description of a + subshell environment. If the llaassttppiippee option is enabled using the + sshhoopptt builtin (see the description of sshhoopptt below), the last element of + a pipeline may be run by the shell process. LLiissttss A _l_i_s_t is a sequence of one or more pipelines separated by one of the @@ -301,107 +305,108 @@ SSHHEELLLL GGRRAAMMMMAARR If a command is terminated by the control operator &&, the shell exe- cutes the command in the _b_a_c_k_g_r_o_u_n_d in a subshell. The shell does not - wait for the command to finish, and the return status is 0. Commands - separated by a ;; are executed sequentially; the shell waits for each - command to terminate in turn. The return status is the exit status of - the last command executed. - - AND and OR lists are sequences of one or more pipelines separated by - the &&&& and |||| control operators, respectively. AND and OR lists are + wait for the command to finish, and the return status is 0. These are + referred to as _a_s_y_n_c_h_r_o_n_o_u_s commands. Commands separated by a ;; are + executed sequentially; the shell waits for each command to terminate in + turn. The return status is the exit status of the last command exe- + cuted. + + AND and OR lists are sequences of one or more pipelines separated by + the &&&& and |||| control operators, respectively. AND and OR lists are executed with left associativity. An AND list has the form _c_o_m_m_a_n_d_1 &&&& _c_o_m_m_a_n_d_2 - _c_o_m_m_a_n_d_2 is executed if, and only if, _c_o_m_m_a_n_d_1 returns an exit status - of zero. + _c_o_m_m_a_n_d_2 is executed if, and only if, _c_o_m_m_a_n_d_1 returns an exit status + of zero (success). An OR list has the form _c_o_m_m_a_n_d_1 |||| _c_o_m_m_a_n_d_2 - _c_o_m_m_a_n_d_2 is executed if and only if _c_o_m_m_a_n_d_1 returns a non-zero exit - status. The return status of AND and OR lists is the exit status of + _c_o_m_m_a_n_d_2 is executed if, and only if, _c_o_m_m_a_n_d_1 returns a non-zero exit + status. The return status of AND and OR lists is the exit status of the last command executed in the list. CCoommppoouunndd CCoommmmaannddss - A _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d is one of the following. In most cases a _l_i_s_t in a - command's description may be separated from the rest of the command by - one or more newlines, and may be followed by a newline in place of a + A _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d is one of the following. In most cases a _l_i_s_t in a + command's description may be separated from the rest of the command by + one or more newlines, and may be followed by a newline in place of a semicolon. - (_l_i_s_t) _l_i_s_t is executed in a subshell environment (see CCOOMMMMAANNDD EEXXEECCUU-- - TTIIOONN EENNVVIIRROONNMMEENNTT below). Variable assignments and builtin com- - mands that affect the shell's environment do not remain in - effect after the command completes. The return status is the + (_l_i_s_t) _l_i_s_t is executed in a subshell environment (see CCOOMMMMAANNDD EEXXEECCUU-- + TTIIOONN EENNVVIIRROONNMMEENNTT below). Variable assignments and builtin com- + mands that affect the shell's environment do not remain in + effect after the command completes. The return status is the exit status of _l_i_s_t. { _l_i_s_t; } - _l_i_s_t is simply executed in the current shell environment. _l_i_s_t - must be terminated with a newline or semicolon. This is known - as a _g_r_o_u_p _c_o_m_m_a_n_d. The return status is the exit status of - _l_i_s_t. Note that unlike the metacharacters (( and )), {{ and }} are + _l_i_s_t is simply executed in the current shell environment. _l_i_s_t + must be terminated with a newline or semicolon. This is known + as a _g_r_o_u_p _c_o_m_m_a_n_d. The return status is the exit status of + _l_i_s_t. Note that unlike the metacharacters (( and )), {{ and }} are _r_e_s_e_r_v_e_d _w_o_r_d_s and must occur where a reserved word is permitted - to be recognized. Since they do not cause a word break, they - must be separated from _l_i_s_t by whitespace or another shell + to be recognized. Since they do not cause a word break, they + must be separated from _l_i_s_t by whitespace or another shell metacharacter. ((_e_x_p_r_e_s_s_i_o_n)) - The _e_x_p_r_e_s_s_i_o_n is evaluated according to the rules described - below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If the value of the expres- - sion is non-zero, the return status is 0; otherwise the return + The _e_x_p_r_e_s_s_i_o_n is evaluated according to the rules described + below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If the value of the expres- + sion is non-zero, the return status is 0; otherwise the return status is 1. This is exactly equivalent to lleett ""_e_x_p_r_e_s_s_i_o_n"". [[[[ _e_x_p_r_e_s_s_i_o_n ]]]] - Return a status of 0 or 1 depending on the evaluation of the - conditional expression _e_x_p_r_e_s_s_i_o_n. Expressions are composed of - the primaries described below under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. - Word splitting and pathname expansion are not performed on the - words between the [[[[ and ]]]]; tilde expansion, parameter and - variable expansion, arithmetic expansion, command substitution, - process substitution, and quote removal are performed. Condi- + Return a status of 0 or 1 depending on the evaluation of the + conditional expression _e_x_p_r_e_s_s_i_o_n. Expressions are composed of + the primaries described below under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. + Word splitting and pathname expansion are not performed on the + words between the [[[[ and ]]]]; tilde expansion, parameter and + variable expansion, arithmetic expansion, command substitution, + process substitution, and quote removal are performed. Condi- tional operators such as --ff must be unquoted to be recognized as primaries. - When used with [[[[, the << and >> operators sort lexicographically + When used with [[[[, the << and >> operators sort lexicographically using the current locale. - When the ==== and !!== operators are used, the string to the right + When the ==== and !!== operators are used, the string to the right of the operator is considered a pattern and matched according to the rules described below under PPaatttteerrnn MMaattcchhiinngg, as if the eexxtt-- gglloobb shell option were enabled. The == operator is equivalent to - ====. If the nnooccaasseemmaattcchh shell option is enabled, the match is - performed without regard to the case of alphabetic characters. - The return value is 0 if the string matches (====) or does not - match (!!==) the pattern, and 1 otherwise. Any part of the pat- - tern may be quoted to force the quoted portion to be matched as + ====. If the nnooccaasseemmaattcchh shell option is enabled, the match is + performed without regard to the case of alphabetic characters. + The return value is 0 if the string matches (====) or does not + match (!!==) the pattern, and 1 otherwise. Any part of the pat- + tern may be quoted to force the quoted portion to be matched as a string. - An additional binary operator, ==~~, 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. - - Expressions may be combined using the following operators, + 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 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: (( _e_x_p_r_e_s_s_i_o_n )) - Returns the value of _e_x_p_r_e_s_s_i_o_n. This may be used to + Returns the value of _e_x_p_r_e_s_s_i_o_n. This may be used to override the normal precedence of operators. !! _e_x_p_r_e_s_s_i_o_n True if _e_x_p_r_e_s_s_i_o_n is false. @@ -411,110 +416,111 @@ SSHHEELLLL GGRRAAMMMMAARR True if either _e_x_p_r_e_s_s_i_o_n_1 or _e_x_p_r_e_s_s_i_o_n_2 is true. The &&&& and |||| operators do not evaluate _e_x_p_r_e_s_s_i_o_n_2 if the value - of _e_x_p_r_e_s_s_i_o_n_1 is sufficient to determine the return value of + of _e_x_p_r_e_s_s_i_o_n_1 is sufficient to determine the return value of the entire conditional expression. ffoorr _n_a_m_e [ [ iinn [ _w_o_r_d _._._. ] ] ; ] ddoo _l_i_s_t ; ddoonnee The list of words following iinn is expanded, generating a list of items. The variable _n_a_m_e is set to each element of this list in - turn, and _l_i_s_t is executed each time. If the iinn _w_o_r_d is omit- - ted, the ffoorr command executes _l_i_s_t once for each positional + turn, and _l_i_s_t is executed each time. If the iinn _w_o_r_d is omit- + ted, the ffoorr command executes _l_i_s_t once for each positional parameter that is set (see PPAARRAAMMEETTEERRSS below). The return status - is the exit status of the last command that executes. If the + is the exit status of the last command that executes. If the expansion of the items following iinn results in an empty list, no commands are executed, and the return status is 0. ffoorr (( _e_x_p_r_1 ; _e_x_p_r_2 ; _e_x_p_r_3 )) ; ddoo _l_i_s_t ; ddoonnee First, the arithmetic expression _e_x_p_r_1 is evaluated according to - the rules described below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. The - arithmetic expression _e_x_p_r_2 is then evaluated repeatedly until - it evaluates to zero. Each time _e_x_p_r_2 evaluates to a non-zero - value, _l_i_s_t is executed and the arithmetic expression _e_x_p_r_3 is - evaluated. If any expression is omitted, it behaves as if it + the rules described below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. The + arithmetic expression _e_x_p_r_2 is then evaluated repeatedly until + it evaluates to zero. Each time _e_x_p_r_2 evaluates to a non-zero + value, _l_i_s_t is executed and the arithmetic expression _e_x_p_r_3 is + evaluated. If any expression is omitted, it behaves as if it evaluates to 1. The return value is the exit status of the last command in _l_i_s_t that is executed, or false if any of the expres- sions is invalid. sseelleecctt _n_a_m_e [ iinn _w_o_r_d ] ; ddoo _l_i_s_t ; ddoonnee The list of words following iinn is expanded, generating a list of - items. The set of expanded words is printed on the standard - error, each preceded by a number. If the iinn _w_o_r_d is omitted, - the positional parameters are printed (see PPAARRAAMMEETTEERRSS below). - The PPSS33 prompt is then displayed and a line read from the stan- - dard input. If the line consists of a number corresponding to - one of the displayed words, then the value of _n_a_m_e is set to - that word. If the line is empty, the words and prompt are dis- + items. The set of expanded words is printed on the standard + error, each preceded by a number. If the iinn _w_o_r_d is omitted, + the positional parameters are printed (see PPAARRAAMMEETTEERRSS below). + The PPSS33 prompt is then displayed and a line read from the stan- + dard input. If the line consists of a number corresponding to + one of the displayed words, then the value of _n_a_m_e is set to + that word. If the line is empty, the words and prompt are dis- played again. If EOF is read, the command completes. Any other - value read causes _n_a_m_e to be set to null. The line read is - saved in the variable RREEPPLLYY. The _l_i_s_t is executed after each + value read causes _n_a_m_e to be set to null. The line read is + saved in the variable RREEPPLLYY. The _l_i_s_t is executed after each selection until a bbrreeaakk command is executed. The exit status of - sseelleecctt is the exit status of the last command executed in _l_i_s_t, + sseelleecctt is the exit status of the last command executed in _l_i_s_t, or zero if no commands were executed. ccaassee _w_o_r_d iinn [ [(] _p_a_t_t_e_r_n [ || _p_a_t_t_e_r_n ] ... ) _l_i_s_t ;; ] ... eessaacc A ccaassee command first expands _w_o_r_d, and tries to match it against - each _p_a_t_t_e_r_n in turn, using the same matching rules as for path- - name expansion (see PPaatthhnnaammee EExxppaannssiioonn below). The _w_o_r_d is - expanded using tilde expansion, parameter and variable expan- - sion, arithmetic expansion, command substitution, process sub- - stitution and quote removal. Each _p_a_t_t_e_r_n examined is expanded - using tilde expansion, parameter and variable expansion, arith- - metic expansion, command substitution, and process substitution. - If the nnooccaasseemmaattcchh shell option is enabled, the match is per- - formed without regard to the case of alphabetic characters. - When a match is found, the corresponding _l_i_s_t is executed. If - the ;;;; operator is used, no subsequent matches are attempted - after the first pattern match. Using ;;&& in place of ;;;; causes - execution to continue with the _l_i_s_t associated with the next set - of patterns. Using ;;;;&& in place of ;;;; causes the shell to test - the next pattern list in the statement, if any, and execute any - associated _l_i_s_t on a successful match. The exit status is zero - if no pattern matches. Otherwise, it is the exit status of the - last command executed in _l_i_s_t. + each _p_a_t_t_e_r_n in turn, using the matching rules described under + PPaatttteerrnn MMaattcchhiinngg below. The _w_o_r_d is expanded using tilde expan- + sion, parameter and variable expansion, arithmetic expansion, + command substitution, process substitution and quote removal. + Each _p_a_t_t_e_r_n examined is expanded using tilde expansion, parame- + ter and variable expansion, arithmetic expansion, command sub- + stitution, and process substitution. If the nnooccaasseemmaattcchh shell + option is enabled, the match is performed without regard to the + case of alphabetic characters. When a match is found, the cor- + responding _l_i_s_t is executed. If the ;;;; operator is used, no + subsequent matches are attempted after the first pattern match. + Using ;;&& in place of ;;;; causes execution to continue with the + _l_i_s_t associated with the next set of patterns. Using ;;;;&& in + place of ;;;; causes the shell to test the next pattern list in + the statement, if any, and execute any associated _l_i_s_t on a suc- + cessful match. The exit status is zero if no pattern matches. + Otherwise, it is the exit status of the last command executed in + _l_i_s_t. iiff _l_i_s_t; tthheenn _l_i_s_t; [ eelliiff _l_i_s_t; tthheenn _l_i_s_t; ] ... [ eellssee _l_i_s_t; ] ffii - The iiff _l_i_s_t is executed. If its exit status is zero, the tthheenn - _l_i_s_t is executed. Otherwise, each eelliiff _l_i_s_t is executed in - turn, and if its exit status is zero, the corresponding tthheenn + The iiff _l_i_s_t is executed. If its exit status is zero, the tthheenn + _l_i_s_t is executed. Otherwise, each eelliiff _l_i_s_t is executed in + turn, and if its exit status is zero, the corresponding tthheenn _l_i_s_t is executed and the command completes. Otherwise, the eellssee - _l_i_s_t is executed, if present. The exit status is the exit sta- + _l_i_s_t is executed, if present. The exit status is the exit sta- tus of the last command executed, or zero if no condition tested true. wwhhiillee _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee uunnttiill _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee - The wwhhiillee command continuously executes the list _l_i_s_t_-_2 as long + The wwhhiillee command continuously executes the list _l_i_s_t_-_2 as long as the last command in the list _l_i_s_t_-_1 returns an exit status of - zero. The uunnttiill command is identical to the wwhhiillee command, - except that the test is negated: _l_i_s_t_-_2 is executed as long as - the last command in _l_i_s_t_-_1 returns a non-zero exit status. The - exit status of the wwhhiillee and uunnttiill commands is the exit status + zero. The uunnttiill command is identical to the wwhhiillee command, + except that the test is negated: _l_i_s_t_-_2 is executed as long as + the last command in _l_i_s_t_-_1 returns a non-zero exit status. The + exit status of the wwhhiillee and uunnttiill commands is the exit status of the last command executed in _l_i_s_t_-_2, or zero if none was exe- cuted. CCoopprroocceesssseess A _c_o_p_r_o_c_e_s_s is a shell command preceded by the ccoopprroocc reserved word. A - coprocess is executed asynchronously in a subshell, as if the command - had been terminated with the && control operator, with a two-way pipe + coprocess is executed asynchronously in a subshell, as if the command + had been terminated with the && control operator, with a two-way pipe established between the executing shell and the coprocess. The format for a coprocess is: ccoopprroocc [_N_A_M_E] _c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n_s] - This creates a coprocess named _N_A_M_E. If _N_A_M_E is not supplied, the + This creates a coprocess named _N_A_M_E. If _N_A_M_E is not supplied, the default name is CCOOPPRROOCC. _N_A_M_E must not be supplied if _c_o_m_m_a_n_d is a _s_i_m_- _p_l_e _c_o_m_m_a_n_d (see above); otherwise, it is interpreted as the first word - of the simple command. When the coprocess is executed, the shell cre- - ates an array variable (see AArrrraayyss below) named _N_A_M_E in the context of + of the simple command. When the coprocess is executed, the shell cre- + ates an array variable (see AArrrraayyss below) named _N_A_M_E in the context of the executing shell. The standard output of _c_o_m_m_a_n_d is connected via a - pipe to a file descriptor in the executing shell, and that file - descriptor is assigned to _N_A_M_E[0]. The standard input of _c_o_m_m_a_n_d is - connected via a pipe to a file descriptor in the executing shell, and - that file descriptor is assigned to _N_A_M_E[1]. This pipe is established - before any redirections specified by the command (see RREEDDIIRREECCTTIIOONN - below). The file descriptors can be utilized as arguments to shell - commands and redirections using standard word expansions. The file + pipe to a file descriptor in the executing shell, and that file + descriptor is assigned to _N_A_M_E[0]. The standard input of _c_o_m_m_a_n_d is + connected via a pipe to a file descriptor in the executing shell, and + that file descriptor is assigned to _N_A_M_E[1]. This pipe is established + before any redirections specified by the command (see RREEDDIIRREECCTTIIOONN + below). The file descriptors can be utilized as arguments to shell + commands and redirections using standard word expansions. Other than + those created to execute command and process substitutions, the file descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is available as the value of the variable _N_A_M_E_PID. The wwaaiitt builtin command may be used to wait for @@ -617,7 +623,7 @@ QQUUOOTTIINNGG \\"" double quote \\?? question mark \\_n_n_n the eight-bit character whose value is the octal value - _n_n_n (one to three digits) + _n_n_n (one to three octal digits) \\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 @@ -730,76 +736,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 - placed in the environment exported to that command. When check- - ing mail, this parameter holds the name of the mail file cur- - rently being checked. + __ At shell startup, set to the absolute pathname used to invoke + the shell or shell script being executed as passed in the envi- + ronment or argument list. Subsequently, expands to the last + argument to the previous simple command executed in the fore- + ground, after expansion. Also set to the full pathname used to + invoke each command executed and placed in the environment + exported to that command. When checking mail, this parameter + holds the name of the mail file currently being checked. 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. + 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) + 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 @@ -808,7 +824,15 @@ PPAARRAAMMEETTEERRSS cuted, the parameters supplied are pushed onto BBAASSHH__AARRGGVV. The shell sets BBAASSHH__AARRGGVV only when in extended debugging mode (see the description of the eexxttddeebbuugg option to the sshhoopptt builtin - below) + below). Setting eexxttddeebbuugg after the shell has started to execute + 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 + 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 + 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 @@ -918,71 +942,82 @@ PPAARRAAMMEETTEERRSS able will not change the current directory. If DDIIRRSSTTAACCKK is unset, it loses its special properties, even if it is subse- quently reset. - EEUUIIDD Expands to the effective user ID of the current user, initial- + 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 + point value with micro-second granularity. Assignments to + 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 + its special properties, even if it is subsequently reset. + 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" @@ -990,197 +1025,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 filenames - to be ignored by pathname expansion. If a filename matched by a - pathname expansion pattern also matches one of the patterns in - GGLLOOBBIIGGNNOORREE, it is removed from the list of matches. + A colon-separated list of patterns defining the set of file + names to be ignored by pathname expansion. If a file name + matched by a pathname expansion pattern also matches one of the + patterns in 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__ @@ -1246,39 +1286,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 PPSS44 is replicated mul- - tiple times, as necessary, to indicate multiple levels of indi- - rection. The default is ``++ ''. + 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. @@ -1286,77 +1327,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. @@ -1364,96 +1405,103 @@ 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. Negative subscripts to - indexed arrays are interpreted as described above. Care must be taken - to avoid unwanted side effects caused by pathname expansion. 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. - - 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 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 + 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 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 change - the number of words of the expansion; other expansions expand a single - word to a single word. The only exceptions to this are the expansions - of "$$@@" and "$${{_n_a_m_e[[@@]]}}" as explained above (see PPAARRAAMMEETTEERRSS). + 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- @@ -1492,7 +1540,8 @@ EEXXPPAANNSSIIOONN 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- - sion, the string $${{ is not considered eligible for brace expansion. + sion, the string $${{ is not considered eligible for brace expansion, and + inhibits brace expansion until the closing }}. This construct is typically used as shorthand when the common prefix of the strings to be generated is longer than in the above example: @@ -1501,36 +1550,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 @@ -1538,10 +1587,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 @@ -1563,16 +1617,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. If - _p_a_r_a_m_e_t_e_r is a nameref, this expands to the name of the variable refer- - enced by _p_a_r_a_m_e_t_e_r instead of performing the complete indirect expan- - sion. 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. @@ -1673,100 +1729,105 @@ EEXXPPAANNSSIIOONN ${_p_a_r_a_m_e_t_e_r##_w_o_r_d} ${_p_a_r_a_m_e_t_e_r####_w_o_r_d} RReemmoovvee mmaattcchhiinngg pprreeffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce - a pattern just as in pathname expansion. If the pattern matches - the beginning of the value of _p_a_r_a_m_e_t_e_r, then the result of the + a pattern just as in pathname expansion, and matched against the + expanded value of _p_a_r_a_m_e_t_e_r using the rules described under PPaatt-- + tteerrnn MMaattcchhiinngg below. If the pattern matches the beginning of + the value of _p_a_r_a_m_e_t_e_r, then the result of the expansion is the + expanded value of _p_a_r_a_m_e_t_e_r with the shortest matching pattern + (the ``##'' case) or the longest matching pattern (the ``####'' + case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the pattern removal + operation is applied to each positional parameter in turn, and + the expansion is the resultant list. If _p_a_r_a_m_e_t_e_r is an array + variable subscripted with @@ or **, the pattern removal operation + is applied to each member of the array in turn, and the expan- + sion is the resultant list. + + ${_p_a_r_a_m_e_t_e_r%%_w_o_r_d} + ${_p_a_r_a_m_e_t_e_r%%%%_w_o_r_d} + RReemmoovvee mmaattcchhiinngg ssuuffffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce + a pattern just as in pathname expansion, and matched against the + expanded value of _p_a_r_a_m_e_t_e_r using the rules described under PPaatt-- + tteerrnn MMaattcchhiinngg below. If the pattern matches a trailing portion + of the expanded value of _p_a_r_a_m_e_t_e_r, then the result of the expansion is the expanded value of _p_a_r_a_m_e_t_e_r with the shortest - matching pattern (the ``##'' case) or the longest matching pat- - tern (the ``####'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the + matching pattern (the ``%%'' case) or the longest matching pat- + tern (the ``%%%%'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the pattern removal operation is applied to each positional parame- ter in turn, and the expansion is the resultant list. If _p_a_r_a_m_- _e_t_e_r is an array variable subscripted with @@ or **, the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list. - ${_p_a_r_a_m_e_t_e_r%%_w_o_r_d} - ${_p_a_r_a_m_e_t_e_r%%%%_w_o_r_d} - RReemmoovvee mmaattcchhiinngg ssuuffffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce - a pattern just as in pathname expansion. If the pattern matches - a trailing portion of the expanded value of _p_a_r_a_m_e_t_e_r, then the - result of the expansion is the expanded value of _p_a_r_a_m_e_t_e_r with - the shortest matching pattern (the ``%%'' case) or the longest - matching pattern (the ``%%%%'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ - or **, the pattern removal operation is applied to each posi- - tional parameter in turn, and the expansion is the resultant - list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or - **, the pattern removal operation is applied to each member of - the array in turn, and the expansion is the resultant list. - ${_p_a_r_a_m_e_t_e_r//_p_a_t_t_e_r_n//_s_t_r_i_n_g} PPaatttteerrnn ssuubbssttiittuuttiioonn. The _p_a_t_t_e_r_n is expanded to produce a pat- - tern just as in pathname expansion. _P_a_r_a_m_e_t_e_r is expanded and + tern just as in pathname expansion, _P_a_r_a_m_e_t_e_r is expanded and the longest match of _p_a_t_t_e_r_n against its value is replaced with - _s_t_r_i_n_g. If _p_a_t_t_e_r_n begins with //, all matches of _p_a_t_t_e_r_n are - replaced with _s_t_r_i_n_g. Normally only the first match is - replaced. If _p_a_t_t_e_r_n begins with ##, it must match at the begin- - ning of the expanded value of _p_a_r_a_m_e_t_e_r. If _p_a_t_t_e_r_n begins with - %%, it must match at the end of the expanded value of _p_a_r_a_m_e_t_e_r. - If _s_t_r_i_n_g is null, matches of _p_a_t_t_e_r_n are deleted and the // fol- - lowing _p_a_t_t_e_r_n may be omitted. If the nnooccaasseemmaattcchh shell option - is enabled, the match is performed without regard to the case of - alphabetic characters. If _p_a_r_a_m_e_t_e_r is @@ or **, the substitution - operation is applied to each positional parameter in turn, and - the expansion is the resultant list. If _p_a_r_a_m_e_t_e_r is an array - variable subscripted with @@ or **, the substitution operation is - applied to each member of the array in turn, and the expansion - is the resultant list. + _s_t_r_i_n_g. The match is performed using the rules described under + PPaatttteerrnn MMaattcchhiinngg below. If _p_a_t_t_e_r_n begins with //, all matches + of _p_a_t_t_e_r_n are replaced with _s_t_r_i_n_g. Normally only the first + match is replaced. If _p_a_t_t_e_r_n begins with ##, it must match at + the beginning of the expanded value of _p_a_r_a_m_e_t_e_r. If _p_a_t_t_e_r_n + begins with %%, it must match at the end of the expanded value of + _p_a_r_a_m_e_t_e_r. If _s_t_r_i_n_g is null, matches of _p_a_t_t_e_r_n are deleted + and the // following _p_a_t_t_e_r_n may be omitted. If the nnooccaasseemmaattcchh + shell option is enabled, the match is performed without regard + to the case of alphabetic characters. If _p_a_r_a_m_e_t_e_r is @@ or **, + the substitution operation is applied to each positional parame- + ter in turn, and the expansion is the resultant list. If _p_a_r_a_m_- + _e_t_e_r is an array variable subscripted with @@ or **, the substitu- + tion operation is applied to each member of the array in turn, + and the expansion is the resultant list. ${_p_a_r_a_m_e_t_e_r^^_p_a_t_t_e_r_n} ${_p_a_r_a_m_e_t_e_r^^^^_p_a_t_t_e_r_n} ${_p_a_r_a_m_e_t_e_r,,_p_a_t_t_e_r_n} ${_p_a_r_a_m_e_t_e_r,,,,_p_a_t_t_e_r_n} - CCaassee mmooddiiffiiccaattiioonn. This expansion modifies the case of alpha- - betic characters in _p_a_r_a_m_e_t_e_r. The _p_a_t_t_e_r_n is expanded to pro- + CCaassee mmooddiiffiiccaattiioonn. This expansion modifies the case of alpha- + betic characters in _p_a_r_a_m_e_t_e_r. The _p_a_t_t_e_r_n is expanded to pro- duce a pattern just as in pathname expansion. Each character in - the expanded value of _p_a_r_a_m_e_t_e_r is tested against _p_a_t_t_e_r_n, and, - if it matches the pattern, its case is converted. The pattern - should not attempt to match more than one character. The ^^ - operator converts lowercase letters matching _p_a_t_t_e_r_n to upper- + the expanded value of _p_a_r_a_m_e_t_e_r is tested against _p_a_t_t_e_r_n, and, + if it matches the pattern, its case is converted. The pattern + should not attempt to match more than one character. The ^^ + operator converts lowercase letters matching _p_a_t_t_e_r_n to upper- case; the ,, operator converts matching uppercase letters to low- ercase. The ^^^^ and ,,,, expansions convert each matched character - in the expanded value; the ^^ and ,, expansions match and convert - only the first character in the expanded value. If _p_a_t_t_e_r_n is - omitted, it is treated like a ??, which matches every character. - If _p_a_r_a_m_e_t_e_r is @@ or **, the case modification operation is - applied to each positional parameter in turn, and the expansion - is the resultant list. If _p_a_r_a_m_e_t_e_r is an array variable sub- + in the expanded value; the ^^ and ,, expansions match and convert + only the first character in the expanded value. If _p_a_t_t_e_r_n is + omitted, it is treated like a ??, which matches every character. + If _p_a_r_a_m_e_t_e_r is @@ or **, the case modification operation is + applied to each positional parameter in turn, and the expansion + is the resultant list. If _p_a_r_a_m_e_t_e_r is an array variable sub- scripted with @@ or **, the case modification operation is applied - to each member of the array in turn, and the expansion is the + to each member of the array in turn, and the expansion is the resultant list. ${_p_a_r_a_m_e_t_e_r@@_o_p_e_r_a_t_o_r} PPaarraammeetteerr ttrraannssffoorrmmaattiioonn. The expansion is either a transforma- - tion of the value of _p_a_r_a_m_e_t_e_r or information about _p_a_r_a_m_e_t_e_r - itself, depending on the value of _o_p_e_r_a_t_o_r. Each _o_p_e_r_a_t_o_r is a + tion of the value of _p_a_r_a_m_e_t_e_r or information about _p_a_r_a_m_e_t_e_r + itself, depending on the value of _o_p_e_r_a_t_o_r. Each _o_p_e_r_a_t_o_r is a single letter: - QQ The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r + QQ The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r quoted in a format that can be reused as input. - EE The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r - with backslash escape sequences expanded as with the - $$''......'' quoting mechansim. + EE The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r + with backslash escape sequences expanded as with the + $$''......'' quoting mechanism. PP The expansion is a string that is the result of expanding the value of _p_a_r_a_m_e_t_e_r as if it were a prompt string (see PPRROOMMPPTTIINNGG below). - AA The expansion is a string in the form of an assignment - statement or ddeeccllaarree command that, if evaluated, will + AA The expansion is a string in the form of an assignment + statement or ddeeccllaarree command that, if evaluated, will recreate _p_a_r_a_m_e_t_e_r with its attributes and value. - aa The expansion is a string consisting of flag values rep- + aa The expansion is a string consisting of flag values rep- resenting _p_a_r_a_m_e_t_e_r's attributes. - If _p_a_r_a_m_e_t_e_r is @@ or **, the operation is applied to each posi- - tional parameter in turn, and the expansion is the resultant - list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or - **, the case modification operation is applied to each member of - the array in turn, and the expansion is the resultant list. + If _p_a_r_a_m_e_t_e_r is @@ or **, the operation is applied to each posi- + tional parameter in turn, and the expansion is the resultant + list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or + **, the operation is applied to each member of the array in turn, + and the expansion is the resultant list. - The result of the expansion is subject to word splitting and + The result of the expansion is subject to word splitting and pathname expansion as described below. CCoommmmaanndd SSuubbssttiittuuttiioonn @@ -1780,174 +1841,178 @@ EEXXPPAANNSSIIOONN BBaasshh performs the expansion by executing _c_o_m_m_a_n_d in a subshell environ- ment and replacing the command substitution with the standard output of the command, with any trailing newlines deleted. Embedded newlines are - not deleted, but they may be removed during word splitting. The com- - mand substitution $$((ccaatt _f_i_l_e)) can be replaced by the equivalent but + not deleted, but they may be removed during word splitting. The com- + mand substitution $$((ccaatt _f_i_l_e)) can be replaced by the equivalent but faster $$((<< _f_i_l_e)). - When the old-style backquote form of substitution is used, backslash - retains its literal meaning except when followed by $$, ``, or \\. The + When the old-style backquote form of substitution is used, backslash + retains its literal meaning except when followed by $$, ``, or \\. The first backquote not preceded by a backslash terminates the command sub- - stitution. When using the $(_c_o_m_m_a_n_d) form, all characters between the + stitution. When using the $(_c_o_m_m_a_n_d) form, all characters between the parentheses make up the command; none are treated specially. Command substitutions may be nested. To nest when using the backquoted form, escape the inner backquotes with backslashes. - If the substitution appears within double quotes, word splitting and + If the substitution appears within double quotes, word splitting and pathname expansion are not performed on the results. AArriitthhmmeettiicc EExxppaannssiioonn - Arithmetic expansion allows the evaluation of an arithmetic expression - and the substitution of the result. The format for arithmetic expan- + Arithmetic expansion allows the evaluation of an arithmetic expression + and the substitution of the result. The format for arithmetic expan- sion is: $$((((_e_x_p_r_e_s_s_i_o_n)))) - The _e_x_p_r_e_s_s_i_o_n is treated as if it were within double quotes, but a - double quote inside the parentheses is not treated specially. All + The _e_x_p_r_e_s_s_i_o_n is treated as if it were within double quotes, but a + double quote inside the parentheses is not treated specially. All tokens in the expression undergo parameter and variable expansion, com- - mand substitution, and quote removal. The result is treated as the - arithmetic expression to be evaluated. Arithmetic expansions may be + mand substitution, and quote removal. The result is treated as the + arithmetic expression to be evaluated. Arithmetic expansions may be nested. - The evaluation is performed according to the rules listed below under + The evaluation is performed according to the rules listed below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If _e_x_p_r_e_s_s_i_o_n is invalid, bbaasshh prints a message indicating failure and no substitution occurs. PPrroocceessss SSuubbssttiittuuttiioonn - _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n allows a process's input or output to be referred - to using a filename. It takes the form of <<((_l_i_s_t)) or >>((_l_i_s_t)). The - process _l_i_s_t is run asynchronously, and its input or output appears as + _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n allows a process's input or output to be referred + to using a filename. It takes the form of <<((_l_i_s_t)) or >>((_l_i_s_t)). The + process _l_i_s_t is run asynchronously, and its input or output appears as a filename. This filename is passed as an argument to the current com- - mand as the result of the expansion. If the >>((_l_i_s_t)) form is used, - writing to the file will provide input for _l_i_s_t. If the <<((_l_i_s_t)) form - is used, the file passed as an argument should be read to obtain the + mand as the result of the expansion. If the >>((_l_i_s_t)) form is used, + writing to the file will provide input for _l_i_s_t. If the <<((_l_i_s_t)) form + is used, the file passed as an argument should be read to obtain the output of _l_i_s_t. Process substitution is supported on systems that sup- port named pipes (_F_I_F_O_s) or the //ddeevv//ffdd method of naming open files. - When available, process substitution is performed simultaneously with - parameter and variable expansion, command substitution, and arithmetic + When available, process substitution is performed simultaneously with + parameter and variable expansion, command substitution, and arithmetic expansion. WWoorrdd SSpplliittttiinngg - The shell scans the results of parameter expansion, command substitu- - tion, and arithmetic expansion that did not occur within double quotes + The shell scans the results of parameter expansion, command substitu- + tion, and arithmetic expansion that did not occur within double quotes for _w_o_r_d _s_p_l_i_t_t_i_n_g. - The shell treats each character of IIFFSS as a delimiter, and splits the - results of the other expansions into words using these characters as - field terminators. If IIFFSS is unset, or its value is exactly - <><><>, the default, then sequences of <>, <>, - and <> at the beginning and end of the results of the previous - expansions are ignored, and any sequence of IIFFSS characters not at the - beginning or end serves to delimit words. If IIFFSS has a value other - than the default, then sequences of the whitespace characters ssppaaccee, - ttaabb, and nneewwlliinnee are ignored at the beginning and end of the word, as - long as the whitespace character is in the value of IIFFSS (an IIFFSS white- - space character). Any character in IIFFSS that is not IIFFSS whitespace, + The shell treats each character of IIFFSS as a delimiter, and splits the + results of the other expansions into words using these characters as + field terminators. If IIFFSS is unset, or its value is exactly + <><><>, the default, then sequences of <>, <>, + and <> at the beginning and end of the results of the previous + expansions are ignored, and any sequence of IIFFSS characters not at the + beginning or end serves to delimit words. If IIFFSS has a value other + than the default, then sequences of the whitespace characters ssppaaccee, + ttaabb, and nneewwlliinnee are ignored at the beginning and end of the word, as + long as the whitespace character is in the value of IIFFSS (an IIFFSS white- + space character). Any character in IIFFSS that is not IIFFSS whitespace, along with any adjacent IIFFSS whitespace characters, delimits a field. A - sequence of IIFFSS whitespace characters is also treated as a delimiter. + sequence of IIFFSS whitespace characters is also treated as a delimiter. If the value of IIFFSS is null, no word splitting occurs. - Explicit null arguments ("""" or '''') are retained and passed to commands + Explicit null arguments ("""" or '''') are retained and passed to commands as empty strings. Unquoted implicit null arguments, resulting from the expansion of parameters that have no values, are removed. If a parame- - ter with no value is expanded within double quotes, a null argument - results and is retained and passed to a command as an empty string. - When a quoted null argument appears as part of a word whose expansion - is non-null, the null argument is removed. That is, the word -d'' + ter with no value is expanded within double quotes, a null argument + results and is retained and passed to a command as an empty string. + When a quoted null argument appears as part of a word whose expansion + is non-null, the null argument is removed. That is, the word -d'' becomes -d after word splitting and null argument removal. Note that if no expansion occurs, no splitting is performed. PPaatthhnnaammee EExxppaannssiioonn - After word splitting, unless the --ff option has been set, bbaasshh scans - each word for the characters **, ??, and [[. If one of these characters - appears, then the word is regarded as a _p_a_t_t_e_r_n, and replaced with an - alphabetically sorted list of filenames matching the pattern (see PPaatt-- - tteerrnn MMaattcchhiinngg below). If no matching filenames are found, and the - shell option nnuullllgglloobb is not enabled, the word is left unchanged. If - the nnuullllgglloobb option is set, and no matches are found, the word is - removed. If the ffaaiillgglloobb shell option is set, and no matches are + After word splitting, unless the --ff option has been set, bbaasshh scans + each word for the characters **, ??, and [[. If one of these characters + appears, then the word is regarded as a _p_a_t_t_e_r_n, and replaced with an + alphabetically sorted list of filenames matching the pattern (see PPaatt-- + tteerrnn MMaattcchhiinngg below). If no matching filenames are found, and the + shell option nnuullllgglloobb is not enabled, the word is left unchanged. If + the nnuullllgglloobb option is set, and no matches are found, the word is + removed. If the ffaaiillgglloobb shell option is set, and no matches are found, an error message is printed and the command is not executed. If - the shell option nnooccaasseegglloobb is enabled, the match is performed without - regard to the case of alphabetic characters. When a pattern is used - for pathname expansion, the character ````..'''' at the start of a name or - immediately following a slash must be matched explicitly, unless the - shell option ddoottgglloobb is set. When matching a pathname, the slash char- - acter must always be matched explicitly. In other cases, the ````..'''' - character is not treated specially. See the description of sshhoopptt below - under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS for a description of the nnooccaasseegglloobb, nnuullll-- - gglloobb, ffaaiillgglloobb, and ddoottgglloobb shell options. - - The GGLLOOBBIIGGNNOORREE shell variable may be used to restrict the set of file- - names matching a _p_a_t_t_e_r_n. If GGLLOOBBIIGGNNOORREE is set, each matching filename - that also matches one of the patterns in GGLLOOBBIIGGNNOORREE is removed from the - list of matches. If the nnooccaasseegglloobb option is set, the matching against - the patterns in GGLLOOBBIIGGNNOORREE is performed without regard to case. The - filenames ````..'''' and ````....'''' are always ignored when GGLLOOBBIIGGNNOORREE is set - and not null. However, setting GGLLOOBBIIGGNNOORREE to a non-null value has the - effect of enabling the ddoottgglloobb shell option, so all other filenames - beginning with a ````..'''' will match. To get the old behavior of ignor- - ing filenames beginning with a ````..'''', make ````..**'''' one of the patterns - in GGLLOOBBIIGGNNOORREE. The ddoottgglloobb option is disabled when GGLLOOBBIIGGNNOORREE is - unset. The pattern matching honors the setting of the eexxttgglloobb shell + the shell option nnooccaasseegglloobb is enabled, the match is performed without + regard to the case of alphabetic characters. When a pattern is used + for pathname expansion, the character ````..'''' at the start of a name or + immediately following a slash must be matched explicitly, unless the + shell option ddoottgglloobb is set. The filenames ````..'''' and ````....'''' must + always be matched explicitly, even if ddoottgglloobb is set. In other cases, + the ````..'''' character is not treated specially. When matching a path- + name, the slash character must always be matched explicitly by a slash + in the pattern, but in other matching contexts it can be matched by a + special pattern character as described below under PPaatttteerrnn MMaattcchhiinngg. + See the description of sshhoopptt below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS for a + description of the nnooccaasseegglloobb, nnuullllgglloobb, ffaaiillgglloobb, and ddoottgglloobb shell + options. + + The GGLLOOBBIIGGNNOORREE shell variable may be used to restrict the set of file + names matching a _p_a_t_t_e_r_n. If GGLLOOBBIIGGNNOORREE is set, each matching file + name that also matches one of the patterns in GGLLOOBBIIGGNNOORREE is removed + from the list of matches. If the nnooccaasseegglloobb option is set, the match- + ing against the patterns in GGLLOOBBIIGGNNOORREE is performed without regard to + case. The filenames ````..'''' and ````....'''' are always ignored when GGLLOOBBIIGG-- + NNOORREE is set and not null. However, setting GGLLOOBBIIGGNNOORREE to a non-null + value has the effect of enabling the ddoottgglloobb shell option, so all other + filenames beginning with a ````..'''' will match. To get the old behavior + of ignoring filenames beginning with a ````..'''', make ````..**'''' one of the + patterns in GGLLOOBBIIGGNNOORREE. The ddoottgglloobb option is disabled when GGLLOOBBIIGGNNOORREE + is unset. The pattern matching honors the setting of the eexxttgglloobb shell option. PPaatttteerrnn MMaattcchhiinngg Any character that appears in a pattern, other than the special pattern - characters described below, matches itself. The NUL character may not - occur in a pattern. A backslash escapes the following character; the - escaping backslash is discarded when matching. The special pattern + characters described below, matches itself. The NUL character may not + occur in a pattern. A backslash escapes the following character; the + escaping backslash is discarded when matching. The special pattern characters must be quoted if they are to be matched literally. The special pattern characters have the following meanings: - ** Matches any string, including the null string. When the - gglloobbssttaarr shell option is enabled, and ** is used in a - pathname expansion context, two adjacent **s used as a - single pattern will match all files and zero or more - directories and subdirectories. If followed by a //, two - adjacent **s will match only directories and subdirecto- + ** Matches any string, including the null string. When the + gglloobbssttaarr shell option is enabled, and ** is used in a + pathname expansion context, two adjacent **s used as a + single pattern will match all files and zero or more + directories and subdirectories. If followed by a //, two + adjacent **s will match only directories and subdirecto- ries. ?? Matches any single character. - [[......]] Matches any one of the enclosed characters. A pair of - characters separated by a hyphen denotes a _r_a_n_g_e _e_x_p_r_e_s_- - _s_i_o_n; any character that falls between those two charac- - ters, inclusive, using the current locale's collating - sequence and character set, is matched. If the first + [[......]] Matches any one of the enclosed characters. A pair of + characters separated by a hyphen denotes a _r_a_n_g_e _e_x_p_r_e_s_- + _s_i_o_n; any character that falls between those two charac- + ters, inclusive, using the current locale's collating + sequence and character set, is matched. If the first character following the [[ is a !! or a ^^ then any charac- - ter not enclosed is matched. The sorting order of char- - acters in range expressions is determined by the current - locale and the values of the LLCC__CCOOLLLLAATTEE or LLCC__AALLLL shell + ter not enclosed is matched. The sorting order of char- + acters in range expressions is determined by the current + locale and the values of the LLCC__CCOOLLLLAATTEE or LLCC__AALLLL shell variables, if set. To obtain the traditional interpreta- - tion of range expressions, where [[aa--dd]] is equivalent to - [[aabbccdd]], set value of the LLCC__AALLLL shell variable to CC, or - enable the gglloobbaasscciiiirraannggeess shell option. A -- may be + tion of range expressions, where [[aa--dd]] is equivalent to + [[aabbccdd]], set value of the LLCC__AALLLL shell variable to CC, or + enable the gglloobbaasscciiiirraannggeess shell option. A -- may be matched by including it as the first or last character in the set. A ]] may be matched by including it as the first character in the set. - Within [[ and ]], _c_h_a_r_a_c_t_e_r _c_l_a_s_s_e_s can be specified using + Within [[ and ]], _c_h_a_r_a_c_t_e_r _c_l_a_s_s_e_s can be specified using the syntax [[::_c_l_a_s_s::]], where _c_l_a_s_s is one of the following classes defined in the POSIX standard: - aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr pprriinntt + aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr pprriinntt ppuunncctt ssppaaccee uuppppeerr wwoorrdd xxddiiggiitt A character class matches any character belonging to that class. The wwoorrdd character class matches letters, digits, and the character _. - Within [[ and ]], an _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s can be specified + Within [[ and ]], an _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s can be specified using the syntax [[==_c==]], which matches all characters with - the same collation weight (as defined by the current + the same collation weight (as defined by the current locale) as the character _c. Within [[ and ]], the syntax [[.._s_y_m_b_o_l..]] matches the collat- ing symbol _s_y_m_b_o_l. If the eexxttgglloobb shell option is enabled using the sshhoopptt builtin, several - extended pattern matching operators are recognized. In the following + extended pattern matching operators are recognized. In the following description, a _p_a_t_t_e_r_n_-_l_i_s_t is a list of one or more patterns separated by a ||. Composite patterns may be formed using one or more of the fol- lowing sub-patterns: @@ -1963,63 +2028,71 @@ EEXXPPAANNSSIIOONN !!((_p_a_t_t_e_r_n_-_l_i_s_t)) Matches anything except one of the given patterns + Complicated extended pattern matching against long strings is slow, + especially when the patterns contain alternations and the strings con- + tain multiple matches. Using separate matches against shorter strings, + or using arrays of strings instead of a single long string, may be + faster. + QQuuoottee RReemmoovvaall After the preceding expansions, all unquoted occurrences of the charac- - ters \\, '', and "" that did not result from one of the above expansions + ters \\, '', and "" that did not result from one of the above expansions are removed. RREEDDIIRREECCTTIIOONN - Before a command is executed, its input and output may be _r_e_d_i_r_e_c_t_e_d - using a special notation interpreted by the shell. Redirection allows - commands' file handles to be duplicated, opened, closed, made to refer + Before a command is executed, its input and output may be _r_e_d_i_r_e_c_t_e_d + using a special notation interpreted by the shell. Redirection allows + commands' file handles to be duplicated, opened, closed, made to refer to different files, and can change the files the command reads from and - writes to. Redirection may also be used to modify file handles in the - current shell execution environment. The following redirection opera- + writes to. Redirection may also be used to modify file handles in the + current shell execution environment. The following redirection opera- tors may precede or appear anywhere within a _s_i_m_p_l_e _c_o_m_m_a_n_d or may fol- - low a _c_o_m_m_a_n_d. Redirections are processed in the order they appear, + low a _c_o_m_m_a_n_d. Redirections are processed in the order they appear, from left to right. - Each redirection that may be preceded by a file descriptor number may + Each redirection that may be preceded by a file descriptor number may instead be preceded by a word of the form {_v_a_r_n_a_m_e}. In this case, for each redirection operator except >&- and <&-, the shell will allocate a - file descriptor greater than or equal to 10 and assign it to _v_a_r_n_a_m_e. - If >&- or <&- is preceded by {_v_a_r_n_a_m_e}, the value of _v_a_r_n_a_m_e defines - the file descriptor to close. - - In the following descriptions, if the file descriptor number is omit- - ted, and the first character of the redirection operator is <<, the re- - direction refers to the standard input (file descriptor 0). If the - first character of the redirection operator is >>, the redirection + file descriptor greater than or equal to 10 and assign it to _v_a_r_n_a_m_e. + If >&- or <&- is preceded by {_v_a_r_n_a_m_e}, the value of _v_a_r_n_a_m_e defines + the file descriptor to close. If {_v_a_r_n_a_m_e} is supplied, the redirect- + ion persists beyond the scope of the command, allowing the shell pro- + grammer to manage the file descriptor himself. + + In the following descriptions, if the file descriptor number is omit- + ted, and the first character of the redirection operator is <<, the re- + direction refers to the standard input (file descriptor 0). If the + first character of the redirection operator is >>, the redirection refers to the standard output (file descriptor 1). - The word following the redirection operator in the following descrip- - tions, unless otherwise noted, is subjected to brace expansion, tilde - expansion, parameter and variable expansion, command substitution, - arithmetic expansion, quote removal, pathname expansion, and word + The word following the redirection operator in the following descrip- + tions, unless otherwise noted, is subjected to brace expansion, tilde + expansion, parameter and variable expansion, command substitution, + arithmetic expansion, quote removal, pathname expansion, and word splitting. If it expands to more than one word, bbaasshh reports an error. - Note that the order of redirections is significant. For example, the + Note that the order of redirections is significant. For example, the command ls >> dirlist 2>>&&1 - directs both standard output and standard error to the file _d_i_r_l_i_s_t, + directs both standard output and standard error to the file _d_i_r_l_i_s_t, while the command ls 2>>&&1 >> dirlist - directs only the standard output to file _d_i_r_l_i_s_t, because the standard - error was duplicated from the standard output before the standard out- + directs only the standard output to file _d_i_r_l_i_s_t, because the standard + error was duplicated from the standard output before the standard out- put was redirected to _d_i_r_l_i_s_t. BBaasshh handles several filenames specially when they are used in redirec- tions, as described in the following table. If the operating system on which bbaasshh is running provides these special files, bash will use them; - otherwise it will emulate them internally with the behavior described + otherwise it will emulate them internally with the behavior described below. //ddeevv//ffdd//_f_d - If _f_d is a valid integer, file descriptor _f_d is dupli- + If _f_d is a valid integer, file descriptor _f_d is dupli- cated. //ddeevv//ssttddiinn File descriptor 0 is duplicated. @@ -2029,22 +2102,22 @@ RREEDDIIRREECCTTIIOONN File descriptor 2 is duplicated. //ddeevv//ttccpp//_h_o_s_t//_p_o_r_t If _h_o_s_t is a valid hostname or Internet address, and _p_o_r_t - is an integer port number or service name, bbaasshh attempts + is an integer port number or service name, bbaasshh attempts to open the corresponding TCP socket. //ddeevv//uuddpp//_h_o_s_t//_p_o_r_t If _h_o_s_t is a valid hostname or Internet address, and _p_o_r_t - is an integer port number or service name, bbaasshh attempts + is an integer port number or service name, bbaasshh attempts to open the corresponding UDP socket. A failure to open or create a file causes the redirection to fail. - Redirections using file descriptors greater than 9 should be used with - care, as they may conflict with file descriptors the shell uses inter- + Redirections using file descriptors greater than 9 should be used with + care, as they may conflict with file descriptors the shell uses inter- nally. RReeddiirreeccttiinngg IInnppuutt Redirection of input causes the file whose name results from the expan- - sion of _w_o_r_d to be opened for reading on file descriptor _n, or the + sion of _w_o_r_d to be opened for reading on file descriptor _n, or the standard input (file descriptor 0) if _n is not specified. The general format for redirecting input is: @@ -2052,27 +2125,27 @@ RREEDDIIRREECCTTIIOONN [_n]<<_w_o_r_d RReeddiirreeccttiinngg OOuuttppuutt - Redirection of output causes the file whose name results from the + Redirection of output causes the file whose name results from the expansion of _w_o_r_d to be opened for writing on file descriptor _n, or the standard output (file descriptor 1) if _n is not specified. If the file - does not exist it is created; if it does exist it is truncated to zero + does not exist it is created; if it does exist it is truncated to zero size. The general format for redirecting output is: [_n]>>_w_o_r_d - If the redirection operator is >>, and the nnoocclloobbbbeerr option to the sseett - builtin has been enabled, the redirection will fail if the file whose - name results from the expansion of _w_o_r_d exists and is a regular file. + If the redirection operator is >>, and the nnoocclloobbbbeerr option to the sseett + builtin has been enabled, the redirection will fail if the file whose + name results from the expansion of _w_o_r_d exists and is a regular file. If the redirection operator is >>||, or the redirection operator is >> and the nnoocclloobbbbeerr option to the sseett builtin command is not enabled, the re- direction is attempted even if the file named by _w_o_r_d exists. AAppppeennddiinngg RReeddiirreecctteedd OOuuttppuutt - Redirection of output in this fashion causes the file whose name - results from the expansion of _w_o_r_d to be opened for appending on file - descriptor _n, or the standard output (file descriptor 1) if _n is not + Redirection of output in this fashion causes the file whose name + results from the expansion of _w_o_r_d to be opened for appending on file + descriptor _n, or the standard output (file descriptor 1) if _n is not specified. If the file does not exist it is created. The general format for appending output is: @@ -2080,11 +2153,11 @@ RREEDDIIRREECCTTIIOONN [_n]>>>>_w_o_r_d RReeddiirreeccttiinngg SSttaannddaarrdd OOuuttppuutt aanndd SSttaannddaarrdd EErrrroorr - This construct allows both the standard output (file descriptor 1) and - the standard error output (file descriptor 2) to be redirected to the + This construct allows both the standard output (file descriptor 1) and + the standard error output (file descriptor 2) to be redirected to the file whose name is the expansion of _w_o_r_d. - There are two formats for redirecting standard output and standard + There are two formats for redirecting standard output and standard error: &&>>_w_o_r_d @@ -2096,13 +2169,13 @@ RREEDDIIRREECCTTIIOONN >>_w_o_r_d 2>>&&1 - When using the second form, _w_o_r_d may not expand to a number or --. If - it does, other redirection operators apply (see DDuupplliiccaattiinngg FFiillee + When using the second form, _w_o_r_d may not expand to a number or --. If + it does, other redirection operators apply (see DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss below) for compatibility reasons. AAppppeennddiinngg SSttaannddaarrdd OOuuttppuutt aanndd SSttaannddaarrdd EErrrroorr - This construct allows both the standard output (file descriptor 1) and - the standard error output (file descriptor 2) to be appended to the + This construct allows both the standard output (file descriptor 1) and + the standard error output (file descriptor 2) to be appended to the file whose name is the expansion of _w_o_r_d. The format for appending standard output and standard error is: @@ -2116,10 +2189,10 @@ RREEDDIIRREECCTTIIOONN (see DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss below). HHeerree DDooccuummeennttss - This type of redirection instructs the shell to read input from the + This type of redirection instructs the shell to read input from the current source until a line containing only _d_e_l_i_m_i_t_e_r (with no trailing - blanks) is seen. All of the lines read up to that point are then used - as the standard input (or file descriptor _n if _n is specified) for a + blanks) is seen. All of the lines read up to that point are then used + as the standard input (or file descriptor _n if _n is specified) for a command. The format of here-documents is: @@ -2128,18 +2201,18 @@ RREEDDIIRREECCTTIIOONN _h_e_r_e_-_d_o_c_u_m_e_n_t _d_e_l_i_m_i_t_e_r - No parameter and variable expansion, command substitution, arithmetic - expansion, or pathname expansion is performed on _w_o_r_d. If any part of - _w_o_r_d is quoted, the _d_e_l_i_m_i_t_e_r is the result of quote removal on _w_o_r_d, - and the lines in the here-document are not expanded. If _w_o_r_d is - unquoted, all lines of the here-document are subjected to parameter - expansion, command substitution, and arithmetic expansion, the charac- - ter sequence \\<> is ignored, and \\ must be used to quote the + No parameter and variable expansion, command substitution, arithmetic + expansion, or pathname expansion is performed on _w_o_r_d. If any part of + _w_o_r_d is quoted, the _d_e_l_i_m_i_t_e_r is the result of quote removal on _w_o_r_d, + and the lines in the here-document are not expanded. If _w_o_r_d is + unquoted, all lines of the here-document are subjected to parameter + expansion, command substitution, and arithmetic expansion, the charac- + ter sequence \\<> is ignored, and \\ must be used to quote the characters \\, $$, and ``. If the redirection operator is <<<<--, then all leading tab characters are - stripped from input lines and the line containing _d_e_l_i_m_i_t_e_r. This - allows here-documents within shell scripts to be indented in a natural + stripped from input lines and the line containing _d_e_l_i_m_i_t_e_r. This + allows here-documents within shell scripts to be indented in a natural fashion. HHeerree SSttrriinnggss @@ -2147,12 +2220,11 @@ RREEDDIIRREECCTTIIOONN [_n]<<<<<<_w_o_r_d - The _w_o_r_d undergoes brace expansion, tilde expansion, parameter and - variable expansion, command substitution, arithmetic expansion, and - quote removal. Pathname expansion and word splitting are not per- - formed. The result is supplied as a single string, with a newline - appended, to the command on its standard input (or file descriptor _n if - _n is specified). + The _w_o_r_d undergoes tilde expansion, parameter and variable expansion, + command substitution, arithmetic expansion, and quote removal. Path- + name expansion and word splitting are not performed. The result is + supplied as a single string, with a newline appended, to the command on + its standard input (or file descriptor _n if _n is specified). DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss The redirection operator @@ -2232,19 +2304,19 @@ AALLIIAASSEESS sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The rules concerning the definition and use of aliases are somewhat - confusing. BBaasshh always reads at least one complete line of input - before executing any of the commands on that line. Aliases are - expanded when a command is read, not when it is executed. Therefore, - an alias definition appearing on the same line as another command does - not take effect until the next line of input is read. The commands - following the alias definition on that line are not affected by the new - alias. This behavior is also an issue when functions are executed. - Aliases are expanded when a function definition is read, not when the - function is executed, because a function definition is itself a com- - mand. As a consequence, aliases defined in a function are not avail- - able until after that function is executed. To be safe, always put - alias definitions on a separate line, and do not use aalliiaass in compound - commands. + confusing. BBaasshh always reads at least one complete line of input, and + all lines that make up a compound command, before executing any of the + commands on that line or the compound command. Aliases are expanded + when a command is read, not when it is executed. Therefore, an alias + definition appearing on the same line as another command does not take + effect until the next line of input is read. The commands following + the alias definition on that line are not affected by the new alias. + This behavior is also an issue when functions are executed. Aliases + are expanded when a function definition is read, not when the function + is executed, because a function definition is itself a command. As a + consequence, aliases defined in a function are not available until + after that function is executed. To be safe, always put alias defini- + tions on a separate line, and do not use aalliiaass in compound commands. For almost every purpose, aliases are superseded by shell functions. @@ -2273,29 +2345,57 @@ FFUUNNCCTTIIOONNSS Variables local to the function may be declared with the llooccaall builtin command. Ordinarily, variables and their values are shared between the - function and its caller. - - The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, - defines a maximum function nesting level. Function invocations that + function and its caller. If a variable is declared llooccaall, the vari- + able's visible scope is restricted to that function and its children + (including the functions it calls). Local variables "shadow" variables + with the same name declared at previous scopes. For instance, a local + variable declared in a function hides a global variable of the same + name: references and assignments refer to the local variable, leaving + the global variable unmodified. When the function returns, the global + variable is once again visible. + + The shell uses _d_y_n_a_m_i_c _s_c_o_p_i_n_g to control a variable's visibility + within functions. With dynamic scoping, visible variables and their + values are a result of the sequence of function calls that caused exe- + cution to reach the current function. The value of a variable that a + function sees depends on its value within its caller, if any, whether + that caller is the "global" scope or another shell function. This is + also the value that a local variable declaration "shadows", and the + value that is restored when the function returns. + + For example, if a variable _v_a_r is declared as local in function _f_u_n_c_1, + and _f_u_n_c_1 calls another function _f_u_n_c_2, references to _v_a_r made from + within _f_u_n_c_2 will resolve to the local variable _v_a_r from _f_u_n_c_1, shadow- + ing any global variable named _v_a_r. + + The uunnsseett builtin also acts using the same dynamic scope: if a variable + is local to the current scope, uunnsseett will unset it; otherwise the unset + will refer to the variable found in any calling scope as described + above. If a variable at the current local scope is unset, it will + remain so until it is reset in that scope or until the function + returns. Once the function returns, any instance of the variable at a + previous scope will become visible. If the unset acts on a variable at + a previous scope, any instance of a variable with that name that had + been shadowed will become visible. + + The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, + defines a maximum function nesting level. Function invocations that exceed the limit cause the entire command to abort. - If the builtin command rreettuurrnn is executed in a function, the function - completes and execution resumes with the next command after the func- - tion call. Any command associated with the RREETTUURRNN trap is executed + If the builtin command rreettuurrnn is executed in a function, the function + completes and execution resumes with the next command after the func- + tion call. Any command associated with the RREETTUURRNN trap is executed before execution resumes. When a function completes, the values of the - positional parameters and the special parameter ## are restored to the + positional parameters and the special parameter ## are restored to the values they had prior to the function's execution. - Function names and definitions may be listed with the --ff option to the + Function names and definitions may be listed with the --ff option to the ddeeccllaarree or ttyyppeesseett builtin commands. The --FF option to ddeeccllaarree or ttyyppee-- - sseett will list the function names only (and optionally the source file - and line number, if the eexxttddeebbuugg shell option is enabled). Functions - may be exported so that subshells automatically have them defined with - the --ff option to the eexxppoorrtt builtin. A function definition may be - deleted using the --ff option to the uunnsseett builtin. Note that shell - functions and variables with the same name may result in multiple iden- - tically-named entries in the environment passed to the shell's chil- - dren. Care should be taken in cases where this may cause a problem. + sseett will list the function names only (and optionally the source file + and line number, if the eexxttddeebbuugg shell option is enabled). Functions + may be exported so that subshells automatically have them defined with + the --ff option to the eexxppoorrtt builtin. A function definition may be + deleted using the --ff option to the uunnsseett builtin. Functions may be recursive. The FFUUNNCCNNEESSTT variable may be used to limit the depth of the function call stack and restrict the number of func- @@ -2314,9 +2414,9 @@ AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN _i_d++++ _i_d---- variable post-increment and post-decrement + -- ++ unary minus and plus ++++_i_d ----_i_d variable pre-increment and pre-decrement - -- ++ unary minus and plus !! ~~ logical and bitwise negation **** exponentiation ** // %% multiplication, division, remainder @@ -2365,15 +2465,19 @@ AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS Conditional expressions are used by the [[[[ compound command and the tteesstt and [[ builtin commands to test file attributes and perform string - and arithmetic comparisons. Expressions are formed from the following - unary or binary primaries. BBaasshh handles several filenames specially - when they are used in expressions. If the operating system on which - bbaasshh is running provides these special files, bash will use them; oth- - erwise it will emulate them internally with this behavior: If any _f_i_l_e - argument to one of the primaries is of the form _/_d_e_v_/_f_d_/_n, then file - descriptor _n is checked. If the _f_i_l_e argument to one of the primaries - is one of _/_d_e_v_/_s_t_d_i_n, _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, - 1, or 2, respectively, is checked. + and arithmetic comparisons. The tteesstt abd [[ commands determine their + behavior based on the number of arguments; see the descriptions of + those commands for any other command-specific actions. + + Expressions are formed from the following unary or binary primaries. + BBaasshh handles several filenames specially when they are used in expres- + sions. If the operating system on which bbaasshh is running provides these + special files, bash will use them; otherwise it will emulate them + internally with this behavior: If any _f_i_l_e argument to one of the pri- + maries is of the form _/_d_e_v_/_f_d_/_n, then file descriptor _n is checked. If + the _f_i_l_e argument to one of the primaries is one of _/_d_e_v_/_s_t_d_i_n, + _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, 1, or 2, respectively, + is checked. Unless otherwise specified, primaries that operate on files follow sym- bolic links and operate on the target of the link, rather than the link @@ -2470,7 +2574,9 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS binary operators return true if _a_r_g_1 is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to _a_r_g_2, respectively. _A_r_g_1 and _a_r_g_2 may be positive - or negative integers. + or negative integers. When used with the [[[[ command, _A_r_g_1 and + _A_r_g_2 are evaluated as arithmetic expressions (see AARRIITTHHMMEETTIICC + EEVVAALLUUAATTIIOONN above). SSIIMMPPLLEE CCOOMMMMAANNDD EEXXPPAANNSSIIOONN When a simple command is executed, the shell performs the following @@ -2529,43 +2635,44 @@ CCOOMMMMAANNDD EEXXEECCUUTTIIOONN performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named ccoommmmaanndd__nnoott__ffoouunndd__hhaannddllee. If that function exists, it is invoked - with the original command and the original command's arguments as its - arguments, and the function's exit status becomes the exit status of - the shell. If that function is not defined, the shell prints an error - message and returns an exit status of 127. + in a separate execution environment with the original command and the + original command's arguments as its arguments, and the function's exit + status becomes the exit status of that subshell. If that function is + not defined, the shell prints an error message and returns an exit sta- + tus of 127. - If the search is successful, or if the command name contains one or + If the search is successful, or if the command name contains one or more slashes, the shell executes the named program in a separate execu- tion environment. Argument 0 is set to the name given, and the remain- ing arguments to the command are set to the arguments given, if any. - If this execution fails because the file is not in executable format, - and the file is not a directory, it is assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a - file containing shell commands. A subshell is spawned to execute it. - This subshell reinitializes itself, so that the effect is as if a new - shell had been invoked to handle the script, with the exception that - the locations of commands remembered by the parent (see hhaasshh below + If this execution fails because the file is not in executable format, + and the file is not a directory, it is assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a + file containing shell commands. A subshell is spawned to execute it. + This subshell reinitializes itself, so that the effect is as if a new + shell had been invoked to handle the script, with the exception that + the locations of commands remembered by the parent (see hhaasshh below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS) are retained by the child. - If the program is a file beginning with ##!!, the remainder of the first - line specifies an interpreter for the program. The shell executes the + If the program is a file beginning with ##!!, the remainder of the first + line specifies an interpreter for the program. The shell executes the specified interpreter on operating systems that do not handle this exe- cutable format themselves. The arguments to the interpreter consist of - a single optional argument following the interpreter name on the first - line of the program, followed by the name of the program, followed by + a single optional argument following the interpreter name on the first + line of the program, followed by the name of the program, followed by the command arguments, if any. CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT - The shell has an _e_x_e_c_u_t_i_o_n _e_n_v_i_r_o_n_m_e_n_t, which consists of the follow- + The shell has an _e_x_e_c_u_t_i_o_n _e_n_v_i_r_o_n_m_e_n_t, which consists of the follow- ing: - +o open files inherited by the shell at invocation, as modified by + +o open files inherited by the shell at invocation, as modified by redirections supplied to the eexxeecc builtin - +o the current working directory as set by ccdd, ppuusshhdd, or ppooppdd, or + +o the current working directory as set by ccdd, ppuusshhdd, or ppooppdd, or inherited by the shell at invocation - +o the file creation mode mask as set by uummaasskk or inherited from + +o the file creation mode mask as set by uummaasskk or inherited from the shell's parent +o current traps set by ttrraapp @@ -2573,238 +2680,245 @@ CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENN +o shell parameters that are set by variable assignment or with sseett or inherited from the shell's parent in the environment - +o shell functions defined during execution or inherited from the + +o shell functions defined during execution or inherited from the shell's parent in the environment - +o options enabled at invocation (either by default or with com- + +o options enabled at invocation (either by default or with com- mand-line arguments) or by sseett +o options enabled by sshhoopptt +o shell aliases defined with aalliiaass - +o various process IDs, including those of background jobs, the + +o various process IDs, including those of background jobs, the value of $$$$, and the value of PPPPIIDD - When a simple command other than a builtin or shell function is to be - executed, it is invoked in a separate execution environment that con- - sists of the following. Unless otherwise noted, the values are inher- + When a simple command other than a builtin or shell function is to be + executed, it is invoked in a separate execution environment that con- + sists of the following. Unless otherwise noted, the values are inher- ited from the shell. - +o the shell's open files, plus any modifications and additions + +o the shell's open files, plus any modifications and additions specified by redirections to the command +o the current working directory +o the file creation mode mask - +o shell variables and functions marked for export, along with + +o shell variables and functions marked for export, along with variables exported for the command, passed in the environment +o traps caught by the shell are reset to the values inherited from the shell's parent, and traps ignored by the shell are ignored - A command invoked in this separate environment cannot affect the + A command invoked in this separate environment cannot affect the shell's execution environment. - Command substitution, commands grouped with parentheses, and asynchro- + Command substitution, commands grouped with parentheses, and asynchro- nous commands are invoked in a subshell environment that is a duplicate - of the shell environment, except that traps caught by the shell are + of the shell environment, except that traps caught by the shell are reset to the values that the shell inherited from its parent at invoca- tion. Builtin commands that are invoked as part of a pipeline are also executed in a subshell environment. Changes made to the subshell envi- ronment cannot affect the shell's execution environment. Subshells spawned to execute command substitutions inherit the value of - the --ee option from the parent shell. When not in _p_o_s_i_x mode, bbaasshh + the --ee option from the parent shell. When not in _p_o_s_i_x _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 - default standard input for the command is the empty file _/_d_e_v_/_n_u_l_l. - Otherwise, the invoked command inherits the file descriptors of the + If a command is followed by a && and job control is not active, the + default standard input for the command is the empty file _/_d_e_v_/_n_u_l_l. + Otherwise, the invoked command inherits the file descriptors of the calling shell as modified by redirections. EENNVVIIRROONNMMEENNTT - When a program is invoked it is given an array of strings called the + When a program is invoked it is given an array of strings called the _e_n_v_i_r_o_n_m_e_n_t. This is a list of _n_a_m_e-_v_a_l_u_e pairs, of the form _n_a_m_e=_v_a_l_u_e. - The shell provides several ways to manipulate the environment. On + The shell provides several ways to manipulate the environment. On invocation, the shell scans its own environment and creates a parameter - for each name found, automatically marking it for _e_x_p_o_r_t to child pro- - cesses. Executed commands inherit the environment. The eexxppoorrtt and - ddeeccllaarree --xx commands allow parameters and functions to be added to and + for each name found, automatically marking it for _e_x_p_o_r_t to child pro- + cesses. Executed commands inherit the environment. The eexxppoorrtt and + ddeeccllaarree --xx commands allow parameters and functions to be added to and deleted from the environment. If the value of a parameter in the envi- - ronment is modified, the new value becomes part of the environment, - replacing the old. The environment inherited by any executed command - consists of the shell's initial environment, whose values may be modi- - fied in the shell, less any pairs removed by the uunnsseett command, plus + ronment is modified, the new value becomes part of the environment, + replacing the old. The environment inherited by any executed command + consists of the shell's initial environment, whose values may be modi- + fied in the shell, less any pairs removed by the uunnsseett command, plus any additions via the eexxppoorrtt and ddeeccllaarree --xx commands. - The environment for any _s_i_m_p_l_e _c_o_m_m_a_n_d or function may be augmented - temporarily by prefixing it with parameter assignments, as described + The environment for any _s_i_m_p_l_e _c_o_m_m_a_n_d or function may be augmented + temporarily by prefixing it with parameter assignments, as described above in PPAARRAAMMEETTEERRSS. These assignment statements affect only the envi- ronment seen by that command. - If the --kk option is set (see the sseett builtin command below), then _a_l_l - parameter assignments are placed in the environment for a command, not + If the --kk option is set (see the sseett builtin command below), then _a_l_l + parameter assignments are placed in the environment for a command, not just those that precede the command name. - When bbaasshh invokes an external command, the variable __ is set to the + When bbaasshh invokes an external command, the variable __ is set to the full filename of the command and passed to that command in its environ- ment. EEXXIITT SSTTAATTUUSS - The exit status of an executed command is the value returned by the + The exit status of an executed command is the value returned by the _w_a_i_t_p_i_d system call or equivalent function. Exit statuses fall between - 0 and 255, though, as explained below, the shell may use values above + 0 and 255, though, as explained below, the shell may use values above 125 specially. Exit statuses from shell builtins and compound commands are also limited to this range. Under certain circumstances, the shell will use special values to indicate specific failure modes. For the shell's purposes, a command which exits with a zero exit status - has succeeded. An exit status of zero indicates success. A non-zero - exit status indicates failure. When a command terminates on a fatal + has succeeded. An exit status of zero indicates success. A non-zero + exit status indicates failure. When a command terminates on a fatal signal _N, bbaasshh uses the value of 128+_N as the exit status. - If a command is not found, the child process created to execute it - returns a status of 127. If a command is found but is not executable, + If a command is not found, the child process created to execute it + returns a status of 127. If a command is found but is not executable, the return status is 126. If a command fails because of an error during expansion or redirection, the exit status is greater than zero. - Shell builtin commands return a status of 0 (_t_r_u_e) if successful, and - non-zero (_f_a_l_s_e) if an error occurs while they execute. All builtins - return an exit status of 2 to indicate incorrect usage, generally + Shell builtin commands return a status of 0 (_t_r_u_e) if successful, and + non-zero (_f_a_l_s_e) if an error occurs while they execute. All builtins + return an exit status of 2 to indicate incorrect usage, generally invalid options or missing arguments. - BBaasshh itself returns the exit status of the last command executed, - unless a syntax error occurs, in which case it exits with a non-zero + BBaasshh itself returns the exit status of the last command executed, + unless a syntax error occurs, in which case it exits with a non-zero value. See also the eexxiitt builtin command below. SSIIGGNNAALLSS - When bbaasshh is interactive, in the absence of any traps, it ignores + When bbaasshh is interactive, in the absence of any traps, it ignores SSIIGGTTEERRMM (so that kkiillll 00 does not kill an interactive shell), and SSIIGGIINNTT - is caught and handled (so that the wwaaiitt builtin is interruptible). In - all cases, bbaasshh ignores SSIIGGQQUUIITT. If job control is in effect, bbaasshh + is caught and handled (so that the wwaaiitt builtin is interruptible). In + all cases, bbaasshh ignores SSIIGGQQUUIITT. If job control is in effect, bbaasshh ignores SSIIGGTTTTIINN, SSIIGGTTTTOOUU, and SSIIGGTTSSTTPP. Non-builtin commands run by bbaasshh have signal handlers set to the values - inherited by the shell from its parent. When job control is not in - effect, asynchronous commands ignore SSIIGGIINNTT and SSIIGGQQUUIITT in addition to - these inherited handlers. Commands run as a result of command substi- + inherited by the shell from its parent. When job control is not in + effect, asynchronous commands ignore SSIIGGIINNTT and SSIIGGQQUUIITT in addition to + these inherited handlers. Commands run as a result of command substi- tution ignore the keyboard-generated job control signals SSIIGGTTTTIINN, SSIIGGTT-- TTOOUU, and SSIIGGTTSSTTPP. - The shell exits by default upon receipt of a SSIIGGHHUUPP. Before exiting, - an interactive shell resends the SSIIGGHHUUPP to all jobs, running or + The shell exits by default upon receipt of a SSIIGGHHUUPP. Before exiting, + an interactive shell resends the SSIIGGHHUUPP to all jobs, running or stopped. Stopped jobs are sent SSIIGGCCOONNTT to ensure that they receive the - SSIIGGHHUUPP. To prevent the shell from sending the signal to a particular - job, it should be removed from the jobs table with the ddiissoowwnn builtin - (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) or marked to not receive SSIIGGHHUUPP + SSIIGGHHUUPP. To prevent the shell from sending the signal to a particular + job, it should be removed from the jobs table with the ddiissoowwnn builtin + (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) or marked to not receive SSIIGGHHUUPP using ddiissoowwnn --hh. - If the hhuuppoonneexxiitt shell option has been set with sshhoopptt, bbaasshh sends a + If the hhuuppoonneexxiitt shell option has been set with sshhoopptt, bbaasshh sends a SSIIGGHHUUPP to all jobs when an interactive login shell exits. - If bbaasshh is waiting for a command to complete and receives a signal for + If bbaasshh is waiting for a command to complete and receives a signal for which a trap has been set, the trap will not be executed until the com- - mand completes. When bbaasshh is waiting for an asynchronous command via - the wwaaiitt builtin, the reception of a signal for which a trap has been + mand completes. When bbaasshh is waiting for an asynchronous command via + the wwaaiitt builtin, the reception of a signal for which a trap has been set will cause the wwaaiitt builtin to return immediately with an exit sta- tus greater than 128, immediately after which the trap is executed. JJOOBB CCOONNTTRROOLL - _J_o_b _c_o_n_t_r_o_l refers to the ability to selectively stop (_s_u_s_p_e_n_d) the + _J_o_b _c_o_n_t_r_o_l refers to the ability to selectively stop (_s_u_s_p_e_n_d) the execution of processes and continue (_r_e_s_u_m_e) their execution at a later - point. A user typically employs this facility via an interactive - interface supplied jointly by the operating system kernel's terminal + point. A user typically employs this facility via an interactive + interface supplied jointly by the operating system kernel's terminal driver and bbaasshh. - The shell associates a _j_o_b with each pipeline. It keeps a table of - currently executing jobs, which may be listed with the jjoobbss command. - When bbaasshh starts a job asynchronously (in the _b_a_c_k_g_r_o_u_n_d), it prints a + The shell associates a _j_o_b with each pipeline. It keeps a table of + currently executing jobs, which may be listed with the jjoobbss command. + When bbaasshh starts a job asynchronously (in the _b_a_c_k_g_r_o_u_n_d), it prints a line that looks like: [1] 25647 indicating that this job is job number 1 and that the process ID of the last process in the pipeline associated with this job is 25647. All of - the processes in a single pipeline are members of the same job. BBaasshh + the processes in a single pipeline are members of the same job. BBaasshh uses the _j_o_b abstraction as the basis for job control. - To facilitate the implementation of the user interface to job control, + To facilitate the implementation of the user interface to job control, the operating system maintains the notion of a _c_u_r_r_e_n_t _t_e_r_m_i_n_a_l _p_r_o_c_e_s_s _g_r_o_u_p _I_D. Members of this process group (processes whose process group ID is equal to the current terminal process group ID) receive keyboard- - generated signals such as SSIIGGIINNTT. These processes are said to be in - the _f_o_r_e_g_r_o_u_n_d. _B_a_c_k_g_r_o_u_n_d processes are those whose process group ID + generated signals such as SSIIGGIINNTT. These processes are said to be in + the _f_o_r_e_g_r_o_u_n_d. _B_a_c_k_g_r_o_u_n_d processes are those whose process group ID differs from the terminal's; such processes are immune to keyboard-gen- erated signals. Only foreground processes are allowed to read from or, - if the user so specifies with stty tostop, write to the terminal. - Background processes which attempt to read from (write to when stty - tostop is in effect) the terminal are sent a SSIIGGTTTTIINN ((SSIIGGTTTTOOUU)) signal - by the kernel's terminal driver, which, unless caught, suspends the + if the user so specifies with stty tostop, write to the terminal. + Background processes which attempt to read from (write to when stty + tostop is in effect) the terminal are sent a SSIIGGTTTTIINN ((SSIIGGTTTTOOUU)) signal + by the kernel's terminal driver, which, unless caught, suspends the process. - If the operating system on which bbaasshh is running supports job control, + If the operating system on which bbaasshh is running supports job control, bbaasshh contains facilities to use it. Typing the _s_u_s_p_e_n_d character (typ- ically ^^ZZ, Control-Z) while a process is running causes that process to - be stopped and returns control to bbaasshh. Typing the _d_e_l_a_y_e_d _s_u_s_p_e_n_d - character (typically ^^YY, Control-Y) causes the process to be stopped - when it attempts to read input from the terminal, and control to be - returned to bbaasshh. The user may then manipulate the state of this job, - using the bbgg command to continue it in the background, the ffgg command + be stopped and returns control to bbaasshh. Typing the _d_e_l_a_y_e_d _s_u_s_p_e_n_d + character (typically ^^YY, Control-Y) causes the process to be stopped + when it attempts to read input from the terminal, and control to be + returned to bbaasshh. The user may then manipulate the state of this job, + using the bbgg command to continue it in the background, the ffgg command to continue it in the foreground, or the kkiillll command to kill it. A ^^ZZ takes effect immediately, and has the additional side effect of causing pending output and typeahead to be discarded. There are a number of ways to refer to a job in the shell. The charac- - ter %% introduces a job specification (_j_o_b_s_p_e_c). Job number _n may be + ter %% introduces a job specification (_j_o_b_s_p_e_c). Job number _n may be referred to as %%nn. A job may also be referred to using a prefix of the name used to start it, or using a substring that appears in its command - line. For example, %%ccee refers to a stopped ccee job. If a prefix - matches more than one job, bbaasshh reports an error. Using %%??ccee, on the - other hand, refers to any job containing the string ccee in its command - line. If the substring matches more than one job, bbaasshh reports an - error. The symbols %%%% and %%++ refer to the shell's notion of the _c_u_r_- - _r_e_n_t _j_o_b, which is the last job stopped while it was in the foreground + line. For example, %%ccee refers to a stopped ccee job. If a prefix + matches more than one job, bbaasshh reports an error. Using %%??ccee, on the + other hand, refers to any job containing the string ccee in its command + line. If the substring matches more than one job, bbaasshh reports an + error. The symbols %%%% and %%++ refer to the shell's notion of the _c_u_r_- + _r_e_n_t _j_o_b, which is the last job stopped while it was in the foreground or started in the background. The _p_r_e_v_i_o_u_s _j_o_b may be referenced using %%--. If there is only a single job, %%++ and %%-- can both be used to refer - to that job. In output pertaining to jobs (e.g., the output of the + to that job. In output pertaining to jobs (e.g., the output of the jjoobbss command), the current job is always flagged with a ++, and the pre- - vious job with a --. A single % (with no accompanying job specifica- + vious job with a --. A single % (with no accompanying job specifica- tion) also refers to the current job. - Simply naming a job can be used to bring it into the foreground: %%11 is - a synonym for ````ffgg %%11'''', bringing job 1 from the background into the - foreground. Similarly, ````%%11 &&'''' resumes job 1 in the background, + Simply naming a job can be used to bring it into the foreground: %%11 is + a synonym for ````ffgg %%11'''', bringing job 1 from the background into the + foreground. Similarly, ````%%11 &&'''' resumes job 1 in the background, equivalent to ````bbgg %%11''''. - The shell learns immediately whenever a job changes state. Normally, + The shell learns immediately whenever a job changes state. Normally, bbaasshh waits until it is about to print a prompt before reporting changes - in a job's status so as to not interrupt any other output. If the --bb + in a job's status so as to not interrupt any other output. If the --bb option to the sseett builtin command is enabled, bbaasshh reports such changes - immediately. Any trap on SSIIGGCCHHLLDD is executed for each child that + immediately. Any trap on SSIIGGCCHHLLDD is executed for each child that exits. - If an attempt to exit bbaasshh is made while jobs are stopped (or, if the - cchheecckkjjoobbss shell option has been enabled using the sshhoopptt builtin, run- + If an attempt to exit bbaasshh is made while jobs are stopped (or, if the + cchheecckkjjoobbss shell option has been enabled using the sshhoopptt builtin, run- ning), the shell prints a warning message, and, if the cchheecckkjjoobbss option - is enabled, lists the jobs and their statuses. The jjoobbss command may - then be used to inspect their status. If a second attempt to exit is - made without an intervening command, the shell does not print another + is enabled, lists the jobs and their statuses. The jjoobbss command may + then be used to inspect their status. If a second attempt to exit is + made without an intervening command, the shell does not print another warning, and any stopped jobs are terminated. + When the shell is waiting for a job or process using the wwaaiitt builtin, + and job control is enabled, wwaaiitt will return when the job changes + state. The --ff option will force wwaaiitt to wait until the job or process + terminates before returning. + PPRROOMMPPTTIINNGG When executing interactively, bbaasshh displays the primary prompt PPSS11 when it is ready to read a command, and the secondary prompt PPSS22 when it needs more input to complete a command. BBaasshh displays PPSS00 after it - reads a command but before executing it. BBaasshh allows these prompt - strings to be customized by inserting a number of backslash-escaped - special characters that are decoded as follows: + reads a command but before executing it. BBaasshh displays PPSS44 as + described above before tracing each command when the --xx option is + enabled. BBaasshh allows these prompt strings to be customized by insert- + ing a number of backslash-escaped special characters that are decoded + as follows: \\aa an ASCII bell character (07) \\dd the date in "Weekday Month Date" format (e.g., "Tue May 26") @@ -3066,185 +3180,201 @@ RREEAADDLLIINNEE Controls whether readline begins with a set of key bindings sim- ilar to _E_m_a_c_s or _v_i. eeddiittiinngg--mmooddee can be set to either eemmaaccss or vvii. + eemmaaccss--mmooddee--ssttrriinngg ((@@)) + If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is + displayed immediately before the last line of the primary prompt + when emacs editing mode is active. The value is expanded like a + key binding, so the standard set of meta- and control prefixes + and backslash escape sequences is available. Use the \1 and \2 + escapes to begin and end sequences of non-printing characters, + which can be used to embed a terminal control sequence into the + mode string. eennaabbllee--bbrraacckkeetteedd--ppaassttee ((OOffff)) - When set to OOnn, readline will configure the terminal in a way + When set to OOnn, readline will configure the terminal in a way that will enable it to insert each paste into the editing buffer as a single string of characters, instead of treating each char- - acter as if it had been read from the keyboard. This can pre- - vent pasted characters from being interpreted as editing com- + acter as if it had been read from the keyboard. This can pre- + vent pasted characters from being interpreted as editing com- mands. eennaabbllee--kkeeyyppaadd ((OOffff)) When set to OOnn, readline will try to enable the application key- - pad when it is called. Some systems need this to enable the + pad when it is called. Some systems need this to enable the arrow keys. eennaabbllee--mmeettaa--kkeeyy ((OOnn)) - When set to OOnn, readline will try to enable any meta modifier - key the terminal claims to support when it is called. On many + When set to OOnn, readline will try to enable any meta modifier + key the terminal claims to support when it is called. On many terminals, the meta key is used to send eight-bit characters. eexxppaanndd--ttiillddee ((OOffff)) - If set to OOnn, tilde expansion is performed when readline + If set to OOnn, tilde expansion is performed when readline attempts word completion. hhiissttoorryy--pprreesseerrvvee--ppooiinntt ((OOffff)) - If set to OOnn, the history code attempts to place point at the - same location on each history line retrieved with pprreevviioouuss--hhiiss-- + If set to OOnn, the history code attempts to place point at the + same location on each history line retrieved with pprreevviioouuss--hhiiss-- ttoorryy or nneexxtt--hhiissttoorryy. hhiissttoorryy--ssiizzee ((uunnsseett)) - Set the maximum number of history entries saved in the history - list. If set to zero, any existing history entries are deleted + Set the maximum number of history entries saved in the history + list. If set to zero, any existing history entries are deleted and no new entries are saved. If set to a value less than zero, - the number of history entries is not limited. By default, the - number of history entries is set to the value of the HHIISSTTSSIIZZEE - shell variable. If an attempt is made to set _h_i_s_t_o_r_y_-_s_i_z_e to a + the number of history entries is not limited. By default, the + number of history entries is set to the value of the HHIISSTTSSIIZZEE + shell variable. If an attempt is made to set _h_i_s_t_o_r_y_-_s_i_z_e to a non-numeric value, the maximum number of history entries will be set to 500. hhoorriizzoonnttaall--ssccrroollll--mmooddee ((OOffff)) - When set to OOnn, makes readline use a single line for display, + When set to OOnn, makes readline use a single line for display, scrolling the input horizontally on a single screen line when it - becomes longer than the screen width rather than wrapping to a + becomes longer than the screen width rather than wrapping to a new line. iinnppuutt--mmeettaa ((OOffff)) - If set to OOnn, readline will enable eight-bit input (that is, it - will not strip the eighth bit from the characters it reads), + If set to OOnn, readline will enable eight-bit input (that is, it + will not strip the eighth bit from the characters it reads), regardless of what the terminal claims it can support. The name - mmeettaa--ffllaagg is a synonym for this variable. The default is _O_f_f, - but readline will set it to _O_n if the locale contains eight-bit + mmeettaa--ffllaagg is a synonym for this variable. The default is _O_f_f, + but readline will set it to _O_n if the locale contains eight-bit characters. iisseeaarrcchh--tteerrmmiinnaattoorrss ((````CC--[[CC--JJ'''')) - The string of characters that should terminate an incremental - search without subsequently executing the character as a com- - mand. If this variable has not been given a value, the charac- + The string of characters that should terminate an incremental + search without subsequently executing the character as a com- + mand. If this variable has not been given a value, the charac- ters _E_S_C and _C_-_J will terminate an incremental search. kkeeyymmaapp ((eemmaaccss)) - Set the current readline keymap. The set of valid keymap names - is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_c_o_m_- - _m_a_n_d, and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is - equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s; the + Set the current readline keymap. The set of valid keymap names + is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_c_o_m_- + _m_a_n_d, and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is + equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s; the value of eeddiittiinngg--mmooddee also affects the default keymap. - eemmaaccss--mmooddee--ssttrriinngg ((@@)) - This string is displayed immediately before the last line of the - primary prompt when emacs editing mode is active. The value is - expanded like a key binding, so the standard set of meta- and - control prefixes and backslash escape sequences is available. - Use the \1 and \2 escapes to begin and end sequences of non- - printing characters, which can be used to embed a terminal con- - trol sequence into the mode string. kkeeyysseeqq--ttiimmeeoouutt ((550000)) - Specifies the duration _r_e_a_d_l_i_n_e will wait for a character when - reading an ambiguous key sequence (one that can form a complete + Specifies the duration _r_e_a_d_l_i_n_e will wait for a character when + reading an ambiguous key sequence (one that can form a complete key sequence using the input read so far, or can take additional - input to complete a longer key sequence). If no input is - received within the timeout, _r_e_a_d_l_i_n_e will use the shorter but - complete key sequence. The value is specified in milliseconds, - so a value of 1000 means that _r_e_a_d_l_i_n_e will wait one second for - additional input. If this variable is set to a value less than - or equal to zero, or to a non-numeric value, _r_e_a_d_l_i_n_e will wait - until another key is pressed to decide which key sequence to + input to complete a longer key sequence). If no input is + received within the timeout, _r_e_a_d_l_i_n_e will use the shorter but + complete key sequence. The value is specified in milliseconds, + so a value of 1000 means that _r_e_a_d_l_i_n_e will wait one second for + additional input. If this variable is set to a value less than + or equal to zero, or to a non-numeric value, _r_e_a_d_l_i_n_e will wait + until another key is pressed to decide which key sequence to complete. mmaarrkk--ddiirreeccttoorriieess ((OOnn)) If set to OOnn, completed directory names have a slash appended. mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff)) - If set to OOnn, history lines that have been modified are dis- + If set to OOnn, history lines that have been modified are dis- played with a preceding asterisk (**). mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess ((OOffff)) If set to OOnn, completed names which are symbolic links to direc- - tories have a slash appended (subject to the value of + tories have a slash appended (subject to the value of mmaarrkk--ddiirreeccttoorriieess). mmaattcchh--hhiiddddeenn--ffiilleess ((OOnn)) - This variable, when set to OOnn, causes readline to match files - whose names begin with a `.' (hidden files) when performing - filename completion. If set to OOffff, the leading `.' must be + This variable, when set to OOnn, causes readline to match files + whose names begin with a `.' (hidden files) when performing + filename completion. If set to OOffff, the leading `.' must be supplied by the user in the filename to be completed. mmeennuu--ccoommpplleettee--ddiissppllaayy--pprreeffiixx ((OOffff)) - If set to OOnn, menu completion displays the common prefix of the + If set to OOnn, menu completion displays the common prefix of the list of possible completions (which may be empty) before cycling through the list. oouuttppuutt--mmeettaa ((OOffff)) - If set to OOnn, readline will display characters with the eighth + If set to OOnn, readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape sequence. The default is _O_f_f, but readline will set it to _O_n if the locale contains eight-bit characters. ppaaggee--ccoommpplleettiioonnss ((OOnn)) - If set to OOnn, readline uses an internal _m_o_r_e-like pager to dis- + If set to OOnn, readline uses an internal _m_o_r_e-like pager to dis- play a screenful of possible completions at a time. pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff)) - If set to OOnn, readline will display completions with matches - sorted horizontally in alphabetical order, rather than down the + If set to OOnn, readline will display completions with matches + sorted horizontally in alphabetical order, rather than down the screen. rreevveerrtt--aallll--aatt--nneewwlliinnee ((OOffff)) - If set to OOnn, readline will undo all changes to history lines + If set to OOnn, readline will undo all changes to history lines before returning when aacccceepptt--lliinnee is executed. By default, his- - tory lines may be modified and retain individual undo lists + tory lines may be modified and retain individual undo lists across calls to rreeaaddlliinnee. sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff)) - This alters the default behavior of the completion functions. + This alters the default behavior of the completion functions. If set to OOnn, words which have more than one possible completion - cause the matches to be listed immediately instead of ringing + cause the matches to be listed immediately instead of ringing the bell. sshhooww--aallll--iiff--uunnmmooddiiffiieedd ((OOffff)) - This alters the default behavior of the completion functions in + This alters the default behavior of the completion functions in a fashion similar to sshhooww--aallll--iiff--aammbbiigguuoouuss. If set to OOnn, words - which have more than one possible completion without any possi- - ble partial completion (the possible completions don't share a - common prefix) cause the matches to be listed immediately + which have more than one possible completion without any possi- + ble partial completion (the possible completions don't share a + common prefix) cause the matches to be listed immediately instead of ringing the bell. sshhooww--mmooddee--iinn--pprroommpptt ((OOffff)) - If set to OOnn, add a character to the beginning of the prompt - indicating the editing mode: emacs (@), vi command (:) or vi - insertion (+). + If set to OOnn, add a string to the beginning of the prompt indi- + cating the editing mode: emacs, vi command, or vi insertion. + The mode strings are user-settable (e.g., _e_m_a_c_s_-_m_o_d_e_-_s_t_r_i_n_g). sskkiipp--ccoommpplleetteedd--tteexxtt ((OOffff)) - If set to OOnn, this alters the default completion behavior when - inserting a single match into the line. It's only active when - performing completion in the middle of a word. If enabled, - readline does not insert characters from the completion that - match characters after point in the word being completed, so + If set to OOnn, this alters the default completion behavior when + inserting a single match into the line. It's only active when + performing completion in the middle of a word. If enabled, + readline does not insert characters from the completion that + match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. vvii--ccmmdd--mmooddee--ssttrriinngg ((((ccmmdd)))) - This string is displayed immediately before the last line of the - primary prompt when vi editing mode is active and in command - mode. The value is expanded like a key binding, so the standard - set of meta- and control prefixes and backslash escape sequences - is available. Use the \1 and \2 escapes to begin and end - sequences of non-printing characters, which can be used to embed - a terminal control sequence into the mode string. + If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is + displayed immediately before the last line of the primary prompt + when vi editing mode is active and in command mode. The value + is expanded like a key binding, so the standard set of meta- and + control prefixes and backslash escape sequences is available. + Use the \1 and \2 escapes to begin and end sequences of non- + printing characters, which can be used to embed a terminal con- + trol sequence into the mode string. vvii--iinnss--mmooddee--ssttrriinngg ((((iinnss)))) - This string is displayed immediately before the last line of the - primary prompt when vi editing mode is active and in insertion - mode. The value is expanded like a key binding, so the standard - set of meta- and control prefixes and backslash escape sequences - is available. Use the \1 and \2 escapes to begin and end - sequences of non-printing characters, which can be used to embed - a terminal control sequence into the mode string. + If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is + displayed immediately before the last line of the primary prompt + when vi editing mode is active and in insertion mode. The value + is expanded like a key binding, so the standard set of meta- and + control prefixes and backslash escape sequences is available. + Use the \1 and \2 escapes to begin and end sequences of non- + printing characters, which can be used to embed a terminal con- + trol sequence into the mode string. vviissiibbllee--ssttaattss ((OOffff)) - If set to OOnn, a character denoting a file's type as reported by - _s_t_a_t(2) is appended to the filename when listing possible com- + If set to OOnn, a character denoting a file's type as reported by + _s_t_a_t(2) is appended to the filename when listing possible com- pletions. RReeaaddlliinnee CCoonnddiittiioonnaall CCoonnssttrruuccttss - Readline implements a facility similar in spirit to the conditional - compilation features of the C preprocessor which allows key bindings - and variable settings to be performed as the result of tests. There + Readline implements a facility similar in spirit to the conditional + compilation features of the C preprocessor which allows key bindings + and variable settings to be performed as the result of tests. There are four parser directives used. - $$iiff The $$iiff construct allows bindings to be made based on the edit- - ing mode, the terminal being used, or the application using - readline. The text of the test extends to the end of the line; - no characters are required to isolate it. - - mmooddee The mmooddee== form of the $$iiff directive is used to test - whether readline is in emacs or vi mode. This may be - used in conjunction with the sseett kkeeyymmaapp command, for - instance, to set bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and - _e_m_a_c_s_-_c_t_l_x keymaps only if readline is starting out in + $$iiff The $$iiff construct allows bindings to be made based on the edit- + ing mode, the terminal being used, or the application using + readline. The text of the test, after any comparison operator, + extends to the end of the line; unless otherwise noted, no + characters are required to isolate it. + + mmooddee The mmooddee== form of the $$iiff directive is used to test + whether readline is in emacs or vi mode. This may be + used in conjunction with the sseett kkeeyymmaapp command, for + instance, to set bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and + _e_m_a_c_s_-_c_t_l_x keymaps only if readline is starting out in emacs mode. - tteerrmm The tteerrmm== form may be used to include terminal-specific + tteerrmm The tteerrmm== form may be used to include terminal-specific key bindings, perhaps to bind the key sequences output by the terminal's function keys. The word on the right side of the == is tested against both the full name of the ter- - minal and the portion of the terminal name before the - first --. This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d, + minal and the portion of the terminal name before the + first --. This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d, for instance. + vveerrssiioonn + The vveerrssiioonn test may be used to perform comparisons + against specific readline versions. The vveerrssiioonn expands + to the current readline version. The set of comparison + operators includes ==, (and ====), !!==, <<==, >>==, <<, and >>. + The version number supplied on the right side of the + operator consists of a major version number, an optional + decimal point, and an optional minor version (e.g., 77..11). + If the minor version is omitted, it is assumed to be 00. + The operator may be separated from the string vveerrssiioonn and + from the version number argument by whitespace. + aapppplliiccaattiioonn The aapppplliiccaattiioonn construct is used to include application- specific settings. Each program using the readline @@ -3260,6 +3390,16 @@ RREEAADDLLIINNEE "\C-xq": "\eb\"\ef\"" $$eennddiiff + _v_a_r_i_a_b_l_e + The _v_a_r_i_a_b_l_e construct provides simple equality tests for + readline variables and values. The permitted comparison + operators are _=, _=_=, and _!_=. The variable name must be + separated from the comparison operator by whitespace; the + operator may be separated from the value on the right + hand side by whitespace. Both string and boolean vari- + ables may be tested. Boolean variables must be tested + against the values _o_n and _o_f_f. + $$eennddiiff This command, as seen in the previous example, terminates an $$iiff command. @@ -3267,51 +3407,51 @@ RREEAADDLLIINNEE test fails. $$iinncclluuddee - This directive takes a single filename as an argument and reads - commands and bindings from that file. For example, the follow- + This directive takes a single filename as an argument and reads + commands and bindings from that file. For example, the follow- ing directive would read _/_e_t_c_/_i_n_p_u_t_r_c: $$iinncclluuddee _/_e_t_c_/_i_n_p_u_t_r_c SSeeaarrcchhiinngg - Readline provides commands for searching through the command history + Readline provides commands for searching through the command history (see HHIISSTTOORRYY below) for lines containing a specified string. There are two search modes: _i_n_c_r_e_m_e_n_t_a_l and _n_o_n_-_i_n_c_r_e_m_e_n_t_a_l. - Incremental searches begin before the user has finished typing the - search string. As each character of the search string is typed, read- + Incremental searches begin before the user has finished typing the + search string. As each character of the search string is typed, read- line displays the next entry from the history matching the string typed - so far. An incremental search requires only as many characters as - needed to find the desired history entry. The characters present in - the value of the iisseeaarrcchh--tteerrmmiinnaattoorrss variable are used to terminate an + so far. An incremental search requires only as many characters as + needed to find the desired history entry. The characters present in + the value of the iisseeaarrcchh--tteerrmmiinnaattoorrss variable are used to terminate an incremental search. If that variable has not been assigned a value the - Escape and Control-J characters will terminate an incremental search. - Control-G will abort an incremental search and restore the original - line. When the search is terminated, the history entry containing the + Escape and Control-J characters will terminate an incremental search. + Control-G will abort an incremental search and restore the original + line. When the search is terminated, the history entry containing the search string becomes the current line. - To find other matching entries in the history list, type Control-S or - Control-R as appropriate. This will search backward or forward in the - history for the next entry matching the search string typed so far. - Any other key sequence bound to a readline command will terminate the - search and execute that command. For instance, a _n_e_w_l_i_n_e will termi- + To find other matching entries in the history list, type Control-S or + Control-R as appropriate. This will search backward or forward in the + history for the next entry matching the search string typed so far. + Any other key sequence bound to a readline command will terminate the + search and execute that command. For instance, a _n_e_w_l_i_n_e will termi- nate the search and accept the line, thereby executing the command from the history list. Readline remembers the last incremental search string. If two Control- - Rs are typed without any intervening characters defining a new search + Rs are typed without any intervening characters defining a new search string, any remembered search string is used. - Non-incremental searches read the entire search string before starting - to search for matching history lines. The search string may be typed + Non-incremental searches read the entire search string before starting + to search for matching history lines. The search string may be typed by the user or be part of the contents of the current line. RReeaaddlliinnee CCoommmmaanndd NNaammeess - The following is a list of the names of the commands and the default + The following is a list of the names of the commands and the default key sequences to which they are bound. Command names without an accom- panying key sequence are unbound by default. In the following descrip- - tions, _p_o_i_n_t refers to the current cursor position, and _m_a_r_k refers to - a cursor position saved by the sseett--mmaarrkk command. The text between the + tions, _p_o_i_n_t refers to the current cursor position, and _m_a_r_k refers to + a cursor position saved by the sseett--mmaarrkk command. The text between the point and mark is referred to as the _r_e_g_i_o_n. CCoommmmaannddss ffoorr MMoovviinngg @@ -3327,17 +3467,29 @@ RREEAADDLLIINNEE Move forward to the end of the next word. Words are composed of alphanumeric characters (letters and digits). bbaacckkwwaarrdd--wwoorrdd ((MM--bb)) - Move back to the start of the current or previous word. Words + Move back to the start of the current or previous word. Words are composed of alphanumeric characters (letters and digits). sshheellll--ffoorrwwaarrdd--wwoorrdd - Move forward to the end of the next word. Words are delimited + Move forward to the end of the next word. Words are delimited by non-quoted shell metacharacters. sshheellll--bbaacckkwwaarrdd--wwoorrdd - Move back to the start of the current or previous word. Words + Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. + pprreevviioouuss--ssccrreeeenn--lliinnee + Attempt to move point to the same physical screen column on the + previous physical screen line. This will not have the desired + effect if the current Readline line does not take up more than + one physical line or if point is not greater than the length of + the prompt plus the screen width. + nneexxtt--ssccrreeeenn--lliinnee + Attempt to move point to the same physical screen column on the + next physical screen line. This will not have the desired effect + if the current Readline line does not take up more than one + physical line or if the length of the current Readline line is + not greater than the length of the prompt plus the screen width. cclleeaarr--ssccrreeeenn ((CC--ll)) - Clear the screen leaving the current line at the top of the - screen. With an argument, refresh the current line without + Clear the screen leaving the current line at the top of the + screen. With an argument, refresh the current line without clearing the screen. rreeddrraaww--ccuurrrreenntt--lliinnee Refresh the current line. @@ -3345,60 +3497,70 @@ RREEAADDLLIINNEE CCoommmmaannddss ffoorr MMaanniippuullaattiinngg tthhee HHiissttoorryy aacccceepptt--lliinnee ((NNeewwlliinnee,, RReettuurrnn)) Accept the line regardless of where the cursor is. If this line - is non-empty, add it to the history list according to the state - of the HHIISSTTCCOONNTTRROOLL variable. If the line is a modified history + is non-empty, add it to the history list according to the state + of the HHIISSTTCCOONNTTRROOLL variable. If the line is a modified history line, then restore the history line to its original state. pprreevviioouuss--hhiissttoorryy ((CC--pp)) Fetch the previous command from the history list, moving back in the list. nneexxtt--hhiissttoorryy ((CC--nn)) - Fetch the next command from the history list, moving forward in + Fetch the next command from the history list, moving forward in the list. bbeeggiinnnniinngg--ooff--hhiissttoorryy ((MM--<<)) Move to the first line in the history. eenndd--ooff--hhiissttoorryy ((MM-->>)) - Move to the end of the input history, i.e., the line currently + Move to the end of the input history, i.e., the line currently being entered. rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((CC--rr)) - Search backward starting at the current line and moving `up' - through the history as necessary. This is an incremental + Search backward starting at the current line and moving `up' + through the history as necessary. This is an incremental search. ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((CC--ss)) - Search forward starting at the current line and moving `down' - through the history as necessary. This is an incremental + Search forward starting at the current line and moving `down' + through the history as necessary. This is an incremental search. nnoonn--iinnccrreemmeennttaall--rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((MM--pp)) Search backward through the history starting at the current line - using a non-incremental search for a string supplied by the + using a non-incremental search for a string supplied by the user. nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn)) - Search forward through the history using a non-incremental + Search forward through the history using a non-incremental search for a string supplied by the user. hhiissttoorryy--sseeaarrcchh--ffoorrwwaarrdd - Search forward through the history for the string of characters - between the start of the current line and the point. This is a + Search forward through the history for the string of characters + between the start of the current line and the point. This is a non-incremental search. hhiissttoorryy--sseeaarrcchh--bbaacckkwwaarrdd Search backward through the history for the string of characters - between the start of the current line and the point. This is a + between the start of the current line and the point. This is a non-incremental search. + hhiissttoorryy--ssuubbssttrriinngg--sseeaarrcchh--bbaacckkwwaarrdd + Search backward through the history for the string of characters + between the start of the current line and the current cursor + position (the _p_o_i_n_t). The search string may match anywhere in a + history line. This is a non-incremental search. + hhiissttoorryy--ssuubbssttrriinngg--sseeaarrcchh--ffoorrwwaarrdd + Search forward through the history for the string of characters + between the start of the current line and the point. The search + string may match anywhere in a history line. This is a non- + incremental search. yyaannkk--nntthh--aarrgg ((MM--CC--yy)) - Insert the first argument to the previous command (usually the + Insert the first argument to the previous command (usually the second word on the previous line) at point. With an argument _n, - insert the _nth word from the previous command (the words in the - previous command begin with word 0). A negative argument + insert the _nth word from the previous command (the words in the + previous command begin with word 0). A negative argument inserts the _nth word from the end of the previous command. Once - the argument _n is computed, the argument is extracted as if the + the argument _n is computed, the argument is extracted as if the "!_n" history expansion had been specified. yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__)) - Insert the last argument to the previous command (the last word + Insert the last argument to the previous command (the last word of the previous history entry). With a numeric argument, behave - exactly like yyaannkk--nntthh--aarrgg. Successive calls to yyaannkk--llaasstt--aarrgg - move back through the history list, inserting the last word (or - the word specified by the argument to the first call) of each + exactly like yyaannkk--nntthh--aarrgg. Successive calls to yyaannkk--llaasstt--aarrgg + move back through the history list, inserting the last word (or + the word specified by the argument to the first call) of each line in turn. Any numeric argument supplied to these successive - calls determines the direction to move through the history. A - negative argument switches the direction through the history + calls determines the direction to move through the history. A + negative argument switches the direction through the history (back or forward). The history expansion facilities are used to extract the last word, as if the "!$" history expansion had been specified. @@ -3407,24 +3569,25 @@ RREEAADDLLIINNEE tory expansion as well as all of the shell word expansions. See HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion. hhiissttoorryy--eexxppaanndd--lliinnee ((MM--^^)) - Perform history expansion on the current line. See HHIISSTTOORRYY + Perform history expansion on the current line. See HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion. mmaaggiicc--ssppaaccee - Perform history expansion on the current line and insert a + Perform history expansion on the current line and insert a space. See HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion. aalliiaass--eexxppaanndd--lliinnee - Perform alias expansion on the current line. See AALLIIAASSEESS above + Perform alias expansion on the current line. See AALLIIAASSEESS above for a description of alias expansion. hhiissttoorryy--aanndd--aalliiaass--eexxppaanndd--lliinnee Perform history and alias expansion on the current line. iinnsseerrtt--llaasstt--aarrgguummeenntt ((MM--..,, MM--__)) A synonym for yyaannkk--llaasstt--aarrgg. ooppeerraattee--aanndd--ggeett--nneexxtt ((CC--oo)) - Accept the current line for execution and fetch the next line - relative to the current line from the history for editing. Any - argument is ignored. - eeddiitt--aanndd--eexxeeccuuttee--ccoommmmaanndd ((CC--xxCC--ee)) + Accept the current line for execution and fetch the next line + relative to the current line from the history for editing. A + numeric argument, if supplied, specifies the history entry to + use instead of the current line. + eeddiitt--aanndd--eexxeeccuuttee--ccoommmmaanndd ((CC--xx CC--ee)) Invoke an editor on the current command line, and execute the result as shell commands. BBaasshh attempts to invoke $$VVIISSUUAALL, $$EEDDIITTOORR, and _e_m_a_c_s as the editor, in that order. @@ -3647,103 +3810,107 @@ RREEAADDLLIINNEE aabboorrtt ((CC--gg)) Abort the current editing command and ring the terminal's bell (subject to the setting of bbeellll--ssttyyllee). - ddoo--uuppppeerrccaassee--vveerrssiioonn ((MM--aa,, MM--bb,, MM--_x,, ......)) - If the metafied character _x is lowercase, run the command that - is bound to the corresponding uppercase character. + ddoo--lloowweerrccaassee--vveerrssiioonn ((MM--AA,, MM--BB,, MM--_x,, ......)) + If the metafied character _x is uppercase, run the command that + is bound to the corresponding metafied lowercase character. The + behavior is undefined if _x is already lowercase. pprreeffiixx--mmeettaa ((EESSCC)) Metafy the next character typed. EESSCC ff is equivalent to MMeettaa--ff. uunnddoo ((CC--__,, CC--xx CC--uu)) Incremental undo, separately remembered for each line. rreevveerrtt--lliinnee ((MM--rr)) - Undo all changes made to this line. This is like executing the - uunnddoo command enough times to return the line to its initial + Undo all changes made to this line. This is like executing the + uunnddoo command enough times to return the line to its initial state. ttiillddee--eexxppaanndd ((MM--&&)) Perform tilde expansion on the current word. sseett--mmaarrkk ((CC--@@,, MM--<>)) - Set the mark to the point. If a numeric argument is supplied, + Set the mark to the point. If a numeric argument is supplied, the mark is set to that position. eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx)) - Swap the point with the mark. The current cursor position is - set to the saved position, and the old cursor position is saved + Swap the point with the mark. The current cursor position is + set to the saved position, and the old cursor position is saved as the mark. cchhaarraacctteerr--sseeaarrcchh ((CC--]])) A character is read and point is moved to the next occurrence of - that character. A negative count searches for previous occur- + that character. A negative count searches for previous occur- rences. cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]])) - A character is read and point is moved to the previous occur- - rence of that character. A negative count searches for subse- + A character is read and point is moved to the previous occur- + rence of that character. A negative count searches for subse- quent occurrences. sskkiipp--ccssii--sseeqquueennccee - Read enough characters to consume a multi-key sequence such as - those defined for keys like Home and End. Such sequences begin + Read enough characters to consume a multi-key sequence such as + those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this - sequence is bound to "\[", keys producing such sequences will - have no effect unless explicitly bound to a readline command, - instead of inserting stray characters into the editing buffer. + sequence is bound to "\[", keys producing such sequences will + have no effect unless explicitly bound to a readline command, + instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. iinnsseerrtt--ccoommmmeenntt ((MM--##)) - Without a numeric argument, the value of the readline ccoomm-- - mmeenntt--bbeeggiinn variable is inserted at the beginning of the current + Without a numeric argument, the value of the readline ccoomm-- + mmeenntt--bbeeggiinn variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a - toggle: if the characters at the beginning of the line do not - match the value of ccoommmmeenntt--bbeeggiinn, the value is inserted, other- + toggle: if the characters at the beginning of the line do not + match the value of ccoommmmeenntt--bbeeggiinn, the value is inserted, other- wise the characters in ccoommmmeenntt--bbeeggiinn are deleted from the begin- - ning of the line. In either case, the line is accepted as if a - newline had been typed. The default value of ccoommmmeenntt--bbeeggiinn - causes this command to make the current line a shell comment. - If a numeric argument causes the comment character to be + ning of the line. In either case, the line is accepted as if a + newline had been typed. The default value of ccoommmmeenntt--bbeeggiinn + causes this command to make the current line a shell comment. + If a numeric argument causes the comment character to be removed, the line will be executed by the shell. gglloobb--ccoommpplleettee--wwoorrdd ((MM--gg)) - The word before point is treated as a pattern for pathname - expansion, with an asterisk implicitly appended. This pattern - is used to generate a list of matching filenames for possible + The word before point is treated as a pattern for pathname + expansion, with an asterisk implicitly appended. This pattern + is used to generate a list of matching filenames for possible completions. gglloobb--eexxppaanndd--wwoorrdd ((CC--xx **)) - The word before point is treated as a pattern for pathname - expansion, and the list of matching filenames is inserted, - replacing the word. If a numeric argument is supplied, an + The word before point is treated as a pattern for pathname + expansion, and the list of matching filenames is inserted, + replacing the word. If a numeric argument is supplied, an asterisk is appended before pathname expansion. gglloobb--lliisstt--eexxppaannssiioonnss ((CC--xx gg)) - The list of expansions that would have been generated by - gglloobb--eexxppaanndd--wwoorrdd is displayed, and the line is redrawn. If a - numeric argument is supplied, an asterisk is appended before + The list of expansions that would have been generated by + gglloobb--eexxppaanndd--wwoorrdd is displayed, and the line is redrawn. If a + numeric argument is supplied, an asterisk is appended before pathname expansion. dduummpp--ffuunnccttiioonnss - Print all of the functions and their key bindings to the read- + Print all of the functions and their key bindings to the read- line output stream. If a numeric argument is supplied, the out- - put is formatted in such a way that it can be made part of an + put is formatted in such a way that it can be made part of an _i_n_p_u_t_r_c file. dduummpp--vvaarriiaabblleess Print all of the settable readline variables and their values to - the readline output stream. If a numeric argument is supplied, - the output is formatted in such a way that it can be made part + the readline output stream. If a numeric argument is supplied, + the output is formatted in such a way that it can be made part of an _i_n_p_u_t_r_c file. dduummpp--mmaaccrrooss - Print all of the readline key sequences bound to macros and the - strings they output. If a numeric argument is supplied, the + Print all of the readline key sequences bound to macros and the + strings they output. If a numeric argument is supplied, the output is formatted in such a way that it can be made part of an _i_n_p_u_t_r_c file. ddiissppllaayy--sshheellll--vveerrssiioonn ((CC--xx CC--vv)) Display version information about the current instance of bbaasshh. PPrrooggrraammmmaabbllee CCoommpplleettiioonn - When word completion is attempted for an argument to a command for - which a completion specification (a _c_o_m_p_s_p_e_c) has been defined using - the ccoommpplleettee builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), the program- + When word completion is attempted for an argument to a command for + which a completion specification (a _c_o_m_p_s_p_e_c) has been defined using + the ccoommpplleettee builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), the program- mable completion facilities are invoked. - First, the command name is identified. If the command word is the - empty string (completion attempted at the beginning of an empty line), - any compspec defined with the --EE option to ccoommpplleettee is used. If a - compspec has been defined for that command, the compspec is used to + First, the command name is identified. If the command word is the + empty string (completion attempted at the beginning of an empty line), + any compspec defined with the --EE option to ccoommpplleettee is used. If a + compspec has been defined for that command, the compspec is used to generate the list of possible completions for the word. If the command - word is a full pathname, a compspec for the full pathname is searched - for first. If no compspec is found for the full pathname, an attempt - is made to find a compspec for the portion following the final slash. - If those searches do not result in a compspec, any compspec defined - with the --DD option to ccoommpplleettee is used as the default. + word is a full pathname, a compspec for the full pathname is searched + for first. If no compspec is found for the full pathname, an attempt + is made to find a compspec for the portion following the final slash. + If those searches do not result in a compspec, any compspec defined + with the --DD option to ccoommpplleettee is used as the default. If there is no + default compspec, bbaasshh attempts alias expansion on the command word as + a final resort, and attempts to find a compspec for the command word + from any successful expansion. Once a compspec has been found, it is used to generate the list of matching words. If a compspec is not found, the default bbaasshh comple- @@ -3871,8 +4038,8 @@ HHIISSTTOORRYY SSIIZZEE is unset, or set to null, a non-numeric value, or a numeric value less than zero, the history file is not truncated. When the history file is read, lines beginning with the history comment character fol- - lowed immediately by a digit are interpreted as timestamps for the pre- - ceding history line. These timestamps are optionally displayed depend- + lowed immediately by a digit are interpreted as timestamps for the fol- + lowing history line. These timestamps are optionally displayed depend- ing on the value of the HHIISSTTTTIIMMEEFFOORRMMAATT variable. When a shell with history enabled exits, the last $$HHIISSTTSSIIZZEE lines are copied from the history list to $$HHIISSTTFFIILLEE. If the hhiissttaappppeenndd shell option is enabled @@ -3908,7 +4075,7 @@ HHIISSTTOORRYY HHIISSTTOORRYY EEXXPPAANNSSIIOONN The shell supports a history expansion feature that is similar to the - history expansion in ccsshh.. This section describes what syntax features + history expansion in ccsshh. This section describes what syntax features are available. This feature is enabled by default for interactive shells, and can be disabled using the ++HH option to the sseett builtin com- mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). Non-interactive shells do not @@ -3920,96 +4087,97 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN commands quickly. History expansion is performed immediately after a complete line is - read, before the shell breaks it into words. It takes place in two - parts. The first is to determine which line from the history list to - use during substitution. The second is to select portions of that line - for inclusion into the current one. The line selected from the history - is the _e_v_e_n_t, and the portions of that line that are acted upon are - _w_o_r_d_s. Various _m_o_d_i_f_i_e_r_s are available to manipulate the selected - words. The line is broken into words in the same fashion as when read- - ing input, so that several _m_e_t_a_c_h_a_r_a_c_t_e_r-separated 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 backslash (\\) and single quotes can quote the history - expansion character, but the history expansion character is also - treated as quoted if it immediately precedes the closing double quote - in a double-quoted string. - - Several characters inhibit history expansion if found immediately fol- - lowing the history expansion character, even if it is unquoted: space, - tab, newline, carriage return, and ==. If the eexxttgglloobb shell option is + read, before the shell breaks it into words, and is performed on each + line individually without taking quoting on previous lines into + account. It takes place in two parts. The first is to determine which + line from the history list to use during substitution. The second is + to select portions of that line for inclusion into the current one. + The line selected from the history is the _e_v_e_n_t, and the portions of + that line that are acted upon are _w_o_r_d_s. Various _m_o_d_i_f_i_e_r_s are avail- + able to manipulate the selected words. The line is broken into words + in the same fashion as when reading input, so that several _m_e_t_a_c_h_a_r_a_c_- + _t_e_r-separated words surrounded by quotes are considered one word. His- + tory expansions are introduced by the appearance of the history expan- + sion character, which is !! by default. Only backslash (\\) and single + quotes can quote the history expansion character, but the history + expansion character is also treated as quoted if it immediately pre- + cedes the closing double quote in a double-quoted string. + + Several characters inhibit history expansion if found immediately fol- + lowing the history expansion character, even if it is unquoted: space, + tab, newline, carriage return, and ==. If the eexxttgglloobb shell option is enabled, (( will also inhibit expansion. - Several shell options settable with the sshhoopptt builtin may be used to - tailor the behavior of history expansion. If the hhiissttvveerriiffyy shell + Several shell options settable with the sshhoopptt builtin may be used to + tailor the behavior of history expansion. If the hhiissttvveerriiffyy shell option is enabled (see the description of the sshhoopptt builtin below), and - rreeaaddlliinnee is being used, history substitutions are not immediately - passed to the shell parser. Instead, the expanded line is reloaded + rreeaaddlliinnee is being used, history substitutions are not immediately + passed to the shell parser. Instead, the expanded line is reloaded into the rreeaaddlliinnee editing buffer for further modification. If rreeaaddlliinnee - is being used, and the hhiissttrreeeeddiitt shell option is enabled, a failed - history substitution will be reloaded into the rreeaaddlliinnee editing buffer - for correction. The --pp option to the hhiissttoorryy builtin command may be - used to see what a history expansion will do before using it. The --ss + is being used, and the hhiissttrreeeeddiitt shell option is enabled, a failed + history substitution will be reloaded into the rreeaaddlliinnee editing buffer + for correction. The --pp option to the hhiissttoorryy builtin command may be + used to see what a history expansion will do before using it. The --ss option to the hhiissttoorryy builtin may be used to add commands to the end of - the history list without actually executing them, so that they are + the history list without actually executing them, so that they are available for subsequent recall. - The shell allows control of the various characters used by the history + The shell allows control of the various characters used by the history expansion mechanism (see the description of hhiissttcchhaarrss above under SShheellll - VVaarriiaabblleess). The shell uses the history comment character to mark his- + VVaarriiaabblleess). The shell uses the history comment character to mark his- tory timestamps when writing the history file. EEvveenntt DDeessiiggnnaattoorrss - An event designator is a reference to a command line entry in the his- - tory list. Unless the reference is absolute, events are relative to + An event designator is a reference to a command line entry in the his- + tory list. Unless the reference is absolute, events are relative to the current position in the history list. - !! Start a history substitution, except when followed by a bbllaannkk, - newline, carriage return, = or ( (when the eexxttgglloobb shell option + !! Start a history substitution, except when followed by a bbllaannkk, + newline, carriage return, = or ( (when the eexxttgglloobb shell option is enabled using the sshhoopptt builtin). !!_n Refer to command line _n. !!--_n Refer to the current command minus _n. !!!! Refer to the previous command. This is a synonym for `!-1'. !!_s_t_r_i_n_g - Refer to the most recent command preceding the current position + Refer to the most recent command preceding the current position in the history list starting with _s_t_r_i_n_g. !!??_s_t_r_i_n_g[[??]] - Refer to the most recent command preceding the current position - in the history list containing _s_t_r_i_n_g. The trailing ?? may be + Refer to the most recent command preceding the current position + in the history list containing _s_t_r_i_n_g. The trailing ?? may be omitted if _s_t_r_i_n_g is followed immediately by a newline. ^^_s_t_r_i_n_g_1^^_s_t_r_i_n_g_2^^ - Quick substitution. Repeat the previous command, replacing - _s_t_r_i_n_g_1 with _s_t_r_i_n_g_2. Equivalent to ``!!:s/_s_t_r_i_n_g_1/_s_t_r_i_n_g_2/'' + Quick substitution. Repeat the previous command, replacing + _s_t_r_i_n_g_1 with _s_t_r_i_n_g_2. Equivalent to ``!!:s/_s_t_r_i_n_g_1/_s_t_r_i_n_g_2/'' (see MMooddiiffiieerrss below). !!## The entire command line typed so far. WWoorrdd DDeessiiggnnaattoorrss - Word designators are used to select desired words from the event. A :: - separates the event specification from the word designator. It may be - omitted if the word designator begins with a ^^, $$, **, --, or %%. Words - are numbered from the beginning of the line, with the first word being - denoted by 0 (zero). Words are inserted into the current line sepa- + Word designators are used to select desired words from the event. A :: + separates the event specification from the word designator. It may be + omitted if the word designator begins with a ^^, $$, **, --, or %%. Words + are numbered from the beginning of the line, with the first word being + denoted by 0 (zero). Words are inserted into the current line sepa- rated by single spaces. 00 ((zzeerroo)) The zeroth word. For the shell, this is the command word. _n The _nth word. ^^ The first argument. That is, word 1. - $$ The last word. This is usually the last argument, but will + $$ The last word. This is usually the last argument, but will expand to the zeroth word if there is only one word in the line. %% The word matched by the most recent `?_s_t_r_i_n_g?' search. _x--_y A range of words; `-_y' abbreviates `0-_y'. - ** All of the words but the zeroth. This is a synonym for `_1_-_$'. - It is not an error to use ** if there is just one word in the + ** All of the words but the zeroth. This is a synonym for `_1_-_$'. + It is not an error to use ** if there is just one word in the event; the empty string is returned in that case. xx** Abbreviates _x_-_$. xx-- Abbreviates _x_-_$ like xx**, but omits the last word. - If a word designator is supplied without an event specification, the + If a word designator is supplied without an event specification, the previous command is used as the event. MMooddiiffiieerrss - After the optional word designator, there may appear a sequence of one + After the optional word designator, there may appear a sequence of one or more of the following modifiers, each preceded by a `:'. hh Remove a trailing filename component, leaving only the head. @@ -4018,80 +4186,80 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN ee Remove all but the trailing suffix. pp Print the new command but do not execute it. qq Quote the substituted words, escaping further substitutions. - xx Quote the substituted words as with qq, but break into words at + xx Quote the substituted words as with qq, but break into words at bbllaannkkss and newlines. ss//_o_l_d//_n_e_w// - Substitute _n_e_w for the first occurrence of _o_l_d in the event - line. Any delimiter can be used in place of /. The final - delimiter is optional if it is the last character of the event - line. The delimiter may be quoted in _o_l_d and _n_e_w with a single - backslash. If & appears in _n_e_w, it is replaced by _o_l_d. A sin- - gle backslash will quote the &. If _o_l_d is null, it is set to - the last _o_l_d substituted, or, if no previous history substitu- + Substitute _n_e_w for the first occurrence of _o_l_d in the event + line. Any delimiter can be used in place of /. The final + delimiter is optional if it is the last character of the event + line. The delimiter may be quoted in _o_l_d and _n_e_w with a single + backslash. If & appears in _n_e_w, it is replaced by _o_l_d. A sin- + gle backslash will quote the &. If _o_l_d is null, it is set to + the last _o_l_d substituted, or, if no previous history substitu- tions took place, the last _s_t_r_i_n_g in a !!??_s_t_r_i_n_g[[??]] search. && Repeat the previous substitution. gg Cause changes to be applied over the entire event line. This is - used in conjunction with `::ss' (e.g., `::ggss//_o_l_d//_n_e_w//') or `::&&'. - If used with `::ss', any delimiter can be used in place of /, and - the final delimiter is optional if it is the last character of + used in conjunction with `::ss' (e.g., `::ggss//_o_l_d//_n_e_w//') or `::&&'. + If used with `::ss', any delimiter can be used in place of /, and + the final delimiter is optional if it is the last character of the event line. An aa may be used as a synonym for gg. - GG Apply the following `ss' modifier once to each word in the event + GG Apply the following `ss' modifier once to each word in the event line. SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS Unless otherwise noted, each builtin command documented in this section as accepting options preceded by -- accepts ---- to signify the end of the - options. The ::, ttrruuee, ffaallssee, and tteesstt builtins do not accept options - and do not treat ---- specially. The eexxiitt, llooggoouutt, rreettuurrnn, bbrreeaakk, ccoonn-- - ttiinnuuee, lleett, and sshhiifftt builtins accept and process arguments beginning - with -- without requiring ----. Other builtins that accept arguments but - are not specified as accepting options interpret arguments beginning - with -- as invalid options and require ---- to prevent this interpreta- + options. The ::, ttrruuee, ffaallssee, and tteesstt/[[ builtins do not accept options + and do not treat ---- specially. The eexxiitt, llooggoouutt, rreettuurrnn, bbrreeaakk, ccoonn-- + ttiinnuuee, lleett, and sshhiifftt builtins accept and process arguments beginning + with -- without requiring ----. Other builtins that accept arguments but + are not specified as accepting options interpret arguments beginning + with -- as invalid options and require ---- to prevent this interpreta- tion. :: [_a_r_g_u_m_e_n_t_s] - No effect; the command does nothing beyond expanding _a_r_g_u_m_e_n_t_s + No effect; the command does nothing beyond expanding _a_r_g_u_m_e_n_t_s and performing any specified redirections. The return status is zero. .. _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] ssoouurrccee _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] - Read and execute commands from _f_i_l_e_n_a_m_e in the current shell - environment and return the exit status of the last command exe- - cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash, - filenames in PPAATTHH are used to find the directory containing + Read and execute commands from _f_i_l_e_n_a_m_e in the current shell + environment and return the exit status of the last command exe- + cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash, + filenames in PPAATTHH are used to find the directory containing _f_i_l_e_n_a_m_e. The file searched for in PPAATTHH need not be executable. - When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is - searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option - to the sshhoopptt builtin command is turned off, the PPAATTHH is not - searched. If any _a_r_g_u_m_e_n_t_s are supplied, they become the posi- - tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the - positional parameters are unchanged. If the --TT option is - enabled, ssoouurrccee inherits any trap on DDEEBBUUGG; if it is not, any - DDEEBBUUGG trap string is saved and restored around the call to - ssoouurrccee, and ssoouurrccee unsets the DDEEBBUUGG trap while it executes. If - --TT is not set, and the sourced file changes the DDEEBBUUGG trap, the - new value is retained when ssoouurrccee completes. The return status + When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is + searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option + to the sshhoopptt builtin command is turned off, the PPAATTHH is not + searched. If any _a_r_g_u_m_e_n_t_s are supplied, they become the posi- + tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the + positional parameters are unchanged. If the --TT option is + enabled, ssoouurrccee inherits any trap on DDEEBBUUGG; if it is not, any + DDEEBBUUGG trap string is saved and restored around the call to + ssoouurrccee, and ssoouurrccee unsets the DDEEBBUUGG trap while it executes. If + --TT is not set, and the sourced file changes the DDEEBBUUGG trap, the + new value is retained when ssoouurrccee completes. The return status is the status of the last command exited within the script (0 if no commands are executed), and false if _f_i_l_e_n_a_m_e is not found or cannot be read. aalliiaass [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] AAlliiaass with no arguments or with the --pp option prints the list of - aliases in the form aalliiaass _n_a_m_e=_v_a_l_u_e on standard output. When - arguments are supplied, an alias is defined for each _n_a_m_e whose - _v_a_l_u_e is given. A trailing space in _v_a_l_u_e causes the next word + aliases in the form aalliiaass _n_a_m_e=_v_a_l_u_e on standard output. When + arguments are supplied, an alias is defined for each _n_a_m_e whose + _v_a_l_u_e is given. A trailing space in _v_a_l_u_e causes the next word to be checked for alias substitution when the alias is expanded. - For each _n_a_m_e in the argument list for which no _v_a_l_u_e is sup- - plied, the name and value of the alias is printed. AAlliiaass - returns true unless a _n_a_m_e is given for which no alias has been + For each _n_a_m_e in the argument list for which no _v_a_l_u_e is sup- + plied, the name and value of the alias is printed. AAlliiaass + returns true unless a _n_a_m_e is given for which no alias has been defined. bbgg [_j_o_b_s_p_e_c ...] - Resume each suspended job _j_o_b_s_p_e_c in the background, as if it + Resume each suspended job _j_o_b_s_p_e_c in the background, as if it had been started with &&. 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. bbgg _j_o_b_s_p_e_c returns 0 unless - run when job control is disabled or, when run with job control - enabled, any specified _j_o_b_s_p_e_c was not found or was started + notion of the _c_u_r_r_e_n_t _j_o_b is used. bbgg _j_o_b_s_p_e_c returns 0 unless + run when job control is disabled or, when run with job control + enabled, any specified _j_o_b_s_p_e_c was not found or was started without job control. bbiinndd [--mm _k_e_y_m_a_p] [--llppssvvPPSSVVXX] @@ -4100,29 +4268,29 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS bbiinndd [--mm _k_e_y_m_a_p] --xx _k_e_y_s_e_q:_s_h_e_l_l_-_c_o_m_m_a_n_d bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_f_u_n_c_t_i_o_n_-_n_a_m_e bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d - Display current rreeaaddlliinnee key and function bindings, bind a key - sequence to a rreeaaddlliinnee function or macro, or set a rreeaaddlliinnee - variable. Each non-option argument is a command as it would - appear in _._i_n_p_u_t_r_c, but each binding or command must be passed - as a separate argument; e.g., '"\C-x\C-r": re-read-init-file'. + Display current rreeaaddlliinnee key and function bindings, bind a key + sequence to a rreeaaddlliinnee function or macro, or set a rreeaaddlliinnee + variable. Each non-option argument is a command as it would + appear in _._i_n_p_u_t_r_c, but each binding or command must be passed + as a separate argument; e.g., '"\C-x\C-r": re-read-init-file'. Options, if supplied, have the following meanings: --mm _k_e_y_m_a_p Use _k_e_y_m_a_p as the keymap to be affected by the subsequent bindings. Acceptable _k_e_y_m_a_p names are _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_- - _d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, - and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d (_v_i_-_m_o_v_e - is also a synonym); _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_- + _d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, + and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d (_v_i_-_m_o_v_e + is also a synonym); _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_- _d_a_r_d. --ll List the names of all rreeaaddlliinnee functions. - --pp Display rreeaaddlliinnee function names and bindings in such a + --pp Display rreeaaddlliinnee function names and bindings in such a way that they can be re-read. --PP List current rreeaaddlliinnee function names and bindings. - --ss Display rreeaaddlliinnee key sequences bound to macros and the - strings they output in such a way that they can be re- + --ss Display rreeaaddlliinnee key sequences bound to macros and the + strings they output in such a way that they can be re- read. - --SS Display rreeaaddlliinnee key sequences bound to macros and the + --SS Display rreeaaddlliinnee key sequences bound to macros and the strings they output. - --vv Display rreeaaddlliinnee variable names and values in such a way + --vv Display rreeaaddlliinnee variable names and values in such a way that they can be re-read. --VV List current rreeaaddlliinnee variable names and values. --ff _f_i_l_e_n_a_m_e @@ -4134,125 +4302,132 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --rr _k_e_y_s_e_q Remove any current binding for _k_e_y_s_e_q. --xx _k_e_y_s_e_q::_s_h_e_l_l_-_c_o_m_m_a_n_d - Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is - entered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets - the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd-- - lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT variable to the + Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is + entered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets + the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd-- + lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT variable to the current location of the insertion point. If the executed - command changes the value of RREEAADDLLIINNEE__LLIINNEE or RREEAADD-- - LLIINNEE__PPOOIINNTT, those new values will be reflected in the + command changes the value of RREEAADDLLIINNEE__LLIINNEE or RREEAADD-- + LLIINNEE__PPOOIINNTT, those new values will be reflected in the editing state. - --XX List all key sequences bound to shell commands and the - associated commands in a format that can be reused as + --XX List all key sequences bound to shell commands and the + associated commands in a format that can be reused as input. - The return value is 0 unless an unrecognized option is given or + The return value is 0 unless an unrecognized option is given or an error occurred. bbrreeaakk [_n] - Exit from within a ffoorr, wwhhiillee, uunnttiill, or sseelleecctt loop. If _n is - specified, break _n levels. _n must be >= 1. If _n is greater - than the number of enclosing loops, all enclosing loops are - exited. The return value is 0 unless _n is not greater than or + Exit from within a ffoorr, wwhhiillee, uunnttiill, or sseelleecctt loop. If _n is + specified, break _n levels. _n must be >= 1. If _n is greater + than the number of enclosing loops, all enclosing loops are + exited. The return value is 0 unless _n is not greater than or equal to 1. bbuuiillttiinn _s_h_e_l_l_-_b_u_i_l_t_i_n [_a_r_g_u_m_e_n_t_s] - Execute the specified shell builtin, passing it _a_r_g_u_m_e_n_t_s, and + Execute the specified shell builtin, passing it _a_r_g_u_m_e_n_t_s, and return its exit status. This is useful when defining a function - whose name is the same as a shell builtin, retaining the func- + whose name is the same as a shell builtin, retaining the func- tionality of the builtin within the function. The ccdd builtin is - commonly redefined this way. The return status is false if + commonly redefined this way. The return status is false if _s_h_e_l_l_-_b_u_i_l_t_i_n is not a shell builtin command. ccaalllleerr [_e_x_p_r] Returns the context of any active subroutine call (a shell func- tion or a script executed with the .. or ssoouurrccee builtins). With- out _e_x_p_r, ccaalllleerr displays the line number and source filename of - the current subroutine call. If a non-negative integer is sup- + the current subroutine call. If a non-negative integer is sup- plied as _e_x_p_r, ccaalllleerr displays the line number, subroutine name, - and source file corresponding to that position in the current - execution call stack. This extra information may be used, for - example, to print a stack trace. The current frame is frame 0. - The return value is 0 unless the shell is not executing a sub- - routine call or _e_x_p_r does not correspond to a valid position in + and source file corresponding to that position in the current + execution call stack. This extra information may be used, for + example, to print a stack trace. The current frame is frame 0. + The return value is 0 unless the shell is not executing a sub- + routine call or _e_x_p_r does not correspond to a valid position in the call stack. ccdd [--LL|[--PP [--ee]] [-@]] [_d_i_r] - Change the current directory to _d_i_r. if _d_i_r is not supplied, - the value of the HHOOMMEE shell variable is the default. Any addi- + Change the current directory to _d_i_r. if _d_i_r is not supplied, + the value of the HHOOMMEE shell variable is the default. Any addi- tional arguments following _d_i_r are ignored. The variable CCDDPPAATTHH - defines the search path for the directory containing _d_i_r: each - directory name in CCDDPPAATTHH is searched for _d_i_r. Alternative - directory names in CCDDPPAATTHH are separated by a colon (:). A null - directory name in CCDDPPAATTHH is the same as the current directory, + defines the search path for the directory containing _d_i_r: each + directory name in CCDDPPAATTHH is searched for _d_i_r. Alternative + directory names in CCDDPPAATTHH are separated by a colon (:). A null + directory name in CCDDPPAATTHH is the same as the current directory, i.e., ``..''. If _d_i_r begins with a slash (/), then CCDDPPAATTHH is not - used. The --PP option causes ccdd to use the physical directory - structure by resolving symbolic links while traversing _d_i_r and + used. The --PP option causes ccdd to use the physical directory + structure by resolving symbolic links while traversing _d_i_r and before processing instances of _._. in _d_i_r (see also the --PP option to the sseett builtin command); the --LL option forces symbolic links - to be followed by resolving the link after processing instances + to be followed by resolving the link after processing instances of _._. in _d_i_r. If _._. appears in _d_i_r, it is processed by removing - the immediately previous pathname component from _d_i_r, back to a - slash or the beginning of _d_i_r. If the --ee option is supplied - with --PP, and the current working directory cannot be success- - fully determined after a successful directory change, ccdd will - return an unsuccessful status. On systems that support it, the - --@@ option presents the extended attributes associated with a - file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD + the immediately previous pathname component from _d_i_r, back to a + slash or the beginning of _d_i_r. If the --ee option is supplied + with --PP, and the current working directory cannot be success- + fully determined after a successful directory change, ccdd will + return an unsuccessful status. On systems that support it, the + --@@ option presents the extended attributes associated with a + file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD before the directory change is attempted. If a non-empty direc- - tory name from CCDDPPAATTHH is used, or if -- is the first argument, + tory name from CCDDPPAATTHH is used, or if -- is the first argument, and the directory change is successful, the absolute pathname of - the new working directory is written to the standard output. - The return value is true if the directory was successfully + the new working directory is written to the standard output. + The return value is true if the directory was successfully changed; false otherwise. ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...] - Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function + Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function lookup. Only builtin commands or commands found in the PPAATTHH are - executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is - performed using a default value for PPAATTHH that is guaranteed to - find all of the standard utilities. If either the --VV or --vv + executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is + performed using a default value for PPAATTHH that is guaranteed to + find all of the standard utilities. If either the --VV or --vv option is supplied, a description of _c_o_m_m_a_n_d is printed. The --vv - option causes a single word indicating the command or filename + option causes a single word indicating the command or filename used to invoke _c_o_m_m_a_n_d to be displayed; the --VV option produces a - more verbose description. If the --VV or --vv option is supplied, - the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If + more verbose description. If the --VV or --vv option is supplied, + the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If neither option is supplied and an error occurred or _c_o_m_m_a_n_d can- - not be found, the exit status is 127. Otherwise, the exit sta- + not be found, the exit status is 127. Otherwise, the exit sta- tus of the ccoommmmaanndd builtin is the exit status of _c_o_m_m_a_n_d. ccoommppggeenn [_o_p_t_i_o_n] [_w_o_r_d] - Generate possible completion matches for _w_o_r_d according to the - _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee - builtin with the exception of --pp and --rr, and write the matches - to the standard output. When using the --FF or --CC options, the - various shell variables set by the programmable completion + Generate possible completion matches for _w_o_r_d according to the + _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee + builtin with the exception of --pp and --rr, and write the matches + to the standard output. When using the --FF or --CC options, the + various shell variables set by the programmable completion facilities, while available, will not have useful values. The matches will be generated in the same way as if the program- mable completion code had generated them directly from a comple- - tion specification with the same flags. If _w_o_r_d is specified, + tion specification with the same flags. If _w_o_r_d is specified, only those completions matching _w_o_r_d will be displayed. - The return value is true unless an invalid option is supplied, + The return value is true unless an invalid option is supplied, or no matches were generated. - 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 ...] - 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 + 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. + 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 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-- @@ -4361,9 +4536,11 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --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. The possible completions are the members - of the resultant list which match the word being com- - pleted. + 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- + 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. It is applied to the list of possible completions gener- @@ -4378,18 +4555,22 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 + 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. + 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 @@ -4455,16 +4636,16 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS environment. 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 - 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 - take effect until subsequent assignments. The return value is 0 - unless an invalid option is encountered, an attempt is made to - define a function using ``-f foo=bar'', an attempt is made to + the exceptions that ++aa and ++AA may not be used to destroy array + variables 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 + variable 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 assign- + ment syntax to create array variables, additional attributes do + not take effect until subsequent assignments. The return value + is 0 unless an invalid option is encountered, an attempt is made + to define a function using ``-f foo=bar'', an attempt is made to assign a value to a readonly variable, an attempt is made to assign a value to an array variable without using the compound assignment syntax (see AArrrraayyss above), one of the _n_a_m_e_s is not a @@ -4579,141 +4760,142 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. If _c_o_m_m_a_n_d is not specified, any redi- - rections take effect in the current shell, and the return status - is 0. If there is a redirection error, the return status is 1. + file cannot be executed. A subshell exits unconditionally if + 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 - 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- - wise. If _f_i_r_s_t is not specified it is set to the previous com- + 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- + 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 intepreted 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 @@ -4725,50 +4907,59 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS hhiissttoorryy [[_n]] hhiissttoorryy --cc hhiissttoorryy --dd _o_f_f_s_e_t + hhiissttoorryy --dd _s_t_a_r_t-_e_n_d hhiissttoorryy --aannrrww [_f_i_l_e_n_a_m_e] hhiissttoorryy --pp _a_r_g [_a_r_g _._._.] 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. - --aa Append the ``new'' history lines to the history file. - These are history lines entered since the beginning of + 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 + 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 + 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 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. @@ -4777,208 +4968,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. - --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are + --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 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 @@ -4986,12 +5179,15 @@ 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. + 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. + (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 placed into the editing buffer before editing begins. @@ -5016,8 +5212,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 - continuation. + lar, a backslash-newline pair may not then 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 @@ -5066,7 +5262,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 + 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 @@ -5085,7 +5281,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + 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- @@ -5279,64 +5475,74 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --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 - whether or not each is set. The --pp option causes output to be - displayed in a form that may be reused as input. Other options - have the following meanings: + whether or not each is set; if _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 + 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: - 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- + aassssoocc__eexxppaanndd__oonnccee + If set, the shell suppresses multiple evaluation of + associative array subscripts during arithmetic expres- + sion evaluation, while executing builtins that can per- + form variable assignments, and while executing builtins + that perform array dereferencing. + 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 command - and, if necessary, updates the values of LLIINNEESS and CCOOLL-- - UUMMNNSS. + If set, bbaasshh checks the window size after each external + (non-builtin) command and, if necessary, updates the + values of LLIINNEESS and CCOOLLUUMMNNSS. This option is enabled by + default. 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. + 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 @@ -5363,7 +5569,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 + 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 @@ -5384,6 +5590,10 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 + 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. @@ -5409,7 +5619,9 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 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 @@ -5513,37 +5725,55 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 + attribute is not inherited. + llooccaallvvaarr__uunnsseett + If set, calling uunnsseett on local variables in previous + function scopes marks them so subsequent lookups find + them unset until that function returns. This is identi- + cal to the behavior of unsetting local variables at the + current function scope. 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-- ggrraammmmaabbllee CCoommpplleettiioonn above) are enabled. This option is enabled by default. + pprrooggccoommpp__aalliiaass + If set, and programmable completion is enabled, bbaasshh + treats a command name that doesn't have any completions + as a possible alias and attempts alias expansion. If it + has an alias, bbaasshh attempts programmable completion + using the command word resulting from the expanded + alias. pprroommppttvvaarrss If set, prompt strings undergo parameter expansion, com- mand substitution, arithmetic expansion, and quote @@ -5755,7 +5985,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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- + 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. @@ -5794,22 +6024,25 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS sequently reset. The exit status is true unless a _n_a_m_e is read- only. - wwaaiitt [--nn] [_n _._._.] + wwaaiitt [--ffnn] [_i_d _._._.] Wait for each specified child process and return its termination - status. Each _n may be a process ID or a job specification; if a - job spec is given, all processes in that job's pipeline are - waited for. If _n is not given, all currently active child pro- + 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 _n specifies a non-existent process - or job, the return status is 127. Otherwise, the return status - is the exit status of the last process or job waited for. + 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 + 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 @@ -5818,16 +6051,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- @@ -5836,10 +6069,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 @@ -5849,14 +6082,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 @@ -5874,7 +6107,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 @@ -5888,14 +6121,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: @@ -5906,7 +6139,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 @@ -5923,10 +6156,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. @@ -5935,4 +6168,4 @@ BBUUGGSS -GNU Bash 4.4 2016 August 26 BASH(1) +GNU Bash 5.0 2018 December 7 BASH(1) diff --git a/doc/bash.1 b/doc/bash.1 index 9a7a384ae..e6cd08db3 100644 --- a/doc/bash.1 +++ b/doc/bash.1 @@ -5,12 +5,12 @@ .\" Case Western Reserve University .\" chet.ramey@case.edu .\" -.\" Last Change: Fri Aug 26 09:45:10 EDT 2016 +.\" Last Change: Fri Dec 7 09:48:47 EST 2018 .\" .\" bash_builtins, strip all but Built-Ins section .if \n(zZ=1 .ig zZ .if \n(zY=1 .ig zY -.TH BASH 1 "2016 August 26" "GNU Bash 4.4" +.TH BASH 1 "2018 December 7" "GNU Bash 5.0" .\" .\" There's some problem with having a `@' .\" in a tagged paragraph with the BSD man macros. @@ -23,19 +23,19 @@ .\" and `complete-hostname' down in READLINE, .\" then uncomment this redefinition. .\" -.de }1 -.ds ]X \&\\*(]B\\ -.nr )E 0 -.if !"\\$1"" .nr )I \\$1n -.}f -.ll \\n(LLu -.in \\n()Ru+\\n(INu+\\n()Iu -.ti \\n(INu -.ie !\\n()Iu+\\n()Ru-\w\\*(]Xu-3p \{\\*(]X -.br\} -.el \\*(]X\h|\\n()Iu+\\n()Ru\c -.}f -.. +.\" .de }1 +.\" .ds ]X \&\\*(]B\\ +.\" .nr )E 0 +.\" .if !"\\$1"" .nr )I \\$1n +.\" .}f +.\" .ll \\n(LLu +.\" .in \\n()Ru+\\n(INu+\\n()Iu +.\" .ti \\n(INu +.\" .ie !\\n()Iu+\\n()Ru-\w\\*(]Xu-3p \{\\*(]X +.\" .br\} +.\" .el \\*(]X\h|\\n()Iu+\\n()Ru\c +.\" .}f +.\" .. .\" .\" File Name macro. This used to be `.PN', for Path Name, .\" but Sun doesn't seem to like that very much. @@ -50,8 +50,8 @@ bash \- GNU Bourne-Again SHell [options] [command_string | file] .SH COPYRIGHT -.if n Bash is Copyright (C) 1989-2016 by the Free Software Foundation, Inc. -.if t Bash is Copyright \(co 1989-2016 by the Free Software Foundation, Inc. +.if n Bash is Copyright (C) 1989-2018 by the Free Software Foundation, Inc. +.if t Bash is Copyright \(co 1989-2018 by the Free Software Foundation, Inc. .SH DESCRIPTION .B Bash is an \fBsh\fR-compatible command language interpreter that @@ -68,8 +68,8 @@ Shell and Utilities portion of the IEEE POSIX specification can be configured to be POSIX-conformant by default. .SH OPTIONS All of the single-character shell options documented in the -description of the \fBset\fR builtin command can be used as options -when the shell is invoked. +description of the \fBset\fR builtin command, including \fB\-o\fP, +can be used as options when the shell is invoked. In addition, \fBbash\fR interprets the following options when it is invoked: .PP @@ -119,7 +119,8 @@ If the option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be set -when invoking an interactive shell. +when invoking an interactive shell or when reading input +through a pipe. .TP .B \-D A list of all double-quoted strings preceded by \fB$\fP @@ -590,6 +591,13 @@ the time information. .PP Each command in a pipeline is executed as a separate process (i.e., in a subshell). +See +.SM +\fBCOMMAND EXECUTION ENVIRONMENT\fP +for a description of a subshell environment. +If the \fBlastpipe\fP option is enabled using the \fBshopt\fP builtin +(see the description of \fBshopt\fP below), +the last element of a pipeline may be run by the shell process. .SS Lists .PP A \fIlist\fP is a sequence of one or more pipelines separated by one @@ -621,8 +629,11 @@ of a semicolon to delimit commands. If a command is terminated by the control operator .BR & , the shell executes the command in the \fIbackground\fP -in a subshell. The shell does not wait for the command to -finish, and the return status is 0. Commands separated by a +in a subshell. +The shell does not wait for the command to +finish, and the return status is 0. +These are referred to as \fIasynchronous\fP commands. +Commands separated by a .B ; are executed sequentially; the shell waits for each command to terminate in turn. The return status is the @@ -640,7 +651,7 @@ An AND list has the form .I command2 is executed if, and only if, .I command1 -returns an exit status of zero. +returns an exit status of zero (success). .PP An OR list has the form .RS @@ -650,7 +661,7 @@ An OR list has the form .RE .PP .I command2 -is executed if and only if +is executed if, and only if, .I command1 returns a non-zero exit status. The return status of @@ -731,7 +742,7 @@ to be matched as a string. An additional binary operator, \fB=~\fP, is available, with the same precedence as \fB==\fP and \fB!=\fP. When it is used, the string to the right of the operator is considered -an extended regular expression and matched accordingly (as in \fIregex\fP(3)). +a POSIX extended regular expression and matched accordingly (as in \fIregex\fP(3)). The return value is 0 if the string matches the pattern, and 1 otherwise. If the regular expression is syntactically incorrect, the conditional @@ -861,10 +872,10 @@ or zero if no commands were executed. \fBcase\fP \fIword\fP \fBin\fP [ [(] \fIpattern\fP [ \fB|\fP \fIpattern\fP ] \ ... ) \fIlist\fP ;; ] ... \fBesac\fP A \fBcase\fP command first expands \fIword\fP, and tries to match -it against each \fIpattern\fP in turn, using the same matching rules -as for pathname expansion (see -.B Pathname Expansion -below). +it against each \fIpattern\fP in turn, using the matching rules +described under +.B Pattern Matching +below. The \fIword\fP is expanded using tilde expansion, parameter and variable expansion, arithmetic expansion, command substitution, process substitution and quote removal. @@ -955,7 +966,8 @@ command (see below). The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. -The file descriptors are not available in subshells. +Other than those created to execute command and process substitutions, +the file descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is available as the value of the variable \fINAME\fP_PID. The \fBwait\fP @@ -1142,7 +1154,7 @@ question mark .TP .B \e\fInnn\fP the eight-bit character whose value is the octal value \fInnn\fP -(one to three digits) +(one to three octal digits) .TP .B \ex\fIHH\fP the eight-bit character whose value is the hexadecimal value \fIHH\fP @@ -1348,7 +1360,14 @@ If is null, the parameters are joined without intervening separators. .TP .B @ -Expands to the positional parameters, starting from one. When the +Expands to the positional parameters, starting from one. +In contexts where word splitting is performed, this expands each +positional parameter to a separate word; if not within double +quotes, these words are subject to word splitting. +In contexts where word splitting is not performed, +this expands to a single word +with each positional parameter separated by a space. +When the expansion occurs within double quotes, each parameter expands to a separate word. That is, "\fB$@\fP" is equivalent to "\fB$1\fP" "\fB$2\fP" ... @@ -1411,8 +1430,8 @@ as given by argument zero. At shell startup, set to the absolute pathname used to invoke the shell or shell script being executed as passed in the environment or argument list. -Subsequently, expands to the last argument to the previous command, -after expansion. +Subsequently, expands to the last argument to the previous simple +command executed in the foreground, after expansion. Also set to the full pathname used to invoke each command executed and placed in the environment exported to that command. When checking mail, this parameter holds the name of the mail file @@ -1453,6 +1472,14 @@ This variable is read-only. Expands to the process ID of the current \fBbash\fP process. This differs from \fB$$\fP under certain circumstances, such as subshells that do not require \fBbash\fP to be re-initialized. +Assignments to +.SM +.B BASHPID +have no effect. +If +.B BASHPID +is unset, it loses its special properties, even if it is +subsequently reset. .TP .B BASH_ALIASES An associative array variable whose members correspond to the internal @@ -1481,7 +1508,10 @@ only when in extended debugging mode (see the description of the .B extdebug option to the .B shopt -builtin below) +builtin below). +Setting \fBextdebug\fP after the shell has started to execute a script, +or referencing this variable when \fBextdebug\fP is not set, +may result in inconsistent values. .TP .B BASH_ARGV An array variable containing all of the parameters in the current \fBbash\fP @@ -1499,7 +1529,23 @@ only when in extended debugging mode .B extdebug option to the .B shopt -builtin below) +builtin below). +Setting \fBextdebug\fP after the shell has started to execute a script, +or referencing this variable when \fBextdebug\fP is not set, +may result in inconsistent values. +.TP +.B BASH_ARGV0 +When referenced, this variable expands to the name of the shell or shell +script (identical to +.BR $0 ; +see the description of special parameter 0 above). +Assignment to +.B BASH_ARGV0 +causes the value assigned to also be assigned to \fB$0\fP. +If +.B BASH_ARGV0 +is unset, it loses its special properties, even if it is +subsequently reset. .TP .B BASH_CMDS An associative array variable whose members correspond to the internal @@ -1687,6 +1733,33 @@ If is unset, it loses its special properties, even if it is subsequently reset. .TP +.B EPOCHREALTIME +Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see \fItime\fP\fR(3)\fP) as a floating point value +with micro-second granularity. +Assignments to +.SM +.B EPOCHREALTIME +are ignored. +If +.SM +.B EPOCHREALTIME +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B EPOCHSECONDS +Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see \fItime\fP\fR(3)\fP). +Assignments to +.SM +.B EPOCHSECONDS +are ignored. +If +.SM +.B EPOCHSECONDS +is unset, it loses its special properties, even if it is +subsequently reset. +.TP .B EUID Expands to the effective user ID of the current user, initialized at shell startup. This variable is readonly. @@ -2011,7 +2084,7 @@ line editing. Similar to .SM .BR BASH_ENV ; -used when the shell is invoked in POSIX mode. +used when the shell is invoked in \fIposix mode\fP. .TP .B EXECIGNORE A colon-separated list of shell patterns (see \fBPattern Matching\fP) @@ -2053,9 +2126,9 @@ nesting level. Function invocations that exceed this nesting level will cause the current command to abort. .TP .B GLOBIGNORE -A colon-separated list of patterns defining the set of filenames to +A colon-separated list of patterns defining the set of file names to be ignored by pathname expansion. -If a filename matched by a pathname expansion pattern also matches one +If a file name matched by a pathname expansion pattern also matches one of the patterns in .SM .BR GLOBIGNORE , @@ -2076,7 +2149,7 @@ A value of .I ignoreboth is shorthand for \fIignorespace\fP and \fIignoredups\fP. A value of -.IR erasedups +.I erasedups causes all previous lines matching the current line to be removed from the history list before that line is saved. Any value not in the above list is ignored. @@ -2216,6 +2289,11 @@ startup file, overriding the default of .B READLINE below). .TP +.B INSIDE_EMACS +If this variable appears in the environment when the shell starts, +\fBbash\fP assumes that it is running inside an Emacs shell buffer +and may disable line editing, depending on the value of \fBTERM\fP. +.TP .B LANG Used to determine the locale category for any category not specifically selected with a variable starting with \fBLC_\fP. @@ -2339,6 +2417,8 @@ running, \fBbash\fP enables \fIposix mode\fP, as if the command .if t \f(CWset -o posix\fP .if n \fIset -o posix\fP had been executed. +When the shell enters \fIposix mode\fP, it sets this variable if it was +not already set. .TP .B PROMPT_COMMAND If set, the value is executed as a command prior to issuing each primary @@ -2388,6 +2468,7 @@ The value of this parameter is expanded as with and the value is printed before each command .B bash displays during an execution trace. The first character of +the expanded value of .SM .B PS4 is replicated multiple times, as necessary, to indicate multiple @@ -2624,14 +2705,19 @@ special parameters \fI@\fP and \fI*\fP within double quotes. The .B unset builtin is used to destroy arrays. \fBunset\fP \fIname\fP[\fIsubscript\fP] -destroys the array element at index \fIsubscript\fP. +destroys the array element at index \fIsubscript\fP, +for both indexed and associative arrays. Negative subscripts to indexed arrays are interpreted as described above. -Care must be taken to avoid unwanted side effects caused by pathname -expansion. +Unsetting the last element of an array variable does not unset the variable. \fBunset\fP \fIname\fP, where \fIname\fP is an array, or \fBunset\fP \fIname\fP[\fIsubscript\fP], where \fIsubscript\fP is \fB*\fP or \fB@\fP, removes the entire array. .PP +When using a variable name with a subscript as an argument to a command, +such as with \fBunset\fP, without using the word expansion syntax +described above, the argument is subject to pathname expansion. +If pathname expansion is not desired, the argument should be quoted. +.PP The .BR declare , .BR local , @@ -2686,10 +2772,11 @@ original word are removed unless they have been quoted themselves (\fIquote removal\fP). .PP Only brace expansion, word splitting, and pathname expansion -can change the number of words of the expansion; other expansions +can increase the number of words of the expansion; other expansions expand a single word to a single word. The only exceptions to this are the expansions of -"\fB$@\fP" and "\fB${\fP\fIname\fP\fB[@]}\fP" +"\fB$@\fP" and "\fB${\fP\fIname\fP\fB[@]}\fP", +and, in most cases, \fB$*\fP and \fB${\fP\fIname\fP\fB[*]}\fP as explained above (see .SM .BR PARAMETERS ). @@ -2730,7 +2817,7 @@ lexicographically between \fIx\fP and \fIy\fP, inclusive, using the default C locale. Note that both \fIx\fP and \fIy\fP must be of the same type. When the increment is supplied, it is used as the difference between -each term. The default increment is 1 or -1 as appropriate. +each term. The default increment is 1 or \-1 as appropriate. .PP Brace expansion is performed before any other expansions, and any characters special to other expansions are preserved @@ -2746,7 +2833,8 @@ Any incorrectly formed brace expansion is left unchanged. A \fB{\fP or \fB,\fP may be quoted with a backslash to prevent its being considered part of a brace expression. To avoid conflicts with parameter expansion, the string \fB${\fP -is not considered eligible for brace expansion. +is not considered eligible for brace expansion, and inhibits brace +expansion until the closing \fB}\fP. .PP This construct is typically used as shorthand when the common prefix of the strings to be generated is longer than in the @@ -2845,6 +2933,14 @@ and .SM .BR CDPATH , and the shell assigns the expanded value. +.PP +Bash also performs tilde expansion on words satisfying the conditions of +variable assignments (as described above under +.SM +.BR PARAMETERS ) +when they appear as arguments to simple commands. +Bash does not do this, except for the \fIdeclaration\fP commands listed +above, when in \fIposix mode\fP. .SS Parameter Expansion .PP The `\fB$\fP' character introduces parameter expansion, @@ -2876,14 +2972,16 @@ The \fIparameter\fP is a shell parameter as described above .PP If the first character of \fIparameter\fP is an exclamation point (\fB!\fP), and \fIparameter\fP is not a \fInameref\fP, -it introduces a level of variable indirection. -\fBBash\fP uses the value of the variable formed from the rest of -\fIparameter\fP as the name of the variable; this variable is then -expanded and that value is used in the rest of the substitution, rather -than the value of \fIparameter\fP itself. +it introduces a level of indirection. +\fBBash\fP uses the value formed by expanding the rest of +\fIparameter\fP as the new \fIparameter\fP; this is then +expanded and that value is used in the rest of the expansion, rather +than the expansion of the original \fIparameter\fP. This is known as \fIindirect expansion\fP. +The value is subject to tilde expansion, +parameter expansion, command substitution, and arithmetic expansion. If \fIparameter\fP is a nameref, this expands to the name of the -variable referenced by \fIparameter\fP instead of performing the +parameter referenced by \fIparameter\fP instead of performing the complete indirect expansion. The exceptions to this are the expansions of ${\fB!\fP\fIprefix\fP\fB*\fP} and ${\fB!\fP\fIname\fP[\fI@\fP]} described below. @@ -2975,7 +3073,7 @@ one space to avoid being confused with the \fB:-\fP expansion. If \fIparameter\fP is \fB@\fP, the result is \fIlength\fP positional parameters beginning at \fIoffset\fP. A negative \fIoffset\fP is taken relative to one greater than the greatest -positional parameter, so an offset of -1 evaluates to the last positional +positional parameter, so an offset of \-1 evaluates to the last positional parameter. It is an expansion error if \fIlength\fP evaluates to a number less than zero. @@ -3056,7 +3154,12 @@ ${\fIparameter\fP\fB##\fP\fIword\fP} The .I word is expanded to produce a pattern just as in pathname -expansion. If the pattern matches the beginning of +expansion, and matched against the expanded value of +.I parameter +using the rules described under +.B Pattern Matching +below. +If the pattern matches the beginning of the value of .IR parameter , then the result of the expansion is the expanded value of @@ -3087,7 +3190,11 @@ ${\fIparameter\fP\fB%%\fP\fIword\fP} .PD \fBRemove matching suffix pattern\fP. The \fIword\fP is expanded to produce a pattern just as in -pathname expansion. +pathname expansion, and matched against the expanded value of +.I parameter +using the rules described under +.B Pattern Matching +below. If the pattern matches a trailing portion of the expanded value of .IR parameter , then the result of the expansion is the expanded value of @@ -3114,9 +3221,12 @@ array in turn, and the expansion is the resultant list. ${\fIparameter\fP\fB/\fP\fIpattern\fP\fB/\fP\fIstring\fP} \fBPattern substitution\fP. The \fIpattern\fP is expanded to produce a pattern just as in -pathname expansion. +pathname expansion, \fIParameter\fP is expanded and the longest match of \fIpattern\fP against its value is replaced with \fIstring\fP. +The match is performed using the rules described under +.B Pattern Matching +below. If \fIpattern\fP begins with \fB/\fP, all matches of \fIpattern\fP are replaced with \fIstring\fP. Normally only the first match is replaced. If \fIpattern\fP begins with \fB#\fP, it must match at the beginning @@ -3202,7 +3312,7 @@ format that can be reused as input. .TP .B E The expansion is a string that is the value of \fIparameter\fP with backslash -escape sequences expanded as with the \fB$'...'\fP quoting mechansim. +escape sequences expanded as with the \fB$'...'\fP quoting mechanism. .TP .B P The expansion is a string that is the result of expanding the value of @@ -3232,7 +3342,7 @@ is an array variable subscripted with .B @ or .BR * , -the case modification operation is applied to each member of the +the operation is applied to each member of the array in turn, and the expansion is the resultant list. .sp 1 The result of the expansion is subject to word splitting and pathname @@ -3372,7 +3482,7 @@ are ignored at the beginning and end of the word, as long as the whitespace character is in the value of .SM -.BR IFS +.B IFS (an .SM .B IFS @@ -3455,11 +3565,22 @@ at the start of a name or immediately following a slash must be matched explicitly, unless the shell option .B dotglob is set. -When matching a pathname, the slash character must always be -matched explicitly. +The filenames +.B ``.'' +and +.B ``..'' +must always be matched explicitly, even if +.B dotglob +is set. In other cases, the .B ``.'' character is not treated specially. +When matching a pathname, the slash character must always be +matched explicitly by a slash in the pattern, but in other matching +contexts it can be matched by a special pattern character as described +below under +.SM +.BR "Pattern Matching" . See the description of .B shopt below under @@ -3476,12 +3597,12 @@ shell options. The .SM .B GLOBIGNORE -shell variable may be used to restrict the set of filenames matching a +shell variable may be used to restrict the set of file names matching a .IR pattern . If .SM .B GLOBIGNORE -is set, each matching filename that also matches one of the patterns in +is set, each matching file name that also matches one of the patterns in .SM .B GLOBIGNORE is removed from the list of matches. @@ -3654,6 +3775,12 @@ Matches one of the given patterns Matches anything except one of the given patterns .RE .PD +.PP +Complicated extended pattern matching against long strings is slow, +especially when the patterns contain alternations and the strings +contain multiple matches. +Using separate matches against shorter strings, or using arrays of +strings instead of a single long string, may be faster. .SS Quote Removal .PP After the preceding expansions, all unquoted occurrences of the @@ -3689,6 +3816,9 @@ than or equal to 10 and assign it to \fIvarname\fP. If >&- or <&- is preceded by {\fIvarname\fP}, the value of \fIvarname\fP defines the file descriptor to close. +If {\fIvarname\fP} is supplied, the redirection persists beyond +the scope of the command, allowing the shell programmer to manage +the file descriptor himself. .PP In the following descriptions, if the file descriptor number is omitted, and the first character of the redirection operator is @@ -3952,7 +4082,7 @@ A variant of here documents, the format is: .RE .PP The \fIword\fP undergoes -brace expansion, tilde expansion, parameter and variable expansion, +tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote removal. Pathname expansion and word splitting are not performed. The result is supplied as a single string, with a newline appended, @@ -4105,9 +4235,10 @@ below). The rules concerning the definition and use of aliases are somewhat confusing. .B Bash -always reads at least one complete line -of input before executing any -of the commands on that line. Aliases are expanded when a +always reads at least one complete line of input, +and all lines that make up a compound command, +before executing any of the commands on that line or the compound command. +Aliases are expanded when a command is read, not when it is executed. Therefore, an alias definition appearing on the same line as another command does not take effect until the next line of input is read. @@ -4178,6 +4309,44 @@ Variables local to the function may be declared with the .B local builtin command. Ordinarily, variables and their values are shared between the function and its caller. +If a variable is declared \fBlocal\fP, the variable's visible scope +is restricted to that function and its children (including the functions +it calls). +Local variables "shadow" variables with the same name declared at +previous scopes. +For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. +.PP +The shell uses \fIdynamic scoping\fP to control a variable's visibility +within functions. +With dynamic scoping, visible variables and their values +are a result of the sequence of function calls that caused execution +to reach the current function. +The value of a variable that a function sees depends +on its value within its caller, if any, whether that caller is +the "global" scope or another shell function. +This is also the value that a local variable +declaration "shadows", and the value that is restored when the function +returns. +.PP +For example, if a variable \fIvar\fP is declared as local in function +\fIfunc1\fP, and \fIfunc1\fP calls another function \fIfunc2\fP, +references to \fIvar\fP made from within \fIfunc2\fP will resolve to the +local variable \fIvar\fP from \fIfunc1\fP, shadowing any global variable +named \fIvar\fP. +.PP +The \fBunset\fP builtin also acts using the same dynamic scope: if a +variable is local to the current scope, \fBunset\fP will unset it; +otherwise the unset will refer to the variable found in any calling scope +as described above. +If a variable at the current local scope is unset, it will remain so +until it is reset in that scope or until the function returns. +Once the function returns, any instance of the variable at a previous +scope will become visible. +If the unset acts on a variable at a previous scope, any instance of a +variable with that name that had been shadowed will become visible. .PP The \fBFUNCNEST\fP variable, if set to a numeric value greater than 0, defines a maximum function nesting level. Function @@ -4222,10 +4391,6 @@ A function definition may be deleted using the \fB\-f\fP option to the .B unset builtin. -Note that shell functions and variables with the same name may result -in multiple identically-named entries in the environment passed to the -shell's children. -Care should be taken in cases where this may cause a problem. .PP Functions may be recursive. The \fBFUNCNEST\fP variable may be used to limit the depth of the @@ -4248,12 +4413,12 @@ The levels are listed in order of decreasing precedence. .B \fIid\fP++ \fIid\fP\-\- variable post-increment and post-decrement .TP -.B ++\fIid\fP \-\-\fIid\fP -variable pre-increment and pre-decrement -.TP .B \- + unary minus and plus .TP +.B ++\fIid\fP \-\-\fIid\fP +variable pre-increment and pre-decrement +.TP .B ! ~ logical and bitwise negation .TP @@ -4308,7 +4473,7 @@ A shell variable that is null or unset evaluates to 0 when referenced by name without using the parameter expansion syntax. The value of a variable is evaluated as an arithmetic expression when it is referenced, or when a variable which has been given the -\fIinteger\fP attribute using \fBdeclare -i\fP is assigned a value. +\fIinteger\fP attribute using \fBdeclare \-i\fP is assigned a value. A null value evaluates to 0. A shell variable need not have its \fIinteger\fP attribute turned on to be used in an expression. @@ -4333,6 +4498,10 @@ rules above. Conditional expressions are used by the \fB[[\fP compound command and the \fBtest\fP and \fB[\fP builtin commands to test file attributes and perform string and arithmetic comparisons. +The \fBtest\fP abd \fB[\fP commands determine their behavior based on +the number of arguments; see the descriptions of those commands for any +other command-specific actions. +.PP Expressions are formed from the following unary or binary primaries. \fBBash\fP handles several filenames specially when they are used in expressions. @@ -4501,6 +4670,14 @@ greater than, or greater than or equal to \fIarg2\fP, respectively. and .I arg2 may be positive or negative integers. +When used with the \fB[[\fP command, +.I Arg1 +and +.I Arg2 +are evaluated as arithmetic expressions (see +.SM +.B "ARITHMETIC EVALUATION" +above). .PD .SH "SIMPLE COMMAND EXPANSION" When a simple command is executed, the shell performs the following @@ -4573,9 +4750,10 @@ A full search of the directories in is performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named \fBcommand_not_found_handle\fP. -If that function exists, it is invoked with the original command and +If that function exists, it is invoked in a separate execution environment +with the original command and the original command's arguments as its arguments, and the function's -exit status becomes the exit status of the shell. +exit status becomes the exit status of that subshell. If that function is not defined, the shell prints an error message and returns an exit status of 127. .PP @@ -4675,7 +4853,7 @@ subshell environment. Changes made to the subshell environment cannot affect the shell's execution environment. .PP Subshells spawned to execute command substitutions inherit the value of -the \fB\-e\fP option from the parent shell. When not in \fIposix\fP mode, +the \fB\-e\fP option from the parent shell. When not in \fIposix mode\fP, \fBbash\fP clears the \fB\-e\fP option in such subshells. .PP If a command is followed by a \fB&\fP and job control is not active, the @@ -5030,6 +5208,11 @@ command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, the shell does not print another warning, and any stopped jobs are terminated. +.PP +When the shell is waiting for a job or process using the \fBwait\fP +builtin, and job control is enabled, \fBwait\fP will return when the +job changes state. The \fB\-f\fP option will force \fBwait\fP to wait +until the job or process terminates before returning. .SH PROMPTING When executing interactively, .B bash @@ -5042,9 +5225,16 @@ when it is ready to read a command, and the secondary prompt when it needs more input to complete a command. .B Bash displays +.SM .B PS0 after it reads a command but before executing it. .B Bash +displays +.SM +.B PS4 +as described above +before tracing each command when the \fB\-x\fP option is enabled. +.B Bash allows these prompt strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows: .RS @@ -5497,13 +5687,13 @@ in emacs mode and to .B # in vi command mode. .TP -.B completion\-display\-width (-1) +.B completion\-display\-width (\-1) The number of screen columns used to display possible matches when performing completion. The value is ignored if it is less than 0 or greater than the terminal screen width. A value of 0 will cause matches to be displayed one per line. -The default value is -1. +The default value is \-1. .TP .B completion\-ignore\-case (Off) If set to \fBOn\fP, readline performs filename matching and completion @@ -5557,6 +5747,16 @@ can be set to either or .BR vi . .TP +.B emacs\-mode\-string (@) +If the \fIshow\-mode\-in\-prompt\fP variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when emacs editing mode is active. The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the \e1 and \e2 escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +.TP .B enable\-bracketed\-paste (Off) When set to \fBOn\fP, readline will configure the terminal in a way that will enable it to insert each paste into the editing buffer as a @@ -5626,15 +5826,6 @@ the value of .B editing\-mode also affects the default keymap. .TP -.B emacs\-mode\-string (@) -This string is displayed immediately before the last line of the primary -prompt when emacs editing mode is active. The value is expanded like a -key binding, so the standard set of meta- and control prefixes and -backslash escape sequences is available. -Use the \e1 and \e2 escapes to begin and end sequences of -non-printing characters, which can be used to embed a terminal control -sequence into the mode string. -.TP .B keyseq\-timeout (500) Specifies the duration \fIreadline\fP will wait for a character when reading an ambiguous key sequence (one that can form a complete key sequence using @@ -5712,9 +5903,9 @@ a common prefix) cause the matches to be listed immediately instead of ringing the bell. .TP .B show\-mode\-in\-prompt (Off) -If set to \fBOn\fP, add a character to the beginning of the prompt -indicating the editing mode: emacs (@), vi command (:) or vi -insertion (+). +If set to \fBOn\fP, add a string to the beginning of the prompt +indicating the editing mode: emacs, vi command, or vi insertion. +The mode strings are user-settable (e.g., \fIemacs\-mode\-string\fP). .TP .B skip\-completed\-text (Off) If set to \fBOn\fP, this alters the default completion behavior when @@ -5725,7 +5916,8 @@ after point in the word being completed, so portions of the word following the cursor are not duplicated. .TP .B vi\-cmd\-mode\-string ((cmd)) -This string is displayed immediately before the last line of the primary +If the \fIshow\-mode\-in\-prompt\fP variable is enabled, +this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and @@ -5735,7 +5927,8 @@ non-printing characters, which can be used to embed a terminal control sequence into the mode string. .TP .B vi\-ins\-mode\-string ((ins)) -This string is displayed immediately before the last line of the primary +If the \fIshow\-mode\-in\-prompt\fP variable is enabled, +this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and @@ -5760,8 +5953,9 @@ The .B $if construct allows bindings to be made based on the editing mode, the terminal being used, or the application using -readline. The text of the test extends to the end of the line; -no characters are required to isolate it. +readline. The text of the test, after any comparison operator, + extends to the end of the line; +unless otherwise noted, no characters are required to isolate it. .RS .IP \fBmode\fP The \fBmode=\fP form of the \fB$if\fP directive is used to test @@ -5783,6 +5977,26 @@ to match both and .IR sun\-cmd , for instance. +.IP \fBversion\fP +The \fBversion\fP test may be used to perform comparisons against +specific readline versions. +The \fBversion\fP expands to the current readline version. +The set of comparison operators includes +.BR = , +(and +.BR == ), +.BR != , +.BR <= , +.BR >= , +.BR < , +and +.BR > . +The version number supplied on the right side of the operator consists +of a major version number, an optional decimal point, and an optional +minor version (e.g., \fB7.1\fP). If the minor version is omitted, it +is assumed to be \fB0\fP. +The operator may be separated from the string \fBversion\fP +and from the version number argument by whitespace. .IP \fBapplication\fP The \fBapplication\fP construct is used to include application-specific settings. Each program using the readline @@ -5800,6 +6014,15 @@ key sequence that quotes the current or previous word in \fBbash\fP: \fB$endif\fP .fi .RE +.IP \fIvariable\fP +The \fIvariable\fP construct provides simple equality tests for readline +variables and values. +The permitted comparison operators are \fI=\fP, \fI==\fP, and \fI!=\fP. +The variable name must be separated from the comparison operator by +whitespace; the operator may be separated from the value on the right hand +side by whitespace. +Both string and boolean variables may be tested. Boolean variables must be +tested against the values \fIon\fP and \fIoff\fP. .RE .IP \fB$endif\fP This command, as seen in the previous example, terminates an @@ -5901,6 +6124,19 @@ Words are delimited by non-quoted shell metacharacters. Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. .TP +.B previous\-screen\-line +Attempt to move point to the same physical screen column on the previous +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if point is not +greater than the length of the prompt plus the screen width. +.TP +.B next\-screen\-line +Attempt to move point to the same physical screen column on the next +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if the length +of the current Readline line is not greater than the length of the prompt +plus the screen width. +.TP .B clear\-screen (C\-l) Clear the screen leaving the current line at the top of the screen. With an argument, refresh the current line without clearing the @@ -5962,6 +6198,19 @@ Search backward through the history for the string of characters between the start of the current line and the point. This is a non-incremental search. .TP +.B history\-substring\-search\-backward +Search backward through the history for the string of characters +between the start of the current line and the current cursor +position (the \fIpoint\fP). +The search string may match anywhere in a history line. +This is a non-incremental search. +.TP +.B history\-substring\-search\-forward +Search forward through the history for the string of characters +between the start of the current line and the point. +The search string may match anywhere in a history line. +This is a non-incremental search. +.TP .B yank\-nth\-arg (M\-C\-y) Insert the first argument to the previous command (usually the second word on the previous line) at point. @@ -6024,10 +6273,11 @@ A synonym for \fByank\-last\-arg\fP. .TP .B operate\-and\-get\-next (C\-o) Accept the current line for execution and fetch the next line -relative to the current line from the history for editing. Any -argument is ignored. +relative to the current line from the history for editing. +A numeric argument, if supplied, specifies the history entry to use instead +of the current line. .TP -.B edit\-and\-execute\-command (C\-xC\-e) +.B edit\-and\-execute\-command (C\-x C\-e) Invoke an editor on the current command line, and execute the result as shell commands. \fBBash\fP attempts to invoke @@ -6342,9 +6592,10 @@ Abort the current editing command and ring the terminal's bell (subject to the setting of .BR bell\-style ). .TP -.B do\-uppercase\-version (M\-a, M\-b, M\-\fIx\fP, ...) -If the metafied character \fIx\fP is lowercase, run the command -that is bound to the corresponding uppercase character. +.B do\-lowercase\-version (M\-A, M\-B, M\-\fIx\fP, ...) +If the metafied character \fIx\fP is uppercase, run the command +that is bound to the corresponding metafied lowercase character. +The behavior is undefined if \fIx\fP is already lowercase. .TP .B prefix\-meta (ESC) Metafy the next character typed. @@ -6467,6 +6718,9 @@ If no compspec is found for the full pathname, an attempt is made to find a compspec for the portion following the final slash. If those searches do not result in a compspec, any compspec defined with the \fB\-D\fP option to \fBcomplete\fP is used as the default. +If there is no default compspec, \fBbash\fP attempts alias expansion +on the command word as a final resort, and attempts to find a compspec +for the command word from any successful expansion. .PP Once a compspec has been found, it is used to generate the list of matching words. @@ -6608,7 +6862,7 @@ of the setting of the \fBmark-symlinked\-directories\fP readline variable. .PP There is some support for dynamically modifying completions. This is most useful when used in combination with a default completion specified -with \fBcomplete -D\fP. +with \fBcomplete \-D\fP. It's possible for shell functions executed as completion handlers to indicate that completion should be retried by returning an exit status of 124. If a shell function returns 124, and changes @@ -6679,7 +6933,7 @@ If \fBHISTFILESIZE\fP is unset, or set to null, a non-numeric value, or a numeric value less than zero, the history file is not truncated. When the history file is read, lines beginning with the history comment character followed immediately -by a digit are interpreted as timestamps for the preceding history line. +by a digit are interpreted as timestamps for the following history line. These timestamps are optionally displayed depending on the value of the .SM .B HISTTIMEFORMAT @@ -6765,7 +7019,7 @@ for information on setting and unsetting shell options. .PP The shell supports a history expansion feature that is similar to the history expansion in -.BR csh. +.BR csh . This section describes what syntax features are available. This feature is enabled by default for interactive shells, and can be disabled using the @@ -6784,7 +7038,9 @@ arguments to a previous command into the current input line, or fix errors in previous commands quickly. .PP History expansion is performed immediately after a complete line -is read, before the shell breaks it into words. +is read, before the shell breaks it into words, and is performed +on each line individually without taking quoting on previous lines into +account. It takes place in two parts. The first is to determine which line from the history list to use during substitution. @@ -7045,7 +7301,7 @@ section as accepting options preceded by accepts .B \-\- to signify the end of the options. -The \fB:\fP, \fBtrue\fP, \fBfalse\fP, and \fBtest\fP builtins +The \fB:\fP, \fBtrue\fP, \fBfalse\fP, and \fBtest\fP/\fB[\fP builtins do not accept options and do not treat \fB\-\-\fP specially. The \fBexit\fP, \fBlogout\fP, \fBreturn\fP, \fBbreak\fP, \fBcontinue\fP, \fBlet\fP, @@ -7419,12 +7675,12 @@ will be displayed. The return value is true unless an invalid option is supplied, or no matches were generated. .TP -\fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp-option\fP] [\fB\-DE\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP] +\fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp-option\fP] [\fB\-DEI\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP] .br [\fB\-X\fP \fIfilterpat\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP] \fIname\fP [\fIname ...\fP] .PD 0 .TP -\fBcomplete\fP \fB\-pr\fP [\fB\-DE\fP] [\fIname\fP ...] +\fBcomplete\fP \fB\-pr\fP [\fB\-DEI\fP] [\fIname\fP ...] .PD Specify how arguments to each \fIname\fP should be completed. If the \fB\-p\fP option is supplied, or if no options are supplied, @@ -7433,12 +7689,21 @@ them to be reused as input. The \fB\-r\fP option removes a completion specification for each \fIname\fP, or, if no \fIname\fPs are supplied, all completion specifications. -The \fB\-D\fP option indicates that the remaining options and actions should +The \fB\-D\fP option indicates that other supplied options and actions should apply to the ``default'' command completion; that is, completion attempted on a command for which no completion has previously been defined. -The \fB\-E\fP option indicates that the remaining options and actions should +The \fB\-E\fP option indicates that other supplied options and actions should apply to ``empty'' command completion; that is, completion attempted on a blank line. +The \fB\-I\fP option indicates that other supplied options and actions should +apply to completion on the inital non-assignment word on the line, or after +a command delimiter such as \fB;\fP or \fB|\fP, which is usually command +name completion. +If multiple options are supplied, the \fB\-D\fP option takes precedence +over \fB\-E\fP, and both take precedence over \fB\-I\fP. +If any of \fB\-D\fP, \fB\-E\fP, or \fB\-I\fP are supplied, any other +\fIname\fP arguments are ignored; these completions only apply to the case +specified by the option. .sp 1 The process of applying these completion specifications when word completion is attempted is described above under \fBProgrammable Completion\fP. @@ -7609,6 +7874,12 @@ The \fIwordlist\fP is split using the characters in the .SM .B IFS special variable as delimiters, and each resultant word is expanded. +Shell quoting is honored within \fIwordlist\fP, +in order to provide a +mechanism for the words to contain shell metacharacters or characters +in the value of +.SM +.BR IFS . The possible completions are the members of the resultant list which match the word being completed. .TP 8 @@ -7628,7 +7899,7 @@ a \fIname\fP for which no specification exists, or an error occurs adding a completion specification. .RE .TP -\fBcompopt\fP [\fB\-o\fP \fIoption\fP] [\fB\-DE\fP] [\fB+o\fP \fIoption\fP] [\fIname\fP] +\fBcompopt\fP [\fB\-o\fP \fIoption\fP] [\fB\-DEI\fP] [\fB+o\fP \fIoption\fP] [\fIname\fP] Modify completion options for each \fIname\fP according to the \fIoption\fPs, or for the currently-executing completion if no \fIname\fPs are supplied. @@ -7636,12 +7907,16 @@ If no \fIoption\fPs are given, display the completion options for each \fIname\fP or the current completion. The possible values of \fIoption\fP are those valid for the \fBcomplete\fP builtin described above. -The \fB\-D\fP option indicates that the remaining options should +The \fB\-D\fP option indicates that other supplied options should apply to the ``default'' command completion; that is, completion attempted on a command for which no completion has previously been defined. -The \fB\-E\fP option indicates that the remaining options should +The \fB\-E\fP option indicates that other supplied options should apply to ``empty'' command completion; that is, completion attempted on a blank line. +The \fB\-I\fP option indicates that other supplied options should +apply to completion on the inital non-assignment word on the line, +or after a command delimiter such as \fB;\fP or \fB|\fP, which is usually +command name completion. .sp 1 The return value is true unless an invalid option is supplied, an attempt is made to modify the options for a \fIname\fP for which no completion @@ -7764,8 +8039,8 @@ Mark \fIname\fPs for export to subsequent commands via the environment. .PP Using `+' instead of `\-' turns off the attribute instead, -with the exceptions that \fB+a\fP -may not be used to destroy an array variable and \fB+r\fP will not +with the exceptions that \fB+a\fP and \fB+A\fP +may not be used to destroy array variables and \fB+r\fP will not remove the readonly attribute. When used in a function, .B declare @@ -8020,6 +8295,7 @@ unless the shell option is enabled. In that case, it returns failure. An interactive shell returns failure if the file cannot be executed. +A subshell exits unconditionally if \fBexec\fP fails. If .I command is not specified, any redirections take effect in the current shell, @@ -8089,7 +8365,7 @@ with that string) or as a number (an index into the history list, where a negative number is used as an offset from the current command number). If .I last -is not specified it is set to +is not specified, it is set to the current command for listing (so that .if n ``fc \-l \-10'' .if t \f(CWfc \-l \-10\fP @@ -8098,7 +8374,7 @@ prints the last 10 commands) and to otherwise. If .I first -is not specified it is set to the previous +is not specified, it is set to the previous command for editing and \-16 for listing. .sp 1 The @@ -8134,7 +8410,7 @@ echoed and executed. .sp 1 In the second form, \fIcommand\fP is re-executed after each instance of \fIpat\fP is replaced by \fIrep\fP. -\fICommand\fP is intepreted the same as \fIfirst\fP above. +\fICommand\fP is interpreted the same as \fIfirst\fP above. A useful alias to use with this is .if n ``r="fc -s"'', .if t \f(CWr='fc \-s'\fP, @@ -8353,6 +8629,8 @@ The return status is 0 unless no command matches .TP \fBhistory \-d\fP \fIoffset\fP .TP +\fBhistory \-d\fP \fIstart\fP\-\fIend\fP +.TP \fBhistory\fP \fB\-anrw\fP [\fIfilename\fP] .TP \fBhistory\fP \fB\-p\fP \fIarg\fP [\fIarg ...\fP] @@ -8389,6 +8667,15 @@ Clear the history list by deleting all the entries. .TP \fB\-d\fP \fIoffset\fP Delete the history entry at position \fIoffset\fP. +If \fIoffset\fP is negative, it is interpreted as relative to one greater +than the last history position, so negative indices count back from the +end of the history, and an index of \-1 refers to the current +\fBhistory -d\fP command. +.TP +\fB\-d\fP \fIstart\fP\-\fIend\fP +Delete the history entries between positions \fIstart\fP and \fIend\fP, +inclusive. Positive and negative values for \fIstart\fP and \fIend\fP +are interpreted as described above. .TP .B \-a Append the ``new'' history lines to the history file. @@ -8591,7 +8878,7 @@ Exit a login shell. Read lines from the standard input into the indexed array variable .IR array , or from file descriptor -.IR fd +.I fd if the .B \-u option is supplied. @@ -8606,6 +8893,8 @@ Options, if supplied, have the following meanings: .B \-d The first character of \fIdelim\fP is used to terminate each input line, rather than newline. +If \fIdelim\fP is the empty string, \fBmapfile\fP will terminate a line +when it reads a NUL character. .TP .B \-n Copy at most @@ -8738,9 +9027,9 @@ causes \fBprintf\fP to output the date-time string resulting from using \fIdatefmt\fP as a format string for \fIstrftime\fP(3). The corresponding \fIargument\fP is an integer representing the number of seconds since the epoch. -Two special argument values may be used: -1 represents the current -time, and -2 represents the time the shell was invoked. -If no argument is specified, conversion behaves as if -1 had been given. +Two special argument values may be used: \-1 represents the current +time, and \-2 represents the time the shell was invoked. +If no argument is specified, conversion behaves as if \-1 had been given. This is an exception to the usual \fBprintf\fP behavior. .PD .PP @@ -8865,6 +9154,8 @@ Other \fIname\fP arguments are ignored. .B \-d \fIdelim\fP The first character of \fIdelim\fP is used to terminate the input line, rather than newline. +If \fIdelim\fP is the empty string, \fBread\fP will terminate a line +when it reads a NUL character. .TP .B \-e If the standard input @@ -8875,7 +9166,7 @@ is coming from a terminal, .B READLINE above) is used to obtain the line. Readline uses the current (or default, if line editing was not previously -active) editing settings. +active) editing settings, but uses Readline's default filename completion. .TP .B \-i \fItext\fP If @@ -8907,7 +9198,7 @@ is displayed only if input is coming from a terminal. .B \-r Backslash does not act as an escape character. The backslash is considered to be part of the line. -In particular, a backslash-newline pair may not be used as a line +In particular, a backslash-newline pair may not then be used as a line continuation. .TP .B \-s @@ -8996,7 +9287,7 @@ is omitted, the return status is that of the last command executed in the function body. If \fBreturn\fP is executed by a trap handler, the last command used to determine the status is the last command executed before the trap handler. -if \fBreturn\fP is executed during a \fBDEBUG\fP trap, the last command +If \fBreturn\fP is executed during a \fBDEBUG\fP trap, the last command used to determine the status is the last command executed by the trap handler before \fBreturn\fP was invoked. If @@ -9028,7 +9319,7 @@ Without options, the name and value of each shell variable are displayed in a format that can be reused as input for setting or resetting the currently-set variables. Read-only variables cannot be reset. -In \fIposix\fP mode, only shell variables are listed. +In \fIposix mode\fP, only shell variables are listed. The output is sorted according to the current locale. When options are specified, they set or unset shell attributes. Any arguments remaining after option processing are treated @@ -9426,7 +9717,8 @@ option to the \fBset\fP builtin command. With no options, or with the .B \-p option, a list of all settable options is displayed, with -an indication of whether or not each is set. +an indication of whether or not each is set; +if \fIoptnames\fP are supplied, the output is restricted to those options. The \fB\-p\fP option causes output to be displayed in a form that may be reused as input. Other options have the following meanings: @@ -9475,6 +9767,12 @@ The list of \fBshopt\fP options is: .if n .sp 1v .PD 0 .TP 8 +.B assoc_expand_once +If set, the shell suppresses multiple evaluation of associative array +subscripts during arithmetic expression evaluation, while executing +builtins that can perform variable assignments, +and while executing builtins that perform array dereferencing. +.TP 8 .B autocd If set, a command name that is the name of a directory is executed as if it were the argument to the \fBcd\fP command. @@ -9513,13 +9811,14 @@ above). The shell always postpones exiting if any jobs are stopped. .TP 8 .B checkwinsize -If set, \fBbash\fP checks the window size after each command -and, if necessary, updates the values of +If set, \fBbash\fP checks the window size after each external (non-builtin) +command and, if necessary, updates the values of .SM .B LINES and .SM .BR COLUMNS . +This option is enabled by default. .TP 8 .B cmdhist If set, @@ -9527,6 +9826,10 @@ If set, attempts to save all lines of a multiple-line command in the same history entry. This allows easy re-editing of multi-line commands. +This option is enabled by default, but only has an effect if command +history is enabled, as described above under +.SM +.BR HISTORY . .TP 8 .B compat31 If set, @@ -9564,7 +9867,7 @@ interrupt; previous versions continue with the next command in the list. .B compat41 If set, .BR bash , -when in \fIposix\fP mode, treats a single quote in a double-quoted +when in \fIposix mode\fP, treats a single quote in a double-quoted parameter expansion as a special character. The single quotes must match (an even number) and the characters between the single quotes are considered quoted. This is the behavior of posix mode through version 4.1. @@ -9588,6 +9891,12 @@ and does not reset the loop state when a shell function is executed (this allows \fBbreak\fP or \fBcontinue\fP in a shell function to affect loops in the caller's context). .TP 8 +.B compat44 +If set, +.B bash +saves the positional parameters to BASH_ARGV and BASH_ARGC before they are +used, regardless of whether or not extended debugging mode is enabled. +.TP 8 .B complete_fullquote If set, .B bash @@ -9628,6 +9937,13 @@ If set, .B bash includes filenames beginning with a `.' in the results of pathname expansion. +The filenames +.B ``.'' +and +.B ``..'' +must always be matched explicitly, even if +.B dotglob +is set. .TP 8 .B execfail If set, a non-interactive shell will not exit if @@ -9797,6 +10113,17 @@ If set, and the option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible. .TP 8 +.B localvar_inherit +If set, local variables inherit the value and attributes of a variable of +the same name that exists at a previous scope before any new value is +assigned. The nameref attribute is not inherited. +.TP 8 +.B localvar_unset +If set, calling \fBunset\fP on local variables in previous function scopes +marks them so subsequent lookups find them unset until that function +returns. This is identical to the behavior of unsetting local variables +at the current function scope. +.TP 8 .B login_shell The shell sets this option if it is started as a login shell (see .SM @@ -9850,6 +10177,12 @@ If set, the programmable completion facilities (see \fBProgrammable Completion\fP above) are enabled. This option is enabled by default. .TP 8 +.B progcomp_alias +If set, and programmable completion is enabled, \fBbash\fP treats a command +name that doesn't have any completions as a possible alias and attempts +alias expansion. If it has an alias, \fBbash\fP attempts programmable +completion using the command word resulting from the expanded alias. +.TP 8 .B promptvars If set, prompt strings undergo parameter expansion, command substitution, arithmetic @@ -10318,7 +10651,7 @@ which is in units of 512-byte blocks; and .BR \-u , which are unscaled values; -and, when in Posix mode, +and, when in posix mode, .B \-c and .BR \-f , @@ -10410,20 +10743,23 @@ subsequently reset. The exit status is true unless a .I name is readonly. .TP -\fBwait\fP [\fB\-n\fP] [\fIn ...\fP] +\fBwait\fP [\fB\-fn\fP] [\fIid ...\fP] Wait for each specified child process and return its termination status. Each -.I n +.I id may be a process ID or a job specification; if a job spec is given, all processes in that job's pipeline are waited for. If -.I n +.I id is not given, all currently active child processes are waited for, and the return status is zero. If the \fB\-n\fP option is supplied, \fBwait\fP waits for any job to terminate and returns its exit status. +If the \fB\-f\fP option is supplied, and job control is enabled, +\fBwait\fP forces \fIid\fP to terminate before returning its status, +instead of returning when it changes status. If -.I n +.I id specifies a non-existent process or job, the return status is 127. Otherwise, the return status is the exit status of the last process or job waited for. diff --git a/doc/bash.html b/doc/bash.html index 983284e84..3da23fb64 100644 --- a/doc/bash.html +++ b/doc/bash.html @@ -3,7 +3,7 @@ -
BASH(1)2016 August 26BASH(1) +BASH(1)2018 December 7BASH(1)

Index @@ -18,6 +18,18 @@ + + + + + + + + + + + + @@ -42,7 +54,7 @@ bash - GNU Bourne-Again SHell

COPYRIGHT

-Bash is Copyright © 1989-2016 by the Free Software Foundation, Inc. +Bash is Copyright © 1989-2018 by the Free Software Foundation, Inc.  

DESCRIPTION

@@ -68,8 +80,8 @@ can be configured to be POSIX-conformant by default.

OPTIONS

All of the single-character shell options documented in the -description of the set builtin command can be used as options -when the shell is invoked. +description of the set builtin command, including -o, +can be used as options when the shell is invoked. In addition, bash interprets the following options when it is invoked:

@@ -139,7 +151,8 @@ If the option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be set -when invoking an interactive shell. +when invoking an interactive shell or when reading input +through a pipe.

-D
@@ -780,6 +793,12 @@ the time information. Each command in a pipeline is executed as a separate process (i.e., in a subshell). +See +COMMAND EXECUTION ENVIRONMENT +for a description of a subshell environment. +If the lastpipe option is enabled using the shopt builtin +(see the description of shopt below), +the last element of a pipeline may be run by the shell process.  

Lists

@@ -829,8 +848,11 @@ If a command is terminated by the control operator &, the shell executes the command in the background -in a subshell. The shell does not wait for the command to -finish, and the return status is 0. Commands separated by a +in a subshell. +The shell does not wait for the command to +finish, and the return status is 0. +These are referred to as asynchronous commands. +Commands separated by a ; are executed sequentially; the shell waits for each @@ -855,7 +877,7 @@ An AND list has the form is executed if, and only if, command1 -returns an exit status of zero. +returns an exit status of zero (success).

An OR list has the form @@ -871,7 +893,7 @@ An OR list has the form command2 -is executed if and only if +is executed if, and only if, command1 returns a non-zero exit status. @@ -958,7 +980,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 @@ -1110,11 +1132,11 @@ or zero if no commands were executed.

case word in [ [(] pattern [ | pattern ]
A case command first expands word, and tries to match -it against each pattern in turn, using the same matching rules -as for pathname expansion (see -Pathname Expansion +it against each pattern in turn, using the matching rules +described under +Pattern Matching -below). +below. The word is expanded using tilde expansion, parameter and variable expansion, arithmetic expansion, command substitution, process substitution and quote removal. @@ -1217,7 +1239,8 @@ command (see below). The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. -The file descriptors are not available in subshells. +Other than those created to execute command and process substitutions, +the file descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is available as the value of the variable NAME_PID. The wait @@ -1463,7 +1486,7 @@ question mark
the eight-bit character whose value is the octal value nnn -(one to three digits) +(one to three octal digits)
\xHH
@@ -1730,7 +1753,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" ... @@ -1810,8 +1840,8 @@ as given by argument zero. At shell startup, set to the absolute pathname used to invoke the shell or shell script being executed as passed in the environment or argument list. -Subsequently, expands to the last argument to the previous command, -after expansion. +Subsequently, expands to the last argument to the previous simple +command executed in the foreground, after expansion. Also set to the full pathname used to invoke each command executed and placed in the environment exported to that command. When checking mail, this parameter holds the name of the mail file @@ -1868,6 +1898,16 @@ This variable is read-only. Expands to the process ID of the current bash process. This differs from $$ under certain circumstances, such as subshells that do not require bash to be re-initialized. +Assignments to +BASHPID + + +have no effect. +If +BASHPID + +is unset, it loses its special properties, even if it is +subsequently reset.
BASH_ALIASES
@@ -1903,7 +1943,10 @@ only when in extended debugging mode (see the description of the option to the shopt -builtin below) +builtin below). +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
@@ -1926,7 +1969,27 @@ only when in extended debugging mode option to the shopt -builtin below) +builtin below). +Setting extdebug after the shell has started to execute a script, +or referencing this variable when extdebug is not set, +may result in inconsistent values. +
BASH_ARGV0 + +
+When referenced, this variable expands to the name of the shell or shell +script (identical to +$0; + +see the description of special parameter 0 above). +Assignment to +BASH_ARGV0 + +causes the value assigned to also be assigned to $0. +If +BASH_ARGV0 + +is unset, it loses its special properties, even if it is +subsequently reset.
BASH_CMDS
@@ -2152,6 +2215,39 @@ Assignment to this variable will not change the current directory. If DIRSTACK + +is unset, it loses its special properties, even if it is +subsequently reset. +
EPOCHREALTIME + +
+Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see time(3)) as a floating point value +with micro-second granularity. +Assignments to +EPOCHREALTIME + + +are ignored. +If +EPOCHREALTIME + + +is unset, it loses its special properties, even if it is +subsequently reset. +
EPOCHSECONDS + +
+Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see time(3)). +Assignments to +EPOCHSECONDS + + +are ignored. +If +EPOCHSECONDS + is unset, it loses its special properties, even if it is subsequently reset. @@ -2562,7 +2658,7 @@ Similar to BASH_ENV; -used when the shell is invoked in POSIX mode. +used when the shell is invoked in posix mode.
EXECIGNORE
@@ -2612,9 +2708,9 @@ will cause the current command to abort.
GLOBIGNORE
-A colon-separated list of patterns defining the set of filenames to +A colon-separated list of patterns defining the set of file names to be ignored by pathname expansion. -If a filename matched by a pathname expansion pattern also matches one +If a file name matched by a pathname expansion pattern also matches one of the patterns in GLOBIGNORE, @@ -2815,6 +2911,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
@@ -2971,6 +3073,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
@@ -3035,6 +3139,7 @@ and the value is printed before each command bash displays during an execution trace. The first character of +the expanded value of PS4 @@ -3327,15 +3432,21 @@ The unset builtin is used to destroy arrays. unset name[subscript] -destroys the array element at index subscript. +destroys the array element at index subscript, +for both indexed and associative arrays. Negative subscripts to indexed arrays are interpreted as described above. -Care must be taken to avoid unwanted side effects caused by pathname -expansion. +Unsetting the last element of an array variable does not unset the variable. unset name, where name is an array, or unset name[subscript], where subscript is * or @, removes the entire array.

+When using a variable name with a subscript as an argument to a command, +such as with unset, without using the word expansion syntax +described above, the argument is subject to pathname expansion. +If pathname expansion is not desired, the argument should be quoted. +

+ The declare, @@ -3413,10 +3524,11 @@ original word are removed unless they have been quoted themselves

Only brace expansion, word splitting, and pathname expansion -can change the number of words of the expansion; other expansions +can increase the number of words of the expansion; other expansions expand a single word to a single word. The only exceptions to this are the expansions of -"$@" and "${name[@]}" +"$@" and "${name[@]}", +and, in most cases, $* and ${name[*]} as explained above (see PARAMETERS). @@ -3485,7 +3597,8 @@ Any incorrectly formed brace expansion is left unchanged. A { or , may be quoted with a backslash to prevent its being considered part of a brace expression. To avoid conflicts with parameter expansion, the string ${ -is not considered eligible for brace expansion. +is not considered eligible for brace expansion, and inhibits brace +expansion until the closing }.

This construct is typically used as shorthand when the common @@ -3617,6 +3730,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

@@ -3657,14 +3780,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. @@ -3848,7 +3973,14 @@ The word is expanded to produce a pattern just as in pathname -expansion. If the pattern matches the beginning of +expansion, and matched against the expanded value of +parameter + +using the rules described under +Pattern Matching + +below. +If the pattern matches the beginning of the value of parameter, @@ -3885,7 +4017,13 @@ array in turn, and the expansion is the resultant list. Remove matching suffix pattern. The word is expanded to produce a pattern just as in -pathname expansion. +pathname expansion, and matched against the expanded value of +parameter + +using the rules described under +Pattern Matching + +below. If the pattern matches a trailing portion of the expanded value of parameter, @@ -3919,9 +4057,13 @@ array in turn, and the expansion is the resultant list.
${parameter/pattern/string}
Pattern substitution. The pattern is expanded to produce a pattern just as in -pathname expansion. +pathname expansion, Parameter is expanded and the longest match of pattern against its value is replaced with string. +The match is performed using the rules described under +Pattern Matching + +below. If pattern begins with /, all matches of pattern are replaced with string. Normally only the first match is replaced. If pattern begins with #, it must match at the beginning @@ -4018,7 +4160,7 @@ format that can be reused as input.
The expansion is a string that is the value of parameter with backslash -escape sequences expanded as with the $'...' quoting mechansim. +escape sequences expanded as with the $'...' quoting mechanism.
P
@@ -4059,7 +4201,7 @@ is an array variable subscripted with or *, -the case modification operation is applied to each member of the +the operation is applied to each member of the array in turn, and the expansion is the resultant list.

The result of the expansion is subject to word splitting and pathname @@ -4354,12 +4496,27 @@ must be matched explicitly, unless the shell option dotglob is set. -When matching a pathname, the slash character must always be -matched explicitly. +The filenames +``.'' + +and +``..'' + +must always be matched explicitly, even if +dotglob + +is set. In other cases, the ``.'' character is not treated specially. +When matching a pathname, the slash character must always be +matched explicitly by a slash in the pattern, but in other matching +contexts it can be matched by a special pattern character as described +below under +Pattern Matching. + + See the description of shopt @@ -4384,14 +4541,14 @@ The GLOBIGNORE -shell variable may be used to restrict the set of filenames matching a +shell variable may be used to restrict the set of file names matching a pattern. If GLOBIGNORE -is set, each matching filename that also matches one of the patterns in +is set, each matching file name that also matches one of the patterns in GLOBIGNORE @@ -4613,6 +4770,13 @@ Matches anything except one of the given patterns +

+ +Complicated extended pattern matching against long strings is slow, +especially when the patterns contain alternations and the strings +contain multiple matches. +Using separate matches against shorter strings, or using arrays of +strings instead of a single long string, may be faster.  

Quote Removal

@@ -4659,6 +4823,9 @@ than or equal to 10 and assign it to varname. If >&- or <&- is preceded by {varname}, the value of varname defines the file descriptor to close. +If {varname} is supplied, the redirection persists beyond +the scope of the command, allowing the shell programmer to manage +the file descriptor himself.

In the following descriptions, if the file descriptor number is @@ -5035,7 +5202,7 @@ A variant of here documents, the format is:

The word undergoes -brace expansion, tilde expansion, parameter and variable expansion, +tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote removal. Pathname expansion and word splitting are not performed. The result is supplied as a single string, with a newline appended, @@ -5250,9 +5417,10 @@ The rules concerning the definition and use of aliases are somewhat confusing. Bash -always reads at least one complete line -of input before executing any -of the commands on that line. Aliases are expanded when a +always reads at least one complete line of input, +and all lines that make up a compound command, +before executing any of the commands on that line or the compound command. +Aliases are expanded when a command is read, not when it is executed. Therefore, an alias definition appearing on the same line as another command does not take effect until the next line of input is read. @@ -5339,6 +5507,47 @@ Variables local to the function may be declared with the builtin command. Ordinarily, variables and their values are shared between the function and its caller. +If a variable is declared local, the variable's visible scope +is restricted to that function and its children (including the functions +it calls). +Local variables "shadow" variables with the same name declared at +previous scopes. +For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. +

+ +The shell uses dynamic scoping to control a variable's visibility +within functions. +With dynamic scoping, visible variables and their values +are a result of the sequence of function calls that caused execution +to reach the current function. +The value of a variable that a function sees depends +on its value within its caller, if any, whether that caller is +the "global" scope or another shell function. +This is also the value that a local variable +declaration "shadows", and the value that is restored when the function +returns. +

+ +For example, if a variable var is declared as local in function +func1, and func1 calls another function func2, +references to var made from within func2 will resolve to the +local variable var from func1, shadowing any global variable +named var. +

+ +The unset builtin also acts using the same dynamic scope: if a +variable is local to the current scope, unset will unset it; +otherwise the unset will refer to the variable found in any calling scope +as described above. +If a variable at the current local scope is unset, it will remain so +until it is reset in that scope or until the function returns. +Once the function returns, any instance of the variable at a previous +scope will become visible. +If the unset acts on a variable at a previous scope, any instance of a +variable with that name that had been shadowed will become visible.

The FUNCNEST variable, if set to a numeric value greater @@ -5397,10 +5606,6 @@ the unset builtin. -Note that shell functions and variables with the same name may result -in multiple identically-named entries in the environment passed to the -shell's children. -Care should be taken in cases where this may cause a problem.

Functions may be recursive. @@ -5428,14 +5633,14 @@ The levels are listed in order of decreasing precedence.

variable post-increment and post-decrement -
++id --id - -
-variable pre-increment and pre-decrement
- +
unary minus and plus +
++id --id + +
+variable pre-increment and pre-decrement
! ~
@@ -5537,6 +5742,11 @@ rules above. Conditional expressions are used by the [[ compound command and the test and [ builtin commands to test file attributes and perform string and arithmetic comparisons. +The test abd [ commands determine their behavior based on +the number of arguments; see the descriptions of those commands for any +other command-specific actions. +

+ Expressions are formed from the following unary or binary primaries. Bash handles several filenames specially when they are used in expressions. @@ -5742,6 +5952,17 @@ and arg2 may be positive or negative integers. +When used with the [[ command, +Arg1 + +and +Arg2 + +are evaluated as arithmetic expressions (see +ARITHMETIC EVALUATION + + +above).   @@ -5834,9 +6055,10 @@ A full search of the directories in is performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named command_not_found_handle. -If that function exists, it is invoked with the original command and +If that function exists, it is invoked in a separate execution environment +with the original command and the original command's arguments as its arguments, and the function's -exit status becomes the exit status of the shell. +exit status becomes the exit status of that subshell. If that function is not defined, the shell prints an error message and returns an exit status of 127.

@@ -5951,7 +6173,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.

@@ -6427,6 +6649,12 @@ command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, the shell does not print another warning, and any stopped jobs are terminated. +

+ +When the shell is waiting for a job or process using the wait +builtin, and job control is enabled, wait will return when the +job changes state. The -f option will force wait to wait +until the job or process terminates before returning.  

PROMPTING

@@ -6445,11 +6673,20 @@ when it needs more input to complete a command. Bash displays -PS0 +PS0 + after it reads a command but before executing it. Bash +displays +PS4 + + +as described above +before tracing each command when the -x option is enabled. +Bash + allows these prompt strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows:
@@ -7134,6 +7371,17 @@ can be set to either or vi. +
emacs-mode-string (@) + +
+If the show-mode-in-prompt variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when emacs editing mode is active. The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the \1 and \2 escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string.
enable-bracketed-paste (Off)
@@ -7217,16 +7465,6 @@ the value of editing-mode also affects the default keymap. -
emacs-mode-string (@) - -
-This string is displayed immediately before the last line of the primary -prompt when emacs editing mode is active. The value is expanded like a -key binding, so the standard set of meta- and control prefixes and -backslash escape sequences is available. -Use the \1 and \2 escapes to begin and end sequences of -non-printing characters, which can be used to embed a terminal control -sequence into the mode string.
keyseq-timeout (500)
@@ -7320,9 +7558,9 @@ of ringing the bell.
show-mode-in-prompt (Off)
-If set to On, add a character to the beginning of the prompt -indicating the editing mode: emacs (@), vi command (:) or vi -insertion (+). +If set to On, add a string to the beginning of the prompt +indicating the editing mode: emacs, vi command, or vi insertion. +The mode strings are user-settable (e.g., emacs-mode-string).
skip-completed-text (Off)
@@ -7335,7 +7573,8 @@ following the cursor are not duplicated.
vi-cmd-mode-string ((cmd))
-This string is displayed immediately before the last line of the primary +If the show-mode-in-prompt variable is enabled, +this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and @@ -7346,7 +7585,8 @@ sequence into the mode string.
vi-ins-mode-string ((ins))
-This string is displayed immediately before the last line of the primary +If the show-mode-in-prompt variable is enabled, +this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and @@ -7378,8 +7618,9 @@ The construct allows bindings to be made based on the editing mode, the terminal being used, or the application using -readline. The text of the test extends to the end of the line; -no characters are required to isolate it. +readline. The text of the test, after any comparison operator, +
 extends to the end of the line; +unless otherwise noted, no characters are required to isolate it.
mode
@@ -7406,6 +7647,33 @@ and sun-cmd, for instance. +
version
+The version test may be used to perform comparisons against +specific readline versions. +The version expands to the current readline version. +The set of comparison operators includes +=, + +(and +==), + +!=, + +<=, + +>=, + +<, + +and +>. + +The version number supplied on the right side of the operator consists +of a major version number, an optional decimal point, and an optional +minor version (e.g., 7.1). If the minor version is omitted, it +is assumed to be 0. +The operator may be separated from the string version +and from the version number argument by whitespace.
application
The application construct is used to include application-specific settings. Each program using the readline @@ -7425,6 +7693,15 @@ key sequence that quotes the current or previous word in bash:
+
variable
+The variable construct provides simple equality tests for readline +variables and values. +The permitted comparison operators are =, ==, and !=. +The variable name must be separated from the comparison operator by +whitespace; the operator may be separated from the value on the right hand +side by whitespace. +Both string and boolean variables may be tested. Boolean variables must be +tested against the values on and off.
$endif
@@ -7554,6 +7831,21 @@ Words are delimited by non-quoted shell metacharacters.
Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. +
previous-screen-line + +
+Attempt to move point to the same physical screen column on the previous +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if point is not +greater than the length of the prompt plus the screen width. +
next-screen-line + +
+Attempt to move point to the same physical screen column on the next +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if the length +of the current Readline line is not greater than the length of the prompt +plus the screen width.
clear-screen (C-l)
@@ -7634,6 +7926,21 @@ This is a non-incremental search. Search backward through the history for the string of characters between the start of the current line and the point. This is a non-incremental search. +
history-substring-search-backward + +
+Search backward through the history for the string of characters +between the start of the current line and the current cursor +position (the point). +The search string may match anywhere in a history line. +This is a non-incremental search. +
history-substring-search-forward + +
+Search forward through the history for the string of characters +between the start of the current line and the point. +The search string may match anywhere in a history line. +This is a non-incremental search.
yank-nth-arg (M-C-y)
@@ -7710,9 +8017,10 @@ A synonym for yank-last-arg.
Accept the current line for execution and fetch the next line -relative to the current line from the history for editing. Any -argument is ignored. -
edit-and-execute-command (C-xC-e) +relative to the current line from the history for editing. +A numeric argument, if supplied, specifies the history entry to use instead +of the current line. +
edit-and-execute-command (C-x C-e)
Invoke an editor on the current command line, and execute the result as shell @@ -8124,11 +8432,12 @@ Abort the current editing command and ring the terminal's bell (subject to the setting of bell-style). -
do-uppercase-version (M-a, M-b, M-x, ...) +
do-lowercase-version (M-A, M-B, M-x, ...)
-If the metafied character x is lowercase, run the command -that is bound to the corresponding uppercase character. +If the metafied character x is uppercase, run the command +that is bound to the corresponding metafied lowercase character. +The behavior is undefined if x is already lowercase.
prefix-meta (ESC)
@@ -8281,6 +8590,9 @@ If no compspec is found for the full pathname, an attempt is made to find a compspec for the portion following the final slash. If those searches do not result in a compspec, any compspec defined with the -D option to complete is used as the default. +If there is no default compspec, bash attempts alias expansion +on the command word as a final resort, and attempts to find a compspec +for the command word from any successful expansion.

Once a compspec has been found, it is used to generate the list of @@ -8542,7 +8854,7 @@ If HISTFILESIZE is unset, or set to null, a non-numeric value, or a numeric value less than zero, the history file is not truncated. When the history file is read, lines beginning with the history comment character followed immediately -by a digit are interpreted as timestamps for the preceding history line. +by a digit are interpreted as timestamps for the following history line. These timestamps are optionally displayed depending on the value of the HISTTIMEFORMAT @@ -8652,7 +8964,7 @@ for information on setting and unsetting shell options. The shell supports a history expansion feature that is similar to the history expansion in -csh. +csh. This section describes what syntax features are available. This feature is enabled by default for interactive shells, and can be @@ -8677,7 +8989,9 @@ fix errors in previous commands quickly.

History expansion is performed immediately after a complete line -is read, before the shell breaks it into words. +is read, before the shell breaks it into words, and is performed +on each line individually without taking quoting on previous lines into +account. It takes place in two parts. The first is to determine which line from the history list to use during substitution. @@ -9035,7 +9349,7 @@ accepts -- to signify the end of the options. -The :, true, false, and test builtins +The :, true, false, and test/[ builtins do not accept options and do not treat -- specially. The exit, logout, return, break, continue, let, @@ -9482,12 +9796,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, @@ -9496,12 +9810,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. @@ -9705,6 +10028,13 @@ The wordlist is split using the characters in the special variable as delimiters, and each resultant word is expanded. +Shell quoting is honored within wordlist, +in order to provide a +mechanism for the words to contain shell metacharacters or characters +in the value of +IFS. + + The possible completions are the members of the resultant list which match the word being completed.

-X filterpat
@@ -9725,7 +10055,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. @@ -9733,12 +10063,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 @@ -9889,8 +10223,8 @@ Mark names for export to subsequent commands via the environment. Using `+' instead of `-' turns off the attribute instead, -with the exceptions that +a -may not be used to destroy an array variable and +r will not +with the exceptions that +a and +A +may not be used to destroy array variables and +r will not remove the readonly attribute. When used in a function, declare @@ -10209,6 +10543,7 @@ unless the shell option is enabled. In that case, it returns failure. An interactive shell returns failure if the file cannot be executed. +A subshell exits unconditionally if exec fails. If command @@ -10292,7 +10627,7 @@ where a negative number is used as an offset from the current command number). If last -is not specified it is set to +is not specified, it is set to the current command for listing (so that fc -l -10 @@ -10303,7 +10638,7 @@ otherwise. If first -is not specified it is set to the previous +is not specified, it is set to the previous command for editing and -16 for listing.

The @@ -10349,7 +10684,7 @@ echoed and executed.

In the second form, command is re-executed after each instance of pat is replaced by rep. -Command is intepreted the same as first above. +Command is interpreted the same as first above. A useful alias to use with this is r='fc -s', @@ -10621,6 +10956,7 @@ The return status is 0 unless no command matches

history -c
history -d offset
+
history -d start-end
history -anrw [filename]
history -p arg [arg ...]
history -s arg [arg ...]
@@ -10661,6 +10997,14 @@ is used. Options, if supplied, have the following meanings: Clear the history list by deleting all the entries.
-d offset
Delete the history entry at position offset. +If offset is negative, it is interpreted as relative to one greater +than the last history position, so negative indices count back from the +end of the history, and an index of -1 refers to the current +history -d command. +
-d start-end
+Delete the history entries between positions start and end, +inclusive. Positive and negative values for start and end +are interpreted as described above.
-a
@@ -10935,6 +11279,8 @@ Options, if supplied, have the following meanings:
The first character of delim is used to terminate each input line, rather than newline. +If delim is the empty string, mapfile will terminate a line +when it reads a NUL character.
-n
@@ -11250,6 +11596,8 @@ Other name arguments are ignored.
The first character of delim is used to terminate the input line, rather than newline. +If delim is the empty string, read will terminate a line +when it reads a NUL character.
-e
@@ -11263,7 +11611,7 @@ is coming from a terminal, above) is used to obtain the line. Readline uses the current (or default, if line editing was not previously -active) editing settings. +active) editing settings, but uses Readline's default filename completion.
-i text
@@ -11301,7 +11649,7 @@ is displayed only if input is coming from a terminal.
Backslash does not act as an escape character. The backslash is considered to be part of the line. -In particular, a backslash-newline pair may not be used as a line +In particular, a backslash-newline pair may not then be used as a line continuation.
-s @@ -11409,7 +11757,7 @@ is omitted, the return status is that of the last command executed in the function body. If return is executed by a trap handler, the last command used to determine the status is the last command executed before the trap handler. -if return is executed during a DEBUG trap, the last command +If return is executed during a DEBUG trap, the last command used to determine the status is the last command executed by the trap handler before return was invoked. If @@ -11443,7 +11791,7 @@ Without options, the name and value of each shell variable are displayed in a format that can be reused as input for setting or resetting the currently-set variables. Read-only variables cannot be reset. -In 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 @@ -11970,7 +12318,8 @@ With no options, or with the -p option, a list of all settable options is displayed, with -an indication of whether or not each is set. +an indication of whether or not each is set; +if optnames are supplied, the output is restricted to those options. The -p option causes output to be displayed in a form that may be reused as input. Other options have the following meanings: @@ -12035,6 +12384,13 @@ The list of shopt options is:
+
assoc_expand_once + +
+If set, the shell suppresses multiple evaluation of associative array +subscripts during arithmetic expression evaluation, while executing +builtins that can perform variable assignments, +and while executing builtins that perform array dereferencing.
autocd
@@ -12083,8 +12439,8 @@ postpones exiting if any jobs are stopped.
checkwinsize
-If set, bash checks the window size after each command -and, if necessary, updates the values of +If set, bash checks the window size after each external (non-builtin) +command and, if necessary, updates the values of LINES @@ -12092,6 +12448,7 @@ and COLUMNS. +This option is enabled by default.
cmdhist
@@ -12101,6 +12458,11 @@ If set, attempts to save all lines of a multiple-line command in the same history entry. This allows easy re-editing of multi-line commands. +This option is enabled by default, but only has an effect if command +history is enabled, as described above under +HISTORY. + +
compat31
@@ -12148,7 +12510,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. @@ -12175,6 +12537,14 @@ to make them fatal errors that cause the shell to exit), and does not reset the loop state when a shell function is executed (this allows break or continue in a shell function to affect loops in the caller's context). +
compat44 + +
+If set, +bash + +saves the positional parameters to BASH_ARGV and BASH_ARGC before they are +used, regardless of whether or not extended debugging mode is enabled.
complete_fullquote
@@ -12226,6 +12596,16 @@ If set, includes filenames beginning with a `.' in the results of pathname expansion. +The filenames +``.'' + +and +``..'' + +must always be matched explicitly, even if +dotglob + +is set.
execfail
@@ -12441,6 +12821,19 @@ If set, and the option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible. +
localvar_inherit + +
+If set, local variables inherit the value and attributes of a variable of +the same name that exists at a previous scope before any new value is +assigned. The nameref attribute is not inherited. +
localvar_unset + +
+If set, calling unset on local variables in previous function scopes +marks them so subsequent lookups find them unset until that function +returns. This is identical to the behavior of unsetting local variables +at the current function scope.
login_shell
@@ -12510,6 +12903,13 @@ to expand to a null string, rather than themselves. If set, the programmable completion facilities (see Programmable Completion above) are enabled. This option is enabled by default. +
progcomp_alias + +
+If set, and programmable completion is enabled, bash treats a command +name that doesn't have any completions as a possible alias and attempts +alias expansion. If it has an alias, bash attempts programmable +completion using the command word resulting from the expanded alias.
promptvars
@@ -13106,7 +13506,7 @@ and -u, which are unscaled values; -and, when in Posix mode, +and, when in posix mode, -c and @@ -13221,22 +13621,25 @@ subsequently reset. The exit status is true unless a name is readonly. -
wait [-n] [n ...]
+
wait [-fn] [id ...]
Wait for each specified child process and return its termination status. Each -n +id may be a process ID or a job specification; if a job spec is given, all processes in that job's pipeline are waited for. If -n +id is not given, all currently active child processes are waited for, and the return status is zero. If the -n option is supplied, wait waits for any job to terminate and returns its exit status. +If the -f option is supplied, and job control is enabled, +wait forces id to terminate before returning its status, +instead of returning when it changes status. If -n +id specifies a non-existent process or job, the return status is 127. Otherwise, the return status is the exit status of the last @@ -13529,7 +13932,7 @@ There may be only one active coprocess at a time.
-
GNU Bash 4.42016 August 26BASH(1) +GNU Bash 5.02018 December 7BASH(1)

@@ -13635,6 +14038,6 @@ There may be only one active coprocess at a time.

This document was created by man2html from bash.1.
-Time: 31 August 2016 10:24:30 EDT +Time: 02 January 2019 09:14:47 EST diff --git a/doc/bash.info b/doc/bash.info index fac678652..39f32125f 100644 --- a/doc/bash.info +++ b/doc/bash.info @@ -1,13 +1,13 @@ -This is bash.info, produced by makeinfo version 6.1 from +This is bash.info, produced by makeinfo version 6.5 from bashref.texi. This text is a brief description of the features that are present in the -Bash shell (version 4.4, 7 September 2016). +Bash shell (version 5.0, 7 December 2018). - This is Edition 4.4, last updated 7 September 2016, of 'The GNU Bash -Reference Manual', for 'Bash', Version 4.4. + This is Edition 5.0, last updated 7 December 2018, of 'The GNU Bash +Reference Manual', for 'Bash', Version 5.0. - Copyright (C) 1988-2016 Free Software Foundation, Inc. + Copyright (C) 1988-2018 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -27,11 +27,11 @@ Bash Features ************* This text is a brief description of the features that are present in the -Bash shell (version 4.4, 7 September 2016). The Bash home page is +Bash shell (version 5.0, 7 December 2018). The Bash home page is . - This is Edition 4.4, last updated 7 September 2016, of 'The GNU Bash -Reference Manual', for 'Bash', Version 4.4. + This is Edition 5.0, last updated 7 December 2018, of 'The GNU Bash +Reference Manual', for 'Bash', Version 5.0. Bash contains features that appear in other popular shells, and some features that only appear in Bash. Some of the shells that Bash has @@ -451,7 +451,7 @@ decoded as follows: question mark '\NNN' the eight-bit character whose value is the octal value NNN (one to - three digits) + three octal digits) '\xHH' the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) @@ -586,16 +586,20 @@ information. If the pipeline is not executed asynchronously (*note Lists::), the shell waits for all commands in the pipeline to complete. - Each command in a pipeline is executed in its own subshell (*note -Command Execution Environment::). The exit status of a pipeline is the -exit status of the last command in the pipeline, unless the 'pipefail' -option is enabled (*note The Set Builtin::). If 'pipefail' is enabled, -the pipeline's return status is the value of the last (rightmost) -command to exit with a non-zero status, or zero if all commands exit -successfully. If the reserved word '!' precedes the pipeline, the exit -status is the logical negation of the exit status as described above. -The shell waits for all commands in the pipeline to terminate before -returning a value. + Each command in a pipeline is executed in its own subshell, which is +a separate process (*note Command Execution Environment::). If the +'lastpipe' option is enabled using the 'shopt' builtin (*note The Shopt +Builtin::), the last element of a pipeline may be run by the shell +process. + + The exit status of a pipeline is the exit status of the last command +in the pipeline, unless the 'pipefail' option is enabled (*note The Set +Builtin::). If 'pipefail' is enabled, the pipeline's return status is +the value of the last (rightmost) command to exit with a non-zero +status, or zero if all commands exit successfully. If the reserved word +'!' precedes the pipeline, the exit status is the logical negation of +the exit status as described above. The shell waits for all commands in +the pipeline to terminate before returning a value.  File: bash.info, Node: Lists, Next: Compound Commands, Prev: Pipelines, Up: Shell Commands @@ -615,11 +619,12 @@ commands, equivalent to a semicolon. If a command is terminated by the control operator '&', the shell executes the command asynchronously in a subshell. This is known as -executing the command in the BACKGROUND. The shell does not wait for -the command to finish, and the return status is 0 (true). When job -control is not active (*note Job Control::), the standard input for -asynchronous commands, in the absence of any explicit redirections, is -redirected from '/dev/null'. +executing the command in the BACKGROUND, and these are referred to as +ASYNCHRONOUS commands. The shell does not wait for the command to +finish, and the return status is 0 (true). When job control is not +active (*note Job Control::), the standard input for asynchronous +commands, in the absence of any explicit redirections, is redirected +from '/dev/null'. Commands separated by a ';' are executed sequentially; the shell waits for each command to terminate in turn. The return status is the @@ -633,7 +638,7 @@ executed with left associativity. COMMAND1 && COMMAND2 COMMAND2 is executed if, and only if, COMMAND1 returns an exit status of -zero. +zero (success). An OR list has the form COMMAND1 || COMMAND2 @@ -656,11 +661,12 @@ File: bash.info, Node: Compound Commands, Next: Coprocesses, Prev: Lists, Up * Conditional Constructs:: Shell commands for conditional execution. * Command Grouping:: Ways to group commands. -Compound commands are the shell programming constructs. Each construct -begins with a reserved word or control operator and is terminated by a -corresponding reserved word or operator. Any redirections (*note -Redirections::) associated with a compound command apply to all commands -within that compound command unless explicitly overridden. +Compound commands are the shell programming language constructs. Each +construct begins with a reserved word or control operator and is +terminated by a corresponding reserved word or operator. Any +redirections (*note Redirections::) associated with a compound command +apply to all commands within that compound command unless explicitly +overridden. In most cases a list of commands in a compound command's description may be separated from the rest of the command by one or more newlines, @@ -705,14 +711,16 @@ syntax, it may be replaced with one or more newlines. for NAME [ [in [WORDS ...] ] ; ] do COMMANDS; done - Expand WORDS, and execute COMMANDS once for each member in the - resultant list, with NAME bound to the current member. If 'in - WORDS' is not present, the 'for' command executes the COMMANDS once - for each positional parameter that is set, as if 'in "$@"' had been - specified (*note Special Parameters::). The return status is the - exit status of the last command that executes. If there are no - items in the expansion of WORDS, no commands are executed, and the - return status is zero. + Expand WORDS (*note Shell Expansions::), and execute COMMANDS once + for each member in the resultant list, with NAME bound to the + current member. If 'in WORDS' is not present, the 'for' command + executes the COMMANDS once for each positional parameter that is + set, as if 'in "$@"' had been specified (*note Special + Parameters::). + + The return status is the exit status of the last command that + executes. If there are no items in the expansion of WORDS, no + commands are executed, and the return status is zero. An alternate form of the 'for' command is also supported: @@ -761,23 +769,26 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: 'case' The syntax of the 'case' command is: - case WORD in [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]... esac + case WORD in + [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]... + esac 'case' will selectively execute the COMMAND-LIST corresponding to - the first PATTERN that matches WORD. If the 'nocasematch' shell - option (see the description of 'shopt' in *note The Shopt - Builtin::) is enabled, the match is performed without regard to the - case of alphabetic characters. The '|' is used to separate - multiple patterns, and the ')' operator terminates a pattern list. - A list of patterns and an associated command-list is known as a - CLAUSE. + the first PATTERN that matches WORD. The match is performed + according to the rules described below in *note Pattern Matching::. + If the 'nocasematch' shell option (see the description of 'shopt' + in *note The Shopt Builtin::) is enabled, the match is performed + without regard to the case of alphabetic characters. The '|' is + used to separate multiple patterns, and the ')' operator terminates + a pattern list. A list of patterns and an associated command-list + is known as a CLAUSE. Each clause must be terminated with ';;', ';&', or ';;&'. The WORD undergoes tilde expansion, parameter expansion, command - substitution, arithmetic expansion, and quote removal before - matching is attempted. Each PATTERN undergoes tilde expansion, - parameter expansion, command substitution, and arithmetic - expansion. + substitution, arithmetic expansion, and quote removal (*note Shell + Parameter Expansion::) before matching is attempted. Each PATTERN + undergoes tilde expansion, parameter expansion, command + substitution, and arithmetic expansion. There may be an arbitrary number of 'case' clauses, each terminated by a ';;', ';&', or ';;&'. The first pattern that matches @@ -875,36 +886,36 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: 'shopt' in *note The Shopt Builtin::) is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches ('==') or does not match - ('!=')the pattern, and 1 otherwise. Any part of the pattern may be - quoted to force the quoted portion to be matched as a string. + ('!=') the pattern, and 1 otherwise. Any part of the pattern may + be quoted to force the quoted portion to be matched as a string. An additional binary operator, '=~', is available, with the same precedence as '==' and '!='. When it is used, the string to the - right of the operator is considered an extended regular expression - and matched accordingly (as in regex3)). The return value is 0 if - the string matches the pattern, and 1 otherwise. If the regular - expression is syntactically incorrect, the conditional expression's - return value is 2. If the 'nocasematch' shell option (see the - description of 'shopt' in *note The Shopt Builtin::) is enabled, - the match is performed without regard to the case of alphabetic - characters. Any part of the pattern may be quoted to force the - quoted portion to be matched as a string. Bracket expressions in - regular expressions must be treated carefully, since normal quoting - characters lose their meanings between brackets. If the pattern is - stored in a shell variable, quoting the variable expansion forces - the entire pattern to be matched as a string. Substrings matched - by parenthesized subexpressions within the regular expression are - saved in the array variable 'BASH_REMATCH'. The element of - 'BASH_REMATCH' with index 0 is the portion of the string matching - the entire regular expression. The element of 'BASH_REMATCH' with - index N is the portion of the string matching the Nth parenthesized - subexpression. + right of the operator is considered a POSIX extended regular + expression and matched accordingly (as in regex3)). The return + value is 0 if the string matches the pattern, and 1 otherwise. If + the regular expression is syntactically incorrect, the conditional + expression's return value is 2. If the 'nocasematch' shell option + (see the description of 'shopt' in *note The Shopt Builtin::) is + enabled, the match is performed without regard to the case of + alphabetic characters. Any part of the pattern may be quoted to + force the quoted portion to be matched as a string. Bracket + expressions in regular expressions must be treated carefully, since + normal quoting characters lose their meanings between brackets. If + the pattern is stored in a shell variable, quoting the variable + expansion forces the entire pattern to be matched as a string. + Substrings matched by parenthesized subexpressions within the + regular expression are saved in the array variable 'BASH_REMATCH'. + The element of 'BASH_REMATCH' with index 0 is the portion of the + string matching the entire regular expression. The element of + 'BASH_REMATCH' with index N is the portion of the string matching + the Nth parenthesized subexpression. For example, the following will match a line (stored in the shell variable LINE) if there is a sequence of characters in the value consisting of any number, including zero, of space characters, zero or one instances of 'a', then a 'b': - [[ $line =~ [[:space:]]*(a)?b ]] + [[ $line =~ [[:space:]]*?(a)b ]] That means values like 'aab' and ' aaaaaab' will match, as will a line containing a 'b' anywhere in its value. @@ -917,7 +928,7 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: to the shell's quote removal. Using a shell variable to store the pattern decreases these problems. For example, the following is equivalent to the above: - pattern='[[:space:]]*(a)?b' + pattern='[[:space:]]*?(a)b' [[ $line =~ $pattern ]] If you want to match a character that's special to the regular @@ -1030,7 +1041,8 @@ a file descriptor in the executing shell, and that file descriptor is assigned to 'NAME'[1]. This pipe is established before any redirections specified by the command (*note Redirections::). The file descriptors can be utilized as arguments to shell commands and redirections using -standard word expansions. The file descriptors are not available in +standard word expansions. Other than those created to execute command +and process substitutions, the file descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is @@ -1094,7 +1106,8 @@ read from a file (in this case, filenames listed one per line): done < file | process-output with a more compact syntax reminiscent of lambdas: - cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | process-output + cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | + process-output Parallel provides a built-in mechanism to remove filename extensions, which lends itself to batch file transformations or renaming: @@ -1109,17 +1122,25 @@ take arguments from the command line; the above can also be written as If a command generates output, you may want to preserve the input order in the output. For instance, the following command - { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel traceroute + { + echo foss.org.my ; + echo debian.org ; + echo freenetproject.org ; + } | parallel traceroute will display as output the traceroute invocation that finishes first. Adding the '-k' option - { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel -k traceroute + { + echo foss.org.my ; + echo debian.org ; + echo freenetproject.org ; + } | parallel -k traceroute will ensure that the output of 'traceroute foss.org.my' is displayed first. Finally, Parallel can be used to run a sequence of shell commands in parallel, similar to 'cat file | bash'. It is not uncommon to take a list of filenames, create a series of shell commands to operate on them, -and feed that list of commnds to a shell. Parallel can speed this up. +and feed that list of commands to a shell. Parallel can speed this up. Assuming that 'file' contains a list of shell commands, one per line, parallel -j 10 < file @@ -1210,7 +1231,57 @@ last command executed before the 'return'. Variables local to the function may be declared with the 'local' builtin. These variables are visible only to the function and the -commands it invokes. +commands it invokes. This is particularly important when a shell +function calls other functions. + + Local variables "shadow" variables with the same name declared at +previous scopes. For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. + + The shell uses DYNAMIC SCOPING to control a variable's visibility +within functions. With dynamic scoping, visible variables and their +values are a result of the sequence of function calls that caused +execution to reach the current function. The value of a variable that a +function sees depends on its value within its caller, if any, whether +that caller is the "global" scope or another shell function. This is +also the value that a local variable declaration "shadows", and the +value that is restored when the function returns. + + For example, if a variable VAR is declared as local in function +FUNC1, and FUNC1 calls another function FUNC2, references to VAR made +from within FUNC2 will resolve to the local variable VAR from FUNC1, +shadowing any global variable named VAR. + + The following script demonstrates this behavior. When executed, the +script displays + + In func2, var = func1 local + + func1() + { + local var='func1 local' + func2 + } + + func2() + { + echo "In func2, var = $var" + } + + var=global + func1 + + The 'unset' builtin also acts using the same dynamic scope: if a +variable is local to the current scope, 'unset' will unset it; otherwise +the unset will refer to the variable found in any calling scope as +described above. If a variable at the current local scope is unset, it +will remain so until it is reset in that scope or until the function +returns. Once the function returns, any instance of the variable at a +previous scope will become visible. If the unset acts on a variable at +a previous scope, any instance of a variable with that name that had +been shadowed will become visible. Function names and definitions may be listed with the '-f' option to the 'declare' ('typeset') builtin command (*note Bash Builtins::). The @@ -1218,10 +1289,7 @@ the 'declare' ('typeset') builtin command (*note Bash Builtins::). The (and optionally the source file and line number, if the 'extdebug' shell option is enabled). Functions may be exported so that subshells automatically have them defined with the '-f' option to the 'export' -builtin (*note Bourne Shell Builtins::). Note that shell functions and -variables with the same name may result in multiple identically-named -entries in the environment passed to the shell's children. Care should -be taken in cases where this may cause a problem. +builtin (*note Bourne Shell Builtins::). Functions may be recursive. The 'FUNCNEST' variable may be used to limit the depth of the function call stack and restrict the number of @@ -1350,15 +1418,21 @@ only be referenced; assignment to them is not allowed. is null, the parameters are joined without intervening separators. '@' - ($@) Expands to the positional parameters, starting from one. When - the expansion occurs within double quotes, each parameter expands - to a separate word. That is, '"$@"' is equivalent to '"$1" "$2" - ...'. If the double-quoted expansion occurs within a word, the - expansion of the first parameter is joined with the beginning part - of the original word, and the expansion of the last parameter is - joined with the last part of the original word. When there are no - positional parameters, '"$@"' and '$@' expand to nothing (i.e., - they are removed). + ($@) Expands to the positional parameters, starting from one. In + contexts where word splitting is performed, this expands each + positional parameter to a separate word; if not within double + quotes, these words are subject to word splitting. In contexts + where word splitting is not performed, this expands to a single + word with each positional parameter separated by a space. When the + expansion occurs within double quotes, and word splitting is + performed, each parameter expands to a separate word. That is, + '"$@"' is equivalent to '"$1" "$2" ...'. If the double-quoted + expansion occurs within a word, the expansion of the first + parameter is joined with the beginning part of the original word, + and the expansion of the last parameter is joined with the last + part of the original word. When there are no positional + parameters, '"$@"' and '$@' expand to nothing (i.e., they are + removed). '#' ($#) Expands to the number of positional parameters in decimal. @@ -1395,10 +1469,11 @@ only be referenced; assignment to them is not allowed. ($_, an underscore.) At shell startup, set to the absolute pathname used to invoke the shell or shell script being executed as passed in the environment or argument list. Subsequently, expands - to the last argument to the previous command, after expansion. - Also set to the full pathname used to invoke each command executed - and placed in the environment exported to that command. When - checking mail, this parameter holds the name of the mail file. + to the last argument to the previous simple command executed in the + foreground, after expansion. Also set to the full pathname used to + invoke each command executed and placed in the environment exported + to that command. When checking mail, this parameter holds the name + of the mail file.  File: bash.info, Node: Shell Expansions, Next: Redirections, Prev: Shell Parameters, Up: Basic Shell Features @@ -1447,10 +1522,10 @@ original word are removed unless they have been quoted themselves (QUOTE REMOVAL). Only brace expansion, word splitting, and filename expansion can -change the number of words of the expansion; other expansions expand a +increase the number of words of the expansion; other expansions expand a single word to a single word. The only exceptions to this are the -expansions of '"$@"' (*note Special Parameters::) and '"${NAME[@]}"' -(*note Arrays::). +expansions of '"$@"' and '$*' (*note Special Parameters::), and +'"${NAME[@]}"' and '${NAME[*]}' (*note Arrays::). After all expansions, 'quote removal' (*note Quote Removal::) is performed. @@ -1492,9 +1567,7 @@ each term. The default increment is 1 or -1 as appropriate. Brace expansion is performed before any other expansions, and any characters special to other expansions are preserved in the result. It is strictly textual. Bash does not apply any syntactic interpretation -to the context of the expansion or the text between the braces. To -avoid conflicts with parameter expansion, the string '${' is not -considered eligible for brace expansion. +to the context of the expansion or the text between the braces. A correctly-formed brace expansion must contain unquoted opening and closing braces, and at least one unquoted comma or a valid sequence @@ -1503,7 +1576,7 @@ expression. Any incorrectly formed brace expansion is left unchanged. A { or ',' may be quoted with a backslash to prevent its being considered part of a brace expression. To avoid conflicts with parameter expansion, the string '${' is not considered eligible for -brace expansion. +brace expansion, and inhibits brace expansion until the closing '}'.. This construct is typically used as shorthand when the common prefix of the strings to be generated is longer than in the above example: @@ -1574,6 +1647,11 @@ assigns the expanded value. '~-N' The string that would be displayed by 'dirs -N' + Bash also performs tilde expansion on words satisfying the conditions +of variable assignments (*note Shell Parameters::) when they appear as +arguments to simple commands. Bash does not do this, except for the +DECLARATION commands listed above, when in POSIX mode. +  File: bash.info, Node: Shell Parameter Expansion, Next: Command Substitution, Prev: Tilde Expansion, Up: Shell Expansions @@ -1599,16 +1677,17 @@ parameter with more than one digit, or when PARAMETER is followed by a character that is not to be interpreted as part of its name. If the first character of PARAMETER is an exclamation point (!), and -PARAMETER is not a NAMEREF, it introduces a level of variable -indirection. Bash uses the value of the variable formed from the rest -of PARAMETER as the name of the variable; this variable is then expanded -and that value is used in the rest of the substitution, rather than the -value of PARAMETER itself. This is known as 'indirect expansion'. If -PARAMETER is a nameref, this expands to the name of the variable -referenced by PARAMETER instead of performing the complete indirect -expansion. The exceptions to this are the expansions of ${!PREFIX*} and -${!NAME[@]} described below. The exclamation point must immediately -follow the left brace in order to introduce indirection. +PARAMETER is not a NAMEREF, it introduces a level of indirection. Bash +uses the value formed by expanding the rest of PARAMETER as the new +PARAMETER; this is then expanded and that value is used in the rest of +the expansion, rather than the expansion of the original PARAMETER. +This is known as 'indirect expansion'. The value is subject to tilde +expansion, parameter expansion, command substitution, and arithmetic +expansion. If PARAMETER is a nameref, this expands to the name of the +variable referenced by PARAMETER instead of performing the complete +indirect expansion. The exceptions to this are the expansions of +${!PREFIX*} and ${!NAME[@]} described below. The exclamation point must +immediately follow the left brace in order to introduce indirection. In each of the cases below, WORD is subject to tilde expansion, parameter expansion, command substitution, and arithmetic expansion. @@ -1668,7 +1747,7 @@ omitted, the operator tests only for existence. $ echo ${string:7} 7890abcdefgh $ echo ${string:7:0} - + $ echo ${string:7:2} 78 $ echo ${string:7:-2} @@ -1676,7 +1755,7 @@ omitted, the operator tests only for existence. $ echo ${string: -7} bcdefgh $ echo ${string: -7:0} - + $ echo ${string: -7:2} bc $ echo ${string: -7:-2} @@ -1685,7 +1764,7 @@ omitted, the operator tests only for existence. $ echo ${1:7} 7890abcdefgh $ echo ${1:7:0} - + $ echo ${1:7:2} 78 $ echo ${1:7:-2} @@ -1693,7 +1772,7 @@ omitted, the operator tests only for existence. $ echo ${1: -7} bcdefgh $ echo ${1: -7:0} - + $ echo ${1: -7:2} bc $ echo ${1: -7:-2} @@ -1702,7 +1781,7 @@ omitted, the operator tests only for existence. $ echo ${array[0]:7} 7890abcdefgh $ echo ${array[0]:7:0} - + $ echo ${array[0]:7:2} 78 $ echo ${array[0]:7:-2} @@ -1710,7 +1789,7 @@ omitted, the operator tests only for existence. $ echo ${array[0]: -7} bcdefgh $ echo ${array[0]: -7:0} - + $ echo ${array[0]: -7:2} bc $ echo ${array[0]: -7:-2} @@ -1729,7 +1808,7 @@ omitted, the operator tests only for existence. $ echo ${@:7} 7 8 9 0 a b c d e f g h $ echo ${@:7:0} - + $ echo ${@:7:2} 7 8 $ echo ${@:7:-2} @@ -1741,7 +1820,7 @@ omitted, the operator tests only for existence. $ echo ${@:0:2} ./bash 1 $ echo ${@: -7:0} - + If PARAMETER is an indexed array name subscripted by '@' or '*', the result is the LENGTH members of the array beginning with @@ -1766,7 +1845,7 @@ omitted, the operator tests only for existence. $ echo ${array[@]:0:2} 0 1 $ echo ${array[@]: -7:0} - + Substring expansion applied to an associative array produces undefined results. @@ -1803,22 +1882,23 @@ omitted, the operator tests only for existence. '${PARAMETER#WORD}' '${PARAMETER##WORD}' - The WORD is expanded to produce a pattern just as in filename - expansion (*note Filename Expansion::). If the pattern matches the - beginning of the expanded value of PARAMETER, then the result of - the expansion is the expanded value of PARAMETER with the shortest - matching pattern (the '#' case) or the longest matching pattern - (the '##' case) deleted. If PARAMETER is '@' or '*', the pattern - removal operation is applied to each positional parameter in turn, - and the expansion is the resultant list. If PARAMETER is an array - variable subscripted with '@' or '*', the pattern removal operation - is applied to each member of the array in turn, and the expansion - is the resultant list. + The WORD is expanded to produce a pattern and matched according to + the rules described below (*note Pattern Matching::). If the + pattern matches the beginning of the expanded value of PARAMETER, + then the result of the expansion is the expanded value of PARAMETER + with the shortest matching pattern (the '#' case) or the longest + matching pattern (the '##' case) deleted. If PARAMETER is '@' or + '*', the pattern removal operation is applied to each positional + parameter in turn, and the expansion is the resultant list. If + PARAMETER is an array variable subscripted with '@' or '*', the + pattern removal operation is applied to each member of the array in + turn, and the expansion is the resultant list. '${PARAMETER%WORD}' '${PARAMETER%%WORD}' - The WORD is expanded to produce a pattern just as in filename - expansion. If the pattern matches a trailing portion of the + The WORD is expanded to produce a pattern and matched according to + the rules described below (*note Pattern Matching::). If the + pattern matches If the pattern matches a trailing portion of the expanded value of PARAMETER, then the result of the expansion is the value of PARAMETER with the shortest matching pattern (the '%' case) or the longest matching pattern (the '%%' case) deleted. If @@ -1832,21 +1912,23 @@ omitted, the operator tests only for existence. The PATTERN is expanded to produce a pattern just as in filename expansion. PARAMETER is expanded and the longest match of PATTERN - against its value is replaced with STRING. If PATTERN begins with - '/', all matches of PATTERN are replaced with STRING. Normally - only the first match is replaced. If PATTERN begins with '#', it - must match at the beginning of the expanded value of PARAMETER. If - PATTERN begins with '%', it must match at the end of the expanded - value of PARAMETER. If STRING is null, matches of PATTERN are - deleted and the '/' following PATTERN may be omitted. If the - 'nocasematch' shell option (see the description of 'shopt' in *note - The Shopt Builtin::) is enabled, the match is performed without - regard to the case of alphabetic characters. If PARAMETER is '@' - or '*', the substitution operation is applied to each positional - parameter in turn, and the expansion is the resultant list. If - PARAMETER is an array variable subscripted with '@' or '*', the - substitution operation is applied to each member of the array in - turn, and the expansion is the resultant list. + against its value is replaced with STRING. The match is performed + according to the rules described below (*note Pattern Matching::). + If PATTERN begins with '/', all matches of PATTERN are replaced + with STRING. Normally only the first match is replaced. If + PATTERN begins with '#', it must match at the beginning of the + expanded value of PARAMETER. If PATTERN begins with '%', it must + match at the end of the expanded value of PARAMETER. If STRING is + null, matches of PATTERN are deleted and the '/' following PATTERN + may be omitted. If the 'nocasematch' shell option (see the + description of 'shopt' in *note The Shopt Builtin::) is enabled, + the match is performed without regard to the case of alphabetic + characters. If PARAMETER is '@' or '*', the substitution operation + is applied to each positional parameter in turn, and the expansion + is the resultant list. If PARAMETER is an array variable + subscripted with '@' or '*', the substitution operation is applied + to each member of the array in turn, and the expansion is the + resultant list. '${PARAMETER^PATTERN}' '${PARAMETER^^PATTERN}' @@ -1881,7 +1963,7 @@ omitted, the operator tests only for existence. 'E' The expansion is a string that is the value of PARAMETER with backslash escape sequences expanded as with the '$'...'' - quoting mechansim. + quoting mechanism. 'P' The expansion is a string that is the result of expanding the value of PARAMETER as if it were a prompt string (*note @@ -2046,17 +2128,22 @@ performed without regard to the case of alphabetic characters. When a pattern is used for filename expansion, the character '.' at the start of a filename or immediately following a slash must be matched -explicitly, unless the shell option 'dotglob' is set. When matching a -filename, the slash character must always be matched explicitly. In -other cases, the '.' character is not treated specially. +explicitly, unless the shell option 'dotglob' is set. The filenames '.' +and '..' must always be matched explicitly, even if 'dotglob' is set. +In other cases, the '.' character is not treated specially. + + When matching a filename, the slash character must always be matched +explicitly by a slash in the pattern, but in other matching contexts it +can be matched by a special pattern character as described below (*note +Pattern Matching::). See the description of 'shopt' in *note The Shopt Builtin::, for a description of the 'nocaseglob', 'nullglob', 'failglob', and 'dotglob' options. The 'GLOBIGNORE' shell variable may be used to restrict the set of -filenames matching a pattern. If 'GLOBIGNORE' is set, each matching -filename that also matches one of the patterns in 'GLOBIGNORE' is +file names matching a pattern. If 'GLOBIGNORE' is set, each matching +file name that also matches one of the patterns in 'GLOBIGNORE' is removed from the list of matches. If the 'nocaseglob' option is set, the matching against the patterns in 'GLOBIGNORE' is performed without regard to case. The filenames '.' and '..' are always ignored when @@ -2149,6 +2236,12 @@ of the following sub-patterns: '!(PATTERN-LIST)' Matches anything except one of the given patterns. + Complicated extended pattern matching against long strings is slow, +especially when the patterns contain alternations and the strings +contain multiple matches. Using separate matches against shorter +strings, or using arrays of strings instead of a single long string, may +be faster. +  File: bash.info, Node: Quote Removal, Prev: Filename Expansion, Up: Shell Expansions @@ -2180,7 +2273,9 @@ instead be preceded by a word of the form {VARNAME}. In this case, for each redirection operator except >&- and <&-, the shell will allocate a file descriptor greater than 10 and assign it to {VARNAME}. If >&- or <&- is preceded by {VARNAME}, the value of VARNAME defines the file -descriptor to close. +descriptor to close. If {VARNAME} is supplied, the redirection persists +beyond the scope of the command, allowing the shell programmer to manage +the file descriptor himself. In the following descriptions, if the file descriptor number is omitted, and the first character of the redirection operator is '<', the @@ -2344,12 +2439,11 @@ fashion. A variant of here documents, the format is: [N]<<< WORD - The WORD undergoes brace expansion, tilde expansion, parameter and -variable expansion, command substitution, arithmetic expansion, and -quote removal. Pathname expansion and word splitting are not performed. -The result is supplied as a single string, with a newline appended, to -the command on its standard input (or file descriptor N if N is -specified). + The WORD undergoes tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and quote removal. Pathname +expansion and word splitting are not performed. The result is supplied +as a single string, with a newline appended, to the command on its +standard input (or file descriptor N if N is specified). 3.6.8 Duplicating File Descriptors ---------------------------------- @@ -2486,11 +2580,11 @@ taken. '$PATH' is performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named 'command_not_found_handle'. If that - function exists, it is invoked with the original command and the - original command's arguments as its arguments, and the function's - exit status becomes the exit status of the shell. If that function - is not defined, the shell prints an error message and returns an - exit status of 127. + function exists, it is invoked in a separate execution environment + with the original command and the original command's arguments as + its arguments, and the function's exit status becomes the exit + status of that subshell. If that function is not defined, the + shell prints an error message and returns an exit status of 127. 4. If the search is successful, or if the command name contains one or more slashes, the shell executes the named program in a separate @@ -2783,13 +2877,13 @@ Completion Builtins::). Unless otherwise noted, each builtin command documented as accepting options preceded by '-' accepts '--' to signify the end of the options. -The ':', 'true', 'false', and 'test' builtins do not accept options and -do not treat '--' specially. The 'exit', 'logout', 'return', 'break', -'continue', 'let', and 'shift' builtins accept and process arguments -beginning with '-' without requiring '--'. Other builtins that accept -arguments but are not specified as accepting options interpret arguments -beginning with '-' as invalid options and require '--' to prevent this -interpretation. +The ':', 'true', 'false', and 'test'/'[' builtins do not accept options +and do not treat '--' specially. The 'exit', 'logout', 'return', +'break', 'continue', 'let', and 'shift' builtins accept and process +arguments beginning with '-' without requiring '--'. Other builtins +that accept arguments but are not specified as accepting options +interpret arguments beginning with '-' as invalid options and require +'--' to prevent this interpretation.  File: bash.info, Node: Bourne Shell Builtins, Next: Bash Builtins, Up: Shell Builtin Commands @@ -2904,10 +2998,11 @@ standard. If COMMAND cannot be executed for some reason, a non-interactive shell exits, unless the 'execfail' shell option is enabled. In that case, it returns failure. An interactive shell returns - failure if the file cannot be executed. If no COMMAND is - specified, redirections may be used to affect the current shell - environment. If there are no redirection errors, the return status - is zero; otherwise the return status is non-zero. + failure if the file cannot be executed. A subshell exits + unconditionally if 'exec' fails. If no COMMAND is specified, + redirections may be used to affect the current shell environment. + If there are no redirection errors, the return status is zero; + otherwise the return status is non-zero. 'exit' exit [N] @@ -2988,7 +3083,7 @@ standard. locations. The '-d' option causes the shell to forget the remembered location of each NAME. If the '-t' option is supplied, the full pathname to which each NAME corresponds is printed. If - multiple NAME arguments are supplied with '-t' the NAME is printed + multiple NAME arguments are supplied with '-t', the NAME is printed before the hashed full pathname. The '-l' option causes output to be displayed in a format that may be reused as input. If no arguments are given, or if only '-l' is supplied, information about @@ -3032,7 +3127,7 @@ standard. status of the last command executed in the function. If 'return' is executed by a trap handler, the last command used to determine the status is the last command executed before the trap handler. - if 'return' is executed during a 'DEBUG' trap, the last command + If 'return' is executed during a 'DEBUG' trap, the last command used to determine the status is the last command executed by the trap handler before 'return' was invoked. 'return' may also be used to terminate execution of a script being executed with the '.' @@ -3096,7 +3191,7 @@ standard. The expression is false. 1 argument - The expression is true if and only if the argument is not + The expression is true if, and only if, the argument is not null. 2 arguments @@ -3108,17 +3203,21 @@ standard. the expression is false. 3 arguments - The following conditions are applied in the order listed. If - the second argument is one of the binary conditional operators - (*note Bash Conditional Expressions::), the result of the - expression is the result of the binary test using the first - and third arguments as operands. The '-a' and '-o' operators - are considered binary operators when there are three - arguments. If the first argument is '!', the value is the - negation of the two-argument test using the second and third - arguments. If the first argument is exactly '(' and the third - argument is exactly ')', the result is the one-argument test - of the second argument. Otherwise, the expression is false. + The following conditions are applied in the order listed. + + 1. If the second argument is one of the binary conditional + operators (*note Bash Conditional Expressions::), the + result of the expression is the result of the binary test + using the first and third arguments as operands. The + '-a' and '-o' operators are considered binary operators + when there are three arguments. + 2. If the first argument is '!', the value is the negation + of the two-argument test using the second and third + arguments. + 3. If the first argument is exactly '(' and the third + argument is exactly ')', the result is the one-argument + test of the second argument. + 4. Otherwise, the expression is false. 4 arguments If the first argument is '!', the result is the negation of @@ -3445,11 +3544,12 @@ standard. environment. Using '+' instead of '-' turns off the attribute instead, with the - exceptions that '+a' may not be used to destroy an array variable - and '+r' will not remove the readonly attribute. When used in a - function, 'declare' makes each NAME local, as with the 'local' - command, unless the '-g' option is used. If a variable name is - followed by =VALUE, the value of the variable is set to VALUE. + exceptions that '+a' and '+A' may not be used to destroy array + variables and '+r' will not remove the readonly attribute. When + used in a function, 'declare' makes each NAME local, as with the + 'local' command, unless the '-g' option is used. If a variable + name is followed by =VALUE, the value of the variable is set to + VALUE. When using '-a' or '-A' and the compound assignment syntax to create array variables, additional attributes do not take effect @@ -3590,8 +3690,8 @@ standard. Exit a login shell, returning a status of N to the shell's parent. 'mapfile' - mapfile [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD] - [-C CALLBACK] [-c QUANTUM] [ARRAY] + mapfile [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] + [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY] Read lines from the standard input into the indexed array variable ARRAY, or from file descriptor FD if the '-u' option is supplied. @@ -3600,7 +3700,8 @@ standard. '-d' The first character of DELIM is used to terminate each input - line, rather than newline. + line, rather than newline. If DELIM is the empty string, + 'mapfile' will terminate a line when it reads a NUL character. '-n' Copy at most COUNT lines. If COUNT is 0, all lines are copied. @@ -3615,7 +3716,7 @@ standard. Read lines from file descriptor FD instead of the standard input. '-C' - Evaluate CALLBACK each time QUANTUMP lines are read. The '-c' + Evaluate CALLBACK each time QUANTUM lines are read. The '-c' option specifies QUANTUM. '-c' Specify the number of lines read between each call to @@ -3712,12 +3813,14 @@ standard. '-d DELIM' The first character of DELIM is used to terminate the input - line, rather than newline. + line, rather than newline. If DELIM is the empty string, + 'read' will terminate a line when it reads a NUL character. '-e' Readline (*note Command Line Editing::) is used to obtain the line. Readline uses the current (or default, if line editing - was not previously active) editing settings. + was not previously active) editing settings, but uses + Readline's default filename completion. '-i TEXT' If Readline is being used to read the line, TEXT is placed @@ -3746,8 +3849,8 @@ standard. '-r' If this option is given, backslash does not act as an escape character. The backslash is considered to be part of the - line. In particular, a backslash-newline pair may not be used - as a line continuation. + line. In particular, a backslash-newline pair may not then be + used as a line continuation. '-s' Silent mode. If input is coming from a terminal, characters @@ -3771,8 +3874,8 @@ standard. Read input from file descriptor FD. 'readarray' - readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD] - [-C CALLBACK] [-c QUANTUM] [ARRAY] + readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] + [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY] Read lines from the standard input into the indexed array variable ARRAY, or from file descriptor FD if the '-u' option is supplied. @@ -4236,9 +4339,10 @@ This builtin allows you to change additional shell optional behavior. option is used, those available with the '-o' option to the 'set' builtin command (*note The Set Builtin::). With no options, or with the '-p' option, a list of all settable options is displayed, - with an indication of whether or not each is set. The '-p' option - causes output to be displayed in a form that may be reused as - input. Other options have the following meanings: + with an indication of whether or not each is set; if OPTNAMES are + supplied, the output is restricted to those options. The '-p' + option causes output to be displayed in a form that may be reused + as input. Other options have the following meanings: '-s' Enable (set) each OPTNAME. @@ -4269,6 +4373,13 @@ This builtin allows you to change additional shell optional behavior. The list of 'shopt' options is: + 'assoc_expand_once' + If set, the shell suppresses multiple evaluation of + associative array subscripts during arithmetic expression + evaluation, while executing builtins that can perform variable + assignments, and while executing builtins that perform array + dereferencing. + 'autocd' If set, a command name that is the name of a directory is executed as if it were the argument to the 'cd' command. This @@ -4301,13 +4412,16 @@ This builtin allows you to change additional shell optional behavior. are stopped. 'checkwinsize' - If set, Bash checks the window size after each command and, if - necessary, updates the values of 'LINES' and 'COLUMNS'. + If set, Bash checks the window size after each external + (non-builtin) command and, if necessary, updates the values of + 'LINES' and 'COLUMNS'. This option is enabled by default. 'cmdhist' If set, Bash attempts to save all lines of a multiple-line command in the same history entry. This allows easy - re-editing of multi-line commands. + re-editing of multi-line commands. This option is enabled by + default, but only has an effect if command history is enabled + (*note Bash History Facilities::). 'compat31' If set, Bash changes its behavior to that of version 3.1 with @@ -4357,6 +4471,11 @@ This builtin allows you to change additional shell optional behavior. executed (this allows 'break' or 'continue' in a shell function to affect loops in the caller's context). + 'compat44' + If set, Bash saves the positional parameters to BASH_ARGV and + BASH_ARGC before they are used, regardless of whether or not + extended debugging mode is enabled. + 'complete_fullquote' If set, Bash quotes all shell metacharacters in filenames and directory names when performing completion. If not set, Bash @@ -4384,7 +4503,8 @@ This builtin allows you to change additional shell optional behavior. 'dotglob' If set, Bash includes filenames beginning with a '.' in the - results of filename expansion. + results of filename expansion. The filenames '.' and '..' + must always be matched explicitly, even if 'dotglob' is set. 'execfail' If this is set, a non-interactive shell will not exit if it @@ -4513,6 +4633,19 @@ This builtin allows you to change additional shell optional behavior. commands are saved to the history with embedded newlines rather than using semicolon separators where possible. + 'localvar_inherit' + If set, local variables inherit the value and attributes of a + variable of the same name that exists at a previous scope + before any new value is assigned. The NAMEREF attribute is + not inherited. + + 'localvar_unset' + If set, calling 'unset' on local variables in previous + function scopes marks them so subsequent lookups find them + unset until that function returns. This is identical to the + behavior of unsetting local variables at the current function + scope. + 'login_shell' The shell sets this option if it is started as a login shell (*note Invoking Bash::). The value may not be changed. @@ -4547,6 +4680,13 @@ This builtin allows you to change additional shell optional behavior. Programmable Completion::) are enabled. This option is enabled by default. + 'progcomp_alias' + If set, and programmable completion is enabled, Bash treats a + command name that doesn't have any completions as a possible + alias and attempts alias expansion. If it has an alias, Bash + attempts programmable completion using the command word + resulting from the expanded alias. + 'promptvars' If set, prompt strings undergo parameter expansion, command substitution, arithmetic expansion, and quote removal after @@ -4676,7 +4816,8 @@ In some cases, Bash assigns a default value to the variable. that are expanded before 'PS1' is displayed. 'PS2' - The secondary prompt string. The default value is '> '. + The secondary prompt string. The default value is '> '. 'PS2' is + expanded in the same way as 'PS1' before being displayed.  File: bash.info, Node: Bash Variables, Prev: Bourne Shell Variables, Up: Shell Variables @@ -4706,7 +4847,9 @@ Variables::). 'BASHPID' Expands to the process ID of the current Bash process. This differs from '$$' under certain circumstances, such as subshells - that do not require Bash to be re-initialized. + that do not require Bash to be re-initialized. Assignments to + 'BASHPID' have no effect. If 'BASHPID' is unset, it loses its + special properties, even if it is subsequently reset. 'BASH_ALIASES' An associative array variable whose members correspond to the @@ -4725,7 +4868,10 @@ Variables::). subroutine is executed, the number of parameters passed is pushed onto 'BASH_ARGC'. The shell sets 'BASH_ARGC' only when in extended debugging mode (see *note The Shopt Builtin:: for a description of - the 'extdebug' option to the 'shopt' builtin). + the 'extdebug' option to the 'shopt' builtin). Setting 'extdebug' + after the shell has started to execute a script, or referencing + this variable when 'extdebug' is not set, may result in + inconsistent values. 'BASH_ARGV' An array variable containing all of the parameters in the current @@ -4735,7 +4881,17 @@ Variables::). the parameters supplied are pushed onto 'BASH_ARGV'. The shell sets 'BASH_ARGV' only when in extended debugging mode (see *note The Shopt Builtin:: for a description of the 'extdebug' option to - the 'shopt' builtin). + the 'shopt' builtin). Setting 'extdebug' after the shell has + started to execute a script, or referencing this variable when + 'extdebug' is not set, may result in inconsistent values. + +'BASH_ARGV0' + When referenced, this variable expands to the name of the shell or + shell script (identical to '$0'; *Note Special Parameters::, for + the description of special parameter 0). Assignment to + 'BASH_ARGV0' causes the value assigned to also be assigned to '$0'. + If 'BASH_ARGV0' is unset, it loses its special properties, even if + it is subsequently reset. 'BASH_CMDS' An associative array variable whose members correspond to the @@ -4932,6 +5088,21 @@ Variables::). Similar to 'BASH_ENV'; used when the shell is invoked in POSIX Mode (*note Bash POSIX Mode::). +'EPOCHREALTIME' + Each time this parameter is referenced, it expands to the number of + seconds since the Unix Epoch as a floating point value with + micro-second granularity (see the documentation for the C library + function TIME for the definition of Epoch). Assignments to + 'EPOCHREALTIME' are ignored. If 'EPOCHREALTIME' is unset, it loses + its special properties, even if it is subsequently reset. + +'EPOCHSECONDS' + Each time this parameter is referenced, it expands to the number of + seconds since the Unix Epoch (see the documentation for the C + library function TIME for the definition of Epoch). Assignments to + 'EPOCHSECONDS' are ignored. If 'EPOCHSECONDS' is unset, it loses + its special properties, even if it is subsequently reset. + 'EUID' The numeric effective user id of the current user. This variable is readonly. @@ -4982,8 +5153,8 @@ Variables::). nesting level will cause the current command to abort. 'GLOBIGNORE' - A colon-separated list of patterns defining the set of filenames to - be ignored by filename expansion. If a filename matched by a + A colon-separated list of patterns defining the set of file names + to be ignored by filename expansion. If a file name matched by a filename expansion pattern also matches one of the patterns in 'GLOBIGNORE', it is removed from the list of matches. The pattern matching honors the setting of the 'extglob' shell option. @@ -5102,7 +5273,7 @@ Variables::). as the sole input. If set, the value denotes the number of consecutive 'EOF' characters that can be read as the first character on an input line before the shell will exit. If the - variable exists but does not have a numeric value (or has no value) + variable exists but does not have a numeric value, or has no value, then the default is 10. If the variable does not exist, then 'EOF' signifies the end of input to the shell. This is only in effect for interactive shells. @@ -5111,6 +5282,12 @@ Variables::). The name of the Readline initialization file, overriding the default of '~/.inputrc'. +'INSIDE_EMACS' + If Bash finds this variable in the environment when the shell + starts, it assumes that the shell is running in an Emacs shell + buffer and may disable line editing depending on the value of + 'TERM'. + 'LANG' Used to determine the locale category for any category not specifically selected with a variable starting with 'LC_'. @@ -5191,7 +5368,8 @@ Variables::). supplied. If it is set while the shell is running, Bash enables POSIX mode, as if the command set -o posix - had been executed. + had been executed. When the shell enters POSIX mode, it sets this + variable if it was not already set. 'PPID' The process ID of the shell's parent process. This variable is @@ -5218,10 +5396,12 @@ Variables::). with '#? ' 'PS4' - The value is the prompt printed before the command line is echoed - when the '-x' option is set (*note The Set Builtin::). The first - character of 'PS4' is replicated multiple times, as necessary, to - indicate multiple levels of indirection. The default is '+ '. + The value of this parameter is expanded like PS1 and the expanded + value is the prompt printed before the command line is echoed when + the '-x' option is set (*note The Set Builtin::). The first + character of the expanded value is replicated multiple times, as + necessary, to indicate multiple levels of indirection. The default + is '+ '. 'PWD' The current working directory as set by the 'cd' builtin. @@ -5356,9 +5536,12 @@ File: bash.info, Node: Invoking Bash, Next: Bash Startup Files, Up: Bash Feat 6.1 Invoking Bash ================= - bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] [ARGUMENT ...] - bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] -c STRING [ARGUMENT ...] - bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] [ARGUMENT ...] + bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o OPTION] + [-O SHOPT_OPTION] [ARGUMENT ...] + bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION] + [-O SHOPT_OPTION] -c STRING [ARGUMENT ...] + bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION] + [-O SHOPT_OPTION] [ARGUMENT ...] All of the single-character options used with the 'set' builtin (*note The Set Builtin::) can be used as options when the shell is @@ -5452,7 +5635,7 @@ invocation which are not available with the 'set' builtin. If this option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be set when invoking an - interactive shell. + interactive shell or when reading input through a pipe. '-D' A list of all double-quoted strings preceded by '$' is printed on @@ -5678,8 +5861,10 @@ several ways. 3. Bash expands and displays 'PS1' before reading the first line of a command, and expands and displays 'PS2' before reading the second - and subsequent lines of a multi-line command. Bash displays 'PS0' - after it reads a command but before executing it. + and subsequent lines of a multi-line command. Bash expands and + displays 'PS0' after it reads a command but before executing it. + See *note Controlling the Prompt::, for a complete list of prompt + string escape sequences. 4. Bash executes the value of the 'PROMPT_COMMAND' variable as a command before printing the primary prompt, '$PS1' (*note Bash @@ -5702,8 +5887,8 @@ several ways. 9. In the absence of any traps, Bash ignores 'SIGTERM' (*note Signals::). - 10. In the absence of any traps, 'SIGINT' is caught and handled - ((*note Signals::). 'SIGINT' will interrupt some shell builtins. + 10. In the absence of any traps, 'SIGINT' is caught and handled (*note + Signals::). 'SIGINT' will interrupt some shell builtins. 11. An interactive login shell sends a 'SIGHUP' to all jobs on exit if the 'huponexit' shell option has been enabled (*note Signals::). @@ -5749,18 +5934,21 @@ File: bash.info, Node: Bash Conditional Expressions, Next: Shell Arithmetic, ================================ Conditional expressions are used by the '[[' compound command and the -'test' and '[' builtin commands. - - Expressions may be unary or binary. Unary expressions are often used -to examine the status of a file. There are string operators and numeric -comparison operators as well. Bash handles several filenames specially -when they are used in expressions. If the operating system on which -Bash is running provides these special files, Bash will use them; -otherwise it will emulate them internally with this behavior: If the -FILE argument to one of the primaries is of the form '/dev/fd/N', then -file descriptor N is checked. If the FILE argument to one of the -primaries is one of '/dev/stdin', '/dev/stdout', or '/dev/stderr', file -descriptor 0, 1, or 2, respectively, is checked. +'test' and '[' builtin commands. The 'test' and '[' commands determine +their behavior based on the number of arguments; see the descriptions of +those commands for any other command-specific actions. + + Expressions may be unary or binary, and are formed from the following +primaries. Unary expressions are often used to examine the status of a +file. There are string operators and numeric comparison operators as +well. Bash handles several filenames specially when they are used in +expressions. If the operating system on which Bash is running provides +these special files, Bash will use them; otherwise it will emulate them +internally with this behavior: If the FILE argument to one of the +primaries is of the form '/dev/fd/N', then file descriptor N is checked. +If the FILE argument to one of the primaries is one of '/dev/stdin', +'/dev/stdout', or '/dev/stderr', file descriptor 0, 1, or 2, +respectively, is checked. When used with '[[', the '<' and '>' operators sort lexicographically using the current locale. The 'test' command uses ASCII ordering. @@ -5884,7 +6072,9 @@ link itself. arithmetic binary operators return true if ARG1 is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to ARG2, respectively. ARG1 and ARG2 may be - positive or negative integers. + positive or negative integers. When used with the '[[' command, + ARG1 and ARG2 are evaluated as arithmetic expressions (*note Shell + Arithmetic::).  File: bash.info, Node: Shell Arithmetic, Next: Aliases, Prev: Bash Conditional Expressions, Up: Bash Features @@ -6018,9 +6208,10 @@ the 'expand_aliases' shell option is set using 'shopt' (*note The Shopt Builtin::). The rules concerning the definition and use of aliases are somewhat -confusing. Bash always reads at least one complete line of input before -executing any of the commands on that line. Aliases are expanded when a -command is read, not when it is executed. Therefore, an alias +confusing. Bash always reads at least one complete line of input, and +all lines that make up a compound command, before executing any of the +commands on that line or the compound command. Aliases are expanded +when a command is read, not when it is executed. Therefore, an alias definition appearing on the same line as another command does not take effect until the next line of input is read. The commands following the alias definition on that line are not affected by the new alias. This @@ -6122,9 +6313,15 @@ quotes. The 'unset' builtin is used to destroy arrays. 'unset NAME[SUBSCRIPT]' destroys the array element at index SUBSCRIPT. Negative subscripts to indexed arrays are interpreted as described -above. Care must be taken to avoid unwanted side effects caused by -filename expansion. 'unset NAME', where NAME is an array, removes the -entire array. A subscript of '*' or '@' also removes the entire array. +above. Unsetting the last element of an array variable does not unset +the variable. 'unset NAME', where NAME is an array, removes the entire +array. A subscript of '*' or '@' also removes the entire array. + + When using a variable name with a subscript as an argument to a +command, such as with 'unset', without using the word expansion syntax +described above, the argument is subject to the shell's filename +expansion. If filename expansion is not desired, the argument should be +quoted. The 'declare', 'local', and 'readonly' builtins each accept a '-a' option to specify an indexed array and a '-A' option to specify an @@ -6245,7 +6442,7 @@ non-null value, then the value is executed just as if it had been typed on the command line. In addition, the following table describes the special characters -which can appear in the prompt variables 'PS1' to 'PS4': +which can appear in the prompt variables 'PS0', 'PS1', 'PS2', and 'PS4': '\a' A bell character. @@ -6315,7 +6512,8 @@ of commands executed during the current shell session. After the string is decoded, it is expanded via parameter expansion, command substitution, arithmetic expansion, and quote removal, subject -to the value of the 'promptvars' shell option (*note Bash Builtins::). +to the value of the 'promptvars' shell option (*note The Shopt +Builtin::).  File: bash.info, Node: The Restricted Shell, Next: Bash POSIX Mode, Prev: Controlling the Prompt, Up: Bash Features @@ -6373,212 +6571,224 @@ startup files. The following list is what's changed when 'POSIX mode' is in effect: - 1. When a command in the hash table no longer exists, Bash will + 1. Bash ensures that the 'POSIXLY_CORRECT' variable is set. + + 2. When a command in the hash table no longer exists, Bash will re-search '$PATH' to find the new location. This is also available with 'shopt -s checkhash'. - 2. The message printed by the job control code and builtins when a job + 3. The message printed by the job control code and builtins when a job exits with a non-zero status is 'Done(status)'. - 3. The message printed by the job control code and builtins when a job + 4. The message printed by the job control code and builtins when a job is stopped is 'Stopped(SIGNAME)', where SIGNAME is, for example, 'SIGTSTP'. - 4. Alias expansion is always enabled, even in non-interactive shells. + 5. Alias expansion is always enabled, even in non-interactive shells. - 5. Reserved words appearing in a context where reserved words are + 6. Reserved words appearing in a context where reserved words are recognized do not undergo alias expansion. - 6. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number + 7. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number and '!!' to '!' are enabled, and parameter expansion is performed on the values of 'PS1' and 'PS2' regardless of the setting of the 'promptvars' option. - 7. The POSIX startup files are executed ('$ENV') rather than the + 8. The POSIX startup files are executed ('$ENV') rather than the normal Bash files. - 8. Tilde expansion is only performed on assignments preceding a + 9. Tilde expansion is only performed on assignments preceding a command name, rather than on all assignment statements on the line. - 9. The default history file is '~/.sh_history' (this is the default + 10. The default history file is '~/.sh_history' (this is the default value of '$HISTFILE'). - 10. Redirection operators do not perform filename expansion on the + 11. Redirection operators do not perform filename expansion on the word in the redirection unless the shell is interactive. - 11. Redirection operators do not perform word splitting on the word in + 12. Redirection operators do not perform word splitting on the word in the redirection. - 12. Function names must be valid shell 'name's. That is, they may not + 13. Function names must be valid shell 'name's. That is, they may not contain characters other than letters, digits, and underscores, and may not start with a digit. Declaring a function with an invalid name causes a fatal syntax error in non-interactive shells. - 13. Function names may not be the same as one of the POSIX special + 14. Function names may not be the same as one of the POSIX special builtins. - 14. POSIX special builtins are found before shell functions during + 15. POSIX special builtins are found before shell functions during command lookup. - 15. When printing shell function definitions (e.g., by 'type'), Bash + 16. When printing shell function definitions (e.g., by 'type'), Bash does not print the 'function' keyword. - 16. Literal tildes that appear as the first character in elements of + 17. Literal tildes that appear as the first character in elements of the 'PATH' variable are not expanded as described above under *note Tilde Expansion::. - 17. The 'time' reserved word may be used by itself as a command. When + 18. The 'time' reserved word may be used by itself as a command. When used in this way, it displays timing statistics for the shell and its completed children. The 'TIMEFORMAT' variable controls the format of the timing information. - 18. When parsing and expanding a ${...} expansion that appears within + 19. When parsing and expanding a ${...} expansion that appears within double quotes, single quotes are no longer special and cannot be used to quote a closing brace or other special character, unless the operator is one of those defined to perform pattern removal. In this case, they do not have to appear as matched pairs. - 19. The parser does not recognize 'time' as a reserved word if the + 20. The parser does not recognize 'time' as a reserved word if the next token begins with a '-'. - 20. The '!' character does not introduce history expansion within a + 21. The '!' character does not introduce history expansion within a double-quoted string, even if the 'histexpand' option is enabled. - 21. If a POSIX special builtin returns an error status, a + 22. If a POSIX special builtin returns an error status, a non-interactive shell exits. The fatal errors are those listed in the POSIX standard, and include things like passing incorrect options, redirection errors, variable assignment errors for assignments preceding the command name, and so on. - 22. A non-interactive shell exits with an error status if a variable + 23. A non-interactive shell exits with an error status if a variable assignment error occurs when no command name follows the assignment statements. A variable assignment error occurs, for example, when trying to assign a value to a readonly variable. - 23. A non-interactive shell exits with an error status if a variable + 24. A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a special builtin, but not with any other simple command. - 24. A non-interactive shell exits with an error status if the + 25. A non-interactive shell exits with an error status if the iteration variable in a 'for' statement or the selection variable in a 'select' statement is a readonly variable. - 25. Non-interactive shells exit if FILENAME in '.' FILENAME is not + 26. Non-interactive shells exit if FILENAME in '.' FILENAME is not found. - 26. Non-interactive shells exit if a syntax error in an arithmetic + 27. Non-interactive shells exit if a syntax error in an arithmetic expansion results in an invalid expression. - 27. Non-interactive shells exit if a parameter expansion error occurs. + 28. Non-interactive shells exit if a parameter expansion error occurs. - 28. Non-interactive shells exit if there is a syntax error in a script + 29. Non-interactive shells exit if there is a syntax error in a script read with the '.' or 'source' builtins, or in a string processed by the 'eval' builtin. - 29. Process substitution is not available. + 30. Process substitution is not available. - 30. While variable indirection is available, it may not be applied to + 31. While variable indirection is available, it may not be applied to the '#' and '?' special parameters. - 31. When expanding the '*' special parameter in a pattern context + 32. When expanding the '*' special parameter in a pattern context where the expansion is double-quoted does not treat the '$*' as if it were double-quoted. - 32. Assignment statements preceding POSIX special builtins persist in + 33. Assignment statements preceding POSIX special builtins persist in the shell environment after the builtin completes. - 33. Assignment statements preceding shell function calls persist in + 34. Assignment statements preceding shell function calls persist in the shell environment after the function returns, as if a POSIX special builtin command had been executed. - 34. The 'command' builtin does not prevent builtins that take + 35. The 'command' builtin does not prevent builtins that take assignment statements as arguments from expanding them as assignment statements; when not in POSIX mode, assignment builtins lose their assignment statement expansion properties when preceded by 'command'. - 35. The 'bg' builtin uses the required format to describe each job + 36. The 'bg' builtin uses the required format to describe each job placed in the background, which does not include an indication of whether the job is the current or previous job. - 36. The output of 'kill -l' prints all the signal names on a single + 37. The output of 'kill -l' prints all the signal names on a single line, separated by spaces, without the 'SIG' prefix. - 37. The 'kill' builtin does not accept signal names with a 'SIG' + 38. The 'kill' builtin does not accept signal names with a 'SIG' prefix. - 38. The 'export' and 'readonly' builtin commands display their output + 39. The 'export' and 'readonly' builtin commands display their output in the format required by POSIX. - 39. The 'trap' builtin displays signal names without the leading + 40. The 'trap' builtin displays signal names without the leading 'SIG'. - 40. The 'trap' builtin doesn't check the first argument for a possible + 41. The 'trap' builtin doesn't check the first argument for a possible signal specification and revert the signal handling to the original disposition if it is, unless that argument consists solely of digits and is a valid signal number. If users want to reset the handler for a given signal to the original disposition, they should use '-' as the first argument. - 41. The '.' and 'source' builtins do not search the current directory + 42. The '.' and 'source' builtins do not search the current directory for the filename argument if it is not found by searching 'PATH'. - 42. Enabling POSIX mode has the effect of setting the + 43. Enabling POSIX mode has the effect of setting the 'inherit_errexit' option, so subshells spawned to execute command substitutions inherit the value of the '-e' option from the parent shell. When the 'inherit_errexit' option is not enabled, Bash clears the '-e' option in such subshells. - 43. When the 'alias' builtin displays alias definitions, it does not + 44. Enabling POSIX mode has the effect of setting the 'shift_verbose' + option, so numeric arguments to 'shift' that exceed the number of + positional parameters will result in an error message. + + 45. When the 'alias' builtin displays alias definitions, it does not display them with a leading 'alias ' unless the '-p' option is supplied. - 44. When the 'set' builtin is invoked without options, it does not + 46. When the 'set' builtin is invoked without options, it does not display shell function names and definitions. - 45. When the 'set' builtin is invoked without options, it displays + 47. When the 'set' builtin is invoked without options, it displays variable values without quotes, unless they contain shell metacharacters, even if the result contains nonprinting characters. - 46. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname + 48. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname constructed from '$PWD' and the directory name supplied as an argument does not refer to an existing directory, 'cd' will fail instead of falling back to PHYSICAL mode. - 47. The 'pwd' builtin verifies that the value it prints is the same as + 49. When the 'cd' builtin cannot change a directory because the length + of the pathname constructed from '$PWD' and the directory name + supplied as an argument exceeds PATH_MAX when all symbolic links + are expanded, 'cd' will fail instead of attempting to use only the + supplied directory name. + + 50. The 'pwd' builtin verifies that the value it prints is the same as the current directory, even if it is not asked to check the file system with the '-P' option. - 48. When listing the history, the 'fc' builtin does not include an + 51. When listing the history, the 'fc' builtin does not include an indication of whether or not a history entry has been modified. - 49. The default editor used by 'fc' is 'ed'. + 52. The default editor used by 'fc' is 'ed'. - 50. The 'type' and 'command' builtins will not report a non-executable + 53. The 'type' and 'command' builtins will not report a non-executable file as having been found, though the shell will attempt to execute such a file if it is the only so-named file found in '$PATH'. - 51. The 'vi' editing mode will invoke the 'vi' editor directly when + 54. The 'vi' editing mode will invoke the 'vi' editor directly when the 'v' command is run, instead of checking '$VISUAL' and '$EDITOR'. - 52. When the 'xpg_echo' option is enabled, Bash does not attempt to + 55. When the 'xpg_echo' option is enabled, Bash does not attempt to interpret any arguments to 'echo' as options. Each argument is displayed, after escape characters are converted. - 53. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' + 56. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' and '-f' options. - 54. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not + 57. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not interrupt the 'wait' builtin and cause it to return immediately. The trap command is run once for each child that exits. - 55. The 'read' builtin may be interrupted by a signal for which a trap + 58. The 'read' builtin may be interrupted by a signal for which a trap has been set. If Bash receives a trapped signal while executing 'read', the trap handler executes and 'read' returns an exit status greater than 128. - 56. Bash removes an exited background process's status from the list + 59. Bash removes an exited background process's status from the list of such statuses after the 'wait' builtin is used to obtain it. There is other POSIX behavior that Bash does not implement by default @@ -6699,6 +6909,11 @@ command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, Bash does not print another warning, and any stopped jobs are terminated. + When the shell is waiting for a job or process using the 'wait' +builtin, and job control is enabled, 'wait' will return when the job +changes state. The '-f' option will force 'wait' to wait until the job +or process terminates before returning. +  File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Prev: Job Control Basics, Up: Job Control @@ -6775,7 +6990,7 @@ File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Pre option is encountered. 'wait' - wait [-n] [JOBSPEC or PID ...] + wait [-fn] [JOBSPEC or PID ...] Wait until the child process specified by each process ID PID or job specification JOBSPEC exits and return the exit status of the @@ -6783,7 +6998,10 @@ File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Pre the job are waited for. If no arguments are given, all currently active child processes are waited for, and the return status is zero. If the '-n' option is supplied, 'wait' waits for any job to - terminate and returns its exit status. If neither JOBSPEC nor PID + terminate and returns its exit status. If the '-f' option is + supplied, and job control is enabled, 'wait' forces each PID or + JOBSPEC to terminate before returning its status, intead of + returning when it changes status. If neither JOBSPEC nor PID specifies an active child process of the shell, the return status is 127. @@ -7228,7 +7446,7 @@ Variable Settings If set to 'on', and COMPLETION-IGNORE-CASE is enabled, Readline treats hyphens ('-') and underscores ('_') as equivalent when performing case-insensitive filename matching - and completion. + and completion. The default value is 'off'. 'completion-prefix-display-length' The length in characters of the common prefix of a list of @@ -7272,14 +7490,14 @@ Variable Settings This variable can be set to either 'emacs' or 'vi'. 'emacs-mode-string' - This string is displayed immediately before the last line of - the primary prompt when emacs editing mode is active. The - value is expanded like a key binding, so the standard set of - meta- and control prefixes and backslash escape sequences is - available. Use the '\1' and '\2' escapes to begin and end - sequences of non-printing characters, which can be used to - embed a terminal control sequence into the mode string. The - default is '@'. + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when emacs editing mode is active. The value is + expanded like a key binding, so the standard set of meta- and + control prefixes and backslash escape sequences is available. + Use the '\1' and '\2' escapes to begin and end sequences of + non-printing characters, which can be used to embed a terminal + control sequence into the mode string. The default is '@'. 'enable-bracketed-paste' When set to 'On', Readline will configure the terminal in a @@ -7343,13 +7561,13 @@ Variable Settings 'keymap' Sets Readline's idea of the current keymap for key binding - commands. Acceptable 'keymap' names are 'emacs', + commands. Built-in 'keymap' names are 'emacs', 'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move', 'vi-command', and 'vi-insert'. 'vi' is equivalent to 'vi-command' ('vi-move' is also a synonym); 'emacs' is - equivalent to 'emacs-standard'. The default value is 'emacs'. - The value of the 'editing-mode' variable also affects the - default keymap. + equivalent to 'emacs-standard'. Applications may add + additional names. The default value is 'emacs'. The value of + the 'editing-mode' variable also affects the default keymap. 'keyseq-timeout' Specifies the duration Readline will wait for a character when @@ -7431,10 +7649,10 @@ Variable Settings default value is 'off'. 'show-mode-in-prompt' - If set to 'on', add a character to the beginning of the prompt + If set to 'on', add a string to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi - insertion. The mode strings are user-settable. The default - value is 'off'. + insertion. The mode strings are user-settable (e.g., + EMACS-MODE-STRING). The default value is 'off'. 'skip-completed-text' If set to 'on', this alters the default completion behavior @@ -7450,24 +7668,26 @@ Variable Settings 'off'. 'vi-cmd-mode-string' - This string is displayed immediately before the last line of - the primary prompt when vi editing mode is active and in - command mode. The value is expanded like a key binding, so - the standard set of meta- and control prefixes and backslash - escape sequences is available. Use the '\1' and '\2' escapes - to begin and end sequences of non-printing characters, which - can be used to embed a terminal control sequence into the mode - string. The default is '(cmd)'. + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when vi editing mode is active and in command mode. + The value is expanded like a key binding, so the standard set + of meta- and control prefixes and backslash escape sequences + is available. Use the '\1' and '\2' escapes to begin and end + sequences of non-printing characters, which can be used to + embed a terminal control sequence into the mode string. The + default is '(cmd)'. 'vi-ins-mode-string' - This string is displayed immediately before the last line of - the primary prompt when vi editing mode is active and in - insertion mode. The value is expanded like a key binding, so - the standard set of meta- and control prefixes and backslash - escape sequences is available. Use the '\1' and '\2' escapes - to begin and end sequences of non-printing characters, which - can be used to embed a terminal control sequence into the mode - string. The default is '(ins)'. + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when vi editing mode is active and in insertion mode. + The value is expanded like a key binding, so the standard set + of meta- and control prefixes and backslash escape sequences + is available. Use the '\1' and '\2' escapes to begin and end + sequences of non-printing characters, which can be used to + embed a terminal control sequence into the mode string. The + default is '(ins)'. 'visible-stats' If set to 'on', a character denoting a file's type is appended @@ -7502,7 +7722,7 @@ Key Bindings Meta-Rubout: backward-kill-word Control-o: "> output" - In the above example, 'C-u' is bound to the function + In the example above, 'C-u' is bound to the function 'universal-argument', 'M-DEL' is bound to the function 'backward-kill-word', and 'C-o' is bound to run the macro expressed on the right hand side (that is, to insert the text @@ -7594,8 +7814,9 @@ four parser directives used. '$if' The '$if' construct allows bindings to be made based on the editing mode, the terminal being used, or the application using Readline. - The text of the test extends to the end of the line; no characters - are required to isolate it. + The text of the test, after any comparison operator, extends to the + end of the line; unless otherwise noted, no characters are required + to isolate it. 'mode' The 'mode=' form of the '$if' directive is used to test @@ -7612,6 +7833,22 @@ four parser directives used. the portion of the terminal name before the first '-'. This allows 'sun' to match both 'sun' and 'sun-cmd', for instance. + 'version' + The 'version' test may be used to perform comparisons against + specific Readline versions. The 'version' expands to the + current Readline version. The set of comparison operators + includes '=' (and '=='), '!=', '<=', '>=', '<', and '>'. The + version number supplied on the right side of the operator + consists of a major version number, an optional decimal point, + and an optional minor version (e.g., '7.1'). If the minor + version is omitted, it is assumed to be '0'. The operator may + be separated from the string 'version' and from the version + number argument by whitespace. The following example sets a + variable if the Readline version being used is 7.0 or newer: + $if version >= 7.0 + set show-mode-in-prompt on + $endif + 'application' The APPLICATION construct is used to include application-specific settings. Each program using the @@ -7625,6 +7862,20 @@ four parser directives used. "\C-xq": "\eb\"\ef\"" $endif + 'variable' + The VARIABLE construct provides simple equality tests for + Readline variables and values. The permitted comparison + operators are '=', '==', and '!='. The variable name must be + separated from the comparison operator by whitespace; the + operator may be separated from the value on the right hand + side by whitespace. Both string and boolean variables may be + tested. Boolean variables must be tested against the values + ON and OFF. The following example is equivalent to the + 'mode=emacs' test described above: + $if editing-mode == emacs + set show-mode-in-prompt on + $endif + '$endif' This command, as seen in the previous example, terminates an '$if' command. @@ -7810,6 +8061,20 @@ File: bash.info, Node: Commands For Moving, Next: Commands For History, Up: B Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. +'previous-screen-line ()' + Attempt to move point to the same physical screen column on the + previous physical screen line. This will not have the desired + effect if the current Readline line does not take up more than one + physical line or if point is not greater than the length of the + prompt plus the screen width. + +'next-screen-line ()' + Attempt to move point to the same physical screen column on the + next physical screen line. This will not have the desired effect + if the current Readline line does not take up more than one + physical line or if the length of the current Readline line is not + greater than the length of the prompt plus the screen width. + 'clear-screen (C-l)' Clear the screen and redraw the current line, leaving the current line at the top of the screen. @@ -7876,13 +8141,13 @@ File: bash.info, Node: Commands For History, Next: Commands For Text, Prev: C string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. -'history-substr-search-forward ()' +'history-substring-search-forward ()' Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. -'history-substr-search-backward ()' +'history-substring-search-backward ()' Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a @@ -7948,7 +8213,7 @@ File: bash.info, Node: Commands For Text, Next: Commands For Killing, Prev: C assigned by default. It allows Readline to insert the pasted text as a single unit without treating each character as if it had been read from the keyboard. The characters are inserted as if each one - was bound to 'self-insert') instead of executing any editing + was bound to 'self-insert' instead of executing any editing commands. 'transpose-chars (C-t)' @@ -8226,9 +8491,10 @@ File: bash.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bin Abort the current editing command and ring the terminal's bell (subject to the setting of 'bell-style'). -'do-uppercase-version (M-a, M-b, M-X, ...)' - If the metafied character X is lowercase, run the command that is - bound to the corresponding uppercase character. +'do-lowercase-version (M-A, M-B, M-X, ...)' + If the metafied character X is upper case, run the command that is + bound to the corresponding metafied lower case character. The + behavior is undefined if X is already lower case. 'prefix-meta ()' Metafy the next character typed. This is for keyboards without a @@ -8347,10 +8613,11 @@ File: bash.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bin 'operate-and-get-next (C-o)' Accept the current line for execution and fetch the next line - relative to the current line from the history for editing. Any - argument is ignored. + relative to the current line from the history for editing. A + numeric argument, if supplied, specifies the history entry to use + instead of the current line. -'edit-and-execute-command (C-xC-e)' +'edit-and-execute-command (C-x C-e)' Invoke an editor on the current command line, and execute the result as shell commands. Bash attempts to invoke '$VISUAL', '$EDITOR', and 'emacs' as the editor, in that order. @@ -8395,7 +8662,10 @@ command word is a full pathname, a compspec for the full pathname is searched for first. If no compspec is found for the full pathname, an attempt is made to find a compspec for the portion following the final slash. If those searches do not result in a compspec, any compspec -defined with the '-D' option to 'complete' is used as the default. +defined with the '-D' option to 'complete' is used as the default. If +there is no default compspec, Bash attempts alias expansion on the +command word as a final resort, and attempts to find a compspec for the +command word from any successful expansion Once a compspec has been found, it is used to generate the list of matching words. If a compspec is not found, the default Bash completion @@ -8414,13 +8684,15 @@ used to filter the matches, but the 'FIGNORE' shell variable is used. Next, the string specified as the argument to the '-W' option is considered. The string is first split using the characters in the 'IFS' -special variable as delimiters. Shell quoting is honored. Each word is -then expanded using brace expansion, tilde expansion, parameter and -variable expansion, command substitution, and arithmetic expansion, as -described above (*note Shell Expansions::). The results are split using -the rules described above (*note Word Splitting::). The results of the -expansion are prefix-matched against the word being completed, and the -matching words become the possible completions. +special variable as delimiters. Shell quoting is honored within the +string, in order to provide a mechanism for the words to contain shell +metacharacters or characters in the value of 'IFS'. Each word is then +expanded using brace expansion, tilde expansion, parameter and variable +expansion, command substitution, and arithmetic expansion, as described +above (*note Shell Expansions::). The results are split using the rules +described above (*note Word Splitting::). The results of the expansion +are prefix-matched against the word being completed, and the matching +words become the possible completions. After these matches have been generated, any shell function or command specified with the '-F' and '-C' options is invoked. When the @@ -8540,26 +8812,34 @@ happening. no matches were generated. 'complete' - complete [-abcdefgjksuv] [-o COMP-OPTION] [-DE] [-A ACTION] [-G GLOBPAT] [-W WORDLIST] - [-F FUNCTION] [-C COMMAND] [-X FILTERPAT] + complete [-abcdefgjksuv] [-o COMP-OPTION] [-DEI] [-A ACTION] [-G GLOBPAT] + [-W WORDLIST] [-F FUNCTION] [-C COMMAND] [-X FILTERPAT] [-P PREFIX] [-S SUFFIX] NAME [NAME ...] - complete -pr [-DE] [NAME ...] + complete -pr [-DEI] [NAME ...] Specify how arguments to each NAME should be completed. If the '-p' option is supplied, or if no options are supplied, existing completion specifications are printed in a way that allows them to be reused as input. The '-r' option removes a completion specification for each NAME, or, if no NAMEs are supplied, all - completion specifications. The '-D' option indicates that the - remaining options and actions should apply to the "default" command + completion specifications. The '-D' option indicates that other + supplied options and actions should apply to the "default" command completion; that is, completion attempted on a command for which no completion has previously been defined. The '-E' option indicates - that the remaining options and actions should apply to "empty" + that other supplied options and actions should apply to "empty" command completion; that is, completion attempted on a blank line. + The '-I' option indicates that other supplied options and actions + should apply to completion on the inital non-assignment word on the + line, or after a command delimiter such as ';' or '|', which is + usually command name completion. If multiple options are supplied, + the '-D' option takes precedence over '-E', and both take + precedence over '-I'. If any of '-D', '-E', or '-I' are supplied, + any other NAME arguments are ignored; these completions only apply + to the case specified by the option. The process of applying these completion specifications when word completion is attempted is described above (*note Programmable - Completion::). The '-D' option takes precedence over '-E'. + Completion::). Other options, if specified, have the following meanings. The arguments to the '-G', '-W', and '-X' options (and, if necessary, @@ -8586,7 +8866,7 @@ happening. 'filenames' Tell Readline that the compspec generates filenames, so it can perform any filename-specific processing (like - adding a slash to directory names quoting special + adding a slash to directory names, quoting special characters, or suppressing trailing spaces). This option is intended to be used with shell functions specified with '-F'. @@ -8739,20 +9019,24 @@ happening. completion specification. 'compopt' - compopt [-o OPTION] [-DE] [+o OPTION] [NAME] + compopt [-o OPTION] [-DEI] [+o OPTION] [NAME] Modify completion options for each NAME according to the OPTIONs, or for the currently-executing completion if no NAMEs are supplied. If no OPTIONs are given, display the completion options for each NAME or the current completion. The possible values of OPTION are those valid for the 'complete' builtin described above. The '-D' - option indicates that the remaining options should apply to the + option indicates that other supplied options should apply to the "default" command completion; that is, completion attempted on a command for which no completion has previously been defined. The - '-E' option indicates that the remaining options should apply to + '-E' option indicates that other supplied options should apply to "empty" command completion; that is, completion attempted on a - blank line. + blank line. The '-I' option indicates that other supplied options + should apply to completion on the inital non-assignment word on the + line, or after a command delimiter such as ';' or '|', which is + usually command name completion. - The '-D' option takes precedence over '-E'. + If multiple options are supplied, the '-D' option takes precedence + over '-E', and both take precedence over '-I' The return value is true unless an invalid option is supplied, an attempt is made to modify the options for a NAME for which no @@ -8770,10 +9054,9 @@ function and bind it to a particular command using 'complete -F'. The following function provides completions for the 'cd' builtin. It is a reasonably good example of what shell functions must do when used -for completion. This function uses the word passsed as '$2' to -determine the directory name to complete. You can also use the -'COMP_WORDS' array variable; the current word is indexed by the -'COMP_CWORD' variable. +for completion. This function uses the word passed as '$2' to determine +the directory name to complete. You can also use the 'COMP_WORDS' array +variable; the current word is indexed by the 'COMP_CWORD' variable. The function relies on the 'complete' and 'compgen' builtins to do much of the work, adding only the things that the Bash 'cd' does beyond @@ -8797,7 +9080,7 @@ retrieves the completions from there when the function returns. local cur _skipdot _cdpath local i j k - # Tilde expansion, with side effect of expanding tilde to full pathname + # Tilde expansion, which also expands tilde to full pathname case "$2" in \~*) eval cur="$2" ;; *) cur=$2 ;; @@ -8942,7 +9225,7 @@ of a multi-line command in the same history entry, adding semicolons where necessary to preserve syntactic correctness. The 'lithist' shell option causes the shell to save the command with embedded newlines instead of semicolons. The 'shopt' builtin is used to set these -options. *Note Bash Builtins::, for a description of 'shopt'. +options. *Note The Shopt Builtin::, for a description of 'shopt'.  File: bash.info, Node: Bash History Builtins, Next: History Interaction, Prev: Bash History Facilities, Up: Using History Interactively @@ -8962,8 +9245,8 @@ history file. FIRST and LAST may be specified as a string (to locate the most recent command beginning with that string) or as a number (an index into the history list, where a negative number is used as an offset - from the current command number). If LAST is not specified it is - set to FIRST. If FIRST is not specified it is set to the previous + from the current command number). If LAST is not specified, it is + set to FIRST. If FIRST is not specified, it is set to the previous command for editing and -16 for listing. If the '-l' flag is given, the commands are listed on standard output. The '-n' flag suppresses the command numbers when listing. The '-r' flag @@ -8987,6 +9270,7 @@ history file. history [N] history -c history -d OFFSET + history -d START-END history [-anrw] [FILENAME] history -ps ARG @@ -9005,8 +9289,18 @@ history file. options to replace the history list completely. '-d OFFSET' - Delete the history entry at position OFFSET. OFFSET should be - specified as it appears when the history is displayed. + Delete the history entry at position OFFSET. If OFFSET is + positive, it should be specified as it appears when the + history is displayed. If OFFSET is negative, it is + interpreted as relative to one greater than the last history + position, so negative indices count back from the end of the + history, and an index of '-1' refers to the current 'history + -d' command. + + '-d START-END' + Delete the history entries between positions START and END, + inclusive. Positive and negative values for START and END are + interpreted as described above. '-a' Append the new history lines to the history file. These are @@ -9055,7 +9349,9 @@ a previous command into the current input line, or fix errors in previous commands quickly. History expansion is performed immediately after a complete line is -read, before the shell breaks it into words. +read, before the shell breaks it into words, and is performed on each +line individually. Bash attempts to inform the history expansion +functions about quoting still in effect from previous lines. History expansion takes place in two parts. The first is to determine which line from the history list should be used during @@ -9066,20 +9362,30 @@ are called "words". Various "modifiers" are available to manipulate the selected words. The line is broken into words in the same fashion that Bash does, so that several words surrounded by quotes are considered one word. History expansions are introduced by the appearance of the -history expansion character, which is '!' by default. Only '\' and ''' -may be used to escape the history expansion character, but the history -expansion character is also treated as quoted if it immediately precedes -the closing double quote in a double-quoted string. - - Several shell options settable with the 'shopt' builtin (*note Bash -Builtins::) may be used to tailor the behavior of history expansion. If -the 'histverify' shell option is enabled, and Readline is being used, -history substitutions are not immediately passed to the shell parser. -Instead, the expanded line is reloaded into the Readline editing buffer -for further modification. If Readline is being used, and the -'histreedit' shell option is enabled, a failed history expansion will be -reloaded into the Readline editing buffer for correction. The '-p' -option to the 'history' builtin command may be used to see what a +history expansion character, which is '!' by default. + + History expansion implements shell-like quoting conventions: a +backslash can be used to remove the special handling for the next +character; single quotes enclose verbatim sequences of characters, and +can be used to inhibit history expansion; and characters enclosed within +double quotes may be subject to history expansion, since backslash can +escape the history expansion character, but single quotes may not, since +they are not treated specially within double quotes. + + When using the shell, only '\' and ''' may be used to escape the +history expansion character, but the history expansion character is also +treated as quoted if it immediately precedes the closing double quote in +a double-quoted string. + + Several shell options settable with the 'shopt' builtin (*note The +Shopt Builtin::) may be used to tailor the behavior of history +expansion. If the 'histverify' shell option is enabled, and Readline is +being used, history substitutions are not immediately passed to the +shell parser. Instead, the expanded line is reloaded into the Readline +editing buffer for further modification. If Readline is being used, and +the 'histreedit' shell option is enabled, a failed history expansion +will be reloaded into the Readline editing buffer for correction. The +'-p' option to the 'history' builtin command may be used to see what a history expansion will do before using it. The '-s' option to the 'history' builtin may be used to add commands to the end of the history list without actually executing them, so that they are available for @@ -9319,10 +9625,24 @@ don't want to keep, you may remove or edit it. To find out more about the options and arguments that the 'configure' script understands, type - bash-2.04$ ./configure --help + bash-4.2$ ./configure --help at the Bash prompt in your Bash source directory. + If you want to build Bash in a directory separate from the source +directory - to build for multiple architectures, for example - just use +the full path to the configure script. The following commands will +build bash in a directory under '/usr/local/build' from the source code +in '/usr/local/src/bash-4.4': + + mkdir /usr/local/build/bash-4.4 + cd /usr/local/build/bash-4.4 + bash /usr/local/src/bash-4.4/configure + make + + See *note Compiling For Multiple Architectures:: for more information +about building in a directory separate from the source. + If you need to do unusual things to compile Bash, please try to figure out how 'configure' could check whether or not to do them, and mail diffs or instructions to so they can be @@ -9369,10 +9689,10 @@ time, by placing the object files for each architecture in their own directory. To do this, you must use a version of 'make' that supports the 'VPATH' variable, such as GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run the 'configure' -script from the source directory. You may need to supply the -'--srcdir=PATH' argument to tell 'configure' where the source files are. -'configure' automatically checks for the source code in the directory -that 'configure' is in and in '..'. +script from the source directory (*note Basic Installation::). You may +need to supply the '--srcdir=PATH' argument to tell 'configure' where +the source files are. 'configure' automatically checks for the source +code in the directory that 'configure' is in and in '..'. If you have to use a 'make' that does not supports the 'VPATH' variable, you can compile Bash for one architecture at a time in the @@ -9538,8 +9858,8 @@ and linked, rather than changing run-time features. '--enable-largefile' Enable support for large files - (http://www.sas.com/standards/large_file/x_open.20Mar96.html) if - the operating system requires special compiler options to build + (http://www.unix.org/version2/whatsnew/lfs20mar.html) if the + operating system requires special compiler options to build programs which can access large files. This is enabled by default, if the operating system provides large file support. @@ -9611,6 +9931,12 @@ unless the operating system does not provide the necessary support. '--enable-debugger' Include support for the bash debugger (distributed separately). +'--enable-dev-fd-stat-broken' + If calling 'stat' on /dev/fd/N returns different results than + calling 'fstat' on file descriptor N, supply this option to enable + a workaround. This has implications for conditional commands that + test file attributes. + '--enable-direxpand-default' Cause the 'direxpand' shell option (*note The Shopt Builtin::) to be enabled by default when the shell starts. It is normally @@ -9681,7 +10007,7 @@ unless the operating system does not provide the necessary support. '--enable-prompt-string-decoding' Turn on the interpretation of a number of backslash-escaped - characters in the '$PS1', '$PS2', '$PS3', and '$PS4' prompt + characters in the '$PS0', '$PS1', '$PS2', and '$PS4' prompt strings. See *note Controlling the Prompt::, for a complete list of prompt string escape sequences. @@ -10636,7 +10962,7 @@ D.1 Index of Shell Builtin Commands * :: Bourne Shell Builtins. (line 11) * [: Bourne Shell Builtins. - (line 268) + (line 269) * alias: Bash Builtins. (line 11) * bg: Job Control Builtins. (line 7) @@ -10653,77 +10979,77 @@ D.1 Index of Shell Builtin Commands * complete: Programmable Completion Builtins. (line 30) * compopt: Programmable Completion Builtins. - (line 229) + (line 237) * continue: Bourne Shell Builtins. (line 85) * declare: Bash Builtins. (line 148) * dirs: Directory Stack Builtins. (line 7) * disown: Job Control Builtins. - (line 89) -* echo: Bash Builtins. (line 245) -* enable: Bash Builtins. (line 294) + (line 92) +* echo: Bash Builtins. (line 246) +* enable: Bash Builtins. (line 295) * eval: Bourne Shell Builtins. (line 94) * exec: Bourne Shell Builtins. (line 102) * exit: Bourne Shell Builtins. - (line 119) + (line 120) * export: Bourne Shell Builtins. - (line 126) + (line 127) * fc: Bash History Builtins. (line 10) * fg: Job Control Builtins. (line 17) * getopts: Bourne Shell Builtins. - (line 142) + (line 143) * hash: Bourne Shell Builtins. - (line 185) -* help: Bash Builtins. (line 323) + (line 186) +* help: Bash Builtins. (line 324) * history: Bash History Builtins. (line 40) * jobs: Job Control Builtins. (line 27) * kill: Job Control Builtins. (line 58) -* let: Bash Builtins. (line 342) -* local: Bash Builtins. (line 350) -* logout: Bash Builtins. (line 364) -* mapfile: Bash Builtins. (line 369) +* let: Bash Builtins. (line 343) +* local: Bash Builtins. (line 351) +* logout: Bash Builtins. (line 365) +* mapfile: Bash Builtins. (line 370) * popd: Directory Stack Builtins. (line 35) -* printf: Bash Builtins. (line 414) +* printf: Bash Builtins. (line 416) * pushd: Directory Stack Builtins. (line 53) * pwd: Bourne Shell Builtins. - (line 205) -* read: Bash Builtins. (line 458) -* readarray: Bash Builtins. (line 550) + (line 206) +* read: Bash Builtins. (line 460) +* readarray: Bash Builtins. (line 554) * readonly: Bourne Shell Builtins. - (line 215) + (line 216) * return: Bourne Shell Builtins. - (line 234) + (line 235) * set: The Set Builtin. (line 11) * shift: Bourne Shell Builtins. - (line 255) + (line 256) * shopt: The Shopt Builtin. (line 9) -* source: Bash Builtins. (line 559) +* source: Bash Builtins. (line 563) * suspend: Job Control Builtins. - (line 101) + (line 104) * test: Bourne Shell Builtins. - (line 268) + (line 269) * times: Bourne Shell Builtins. - (line 343) + (line 348) * trap: Bourne Shell Builtins. - (line 349) -* type: Bash Builtins. (line 564) -* typeset: Bash Builtins. (line 596) -* ulimit: Bash Builtins. (line 602) + (line 354) +* type: Bash Builtins. (line 568) +* typeset: Bash Builtins. (line 600) +* ulimit: Bash Builtins. (line 606) * umask: Bourne Shell Builtins. - (line 398) -* unalias: Bash Builtins. (line 701) + (line 403) +* unalias: Bash Builtins. (line 705) * unset: Bourne Shell Builtins. - (line 416) + (line 421) * wait: Job Control Builtins. (line 76) @@ -10738,9 +11064,9 @@ D.2 Index of Shell Reserved Words * !: Pipelines. (line 9) * [[: Conditional Constructs. - (line 121) + (line 124) * ]]: Conditional Constructs. - (line 121) + (line 124) * {: Command Grouping. (line 21) * }: Command Grouping. (line 21) * case: Conditional Constructs. @@ -10762,7 +11088,7 @@ D.2 Index of Shell Reserved Words * in: Conditional Constructs. (line 28) * select: Conditional Constructs. - (line 79) + (line 82) * then: Conditional Constructs. (line 7) * time: Pipelines. (line 9) @@ -10778,45 +11104,46 @@ D.3 Parameter and Variable Index [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) * BASHOPTS: Bash Variables. (line 16) * BASHPID: Bash Variables. (line 25) -* BASH_ALIASES: Bash Variables. (line 30) -* BASH_ARGC: Bash Variables. (line 39) -* BASH_ARGV: Bash Variables. (line 49) -* BASH_CMDS: Bash Variables. (line 59) -* BASH_COMMAND: Bash Variables. (line 68) -* BASH_COMPAT: Bash Variables. (line 73) -* BASH_ENV: Bash Variables. (line 88) -* BASH_EXECUTION_STRING: Bash Variables. (line 94) -* BASH_LINENO: Bash Variables. (line 97) -* BASH_LOADABLES_PATH: Bash Variables. (line 105) -* BASH_REMATCH: Bash Variables. (line 109) -* BASH_SOURCE: Bash Variables. (line 117) -* BASH_SUBSHELL: Bash Variables. (line 124) -* BASH_VERSINFO: Bash Variables. (line 129) -* BASH_VERSION: Bash Variables. (line 152) -* BASH_XTRACEFD: Bash Variables. (line 155) +* BASH_ALIASES: Bash Variables. (line 32) +* BASH_ARGC: Bash Variables. (line 41) +* BASH_ARGV: Bash Variables. (line 54) +* BASH_ARGV0: Bash Variables. (line 66) +* BASH_CMDS: Bash Variables. (line 74) +* BASH_COMMAND: Bash Variables. (line 83) +* BASH_COMPAT: Bash Variables. (line 88) +* BASH_ENV: Bash Variables. (line 103) +* BASH_EXECUTION_STRING: Bash Variables. (line 109) +* BASH_LINENO: Bash Variables. (line 112) +* BASH_LOADABLES_PATH: Bash Variables. (line 120) +* BASH_REMATCH: Bash Variables. (line 124) +* BASH_SOURCE: Bash Variables. (line 132) +* BASH_SUBSHELL: Bash Variables. (line 139) +* BASH_VERSINFO: Bash Variables. (line 144) +* BASH_VERSION: Bash Variables. (line 167) +* BASH_XTRACEFD: Bash Variables. (line 170) * bell-style: Readline Init File Syntax. (line 38) * bind-tty-special-chars: Readline Init File Syntax. @@ -10825,12 +11152,12 @@ D.3 Parameter and Variable Index (line 50) * CDPATH: Bourne Shell Variables. (line 9) -* CHILD_MAX: Bash Variables. (line 166) +* CHILD_MAX: Bash Variables. (line 181) * colored-completion-prefix: Readline Init File Syntax. (line 55) * colored-stats: Readline Init File Syntax. (line 62) -* COLUMNS: Bash Variables. (line 173) +* COLUMNS: Bash Variables. (line 188) * comment-begin: Readline Init File Syntax. (line 68) * completion-display-width: Readline Init File Syntax. @@ -10843,88 +11170,91 @@ D.3 Parameter and Variable Index (line 91) * completion-query-items: Readline Init File Syntax. (line 98) -* COMPREPLY: Bash Variables. (line 225) -* COMP_CWORD: Bash Variables. (line 179) -* COMP_KEY: Bash Variables. (line 208) -* COMP_LINE: Bash Variables. (line 185) -* COMP_POINT: Bash Variables. (line 190) -* COMP_TYPE: Bash Variables. (line 198) -* COMP_WORDBREAKS: Bash Variables. (line 212) -* COMP_WORDS: Bash Variables. (line 218) +* COMPREPLY: Bash Variables. (line 240) +* COMP_CWORD: Bash Variables. (line 194) +* COMP_KEY: Bash Variables. (line 223) +* COMP_LINE: Bash Variables. (line 200) +* COMP_POINT: Bash Variables. (line 205) +* COMP_TYPE: Bash Variables. (line 213) +* COMP_WORDBREAKS: Bash Variables. (line 227) +* COMP_WORDS: Bash Variables. (line 233) * convert-meta: Readline Init File Syntax. (line 108) -* COPROC: Bash Variables. (line 231) -* DIRSTACK: Bash Variables. (line 235) +* COPROC: Bash Variables. (line 246) +* DIRSTACK: Bash Variables. (line 250) * disable-completion: Readline Init File Syntax. (line 116) * echo-control-characters: Readline Init File Syntax. (line 121) * editing-mode: Readline Init File Syntax. (line 126) -* EMACS: Bash Variables. (line 245) +* EMACS: Bash Variables. (line 260) * emacs-mode-string: Readline Init File Syntax. (line 132) * enable-bracketed-paste: Readline Init File Syntax. (line 142) * enable-keypad: Readline Init File Syntax. (line 150) -* ENV: Bash Variables. (line 250) -* EUID: Bash Variables. (line 254) -* EXECIGNORE: Bash Variables. (line 258) +* ENV: Bash Variables. (line 265) +* EPOCHREALTIME: Bash Variables. (line 269) +* EPOCHSECONDS: Bash Variables. (line 277) +* EUID: Bash Variables. (line 284) +* EXECIGNORE: Bash Variables. (line 288) * expand-tilde: Readline Init File Syntax. (line 161) -* FCEDIT: Bash Variables. (line 271) -* FIGNORE: Bash Variables. (line 275) -* FUNCNAME: Bash Variables. (line 281) -* FUNCNEST: Bash Variables. (line 298) -* GLOBIGNORE: Bash Variables. (line 303) -* GROUPS: Bash Variables. (line 310) -* histchars: Bash Variables. (line 316) -* HISTCMD: Bash Variables. (line 331) -* HISTCONTROL: Bash Variables. (line 336) -* HISTFILE: Bash Variables. (line 352) -* HISTFILESIZE: Bash Variables. (line 356) -* HISTIGNORE: Bash Variables. (line 367) +* FCEDIT: Bash Variables. (line 301) +* FIGNORE: Bash Variables. (line 305) +* FUNCNAME: Bash Variables. (line 311) +* FUNCNEST: Bash Variables. (line 328) +* GLOBIGNORE: Bash Variables. (line 333) +* GROUPS: Bash Variables. (line 340) +* histchars: Bash Variables. (line 346) +* HISTCMD: Bash Variables. (line 361) +* HISTCONTROL: Bash Variables. (line 366) +* HISTFILE: Bash Variables. (line 382) +* HISTFILESIZE: Bash Variables. (line 386) +* HISTIGNORE: Bash Variables. (line 397) * history-preserve-point: Readline Init File Syntax. (line 165) * history-size: Readline Init File Syntax. (line 171) -* HISTSIZE: Bash Variables. (line 387) -* HISTTIMEFORMAT: Bash Variables. (line 394) +* HISTSIZE: Bash Variables. (line 417) +* HISTTIMEFORMAT: Bash Variables. (line 424) * HOME: Bourne Shell Variables. (line 13) * horizontal-scroll-mode: Readline Init File Syntax. (line 180) -* HOSTFILE: Bash Variables. (line 402) -* HOSTNAME: Bash Variables. (line 413) -* HOSTTYPE: Bash Variables. (line 416) +* HOSTFILE: Bash Variables. (line 432) +* HOSTNAME: Bash Variables. (line 443) +* HOSTTYPE: Bash Variables. (line 446) * IFS: Bourne Shell Variables. (line 18) -* IGNOREEOF: Bash Variables. (line 419) +* IGNOREEOF: Bash Variables. (line 449) * input-meta: Readline Init File Syntax. (line 187) -* INPUTRC: Bash Variables. (line 429) +* INPUTRC: Bash Variables. (line 459) +* INSIDE_EMACS: Bash Variables. (line 463) * isearch-terminators: Readline Init File Syntax. (line 195) * keymap: Readline Init File Syntax. (line 202) -* LANG: Bash Variables. (line 433) -* LC_ALL: Bash Variables. (line 437) -* LC_COLLATE: Bash Variables. (line 441) -* LC_CTYPE: Bash Variables. (line 448) +* LANG: Bash Variables. (line 469) +* LC_ALL: Bash Variables. (line 473) +* LC_COLLATE: Bash Variables. (line 477) +* LC_CTYPE: Bash Variables. (line 484) * LC_MESSAGES: Locale Translation. (line 11) -* LC_MESSAGES <1>: Bash Variables. (line 453) -* LC_NUMERIC: Bash Variables. (line 457) -* LC_TIME: Bash Variables. (line 461) -* LINENO: Bash Variables. (line 465) -* LINES: Bash Variables. (line 469) -* MACHTYPE: Bash Variables. (line 475) +* LC_MESSAGES <1>: Bash Variables. (line 489) +* LC_NUMERIC: Bash Variables. (line 493) +* LC_TIME: Bash Variables. (line 497) +* LINENO: Bash Variables. (line 501) +* LINES: Bash Variables. (line 505) +* MACHTYPE: Bash Variables. (line 511) * MAIL: Bourne Shell Variables. (line 22) -* MAILCHECK: Bash Variables. (line 479) +* MAILCHECK: Bash Variables. (line 515) * MAILPATH: Bourne Shell Variables. (line 27) -* MAPFILE: Bash Variables. (line 487) +* MAPFILE: Bash Variables. (line 523) * mark-modified-lines: Readline Init File Syntax. (line 232) * mark-symlinked-directories: Readline Init File Syntax. @@ -10935,42 +11265,42 @@ D.3 Parameter and Variable Index (line 249) * meta-flag: Readline Init File Syntax. (line 187) -* OLDPWD: Bash Variables. (line 491) +* OLDPWD: Bash Variables. (line 527) * OPTARG: Bourne Shell Variables. (line 34) -* OPTERR: Bash Variables. (line 494) +* OPTERR: Bash Variables. (line 530) * OPTIND: Bourne Shell Variables. (line 38) -* OSTYPE: Bash Variables. (line 498) +* OSTYPE: Bash Variables. (line 534) * output-meta: Readline Init File Syntax. (line 254) * page-completions: Readline Init File Syntax. (line 260) * PATH: Bourne Shell Variables. (line 42) -* PIPESTATUS: Bash Variables. (line 501) -* POSIXLY_CORRECT: Bash Variables. (line 506) -* PPID: Bash Variables. (line 515) -* PROMPT_COMMAND: Bash Variables. (line 519) -* PROMPT_DIRTRIM: Bash Variables. (line 523) -* PS0: Bash Variables. (line 529) +* PIPESTATUS: Bash Variables. (line 537) +* POSIXLY_CORRECT: Bash Variables. (line 542) +* PPID: Bash Variables. (line 552) +* PROMPT_COMMAND: Bash Variables. (line 556) +* PROMPT_DIRTRIM: Bash Variables. (line 560) +* PS0: Bash Variables. (line 566) * PS1: Bourne Shell Variables. (line 48) * PS2: Bourne Shell Variables. (line 53) -* PS3: Bash Variables. (line 534) -* PS4: Bash Variables. (line 539) -* PWD: Bash Variables. (line 545) -* RANDOM: Bash Variables. (line 548) -* READLINE_LINE: Bash Variables. (line 553) -* READLINE_POINT: Bash Variables. (line 557) -* REPLY: Bash Variables. (line 561) +* PS3: Bash Variables. (line 571) +* PS4: Bash Variables. (line 576) +* PWD: Bash Variables. (line 584) +* RANDOM: Bash Variables. (line 587) +* READLINE_LINE: Bash Variables. (line 592) +* READLINE_POINT: Bash Variables. (line 596) +* REPLY: Bash Variables. (line 600) * revert-all-at-newline: Readline Init File Syntax. (line 270) -* SECONDS: Bash Variables. (line 564) -* SHELL: Bash Variables. (line 570) -* SHELLOPTS: Bash Variables. (line 575) -* SHLVL: Bash Variables. (line 584) +* SECONDS: Bash Variables. (line 603) +* SHELL: Bash Variables. (line 609) +* SHELLOPTS: Bash Variables. (line 614) +* SHLVL: Bash Variables. (line 623) * show-all-if-ambiguous: Readline Init File Syntax. (line 276) * show-all-if-unmodified: Readline Init File Syntax. @@ -10981,16 +11311,16 @@ D.3 Parameter and Variable Index (line 297) * TEXTDOMAIN: Locale Translation. (line 11) * TEXTDOMAINDIR: Locale Translation. (line 11) -* TIMEFORMAT: Bash Variables. (line 589) -* TMOUT: Bash Variables. (line 627) -* TMPDIR: Bash Variables. (line 639) -* UID: Bash Variables. (line 643) +* TIMEFORMAT: Bash Variables. (line 628) +* TMOUT: Bash Variables. (line 666) +* TMPDIR: Bash Variables. (line 678) +* UID: Bash Variables. (line 682) * vi-cmd-mode-string: Readline Init File Syntax. (line 310) * vi-ins-mode-string: Readline Init File Syntax. - (line 320) + (line 321) * visible-stats: Readline Init File Syntax. - (line 330) + (line 332)  File: bash.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes @@ -11006,7 +11336,7 @@ D.4 Function Index * accept-line (Newline or Return): Commands For History. (line 6) * alias-expand-line (): Miscellaneous Commands. - (line 124) + (line 125) * backward-char (C-b): Commands For Moving. (line 15) * backward-delete-char (Rubout): Commands For Text. (line 17) * backward-kill-line (C-x Rubout): Commands For Killing. @@ -11021,10 +11351,10 @@ D.4 Function Index * call-last-kbd-macro (C-x e): Keyboard Macros. (line 13) * capitalize-word (M-c): Commands For Text. (line 61) * character-search (C-]): Miscellaneous Commands. - (line 41) + (line 42) * character-search-backward (M-C-]): Miscellaneous Commands. - (line 46) -* clear-screen (C-l): Commands For Moving. (line 34) + (line 47) +* clear-screen (C-l): Commands For Moving. (line 48) * complete (): Commands For Completion. (line 6) * complete-command (M-!): Commands For Completion. @@ -11054,56 +11384,56 @@ D.4 Function Index (line 46) * digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6) * display-shell-version (C-x C-v): Miscellaneous Commands. - (line 109) -* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands. + (line 110) +* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands. (line 14) * downcase-word (M-l): Commands For Text. (line 57) * dump-functions (): Miscellaneous Commands. - (line 73) + (line 74) * dump-macros (): Miscellaneous Commands. - (line 85) + (line 86) * dump-variables (): Miscellaneous Commands. - (line 79) + (line 80) * dynamic-complete-history (M-): Commands For Completion. (line 90) -* edit-and-execute-command (C-xC-e): Miscellaneous Commands. - (line 138) +* edit-and-execute-command (C-x C-e): Miscellaneous Commands. + (line 140) * end-kbd-macro (C-x )): Keyboard Macros. (line 9) * end-of-file (usually C-d): Commands For Text. (line 6) * end-of-history (M->): Commands For History. (line 23) * end-of-line (C-e): Commands For Moving. (line 9) * exchange-point-and-mark (C-x C-x): Miscellaneous Commands. - (line 36) + (line 37) * forward-backward-delete-char (): Commands For Text. (line 21) * forward-char (C-f): Commands For Moving. (line 12) * forward-search-history (C-s): Commands For History. (line 31) * forward-word (M-f): Commands For Moving. (line 18) * glob-complete-word (M-g): Miscellaneous Commands. - (line 91) + (line 92) * glob-expand-word (C-x *): Miscellaneous Commands. - (line 97) + (line 98) * glob-list-expansions (C-x g): Miscellaneous Commands. - (line 103) + (line 104) * history-and-alias-expand-line (): Miscellaneous Commands. - (line 127) + (line 128) * history-expand-line (M-^): Miscellaneous Commands. - (line 117) + (line 118) * history-search-backward (): Commands For History. (line 53) * history-search-forward (): Commands For History. (line 47) -* history-substr-search-backward (): Commands For History. +* history-substring-search-backward (): Commands For History. (line 65) -* history-substr-search-forward (): Commands For History. +* history-substring-search-forward (): Commands For History. (line 59) * insert-comment (M-#): Miscellaneous Commands. - (line 60) + (line 61) * insert-completions (M-*): Commands For Completion. (line 22) * insert-last-argument (M-. or M-_): Miscellaneous Commands. - (line 130) + (line 131) * kill-line (C-k): Commands For Killing. (line 6) * kill-region (): Commands For Killing. @@ -11113,19 +11443,20 @@ D.4 Function Index * kill-word (M-d): Commands For Killing. (line 19) * magic-space (): Miscellaneous Commands. - (line 120) + (line 121) * menu-complete (): Commands For Completion. (line 26) * menu-complete-backward (): Commands For Completion. (line 38) * next-history (C-n): Commands For History. (line 17) +* next-screen-line (): Commands For Moving. (line 41) * non-incremental-forward-search-history (M-n): Commands For History. (line 41) * non-incremental-reverse-search-history (M-p): Commands For History. (line 35) * operate-and-get-next (C-o): Miscellaneous Commands. - (line 133) + (line 134) * overwrite-mode (): Commands For Text. (line 65) * possible-command-completions (C-x !): Commands For Completion. (line 86) @@ -11140,38 +11471,39 @@ D.4 Function Index * possible-variable-completions (C-x $): Commands For Completion. (line 68) * prefix-meta (): Miscellaneous Commands. - (line 18) + (line 19) * previous-history (C-p): Commands For History. (line 13) +* previous-screen-line (): Commands For Moving. (line 34) * print-last-kbd-macro (): Keyboard Macros. (line 17) * quoted-insert (C-q or C-v): Commands For Text. (line 26) * re-read-init-file (C-x C-r): Miscellaneous Commands. (line 6) -* redraw-current-line (): Commands For Moving. (line 38) +* redraw-current-line (): Commands For Moving. (line 52) * reverse-search-history (C-r): Commands For History. (line 27) * revert-line (M-r): Miscellaneous Commands. - (line 25) + (line 26) * self-insert (a, b, A, 1, !, ...): Commands For Text. (line 30) * set-mark (C-@): Miscellaneous Commands. - (line 32) + (line 33) * shell-backward-kill-word (): Commands For Killing. (line 33) * shell-backward-word (): Commands For Moving. (line 30) * shell-expand-line (M-C-e): Miscellaneous Commands. - (line 112) + (line 113) * shell-forward-word (): Commands For Moving. (line 26) * shell-kill-word (): Commands For Killing. (line 28) * skip-csi-sequence (): Miscellaneous Commands. - (line 51) + (line 52) * start-kbd-macro (C-x (): Keyboard Macros. (line 6) * tilde-expand (M-&): Miscellaneous Commands. - (line 29) + (line 30) * transpose-chars (C-t): Commands For Text. (line 42) * transpose-words (M-t): Commands For Text. (line 48) * undo (C-_ or C-x C-u): Miscellaneous Commands. - (line 22) + (line 23) * universal-argument (): Numeric Arguments. (line 10) * unix-filename-rubout (): Commands For Killing. (line 41) @@ -11273,13 +11605,13 @@ D.5 Concept Index * history list: Bash History Facilities. (line 6) * History, how to use: A Programmable Completion Example. - (line 114) + (line 113) * identifier: Definitions. (line 51) * initialization file, readline: Readline Init File. (line 6) * installation: Basic Installation. (line 6) * interaction, readline: Readline Interaction. (line 6) -* interactive shell: Invoking Bash. (line 128) +* interactive shell: Invoking Bash. (line 131) * interactive shell <1>: Interactive Shells. (line 6) * internationalization: Locale Translation. (line 6) * job: Definitions. (line 38) @@ -11290,7 +11622,7 @@ D.5 Concept Index * killing text: Readline Killing Commands. (line 6) * localization: Locale Translation. (line 6) -* login shell: Invoking Bash. (line 125) +* login shell: Invoking Bash. (line 128) * matching, pattern: Pattern Matching. (line 6) * metacharacter: Definitions. (line 46) * name: Definitions. (line 51) @@ -11351,134 +11683,134 @@ D.5 Concept Index  Tag Table: -Node: Top897 -Node: Introduction2817 -Node: What is Bash?3033 -Node: What is a shell?4147 -Node: Definitions6685 -Node: Basic Shell Features9636 -Node: Shell Syntax10855 -Node: Shell Operation11881 -Node: Quoting13174 -Node: Escape Character14474 -Node: Single Quotes14959 -Node: Double Quotes15307 -Node: ANSI-C Quoting16585 -Node: Locale Translation17838 -Node: Comments18734 -Node: Shell Commands19352 -Node: Simple Commands20224 -Node: Pipelines20855 -Node: Lists23598 -Node: Compound Commands25327 -Node: Looping Constructs26330 -Node: Conditional Constructs28793 -Node: Command Grouping39715 -Node: Coprocesses41194 -Node: GNU Parallel43026 -Node: Shell Functions46999 -Node: Shell Parameters52205 -Node: Positional Parameters56618 -Node: Special Parameters57518 -Node: Shell Expansions60855 -Node: Brace Expansion62949 -Node: Tilde Expansion65730 -Node: Shell Parameter Expansion68078 -Node: Command Substitution82210 -Node: Arithmetic Expansion83565 -Node: Process Substitution84497 -Node: Word Splitting85617 -Node: Filename Expansion87561 -Node: Pattern Matching89845 -Node: Quote Removal93543 -Node: Redirections93838 -Node: Executing Commands103258 -Node: Simple Command Expansion103928 -Node: Command Search and Execution105858 -Node: Command Execution Environment108194 -Node: Environment111178 -Node: Exit Status112837 -Node: Signals114507 -Node: Shell Scripts116474 -Node: Shell Builtin Commands118989 -Node: Bourne Shell Builtins121023 -Node: Bash Builtins141623 -Node: Modifying Shell Behavior170268 -Node: The Set Builtin170613 -Node: The Shopt Builtin181026 -Node: Special Builtins196825 -Node: Shell Variables197804 -Node: Bourne Shell Variables198241 -Node: Bash Variables200272 -Node: Bash Features228652 -Node: Invoking Bash229551 -Node: Bash Startup Files235500 -Node: Interactive Shells240603 -Node: What is an Interactive Shell?241013 -Node: Is this Shell Interactive?241662 -Node: Interactive Shell Behavior242477 -Node: Bash Conditional Expressions245852 -Node: Shell Arithmetic250092 -Node: Aliases252909 -Node: Arrays255457 -Node: The Directory Stack260541 -Node: Directory Stack Builtins261325 -Node: Controlling the Prompt264293 -Node: The Restricted Shell267039 -Node: Bash POSIX Mode268864 -Node: Job Control279215 -Node: Job Control Basics279675 -Node: Job Control Builtins284394 -Node: Job Control Variables288924 -Node: Command Line Editing290080 -Node: Introduction and Notation291751 -Node: Readline Interaction293374 -Node: Readline Bare Essentials294565 -Node: Readline Movement Commands296348 -Node: Readline Killing Commands297308 -Node: Readline Arguments299226 -Node: Searching300270 -Node: Readline Init File302456 -Node: Readline Init File Syntax303603 -Node: Conditional Init Constructs323790 -Node: Sample Init File326315 -Node: Bindable Readline Commands329432 -Node: Commands For Moving330636 -Node: Commands For History331779 -Node: Commands For Text336068 -Node: Commands For Killing339457 -Node: Numeric Arguments341938 -Node: Commands For Completion343077 -Node: Keyboard Macros347268 -Node: Miscellaneous Commands347955 -Node: Readline vi Mode353759 -Node: Programmable Completion354666 -Node: Programmable Completion Builtins362127 -Node: A Programmable Completion Example372013 -Node: Using History Interactively377265 -Node: Bash History Facilities377949 -Node: Bash History Builtins380950 -Node: History Interaction384947 -Node: Event Designators387911 -Node: Word Designators389130 -Node: Modifiers390767 -Node: Installing Bash392169 -Node: Basic Installation393306 -Node: Compilers and Options395997 -Node: Compiling For Multiple Architectures396738 -Node: Installation Names398401 -Node: Specifying the System Type399219 -Node: Sharing Defaults399935 -Node: Operation Controls400608 -Node: Optional Features401566 -Node: Reporting Bugs411823 -Node: Major Differences From The Bourne Shell413017 -Node: GNU Free Documentation License429869 -Node: Indexes455046 -Node: Builtin Index455500 -Node: Reserved Word Index462327 -Node: Variable Index464775 -Node: Function Index480234 -Node: Concept Index493391 +Node: Top895 +Node: Introduction2813 +Node: What is Bash?3029 +Node: What is a shell?4143 +Node: Definitions6681 +Node: Basic Shell Features9632 +Node: Shell Syntax10851 +Node: Shell Operation11877 +Node: Quoting13170 +Node: Escape Character14470 +Node: Single Quotes14955 +Node: Double Quotes15303 +Node: ANSI-C Quoting16581 +Node: Locale Translation17840 +Node: Comments18736 +Node: Shell Commands19354 +Node: Simple Commands20226 +Node: Pipelines20857 +Node: Lists23789 +Node: Compound Commands25580 +Node: Looping Constructs26592 +Node: Conditional Constructs29087 +Node: Command Grouping40170 +Node: Coprocesses41649 +Node: GNU Parallel43552 +Node: Shell Functions47610 +Node: Shell Parameters54693 +Node: Positional Parameters59106 +Node: Special Parameters60006 +Node: Shell Expansions63760 +Node: Brace Expansion65883 +Node: Tilde Expansion68607 +Node: Shell Parameter Expansion71224 +Node: Command Substitution85680 +Node: Arithmetic Expansion87035 +Node: Process Substitution87967 +Node: Word Splitting89087 +Node: Filename Expansion91031 +Node: Pattern Matching93561 +Node: Quote Removal97547 +Node: Redirections97842 +Node: Executing Commands107400 +Node: Simple Command Expansion108070 +Node: Command Search and Execution110000 +Node: Command Execution Environment112376 +Node: Environment115360 +Node: Exit Status117019 +Node: Signals118689 +Node: Shell Scripts120656 +Node: Shell Builtin Commands123171 +Node: Bourne Shell Builtins125209 +Node: Bash Builtins145959 +Node: Modifying Shell Behavior174884 +Node: The Set Builtin175229 +Node: The Shopt Builtin185642 +Node: Special Builtins203284 +Node: Shell Variables204263 +Node: Bourne Shell Variables204700 +Node: Bash Variables206804 +Node: Bash Features237264 +Node: Invoking Bash238163 +Node: Bash Startup Files244176 +Node: Interactive Shells249279 +Node: What is an Interactive Shell?249689 +Node: Is this Shell Interactive?250338 +Node: Interactive Shell Behavior251153 +Node: Bash Conditional Expressions254640 +Node: Shell Arithmetic259217 +Node: Aliases262034 +Node: Arrays264654 +Node: The Directory Stack270020 +Node: Directory Stack Builtins270804 +Node: Controlling the Prompt273772 +Node: The Restricted Shell276538 +Node: Bash POSIX Mode278363 +Node: Job Control289296 +Node: Job Control Basics289756 +Node: Job Control Builtins294724 +Node: Job Control Variables299451 +Node: Command Line Editing300607 +Node: Introduction and Notation302278 +Node: Readline Interaction303901 +Node: Readline Bare Essentials305092 +Node: Readline Movement Commands306875 +Node: Readline Killing Commands307835 +Node: Readline Arguments309753 +Node: Searching310797 +Node: Readline Init File312983 +Node: Readline Init File Syntax314130 +Node: Conditional Init Constructs334569 +Node: Sample Init File338765 +Node: Bindable Readline Commands341882 +Node: Commands For Moving343086 +Node: Commands For History344935 +Node: Commands For Text349230 +Node: Commands For Killing352618 +Node: Numeric Arguments355099 +Node: Commands For Completion356238 +Node: Keyboard Macros360429 +Node: Miscellaneous Commands361116 +Node: Readline vi Mode367069 +Node: Programmable Completion367976 +Node: Programmable Completion Builtins375756 +Node: A Programmable Completion Example386449 +Node: Using History Interactively391689 +Node: Bash History Facilities392373 +Node: Bash History Builtins395378 +Node: History Interaction399909 +Node: Event Designators403529 +Node: Word Designators404748 +Node: Modifiers406385 +Node: Installing Bash407787 +Node: Basic Installation408924 +Node: Compilers and Options412182 +Node: Compiling For Multiple Architectures412923 +Node: Installation Names414616 +Node: Specifying the System Type415434 +Node: Sharing Defaults416150 +Node: Operation Controls416823 +Node: Optional Features417781 +Node: Reporting Bugs428299 +Node: Major Differences From The Bourne Shell429493 +Node: GNU Free Documentation License446345 +Node: Indexes471522 +Node: Builtin Index471976 +Node: Reserved Word Index478803 +Node: Variable Index481251 +Node: Function Index497002 +Node: Concept Index510305  End Tag Table diff --git a/doc/bash.pdf b/doc/bash.pdf index 2f64c6f5b..54c061ece 100644 Binary files a/doc/bash.pdf and b/doc/bash.pdf differ diff --git a/doc/bash.ps b/doc/bash.ps index 35da9d02a..8b3b73389 100644 --- a/doc/bash.ps +++ b/doc/bash.ps @@ -1,13 +1,13 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.3 -%%CreationDate: Wed Aug 31 10:23:59 2016 +%%CreationDate: Wed Jan 2 09:14:38 2019 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%+ font Courier %%+ font Symbol %%DocumentSuppliedResources: procset grops 1.22 3 -%%Pages: 78 +%%Pages: 81 %%PageOrder: Ascend %%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait @@ -245,7 +245,7 @@ BP 108 96 Q(ain SHell)-.05 E F1(SYNOPSIS)72 112.8 Q/F2 10/Times-Bold@0 SF (bash)108 124.8 Q F0([options] [command_string | \214le])2.5 E F1 (COPYRIGHT)72 141.6 Q F0(Bash is Cop)108 153.6 Q -(yright \251 1989-2016 by the Free Softw)-.1 E(are F)-.1 E +(yright \251 1989-2018 by the Free Softw)-.1 E(are F)-.1 E (oundation, Inc.)-.15 E F1(DESCRIPTION)72 170.4 Q F2(Bash)108 182.4 Q F0 .973(is an)3.474 F F2(sh)3.473 E F0 .973 (-compatible command language interpreter that e)B -.15(xe)-.15 G .973 @@ -257,19 +257,19 @@ BP ell and Utilities portion of the IEEE POSIX)3.027 F (speci\214cation \(IEEE Standard 1003.1\).)108 223.2 Q F2(Bash)5 E F0 (can be con\214gured to be POSIX-conformant by def)2.5 E(ault.)-.1 E F1 -(OPTIONS)72 240 Q F0 .766(All of the single-character shell options doc\ -umented in the description of the)108 252 R F2(set)3.266 E F0 -.2(bu) -3.266 G .766(iltin command can be).2 F 1.284 -(used as options when the shell is in)108 264 R -.2(vo)-.4 G -.1(ke).2 G -3.785(d. In).1 F(addition,)3.785 E F2(bash)3.785 E F0 1.285 -(interprets the follo)3.785 F 1.285(wing options when it is)-.25 F(in) -108 276 Q -.2(vo)-.4 G -.1(ke).2 G(d:).1 E F2108 292.8 Q F0 .881 -(If the)158 292.8 R F23.381 E F0 .881(option is present, then com\ -mands are read from the \214rst non-option ar)3.381 F(gument)-.18 E F3 -(com-)3.38 E(mand_string)158 304.8 Q F0 5.743(.I).22 G 3.243(ft)-5.743 G -.743(here are ar)-3.243 F .743(guments after the)-.18 F F3 -(command_string)3.243 E F0 3.243(,t).22 G .744(he \214rst ar)-3.243 F -.744(gument is assigned)-.18 F(to)158 316.8 Q F2($0)2.919 E F0 .419 +(OPTIONS)72 240 Q F0 .483(All of the single-character shell options doc\ +umented in the description of the)108 252 R F2(set)2.983 E F0 -.2(bu) +2.983 G .483(iltin command, includ-).2 F(ing)108 264 Q F22.718 E +F0 2.718(,c)C .218(an be used as options when the shell is in)-2.718 F +-.2(vo)-.4 G -.1(ke).2 G 2.718(d. In).1 F(addition,)2.719 E F2(bash) +2.719 E F0 .219(interprets the follo)2.719 F .219(wing options)-.25 F +(when it is in)108 276 Q -.2(vo)-.4 G -.1(ke).2 G(d:).1 E F2108 +292.8 Q F0 .881(If the)158 292.8 R F23.381 E F0 .881(option is pr\ +esent, then commands are read from the \214rst non-option ar)3.381 F +(gument)-.18 E F3(com-)3.38 E(mand_string)158 304.8 Q F0 5.743(.I).22 G +3.243(ft)-5.743 G .743(here are ar)-3.243 F .743(guments after the)-.18 +F F3(command_string)3.243 E F0 3.243(,t).22 G .744(he \214rst ar)-3.243 +F .744(gument is assigned)-.18 F(to)158 316.8 Q F2($0)2.919 E F0 .419 (and an)2.919 F 2.919(yr)-.15 G .419(emaining ar)-2.919 F .418 (guments are assigned to the positional parameters.)-.18 F .418 (The assignment)5.418 F(to)158 328.8 Q F2($0)2.5 E F0 @@ -288,14 +288,14 @@ E F2108 376.8 Q F0 .602(If the)158 376.8 R F23.102 E F0 .602 (guments remain after option processing, then commands)-.18 F .617 (are read from the standard input.)158 388.8 R .617(This option allo) 5.617 F .616(ws the positional parameters to be set when)-.25 F(in)158 -400.8 Q -.2(vo)-.4 G(king an interacti).2 E .3 -.15(ve s)-.25 H(hell.) -.15 E F2108 412.8 Q F0 3.183(Al)158 412.8 S .683 -(ist of all double-quoted strings preceded by)-3.183 F F2($)3.184 E F0 -.684(is printed on the standard output.)3.184 F .684(These are)5.684 F -.458(the strings that are subject to language translation when the curr\ -ent locale is not)158 424.8 R F2(C)2.958 E F0(or)2.958 E F2(POSIX)2.958 -E F0(.)A(This implies the)158 436.8 Q F22.5 E F0 -(option; no commands will be e)2.5 E -.15(xe)-.15 G(cuted.).15 E F2 +400.8 Q -.2(vo)-.4 G(king an interacti).2 E .3 -.15(ve s)-.25 H +(hell or when reading input through a pipe.).15 E F2108 412.8 Q F0 +3.183(Al)158 412.8 S .683(ist of all double-quoted strings preceded by) +-3.183 F F2($)3.184 E F0 .684(is printed on the standard output.)3.184 F +.684(These are)5.684 F .458(the strings that are subject to language tr\ +anslation when the current locale is not)158 424.8 R F2(C)2.958 E F0(or) +2.958 E F2(POSIX)2.958 E F0(.)A(This implies the)158 436.8 Q F22.5 +E F0(option; no commands will be e)2.5 E -.15(xe)-.15 G(cuted.).15 E F2 ([\255+]O [)108 448.8 Q F3(shopt_option)A F2(])A F3(shopt_option)158 460.8 Q F0 1.097(is one of the shell options accepted by the)3.596 F F2 (shopt)3.597 E F0 -.2(bu)3.597 G 1.097(iltin \(see).2 F F4 1.097 @@ -339,8 +339,8 @@ F .475(xtended deb)-.15 F(ug-)-.2 E 1.598(instead of the standard personal initialization \214le)4.279 F F3 (~/.bashr)3.598 E(c)-.37 E F0 1.598(if the)4.408 F(shell is interacti) 144 710.4 Q .3 -.15(ve \()-.25 H(see).15 E F4(INV)2.5 E(OCA)-.405 E -(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(1)197.055 E 0 Cg EP +(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(1)193.455 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP @@ -462,8 +462,8 @@ F2(~/.bashr)108 691.2 Q(c)-.37 E F0 2.535(,i)C 2.535(ft)-2.535 G .035 Q F1(bash)5.306 E F0 2.806(is started non-interacti)5.306 F -.15(ve)-.25 G(ly).15 E 5.306(,t)-.65 G 5.306(or)-5.306 G 2.806 (un a shell script, for e)-5.306 F 2.805(xample, it looks for the v)-.15 -F(ariable)-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(2) -197.055 E 0 Cg EP +F(ariable)-.25 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(2) +193.455 E 0 Cg EP %%Page: 3 3 %%BeginPageSetup BP @@ -598,7 +598,7 @@ F .389(wed by)-.25 F F2(blank)2.889 E F0 .389(-separated w)B .389 -.15(xe)-.15 G(cuted,).15 E(and is passed as ar)108 722.4 Q (gument zero.)-.18 E(The remaining w)5 E(ords are passed as ar)-.1 E (guments to the in)-.18 E -.2(vo)-.4 G -.1(ke).2 G 2.5(dc).1 G(ommand.) --2.5 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(3)197.055 E 0 Cg +-2.5 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(3)193.455 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup @@ -667,2846 +667,2971 @@ F(ariables)-.92 E F0(belo)108 348 Q -.65(w.)-.25 G .85 (total user and system time consumed by the shell and its children.)108 376.8 R(The)6.073 E F4(TIMEFORMA)3.573 E(T)-.855 E F0 -.25(va)3.323 G 1.073(riable may be).25 F -(used to specify the format of the time information.)108 388.8 Q -(Each command in a pipeline is e)108 405.6 Q -.15(xe)-.15 G -(cuted as a separate process \(i.e., in a subshell\).).15 E F2(Lists)87 -422.4 Q F0(A)108 434.4 Q F1(list)2.849 E F0 .349(is a sequence of one o\ -r more pipelines separated by one of the operators)2.849 F F2(;)2.85 E -F0(,)A F2(&)2.85 E F0(,)A F2(&&)2.85 E F0 2.85(,o)C(r)-2.85 E F2(||)2.85 -E F0 2.85(,a)C .35(nd option-)-2.85 F(ally terminated by one of)108 -446.4 Q F2(;)2.5 E F0(,)A F2(&)2.5 E F0 2.5(,o)C(r)-2.5 E F2() -2.5 E F0(.)A .961(Of these list operators,)108 463.2 R F2(&&)3.461 E F0 -(and)3.461 E F2(||)3.461 E F0(ha)3.461 E 1.261 -.15(ve e)-.2 H .961 -(qual precedence, follo).15 F .96(wed by)-.25 F F2(;)3.46 E F0(and)3.46 -E F2(&)3.46 E F0 3.46(,w)C .96(hich ha)-3.46 F 1.26 -.15(ve e)-.2 H .96 -(qual prece-).15 F(dence.)108 475.2 Q 2.5(As)108 492 S -(equence of one or more ne)-2.5 E(wlines may appear in a)-.25 E F1(list) -2.5 E F0(instead of a semicolon to delimit commands.)2.5 E .029 -(If a command is terminated by the control operator)108 508.8 R F2(&) +(used to specify the format of the time information.)108 388.8 Q .655 +(Each command in a pipeline is e)108 405.6 R -.15(xe)-.15 G .656 +(cuted as a separate process \(i.e., in a subshell\).).15 F(See)5.656 E +F4 .656(COMMAND EXE-)3.156 F 1.106(CUTION ENVIR)108 417.6 R(ONMENT)-.27 +E F0 1.106(for a description of a subshell en)3.356 F 3.606 +(vironment. If)-.4 F(the)3.606 E F2(lastpipe)3.606 E F0 1.105 +(option is enabled)3.606 F .744(using the)108 429.6 R F2(shopt)3.244 E +F0 -.2(bu)3.244 G .744(iltin \(see the description of).2 F F2(shopt) +3.245 E F0(belo)3.245 E .745 +(w\), the last element of a pipeline may be run by)-.25 F +(the shell process.)108 441.6 Q F2(Lists)87 458.4 Q F0(A)108 470.4 Q F1 +(list)2.85 E F0 .35(is a sequence of one or more pipelines separated by\ + one of the operators)2.85 F F2(;)2.849 E F0(,)A F2(&)2.849 E F0(,)A F2 +(&&)2.849 E F0 2.849(,o)C(r)-2.849 E F2(||)2.849 E F0 2.849(,a)C .349 +(nd option-)-2.849 F(ally terminated by one of)108 482.4 Q F2(;)2.5 E F0 +(,)A F2(&)2.5 E F0 2.5(,o)C(r)-2.5 E F2()2.5 E F0(.)A .96 +(Of these list operators,)108 499.2 R F2(&&)3.46 E F0(and)3.46 E F2(||) +3.46 E F0(ha)3.46 E 1.26 -.15(ve e)-.2 H .961(qual precedence, follo).15 +F .961(wed by)-.25 F F2(;)3.461 E F0(and)3.461 E F2(&)3.461 E F0 3.461 +(,w)C .961(hich ha)-3.461 F 1.261 -.15(ve e)-.2 H .961(qual prece-).15 F +(dence.)108 511.2 Q 2.5(As)108 528 S(equence of one or more ne)-2.5 E +(wlines may appear in a)-.25 E F1(list)2.5 E F0 +(instead of a semicolon to delimit commands.)2.5 E .029 +(If a command is terminated by the control operator)108 544.8 R F2(&) 2.529 E F0 2.529(,t)C .029(he shell e)-2.529 F -.15(xe)-.15 G .029 -(cutes the command in the).15 F F1(bac)2.529 E(kgr)-.2 E(ound)-.45 E F0 -(in)2.529 E 2.876(as)108 520.8 S 2.876(ubshell. The)-2.876 F .376 -(shell does not w)2.876 F .375 -(ait for the command to \214nish, and the return status is 0.)-.1 F .375 -(Commands sepa-)5.375 F .848(rated by a)108 532.8 R F2(;)3.348 E F0 .848 -(are e)3.348 F -.15(xe)-.15 G .848(cuted sequentially; the shell w).15 F -.849(aits for each command to terminate in turn.)-.1 F .849(The return) -5.849 F(status is the e)108 544.8 Q(xit status of the last command e) --.15 E -.15(xe)-.15 G(cuted.).15 E .937(AND and OR lists are sequences \ -of one or more pipelines separated by the)108 561.6 R F2(&&)3.436 E F0 -(and)3.436 E F2(||)3.436 E F0 .936(control operators,)3.436 F(respecti) -108 573.6 Q -.15(ve)-.25 G(ly).15 E 5(.A)-.65 G(ND and OR lists are e)-5 -E -.15(xe)-.15 G(cuted with left associati).15 E(vity)-.25 E 5(.A)-.65 G -2.5(nA)-5 G(ND list has the form)-2.5 E F1(command1)144 590.4 Q F2(&&) -2.5 E F1(command2)2.5 E(command2)108.2 607.2 Q F0(is e)2.52 E -.15(xe) +(cutes the command in the).15 F F1(bac)2.528 E(kgr)-.2 E(ound)-.45 E F0 +(in)2.528 E 2.678(as)108 556.8 S 2.678(ubshell. The)-2.678 F .178 +(shell does not w)2.678 F .178 +(ait for the command to \214nish, and the return status is 0.)-.1 F .178 +(These are referred)5.178 F .779(to as)108 568.8 R F1(async)3.279 E(hr) +-.15 E(onous)-.45 E F0 3.279(commands. Commands)3.279 F .779 +(separated by a)3.279 F F2(;)3.279 E F0 .779(are e)3.279 F -.15(xe)-.15 +G .778(cuted sequentially; the shell w).15 F .778(aits for)-.1 F +(each command to terminate in turn.)108 580.8 Q +(The return status is the e)5 E(xit status of the last command e)-.15 E +-.15(xe)-.15 G(cuted.).15 E .937(AND and OR lists are sequences of one \ +or more pipelines separated by the)108 597.6 R F2(&&)3.437 E F0(and) +3.437 E F2(||)3.437 E F0 .937(control operators,)3.437 F(respecti)108 +609.6 Q -.15(ve)-.25 G(ly).15 E 5(.A)-.65 G(ND and OR lists are e)-5 E +-.15(xe)-.15 G(cuted with left associati).15 E(vity)-.25 E 5(.A)-.65 G +2.5(nA)-5 G(ND list has the form)-2.5 E F1(command1)144 626.4 Q F2(&&) +2.5 E F1(command2)2.5 E(command2)108.2 643.2 Q F0(is e)2.52 E -.15(xe) -.15 G(cuted if, and only if,).15 E F1(command1)2.7 E F0(returns an e) -2.5 E(xit status of zero.)-.15 E(An OR list has the form)108 624 Q F1 -(command1)144 640.8 Q F2(||)2.5 E F1(command2)2.5 E(command2)108.2 657.6 -Q F0 .728(is e)3.248 F -.15(xe)-.15 G .729(cuted if and only if).15 F F1 -(command1)3.429 E F0 .729(returns a non-zero e)3.229 F .729(xit status.) --.15 F .729(The return status of AND)5.729 F(and OR lists is the e)108 -669.6 Q(xit status of the last command e)-.15 E -.15(xe)-.15 G -(cuted in the list.).15 E F2(Compound Commands)87 686.4 Q F0(A)108 698.4 -Q F1 1.054(compound command)3.554 F F0 1.054(is one of the follo)3.554 F -3.553(wing. In)-.25 F 1.053(most cases a)3.553 F F1(list)3.553 E F0 -1.053(in a command')3.553 F 3.553(sd)-.55 G 1.053(escription may be) --3.553 F 1.026(separated from the rest of the command by one or more ne) -108 710.4 R 1.026(wlines, and may be follo)-.25 F 1.027(wed by a ne)-.25 -F 1.027(wline in)-.25 F(place of a semicolon.)108 722.4 Q(GNU Bash 4.4) -72 768 Q(2016 August 26)142.895 E(4)197.055 E 0 Cg EP +2.5 E(xit status of zero \(success\).)-.15 E(An OR list has the form)108 +660 Q F1(command1)144 676.8 Q F2(||)2.5 E F1(command2)2.5 E(command2) +108.2 693.6 Q F0 .435(is e)2.955 F -.15(xe)-.15 G .435 +(cuted if, and only if,).15 F F1(command1)3.135 E F0 .435 +(returns a non-zero e)2.935 F .435(xit status.)-.15 F .434 +(The return status of AND)5.434 F(and OR lists is the e)108 705.6 Q +(xit status of the last command e)-.15 E -.15(xe)-.15 G +(cuted in the list.).15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 +E(4)193.455 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(\()108 84 Q/F1 10 -/Times-Italic@0 SF(list)A F0(\))A F1(list)144 84 Q F0 .011(is e)2.512 F --.15(xe)-.15 G .011(cuted in a subshell en).15 F .011(vironment \(see) --.4 F/F2 9/Times-Bold@0 SF .011(COMMAND EXECUTION ENVIR)2.511 F(ONMENT) --.27 E F0(belo)2.261 E(w\).)-.25 E -1.11(Va)144 96 S 1.063 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(Compound Commands)87 84 Q F0(A)108 96 Q/F2 10/Times-Italic@0 SF 1.053 +(compound command)3.553 F F0 1.053(is one of the follo)3.553 F 3.553 +(wing. In)-.25 F 1.053(most cases a)3.553 F F2(list)3.553 E F0 1.054 +(in a command')3.554 F 3.554(sd)-.55 G 1.054(escription may be)-3.554 F +1.027(separated from the rest of the command by one or more ne)108 108 R +1.026(wlines, and may be follo)-.25 F 1.026(wed by a ne)-.25 F 1.026 +(wline in)-.25 F(place of a semicolon.)108 120 Q(\()108 136.8 Q F2(list) +A F0(\))A F2(list)144 136.8 Q F0 .011(is e)2.511 F -.15(xe)-.15 G .011 +(cuted in a subshell en).15 F .011(vironment \(see)-.4 F/F3 9 +/Times-Bold@0 SF .011(COMMAND EXECUTION ENVIR)2.511 F(ONMENT)-.27 E F0 +(belo)2.262 E(w\).)-.25 E -1.11(Va)144 148.8 S 1.064 (riable assignments and b)1.11 F 1.064(uiltin commands that af)-.2 F 1.064(fect the shell')-.25 F 3.564(se)-.55 G -.4(nv)-3.564 G 1.064 -(ironment do not remain in).4 F(ef)144 108 Q +(ironment do not remain in).4 F(ef)144 160.8 Q (fect after the command completes.)-.25 E(The return status is the e)5 E -(xit status of)-.15 E F1(list)2.5 E F0(.)A({)108 124.8 Q F1(list)2.5 E -F0 2.5(;})C F1(list)144 124.8 Q F0 .402(is simply e)2.902 F -.15(xe)-.15 -G .401(cuted in the current shell en).15 F(vironment.)-.4 E F1(list) -5.401 E F0 .401(must be terminated with a ne)2.901 F .401(wline or)-.25 -F 3.214(semicolon. This)144 136.8 R .714(is kno)3.214 F .714(wn as a) --.25 F F1(gr)3.215 E .715(oup command)-.45 F F0 5.715(.T)C .715 -(he return status is the e)-5.715 F .715(xit status of)-.15 F F1(list) -3.215 E F0 5.715(.N)C(ote)-5.715 E .22(that unlik)144 148.8 R 2.72(et) --.1 G .22(he metacharacters)-2.72 F/F3 10/Times-Bold@0 SF(\()2.72 E F0 -(and)2.72 E F3(\))2.72 E F0(,)A F3({)2.72 E F0(and)2.72 E F3(})2.719 E -F0(are)2.719 E F1 -.37(re)2.719 G .219(served wor).37 F(ds)-.37 E F0 -.219(and must occur where a reserv)2.719 F(ed)-.15 E -.1(wo)144 160.8 S -.256(rd is permitted to be recognized.).1 F .256(Since the)5.256 F 2.756 -(yd)-.15 G 2.756(on)-2.756 G .257(ot cause a w)-2.756 F .257 -(ord break, the)-.1 F 2.757(ym)-.15 G .257(ust be separated)-2.757 F -(from)144 172.8 Q F1(list)2.5 E F0 -(by whitespace or another shell metacharacter)2.5 E(.)-.55 E(\(\()108 -189.6 Q F1 -.2(ex)C(pr).2 E(ession)-.37 E F0(\)\))A(The)144 201.6 Q F1 --.2(ex)2.552 G(pr).2 E(ession)-.37 E F0 .052(is e)2.552 F -.25(va)-.25 G -.051(luated according to the rules described belo).25 F 2.551(wu)-.25 G -(nder)-2.551 E F2 .051(ARITHMETIC EV)2.551 F(ALU)-1.215 E(A-)-.54 E -(TION)144 213.6 Q/F4 9/Times-Roman@0 SF(.)A F0 .411(If the v)4.91 F .411 -(alue of the e)-.25 F .411(xpression is non-zero, the return status is \ -0; otherwise the return status)-.15 F(is 1.)144 225.6 Q(This is e)5 E -(xactly equi)-.15 E -.25(va)-.25 G(lent to).25 E F3(let ")2.5 E F1 -.2 -(ex)C(pr).2 E(ession)-.37 E F3(")A F0(.)A F3([[)108 242.4 Q F1 -.2(ex) -2.5 G(pr).2 E(ession)-.37 E F3(]])2.5 E F0 1.3 -(Return a status of 0 or 1 depending on the e)144 254.4 R -.25(va)-.25 G -1.299(luation of the conditional e).25 F(xpression)-.15 E F1 -.2(ex) -3.799 G(pr).2 E(ession)-.37 E F0(.)A 2.273 -(Expressions are composed of the primaries described belo)144 266.4 R -4.774(wu)-.25 G(nder)-4.774 E F2(CONDITION)4.774 E 2.274(AL EXPRES-)-.18 -F(SIONS)144 278.4 Q F4(.)A F0 -.8(Wo)5.633 G 1.133 +(xit status of)-.15 E F2(list)2.5 E F0(.)A({)108 177.6 Q F2(list)2.5 E +F0 2.5(;})C F2(list)144 177.6 Q F0 .401(is simply e)2.901 F -.15(xe)-.15 +G .401(cuted in the current shell en).15 F(vironment.)-.4 E F2(list) +5.401 E F0 .402(must be terminated with a ne)2.901 F .402(wline or)-.25 +F 3.215(semicolon. This)144 189.6 R .715(is kno)3.215 F .715(wn as a) +-.25 F F2(gr)3.215 E .715(oup command)-.45 F F0 5.715(.T)C .715 +(he return status is the e)-5.715 F .714(xit status of)-.15 F F2(list) +3.214 E F0 5.714(.N)C(ote)-5.714 E .219(that unlik)144 201.6 R 2.719(et) +-.1 G .219(he metacharacters)-2.719 F F1(\()2.719 E F0(and)2.719 E F1 +(\))2.719 E F0(,)A F1({)2.719 E F0(and)2.719 E F1(})2.719 E F0(are)2.719 +E F2 -.37(re)2.72 G .22(served wor).37 F(ds)-.37 E F0 .22 +(and must occur where a reserv)2.72 F(ed)-.15 E -.1(wo)144 213.6 S .257 +(rd is permitted to be recognized.).1 F .257(Since the)5.257 F 2.757(yd) +-.15 G 2.756(on)-2.757 G .256(ot cause a w)-2.756 F .256(ord break, the) +-.1 F 2.756(ym)-.15 G .256(ust be separated)-2.756 F(from)144 225.6 Q F2 +(list)2.5 E F0(by whitespace or another shell metacharacter)2.5 E(.)-.55 +E(\(\()108 242.4 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F0(\)\))A(The)144 +254.4 Q F2 -.2(ex)2.551 G(pr).2 E(ession)-.37 E F0 .051(is e)2.551 F +-.25(va)-.25 G .051(luated according to the rules described belo).25 F +2.552(wu)-.25 G(nder)-2.552 E F3 .052(ARITHMETIC EV)2.552 F(ALU)-1.215 E +(A-)-.54 E(TION)144 266.4 Q/F4 9/Times-Roman@0 SF(.)A F0 .411(If the v) +4.911 F .411(alue of the e)-.25 F .411(xpression is non-zero, the retur\ +n status is 0; otherwise the return status)-.15 F(is 1.)144 278.4 Q +(This is e)5 E(xactly equi)-.15 E -.25(va)-.25 G(lent to).25 E F1(let ") +2.5 E F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(")A F0(.)A F1([[)108 295.2 Q +F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F1(]])2.5 E F0 1.299 +(Return a status of 0 or 1 depending on the e)144 307.2 R -.25(va)-.25 G +1.3(luation of the conditional e).25 F(xpression)-.15 E F2 -.2(ex)3.8 G +(pr).2 E(ession)-.37 E F0(.)A 2.274 +(Expressions are composed of the primaries described belo)144 319.2 R +4.773(wu)-.25 G(nder)-4.773 E F3(CONDITION)4.773 E 2.273(AL EXPRES-)-.18 +F(SIONS)144 331.2 Q F4(.)A F0 -.8(Wo)5.632 G 1.133 (rd splitting and pathname e).8 F 1.133 (xpansion are not performed on the w)-.15 F 1.133(ords between the)-.1 F -F3([[)3.632 E F0(and)144 290.4 Q F3(]])2.963 E F0 2.963(;t)C .463 -(ilde e)-2.963 F .464(xpansion, parameter and v)-.15 F .464(ariable e) --.25 F .464(xpansion, arithmetic e)-.15 F .464 +F1([[)3.633 E F0(and)144 343.2 Q F1(]])2.964 E F0 2.964(;t)C .464 +(ilde e)-2.964 F .464(xpansion, parameter and v)-.15 F .464(ariable e) +-.25 F .463(xpansion, arithmetic e)-.15 F .463 (xpansion, command substi-)-.15 F 1.081 -(tution, process substitution, and quote remo)144 302.4 R -.25(va)-.15 G +(tution, process substitution, and quote remo)144 355.2 R -.25(va)-.15 G 3.581(la).25 G 1.081(re performed.)-3.581 F 1.081 -(Conditional operators such as)6.081 F F33.58 E F0 -(must be unquoted to be recognized as primaries.)144 314.4 Q -(When used with)144 332.4 Q F3([[)2.5 E F0 2.5(,t)C(he)-2.5 E F3(<)2.5 E -F0(and)2.5 E F3(>)2.5 E F0(operators sort le)2.5 E -(xicographically using the current locale.)-.15 E .502(When the)144 -350.4 R F3(==)3.002 E F0(and)3.002 E F3(!=)3.002 E F0 .502(operators ar\ +(Conditional operators such as)6.081 F F13.581 E F0 +(must be unquoted to be recognized as primaries.)144 367.2 Q +(When used with)144 385.2 Q F1([[)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E +F0(and)2.5 E F1(>)2.5 E F0(operators sort le)2.5 E +(xicographically using the current locale.)-.15 E .503(When the)144 +403.2 R F1(==)3.003 E F0(and)3.002 E F1(!=)3.002 E F0 .502(operators ar\ e used, the string to the right of the operator is considered a pat-) 3.002 F .81(tern and matched according to the rules described belo)144 -362.4 R 3.31(wu)-.25 G(nder)-3.31 E F3 -.1(Pa)3.31 G(tter).1 E 3.31(nM) +415.2 R 3.31(wu)-.25 G(nder)-3.31 E F1 -.1(Pa)3.31 G(tter).1 E 3.31(nM) -.15 G(atching)-3.31 E F0 3.31(,a)C 3.31(si)-3.31 G 3.31(ft)-3.31 G(he) --3.31 E F3(ext-)3.31 E(glob)144 374.4 Q F0 1.389 -(shell option were enabled.)3.889 F(The)6.389 E F3(=)3.889 E F0 1.389 -(operator is equi)3.889 F -.25(va)-.25 G 1.389(lent to).25 F F3(==)3.89 -E F0 6.39(.I)C 3.89(ft)-6.39 G(he)-3.89 E F3(nocasematch)3.89 E F0 -(shell)3.89 E .272(option is enabled, the match is performed without re) -144 386.4 R -.05(ga)-.15 G .271 -(rd to the case of alphabetic characters.).05 F(The)5.271 E 1.067 -(return v)144 398.4 R 1.068(alue is 0 if the string matches \()-.25 F F3 -(==)A F0 3.568(\)o)C 3.568(rd)-3.568 G 1.068(oes not match \()-3.568 F -F3(!=)A F0 3.568(\)t)C 1.068(he pattern, and 1 otherwise.)-3.568 F(An) -144 410.4 Q 2.5(yp)-.15 G(art of the pattern may be quoted to force the\ - quoted portion to be matched as a string.)-2.5 E .243 -(An additional binary operator)144 428.4 R(,)-.4 E F3(=~)2.743 E F0 +-3.31 E F1(ext-)3.31 E(glob)144 427.2 Q F0 1.39 +(shell option were enabled.)3.89 F(The)6.39 E F1(=)3.889 E F0 1.389 +(operator is equi)3.889 F -.25(va)-.25 G 1.389(lent to).25 F F1(==)3.889 +E F0 6.389(.I)C 3.889(ft)-6.389 G(he)-3.889 E F1(nocasematch)3.889 E F0 +(shell)3.889 E .271 +(option is enabled, the match is performed without re)144 439.2 R -.05 +(ga)-.15 G .272(rd to the case of alphabetic characters.).05 F(The)5.272 +E 1.068(return v)144 451.2 R 1.068(alue is 0 if the string matches \() +-.25 F F1(==)A F0 3.568(\)o)C 3.568(rd)-3.568 G 1.068(oes not match \() +-3.568 F F1(!=)A F0 3.568(\)t)C 1.067(he pattern, and 1 otherwise.) +-3.568 F(An)144 463.2 Q 2.5(yp)-.15 G(art of the pattern may be quoted \ +to force the quoted portion to be matched as a string.)-2.5 E .243 +(An additional binary operator)144 481.2 R(,)-.4 E F1(=~)2.743 E F0 2.743(,i)C 2.743(sa)-2.743 G -.25(va)-2.943 G .243 -(ilable, with the same precedence as).25 F F3(==)2.743 E F0(and)2.743 E -F3(!=)2.743 E F0 5.243(.W)C .243(hen it is)-5.243 F 1.953 -(used, the string to the right of the operator is considered an e)144 -440.4 R 1.954(xtended re)-.15 F 1.954(gular e)-.15 F 1.954 -(xpression and)-.15 F .207(matched accordingly \(as in)144 452.4 R F1 +(ilable, with the same precedence as).25 F F1(==)2.743 E F0(and)2.743 E +F1(!=)2.743 E F0 5.243(.W)C .243(hen it is)-5.243 F .182 +(used, the string to the right of the operator is considered a POSIX e) +144 493.2 R .182(xtended re)-.15 F .181(gular e)-.15 F .181 +(xpression and)-.15 F .207(matched accordingly \(as in)144 505.2 R F2 -.37(re)2.707 G -.1(ge)-.03 G(x)-.1 E F0 2.707(\(3\)\). The)B .207 (return v)2.707 F .207 -(alue is 0 if the string matches the pattern, and 1)-.25 F 3.345 -(otherwise. If)144 464.4 R .845(the re)3.345 F .845(gular e)-.15 F .846 +(alue is 0 if the string matches the pattern, and 1)-.25 F 3.346 +(otherwise. If)144 517.2 R .846(the re)3.346 F .846(gular e)-.15 F .845 (xpression is syntactically incorrect, the conditional e)-.15 F -(xpression')-.15 E 3.346(sr)-.55 G(eturn)-3.346 E -.25(va)144 476.4 S -.667(lue is 2.).25 F .667(If the)5.667 F F3(nocasematch)3.167 E F0 .667 +(xpression')-.15 E 3.345(sr)-.55 G(eturn)-3.345 E -.25(va)144 529.2 S +.666(lue is 2.).25 F .667(If the)5.667 F F1(nocasematch)3.167 E F0 .667 (shell option is enabled, the match is performed without re)3.167 F -.05 -(ga)-.15 G .666(rd to).05 F .592(the case of alphabetic characters.)144 -488.4 R(An)5.592 E 3.092(yp)-.15 G .593 -(art of the pattern may be quoted to force the quoted por)-3.092 F(-)-.2 -E 1.016(tion to be matched as a string.)144 500.4 R(Brack)6.016 E 1.016 +(ga)-.15 G .667(rd to).05 F .593(the case of alphabetic characters.)144 +541.2 R(An)5.593 E 3.093(yp)-.15 G .592 +(art of the pattern may be quoted to force the quoted por)-3.093 F(-)-.2 +E 1.016(tion to be matched as a string.)144 553.2 R(Brack)6.016 E 1.016 (et e)-.1 F 1.016(xpressions in re)-.15 F 1.016(gular e)-.15 F 1.016 -(xpressions must be treated care-)-.15 F(fully)144 512.4 Q 4.435(,s)-.65 -G 1.935 -(ince normal quoting characters lose their meanings between brack)-4.435 -F 4.436(ets. If)-.1 F 1.936(the pattern is)4.436 F .265 -(stored in a shell v)144 524.4 R .265(ariable, quoting the v)-.25 F .264 -(ariable e)-.25 F .264 -(xpansion forces the entire pattern to be matched as)-.15 F 3.773(as)144 -536.4 S 3.773(tring. Substrings)-3.773 F 1.274 -(matched by parenthesized sube)3.773 F 1.274(xpressions within the re) --.15 F 1.274(gular e)-.15 F 1.274(xpression are)-.15 F(sa)144 548.4 Q --.15(ve)-.2 G 3.097(di).15 G 3.097(nt)-3.097 G .597(he array v)-3.097 F -(ariable)-.25 E F2 -.27(BA)3.097 G(SH_REMA).27 E(TCH)-.855 E F4(.)A F0 -.597(The element of)5.097 F F2 -.27(BA)3.097 G(SH_REMA).27 E(TCH)-.855 E -F0 .597(with inde)2.847 F 3.097(x0)-.15 G(is)-.001 E .049 -(the portion of the string matching the entire re)144 560.4 R .049 -(gular e)-.15 F 2.549(xpression. The)-.15 F .05(element of)2.55 F F2 --.27(BA)2.55 G(SH_REMA).27 E(TCH)-.855 E F0(with inde)144 572.4 Q(x)-.15 -E F1(n)2.5 E F0(is the portion of the string matching the)2.5 E F1(n)2.5 -E F0(th parenthesized sube)A(xpression.)-.15 E .786 -(Expressions may be combined using the follo)144 590.4 R .785 +(xpressions must be treated care-)-.15 F(fully)144 565.2 Q 4.436(,s)-.65 +G 1.936 +(ince normal quoting characters lose their meanings between brack)-4.436 +F 4.435(ets. If)-.1 F 1.935(the pattern is)4.435 F .264 +(stored in a shell v)144 577.2 R .264(ariable, quoting the v)-.25 F .264 +(ariable e)-.25 F .265 +(xpansion forces the entire pattern to be matched as)-.15 F 3.774(as)144 +589.2 S 3.774(tring. Substrings)-3.774 F 1.274 +(matched by parenthesized sube)3.774 F 1.273(xpressions within the re) +-.15 F 1.273(gular e)-.15 F 1.273(xpression are)-.15 F(sa)144 601.2 Q +-.15(ve)-.2 G 3.096(di).15 G 3.097(nt)-3.096 G .597(he array v)-3.097 F +(ariable)-.25 E F3 -.27(BA)3.097 G(SH_REMA).27 E(TCH)-.855 E F4(.)A F0 +.597(The element of)5.097 F F3 -.27(BA)3.097 G(SH_REMA).27 E(TCH)-.855 E +F0 .597(with inde)2.847 F 3.097(x0i)-.15 G(s)-3.097 E .049 +(the portion of the string matching the entire re)144 613.2 R .049 +(gular e)-.15 F 2.549(xpression. The)-.15 F .049(element of)2.549 F F3 +-.27(BA)2.549 G(SH_REMA).27 E(TCH)-.855 E F0(with inde)144 625.2 Q(x) +-.15 E F2(n)2.5 E F0(is the portion of the string matching the)2.5 E F2 +(n)2.5 E F0(th parenthesized sube)A(xpression.)-.15 E .785 +(Expressions may be combined using the follo)144 643.2 R .786 (wing operators, listed in decreasing order of prece-)-.25 F(dence:)144 -602.4 Q F3(\()144 620.4 Q F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F3(\)) -2.5 E F0 .522(Returns the v)180 632.4 R .522(alue of)-.25 F F1 -.2(ex) +655.2 Q F1(\()144 673.2 Q F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F1(\)) +2.5 E F0 .523(Returns the v)180 685.2 R .522(alue of)-.25 F F2 -.2(ex) 3.022 G(pr).2 E(ession)-.37 E F0 5.522(.T)C .522(his may be used to o) -5.522 F -.15(ve)-.15 G .522(rride the normal precedence of).15 F -(operators.)180 644.4 Q F3(!)144 656.4 Q F1 -.2(ex)2.5 G(pr).2 E(ession) --.37 E F0 -.35(Tr)180 668.4 S(ue if).35 E F1 -.2(ex)2.5 G(pr).2 E -(ession)-.37 E F0(is f)2.74 E(alse.)-.1 E F1 -.2(ex)144 680.4 S(pr).2 E -(ession1)-.37 E F3(&&)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0 --.35(Tr)180 692.4 S(ue if both).35 E F1 -.2(ex)2.5 G(pr).2 E(ession1) --.37 E F0(and)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0(are true.) -2.52 E F1 -.2(ex)144 704.4 S(pr).2 E(ession1)-.37 E F3(||)2.5 E F1 -.2 -(ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 716.4 S(ue if either).35 -E F1 -.2(ex)2.5 G(pr).2 E(ession1)-.37 E F0(or)2.5 E F1 -.2(ex)2.5 G(pr) -.2 E(ession2)-.37 E F0(is true.)2.52 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(5)197.055 E 0 Cg EP +(operators.)180 697.2 Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E +(5)193.455 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(The)144 84 Q/F1 10 -/Times-Bold@0 SF(&&)3.641 E F0(and)3.641 E F1(||)3.641 E F0 1.141 -(operators do not e)3.641 F -.25(va)-.25 G(luate).25 E/F2 10 -/Times-Italic@0 SF -.2(ex)3.641 G(pr).2 E(ession2)-.37 E F0 1.141 -(if the v)3.641 F 1.14(alue of)-.25 F F2 -.2(ex)3.64 G(pr).2 E(ession1) --.37 E F0 1.14(is suf)3.64 F 1.14(\214cient to)-.25 F -(determine the return v)144 96 Q(alue of the entire conditional e)-.25 E -(xpression.)-.15 E F1 -.25(fo)108 112.8 S(r).25 E F2(name)2.5 E F0 2.5 -([[)2.5 G F1(in)A F0([)2.5 E F2(wor)2.5 E 2.5(d.)-.37 G(..)-2.5 E F0 2.5 -(]];])2.5 G F1(do)A F2(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 .423 -(The list of w)144 124.8 R .423(ords follo)-.1 F(wing)-.25 E F1(in)2.923 -E F0 .423(is e)2.923 F .423(xpanded, generating a list of items.)-.15 F -.424(The v)5.424 F(ariable)-.25 E F2(name)2.924 E F0 .424(is set to) -2.924 F .653(each element of this list in turn, and)144 136.8 R F2(list) -3.153 E F0 .653(is e)3.153 F -.15(xe)-.15 G .653(cuted each time.).15 F -.653(If the)5.653 F F1(in)3.153 E F2(wor)3.153 E(d)-.37 E F0 .653 -(is omitted, the)3.153 F F1 -.25(fo)3.153 G(r).25 E F0 .648(command e) -144 148.8 R -.15(xe)-.15 G(cutes).15 E F2(list)3.148 E F0 .648 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(!)144 84 Q/F2 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E(ession)-.37 E +F0 -.35(Tr)180 96 S(ue if).35 E F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0 +(is f)2.74 E(alse.)-.1 E F2 -.2(ex)144 108 S(pr).2 E(ession1)-.37 E F1 +(&&)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 120 S +(ue if both).35 E F2 -.2(ex)2.5 G(pr).2 E(ession1)-.37 E F0(and)2.5 E F2 +-.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0(are true.)2.52 E F2 -.2(ex)144 +132 S(pr).2 E(ession1)-.37 E F1(||)2.5 E F2 -.2(ex)2.5 G(pr).2 E +(ession2)-.37 E F0 -.35(Tr)180 144 S(ue if either).35 E F2 -.2(ex)2.5 G +(pr).2 E(ession1)-.37 E F0(or)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 +E F0(is true.)2.52 E(The)144 160.8 Q F1(&&)3.64 E F0(and)3.64 E F1(||) +3.64 E F0 1.14(operators do not e)3.64 F -.25(va)-.25 G(luate).25 E F2 +-.2(ex)3.641 G(pr).2 E(ession2)-.37 E F0 1.141(if the v)3.641 F 1.141 +(alue of)-.25 F F2 -.2(ex)3.641 G(pr).2 E(ession1)-.37 E F0 1.141 +(is suf)3.641 F 1.141(\214cient to)-.25 F(determine the return v)144 +172.8 Q(alue of the entire conditional e)-.25 E(xpression.)-.15 E F1 +-.25(fo)108 189.6 S(r).25 E F2(name)2.5 E F0 2.5([[)2.5 G F1(in)A F0([) +2.5 E F2(wor)2.5 E 2.5(d.)-.37 G(..)-2.5 E F0 2.5(]];])2.5 G F1(do)A F2 +(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 .424(The list of w)144 201.6 R +.424(ords follo)-.1 F(wing)-.25 E F1(in)2.924 E F0 .423(is e)2.924 F +.423(xpanded, generating a list of items.)-.15 F .423(The v)5.423 F +(ariable)-.25 E F2(name)2.923 E F0 .423(is set to)2.923 F .653 +(each element of this list in turn, and)144 213.6 R F2(list)3.153 E F0 +.653(is e)3.153 F -.15(xe)-.15 G .653(cuted each time.).15 F .653 +(If the)5.653 F F1(in)3.153 E F2(wor)3.153 E(d)-.37 E F0 .653 +(is omitted, the)3.153 F F1 -.25(fo)3.153 G(r).25 E F0 .649(command e) +144 225.6 R -.15(xe)-.15 G(cutes).15 E F2(list)3.149 E F0 .648 (once for each positional parameter that is set \(see)3.148 F/F3 9 -/Times-Bold@0 SF -.666(PA)3.149 G(RAMETERS).666 E F0(belo)2.899 E(w\).) --.25 E .154(The return status is the e)144 160.8 R .153 -(xit status of the last command that e)-.15 F -.15(xe)-.15 G 2.653 -(cutes. If).15 F .153(the e)2.653 F .153(xpansion of the items)-.15 F -(follo)144 172.8 Q(wing)-.25 E F1(in)2.5 E F0 +/Times-Bold@0 SF -.666(PA)3.148 G(RAMETERS).666 E F0(belo)2.898 E(w\).) +-.25 E .153(The return status is the e)144 237.6 R .153 +(xit status of the last command that e)-.15 F -.15(xe)-.15 G 2.654 +(cutes. If).15 F .154(the e)2.654 F .154(xpansion of the items)-.15 F +(follo)144 249.6 Q(wing)-.25 E F1(in)2.5 E F0 (results in an empty list, no commands are e)2.5 E -.15(xe)-.15 G -(cuted, and the return status is 0.).15 E F1 -.25(fo)108 189.6 S(r).25 E +(cuted, and the return status is 0.).15 E F1 -.25(fo)108 266.4 S(r).25 E F0(\(\()2.5 E F2 -.2(ex)2.5 G(pr1).2 E F0(;)2.5 E F2 -.2(ex)2.5 G(pr2).2 E F0(;)2.5 E F2 -.2(ex)2.5 G(pr3).2 E F0(\)\) ;)2.5 E F1(do)2.5 E F2 -(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 1.235(First, the arithmetic e) -144 201.6 R(xpression)-.15 E F2 -.2(ex)3.735 G(pr1).2 E F0 1.235(is e) -3.735 F -.25(va)-.25 G 1.236 -(luated according to the rules described belo).25 F 3.736(wu)-.25 G -(nder)-3.736 E F3 .562(ARITHMETIC EV)144 213.6 R(ALU)-1.215 E -.855(AT) --.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 .562(The arithmetic e) -5.062 F(xpression)-.15 E F2 -.2(ex)3.062 G(pr2).2 E F0 .561(is then e) -3.061 F -.25(va)-.25 G .561(luated repeatedly until).25 F .591(it e)144 -225.6 R -.25(va)-.25 G .591(luates to zero.).25 F .592(Each time)5.591 F +(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 1.236(First, the arithmetic e) +144 278.4 R(xpression)-.15 E F2 -.2(ex)3.736 G(pr1).2 E F0 1.235(is e) +3.736 F -.25(va)-.25 G 1.235 +(luated according to the rules described belo).25 F 3.735(wu)-.25 G +(nder)-3.735 E F3 .561(ARITHMETIC EV)144 290.4 R(ALU)-1.215 E -.855(AT) +-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 .561(The arithmetic e) +5.061 F(xpression)-.15 E F2 -.2(ex)3.061 G(pr2).2 E F0 .562(is then e) +3.062 F -.25(va)-.25 G .562(luated repeatedly until).25 F .592(it e)144 +302.4 R -.25(va)-.25 G .592(luates to zero.).25 F .592(Each time)5.592 F F2 -.2(ex)3.092 G(pr2).2 E F0 -.25(eva)3.092 G .592 -(luates to a non-zero v).25 F(alue,)-.25 E F2(list)3.092 E F0 .592(is e) -3.092 F -.15(xe)-.15 G .592(cuted and the arith-).15 F .229(metic e)144 -237.6 R(xpression)-.15 E F2 -.2(ex)2.729 G(pr3).2 E F0 .229(is e)2.729 F +(luates to a non-zero v).25 F(alue,)-.25 E F2(list)3.092 E F0 .591(is e) +3.092 F -.15(xe)-.15 G .591(cuted and the arith-).15 F .228(metic e)144 +314.4 R(xpression)-.15 E F2 -.2(ex)2.728 G(pr3).2 E F0 .229(is e)2.728 F -.25(va)-.25 G 2.729(luated. If).25 F(an)2.729 E 2.729(ye)-.15 G .229 (xpression is omitted, it beha)-2.879 F -.15(ve)-.2 G 2.729(sa).15 G -2.729(si)-2.729 G 2.729(fi)-2.729 G 2.728(te)-2.729 G -.25(va)-2.978 G -.228(luates to 1.).25 F .227(The return v)144 249.6 R .227 -(alue is the e)-.25 F .227(xit status of the last command in)-.15 F F2 -(list)2.728 E F0 .228(that is e)2.728 F -.15(xe)-.15 G .228(cuted, or f) -.15 F .228(alse if an)-.1 F 2.728(yo)-.15 G 2.728(ft)-2.728 G(he)-2.728 -E -.15(ex)144 261.6 S(pressions is in).15 E -.25(va)-.4 G(lid.).25 E F1 -(select)108 278.4 Q F2(name)2.5 E F0([)2.5 E F1(in)2.5 E F2(wor)2.5 E(d) +2.729(si)-2.729 G 2.729(fi)-2.729 G 2.729(te)-2.729 G -.25(va)-2.979 G +.229(luates to 1.).25 F .228(The return v)144 326.4 R .228 +(alue is the e)-.25 F .228(xit status of the last command in)-.15 F F2 +(list)2.728 E F0 .227(that is e)2.728 F -.15(xe)-.15 G .227(cuted, or f) +.15 F .227(alse if an)-.1 F 2.727(yo)-.15 G 2.727(ft)-2.727 G(he)-2.727 +E -.15(ex)144 338.4 S(pressions is in).15 E -.25(va)-.4 G(lid.).25 E F1 +(select)108 355.2 Q F2(name)2.5 E F0([)2.5 E F1(in)2.5 E F2(wor)2.5 E(d) -.37 E F0 2.5(];)2.5 G F1(do)A F2(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 -.433(The list of w)144 290.4 R .433(ords follo)-.1 F(wing)-.25 E F1(in) -2.933 E F0 .432(is e)2.933 F .432(xpanded, generating a list of items.) --.15 F .432(The set of e)5.432 F .432(xpanded w)-.15 F(ords)-.1 E .842 -(is printed on the standard error)144 302.4 R 3.342(,e)-.4 G .842 +.432(The list of w)144 367.2 R .432(ords follo)-.1 F(wing)-.25 E F1(in) +2.932 E F0 .432(is e)2.932 F .432(xpanded, generating a list of items.) +-.15 F .433(The set of e)5.433 F .433(xpanded w)-.15 F(ords)-.1 E .843 +(is printed on the standard error)144 379.2 R 3.342(,e)-.4 G .842 (ach preceded by a number)-3.342 F 5.842(.I)-.55 G 3.342(ft)-5.842 G(he) --3.342 E F1(in)3.342 E F2(wor)3.342 E(d)-.37 E F0 .843 -(is omitted, the posi-)3.343 F .201(tional parameters are printed \(see) -144 314.4 R F3 -.666(PA)2.701 G(RAMETERS).666 E F0(belo)2.451 E 2.701 +-3.342 E F1(in)3.342 E F2(wor)3.342 E(d)-.37 E F0 .842 +(is omitted, the posi-)3.342 F .201(tional parameters are printed \(see) +144 391.2 R F3 -.666(PA)2.701 G(RAMETERS).666 E F0(belo)2.451 E 2.701 (w\). The)-.25 F F3(PS3)2.701 E F0 .201(prompt is then displayed and a) -2.451 F .213(line read from the standard input.)144 326.4 R .213 -(If the line consists of a number corresponding to one of the dis-)5.213 -F 1.538(played w)144 338.4 R 1.538(ords, then the v)-.1 F 1.538(alue of) --.25 F F2(name)4.398 E F0 1.537(is set to that w)4.218 F 4.037(ord. If) --.1 F 1.537(the line is empty)4.037 F 4.037(,t)-.65 G 1.537(he w)-4.037 -F 1.537(ords and)-.1 F .065(prompt are displayed ag)144 350.4 R 2.565 -(ain. If)-.05 F .065(EOF is read, the command completes.)2.565 F(An) -5.066 E 2.566(yo)-.15 G .066(ther v)-2.566 F .066(alue read causes)-.25 -F F2(name)144.36 362.4 Q F0 .954(to be set to null.)3.634 F .954 -(The line read is sa)5.954 F -.15(ve)-.2 G 3.453(di).15 G 3.453(nt) --3.453 G .953(he v)-3.453 F(ariable)-.25 E F3(REPL)3.453 E(Y)-.828 E F4 -(.)A F0(The)5.453 E F2(list)3.543 E F0 .953(is e)4.133 F -.15(xe)-.15 G -.953(cuted after).15 F .071(each selection until a)144 374.4 R F1(br) +2.451 F .214(line read from the standard input.)144 403.2 R .213 +(If the line consists of a number corresponding to one of the dis-)5.214 +F 1.537(played w)144 415.2 R 1.537(ords, then the v)-.1 F 1.537(alue of) +-.25 F F2(name)4.397 E F0 1.537(is set to that w)4.217 F 4.037(ord. If) +-.1 F 1.538(the line is empty)4.038 F 4.038(,t)-.65 G 1.538(he w)-4.038 +F 1.538(ords and)-.1 F .066(prompt are displayed ag)144 427.2 R 2.566 +(ain. If)-.05 F .065(EOF is read, the command completes.)2.566 F(An) +5.065 E 2.565(yo)-.15 G .065(ther v)-2.565 F .065(alue read causes)-.25 +F F2(name)144.36 439.2 Q F0 .953(to be set to null.)3.633 F .953 +(The line read is sa)5.953 F -.15(ve)-.2 G 3.454(di).15 G 3.454(nt) +-3.454 G .954(he v)-3.454 F(ariable)-.25 E F3(REPL)3.454 E(Y)-.828 E F4 +(.)A F0(The)5.454 E F2(list)3.544 E F0 .954(is e)4.134 F -.15(xe)-.15 G +.954(cuted after).15 F .072(each selection until a)144 451.2 R F1(br) 2.571 E(eak)-.18 E F0 .071(command is e)2.571 F -.15(xe)-.15 G 2.571 (cuted. The).15 F -.15(ex)2.571 G .071(it status of).15 F F1(select) -2.571 E F0 .071(is the e)2.571 F .072(xit status of the)-.15 F -(last command e)144 386.4 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.5 E +2.571 E F0 .071(is the e)2.571 F .071(xit status of the)-.15 F +(last command e)144 463.2 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.5 E F0 2.5(,o).68 G 2.5(rz)-2.5 G(ero if no commands were e)-2.5 E -.15(xe) --.15 G(cuted.).15 E F1(case)108 403.2 Q F2(wor)2.5 E(d)-.37 E F1(in)2.5 -E F0 2.5([[)2.5 G(\(])-2.5 E F2(pattern)2.5 E F0([)2.5 E F1(|)2.5 E F2 +-.15 G(cuted.).15 E F1(case)108 480 Q F2(wor)2.5 E(d)-.37 E F1(in)2.5 E +F0 2.5([[)2.5 G(\(])-2.5 E F2(pattern)2.5 E F0([)2.5 E F1(|)2.5 E F2 (pattern)2.5 E F0 2.5(].)2.5 G(.. \))-2.5 E F2(list)2.5 E F0(;; ] ...) -2.5 E F1(esac)2.5 E F0(A)144 415.2 Q F1(case)3.265 E F0 .764 -(command \214rst e)3.265 F(xpands)-.15 E F2(wor)3.264 E(d)-.37 E F0 +2.5 E F1(esac)2.5 E F0(A)144 492 Q F1(case)3.264 E F0 .764 +(command \214rst e)3.264 F(xpands)-.15 E F2(wor)3.264 E(d)-.37 E F0 3.264(,a)C .764(nd tries to match it ag)-3.264 F .764(ainst each)-.05 F -F2(pattern)3.264 E F0 .764(in turn, using the)3.264 F .595 -(same matching rules as for pathname e)144 427.2 R .595(xpansion \(see) --.15 F F1 -.1(Pa)3.095 G .596(thname Expansion).1 F F0(belo)3.096 E -3.096(w\). The)-.25 F F2(wor)3.096 E(d)-.37 E F0(is)3.096 E -.15(ex)144 -439.2 S 1.72(panded using tilde e).15 F 1.72(xpansion, parameter and v) --.15 F 1.72(ariable e)-.25 F 1.72(xpansion, arithmetic e)-.15 F 1.72 -(xpansion, com-)-.15 F 1.268 -(mand substitution, process substitution and quote remo)144 451.2 R -.25 -(va)-.15 G 3.768(l. Each).25 F F2(pattern)3.768 E F0 -.15(ex)3.768 G -1.269(amined is e).15 F(xpanded)-.15 E .203(using tilde e)144 463.2 R -.203(xpansion, parameter and v)-.15 F .203(ariable e)-.25 F .203 -(xpansion, arithmetic e)-.15 F .203(xpansion, command substitu-)-.15 F -.232(tion, and process substitution.)144 475.2 R .233(If the)5.233 F F1 -(nocasematch)2.733 E F0 .233 -(shell option is enabled, the match is performed)2.733 F .234 -(without re)144 487.2 R -.05(ga)-.15 G .234 -(rd to the case of alphabetic characters.).05 F .234 -(When a match is found, the corresponding)5.234 F F2(list)2.734 E F0 -.625(is e)144 499.2 R -.15(xe)-.15 G 3.125(cuted. If).15 F(the)3.125 E -F1(;;)3.125 E F0 .625(operator is used, no subsequent matches are attem\ -pted after the \214rst pattern)3.125 F 2.932(match. Using)144 511.2 R F1 -(;&)2.932 E F0 .432(in place of)2.932 F F1(;;)2.932 E F0 .432(causes e) -2.932 F -.15(xe)-.15 G .432(cution to continue with the).15 F F2(list) -2.932 E F0 .431(associated with the ne)2.931 F(xt)-.15 E .866 -(set of patterns.)144 523.2 R(Using)5.866 E F1(;;&)3.366 E F0 .866 -(in place of)3.366 F F1(;;)3.366 E F0 .866 -(causes the shell to test the ne)3.366 F .866 -(xt pattern list in the state-)-.15 F .878(ment, if an)144 535.2 R 2.178 --.65(y, a)-.15 H .878(nd e).65 F -.15(xe)-.15 G .878(cute an).15 F 3.378 -(ya)-.15 G(ssociated)-3.378 E F2(list)3.378 E F0 .878 -(on a successful match.)3.378 F .878(The e)5.878 F .877 -(xit status is zero if no)-.15 F(pattern matches.)144 547.2 Q -(Otherwise, it is the e)5 E(xit status of the last command e)-.15 E -.15 -(xe)-.15 G(cuted in).15 E F2(list)2.5 E F0(.)A F1(if)108 564 Q F2(list) -2.5 E F0(;)A F1(then)2.5 E F2(list)2.5 E F0 2.5(;[)C F1(elif)A F2(list) -2.5 E F0(;)A F1(then)2.5 E F2(list)2.5 E F0 2.5(;].)C(.. [)-2.5 E F1 -(else)2.5 E F2(list)2.5 E F0 2.5(;])C F1<8c>A F0(The)144 576 Q F1(if) -2.977 E F2(list)3.067 E F0 .478(is e)3.658 F -.15(xe)-.15 G 2.978 -(cuted. If).15 F .478(its e)2.978 F .478(xit status is zero, the)-.15 F -F1(then)2.978 E F2(list)2.978 E F0 .478(is e)2.978 F -.15(xe)-.15 G -2.978(cuted. Otherwise,).15 F(each)2.978 E F1(elif)2.978 E F2(list)2.978 -E F0 1.088(is e)144 588 R -.15(xe)-.15 G 1.088 -(cuted in turn, and if its e).15 F 1.087 +F2(pattern)3.264 E F0 .765(in turn, using the)3.264 F 2.218 +(matching rules described under)144 504 R F1 -.1(Pa)4.718 G(tter).1 E +4.718(nM)-.15 G(atching)-4.718 E F0(belo)4.718 E 6.017 -.65(w. T)-.25 H +(he).65 E F2(wor)4.717 E(d)-.37 E F0 2.217(is e)4.717 F 2.217 +(xpanded using tilde)-.15 F -.15(ex)144 516 S 3.968 +(pansion, parameter and v).15 F 3.969(ariable e)-.25 F 3.969 +(xpansion, arithmetic e)-.15 F 3.969(xpansion, command substitution,) +-.15 F .042(process substitution and quote remo)144 528 R -.25(va)-.15 G +2.542(l. Each).25 F F2(pattern)2.542 E F0 -.15(ex)2.542 G .042 +(amined is e).15 F .041(xpanded using tilde e)-.15 F(xpansion,)-.15 E .8 +(parameter and v)144 540 R .8(ariable e)-.25 F .8 +(xpansion, arithmetic e)-.15 F .8 +(xpansion, command substitution, and process sub-)-.15 F 2.583 +(stitution. If)144 552 R(the)2.583 E F1(nocasematch)2.583 E F0 .083 +(shell option is enabled, the match is performed without re)2.583 F -.05 +(ga)-.15 G .082(rd to the).05 F .278(case of alphabetic characters.)144 +564 R .279(When a match is found, the corresponding)5.278 F F2(list) +2.779 E F0 .279(is e)2.779 F -.15(xe)-.15 G 2.779(cuted. If).15 F(the) +2.779 E F1(;;)2.779 E F0 .812(operator is used, no subsequent matches a\ +re attempted after the \214rst pattern match.)144 576 R(Using)5.812 E F1 +(;&)3.312 E F0(in)3.312 E .007(place of)144 588 R F1(;;)2.507 E F0 .007 +(causes e)2.507 F -.15(xe)-.15 G .007(cution to continue with the).15 F +F2(list)2.507 E F0 .007(associated with the ne)2.507 F .007 +(xt set of patterns.)-.15 F(Using)5.008 E F1(;;&)144 600 Q F0 .561 +(in place of)3.061 F F1(;;)3.061 E F0 .561 +(causes the shell to test the ne)3.061 F .56 +(xt pattern list in the statement, if an)-.15 F 1.86 -.65(y, a)-.15 H +.56(nd e).65 F -.15(xe)-.15 G(cute).15 E(an)144 612 Q 2.568(ya)-.15 G +(ssociated)-2.568 E F2(list)2.568 E F0 .068(on a successful match.)2.568 +F .068(The e)5.068 F .068(xit status is zero if no pattern matches.)-.15 +F(Otherwise,)5.069 E(it is the e)144 624 Q +(xit status of the last command e)-.15 E -.15(xe)-.15 G(cuted in).15 E +F2(list)2.5 E F0(.)A F1(if)108 640.8 Q F2(list)2.5 E F0(;)A F1(then)2.5 +E F2(list)2.5 E F0 2.5(;[)C F1(elif)A F2(list)2.5 E F0(;)A F1(then)2.5 E +F2(list)2.5 E F0 2.5(;].)C(.. [)-2.5 E F1(else)2.5 E F2(list)2.5 E F0 +2.5(;])C F1<8c>A F0(The)144 652.8 Q F1(if)2.978 E F2(list)3.068 E F0 +.478(is e)3.658 F -.15(xe)-.15 G 2.978(cuted. If).15 F .478(its e)2.978 +F .478(xit status is zero, the)-.15 F F1(then)2.978 E F2(list)2.978 E F0 +.478(is e)2.978 F -.15(xe)-.15 G 2.978(cuted. Otherwise,).15 F(each) +2.978 E F1(elif)2.977 E F2(list)2.977 E F0 1.087(is e)144 664.8 R -.15 +(xe)-.15 G 1.087(cuted in turn, and if its e).15 F 1.087 (xit status is zero, the corresponding)-.15 F F1(then)3.587 E F2(list) -3.587 E F0 1.087(is e)3.587 F -.15(xe)-.15 G 1.087(cuted and the).15 F -.103(command completes.)144 600 R .103(Otherwise, the)5.103 F F1(else) +3.587 E F0 1.088(is e)3.588 F -.15(xe)-.15 G 1.088(cuted and the).15 F +.104(command completes.)144 676.8 R .103(Otherwise, the)5.104 F F1(else) 2.603 E F2(list)2.603 E F0 .103(is e)2.603 F -.15(xe)-.15 G .103 (cuted, if present.).15 F .103(The e)5.103 F .103(xit status is the e) --.15 F .104(xit sta-)-.15 F(tus of the last command e)144 612 Q -.15(xe) --.15 G(cuted, or zero if no condition tested true.).15 E F1(while)108 -628.8 Q F2(list-1)2.5 E F0(;)A F1(do)2.5 E F2(list-2)2.5 E F0(;)A F1 -(done)2.5 E(until)108 640.8 Q F2(list-1)2.5 E F0(;)A F1(do)2.5 E F2 -(list-2)2.5 E F0(;)A F1(done)2.5 E F0(The)144 652.8 Q F1(while)3.45 E F0 -.95(command continuously e)3.45 F -.15(xe)-.15 G .95(cutes the list).15 -F F2(list-2)3.45 E F0 .95(as long as the last command in the list)3.45 F -F2(list-1)144 664.8 Q F0 .205(returns an e)2.705 F .205 -(xit status of zero.)-.15 F(The)5.205 E F1(until)2.705 E F0 .205 -(command is identical to the)2.705 F F1(while)2.705 E F0 .205 -(command, e)2.705 F(xcept)-.15 E .6(that the test is ne)144 676.8 R -.05 -(ga)-.15 G(ted:).05 E F2(list-2)3.19 E F0 .6(is e)3.12 F -.15(xe)-.15 G -.599(cuted as long as the last command in).15 F F2(list-1)3.189 E F0 -.599(returns a non-zero)3.099 F -.15(ex)144 688.8 S .204(it status.).15 -F .204(The e)5.204 F .204(xit status of the)-.15 F F1(while)2.704 E F0 -(and)2.704 E F1(until)2.704 E F0 .205(commands is the e)2.704 F .205 -(xit status of the last command)-.15 F -.15(exe)144 700.8 S(cuted in).15 -E F2(list-2)2.5 E F0 2.5(,o)C 2.5(rz)-2.5 G(ero if none w)-2.5 E(as e) --.1 E -.15(xe)-.15 G(cuted.).15 E(GNU Bash 4.4)72 768 Q(2016 August 26) -142.895 E(6)197.055 E 0 Cg EP +-.15 F .103(xit sta-)-.15 F(tus of the last command e)144 688.8 Q -.15 +(xe)-.15 G(cuted, or zero if no condition tested true.).15 E F1(while) +108 705.6 Q F2(list-1)2.5 E F0(;)A F1(do)2.5 E F2(list-2)2.5 E F0(;)A F1 +(done)2.5 E F0(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(6)193.455 +E 0 Cg EP %%Page: 7 7 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(Copr)87 84 Q(ocesses)-.18 E F0(A)108 96 Q/F2 10/Times-Italic@0 SF -(copr)3.713 E(ocess)-.45 E F0 1.213(is a shell command preceded by the) -3.713 F F1(copr)3.712 E(oc)-.18 E F0(reserv)3.712 E 1.212(ed w)-.15 F -3.712(ord. A)-.1 F 1.212(coprocess is e)3.712 F -.15(xe)-.15 G 1.212 -(cuted asyn-).15 F .574(chronously in a subshell, as if the command had\ - been terminated with the)108 108 R F1(&)3.075 E F0 .575 -(control operator)3.075 F 3.075(,w)-.4 G .575(ith a tw)-3.075 F(o-)-.1 E --.1(wa)108 120 S 2.5(yp).1 G(ipe established between the e)-2.5 E -.15 -(xe)-.15 G(cuting shell and the coprocess.).15 E -(The format for a coprocess is:)108 136.8 Q F1(copr)144 153.6 Q(oc)-.18 -E F0([)2.5 E F2 -.27(NA)C(ME).27 E F0(])A F2(command)2.5 E F0([)2.5 E F2 --.37(re)C(dir).37 E(ections)-.37 E F0(])A .709 -(This creates a coprocess named)108 170.4 R F2 -.27(NA)3.208 G(ME).27 E -F0 5.708(.I)C(f)-5.708 E F2 -.27(NA)3.208 G(ME).27 E F0 .708 -(is not supplied, the def)3.208 F .708(ault name is)-.1 F F1(COPR)3.208 -E(OC)-.3 E F0(.)A F2 -.27(NA)5.708 G(ME).27 E F0 .64 -(must not be supplied if)108 182.4 R F2(command)3.14 E F0 .64(is a)3.14 +SF(until)108 84 Q/F2 10/Times-Italic@0 SF(list-1)2.5 E F0(;)A F1(do)2.5 +E F2(list-2)2.5 E F0(;)A F1(done)2.5 E F0(The)144 96 Q F1(while)3.45 E +F0 .95(command continuously e)3.45 F -.15(xe)-.15 G .95(cutes the list) +.15 F F2(list-2)3.45 E F0 .95(as long as the last command in the list) +3.45 F F2(list-1)144 108 Q F0 .205(returns an e)2.705 F .205 +(xit status of zero.)-.15 F(The)5.205 E F1(until)2.705 E F0 .205 +(command is identical to the)2.705 F F1(while)2.705 E F0 .205 +(command, e)2.705 F(xcept)-.15 E .599(that the test is ne)144 120 R -.05 +(ga)-.15 G(ted:).05 E F2(list-2)3.189 E F0 .599(is e)3.119 F -.15(xe) +-.15 G .6(cuted as long as the last command in).15 F F2(list-1)3.19 E F0 +.6(returns a non-zero)3.1 F -.15(ex)144 132 S .205(it status.).15 F .205 +(The e)5.205 F .205(xit status of the)-.15 F F1(while)2.705 E F0(and) +2.705 E F1(until)2.704 E F0 .204(commands is the e)2.704 F .204 +(xit status of the last command)-.15 F -.15(exe)144 144 S(cuted in).15 E +F2(list-2)2.5 E F0 2.5(,o)C 2.5(rz)-2.5 G(ero if none w)-2.5 E(as e)-.1 +E -.15(xe)-.15 G(cuted.).15 E F1(Copr)87 160.8 Q(ocesses)-.18 E F0(A)108 +172.8 Q F2(copr)3.712 E(ocess)-.45 E F0 1.212 +(is a shell command preceded by the)3.712 F F1(copr)3.713 E(oc)-.18 E F0 +(reserv)3.713 E 1.213(ed w)-.15 F 3.713(ord. A)-.1 F 1.213 +(coprocess is e)3.713 F -.15(xe)-.15 G 1.213(cuted asyn-).15 F .575(chr\ +onously in a subshell, as if the command had been terminated with the) +108 184.8 R F1(&)3.074 E F0 .574(control operator)3.074 F 3.074(,w)-.4 G +.574(ith a tw)-3.074 F(o-)-.1 E -.1(wa)108 196.8 S 2.5(yp).1 G +(ipe established between the e)-2.5 E -.15(xe)-.15 G +(cuting shell and the coprocess.).15 E(The format for a coprocess is:) +108 213.6 Q F1(copr)144 230.4 Q(oc)-.18 E F0([)2.5 E F2 -.27(NA)C(ME).27 +E F0(])A F2(command)2.5 E F0([)2.5 E F2 -.37(re)C(dir).37 E(ections)-.37 +E F0(])A .708(This creates a coprocess named)108 247.2 R F2 -.27(NA) +3.208 G(ME).27 E F0 5.708(.I)C(f)-5.708 E F2 -.27(NA)3.208 G(ME).27 E F0 +.708(is not supplied, the def)3.208 F .708(ault name is)-.1 F F1(COPR) +3.209 E(OC)-.3 E F0(.)A F2 -.27(NA)5.709 G(ME).27 E F0 .64 +(must not be supplied if)108 259.2 R F2(command)3.14 E F0 .64(is a)3.14 F F2 .64(simple command)3.14 F F0 .64(\(see abo)3.14 F -.15(ve)-.15 G .64(\); otherwise, it is interpreted as the \214rst).15 F -.1(wo)108 -194.4 S 1.44(rd of the simple command.).1 F 1.44 +271.2 S 1.44(rd of the simple command.).1 F 1.44 (When the coprocess is e)6.44 F -.15(xe)-.15 G 1.44 (cuted, the shell creates an array v).15 F 1.44(ariable \(see)-.25 F F1 -(Arrays)108 206.4 Q F0(belo)3.67 E 1.17(w\) named)-.25 F F2 -.27(NA)3.67 -G(ME).27 E F0 1.17(in the conte)3.67 F 1.171(xt of the e)-.15 F -.15(xe) --.15 G 1.171(cuting shell.).15 F 1.171(The standard output of)6.171 F F2 -(command)3.871 E F0(is)4.441 E 2.029 -(connected via a pipe to a \214le descriptor in the e)108 218.4 R -.15 +(Arrays)108 283.2 Q F0(belo)3.671 E 1.171(w\) named)-.25 F F2 -.27(NA) +3.671 G(ME).27 E F0 1.171(in the conte)3.671 F 1.171(xt of the e)-.15 F +-.15(xe)-.15 G 1.171(cuting shell.).15 F 1.17(The standard output of) +6.17 F F2(command)3.87 E F0(is)4.44 E 2.029 +(connected via a pipe to a \214le descriptor in the e)108 295.2 R -.15 (xe)-.15 G 2.029 (cuting shell, and that \214le descriptor is assigned to).15 F F2 -.27 -(NA)108 230.4 S(ME).27 E F0 3.856([0]. The)B 1.356(standard input of) -3.856 F F2(command)4.056 E F0 1.357 -(is connected via a pipe to a \214le descriptor in the e)4.626 F -.15 +(NA)108 307.2 S(ME).27 E F0 3.857([0]. The)B 1.357(standard input of) +3.857 F F2(command)4.057 E F0 1.356 +(is connected via a pipe to a \214le descriptor in the e)4.627 F -.15 (xe)-.15 G(cuting).15 E .103 -(shell, and that \214le descriptor is assigned to)108 242.4 R F2 -.27 +(shell, and that \214le descriptor is assigned to)108 319.2 R F2 -.27 (NA)2.603 G(ME).27 E F0 2.603([1]. This)B .103 -(pipe is established before an)2.603 F 2.603(yr)-.15 G .103 -(edirections spec-)-2.603 F 1.271(i\214ed by the command \(see)108 254.4 +(pipe is established before an)2.603 F 2.604(yr)-.15 G .104 +(edirections spec-)-2.604 F 1.272(i\214ed by the command \(see)108 331.2 R/F3 9/Times-Bold@0 SF(REDIRECTION)3.771 E F0(belo)3.521 E 3.771 (w\). The)-.25 F 1.271(\214le descriptors can be utilized as ar)3.771 F -1.272(guments to)-.18 F .515 -(shell commands and redirections using standard w)108 266.4 R .515 -(ord e)-.1 F 3.015(xpansions. The)-.15 F .515 -(\214le descriptors are not a)3.015 F -.25(va)-.2 G .515(ilable in).25 F -3.636(subshells. The)108 278.4 R 1.136(process ID of the shell spa)3.636 -F 1.137(wned to e)-.15 F -.15(xe)-.15 G 1.137(cute the coprocess is a) -.15 F -.25(va)-.2 G 1.137(ilable as the v).25 F 1.137(alue of the)-.25 F --.25(va)108 290.4 S(riable).25 E F2 -.27(NA)2.5 G(ME).27 E F0 2.5 -(_PID. The)B F1(wait)2.5 E F0 -.2(bu)2.5 G -(iltin command may be used to w).2 E +1.271(guments to)-.18 F 1.719 +(shell commands and redirections using standard w)108 343.2 R 1.719 +(ord e)-.1 F 4.219(xpansions. Other)-.15 F 1.72(than those created to e) +4.219 F -.15(xe)-.15 G(cute).15 E .945 +(command and process substitutions, the \214le descriptors are not a)108 +355.2 R -.25(va)-.2 G .945(ilable in subshells.).25 F .944 +(The process ID of)5.944 F .597(the shell spa)108 367.2 R .597 +(wned to e)-.15 F -.15(xe)-.15 G .597(cute the coprocess is a).15 F -.25 +(va)-.2 G .597(ilable as the v).25 F .597(alue of the v)-.25 F(ariable) +-.25 E F2 -.27(NA)3.097 G(ME).27 E F0 3.097(_PID. The)B F1(wait)3.098 E +F0 -.2(bu)108 379.2 S(iltin command may be used to w).2 E (ait for the coprocess to terminate.)-.1 E .336 -(Since the coprocess is created as an asynchronous command, the)108 -307.2 R F1(copr)2.836 E(oc)-.18 E F0 .335(command al)2.835 F -.1(wa)-.1 -G .335(ys returns success.).1 F -(The return status of a coprocess is the e)108 319.2 Q(xit status of) --.15 E F2(command)2.5 E F0(.)A F1(Shell Function De\214nitions)87 336 Q -F0 2.697(As)108 348 S .198 +(Since the coprocess is created as an asynchronous command, the)108 396 +R F1(copr)2.836 E(oc)-.18 E F0 .335(command al)2.835 F -.1(wa)-.1 G .335 +(ys returns success.).1 F(The return status of a coprocess is the e)108 +408 Q(xit status of)-.15 E F2(command)2.5 E F0(.)A F1 +(Shell Function De\214nitions)87 424.8 Q F0 2.697(As)108 436.8 S .198 (hell function is an object that is called lik)-2.697 F 2.698(eas)-.1 G .198(imple command and e)-2.698 F -.15(xe)-.15 G .198 -(cutes a compound command with).15 F 2.5(an)108 360 S .5 -.25(ew s)-2.5 -H(et of positional parameters.).25 E -(Shell functions are declared as follo)5 E(ws:)-.25 E F2(name)108 376.8 +(cutes a compound command with).15 F 2.5(an)108 448.8 S .5 -.25(ew s) +-2.5 H(et of positional parameters.).25 E +(Shell functions are declared as follo)5 E(ws:)-.25 E F2(name)108 465.6 Q F0(\(\))2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C -(dir).37 E(ection)-.37 E F0(])A F1(function)108 388.8 Q F2(name)2.5 E F0 +(dir).37 E(ection)-.37 E F0(])A F1(function)108 477.6 Q F2(name)2.5 E F0 ([\(\)])2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C(dir) .37 E(ection)-.37 E F0(])A 1.403(This de\214nes a function named)144 -400.8 R F2(name)3.902 E F0 6.402(.T)C 1.402(he reserv)-6.402 F 1.402 +489.6 R F2(name)3.902 E F0 6.402(.T)C 1.402(he reserv)-6.402 F 1.402 (ed w)-.15 F(ord)-.1 E F1(function)3.902 E F0 1.402(is optional.)3.902 F -1.402(If the)6.402 F F1(function)3.902 E F0(reserv)144 412.8 Q .162 +1.402(If the)6.402 F F1(function)3.902 E F0(reserv)144 501.6 Q .162 (ed w)-.15 F .162(ord is supplied, the parentheses are optional.)-.1 F (The)5.162 E F2(body)2.662 E F0 .162(of the function is the compound) -2.662 F(command)144 424.8 Q F2(compound\255command)2.784 E F0(\(see) +2.662 F(command)144 513.6 Q F2(compound\255command)2.784 E F0(\(see) 3.354 E F1 .084(Compound Commands)2.584 F F0(abo)2.584 E -.15(ve)-.15 G -2.584(\). That).15 F .084(command is usually a)2.584 F F2(list)144 436.8 +2.584(\). That).15 F .084(command is usually a)2.584 F F2(list)144 525.6 Q F0 .044(of commands between { and }, b)2.544 F .044(ut may be an)-.2 F 2.544(yc)-.15 G .044(ommand listed under)-2.544 F F1 .044 -(Compound Commands)2.544 F F0(abo)144 448.8 Q -.15(ve)-.15 G 2.902(,w) +(Compound Commands)2.544 F F0(abo)144 537.6 Q -.15(ve)-.15 G 2.902(,w) .15 G .402(ith one e)-2.902 F .402(xception: If the)-.15 F F1(function) 2.901 E F0(reserv)2.901 E .401(ed w)-.15 F .401(ord is used, b)-.1 F .401(ut the parentheses are not sup-)-.2 F .047 -(plied, the braces are required.)144 460.8 R F2(compound\255command) +(plied, the braces are required.)144 549.6 R F2(compound\255command) 5.047 E F0 .047(is e)2.547 F -.15(xe)-.15 G .047(cuted whene).15 F -.15 (ve)-.25 G(r).15 E F2(name)2.547 E F0 .047(is speci\214ed as the)2.547 F -1.68(name of a simple command.)144 472.8 R 1.68(When in)6.68 F F2 1.68 +1.68(name of a simple command.)144 561.6 R 1.68(When in)6.68 F F2 1.68 (posix mode)4.18 F F0(,)A F2(name)4.179 E F0 1.679 -(may not be the name of one of the)4.179 F(POSIX)144 484.8 Q F2 .014 +(may not be the name of one of the)4.179 F(POSIX)144 573.6 Q F2 .014 (special b)2.513 F(uiltins)-.2 E F0 5.014(.A)C .314 -.15(ny r)-5.014 H .014(edirections \(see).15 F F3(REDIRECTION)2.514 E F0(belo)2.264 E .014 (w\) speci\214ed when a function is)-.25 F 1.12 -(de\214ned are performed when the function is e)144 496.8 R -.15(xe)-.15 +(de\214ned are performed when the function is e)144 585.6 R -.15(xe)-.15 G 3.619(cuted. The).15 F -.15(ex)3.619 G 1.119 (it status of a function de\214nition is).15 F .217(zero unless a synta\ x error occurs or a readonly function with the same name already e)144 -508.8 R 2.717(xists. When)-.15 F -.15(exe)144 520.8 S .546(cuted, the e) +597.6 R 2.717(xists. When)-.15 F -.15(exe)144 609.6 S .546(cuted, the e) .15 F .546(xit status of a function is the e)-.15 F .545 (xit status of the last command e)-.15 F -.15(xe)-.15 G .545 -(cuted in the body).15 F(.)-.65 E(\(See)144 532.8 Q F3(FUNCTIONS)2.5 E +(cuted in the body).15 F(.)-.65 E(\(See)144 621.6 Q F3(FUNCTIONS)2.5 E F0(belo)2.25 E -.65(w.)-.25 G(\)).65 E/F4 10.95/Times-Bold@0 SF -(COMMENTS)72 549.6 Q F0 .982(In a non-interacti)108 561.6 R 1.282 -.15 +(COMMENTS)72 638.4 Q F0 .982(In a non-interacti)108 650.4 R 1.282 -.15 (ve s)-.25 H .982(hell, or an interacti).15 F 1.282 -.15(ve s)-.25 H .982(hell in which the).15 F F1(interacti)3.482 E -.1(ve)-.1 G (_comments).1 E F0 .982(option to the)3.482 F F1(shopt)3.482 E F0 -.2 -(bu)108 573.6 S .952(iltin is enabled \(see).2 F F3 .952(SHELL B)3.452 F +(bu)108 662.4 S .952(iltin is enabled \(see).2 F F3 .952(SHELL B)3.452 F (UIL)-.09 E .952(TIN COMMANDS)-.828 F F0(belo)3.202 E .952(w\), a w)-.25 F .952(ord be)-.1 F .952(ginning with)-.15 F F1(#)3.451 E F0 .951 (causes that w)3.451 F(ord)-.1 E .604 -(and all remaining characters on that line to be ignored.)108 585.6 R +(and all remaining characters on that line to be ignored.)108 674.4 R .605(An interacti)5.605 F .905 -.15(ve s)-.25 H .605(hell without the) -.15 F F1(interacti)3.105 E -.1(ve)-.1 G(_com-).1 E(ments)108 597.6 Q F0 +.15 F F1(interacti)3.105 E -.1(ve)-.1 G(_com-).1 E(ments)108 686.4 Q F0 1.337(option enabled does not allo)3.837 F 3.837(wc)-.25 G 3.836 (omments. The)-3.837 F F1(interacti)3.836 E -.1(ve)-.1 G(_comments).1 E F0 1.336(option is on by def)3.836 F 1.336(ault in)-.1 F(interacti)108 -609.6 Q .3 -.15(ve s)-.25 H(hells.).15 E F4 -.11(QU)72 626.4 S -.438(OT) -.11 G(ING).438 E F2(Quoting)108 638.4 Q F0 .477(is used to remo)2.977 F -.777 -.15(ve t)-.15 H .477 -(he special meaning of certain characters or w).15 F .477 -(ords to the shell.)-.1 F .478(Quoting can be)5.478 F .185 -(used to disable special treatment for special characters, to pre)108 -650.4 R -.15(ve)-.25 G .185(nt reserv).15 F .184(ed w)-.15 F .184 -(ords from being recognized as)-.1 F(such, and to pre)108 662.4 Q -.15 -(ve)-.25 G(nt parameter e).15 E(xpansion.)-.15 E .288(Each of the)108 -679.2 R F2(metac)2.788 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288 -(listed abo)2.788 F .588 -.15(ve u)-.15 H(nder).15 E F3(DEFINITIONS) -2.788 E F0 .288(has special meaning to the shell and must be)2.538 F -(quoted if it is to represent itself.)108 691.2 Q 1.345 -(When the command history e)108 708 R 1.344(xpansion f)-.15 F 1.344 -(acilities are being used \(see)-.1 F F3(HIST)3.844 E(OR)-.162 E 3.594 -(YE)-.315 G(XP)-3.594 E(ANSION)-.666 E F0(belo)3.594 E 1.344(w\), the) --.25 F F2(history e)108 720 Q(xpansion)-.2 E F0(character)2.5 E 2.5(,u) --.4 G(sually)-2.5 E F1(!)2.5 E F0 2.5(,m)C(ust be quoted to pre)-2.5 E --.15(ve)-.25 G(nt history e).15 E(xpansion.)-.15 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(7)197.055 E 0 Cg EP +698.4 Q .3 -.15(ve s)-.25 H(hells.).15 E(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(7)193.455 E 0 Cg EP %%Page: 8 8 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(There are three quoting mechanisms: the)108 84 Q/F1 10/Times-Italic@0 -SF(escape c)2.5 E(har)-.15 E(acter)-.15 E F0 2.5(,s).73 G -(ingle quotes, and double quotes.)-2.5 E 2.974(An)108 100.8 S .474 -(on-quoted backslash \()-2.974 F/F2 10/Times-Bold@0 SF(\\)A F0 2.974 -(\)i)C 2.974(st)-2.974 G(he)-2.974 E F1 .474(escape c)2.974 F(har)-.15 E -(acter)-.15 E F0 5.474(.I).73 G 2.974(tp)-5.474 G(reserv)-2.974 E .474 -(es the literal v)-.15 F .474(alue of the ne)-.25 F .475 -(xt character that)-.15 F(follo)108 112.8 Q 1.554(ws, with the e)-.25 F -1.553(xception of . If)-.25 F(a)4.053 E F2(\\) -4.053 E F0(. If)-.25 F(a)4.053 E F4(\\)4.053 E F0( pair appears, and the backslash is not itself)-.25 F 1.122 -(quoted, the)108 124.8 R F2(\\)3.622 E F0( is treated as a line continuation \(that is, it is remo)-.25 F -.15(ve)-.15 G 3.622(df).15 G 1.123(rom the input stream and)-3.622 F -(ef)108 136.8 Q(fecti)-.25 E -.15(ve)-.25 G(ly ignored\).).15 E .295 -(Enclosing characters in single quotes preserv)108 153.6 R .295 +(ef)108 247.2 Q(fecti)-.25 E -.15(ve)-.25 G(ly ignored\).).15 E .295 +(Enclosing characters in single quotes preserv)108 264 R .295 (es the literal v)-.15 F .295(alue of each character within the quotes.) -.25 F 2.795(As)5.295 G(in-)-2.795 E -(gle quote may not occur between single quotes, e)108 165.6 Q -.15(ve) --.25 G 2.5(nw).15 G(hen preceded by a backslash.)-2.5 E .033 -(Enclosing characters in double quotes preserv)108 182.4 R .034 +(gle quote may not occur between single quotes, e)108 276 Q -.15(ve)-.25 +G 2.5(nw).15 G(hen preceded by a backslash.)-2.5 E .033 +(Enclosing characters in double quotes preserv)108 292.8 R .034 (es the literal v)-.15 F .034 (alue of all characters within the quotes, with the)-.25 F -.15(ex)108 -194.4 S .108(ception of).15 F F2($)2.608 E F0(,)A F2<92>2.608 E F0(,)A -F2(\\)2.608 E F0 2.608(,a)C .107(nd, when history e)-2.608 F .107 -(xpansion is enabled,)-.15 F F2(!)2.607 E F0 5.107(.W)C .107 -(hen the shell is in)-5.107 F F1 .107(posix mode)2.607 F F0 2.607(,t)C -(he)-2.607 E F2(!)2.607 E F0 .107(has no)2.607 F 1.397 -(special meaning within double quotes, e)108 206.4 R -.15(ve)-.25 G +304.8 S .108(ception of).15 F F4($)2.608 E F0(,)A F4<92>2.608 E F0(,)A +F4(\\)2.608 E F0 2.608(,a)C .107(nd, when history e)-2.608 F .107 +(xpansion is enabled,)-.15 F F4(!)2.607 E F0 5.107(.W)C .107 +(hen the shell is in)-5.107 F F2 .107(posix mode)2.607 F F0 2.607(,t)C +(he)-2.607 E F4(!)2.607 E F0 .107(has no)2.607 F 1.397 +(special meaning within double quotes, e)108 316.8 R -.15(ve)-.25 G 3.897(nw).15 G 1.397(hen history e)-3.897 F 1.397(xpansion is enabled.) --.15 F 1.398(The characters)6.398 F F2($)3.898 E F0(and)3.898 E F2<92> +-.15 F 1.398(The characters)6.398 F F4($)3.898 E F0(and)3.898 E F4<92> 3.898 E F0 .045(retain their special meaning within double quotes.)108 -218.4 R .044(The backslash retains its special meaning only when fol-) -5.045 F(lo)108 230.4 Q .601(wed by one of the follo)-.25 F .602 -(wing characters:)-.25 F F2($)3.102 E F0(,)A F2<92>3.102 E F0(,)A F2(") -3.935 E F0(,).833 E F2(\\)3.102 E F0 3.102(,o)C(r)-3.102 E F2() +328.8 R .044(The backslash retains its special meaning only when fol-) +5.045 F(lo)108 340.8 Q .601(wed by one of the follo)-.25 F .602 +(wing characters:)-.25 F F4($)3.102 E F0(,)A F4<92>3.102 E F0(,)A F4(") +3.935 E F0(,).833 E F4(\\)3.102 E F0 3.102(,o)C(r)-3.102 E F4() 3.102 E F0 5.602(.A)C .602(double quote may be quoted within)-2.5 F .131 -(double quotes by preceding it with a backslash.)108 242.4 R .131 +(double quotes by preceding it with a backslash.)108 352.8 R .131 (If enabled, history e)5.131 F .13(xpansion will be performed unless an) --.15 F F2(!)2.63 E F0 -(appearing in double quotes is escaped using a backslash.)108 254.4 Q -(The backslash preceding the)5 E F2(!)2.5 E F0(is not remo)5 E -.15(ve) --.15 G(d.).15 E(The special parameters)108 271.2 Q F2(*)2.5 E F0(and)2.5 -E F2(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H -(pecial meaning when in double quotes \(see).15 E/F3 9/Times-Bold@0 SF --.666(PA)2.5 G(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 288 -S .211(rds of the form).8 F F2($)2.711 E F0<08>A F1(string)A F0 2.711 -<0861>C .211(re treated specially)-2.711 F 5.211(.T)-.65 G .211(he w) --5.211 F .211(ord e)-.1 F .212(xpands to)-.15 F F1(string)2.712 E F0 -2.712(,w)C .212(ith backslash-escaped char)-2.712 F(-)-.2 E .605 -(acters replaced as speci\214ed by the ANSI C standard.)108 300 R .604 +-.15 F F4(!)2.63 E F0 +(appearing in double quotes is escaped using a backslash.)108 364.8 Q +(The backslash preceding the)5 E F4(!)2.5 E F0(is not remo)5 E -.15(ve) +-.15 G(d.).15 E(The special parameters)108 381.6 Q F4(*)2.5 E F0(and)2.5 +E F4(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H +(pecial meaning when in double quotes \(see).15 E F3 -.666(PA)2.5 G +(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 398.4 S .211 +(rds of the form).8 F F4($)2.711 E F0<08>A F2(string)A F0 2.711<0861>C +.211(re treated specially)-2.711 F 5.211(.T)-.65 G .211(he w)-5.211 F +.211(ord e)-.1 F .212(xpands to)-.15 F F2(string)2.712 E F0 2.712(,w)C +.212(ith backslash-escaped char)-2.712 F(-)-.2 E .605 +(acters replaced as speci\214ed by the ANSI C standard.)108 410.4 R .604 (Backslash escape sequences, if present, are decoded)5.605 F(as follo) -108 312 Q(ws:)-.25 E F2(\\a)144 324 Q F0(alert \(bell\))180 324 Q F2 -(\\b)144 336 Q F0(backspace)180 336 Q F2(\\e)144 348 Q(\\E)144 360 Q F0 -(an escape character)180 360 Q F2(\\f)144 372 Q F0(form feed)180 372 Q -F2(\\n)144 384 Q F0(ne)180 384 Q 2.5(wl)-.25 G(ine)-2.5 E F2(\\r)144 396 -Q F0(carriage return)180 396 Q F2(\\t)144 408 Q F0(horizontal tab)180 -408 Q F2(\\v)144 420 Q F0 -.15(ve)180 420 S(rtical tab).15 E F2(\\\\)144 -432 Q F0(backslash)180 432 Q F2<5c08>144 444 Q F0(single quote)180 444 Q -F2(\\")144 456 Q F0(double quote)180 456 Q F2(\\?)144 468 Q F0 -(question mark)180 468 Q F2(\\)144 480 Q F1(nnn)A F0 -(the eight-bit character whose v)180 480 Q(alue is the octal v)-.25 E -(alue)-.25 E F1(nnn)2.5 E F0(\(one to three digits\))2.5 E F2(\\x)144 -492 Q F1(HH)A F0(the eight-bit character whose v)180 492 Q -(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0 -(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F2 -(\\u)144 504 Q F1(HHHH)A F0 1.506 -(the Unicode \(ISO/IEC 10646\) character whose v)180 516 R 1.507 -(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F1(HHHH) -4.007 E F0(\(one to four he)180 528 Q 2.5(xd)-.15 G(igits\))-2.5 E F2 -(\\U)144 540 Q F1(HHHHHHHH)A F0 .548 -(the Unicode \(ISO/IEC 10646\) character whose v)180 552 R .547 -(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F1(HHHHH-) -3.047 E(HHH)180 564 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G(igits\)) --2.5 E F2(\\c)144 576 Q F1(x)A F0 2.5(ac)180 576 S(ontrol-)-2.5 E F1(x)A -F0(character)2.5 E(The e)108 592.8 Q(xpanded result is single-quoted, a\ -s if the dollar sign had not been present.)-.15 E 2.64(Ad)108 609.6 S -.14(ouble-quoted string preceded by a dollar sign \()-2.64 F F2($)A F0 -(")A F1(string)A F0 .14 -("\) will cause the string to be translated according)B .496 -(to the current locale.)108 621.6 R .495(If the current locale is)5.496 -F F2(C)2.995 E F0(or)2.995 E F2(POSIX)2.995 E F0 2.995(,t)C .495 -(he dollar sign is ignored.)-2.995 F .495(If the string is trans-)5.495 -F(lated and replaced, the replacement is double-quoted.)108 633.6 Q/F4 -10.95/Times-Bold@0 SF -.81(PA)72 650.4 S(RAMETERS).81 E F0(A)108 662.4 Q -F1(par)4.592 E(ameter)-.15 E F0 .842(is an entity that stores v)4.072 F -3.342(alues. It)-.25 F .842(can be a)3.342 F F1(name)3.343 E F0 3.343 -(,an).18 G(umber)-3.343 E 3.343(,o)-.4 G 3.343(ro)-3.343 G .843 -(ne of the special characters)-3.343 F .823(listed belo)108 674.4 R -3.323(wu)-.25 G(nder)-3.323 E F2 .823(Special P)3.323 F(arameters)-.1 E -F0 5.823(.A)C F1(variable)-2.21 E F0 .823(is a parameter denoted by a) -3.503 F F1(name)3.323 E F0 5.823(.A).18 G -.25(va)-2.5 G .823 -(riable has a).25 F F1(value)108 686.4 Q F0 .368(and zero or more)2.868 -F F1(attrib)2.868 E(utes)-.2 E F0 5.369(.A)C(ttrib)-5.369 E .369 -(utes are assigned using the)-.2 F F2(declar)2.869 E(e)-.18 E F0 -.2(bu) -2.869 G .369(iltin command \(see).2 F F2(declar)2.869 E(e)-.18 E F0 -(belo)108 698.4 Q 2.5(wi)-.25 G(n)-2.5 E F3(SHELL B)2.5 E(UIL)-.09 E -(TIN COMMANDS)-.828 E/F5 9/Times-Roman@0 SF(\).)A F0 2.755(Ap)108 715.2 -S .255(arameter is set if it has been assigned a v)-2.755 F 2.754 -(alue. The)-.25 F .254(null string is a v)2.754 F .254(alid v)-.25 F -2.754(alue. Once)-.25 F 2.754(av)2.754 G .254(ariable is set, it)-3.004 -F(may be unset only by using the)108 727.2 Q F2(unset)2.5 E F0 -.2(bu) -2.5 G(iltin command \(see).2 E F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) --.828 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26) -142.895 E(8)197.055 E 0 Cg EP +108 422.4 Q(ws:)-.25 E F4(\\a)144 434.4 Q F0(alert \(bell\))180 434.4 Q +F4(\\b)144 446.4 Q F0(backspace)180 446.4 Q F4(\\e)144 458.4 Q(\\E)144 +470.4 Q F0(an escape character)180 470.4 Q F4(\\f)144 482.4 Q F0 +(form feed)180 482.4 Q F4(\\n)144 494.4 Q F0(ne)180 494.4 Q 2.5(wl)-.25 +G(ine)-2.5 E F4(\\r)144 506.4 Q F0(carriage return)180 506.4 Q F4(\\t) +144 518.4 Q F0(horizontal tab)180 518.4 Q F4(\\v)144 530.4 Q F0 -.15(ve) +180 530.4 S(rtical tab).15 E F4(\\\\)144 542.4 Q F0(backslash)180 542.4 +Q F4<5c08>144 554.4 Q F0(single quote)180 554.4 Q F4(\\")144 566.4 Q F0 +(double quote)180 566.4 Q F4(\\?)144 578.4 Q F0(question mark)180 578.4 +Q F4(\\)144 590.4 Q F2(nnn)A F0(the eight-bit character whose v)180 +590.4 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0 +(\(one to three octal digits\))2.5 E F4(\\x)144 602.4 Q F2(HH)A F0 +(the eight-bit character whose v)180 602.4 Q(alue is the he)-.25 E +(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh) +-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F4(\\u)144 614.4 Q F2(HHHH)A F0 +1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 626.4 R 1.507 +(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) +4.007 E F0(\(one to four he)180 638.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F4 +(\\U)144 650.4 Q F2(HHHHHHHH)A F0 .548 +(the Unicode \(ISO/IEC 10646\) character whose v)180 662.4 R .547 +(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) +3.047 E(HHH)180 674.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G +(igits\))-2.5 E F4(\\c)144 686.4 Q F2(x)A F0 2.5(ac)180 686.4 S(ontrol-) +-2.5 E F2(x)A F0(character)2.5 E(The e)108 703.2 Q(xpanded result is si\ +ngle-quoted, as if the dollar sign had not been present.)-.15 E 2.64(Ad) +108 720 S .14(ouble-quoted string preceded by a dollar sign \()-2.64 F +F4($)A F0(")A F2(string)A F0 .14 +("\) will cause the string to be translated according)B(GNU Bash 5.0)72 +768 Q(2018 December 7)139.295 E(8)193.455 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(A)108 84 Q/F1 10 -/Times-Italic@0 SF(variable)2.79 E F0 -(may be assigned to by a statement of the form)2.68 E F1(name)144 100.8 -Q F0(=[)A F1(value)A F0(])A(If)108 117.6 Q F1(value)3.022 E F0 .232 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .496 +(to the current locale.)108 84 R .495(If the current locale is)5.496 F +/F1 10/Times-Bold@0 SF(C)2.995 E F0(or)2.995 E F1(POSIX)2.995 E F0 2.995 +(,t)C .495(he dollar sign is ignored.)-2.995 F .495 +(If the string is trans-)5.495 F +(lated and replaced, the replacement is double-quoted.)108 96 Q/F2 10.95 +/Times-Bold@0 SF -.81(PA)72 112.8 S(RAMETERS).81 E F0(A)108 124.8 Q/F3 +10/Times-Italic@0 SF(par)4.592 E(ameter)-.15 E F0 .842 +(is an entity that stores v)4.072 F 3.342(alues. It)-.25 F .842 +(can be a)3.342 F F3(name)3.343 E F0 3.343(,an).18 G(umber)-3.343 E +3.343(,o)-.4 G 3.343(ro)-3.343 G .843(ne of the special characters) +-3.343 F .823(listed belo)108 136.8 R 3.323(wu)-.25 G(nder)-3.323 E F1 +.823(Special P)3.323 F(arameters)-.1 E F0 5.823(.A)C F3(variable)-2.21 E +F0 .823(is a parameter denoted by a)3.503 F F3(name)3.323 E F0 5.823(.A) +.18 G -.25(va)-2.5 G .823(riable has a).25 F F3(value)108 148.8 Q F0 +.368(and zero or more)2.868 F F3(attrib)2.868 E(utes)-.2 E F0 5.369(.A)C +(ttrib)-5.369 E .369(utes are assigned using the)-.2 F F1(declar)2.869 E +(e)-.18 E F0 -.2(bu)2.869 G .369(iltin command \(see).2 F F1(declar) +2.869 E(e)-.18 E F0(belo)108 160.8 Q 2.5(wi)-.25 G(n)-2.5 E/F4 9 +/Times-Bold@0 SF(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E/F5 9 +/Times-Roman@0 SF(\).)A F0 2.755(Ap)108 177.6 S .255 +(arameter is set if it has been assigned a v)-2.755 F 2.754(alue. The) +-.25 F .254(null string is a v)2.754 F .254(alid v)-.25 F 2.754 +(alue. Once)-.25 F 2.754(av)2.754 G .254(ariable is set, it)-3.004 F +(may be unset only by using the)108 189.6 Q F1(unset)2.5 E F0 -.2(bu)2.5 +G(iltin command \(see).2 E F4(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) +-.828 E F0(belo)2.25 E(w\).)-.25 E(A)108 206.4 Q F3(variable)2.79 E F0 +(may be assigned to by a statement of the form)2.68 E F3(name)144 223.2 +Q F0(=[)A F3(value)A F0(])A(If)108 240 Q F3(value)3.022 E F0 .232 (is not gi)2.912 F -.15(ve)-.25 G .232(n, the v).15 F .232 -(ariable is assigned the null string.)-.25 F(All)5.233 E F1(values)3.023 +(ariable is assigned the null string.)-.25 F(All)5.233 E F3(values)3.023 E F0(under)3.003 E .233(go tilde e)-.18 F .233(xpansion, parameter)-.15 -F .515(and v)108 129.6 R .515(ariable e)-.25 F .515 +F .515(and v)108 252 R .515(ariable e)-.25 F .515 (xpansion, command substitution, arithmetic e)-.15 F .515 (xpansion, and quote remo)-.15 F -.25(va)-.15 G 3.015(l\().25 G(see) --3.015 E/F2 9/Times-Bold@0 SF(EXP)3.015 E(ANSION)-.666 E F0(belo)108 -141.6 Q 2.698(w\). If)-.25 F .198(the v)2.698 F .198(ariable has its) --.25 F/F3 10/Times-Bold@0 SF(integer)2.698 E F0(attrib)2.698 E .198 -(ute set, then)-.2 F F1(value)2.988 E F0 .198(is e)2.878 F -.25(va)-.25 -G .199(luated as an arithmetic e).25 F .199(xpression e)-.15 F -.15(ve) --.25 G(n).15 E .902(if the $\(\(...\)\) e)108 153.6 R .902 -(xpansion is not used \(see)-.15 F F3 .901(Arithmetic Expansion)3.401 F -F0(belo)3.401 E 3.401(w\). W)-.25 F .901 -(ord splitting is not performed,)-.8 F 1.178(with the e)108 165.6 R -1.178(xception of)-.15 F F3("$@")3.678 E F0 1.178(as e)3.678 F 1.179 -(xplained belo)-.15 F 3.679(wu)-.25 G(nder)-3.679 E F3 1.179(Special P) +-3.015 E F4(EXP)3.015 E(ANSION)-.666 E F0(belo)108 264 Q 2.698(w\). If) +-.25 F .198(the v)2.698 F .198(ariable has its)-.25 F F1(integer)2.698 E +F0(attrib)2.698 E .198(ute set, then)-.2 F F3(value)2.988 E F0 .198 +(is e)2.878 F -.25(va)-.25 G .199(luated as an arithmetic e).25 F .199 +(xpression e)-.15 F -.15(ve)-.25 G(n).15 E .902(if the $\(\(...\)\) e) +108 276 R .902(xpansion is not used \(see)-.15 F F1 .901 +(Arithmetic Expansion)3.401 F F0(belo)3.401 E 3.401(w\). W)-.25 F .901 +(ord splitting is not performed,)-.8 F 1.178(with the e)108 288 R 1.178 +(xception of)-.15 F F1("$@")3.678 E F0 1.178(as e)3.678 F 1.179 +(xplained belo)-.15 F 3.679(wu)-.25 G(nder)-3.679 E F1 1.179(Special P) 3.679 F(arameters)-.1 E F0 6.179(.P)C 1.179(athname e)-6.329 F 1.179 -(xpansion is not)-.15 F 3.649(performed. Assignment)108 177.6 R 1.149 -(statements may also appear as ar)3.649 F 1.148(guments to the)-.18 F F3 -(alias)3.648 E F0(,)A F3(declar)3.648 E(e)-.18 E F0(,)A F3(typeset)3.648 -E F0(,)A F3(export)3.648 E F0(,)A F3 -.18(re)108 189.6 S(adonly).18 E F0 -3.288(,a)C(nd)-3.288 E F3(local)3.288 E F0 -.2(bu)3.288 G .788 -(iltin commands \().2 F F1(declar)A(ation)-.15 E F0 3.288 -(commands\). When)3.288 F(in)3.289 E F1 .789(posix mode)3.289 F F0 3.289 +(xpansion is not)-.15 F 3.649(performed. Assignment)108 300 R 1.149 +(statements may also appear as ar)3.649 F 1.148(guments to the)-.18 F F1 +(alias)3.648 E F0(,)A F1(declar)3.648 E(e)-.18 E F0(,)A F1(typeset)3.648 +E F0(,)A F1(export)3.648 E F0(,)A F1 -.18(re)108 312 S(adonly).18 E F0 +3.288(,a)C(nd)-3.288 E F1(local)3.288 E F0 -.2(bu)3.288 G .788 +(iltin commands \().2 F F3(declar)A(ation)-.15 E F0 3.288 +(commands\). When)3.288 F(in)3.289 E F3 .789(posix mode)3.289 F F0 3.289 (,t)C .789(hese b)-3.289 F .789(uiltins may)-.2 F 1.496 -(appear in a command after one or more instances of the)108 201.6 R F3 +(appear in a command after one or more instances of the)108 324 R F1 (command)3.996 E F0 -.2(bu)3.996 G 1.496 -(iltin and retain these assignment).2 F(statement properties.)108 213.6 -Q .376(In the conte)108 230.4 R .376 +(iltin and retain these assignment).2 F(statement properties.)108 336 Q +.376(In the conte)108 352.8 R .376 (xt where an assignment statement is assigning a v)-.15 F .376 (alue to a shell v)-.25 F .377(ariable or array inde)-.25 F .377 (x, the +=)-.15 F 1.631 -(operator can be used to append to or add to the v)108 242.4 R(ariable') +(operator can be used to append to or add to the v)108 364.8 R(ariable') -.25 E 4.13(sp)-.55 G(re)-4.13 E 1.63(vious v)-.25 F 4.13(alue. This) --.25 F 1.63(includes ar)4.13 F 1.63(guments to)-.18 F -.2(bu)108 254.4 S -.163(iltin commands such as).2 F F3(declar)2.664 E(e)-.18 E F0 .164 -(that accept assignment statements \()2.664 F F1(declar)A(ation)-.15 E +-.25 F 1.63(includes ar)4.13 F 1.63(guments to)-.18 F -.2(bu)108 376.8 S +.163(iltin commands such as).2 F F1(declar)2.664 E(e)-.18 E F0 .164 +(that accept assignment statements \()2.664 F F3(declar)A(ation)-.15 E F0 2.664(commands\). When)2.664 F .164(+= is)2.664 F .252 -(applied to a v)108 266.4 R .252(ariable for which the)-.25 F F1(inte) +(applied to a v)108 388.8 R .252(ariable for which the)-.25 F F3(inte) 2.752 E -.1(ge)-.4 G(r).1 E F0(attrib)2.752 E .252(ute has been set,)-.2 -F F1(value)2.752 E F0 .251(is e)2.751 F -.25(va)-.25 G .251 +F F3(value)2.752 E F0 .251(is e)2.751 F -.25(va)-.25 G .251 (luated as an arithmetic e).25 F(xpres-)-.15 E .05 -(sion and added to the v)108 278.4 R(ariable')-.25 E 2.55(sc)-.55 G .05 +(sion and added to the v)108 400.8 R(ariable')-.25 E 2.55(sc)-.55 G .05 (urrent v)-2.55 F .05(alue, which is also e)-.25 F -.25(va)-.25 G 2.55 (luated. When).25 F .05(+= is applied to an array v)2.55 F(ari-)-.25 E -.459(able using compound assignment \(see)108 290.4 R F3(Arrays)2.959 E +.459(able using compound assignment \(see)108 412.8 R F1(Arrays)2.959 E F0(belo)2.959 E .459(w\), the v)-.25 F(ariable')-.25 E 2.959(sv)-.55 G .459(alue is not unset \(as it is when using)-3.209 F .265(=\), and ne) -108 302.4 R 2.765(wv)-.25 G .265(alues are appended to the array be) +108 424.8 R 2.765(wv)-.25 G .265(alues are appended to the array be) -3.015 F .265(ginning at one greater than the array')-.15 F 2.765(sm) -.55 G .265(aximum inde)-2.765 F 2.765(x\()-.15 G(for)-2.765 E(inde)108 -314.4 Q -.15(xe)-.15 G 3.402(da).15 G .902 +436.8 Q -.15(xe)-.15 G 3.402(da).15 G .902 (rrays\) or added as additional k)-3.402 F -.15(ey)-.1 G.15 E .901 (alue pairs in an associati)-.25 F 1.201 -.15(ve a)-.25 H(rray).15 E -5.901(.W)-.65 G .901(hen applied to a string-)-5.901 F -.25(va)108 326.4 -S(lued v).25 E(ariable,)-.25 E F1(value)2.5 E F0(is e)2.5 E +5.901(.W)-.65 G .901(hen applied to a string-)-5.901 F -.25(va)108 448.8 +S(lued v).25 E(ariable,)-.25 E F3(value)2.5 E F0(is e)2.5 E (xpanded and appended to the v)-.15 E(ariable')-.25 E 2.5(sv)-.55 G -(alue.)-2.75 E 3.382(Av)108 343.2 S .882(ariable can be assigned the) --3.632 F F1(namer)3.382 E(ef)-.37 E F0(attrib)3.382 E .882 -(ute using the)-.2 F F33.382 E F0 .882(option to the)3.382 F F3 -(declar)3.382 E(e)-.18 E F0(or)3.383 E F3(local)3.383 E F0 -.2(bu)3.383 -G .883(iltin com-).2 F .316(mands \(see the descriptions of)108 355.2 R -F3(declar)2.816 E(e)-.18 E F0(and)2.816 E F3(local)2.816 E F0(belo)2.816 -E .316(w\) to create a)-.25 F F1(namer)2.815 E(ef)-.37 E F0 2.815(,o)C +(alue.)-2.75 E 3.382(Av)108 465.6 S .882(ariable can be assigned the) +-3.632 F F3(namer)3.382 E(ef)-.37 E F0(attrib)3.382 E .882 +(ute using the)-.2 F F13.382 E F0 .882(option to the)3.382 F F1 +(declar)3.382 E(e)-.18 E F0(or)3.383 E F1(local)3.383 E F0 -.2(bu)3.383 +G .883(iltin com-).2 F .316(mands \(see the descriptions of)108 477.6 R +F1(declar)2.816 E(e)-.18 E F0(and)2.816 E F1(local)2.816 E F0(belo)2.816 +E .316(w\) to create a)-.25 F F3(namer)2.815 E(ef)-.37 E F0 2.815(,o)C 2.815(rar)-2.815 G .315(eference to another v)-2.815 F(ari-)-.25 E 4.04 -(able. This)108 367.2 R(allo)4.04 E 1.54(ws v)-.25 F 1.54 +(able. This)108 489.6 R(allo)4.04 E 1.54(ws v)-.25 F 1.54 (ariables to be manipulated indirectly)-.25 F 6.54(.W)-.65 G(hene)-6.54 E -.15(ve)-.25 G 4.04(rt).15 G 1.54(he nameref v)-4.04 F 1.54 (ariable is referenced,)-.25 F .54 -(assigned to, unset, or has its attrib)108 379.2 R .54 -(utes modi\214ed \(other than using or changing the)-.2 F F1(namer)3.04 +(assigned to, unset, or has its attrib)108 501.6 R .54 +(utes modi\214ed \(other than using or changing the)-.2 F F3(namer)3.04 E(ef)-.37 E F0(attrib)3.04 E .54(ute itself\),)-.2 F .352 -(the operation is actually performed on the v)108 391.2 R .352 +(the operation is actually performed on the v)108 513.6 R .352 (ariable speci\214ed by the nameref v)-.25 F(ariable')-.25 E 2.852(sv) -.55 G 2.852(alue. A)-3.102 F .352(nameref is)2.852 F .972 -(commonly used within shell functions to refer to a v)108 403.2 R .971 +(commonly used within shell functions to refer to a v)108 525.6 R .971 (ariable whose name is passed as an ar)-.25 F .971(gument to the)-.18 F -2.5(function. F)108 415.2 R(or instance, if a v)-.15 E +2.5(function. F)108 537.6 R(or instance, if a v)-.15 E (ariable name is passed to a shell function as its \214rst ar)-.25 E -(gument, running)-.18 E/F4 10/Courier@0 SF(declare -n ref=$1)144 433.2 Q -F0 .302(inside the function creates a nameref v)108 451.2 R(ariable)-.25 -E F3 -.18(re)2.803 G(f).18 E F0 .303(whose v)2.803 F .303(alue is the v) +(gument, running)-.18 E/F6 10/Courier@0 SF(declare -n ref=$1)144 555.6 Q +F0 .302(inside the function creates a nameref v)108 573.6 R(ariable)-.25 +E F1 -.18(re)2.803 G(f).18 E F0 .303(whose v)2.803 F .303(alue is the v) -.25 F .303(ariable name passed as the \214rst ar)-.25 F(gu-)-.18 E -3.592(ment. References)108 463.2 R 1.092(and assignments to)3.592 F F3 +3.592(ment. References)108 585.6 R 1.092(and assignments to)3.592 F F1 -.18(re)3.592 G(f).18 E F0 3.592(,a)C 1.092(nd changes to its attrib) -3.592 F 1.092(utes, are treated as references, assign-)-.2 F .143 -(ments, and attrib)108 475.2 R .144(ute modi\214cations to the v)-.2 F -.144(ariable whose name w)-.25 F .144(as passed as)-.1 F F3($1)2.644 E +(ments, and attrib)108 597.6 R .144(ute modi\214cations to the v)-.2 F +.144(ariable whose name w)-.25 F .144(as passed as)-.1 F F1($1)2.644 E F0 5.144(.I)C 2.644(ft)-5.144 G .144(he control v)-2.644 F .144 -(ariable in a)-.25 F F3 -.25(fo)108 487.2 S(r).25 E F0 .868 +(ariable in a)-.25 F F1 -.25(fo)108 609.6 S(r).25 E F0 .868 (loop has the nameref attrib)3.368 F .868(ute, the list of w)-.2 F .867 (ords can be a list of shell v)-.1 F .867 (ariables, and a name reference)-.25 F .509 -(will be established for each w)108 499.2 R .509 +(will be established for each w)108 621.6 R .509 (ord in the list, in turn, when the loop is e)-.1 F -.15(xe)-.15 G 3.009 (cuted. Array).15 F -.25(va)3.009 G .509(riables cannot be).25 F(gi)108 -511.2 Q -.15(ve)-.25 G 4.193(nt).15 G(he)-4.193 E F3(namer)4.193 E(ef) +633.6 Q -.15(ve)-.25 G 4.193(nt).15 G(he)-4.193 E F1(namer)4.193 E(ef) -.18 E F0(attrib)4.193 E 4.193(ute. Ho)-.2 F(we)-.25 E -.15(ve)-.25 G 2.493 -.4(r, n).15 H 1.693(ameref v).4 F 1.692 (ariables can reference array v)-.25 F 1.692(ariables and subscripted) --.25 F .101(array v)108 523.2 R 2.601(ariables. Namerefs)-.25 F .101 -(can be unset using the)2.601 F F32.602 E F0 .102(option to the) -2.602 F F3(unset)2.602 E F0 -.2(bu)2.602 G 2.602(iltin. Otherwise,).2 F -(if)2.602 E F3(unset)2.602 E F0 .102(is e)2.602 F -.15(xe)-.15 G(-).15 E -.443(cuted with the name of a nameref v)108 535.2 R .442 +-.25 F .101(array v)108 645.6 R 2.601(ariables. Namerefs)-.25 F .101 +(can be unset using the)2.601 F F12.602 E F0 .102(option to the) +2.602 F F1(unset)2.602 E F0 -.2(bu)2.602 G 2.602(iltin. Otherwise,).2 F +(if)2.602 E F1(unset)2.602 E F0 .102(is e)2.602 F -.15(xe)-.15 G(-).15 E +.443(cuted with the name of a nameref v)108 657.6 R .442 (ariable as an ar)-.25 F .442(gument, the v)-.18 F .442 (ariable referenced by the nameref v)-.25 F(ariable)-.25 E -(will be unset.)108 547.2 Q F3 -.2(Po)87 564 S(sitional P).2 E -(arameters)-.1 E F0(A)108 576 Q F1 .705(positional par)4.455 F(ameter) +(will be unset.)108 669.6 Q F1 -.2(Po)87 686.4 S(sitional P).2 E +(arameters)-.1 E F0(A)108 698.4 Q F3 .705(positional par)4.455 F(ameter) -.15 E F0 .706(is a parameter denoted by one or more digits, other than\ the single digit 0.)3.935 F(Posi-)5.706 E .445 -(tional parameters are assigned from the shell')108 588 R 2.944(sa)-.55 -G -.18(rg)-2.944 G .444(uments when it is in).18 F -.2(vo)-.4 G -.1(ke) -.2 G .444(d, and may be reassigned using).1 F(the)108 600 Q F3(set)3.333 -E F0 -.2(bu)3.333 G .833(iltin command.).2 F .834(Positional parameters\ - may not be assigned to with assignment statements.)5.833 F(The)5.834 E -(positional parameters are temporarily replaced when a shell function i\ -s e)108 612 Q -.15(xe)-.15 G(cuted \(see).15 E F2(FUNCTIONS)2.5 E F0 -(belo)2.25 E(w\).)-.25 E 1.404(When a positional parameter consisting o\ -f more than a single digit is e)108 628.8 R 1.403 -(xpanded, it must be enclosed in)-.15 F(braces \(see)108 640.8 Q F2(EXP) -2.5 E(ANSION)-.666 E F0(belo)2.25 E(w\).)-.25 E F3(Special P)87 657.6 Q -(arameters)-.1 E F0 1.674(The shell treats se)108 669.6 R -.15(ve)-.25 G -1.674(ral parameters specially).15 F 6.675(.T)-.65 G 1.675 -(hese parameters may only be referenced; assignment to)-6.675 F -(them is not allo)108 681.6 Q(wed.)-.25 E F3(*)108 693.6 Q F0 .224 -(Expands to the positional parameters, starting from one.)144 693.6 R -.223(When the e)5.224 F .223(xpansion is not within double)-.15 F .662 -(quotes, each positional parameter e)144 705.6 R .662 -(xpands to a separate w)-.15 F 3.162(ord. In)-.1 F(conte)3.162 E .662 -(xts where it is performed,)-.15 F 1.082(those w)144 717.6 R 1.082 -(ords are subject to further w)-.1 F 1.081(ord splitting and pathname e) --.1 F 3.581(xpansion. When)-.15 F 1.081(the e)3.581 F(xpansion)-.15 E -2.548(occurs within double quotes, it e)144 729.6 R 2.549 -(xpands to a single w)-.15 F 2.549(ord with the v)-.1 F 2.549 -(alue of each parameter)-.25 F(GNU Bash 4.4)72 768 Q(2016 August 26) -142.895 E(9)197.055 E 0 Cg EP +(tional parameters are assigned from the shell')108 710.4 R 2.944(sa) +-.55 G -.18(rg)-2.944 G .444(uments when it is in).18 F -.2(vo)-.4 G -.1 +(ke).2 G .444(d, and may be reassigned using).1 F(the)108 722.4 Q F1 +(set)3.333 E F0 -.2(bu)3.333 G .833(iltin command.).2 F .834(Positional\ + parameters may not be assigned to with assignment statements.)5.833 F +(The)5.834 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(9)193.455 E +0 Cg EP %%Page: 10 10 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 3.068 -(separated by the \214rst character of the)144 84 R/F1 9/Times-Bold@0 SF -(IFS)5.568 E F0 3.068(special v)5.318 F 5.568(ariable. That)-.25 F 3.067 -(is, ")5.568 F/F2 10/Times-Bold@0 SF($*)A F0 5.567("i)C 5.567(se)-5.567 -G(qui)-5.567 E -.25(va)-.25 G 3.067(lent to).25 F(")144 96 Q F2($1)A/F3 -10/Times-Italic@0 SF(c)A F2($2)A F3(c)A F2(...)A F0 1.519(", where)B F3 -(c)4.219 E F0 1.519(is the \214rst character of the v)4.329 F 1.52 -(alue of the)-.25 F F1(IFS)4.02 E F0 -.25(va)3.77 G 4.02(riable. If).25 -F F1(IFS)4.02 E F0 1.52(is unset, the)3.77 F .833 -(parameters are separated by spaces.)144 108 R(If)5.833 E F1(IFS)3.333 E -F0 .832(is null, the parameters are joined without interv)3.083 F(ening) --.15 E(separators.)144 120 Q F2(@)108 132 Q F0 .605 -(Expands to the positional parameters, starting from one.)144 132 R .606 -(When the e)5.605 F .606(xpansion occurs within dou-)-.15 F .114 -(ble quotes, each parameter e)144 144 R .114(xpands to a separate w)-.15 -F 2.614(ord. That)-.1 F .113(is, ")2.613 F F2($@)A F0 2.613("i)C 2.613 -(se)-2.613 G(qui)-2.613 E -.25(va)-.25 G .113(lent to ").25 F F2($1)A F0 -2.613("")C F2($2)-2.613 E F0 2.613(".)C(..)-2.613 E .134 -(If the double-quoted e)144 156 R .134(xpansion occurs within a w)-.15 F -.135(ord, the e)-.1 F .135(xpansion of the \214rst parameter is joined) --.15 F .151(with the be)144 168 R .151(ginning part of the original w) --.15 F .151(ord, and the e)-.1 F .15 -(xpansion of the last parameter is joined with)-.15 F .337 -(the last part of the original w)144 180 R 2.837(ord. When)-.1 F .338 -(there are no positional parameters, ")2.837 F F2($@)A F0 2.838("a)C(nd) --2.838 E F2($@)2.838 E F0 -.15(ex)2.838 G(pand).15 E -(to nothing \(i.e., the)144 192 Q 2.5(ya)-.15 G(re remo)-2.5 E -.15(ve) --.15 G(d\).).15 E F2(#)108 204 Q F0 -(Expands to the number of positional parameters in decimal.)144 204 Q F2 -(?)108 216 Q F0(Expands to the e)144 216 Q +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(positional parame\ +ters are temporarily replaced when a shell function is e)108 84 Q -.15 +(xe)-.15 G(cuted \(see).15 E/F1 9/Times-Bold@0 SF(FUNCTIONS)2.5 E F0 +(belo)2.25 E(w\).)-.25 E 1.404(When a positional parameter consisting o\ +f more than a single digit is e)108 100.8 R 1.403 +(xpanded, it must be enclosed in)-.15 F(braces \(see)108 112.8 Q F1(EXP) +2.5 E(ANSION)-.666 E F0(belo)2.25 E(w\).)-.25 E/F2 10/Times-Bold@0 SF +(Special P)87 129.6 Q(arameters)-.1 E F0 1.674(The shell treats se)108 +141.6 R -.15(ve)-.25 G 1.674(ral parameters specially).15 F 6.675(.T) +-.65 G 1.675(hese parameters may only be referenced; assignment to) +-6.675 F(them is not allo)108 153.6 Q(wed.)-.25 E F2(*)108 165.6 Q F0 +.224(Expands to the positional parameters, starting from one.)144 165.6 +R .223(When the e)5.224 F .223(xpansion is not within double)-.15 F .662 +(quotes, each positional parameter e)144 177.6 R .662 +(xpands to a separate w)-.15 F 3.162(ord. In)-.1 F(conte)3.162 E .662 +(xts where it is performed,)-.15 F 1.082(those w)144 189.6 R 1.082 +(ords are subject to further w)-.1 F 1.081(ord splitting and pathname e) +-.1 F 3.581(xpansion. When)-.15 F 1.081(the e)3.581 F(xpansion)-.15 E +.914(occurs within double quotes, it e)144 201.6 R .914 +(xpands to a single w)-.15 F .915(ord with the v)-.1 F .915 +(alue of each parameter sepa-)-.25 F .891 +(rated by the \214rst character of the)144 213.6 R F1(IFS)3.39 E F0 .89 +(special v)3.14 F 3.39(ariable. That)-.25 F .89(is, ")3.39 F F2($*)A F0 +3.39("i)C 3.39(se)-3.39 G(qui)-3.39 E -.25(va)-.25 G .89(lent to ").25 F +F2($1)A/F3 10/Times-Italic@0 SF(c)A F2($2)A F3(c)A F2(...)A F0(",)A +(where)144 225.6 Q F3(c)3.532 E F0 .832 +(is the \214rst character of the v)3.642 F .832(alue of the)-.25 F F1 +(IFS)3.332 E F0 -.25(va)3.082 G 3.332(riable. If).25 F F1(IFS)3.332 E F0 +.833(is unset, the parameters are)3.082 F(separated by spaces.)144 237.6 +Q(If)5 E F1(IFS)2.5 E F0 +(is null, the parameters are joined without interv)2.25 E +(ening separators.)-.15 E F2(@)108 249.6 Q F0 .722 +(Expands to the positional parameters, starting from one.)144 249.6 R +.722(In conte)5.722 F .722(xts where w)-.15 F .722(ord splitting is per) +-.1 F(-)-.2 E 1.165(formed, this e)144 261.6 R 1.165 +(xpands each positional parameter to a separate w)-.15 F 1.165 +(ord; if not within double quotes,)-.1 F .655(these w)144 273.6 R .655 +(ords are subject to w)-.1 F .655(ord splitting.)-.1 F .655(In conte) +5.655 F .655(xts where w)-.15 F .654 +(ord splitting is not performed, this)-.1 F -.15(ex)144 285.6 S .748 +(pands to a single w).15 F .748 +(ord with each positional parameter separated by a space.)-.1 F .748 +(When the e)5.748 F(xpan-)-.15 E 1.091 +(sion occurs within double quotes, each parameter e)144 297.6 R 1.091 +(xpands to a separate w)-.15 F 3.59(ord. That)-.1 F 1.09(is, ")3.59 F F2 +($@)A F0 3.59("i)C(s)-3.59 E(equi)144 309.6 Q -.25(va)-.25 G .412 +(lent to ").25 F F2($1)A F0 2.912("")C F2($2)-2.912 E F0 2.912(".)C +2.912(.. If)-2.912 F .413(the double-quoted e)2.913 F .413 +(xpansion occurs within a w)-.15 F .413(ord, the e)-.1 F .413 +(xpansion of)-.15 F .38(the \214rst parameter is joined with the be)144 +321.6 R .379(ginning part of the original w)-.15 F .379(ord, and the e) +-.1 F .379(xpansion of the)-.15 F 1.774 +(last parameter is joined with the last part of the original w)144 333.6 +R 4.274(ord. When)-.1 F 1.774(there are no positional)4.274 F +(parameters, ")144 345.6 Q F2($@)A F0 2.5("a)C(nd)-2.5 E F2($@)2.5 E F0 +-.15(ex)2.5 G(pand to nothing \(i.e., the).15 E 2.5(ya)-.15 G(re remo) +-2.5 E -.15(ve)-.15 G(d\).).15 E F2(#)108 357.6 Q F0 +(Expands to the number of positional parameters in decimal.)144 357.6 Q +F2(?)108 369.6 Q F0(Expands to the e)144 369.6 Q (xit status of the most recently e)-.15 E -.15(xe)-.15 G(cuted fore).15 -E(ground pipeline.)-.15 E F2108 228 Q F0 .882 -(Expands to the current option \215ags as speci\214ed upon in)144 228 R --.2(vo)-.4 G .881(cation, by the).2 F F2(set)3.381 E F0 -.2(bu)3.381 G +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 240 Q F22.5 E F0(option\).)2.5 E F2($)108 252 Q F0 .214 -(Expands to the process ID of the shell.)144 252 R .214 +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 264 Q F2(!)108 276 Q F0 .499(Expands to t\ -he process ID of the job most recently placed into the background, whet\ -her e)144 276 R -.15(xe)-.15 G(cuted).15 E -(as an asynchronous command or using the)144 288 Q F2(bg)2.5 E F0 -.2 +(shell, not the subshell.)144 417.6 Q F2(!)108 429.6 Q F0 .499(Expands \ +to the process ID of the job most recently placed into the background, \ +whether e)144 429.6 R -.15(xe)-.15 G(cuted).15 E +(as an asynchronous command or using the)144 441.6 Q F2(bg)2.5 E F0 -.2 (bu)2.5 G(iltin \(see).2 E F1(JOB CONTR)2.5 E(OL)-.27 E F0(belo)2.25 E -(w\).)-.25 E F2(0)108 300 Q F0 1.691 -(Expands to the name of the shell or shell script.)144 300 R 1.692 +(w\).)-.25 E F2(0)108 453.6 Q F0 1.691 +(Expands to the name of the shell or shell script.)144 453.6 R 1.692 (This is set at shell initialization.)6.692 F(If)6.692 E F2(bash)4.192 E -F0(is)4.192 E(in)144 312 Q -.2(vo)-.4 G -.1(ke).2 G 3.078(dw).1 G .578 +F0(is)4.192 E(in)144 465.6 Q -.2(vo)-.4 G -.1(ke).2 G 3.078(dw).1 G .578 (ith a \214le of commands,)-3.078 F F2($0)3.078 E F0 .578 (is set to the name of that \214le.)3.078 F(If)5.577 E F2(bash)3.077 E F0 .577(is started with the)3.077 F F23.077 E F0 .368 -(option, then)144 324 R F2($0)2.869 E F0 .369(is set to the \214rst ar) -2.869 F .369(gument after the string to be e)-.18 F -.15(xe)-.15 G .369 -(cuted, if one is present.).15 F(Other)5.369 E(-)-.2 E -(wise, it is set to the \214lename used to in)144 336 Q -.2(vo)-.4 G -.1 -(ke).2 G F2(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25(iv e)-2.5 H -2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E F2(_)108 348 -Q F0 .055(At shell startup, set to the absolute pathname used to in)144 -348 R -.2(vo)-.4 G .255 -.1(ke t).2 H .054 -(he shell or shell script being e).1 F -.15(xe)-.15 G(cuted).15 E .691 -(as passed in the en)144 360 R .691(vironment or ar)-.4 F .691 -(gument list.)-.18 F(Subsequently)5.691 E 3.191(,e)-.65 G .692 -(xpands to the last ar)-3.341 F .692(gument to the)-.18 F(pre)144 372 Q -.571(vious command, after e)-.25 F 3.071(xpansion. Also)-.15 F .571 -(set to the full pathname used to in)3.071 F -.2(vo)-.4 G .77 -.1(ke e) -.2 H .57(ach command).1 F -.15(exe)144 384 S 1.6 -(cuted and placed in the en).15 F 1.6(vironment e)-.4 F 1.6 -(xported to that command.)-.15 F 1.6(When checking mail, this)6.6 F -(parameter holds the name of the mail \214le currently being check)144 -396 Q(ed.)-.1 E F2(Shell V)87 412.8 Q(ariables)-.92 E F0(The follo)108 -424.8 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F2 -.3(BA) -108 441.6 S(SH).3 E F0(Expands to the full \214lename used to in)144 -441.6 Q -.2(vo)-.4 G .2 -.1(ke t).2 H(his instance of).1 E F2(bash)2.5 E -F0(.)A F2 -.3(BA)108 453.6 S(SHOPTS).3 E F0 2.549(Ac)144 465.6 S .049 -(olon-separated list of enabled shell options.)-2.549 F .049(Each w) +(option, then)144 477.6 R F2($0)2.869 E F0 .369 +(is set to the \214rst ar)2.869 F .369(gument after the string to be e) +-.18 F -.15(xe)-.15 G .369(cuted, if one is present.).15 F(Other)5.369 E +(-)-.2 E(wise, it is set to the \214lename used to in)144 489.6 Q -.2 +(vo)-.4 G -.1(ke).2 G F2(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25 +(iv e)-2.5 H 2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E +F2(_)108 501.6 Q F0 .055 +(At shell startup, set to the absolute pathname used to in)144 501.6 R +-.2(vo)-.4 G .255 -.1(ke t).2 H .054(he shell or shell script being e).1 +F -.15(xe)-.15 G(cuted).15 E .691(as passed in the en)144 513.6 R .691 +(vironment or ar)-.4 F .691(gument list.)-.18 F(Subsequently)5.691 E +3.191(,e)-.65 G .692(xpands to the last ar)-3.341 F .692(gument to the) +-.18 F(pre)144 525.6 Q .752(vious simple command e)-.25 F -.15(xe)-.15 G +.752(cuted in the fore).15 F .751(ground, after e)-.15 F 3.251 +(xpansion. Also)-.15 F .751(set to the full path-)3.251 F .156 +(name used to in)144 537.6 R -.2(vo)-.4 G .356 -.1(ke e).2 H .156 +(ach command e).1 F -.15(xe)-.15 G .157(cuted and placed in the en).15 F +.157(vironment e)-.4 F .157(xported to that com-)-.15 F 4.937 +(mand. When)144 549.6 R 2.436(checking mail, this parameter holds the n\ +ame of the mail \214le currently being)4.937 F(check)144 561.6 Q(ed.)-.1 +E F2(Shell V)87 578.4 Q(ariables)-.92 E F0(The follo)108 590.4 Q(wing v) +-.25 E(ariables are set by the shell:)-.25 E F2 -.3(BA)108 607.2 S(SH).3 +E F0(Expands to the full \214lename used to in)144 607.2 Q -.2(vo)-.4 G +.2 -.1(ke t).2 H(his instance of).1 E F2(bash)2.5 E F0(.)A F2 -.3(BA)108 +619.2 S(SHOPTS).3 E F0 2.548(Ac)144 631.2 S .049 +(olon-separated list of enabled shell options.)-2.548 F .049(Each w) 5.049 F .049(ord in the list is a v)-.1 F .049(alid ar)-.25 F .049 -(gument for the)-.18 F F22.548 E F0 1.398(option to the)144 477.6 +(gument for the)-.18 F F22.549 E F0 1.398(option to the)144 643.2 R F2(shopt)3.898 E F0 -.2(bu)3.898 G 1.398(iltin command \(see).2 F F1 1.398(SHELL B)3.898 F(UIL)-.09 E 1.398(TIN COMMANDS)-.828 F F0(belo) -3.648 E 3.898(w\). The)-.25 F(options)3.898 E .477(appearing in)144 -489.6 R F1 -.27(BA)2.977 G(SHOPTS).27 E F0 .477(are those reported as) -2.727 F F3(on)3.207 E F0(by)3.217 E F2(shopt)2.977 E F0 5.476(.I)C 2.976 -(ft)-5.476 G .476(his v)-2.976 F .476(ariable is in the en)-.25 F -(vironment)-.4 E(when)144 501.6 Q F2(bash)3.141 E F0 .642(starts up, ea\ -ch shell option in the list will be enabled before reading an)3.141 F -3.142(ys)-.15 G .642(tartup \214les.)-3.142 F(This v)144 513.6 Q -(ariable is read-only)-.25 E(.)-.65 E F2 -.3(BA)108 525.6 S(SHPID).3 E -F0 .188(Expands to the process ID of the current)144 537.6 R F2(bash) -2.688 E F0 2.687(process. This)2.687 F(dif)2.687 E .187(fers from)-.25 F -F2($$)2.687 E F0 .187(under certain circum-)2.687 F -(stances, such as subshells that do not require)144 549.6 Q F2(bash)2.5 -E F0(to be re-initialized.)2.5 E F2 -.3(BA)108 561.6 S(SH_ALIASES).3 E -F0 1.195(An associati)144 573.6 R 1.495 -.15(ve a)-.25 H 1.195(rray v) -.15 F 1.195(ariable whose members correspond to the internal list of al\ -iases as main-)-.25 F .16(tained by the)144 585.6 R F2(alias)2.66 E F0 --.2(bu)2.66 G 2.66(iltin. Elements).2 F .16 +3.648 E 3.898(w\). The)-.25 F(options)3.898 E .476(appearing in)144 +655.2 R F1 -.27(BA)2.976 G(SHOPTS).27 E F0 .476(are those reported as) +2.726 F F3(on)3.206 E F0(by)3.217 E F2(shopt)2.977 E F0 5.477(.I)C 2.977 +(ft)-5.477 G .477(his v)-2.977 F .477(ariable is in the en)-.25 F +(vironment)-.4 E(when)144 667.2 Q F2(bash)3.142 E F0 .642(starts up, ea\ +ch shell option in the list will be enabled before reading an)3.142 F +3.141(ys)-.15 G .641(tartup \214les.)-3.141 F(This v)144 679.2 Q +(ariable is read-only)-.25 E(.)-.65 E F2 -.3(BA)108 691.2 S(SHPID).3 E +F0 .187(Expands to the process ID of the current)144 703.2 R F2(bash) +2.687 E F0 2.688(process. This)2.688 F(dif)2.688 E .188(fers from)-.25 F +F2($$)2.688 E F0 .188(under certain circum-)2.688 F .548 +(stances, such as subshells that do not require)144 715.2 R F2(bash) +3.048 E F0 .548(to be re-initialized.)3.048 F .548(Assignments to)5.548 +F F1 -.27(BA)3.048 G(SHPID).27 E F0(ha)144 727.2 Q .3 -.15(ve n)-.2 H +2.5(oe).15 G -.25(ff)-2.5 G 2.5(ect. If).25 F F2 -.3(BA)2.5 G(SHPID).3 E +F0(is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5 +(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) +-2.5 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(10)188.455 E 0 Cg +EP +%%Page: 11 11 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF -.3(BA)108 84 S(SH_ALIASES).3 E F0 1.195(An associati)144 96 R 1.495 +-.15(ve a)-.25 H 1.195(rray v).15 F 1.195(ariable whose members corresp\ +ond to the internal list of aliases as main-)-.25 F .16(tained by the) +144 108 R F1(alias)2.66 E F0 -.2(bu)2.66 G 2.66(iltin. Elements).2 F .16 (added to this array appear in the alias list; ho)2.66 F(we)-.25 E -.15 (ve)-.25 G .96 -.4(r, u).15 H(nsetting).4 E 4.503 -(array elements currently does not cause aliases to be remo)144 597.6 R +(array elements currently does not cause aliases to be remo)144 120 R -.15(ve)-.15 G 7.003(df).15 G 4.503(rom the alias list.)-7.003 F(If) -9.503 E F2 -.3(BA)144 609.6 S(SH_ALIASES).3 E F0 +9.503 E F1 -.3(BA)144 132 S(SH_ALIASES).3 E F0 (is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5 (ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) --2.5 E F2 -.3(BA)108 621.6 S(SH_ARGC).3 E F0 .935(An array v)144 633.6 R +-2.5 E F1 -.3(BA)108 144 S(SH_ARGC).3 E F0 .935(An array v)144 156 R .935(ariable whose v)-.25 F .934 (alues are the number of parameters in each frame of the current)-.25 F -F2(bash)3.434 E F0 -.15(exe)144 645.6 S .535(cution call stack.).15 F -.535(The number of parameters to the current subroutine \(shell functio\ -n or script)5.535 F -.15(exe)144 657.6 S .142(cuted with).15 F F2(.) -2.642 E F0(or)2.642 E F2(sour)2.642 E(ce)-.18 E F0 2.642(\)i)C 2.642(sa) --2.642 G 2.642(tt)-2.642 G .142(he top of the stack.)-2.642 F .141 +F1(bash)3.434 E F0 -.15(exe)144 168 S .535(cution call stack.).15 F .535 +(The number of parameters to the current subroutine \(shell function or\ + script)5.535 F -.15(exe)144 180 S .142(cuted with).15 F F1(.)2.642 E F0 +(or)2.642 E F1(sour)2.642 E(ce)-.18 E F0 2.642(\)i)C 2.642(sa)-2.642 G +2.642(tt)-2.642 G .142(he top of the stack.)-2.642 F .141 (When a subroutine is e)5.141 F -.15(xe)-.15 G .141 (cuted, the number of).15 F 2.63(parameters passed is pushed onto)144 -669.6 R F1 -.27(BA)5.13 G(SH_ARGC).27 E/F4 9/Times-Roman@0 SF(.)A F0 -2.63(The shell sets)7.13 F F1 -.27(BA)5.131 G(SH_ARGC).27 E F0 2.631 -(only when in)4.881 F -.15(ex)144 681.6 S(tended deb).15 E -(ugging mode \(see the description of the)-.2 E F2(extdeb)2.5 E(ug)-.2 E -F0(option to the)2.5 E F2(shopt)2.5 E F0 -.2(bu)2.5 G(iltin belo).2 E -(w\))-.25 E F2 -.3(BA)108 693.6 S(SH_ARGV).3 E F0 .98(An array v)144 -705.6 R .979(ariable containing all of the parameters in the current) --.25 F F2(bash)3.479 E F0 -.15(exe)3.479 G .979(cution call stack.).15 F -(The)5.979 E .275(\214nal parameter of the last subroutine call is at t\ -he top of the stack; the \214rst parameter of the initial)144 717.6 R -1.424(call is at the bottom.)144 729.6 R 1.424(When a subroutine is e) -6.424 F -.15(xe)-.15 G 1.424 -(cuted, the parameters supplied are pushed onto).15 F(GNU Bash 4.4)72 -768 Q(2016 August 26)142.895 E(10)192.055 E 0 Cg EP -%%Page: 11 11 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 9/Times-Bold@0 -SF -.27(BA)144 84 S(SH_ARGV).27 E/F2 9/Times-Roman@0 SF(.)A F0 2.197 -(The shell sets)6.697 F F1 -.27(BA)4.697 G(SH_ARGV).27 E F0 2.197 -(only when in e)4.447 F 2.197(xtended deb)-.15 F 2.197 -(ugging mode \(see the)-.2 F(description of the)144 96 Q/F3 10 -/Times-Bold@0 SF(extdeb)2.5 E(ug)-.2 E F0(option to the)2.5 E F3(shopt) -2.5 E F0 -.2(bu)2.5 G(iltin belo).2 E(w\))-.25 E F3 -.3(BA)108 108 S -(SH_CMDS).3 E F0 .668(An associati)144 120 R .968 -.15(ve a)-.25 H .668 +192 R/F2 9/Times-Bold@0 SF -.27(BA)5.13 G(SH_ARGC).27 E/F3 9 +/Times-Roman@0 SF(.)A F0 2.63(The shell sets)7.13 F F2 -.27(BA)5.131 G +(SH_ARGC).27 E F0 2.631(only when in)4.881 F -.15(ex)144 204 S .284 +(tended deb).15 F .284(ugging mode \(see the description of the)-.2 F F1 +(extdeb)2.784 E(ug)-.2 E F0 .283(option to the)2.783 F F1(shopt)2.783 E +F0 -.2(bu)2.783 G .283(iltin belo).2 F(w\).)-.25 E(Setting)144 216 Q F1 +(extdeb)3.362 E(ug)-.2 E F0 .862(after the shell has started to e)3.362 +F -.15(xe)-.15 G .863(cute a script, or referencing this v).15 F .863 +(ariable when)-.25 F F1(extdeb)144 228 Q(ug)-.2 E F0 +(is not set, may result in inconsistent v)2.5 E(alues.)-.25 E F1 -.3(BA) +108 240 S(SH_ARGV).3 E F0 .98(An array v)144 252 R .979 +(ariable containing all of the parameters in the current)-.25 F F1(bash) +3.479 E F0 -.15(exe)3.479 G .979(cution call stack.).15 F(The)5.979 E +.275(\214nal parameter of the last subroutine call is at the top of the\ + stack; the \214rst parameter of the initial)144 264 R 1.424 +(call is at the bottom.)144 276 R 1.424(When a subroutine is e)6.424 F +-.15(xe)-.15 G 1.424(cuted, the parameters supplied are pushed onto).15 +F F2 -.27(BA)144 288 S(SH_ARGV).27 E F3(.)A F0 2.197(The shell sets) +6.697 F F2 -.27(BA)4.697 G(SH_ARGV).27 E F0 2.197(only when in e)4.447 F +2.197(xtended deb)-.15 F 2.197(ugging mode \(see the)-.2 F .966 +(description of the)144 300 R F1(extdeb)3.466 E(ug)-.2 E F0 .966 +(option to the)3.466 F F1(shopt)3.466 E F0 -.2(bu)3.466 G .966 +(iltin belo).2 F 3.466(w\). Setting)-.25 F F1(extdeb)3.465 E(ug)-.2 E F0 +.965(after the shell)3.465 F .319(has started to e)144 312 R -.15(xe) +-.15 G .319(cute a script, or referencing this v).15 F .319 +(ariable when)-.25 F F1(extdeb)2.82 E(ug)-.2 E F0 .32 +(is not set, may result in)2.82 F(inconsistent v)144 324 Q(alues.)-.25 E +F1 -.3(BA)108 336 S(SH_ARGV0).3 E F0 .251(When referenced, this v)144 +348 R .251(ariable e)-.25 F .251 +(xpands to the name of the shell or shell script \(identical to)-.15 F +F1($0)2.75 E F0 2.75(;s)C(ee)-2.75 E 1.224 +(the description of special parameter 0 abo)144 360 R -.15(ve)-.15 G +3.724(\). Assignment).15 F(to)3.724 E F1 -.3(BA)3.724 G(SH_ARGV0).3 E F0 +1.225(causes the v)3.724 F(alue)-.25 E .247 +(assigned to also be assigned to)144 372 R F1($0)2.747 E F0 5.247(.I)C +(f)-5.247 E F1 -.3(BA)2.747 G(SH_ARGV0).3 E F0 .247 +(is unset, it loses its special properties, e)2.747 F -.15(ve)-.25 G(n) +.15 E(if it is subsequently reset.)144 384 Q F1 -.3(BA)108 396 S +(SH_CMDS).3 E F0 .667(An associati)144 408 R .967 -.15(ve a)-.25 H .667 (rray v).15 F .668(ariable whose members correspond to the internal has\ -h table of commands)-.25 F .195(as maintained by the)144 132 R F3(hash) -2.695 E F0 -.2(bu)2.695 G 2.695(iltin. Elements).2 F .196 +h table of commands)-.25 F .196(as maintained by the)144 420 R F1(hash) +2.696 E F0 -.2(bu)2.696 G 2.696(iltin. Elements).2 F .195 (added to this array appear in the hash table; ho)2.696 F(we)-.25 E -.15 (ve)-.25 G -.4(r,).15 G .852(unsetting array elements currently does no\ -t cause command names to be remo)144 144 R -.15(ve)-.15 G 3.352(df).15 G -.852(rom the hash)-3.352 F 2.5(table. If)144 156 R F3 -.3(BA)2.5 G +t cause command names to be remo)144 432 R -.15(ve)-.15 G 3.352(df).15 G +.853(rom the hash)-3.352 F 2.5(table. If)144 444 R F1 -.3(BA)2.5 G (SH_CMDS).3 E F0(is unset, it loses its special properties, e)2.5 E -.15 (ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G -(ubsequently reset.)-2.5 E F3 -.3(BA)108 168 S(SH_COMMAND).3 E F0 1.242 -(The command currently being e)144 180 R -.15(xe)-.15 G 1.243 -(cuted or about to be e).15 F -.15(xe)-.15 G 1.243 -(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.243(cuting a).15 F +(ubsequently reset.)-2.5 E F1 -.3(BA)108 456 S(SH_COMMAND).3 E F0 1.243 +(The command currently being e)144 468 R -.15(xe)-.15 G 1.243 +(cuted or about to be e).15 F -.15(xe)-.15 G 1.242 +(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.242(cuting a).15 F (command as the result of a trap, in which case it is the command e)144 -192 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F3 -.3(BA)108 -204 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 216 Q -(gument to the)-.18 E F32.5 E F0(in)2.5 E -.2(vo)-.4 G -(cation option.).2 E F3 -.3(BA)108 228 S(SH_LINENO).3 E F0 .693 -(An array v)144 240 R .692(ariable whose members are the line numbers i\ -n source \214les where each corresponding)-.25 F .969(member of)144 252 -R F1(FUNCN)3.469 E(AME)-.18 E F0 -.1(wa)3.219 G 3.469(si).1 G -1.9 -.4 -(nv o)-3.469 H -.1(ke).4 G(d.).1 E F3(${B)5.969 E(ASH_LINENO[)-.3 E/F4 -10/Times-Italic@0 SF($i)A F3(]})A F0 .97 -(is the line number in the source)3.469 F 14.672(\214le \()144 264 R F3 -(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F3(]})A F0 17.172(\)w)C(here)-17.172 -E F3(${FUNCN)17.172 E(AME[)-.2 E F4($i)A F3(]})A F0 -.1(wa)17.172 G -17.171(sc).1 G 14.671(alled \(or)-17.171 F F3(${B)144 276 Q(ASH_LINENO[) --.3 E F4($i-1)A F3(]})A F0 .115 -(if referenced within another shell function\).)2.615 F(Use)5.115 E F1 +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 516 S(SH_LINENO).3 E F0 .692 +(An array v)144 528 R .692(ariable whose members are the line numbers i\ +n source \214les where each corresponding)-.25 F .97(member of)144 540 R +F2(FUNCN)3.47 E(AME)-.18 E F0 -.1(wa)3.22 G 3.47(si).1 G -1.9 -.4(nv o) +-3.47 H -.1(ke).4 G(d.).1 E F1(${B)5.969 E(ASH_LINENO[)-.3 E/F4 10 +/Times-Italic@0 SF($i)A F1(]})A F0 .969 +(is the line number in the source)3.469 F 14.671(\214le \()144 552 R F1 +(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F1(]})A F0 17.171(\)w)C(here)-17.171 +E F1(${FUNCN)17.172 E(AME[)-.2 E F4($i)A F1(]})A F0 -.1(wa)17.172 G +17.172(sc).1 G 14.672(alled \(or)-17.172 F F1(${B)144 564 Q(ASH_LINENO[) +-.3 E F4($i-1)A F1(]})A F0 .115 +(if referenced within another shell function\).)2.615 F(Use)5.115 E F2 (LINENO)2.615 E F0 .115(to obtain the)2.365 F(current line number)144 -288 Q(.)-.55 E F3 -.3(BA)108 300 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E --.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 312 S 1.57(olon-separated list of\ +576 Q(.)-.55 E F1 -.3(BA)108 588 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E +-.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 600 S 1.57(olon-separated list of\ directories in which the shell looks for dynamically loadable b)-4.07 F -(uiltins)-.2 E(speci\214ed by the)144 324 Q F3(enable)2.5 E F0(command.) -2.5 E F3 -.3(BA)108 336 S(SH_REMA).3 E(TCH)-.95 E F0 .005(An array v)144 -348 R .005(ariable whose members are assigned by the)-.25 F F3(=~)2.506 -E F0 .006(binary operator to the)2.506 F F3([[)2.506 E F0 .006 -(conditional com-)2.506 F 2.507(mand. The)144 360 R .007 -(element with inde)2.507 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007 -(he portion of the string matching the entire re)-2.507 F .006(gular e) --.15 F(xpression.)-.15 E .997(The element with inde)144 372 R(x)-.15 E -F4(n)3.497 E F0 .997(is the portion of the string matching the)3.497 F -F4(n)3.498 E F0 .998(th parenthesized sube)B(xpres-)-.15 E 2.5 -(sion. This)144 384 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E -F3 -.3(BA)108 396 S(SH_SOURCE).3 E F0 .126(An array v)144 408 R .125(ar\ +(uiltins)-.2 E(speci\214ed by the)144 612 Q F1(enable)2.5 E F0(command.) +2.5 E F1 -.3(BA)108 624 S(SH_REMA).3 E(TCH)-.95 E F0 .006(An array v)144 +636 R .006(ariable whose members are assigned by the)-.25 F F1(=~)2.506 +E F0 .005(binary operator to the)2.506 F F1([[)2.505 E F0 .005 +(conditional com-)2.505 F 2.506(mand. The)144 648 R .007 +(element with inde)2.506 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007 +(he portion of the string matching the entire re)-2.507 F .007(gular e) +-.15 F(xpression.)-.15 E .998(The element with inde)144 660 R(x)-.15 E +F4(n)3.498 E F0 .997(is the portion of the string matching the)3.498 F +F4(n)3.497 E F0 .997(th parenthesized sube)B(xpres-)-.15 E 2.5 +(sion. This)144 672 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E +F1 -.3(BA)108 684 S(SH_SOURCE).3 E F0 .125(An array v)144 696 R .125(ar\ iable whose members are the source \214lenames where the corresponding \ -shell function)-.25 F .78(names in the)144 420 R F1(FUNCN)3.28 E(AME) +shell function)-.25 F .781(names in the)144 708 R F2(FUNCN)3.28 E(AME) -.18 E F0 .78(array v)3.03 F .78(ariable are de\214ned.)-.25 F .78 -(The shell function)5.78 F F3(${FUNCN)3.281 E(AME[)-.2 E F4($i)A F3(]})A -F0(is)3.281 E(de\214ned in the \214le)144 432 Q F3(${B)2.5 E -(ASH_SOURCE[)-.3 E F4($i)A F3(]})A F0(and called from)2.5 E F3(${B)2.5 E -(ASH_SOURCE[)-.3 E F4($i+1)A F3(]})A F0(.)A F3 -.3(BA)108 444 S -(SH_SUBSHELL).3 E F0 .296 -(Incremented by one within each subshell or subshell en)144 456 R .296 -(vironment when the shell be)-.4 F .296(gins e)-.15 F -.15(xe)-.15 G -(cuting).15 E(in that en)144 468 Q 2.5(vironment. The)-.4 F(initial v) -2.5 E(alue is 0.)-.25 E F3 -.3(BA)108 480 S(SH_VERSINFO).3 E F0 2.644 -(Ar)144 492 S .144(eadonly array v)-2.644 F .144 -(ariable whose members hold v)-.25 F .144 -(ersion information for this instance of)-.15 F F3(bash)2.645 E F0 5.145 -(.T)C(he)-5.145 E -.25(va)144 504 S -(lues assigned to the array members are as follo).25 E(ws:)-.25 E F3 -.3 -(BA)144 522 S(SH_VERSINFO[).3 E F0(0)A F3(])A F0(The major v)264 522 Q -(ersion number \(the)-.15 E F4 -.37(re)2.5 G(lease).37 E F0(\).)A F3 -.3 -(BA)144 534 S(SH_VERSINFO[).3 E F0(1)A F3(])A F0(The minor v)264 534 Q -(ersion number \(the)-.15 E F4(ver)2.5 E(sion)-.1 E F0(\).)A F3 -.3(BA) -144 546 S(SH_VERSINFO[).3 E F0(2)A F3(])A F0(The patch le)264 546 Q -.15 -(ve)-.25 G(l.).15 E F3 -.3(BA)144 558 S(SH_VERSINFO[).3 E F0(3)A F3(])A -F0(The b)264 558 Q(uild v)-.2 E(ersion.)-.15 E F3 -.3(BA)144 570 S -(SH_VERSINFO[).3 E F0(4)A F3(])A F0(The release status \(e.g.,)264 570 Q -F4(beta1)2.5 E F0(\).)A F3 -.3(BA)144 582 S(SH_VERSINFO[).3 E F0(5)A F3 -(])A F0(The v)264 582 Q(alue of)-.25 E F1(MA)2.5 E(CHTYPE)-.495 E F2(.)A -F3 -.3(BA)108 594 S(SH_VERSION).3 E F0 -(Expands to a string describing the v)144 606 Q -(ersion of this instance of)-.15 E F3(bash)2.5 E F0(.)A F3(COMP_CW)108 -618 Q(ORD)-.1 E F0 .397(An inde)144 630 R 2.897(xi)-.15 G(nto)-2.897 E -F3(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396 -(ord containing the current cursor position.)-.1 F .396(This v)5.396 F -(ari-)-.25 E 1.18(able is a)144 642 R -.25(va)-.2 G 1.181 -(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.681 -(db).1 G 3.681(yt)-3.681 G 1.181(he programmable completion f)-3.681 F -1.181(acilities \(see)-.1 F F3(Pr)144 654 Q(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F3(COMP_KEY)108 666 Q F0(The k)144 678 Q .3 --.15(ey \()-.1 H(or \214nal k).15 E .3 -.15(ey o)-.1 H 2.5(fak).15 G .3 --.15(ey s)-2.6 H(equence\) used to in).15 E -.2(vo)-.4 G .2 -.1(ke t).2 -H(he current completion function.).1 E F3(COMP_LINE)108 690 Q F0 1.208 -(The current command line.)144 702 R 1.208(This v)6.208 F 1.208 -(ariable is a)-.25 F -.25(va)-.2 G 1.208 -(ilable only in shell functions and e).25 F 1.207(xternal com-)-.15 F -2.848(mands in)144 714 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 -(yt)-5.349 G 2.849(he programmable completion f)-5.349 F 2.849 -(acilities \(see)-.1 F F3(Pr)5.349 E 2.849(ogrammable Completion)-.18 F -F0(belo)144 726 Q(w\).)-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26) -142.895 E(11)192.055 E 0 Cg EP +(The shell function)5.78 F F1(${FUNCN)3.28 E(AME[)-.2 E F4($i)A F1(]})A +F0(is)3.28 E(de\214ned in the \214le)144 720 Q F1(${B)2.5 E(ASH_SOURCE[) +-.3 E F4($i)A F1(]})A F0(and called from)2.5 E F1(${B)2.5 E(ASH_SOURCE[) +-.3 E F4($i+1)A F1(]})A F0(.)A(GNU Bash 5.0)72 768 Q(2018 December 7) +139.295 E(11)188.455 E 0 Cg EP %%Page: 12 12 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(COMP_POINT)108 84 Q F0 .667(The inde)144 96 R 3.167(xo)-.15 G 3.167 -(ft)-3.167 G .666(he current cursor position relati)-3.167 F .966 -.15 -(ve t)-.25 H 3.166(ot).15 G .666(he be)-3.166 F .666 -(ginning of the current command.)-.15 F .666(If the)5.666 F .534 +SF -.3(BA)108 84 S(SH_SUBSHELL).3 E F0 .296 +(Incremented by one within each subshell or subshell en)144 96 R .296 +(vironment when the shell be)-.4 F .297(gins e)-.15 F -.15(xe)-.15 G +(cuting).15 E(in that en)144 108 Q 2.5(vironment. The)-.4 F(initial v) +2.5 E(alue is 0.)-.25 E F1 -.3(BA)108 120 S(SH_VERSINFO).3 E F0 2.645 +(Ar)144 132 S .145(eadonly array v)-2.645 F .144 +(ariable whose members hold v)-.25 F .144 +(ersion information for this instance of)-.15 F F1(bash)2.644 E F0 5.144 +(.T)C(he)-5.144 E -.25(va)144 144 S +(lues assigned to the array members are as follo).25 E(ws:)-.25 E F1 -.3 +(BA)144 162 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)264 162 Q +(ersion number \(the)-.15 E/F2 10/Times-Italic@0 SF -.37(re)2.5 G(lease) +.37 E F0(\).)A F1 -.3(BA)144 174 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0 +(The minor v)264 174 Q(ersion number \(the)-.15 E F2(ver)2.5 E(sion)-.1 +E F0(\).)A F1 -.3(BA)144 186 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0 +(The patch le)264 186 Q -.15(ve)-.25 G(l.).15 E F1 -.3(BA)144 198 S +(SH_VERSINFO[).3 E F0(3)A F1(])A F0(The b)264 198 Q(uild v)-.2 E +(ersion.)-.15 E F1 -.3(BA)144 210 S(SH_VERSINFO[).3 E F0(4)A F1(])A F0 +(The release status \(e.g.,)264 210 Q F2(beta1)2.5 E F0(\).)A F1 -.3(BA) +144 222 S(SH_VERSINFO[).3 E F0(5)A F1(])A F0(The v)264 222 Q(alue of) +-.25 E/F3 9/Times-Bold@0 SF(MA)2.5 E(CHTYPE)-.495 E/F4 9/Times-Roman@0 +SF(.)A F1 -.3(BA)108 234 S(SH_VERSION).3 E F0 +(Expands to a string describing the v)144 246 Q +(ersion of this instance of)-.15 E F1(bash)2.5 E F0(.)A F1(COMP_CW)108 +258 Q(ORD)-.1 E F0 .396(An inde)144 270 R 2.896(xi)-.15 G(nto)-2.896 E +F1(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396 +(ord containing the current cursor position.)-.1 F .397(This v)5.397 F +(ari-)-.25 E 1.181(able is a)144 282 R -.25(va)-.2 G 1.181 +(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.681 +(db).1 G 3.681(yt)-3.681 G 1.18(he programmable completion f)-3.681 F +1.18(acilities \(see)-.1 F F1(Pr)144 294 Q(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 306 Q F0(The k)144 318 Q .3 +-.15(ey \()-.1 H(or \214nal k).15 E .3 -.15(ey o)-.1 H 2.5(fak).15 G .3 +-.15(ey s)-2.6 H(equence\) used to in).15 E -.2(vo)-.4 G .2 -.1(ke t).2 +H(he current completion function.).1 E F1(COMP_LINE)108 330 Q F0 1.207 +(The current command line.)144 342 R 1.208(This v)6.208 F 1.208 +(ariable is a)-.25 F -.25(va)-.2 G 1.208 +(ilable only in shell functions and e).25 F 1.208(xternal com-)-.15 F +2.849(mands in)144 354 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 +(yt)-5.349 G 2.849(he programmable completion f)-5.349 F 2.849 +(acilities \(see)-.1 F F1(Pr)5.349 E 2.848(ogrammable Completion)-.18 F +F0(belo)144 366 Q(w\).)-.25 E F1(COMP_POINT)108 378 Q F0 .666(The inde) +144 390 R 3.166(xo)-.15 G 3.166(ft)-3.166 G .666 +(he current cursor position relati)-3.166 F .966 -.15(ve t)-.25 H 3.166 +(ot).15 G .666(he be)-3.166 F .666(ginning of the current command.)-.15 +F .667(If the)5.667 F .535 (current cursor position is at the end of the current command, the v)144 -108 R .535(alue of this v)-.25 F .535(ariable is equal to)-.25 F F1 -(${#COMP_LINE})144 120 Q F0 7.006(.T)C 2.006(his v)-7.006 F 2.006 -(ariable is a)-.25 F -.25(va)-.2 G 2.005 -(ilable only in shell functions and e).25 F 2.005(xternal commands)-.15 -F(in)144 132 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G +402 R .534(alue of this v)-.25 F .534(ariable is equal to)-.25 F F1 +(${#COMP_LINE})144 414 Q F0 7.005(.T)C 2.005(his v)-7.005 F 2.005 +(ariable is a)-.25 F -.25(va)-.2 G 2.006 +(ilable only in shell functions and e).25 F 2.006(xternal commands)-.15 +F(in)144 426 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G (he programmable completion f)-2.5 E(acilities \(see)-.1 E F1(Pr)2.5 E (ogrammable Completion)-.18 E F0(belo)2.5 E(w\).)-.25 E F1(COMP_TYPE)108 -144 Q F0 .041(Set to an inte)144 156 R .041(ger v)-.15 F .041(alue corr\ +438 Q F0 .042(Set to an inte)144 450 R .042(ger v)-.15 F .041(alue corr\ esponding to the type of completion attempted that caused a completion) --.25 F .338(function to be called:)144 168 R/F2 10/Times-Italic@0 SF -.5 -(TA)2.837 G(B).5 E F0 2.837(,f)C .337(or normal completion,)-2.837 F F2 -(?)2.837 E F0 2.837(,f)C .337(or listing completions after successi) --2.837 F .637 -.15(ve t)-.25 H(abs,).15 E F2(!)144 180 Q F0 4.091(,f)C -1.591(or listing alternati)-4.091 F -.15(ve)-.25 G 4.092(so).15 G 4.092 -(np)-4.092 G 1.592(artial w)-4.092 F 1.592(ord completion,)-.1 F F2(@) -4.092 E F0 4.092(,t)C 4.092(ol)-4.092 G 1.592(ist completions if the w) --4.092 F 1.592(ord is not)-.1 F 1.553(unmodi\214ed, or)144 192 R F2(%) -4.053 E F0 4.052(,f)C 1.552(or menu completion.)-4.052 F 1.552(This v) -6.552 F 1.552(ariable is a)-.25 F -.25(va)-.2 G 1.552 -(ilable only in shell functions and).25 F -.15(ex)144 204 S 2.928 +-.25 F .337(function to be called:)144 462 R F2 -.5(TA)2.837 G(B).5 E F0 +2.837(,f)C .337(or normal completion,)-2.837 F F2(?)2.837 E F0 2.837(,f) +C .337(or listing completions after successi)-2.837 F .638 -.15(ve t) +-.25 H(abs,).15 E F2(!)144 474 Q F0 4.092(,f)C 1.592 +(or listing alternati)-4.092 F -.15(ve)-.25 G 4.092(so).15 G 4.092(np) +-4.092 G 1.592(artial w)-4.092 F 1.592(ord completion,)-.1 F F2(@)4.092 +E F0 4.092(,t)C 4.092(ol)-4.092 G 1.592(ist completions if the w)-4.092 +F 1.591(ord is not)-.1 F 1.552(unmodi\214ed, or)144 486 R F2(%)4.052 E +F0 4.052(,f)C 1.552(or menu completion.)-4.052 F 1.552(This v)6.552 F +1.552(ariable is a)-.25 F -.25(va)-.2 G 1.552 +(ilable only in shell functions and).25 F -.15(ex)144 498 S 2.929 (ternal commands in).15 F -.2(vo)-.4 G -.1(ke).2 G 5.429(db).1 G 5.429 (yt)-5.429 G 2.929(he programmable completion f)-5.429 F 2.929 -(acilities \(see)-.1 F F1(Pr)5.429 E(ogrammable)-.18 E(Completion)144 -216 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 228 Q(ORDBREAKS)-.1 E F0 -1.336(The set of characters that the)144 240 R F1 -.18(re)3.836 G -(adline).18 E F0 1.336(library treats as w)3.836 F 1.335 -(ord separators when performing w)-.1 F(ord)-.1 E 3.125(completion. If) -144 252 R/F3 9/Times-Bold@0 SF(COMP_W)3.125 E(ORDBREAKS)-.09 E F0 .626 -(is unset, it loses its special properties, e)2.875 F -.15(ve)-.25 G -3.126(ni).15 G 3.126(fi)-3.126 G 3.126(ti)-3.126 G 3.126(ss)-3.126 G -(ubse-)-3.126 E(quently reset.)144 264 Q F1(COMP_W)108 276 Q(ORDS)-.1 E -F0 .654(An array v)144 288 R .654(ariable \(see)-.25 F F1(Arrays)3.154 E -F0(belo)3.154 E .654(w\) consisting of the indi)-.25 F .653(vidual w) --.25 F .653(ords in the current command)-.1 F 4.332(line. The)144 300 R +(acilities \(see)-.1 F F1(Pr)5.428 E(ogrammable)-.18 E(Completion)144 +510 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 522 Q(ORDBREAKS)-.1 E F0 +1.335(The set of characters that the)144 534 R F1 -.18(re)3.836 G +(adline).18 E F0 1.336(library treats as w)3.836 F 1.336 +(ord separators when performing w)-.1 F(ord)-.1 E 3.126(completion. If) +144 546 R F3(COMP_W)3.126 E(ORDBREAKS)-.09 E F0 .626 +(is unset, it loses its special properties, e)2.876 F -.15(ve)-.25 G +3.125(ni).15 G 3.125(fi)-3.125 G 3.125(ti)-3.125 G 3.125(ss)-3.125 G +(ubse-)-3.125 E(quently reset.)144 558 Q F1(COMP_W)108 570 Q(ORDS)-.1 E +F0 .653(An array v)144 582 R .653(ariable \(see)-.25 F F1(Arrays)3.153 E +F0(belo)3.153 E .654(w\) consisting of the indi)-.25 F .654(vidual w) +-.25 F .654(ords in the current command)-.1 F 4.333(line. The)144 594 R 1.832(line is split into w)4.332 F 1.832(ords as)-.1 F F1 -.18(re)4.332 G(adline).18 E F0 -.1(wo)4.332 G 1.832(uld split it, using).1 F F3 -(COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.083 E .832(described abo)144 -312 R -.15(ve)-.15 G 5.832(.T).15 G .832(his v)-5.832 F .832 -(ariable is a)-.25 F -.25(va)-.2 G .831 -(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.331 -(db).1 G 3.331(yt)-3.331 G .831(he programmable)-3.331 F(completion f) -144 324 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 336 Q(OC)-.3 E F0 .168(An array v) -144 348 R .168(ariable \(see)-.25 F F1(Arrays)2.668 E F0(belo)2.669 E +(COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.082 E .831(described abo)144 +606 R -.15(ve)-.15 G 5.831(.T).15 G .831(his v)-5.831 F .831 +(ariable is a)-.25 F -.25(va)-.2 G .832 +(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.332 +(db).1 G 3.332(yt)-3.332 G .832(he programmable)-3.332 F(completion f) +144 618 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 630 Q(OC)-.3 E F0 .169(An array v) +144 642 R .169(ariable \(see)-.25 F F1(Arrays)2.669 E F0(belo)2.669 E .169 (w\) created to hold the \214le descriptors for output from and input) --.25 F(to an unnamed coprocess \(see)144 360 Q F1(Copr)2.5 E(ocesses) --.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 372 Q -.55(AC) --.9 G(K).55 E F0 2.26(An array v)144 384 R 2.26(ariable \(see)-.25 F F1 +-.25 F(to an unnamed coprocess \(see)144 654 Q F1(Copr)2.5 E(ocesses) +-.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 666 Q -.55(AC) +-.9 G(K).55 E F0 2.26(An array v)144 678 R 2.26(ariable \(see)-.25 F F1 (Arrays)4.76 E F0(belo)4.76 E 2.26 (w\) containing the current contents of the directory stack.)-.25 F -1.094(Directories appear in the stack in the order the)144 396 R 3.594 -(ya)-.15 G 1.095(re displayed by the)-3.594 F F1(dirs)3.595 E F0 -.2(bu) -3.595 G 3.595(iltin. Assigning).2 F(to)3.595 E 1.432 -(members of this array v)144 408 R 1.432 +1.095(Directories appear in the stack in the order the)144 690 R 3.594 +(ya)-.15 G 1.094(re displayed by the)-3.594 F F1(dirs)3.594 E F0 -.2(bu) +3.594 G 3.594(iltin. Assigning).2 F(to)3.594 E 1.431 +(members of this array v)144 702 R 1.432 (ariable may be used to modify directories already in the stack, b)-.25 -F 1.431(ut the)-.2 F F1(pushd)144 420 Q F0(and)2.746 E F1(popd)2.746 E +F 1.432(ut the)-.2 F F1(pushd)144 714 Q F0(and)2.746 E F1(popd)2.746 E F0 -.2(bu)2.746 G .246(iltins must be used to add and remo).2 F .546 -.15(ve d)-.15 H 2.746(irectories. Assignment).15 F .246(to this v)2.746 -F(ariable)-.25 E .351(will not change the current directory)144 432 R +F(ariable)-.25 E .35(will not change the current directory)144 726 R 5.35(.I)-.65 G(f)-5.35 E F3(DIRST)2.85 E -.495(AC)-.81 G(K).495 E F0 .35 -(is unset, it loses its special properties, e)2.6 F -.15(ve)-.25 G 2.85 -(ni).15 G(f)-2.85 E(it is subsequently reset.)144 444 Q F1(EUID)108 456 -Q F0 1.103(Expands to the ef)144 456 R(fecti)-.25 E 1.403 -.15(ve u)-.25 -H 1.103(ser ID of the current user).15 F 3.603(,i)-.4 G 1.103 -(nitialized at shell startup.)-3.603 F 1.104(This v)6.103 F 1.104 -(ariable is)-.25 F(readonly)144 468 Q(.)-.65 E F1(FUNCN)108 480 Q(AME) --.2 E F0 .479(An array v)144 492 R .479 +(is unset, it loses its special properties, e)2.6 F -.15(ve)-.25 G 2.851 +(ni).15 G(f)-2.851 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(12) +188.455 E 0 Cg EP +%%Page: 13 13 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(it is subsequently reset.)144 84 Q/F1 10/Times-Bold@0 SF(EPOCHREAL)108 +96 Q(TIME)-.92 E F0 .338(Each time this parameter is referenced, it e) +144 108 R .337(xpands to the number of seconds since the Unix Epoch)-.15 +F(\(see)144 120 Q/F2 10/Times-Italic@0 SF(time)2.916 E F0 .416 +(\(3\)\) as a \215oating point v)B .417 +(alue with micro-second granularity)-.25 F 5.417(.A)-.65 G .417 +(ssignments to)-5.417 F/F3 9/Times-Bold@0 SF(EPOCHRE-)2.917 E(AL)144 132 +Q(TIME)-.828 E F0 1.091(are ignored.)3.341 F(If)6.091 E F3(EPOCHREAL) +3.59 E(TIME)-.828 E F0 1.09 +(is unset, it loses its special properties, e)3.34 F -.15(ve)-.25 G 3.59 +(ni).15 G 3.59(fi)-3.59 G 3.59(ti)-3.59 G(s)-3.59 E(subsequently reset.) +144 144 Q F1(EPOCHSECONDS)108 156 Q F0 .337 +(Each time this parameter is referenced, it e)144 168 R .338 +(xpands to the number of seconds since the Unix Epoch)-.15 F(\(see)144 +180 Q F2(time)4.042 E F0 4.042(\(3\)\). Assignments)B(to)4.042 E F3 +(EPOCHSECONDS)4.042 E F0 1.542(are ignored.)3.792 F(If)6.542 E F3 +(EPOCHSECONDS)4.041 E F0 1.541(is unset, it)3.791 F +(loses its special properties, e)144 192 Q -.15(ve)-.25 G 2.5(ni).15 G +2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1 +(EUID)108 204 Q F0 1.103(Expands to the ef)144 204 R(fecti)-.25 E 1.403 +-.15(ve u)-.25 H 1.103(ser ID of the current user).15 F 3.603(,i)-.4 G +1.103(nitialized at shell startup.)-3.603 F 1.104(This v)6.103 F 1.104 +(ariable is)-.25 F(readonly)144 216 Q(.)-.65 E F1(FUNCN)108 228 Q(AME) +-.2 E F0 .479(An array v)144 240 R .479 (ariable containing the names of all shell functions currently in the e) -.25 F -.15(xe)-.15 G .478(cution call stack.).15 F .276 -(The element with inde)144 504 R 2.776(x0i)-.15 G 2.776(st)-2.776 G .276 +(The element with inde)144 252 R 2.776(x0i)-.15 G 2.776(st)-2.776 G .276 (he name of an)-2.776 F 2.777(yc)-.15 G(urrently-e)-2.777 E -.15(xe)-.15 G .277(cuting shell function.).15 F .277(The bottom-most)5.277 F .385 -(element \(the one with the highest inde)144 516 R .384(x\) is)-.15 F/F4 +(element \(the one with the highest inde)144 264 R .384(x\) is)-.15 F/F4 10/Courier@0 SF("main")2.884 E F0 5.384(.T)C .384(his v)-5.384 F .384 (ariable e)-.25 F .384(xists only when a shell func-)-.15 F .075 -(tion is e)144 528 R -.15(xe)-.15 G 2.575(cuting. Assignments).15 F(to) +(tion is e)144 276 R -.15(xe)-.15 G 2.575(cuting. Assignments).15 F(to) 2.575 E F3(FUNCN)2.575 E(AME)-.18 E F0(ha)2.325 E .376 -.15(ve n)-.2 H 2.576(oe).15 G -.25(ff)-2.576 G 2.576(ect. If).25 F F3(FUNCN)2.576 E (AME)-.18 E F0 .076(is unset, it loses its)2.326 F -(special properties, e)144 540 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 +(special properties, e)144 288 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E .111(This v)144 -558 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO) +306 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO) .3 E F0(and)2.611 E F1 -.3(BA)2.611 G(SH_SOURCE).3 E F0 5.111(.E)C .111 -(ach element of)-5.111 F F1(FUNC-)2.61 E -.2(NA)144 570 S(ME).2 E F0 +(ach element of)-5.111 F F1(FUNC-)2.61 E -.2(NA)144 318 S(ME).2 E F0 1.404(has corresponding elements in)3.904 F F1 -.3(BA)3.904 G(SH_LINENO) .3 E F0(and)3.904 E F1 -.3(BA)3.904 G(SH_SOURCE).3 E F0 1.404 -(to describe the)3.904 F .012(call stack.)144 582 R -.15(Fo)5.012 G +(to describe the)3.904 F .012(call stack.)144 330 R -.15(Fo)5.012 G 2.512(ri).15 G(nstance,)-2.512 E F1(${FUNCN)2.512 E(AME[)-.2 E F2($i)A F1(]})A F0 -.1(wa)2.512 G 2.512(sc).1 G .012(alled from the \214le) -2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F2($i+1)A F1(]})A F0 1.183 -(at line number)144 594 R F1(${B)3.683 E(ASH_LINENO[)-.3 E F2($i)A F1 +(at line number)144 342 R F1(${B)3.683 E(ASH_LINENO[)-.3 E F2($i)A F1 (]})A F0 6.183(.T)C(he)-6.183 E F1(caller)3.683 E F0 -.2(bu)3.683 G 1.184(iltin displays the current call stack using).2 F -(this information.)144 606 Q F1(GR)108 618 Q(OUPS)-.3 E F0 1.229 -(An array v)144 630 R 1.228(ariable containing the list of groups of wh\ +(this information.)144 354 Q F1(GR)108 366 Q(OUPS)-.3 E F0 1.229 +(An array v)144 378 R 1.228(ariable containing the list of groups of wh\ ich the current user is a member)-.25 F 6.228(.A)-.55 G(ssign-)-6.228 E -.571(ments to)144 642 R F3(GR)3.071 E(OUPS)-.27 E F0(ha)2.822 E .872 +.571(ments to)144 390 R F3(GR)3.071 E(OUPS)-.27 E F0(ha)2.822 E .872 -.15(ve n)-.2 H 3.072(oe).15 G -.25(ff)-3.072 G 3.072(ect. If).25 F F3 (GR)3.072 E(OUPS)-.27 E F0 .572 (is unset, it loses its special properties, e)2.822 F -.15(ve)-.25 G 3.072(ni).15 G 3.072(fi)-3.072 G 3.072(ti)-3.072 G(s)-3.072 E -(subsequently reset.)144 654 Q F1(HISTCMD)108 666 Q F0 .356 -(The history number)144 678 R 2.856(,o)-.4 G 2.856(ri)-2.856 G(nde) +(subsequently reset.)144 402 Q F1(HISTCMD)108 414 Q F0 .356 +(The history number)144 426 R 2.856(,o)-.4 G 2.856(ri)-2.856 G(nde) -2.856 E 2.856(xi)-.15 G 2.856(nt)-2.856 G .356 (he history list, of the current command.)-2.856 F(If)5.356 E F3 (HISTCMD)2.855 E F0 .355(is unset, it)2.605 F -(loses its special properties, e)144 690 Q -.15(ve)-.25 G 2.5(ni).15 G +(loses its special properties, e)144 438 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1 -(HOSTN)108 702 Q(AME)-.2 E F0 -(Automatically set to the name of the current host.)144 714 Q -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(12)192.055 E 0 Cg EP -%%Page: 13 13 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(HOSTTYPE)108 84 Q F0 .222(Automatically set to a string that uniquel\ -y describes the type of machine on which)144 96 R F1(bash)2.723 E F0 -.223(is e)2.723 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 108 R(def) -2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 120 Q F0 1.408(Each\ +(HOSTN)108 450 Q(AME)-.2 E F0 +(Automatically set to the name of the current host.)144 462 Q F1 +(HOSTTYPE)108 474 Q F0 .222(Automatically set to a string that uniquely\ + describes the type of machine on which)144 486 R F1(bash)2.723 E F0 +.223(is e)2.723 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 498 R(def) +2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 510 Q F0 1.408(Each\ time this parameter is referenced, the shell substitutes a decimal num\ -ber representing the)144 132 R .078(current sequential line number \(st\ -arting with 1\) within a script or function.)144 144 R .079 -(When not in a script or)5.078 F .307(function, the v)144 156 R .307 +ber representing the)144 522 R .078(current sequential line number \(st\ +arting with 1\) within a script or function.)144 534 R .079 +(When not in a script or)5.078 F .307(function, the v)144 546 R .307 (alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.306 E -/F2 9/Times-Bold@0 SF(LINENO)2.806 E F0 .306(is unset, it loses its) -2.556 F(special properties, e)144 168 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5 -(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA) -108 180 Q(CHTYPE)-.55 E F0 .898(Automatically set to a string that full\ -y describes the system type on which)144 192 R F1(bash)3.398 E F0 .899 -(is e)3.398 F -.15(xe)-.15 G .899(cuting, in).15 F(the standard GNU)144 -204 Q/F3 10/Times-Italic@0 SF(cpu-company-system)2.5 E F0 2.5 -(format. The)2.5 F(def)2.5 E(ault is system-dependent.)-.1 E F1(MAPFILE) -108 216 Q F0 .294(An array v)144 228 R .294(ariable \(see)-.25 F F1 -(Arrays)2.794 E F0(belo)2.794 E .294(w\) created to hold the te)-.25 F -.293(xt read by the)-.15 F F1(map\214le)2.793 E F0 -.2(bu)2.793 G .293 -(iltin when no).2 F -.25(va)144 240 S(riable name is supplied.).25 E F1 -(OLDPWD)108 252 Q F0(The pre)144 264 Q(vious w)-.25 E +F3(LINENO)2.806 E F0 .306(is unset, it loses its)2.556 F +(special properties, e)144 558 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 +G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA)108 570 Q +(CHTYPE)-.55 E F0 .898(Automatically set to a string that fully describ\ +es the system type on which)144 582 R F1(bash)3.398 E F0 .899(is e)3.398 +F -.15(xe)-.15 G .899(cuting, in).15 F(the standard GNU)144 594 Q F2 +(cpu-company-system)2.5 E F0 2.5(format. The)2.5 F(def)2.5 E +(ault is system-dependent.)-.1 E F1(MAPFILE)108 606 Q F0 .294 +(An array v)144 618 R .294(ariable \(see)-.25 F F1(Arrays)2.794 E F0 +(belo)2.794 E .294(w\) created to hold the te)-.25 F .293 +(xt read by the)-.15 F F1(map\214le)2.793 E F0 -.2(bu)2.793 G .293 +(iltin when no).2 F -.25(va)144 630 S(riable name is supplied.).25 E F1 +(OLDPWD)108 642 Q F0(The pre)144 654 Q(vious w)-.25 E (orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1 -(OPT)108 276 Q(ARG)-.9 E F0 1.626(The v)144 288 R 1.627 +(OPT)108 666 Q(ARG)-.9 E F0 1.626(The v)144 678 R 1.627 (alue of the last option ar)-.25 F 1.627(gument processed by the)-.18 F -F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.627(iltin command \(see).2 F F2 -(SHELL)4.127 E -.09(BU)144 300 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) -2.25 E(w\).)-.25 E F1(OPTIND)108 312 Q F0 1.652(The inde)144 324 R 4.152 +F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.627(iltin command \(see).2 F F3 +(SHELL)4.127 E -.09(BU)144 690 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) +2.25 E(w\).)-.25 E F1(OPTIND)108 702 Q F0 1.652(The inde)144 714 R 4.152 (xo)-.15 G 4.152(ft)-4.152 G 1.652(he ne)-4.152 F 1.652(xt ar)-.15 F 1.652(gument to be processed by the)-.18 F F1(getopts)4.151 E F0 -.2(bu) -4.151 G 1.651(iltin command \(see).2 F F2(SHELL)4.151 E -.09(BU)144 336 -S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1(OSTYPE)108 -348 Q F0 .329(Automatically set to a string that describes the operatin\ -g system on which)144 360 R F1(bash)2.83 E F0 .33(is e)2.83 F -.15(xe) --.15 G 2.83(cuting. The).15 F(def)144 372 Q(ault is system-dependent.) --.1 E F1(PIPEST)108 384 Q -.95(AT)-.9 G(US).95 E F0 .61(An array v)144 -396 R .61(ariable \(see)-.25 F F1(Arrays)3.11 E F0(belo)3.11 E .61 -(w\) containing a list of e)-.25 F .61(xit status v)-.15 F .61 -(alues from the processes in)-.25 F(the most-recently-e)144 408 Q -.15 -(xe)-.15 G(cuted fore).15 E +4.151 G 1.651(iltin command \(see).2 F F3(SHELL)4.151 E -.09(BU)144 726 +S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 5.0) +72 768 Q(2018 December 7)139.295 E(13)188.455 E 0 Cg EP +%%Page: 14 14 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(OSTYPE)108 84 Q F0 .329(Automatically set to a string that describes\ + the operating system on which)144 96 R F1(bash)2.83 E F0 .33(is e)2.83 +F -.15(xe)-.15 G 2.83(cuting. The).15 F(def)144 108 Q +(ault is system-dependent.)-.1 E F1(PIPEST)108 120 Q -.95(AT)-.9 G(US) +.95 E F0 .61(An array v)144 132 R .61(ariable \(see)-.25 F F1(Arrays) +3.11 E F0(belo)3.11 E .61(w\) containing a list of e)-.25 F .61 +(xit status v)-.15 F .61(alues from the processes in)-.25 F +(the most-recently-e)144 144 Q -.15(xe)-.15 G(cuted fore).15 E (ground pipeline \(which may contain only a single command\).)-.15 E F1 -(PPID)108 420 Q F0(The process ID of the shell')144 420 Q 2.5(sp)-.55 G +(PPID)108 156 Q F0(The process ID of the shell')144 156 Q 2.5(sp)-.55 G 2.5(arent. This)-2.5 F -.25(va)2.5 G(riable is readonly).25 E(.)-.65 E -F1(PWD)108 432 Q F0(The current w)144 432 Q +F1(PWD)108 168 Q F0(The current w)144 168 Q (orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1 -(RANDOM)108 444 Q F0 .565 -(Each time this parameter is referenced, a random inte)144 456 R .566 +(RANDOM)108 180 Q F0 .565 +(Each time this parameter is referenced, a random inte)144 192 R .566 (ger between 0 and 32767 is generated.)-.15 F(The)5.566 E .01 -(sequence of random numbers may be initialized by assigning a v)144 468 -R .01(alue to)-.25 F F2(RANDOM)2.51 E/F4 9/Times-Roman@0 SF(.)A F0(If) -4.51 E F2(RANDOM)2.51 E F0(is)2.26 E -(unset, it loses its special properties, e)144 480 Q -.15(ve)-.25 G 2.5 +(sequence of random numbers may be initialized by assigning a v)144 204 +R .01(alue to)-.25 F/F2 9/Times-Bold@0 SF(RANDOM)2.51 E/F3 9 +/Times-Roman@0 SF(.)A F0(If)4.51 E F2(RANDOM)2.51 E F0(is)2.26 E +(unset, it loses its special properties, e)144 216 Q -.15(ve)-.25 G 2.5 (ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) --2.5 E F1(READLINE_LINE)108 492 Q F0 1.546(The contents of the)144 504 R +-2.5 E F1(READLINE_LINE)108 228 Q F0 1.546(The contents of the)144 240 R F1 -.18(re)4.047 G(adline).18 E F0 1.547(line b)4.047 F(uf)-.2 E(fer) --.25 E 4.047(,f)-.4 G 1.547(or use with)-4.047 F/F5 10/Courier@0 SF +-.25 E 4.047(,f)-.4 G 1.547(or use with)-4.047 F/F4 10/Courier@0 SF 1.547(bind -x)4.047 F F0(\(see)4.047 E F2 1.547(SHELL B)4.047 F(UIL)-.09 -E 1.547(TIN COM-)-.828 F(MANDS)144 516 Q F0(belo)2.25 E(w\).)-.25 E F1 -(READLINE_POINT)108 528 Q F0 .314 -(The position of the insertion point in the)144 540 R F1 -.18(re)2.813 G +E 1.547(TIN COM-)-.828 F(MANDS)144 252 Q F0(belo)2.25 E(w\).)-.25 E F1 +(READLINE_POINT)108 264 Q F0 .314 +(The position of the insertion point in the)144 276 R F1 -.18(re)2.813 G (adline).18 E F0 .313(line b)2.813 F(uf)-.2 E(fer)-.25 E 2.813(,f)-.4 G -.313(or use with)-2.813 F F5 .313(bind -x)2.813 F F0(\(see)2.813 E F2 -(SHELL)2.813 E -.09(BU)144 552 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) -2.25 E(w\).)-.25 E F1(REPL)108 564 Q(Y)-.92 E F0 -(Set to the line of input read by the)144 576 Q F1 -.18(re)2.5 G(ad).18 +.313(or use with)-2.813 F F4 .313(bind -x)2.813 F F0(\(see)2.813 E F2 +(SHELL)2.813 E -.09(BU)144 288 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) +2.25 E(w\).)-.25 E F1(REPL)108 300 Q(Y)-.92 E F0 +(Set to the line of input read by the)144 312 Q F1 -.18(re)2.5 G(ad).18 E F0 -.2(bu)2.5 G(iltin command when no ar).2 E(guments are supplied.) --.18 E F1(SECONDS)108 588 Q F0 .795(Each time this parameter is referen\ -ced, the number of seconds since shell in)144 600 R -.2(vo)-.4 G .795 -(cation is returned.).2 F .713(If a v)144 612 R .712 -(alue is assigned to)-.25 F F2(SECONDS)3.212 E F4(,)A F0 .712(the v) +-.18 E F1(SECONDS)108 324 Q F0 .795(Each time this parameter is referen\ +ced, the number of seconds since shell in)144 336 R -.2(vo)-.4 G .795 +(cation is returned.).2 F .713(If a v)144 348 R .712 +(alue is assigned to)-.25 F F2(SECONDS)3.212 E F3(,)A F0 .712(the v) 2.962 F .712(alue returned upon subsequent references is the number)-.25 -F .407(of seconds since the assignment plus the v)144 624 R .408 +F .407(of seconds since the assignment plus the v)144 360 R .408 (alue assigned.)-.25 F(If)5.408 E F2(SECONDS)2.908 E F0 .408 -(is unset, it loses its special)2.658 F(properties, e)144 636 Q -.15(ve) +(is unset, it loses its special)2.658 F(properties, e)144 372 Q -.15(ve) -.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G -(ubsequently reset.)-2.5 E F1(SHELLOPTS)108 648 Q F0 3.263(Ac)144 660 S +(ubsequently reset.)-2.5 E F1(SHELLOPTS)108 384 Q F0 3.263(Ac)144 396 S .763(olon-separated list of enabled shell options.)-3.263 F .763(Each w) 5.763 F .763(ord in the list is a v)-.1 F .763(alid ar)-.25 F .763 -(gument for the)-.18 F F1144 672 Q F0 1.173(option to the)3.673 F +(gument for the)-.18 F F1144 408 Q F0 1.173(option to the)3.673 F F1(set)3.673 E F0 -.2(bu)3.673 G 1.173(iltin command \(see).2 F F2 1.174 (SHELL B)3.674 F(UIL)-.09 E 1.174(TIN COMMANDS)-.828 F F0(belo)3.424 E -3.674(w\). The)-.25 F(options)3.674 E .02(appearing in)144 684 R F2 -(SHELLOPTS)2.52 E F0 .019(are those reported as)2.27 F F3(on)2.749 E F0 -(by)2.759 E F1 .019(set \255o)2.519 F F0 5.019(.I)C 2.519(ft)-5.019 G -.019(his v)-2.519 F .019(ariable is in the en)-.25 F(vironment)-.4 E -(when)144 696 Q F1(bash)3.141 E F0 .642(starts up, each shell option in\ - the list will be enabled before reading an)3.141 F 3.142(ys)-.15 G .642 -(tartup \214les.)-3.142 F(This v)144 708 Q(ariable is read-only)-.25 E -(.)-.65 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(13)192.055 E 0 -Cg EP -%%Page: 14 14 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(SHL)108 84 Q(VL)-.92 E F0 -(Incremented by one each time an instance of)144 96 Q F1(bash)2.5 E F0 -(is started.)2.5 E F1(UID)108 108 Q F0 -(Expands to the user ID of the current user)144 108 Q 2.5(,i)-.4 G +3.674(w\). The)-.25 F(options)3.674 E .02(appearing in)144 420 R F2 +(SHELLOPTS)2.52 E F0 .019(are those reported as)2.27 F/F5 10 +/Times-Italic@0 SF(on)2.749 E F0(by)2.759 E F1 .019(set \255o)2.519 F F0 +5.019(.I)C 2.519(ft)-5.019 G .019(his v)-2.519 F .019 +(ariable is in the en)-.25 F(vironment)-.4 E(when)144 432 Q F1(bash) +3.141 E F0 .642(starts up, each shell option in the list will be enable\ +d before reading an)3.141 F 3.142(ys)-.15 G .642(tartup \214les.)-3.142 +F(This v)144 444 Q(ariable is read-only)-.25 E(.)-.65 E F1(SHL)108 456 Q +(VL)-.92 E F0(Incremented by one each time an instance of)144 468 Q F1 +(bash)2.5 E F0(is started.)2.5 E F1(UID)108 480 Q F0 +(Expands to the user ID of the current user)144 480 Q 2.5(,i)-.4 G (nitialized at shell startup.)-2.5 E(This v)5 E(ariable is readonly)-.25 -E(.)-.65 E .994(The follo)108 124.8 R .994(wing v)-.25 F .994 +E(.)-.65 E .994(The follo)108 496.8 R .994(wing v)-.25 F .994 (ariables are used by the shell.)-.25 F .994(In some cases,)5.994 F F1 (bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .993 -(alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 136.8 -Q -.65(w.)-.25 G F1 -.3(BA)108 153.6 S(SH_COMP).3 E -.95(AT)-.74 G F0 -1.192(The v)144 165.6 R 1.192(alue is used to set the shell')-.25 F +(alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 508.8 +Q -.65(w.)-.25 G F1 -.3(BA)108 525.6 S(SH_COMP).3 E -.95(AT)-.74 G F0 +1.192(The v)144 537.6 R 1.192(alue is used to set the shell')-.25 F 3.692(sc)-.55 G 1.193(ompatibility le)-3.692 F -.15(ve)-.25 G 3.693 (l. See).15 F 1.193(the description of the)3.693 F F1(shopt)3.693 E F0 --.2(bu)3.693 G(iltin).2 E(belo)144 177.6 Q 2.872(wu)-.25 G(nder)-2.872 E +-.2(bu)3.693 G(iltin).2 E(belo)144 549.6 Q 2.872(wu)-.25 G(nder)-2.872 E F1 .372(SHELL B)2.872 F(UIL)-.1 E .372(TIN COMMANDS)-.92 F F0 .372 (for a description of the v)2.872 F .371(arious compatibility le)-.25 F -(v-)-.25 E .36(els and their ef)144 189.6 R 2.86(fects. The)-.25 F -.25 +(v-)-.25 E .36(els and their ef)144 561.6 R 2.86(fects. The)-.25 F -.25 (va)2.86 G .361(lue may be a decimal number \(e.g., 4.2\) or an inte).25 F .361(ger \(e.g., 42\) corre-)-.15 F 1.751 -(sponding to the desired compatibility le)144 201.6 R -.15(ve)-.25 G +(sponding to the desired compatibility le)144 573.6 R -.15(ve)-.25 G 4.251(l. If).15 F F1 -.3(BA)4.251 G(SH_COMP).3 E -.95(AT)-.74 G F0 1.75 (is unset or set to the empty)5.201 F .578(string, the compatibility le) -144 213.6 R -.15(ve)-.25 G 3.078(li).15 G 3.078(ss)-3.078 G .578 +144 585.6 R -.15(ve)-.25 G 3.078(li).15 G 3.078(ss)-3.078 G .578 (et to the def)-3.078 F .578(ault for the current v)-.1 F 3.078 (ersion. If)-.15 F F1 -.3(BA)3.078 G(SH_COMP).3 E -.95(AT)-.74 G F0(is) -4.028 E .249(set to a v)144 225.6 R .249(alue that is not one of the v) +4.028 E .249(set to a v)144 597.6 R .249(alue that is not one of the v) -.25 F .248(alid compatibility le)-.25 F -.15(ve)-.25 G .248 (ls, the shell prints an error message and).15 F 1.119 -(sets the compatibility le)144 237.6 R -.15(ve)-.25 G 3.619(lt).15 G +(sets the compatibility le)144 609.6 R -.15(ve)-.25 G 3.619(lt).15 G 3.619(ot)-3.619 G 1.119(he def)-3.619 F 1.119(ault for the current v)-.1 F 3.62(ersion. The)-.15 F -.25(va)3.62 G 1.12(lid compatibility le).25 F -.15(ve)-.25 G(ls).15 E .576 -(correspond to the compatibility options accepted by the)144 249.6 R F1 +(correspond to the compatibility options accepted by the)144 621.6 R F1 (shopt)3.075 E F0 -.2(bu)3.075 G .575(iltin described belo).2 F 3.075 -(w\()-.25 G .575(for e)-3.075 F(xam-)-.15 E(ple,)144 261.6 Q F1 +(w\()-.25 G .575(for e)-3.075 F(xam-)-.15 E(ple,)144 633.6 Q F1 (compat42)2.5 E F0(means that 4.2 and 42 are v)2.5 E(alid v)-.25 E 2.5 (alues\). The)-.25 F(current v)2.5 E(ersion is also a v)-.15 E(alid v) --.25 E(alue.)-.25 E F1 -.3(BA)108 273.6 S(SH_ENV).3 E F0 .505 -(If this parameter is set when)144 285.6 R F1(bash)3.005 E F0 .505(is e) +-.25 E(alue.)-.25 E F1 -.3(BA)108 645.6 S(SH_ENV).3 E F0 .505 +(If this parameter is set when)144 657.6 R F1(bash)3.005 E F0 .505(is e) 3.005 F -.15(xe)-.15 G .506(cuting a shell script, its v).15 F .506 (alue is interpreted as a \214lename)-.25 F .355 -(containing commands to initialize the shell, as in)144 297.6 R/F2 10 -/Times-Italic@0 SF(~/.bashr)2.855 E(c)-.37 E F0 5.354(.T).31 G .354 -(he v)-5.354 F .354(alue of)-.25 F/F3 9/Times-Bold@0 SF -.27(BA)2.854 G -(SH_ENV).27 E F0 .354(is subjected)2.604 F .525(to parameter e)144 309.6 -R .525(xpansion, command substitution, and arithmetic e)-.15 F .525 -(xpansion before being interpreted)-.15 F(as a \214lename.)144 321.6 Q -F3 -.666(PA)5 G(TH)-.189 E F0 +(containing commands to initialize the shell, as in)144 669.6 R F5 +(~/.bashr)2.855 E(c)-.37 E F0 5.354(.T).31 G .354(he v)-5.354 F .354 +(alue of)-.25 F F2 -.27(BA)2.854 G(SH_ENV).27 E F0 .354(is subjected) +2.604 F .525(to parameter e)144 681.6 R .525 +(xpansion, command substitution, and arithmetic e)-.15 F .525 +(xpansion before being interpreted)-.15 F(as a \214lename.)144 693.6 Q +F2 -.666(PA)5 G(TH)-.189 E F0 (is not used to search for the resultant \214lename.)2.25 E F1 -.3(BA) -108 333.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 345.6 +108 705.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 717.6 R .481(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25 F(,)-.4 E F1(bash)2.98 E F0 .48(will write the trace output gener)2.98 F -(-)-.2 E 3.114(ated when)144 357.6 R/F4 10/Courier@0 SF 3.114(set -x) -5.614 F F0 3.114(is enabled to that \214le descriptor)5.614 F 8.114(.T) --.55 G 3.114(he \214le descriptor is closed when)-8.114 F F3 -.27(BA)144 -369.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .138(is unset or assigned a ne) -2.388 F 2.638(wv)-.25 G 2.638(alue. Unsetting)-2.888 F F3 -.27(BA)2.638 -G(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the \ -empty string causes the trace output to be sent to the standard error) -144 381.6 R 7.531(.N)-.55 G 2.531(ote that setting)-7.531 F F3 -.27(BA) -144 393.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error\ - \214le descriptor\) and then unsetting it will result in the)2.991 F -(standard error being closed.)144 405.6 Q F1(CDP)108 417.6 Q -.95(AT) --.74 G(H).95 E F0 1.247(The search path for the)144 429.6 R F1(cd)3.747 -E F0 3.747(command. This)3.747 F 1.248 -(is a colon-separated list of directories in which the)3.747 F 3.796 -(shell looks for destination directories speci\214ed by the)144 441.6 R -F1(cd)6.295 E F0 6.295(command. A)6.295 F 3.795(sample v)6.295 F 3.795 -(alue is)-.25 F F4(".:~:/usr")144 453.6 Q F0(.)A F1(CHILD_MAX)108 465.6 -Q F0 .997(Set the number of e)144 477.6 R .997(xited child status v)-.15 -F .997(alues for the shell to remember)-.25 F 5.997(.B)-.55 G .997 -(ash will not allo)-5.997 F 3.498(wt)-.25 G(his)-3.498 E -.25(va)144 -489.6 S 1.078(lue to be decreased belo).25 F 3.577(waP)-.25 G 1.077 -(OSIX-mandated minimum, and there is a maximum v)-3.577 F 1.077 -(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 501.6 Q -2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.)-.25 E -F1(COLUMNS)108 513.6 Q F0 .828(Used by the)144 525.6 R F1(select)3.328 E -F0 .829(compound command to determine the terminal width when printing \ -selection)3.328 F 4.507(lists. Automatically)144 537.6 R 2.007 -(set if the)4.507 F F1(checkwinsize)4.507 E F0 2.006 +(-)-.2 E 3.114(ated when)144 729.6 R F4 3.114(set -x)5.614 F F0 3.114 +(is enabled to that \214le descriptor)5.614 F 8.114(.T)-.55 G 3.114 +(he \214le descriptor is closed when)-8.114 F(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(14)188.455 E 0 Cg EP +%%Page: 15 15 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 9/Times-Bold@0 +SF -.27(BA)144 84 S(SH_XTRA).27 E(CEFD)-.495 E F0 .138 +(is unset or assigned a ne)2.388 F 2.638(wv)-.25 G 2.638 +(alue. Unsetting)-2.888 F F1 -.27(BA)2.638 G(SH_XTRA).27 E(CEFD)-.495 E +F0 .138(or assigning it)2.388 F 2.531(the empty string causes the trace\ + output to be sent to the standard error)144 96 R 7.531(.N)-.55 G 2.531 +(ote that setting)-7.531 F F1 -.27(BA)144 108 S(SH_XTRA).27 E(CEFD)-.495 +E F0 .74(to 2 \(the standard error \214le descriptor\) and then unsetti\ +ng it will result in the)2.991 F(standard error being closed.)144 120 Q +/F2 10/Times-Bold@0 SF(CDP)108 132 Q -.95(AT)-.74 G(H).95 E F0 1.247 +(The search path for the)144 144 R F2(cd)3.747 E F0 3.747(command. This) +3.747 F 1.248(is a colon-separated list of directories in which the) +3.747 F 3.796 +(shell looks for destination directories speci\214ed by the)144 156 R F2 +(cd)6.295 E F0 6.295(command. A)6.295 F 3.795(sample v)6.295 F 3.795 +(alue is)-.25 F/F3 10/Courier@0 SF(".:~:/usr")144 168 Q F0(.)A F2 +(CHILD_MAX)108 180 Q F0 .997(Set the number of e)144 192 R .997 +(xited child status v)-.15 F .997(alues for the shell to remember)-.25 F +5.997(.B)-.55 G .997(ash will not allo)-5.997 F 3.498(wt)-.25 G(his) +-3.498 E -.25(va)144 204 S 1.078(lue to be decreased belo).25 F 3.577 +(waP)-.25 G 1.077(OSIX-mandated minimum, and there is a maximum v)-3.577 +F 1.077(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 +216 Q 2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.) +-.25 E F2(COLUMNS)108 228 Q F0 .828(Used by the)144 240 R F2(select) +3.328 E F0 .829(compound command to determine the terminal width when p\ +rinting selection)3.328 F 4.507(lists. Automatically)144 252 R 2.007 +(set if the)4.507 F F2(checkwinsize)4.507 E F0 2.006 (option is enabled or in an interacti)4.507 F 2.306 -.15(ve s)-.25 H -2.006(hell upon).15 F(receipt of a)144 549.6 Q F3(SIGWINCH)2.5 E/F5 9 -/Times-Roman@0 SF(.)A F1(COMPREPL)108 561.6 Q(Y)-.92 E F0 .847 -(An array v)144 573.6 R .848(ariable from which)-.25 F F1(bash)3.348 E -F0 .848(reads the possible completions generated by a shell function) -3.348 F(in)144 585.6 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt) --2.785 G .285(he programmable completion f)-2.785 F .285(acility \(see) --.1 F F1(Pr)2.785 E .285(ogrammable Completion)-.18 F F0(belo)2.785 E -2.785(w\). Each)-.25 F(array element contains one possible completion.) -144 597.6 Q F1(EMA)108 609.6 Q(CS)-.55 E F0(If)144 621.6 Q F1(bash)2.535 -E F0 .035(\214nds this v)2.535 F .035(ariable in the en)-.25 F .036 -(vironment when the shell starts with v)-.4 F(alue)-.25 E F4(t)2.536 E +2.006(hell upon).15 F(receipt of a)144 264 Q F1(SIGWINCH)2.5 E/F4 9 +/Times-Roman@0 SF(.)A F2(COMPREPL)108 276 Q(Y)-.92 E F0 .847(An array v) +144 288 R .848(ariable from which)-.25 F F2(bash)3.348 E F0 .848 +(reads the possible completions generated by a shell function)3.348 F +(in)144 300 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt)-2.785 G +.285(he programmable completion f)-2.785 F .285(acility \(see)-.1 F F2 +(Pr)2.785 E .285(ogrammable Completion)-.18 F F0(belo)2.785 E 2.785 +(w\). Each)-.25 F(array element contains one possible completion.)144 +312 Q F2(EMA)108 324 Q(CS)-.55 E F0(If)144 336 Q F2(bash)2.535 E F0 .035 +(\214nds this v)2.535 F .035(ariable in the en)-.25 F .036 +(vironment when the shell starts with v)-.4 F(alue)-.25 E F3(t)2.536 E F0 2.536(,i)C 2.536(ta)-2.536 G .036(ssumes that the)-2.536 F -(shell is running in an Emacs shell b)144 633.6 Q(uf)-.2 E -(fer and disables line editing.)-.25 E F1(ENV)108 645.6 Q F0(Similar to) -144 645.6 Q F3 -.27(BA)2.5 G(SH_ENV).27 E F5(;)A F0 +(shell is running in an Emacs shell b)144 348 Q(uf)-.2 E +(fer and disables line editing.)-.25 E F2(ENV)108 360 Q F0(Similar to) +144 360 Q F1 -.27(BA)2.5 G(SH_ENV).27 E F4(;)A F0 (used when the shell is in)2.25 E -.2(vo)-.4 G -.1(ke).2 G 2.5(di).1 G -2.5(nP)-2.5 G(OSIX mode.)-2.5 E F1(EXECIGNORE)108 657.6 Q F0 2.717(Ac) -144 669.6 S .217(olon-separated list of shell patterns \(see)-2.717 F F1 --.1(Pa)2.717 G(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C -.216(e\214ning the list of \214lenames to be)-2.717 F .116 -(ignored by command search using)144 681.6 R F1 -.74(PA)2.616 G(TH)-.21 -E F0 5.116(.F)C .117 +(n)-2.5 E/F5 10/Times-Italic@0 SF(posix mode)2.5 E F0(.)A F2(EXECIGNORE) +108 372 Q F0 2.717(Ac)144 384 S .217 +(olon-separated list of shell patterns \(see)-2.717 F F2 -.1(Pa)2.717 G +(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C .216 +(e\214ning the list of \214lenames to be)-2.717 F .116 +(ignored by command search using)144 396 R F2 -.74(PA)2.616 G(TH)-.21 E +F0 5.116(.F)C .117 (iles whose full pathnames match one of these patterns)-5.116 F 1.433 -(are not considered e)144 693.6 R -.15(xe)-.15 G 1.432 +(are not considered e)144 408 R -.15(xe)-.15 G 1.432 (cutable \214les for the purposes of completion and command e).15 F -.15 -(xe)-.15 G 1.432(cution via).15 F F1 -.74(PA)144 705.6 S(TH)-.21 E F0 +(xe)-.15 G 1.432(cution via).15 F F2 -.74(PA)144 420 S(TH)-.21 E F0 2.908(lookup. This)2.908 F .408(does not af)2.908 F .408(fect the beha) --.25 F .408(vior of the)-.2 F F1([)2.908 E F0(,)A F1(test)2.908 E F0 -2.908(,a)C(nd)-2.908 E F1([[)2.908 E F0 2.909(commands. Full)2.908 F +-.25 F .408(vior of the)-.2 F F2([)2.908 E F0(,)A F2(test)2.908 E F0 +2.908(,a)C(nd)-2.908 E F2([[)2.908 E F0 2.909(commands. Full)2.908 F (pathnames)2.909 E .364(in the command hash table are not subject to)144 -717.6 R F1(EXECIGNORE)2.864 E F0 5.364(.U)C .364(se this v)-5.364 F .364 -(ariable to ignore shared)-.25 F 1.37(library \214les that ha)144 729.6 -R 1.67 -.15(ve t)-.2 H 1.37(he e).15 F -.15(xe)-.15 G 1.37 +432 R F2(EXECIGNORE)2.864 E F0 5.364(.U)C .364(se this v)-5.364 F .364 +(ariable to ignore shared)-.25 F 1.37(library \214les that ha)144 444 R +1.67 -.15(ve t)-.2 H 1.37(he e).15 F -.15(xe)-.15 G 1.37 (cutable bit set, b).15 F 1.37(ut are not e)-.2 F -.15(xe)-.15 G 1.37 -(cutable \214les.).15 F 1.37(The pattern matching)6.37 F(GNU Bash 4.4)72 -768 Q(2016 August 26)142.895 E(14)192.055 E 0 Cg EP -%%Page: 15 15 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(honors the setting of the)144 84 Q/F1 10/Times-Bold@0 SF(extglob)2.5 E -F0(shell option.)2.5 E F1(FCEDIT)108 96 Q F0(The def)144 108 Q -(ault editor for the)-.1 E F1(fc)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 -E F1(FIGNORE)108 120 Q F0 2.599(Ac)144 132 S .098 -(olon-separated list of suf)-2.599 F<8c78>-.25 E .098 -(es to ignore when performing \214lename completion \(see)-.15 F/F2 9 -/Times-Bold@0 SF(READLINE)2.598 E F0(belo)144 144 Q 2.704(w\). A)-.25 F -.204(\214lename whose suf)2.704 F .205 -(\214x matches one of the entries in)-.25 F F2(FIGNORE)2.705 E F0 .205 -(is e)2.455 F .205(xcluded from the list)-.15 F(of matched \214lenames.) -144 156 Q 2.5(As)5 G(ample v)-2.5 E(alue is)-.25 E/F3 10/Courier@0 SF -(".o:~")2.5 E F0(.)A F1(FUNCNEST)108 168 Q F0 .231 -(If set to a numeric v)144 180 R .231 +(cutable \214les.).15 F 1.37(The pattern matching)6.37 F +(honors the setting of the)144 456 Q F2(extglob)2.5 E F0(shell option.) +2.5 E F2(FCEDIT)108 468 Q F0(The def)144 480 Q(ault editor for the)-.1 E +F2(fc)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E F2(FIGNORE)108 492 Q F0 +2.599(Ac)144 504 S .098(olon-separated list of suf)-2.599 F<8c78>-.25 E +.098(es to ignore when performing \214lename completion \(see)-.15 F F1 +(READLINE)2.598 E F0(belo)144 516 Q 2.704(w\). A)-.25 F .204 +(\214lename whose suf)2.704 F .205(\214x matches one of the entries in) +-.25 F F1(FIGNORE)2.705 E F0 .205(is e)2.455 F .205 +(xcluded from the list)-.15 F(of matched \214lenames.)144 528 Q 2.5(As)5 +G(ample v)-2.5 E(alue is)-.25 E F3(".o:~")2.5 E F0(.)A F2(FUNCNEST)108 +540 Q F0 .231(If set to a numeric v)144 552 R .231 (alue greater than 0, de\214nes a maximum function nesting le)-.25 F -.15(ve)-.25 G 2.73(l. Function).15 F(in)2.73 E -.2(vo)-.4 G(-).2 E -(cations that e)144 192 Q(xceed this nesting le)-.15 E -.15(ve)-.25 G -2.5(lw).15 G(ill cause the current command to abort.)-2.5 E F1 -(GLOBIGNORE)108 204 Q F0 3.118(Ac)144 216 S .618(olon-separated list of\ - patterns de\214ning the set of \214lenames to be ignored by pathname e) --3.118 F(xpan-)-.15 E 3.132(sion. If)144 228 R 3.132<618c>3.132 G .632 -(lename matched by a pathname e)-3.132 F .632 -(xpansion pattern also matches one of the patterns in)-.15 F F2 -(GLOBIGNORE)144 240 Q/F4 9/Times-Roman@0 SF(,)A F0(it is remo)2.25 E --.15(ve)-.15 G 2.5(df).15 G(rom the list of matches.)-2.5 E F1 -(HISTCONTR)108 252 Q(OL)-.3 E F0 2.653(Ac)144 264 S .153 -(olon-separated list of v)-2.653 F .153(alues controlling ho)-.25 F -2.653(wc)-.25 G .153(ommands are sa)-2.653 F -.15(ve)-.2 G 2.653(do).15 -G 2.653(nt)-2.653 G .153(he history list.)-2.653 F .154(If the list) -5.153 F .491(of v)144 276 R .491(alues includes)-.25 F/F5 10 -/Times-Italic@0 SF(ignor)2.991 E(espace)-.37 E F0 2.991(,l).18 G .491 -(ines which be)-2.991 F .491(gin with a)-.15 F F1(space)2.991 E F0 .49 -(character are not sa)2.991 F -.15(ve)-.2 G 2.99(di).15 G 2.99(nt)-2.99 -G .49(he his-)-2.99 F .557(tory list.)144 288 R 3.057(Av)5.557 G .557 -(alue of)-3.307 F F5(ignor)3.067 E(edups)-.37 E F0 .557 +(cations that e)144 564 Q(xceed this nesting le)-.15 E -.15(ve)-.25 G +2.5(lw).15 G(ill cause the current command to abort.)-2.5 E F2 +(GLOBIGNORE)108 576 Q F0 2.923(Ac)144 588 S .423(olon-separated list of\ + patterns de\214ning the set of \214le names to be ignored by pathname \ +e)-2.923 F(xpan-)-.15 E 2.948(sion. If)144 600 R 2.948<618c>2.948 G .448 +(le name matched by a pathname e)-2.948 F .447 +(xpansion pattern also matches one of the patterns in)-.15 F F1 +(GLOBIGNORE)144 612 Q F4(,)A F0(it is remo)2.25 E -.15(ve)-.15 G 2.5(df) +.15 G(rom the list of matches.)-2.5 E F2(HISTCONTR)108 624 Q(OL)-.3 E F0 +2.653(Ac)144 636 S .153(olon-separated list of v)-2.653 F .153 +(alues controlling ho)-.25 F 2.653(wc)-.25 G .153(ommands are sa)-2.653 +F -.15(ve)-.2 G 2.653(do).15 G 2.653(nt)-2.653 G .153(he history list.) +-2.653 F .154(If the list)5.153 F .491(of v)144 648 R .491 +(alues includes)-.25 F F5(ignor)2.991 E(espace)-.37 E F0 2.991(,l).18 G +.491(ines which be)-2.991 F .491(gin with a)-.15 F F2(space)2.991 E F0 +.49(character are not sa)2.991 F -.15(ve)-.2 G 2.99(di).15 G 2.99(nt) +-2.99 G .49(he his-)-2.99 F .557(tory list.)144 660 R 3.057(Av)5.557 G +.557(alue of)-3.307 F F5(ignor)3.067 E(edups)-.37 E F0 .557 (causes lines matching the pre)3.327 F .558 -(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.959 -(Av)144 300 S .459(alue of)-3.209 F F5(ignor)2.969 E(eboth)-.37 E F0 -.459(is shorthand for)3.239 F F5(ignor)2.959 E(espace)-.37 E F0(and) -2.959 E F5(ignor)2.958 E(edups)-.37 E F0 5.458(.A)C -.25(va)-2.5 G .458 -(lue of).25 F F5(er)2.958 E(asedups)-.15 E F0(causes)2.958 E .698 -(all pre)144 312 R .698 +(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.926 +(Av)144 672 S .426(alue of)-3.176 F F5(ignor)2.936 E(eboth)-.37 E F0 +.426(is shorthand for)3.206 F F5(ignor)2.926 E(espace)-.37 E F0(and) +2.926 E F5(ignor)2.926 E(edups)-.37 E F0 5.426(.A)C -.25(va)-2.501 G +.425(lue of).25 F F5(er)3.115 E(asedups)-.15 E F0(causes)3.195 E .698 +(all pre)144 684 R .698 (vious lines matching the current line to be remo)-.25 F -.15(ve)-.15 G 3.198(df).15 G .699(rom the history list before that line is)-3.198 F -(sa)144 324 Q -.15(ve)-.2 G 2.764(d. An).15 F 2.764(yv)-.15 G .264 +(sa)144 696 Q -.15(ve)-.2 G 2.764(d. An).15 F 2.764(yv)-.15 G .264 (alue not in the abo)-3.014 F .563 -.15(ve l)-.15 H .263 -(ist is ignored.).15 F(If)5.263 E F2(HISTCONTR)2.763 E(OL)-.27 E F0 .263 -(is unset, or does not include)2.513 F 2.941(av)144 336 S .441(alid v) +(ist is ignored.).15 F(If)5.263 E F1(HISTCONTR)2.763 E(OL)-.27 E F0 .263 +(is unset, or does not include)2.513 F 2.941(av)144 708 S .441(alid v) -3.191 F .441(alue, all lines read by the shell parser are sa)-.25 F -.15(ve)-.2 G 2.942(do).15 G 2.942(nt)-2.942 G .442 -(he history list, subject to the v)-2.942 F .442(alue of)-.25 F F2 -(HISTIGNORE)144 348 Q F4(.)A F0 1.981(The second and subsequent lines o\ -f a multi-line compound command are not)6.482 F -(tested, and are added to the history re)144 360 Q -.05(ga)-.15 G -(rdless of the v).05 E(alue of)-.25 E F2(HISTCONTR)2.5 E(OL)-.27 E F4(.) -A F1(HISTFILE)108 372 Q F0 .181 -(The name of the \214le in which command history is sa)144 384 R -.15 -(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F2(HIST)2.681 E(OR)-.162 E(Y) --.315 E F0(belo)2.431 E 2.682(w\). The)-.25 F(def)2.682 E .182(ault v) --.1 F(alue)-.25 E(is)144 396 Q F5(~/.bash_history)2.5 E F0 5(.I)C 2.5 -(fu)-5 G(nset, the command history is not sa)-2.5 E -.15(ve)-.2 G 2.5 -(dw).15 G(hen a shell e)-2.5 E(xits.)-.15 E F1(HISTFILESIZE)108 408 Q F0 -1.623(The maximum number of lines contained in the history \214le.)144 -420 R 1.622(When this v)6.623 F 1.622(ariable is assigned a)-.25 F -.25 -(va)144 432 S .931(lue, the history \214le is truncated, if necessary) -.25 F 3.432(,t)-.65 G 3.432(oc)-3.432 G .932 -(ontain no more than that number of lines by)-3.432 F(remo)144 444 Q +(he history list, subject to the v)-2.942 F .442(alue of)-.25 F F1 +(HISTIGNORE)144 720 Q F4(.)A F0 1.981(The second and subsequent lines o\ +f a multi-line compound command are not)6.482 F(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(15)188.455 E 0 Cg EP +%%Page: 16 16 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(tested, and are added to the history re)144 84 Q -.05(ga)-.15 G +(rdless of the v).05 E(alue of)-.25 E/F1 9/Times-Bold@0 SF(HISTCONTR)2.5 +E(OL)-.27 E/F2 9/Times-Roman@0 SF(.)A/F3 10/Times-Bold@0 SF(HISTFILE)108 +96 Q F0 .181(The name of the \214le in which command history is sa)144 +108 R -.15(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F1(HIST)2.681 E(OR) +-.162 E(Y)-.315 E F0(belo)2.431 E 2.682(w\). The)-.25 F(def)2.682 E .182 +(ault v)-.1 F(alue)-.25 E(is)144 120 Q/F4 10/Times-Italic@0 SF +(~/.bash_history)2.5 E F0 5(.I)C 2.5(fu)-5 G +(nset, the command history is not sa)-2.5 E -.15(ve)-.2 G 2.5(dw).15 G +(hen a shell e)-2.5 E(xits.)-.15 E F3(HISTFILESIZE)108 132 Q F0 1.623 +(The maximum number of lines contained in the history \214le.)144 144 R +1.622(When this v)6.623 F 1.622(ariable is assigned a)-.25 F -.25(va)144 +156 S .931(lue, the history \214le is truncated, if necessary).25 F +3.432(,t)-.65 G 3.432(oc)-3.432 G .932 +(ontain no more than that number of lines by)-3.432 F(remo)144 168 Q .871(ving the oldest entries.)-.15 F .87(The history \214le is also tru\ ncated to this size after writing it when a)5.871 F 1.244(shell e)144 -456 R 3.744(xits. If)-.15 F 1.244(the v)3.744 F 1.244 +180 R 3.744(xits. If)-.15 F 1.244(the v)3.744 F 1.244 (alue is 0, the history \214le is truncated to zero size.)-.25 F 1.245 -(Non-numeric v)6.244 F 1.245(alues and)-.25 F 1.022(numeric v)144 468 R +(Non-numeric v)6.244 F 1.245(alues and)-.25 F 1.022(numeric v)144 192 R 1.022(alues less than zero inhibit truncation.)-.25 F 1.022 (The shell sets the def)6.022 F 1.022(ault v)-.1 F 1.022(alue to the v) --.25 F 1.021(alue of)-.25 F F1(HISTSIZE)144 480 Q F0(after reading an) -2.5 E 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1(HISTIGNORE)108 492 Q F0 -2.657(Ac)144 504 S .157(olon-separated list of patterns used to decide \ +-.25 F 1.021(alue of)-.25 F F3(HISTSIZE)144 204 Q F0(after reading an) +2.5 E 2.5(ys)-.15 G(tartup \214les.)-2.5 E F3(HISTIGNORE)108 216 Q F0 +2.657(Ac)144 228 S .157(olon-separated list of patterns used to decide \ which command lines should be sa)-2.657 F -.15(ve)-.2 G 2.658(do).15 G -2.658(nt)-2.658 G .158(he his-)-2.658 F .708(tory list.)144 516 R .708 +2.658(nt)-2.658 G .158(he his-)-2.658 F .708(tory list.)144 240 R .708 (Each pattern is anchored at the be)5.708 F .707 (ginning of the line and must match the complete line)-.15 F .625 -(\(no implicit `)144 528 R F1(*)A F0 3.125('i)C 3.125(sa)-3.125 G 3.125 +(\(no implicit `)144 252 R F3(*)A F0 3.125('i)C 3.125(sa)-3.125 G 3.125 (ppended\). Each)-3.125 F .626(pattern is tested ag)3.125 F .626 -(ainst the line after the checks speci\214ed by)-.05 F F2(HISTCONTR)144 -540 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793 +(ainst the line after the checks speci\214ed by)-.05 F F1(HISTCONTR)144 +264 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793 (In addition to the normal shell pattern matching characters, `)6.793 F -F1(&)A F0(')A 2.514(matches the pre)144 552 R 2.514(vious history line.) --.25 F(`)7.514 E F1(&)A F0 5.014('m)C 2.514 -(ay be escaped using a backslash; the backslash is)-5.014 F(remo)144 564 +F3(&)A F0(')A 2.514(matches the pre)144 276 R 2.514(vious history line.) +-.25 F(`)7.514 E F3(&)A F0 5.014('m)C 2.514 +(ay be escaped using a backslash; the backslash is)-5.014 F(remo)144 288 Q -.15(ve)-.15 G 3.353(db).15 G .853(efore attempting a match.)-3.353 F .852(The second and subsequent lines of a multi-line compound)5.852 F -1.269(command are not tested, and are added to the history re)144 576 R --.05(ga)-.15 G 1.269(rdless of the v).05 F 1.269(alue of)-.25 F F2 -(HISTIGNORE)3.77 E F4(.)A F0 -(The pattern matching honors the setting of the)144 588 Q F1(extglob)2.5 -E F0(shell option.)2.5 E F1(HISTSIZE)108 600 Q F0 1.387 -(The number of commands to remember in the command history \(see)144 612 -R F2(HIST)3.887 E(OR)-.162 E(Y)-.315 E F0(belo)3.637 E 3.887(w\). If) --.25 F(the)3.887 E -.25(va)144 624 S 1.32(lue is 0, commands are not sa) +1.269(command are not tested, and are added to the history re)144 300 R +-.05(ga)-.15 G 1.269(rdless of the v).05 F 1.269(alue of)-.25 F F1 +(HISTIGNORE)3.77 E F2(.)A F0 +(The pattern matching honors the setting of the)144 312 Q F3(extglob)2.5 +E F0(shell option.)2.5 E F3(HISTSIZE)108 324 Q F0 1.387 +(The number of commands to remember in the command history \(see)144 336 +R F1(HIST)3.887 E(OR)-.162 E(Y)-.315 E F0(belo)3.637 E 3.887(w\). If) +-.25 F(the)3.887 E -.25(va)144 348 S 1.32(lue is 0, commands are not sa) .25 F -.15(ve)-.2 G 3.82(di).15 G 3.821(nt)-3.82 G 1.321 (he history list.)-3.821 F 1.321(Numeric v)6.321 F 1.321 -(alues less than zero result in)-.25 F -2.15 -.25(ev e)144 636 T .437 +(alues less than zero result in)-.25 F -2.15 -.25(ev e)144 360 T .437 (ry command being sa).25 F -.15(ve)-.2 G 2.937(do).15 G 2.937(nt)-2.937 G .437(he history list \(there is no limit\).)-2.937 F .436 (The shell sets the def)5.436 F .436(ault v)-.1 F(alue)-.25 E -(to 500 after reading an)144 648 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E -F1(HISTTIMEFORMA)108 660 Q(T)-.95 E F0 .951(If this v)144 672 R .951 +(to 500 after reading an)144 372 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E +F3(HISTTIMEFORMA)108 384 Q(T)-.95 E F0 .951(If this v)144 396 R .951 (ariable is set and not null, its v)-.25 F .952 -(alue is used as a format string for)-.25 F F5(strftime)3.452 E F0 .952 +(alue is used as a format string for)-.25 F F4(strftime)3.452 E F0 .952 (\(3\) to print the)B .673 -(time stamp associated with each history entry displayed by the)144 684 -R F1(history)3.173 E F0 -.2(bu)3.172 G 3.172(iltin. If).2 F .672(this v) +(time stamp associated with each history entry displayed by the)144 408 +R F3(history)3.173 E F0 -.2(bu)3.172 G 3.172(iltin. If).2 F .672(this v) 3.172 F .672(ariable is)-.25 F .144 -(set, time stamps are written to the history \214le so the)144 696 R +(set, time stamps are written to the history \214le so the)144 420 R 2.644(ym)-.15 G .144(ay be preserv)-2.644 F .144 (ed across shell sessions.)-.15 F(This)5.145 E(uses the history comment\ - character to distinguish timestamps from other history lines.)144 708 Q -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(15)192.055 E 0 Cg EP -%%Page: 16 16 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(HOME)108 84 Q F0 1.27 -(The home directory of the current user; the def)144 96 R 1.27(ault ar) --.1 F 1.27(gument for the)-.18 F F1(cd)3.77 E F0 -.2(bu)3.77 G 1.27 -(iltin command.).2 F(The)6.27 E -.25(va)144 108 S(lue of this v).25 E -(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F1 -(HOSTFILE)108 120 Q F0 1.015 -(Contains the name of a \214le in the same format as)144 132 R/F2 10 -/Times-Italic@0 SF(/etc/hosts)5.181 E F0 1.015 -(that should be read when the shell)5.181 F .551 -(needs to complete a hostname.)144 144 R .551 + character to distinguish timestamps from other history lines.)144 432 Q +F3(HOME)108 444 Q F0 1.27 +(The home directory of the current user; the def)144 456 R 1.27(ault ar) +-.1 F 1.27(gument for the)-.18 F F3(cd)3.77 E F0 -.2(bu)3.77 G 1.27 +(iltin command.).2 F(The)6.27 E -.25(va)144 468 S(lue of this v).25 E +(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F3 +(HOSTFILE)108 480 Q F0 1.015 +(Contains the name of a \214le in the same format as)144 492 R F4 +(/etc/hosts)5.181 E F0 1.015(that should be read when the shell)5.181 F +.551(needs to complete a hostname.)144 504 R .551 (The list of possible hostname completions may be changed while)5.551 F -1.058(the shell is running; the ne)144 156 R 1.059 +1.058(the shell is running; the ne)144 516 R 1.059 (xt time hostname completion is attempted after the v)-.15 F 1.059 -(alue is changed,)-.25 F F1(bash)144 168 Q F0 .138 +(alue is changed,)-.25 F F3(bash)144 528 Q F0 .138 (adds the contents of the ne)2.639 F 2.638<778c>-.25 G .138(le to the e) --2.638 F .138(xisting list.)-.15 F(If)5.138 E/F3 9/Times-Bold@0 SF -(HOSTFILE)2.638 E F0 .138(is set, b)2.388 F .138(ut has no v)-.2 F .138 -(alue, or)-.25 F .517(does not name a readable \214le,)144 180 R F1 -(bash)3.017 E F0 .517(attempts to read)3.017 F F2(/etc/hosts)4.684 E F0 -.518(to obtain the list of possible host-)4.684 F(name completions.)144 -192 Q(When)5 E F3(HOSTFILE)2.5 E F0 -(is unset, the hostname list is cleared.)2.25 E F1(IFS)108 204 Q F0(The) -144 204 Q F2 .556(Internal F)3.636 F .556(ield Separ)-.45 F(ator)-.15 E -F0 .556(that is used for w)3.786 F .556(ord splitting after e)-.1 F .555 -(xpansion and to split lines into)-.15 F -.1(wo)144 216 S(rds with the) -.1 E F1 -.18(re)2.5 G(ad).18 E F0 -.2(bu)2.5 G(iltin command.).2 E -(The def)5 E(ault v)-.1 E(alue is `)-.25 E(`')-.25 E('.)-.74 E F1(IGNOREEOF)108 228 Q F0 .503 -(Controls the action of an interacti)144 240 R .803 -.15(ve s)-.25 H -.503(hell on receipt of an).15 F F3(EOF)3.003 E F0 .503 +-2.638 F .138(xisting list.)-.15 F(If)5.138 E F1(HOSTFILE)2.638 E F0 +.138(is set, b)2.388 F .138(ut has no v)-.2 F .138(alue, or)-.25 F .517 +(does not name a readable \214le,)144 540 R F3(bash)3.017 E F0 .517 +(attempts to read)3.017 F F4(/etc/hosts)4.684 E F0 .518 +(to obtain the list of possible host-)4.684 F(name completions.)144 552 +Q(When)5 E F1(HOSTFILE)2.5 E F0(is unset, the hostname list is cleared.) +2.25 E F3(IFS)108 564 Q F0(The)144 564 Q F4 .556(Internal F)3.636 F .556 +(ield Separ)-.45 F(ator)-.15 E F0 .556(that is used for w)3.786 F .556 +(ord splitting after e)-.1 F .555(xpansion and to split lines into)-.15 +F -.1(wo)144 576 S(rds with the).1 E F3 -.18(re)2.5 G(ad).18 E F0 -.2 +(bu)2.5 G(iltin command.).2 E(The def)5 E(ault v)-.1 E(alue is `)-.25 E +(`')-.25 E('.)-.74 E F3(IGNOREEOF)108 588 Q +F0 .503(Controls the action of an interacti)144 600 R .803 -.15(ve s) +-.25 H .503(hell on receipt of an).15 F F1(EOF)3.003 E F0 .503 (character as the sole input.)2.753 F .504(If set,)5.504 F .426(the v) -144 252 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F3 +144 612 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F1 (EOF)3.076 E F0 .426 (characters which must be typed as the \214rst characters)2.676 F .302 -(on an input line before)144 264 R F1(bash)2.802 E F0 -.15(ex)2.802 G +(on an input line before)144 624 R F3(bash)2.802 E F0 -.15(ex)2.802 G 2.802(its. If).15 F .302(the v)2.802 F .302(ariable e)-.25 F .302 (xists b)-.15 F .302(ut does not ha)-.2 F .602 -.15(ve a n)-.2 H .302 -(umeric v).15 F .303(alue, or has)-.25 F(no v)144 276 Q(alue, the def) +(umeric v).15 F .303(alue, or has)-.25 F(no v)144 636 Q(alue, the def) -.25 E(ault v)-.1 E(alue is 10.)-.25 E(If it does not e)5 E(xist,)-.15 E -F3(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F1 -(INPUTRC)108 288 Q F0 1.436(The \214lename for the)144 300 R F1 -.18(re) +F1(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F3 +(INPUTRC)108 648 Q F0 1.436(The \214lename for the)144 660 R F3 -.18(re) 3.936 G(adline).18 E F0 1.436(startup \214le, o)3.936 F -.15(ve)-.15 G -1.436(rriding the def).15 F 1.436(ault of)-.1 F F2(~/.inputr)5.602 E(c) --.37 E F0(\(see)5.601 E F3(READLINE)3.935 E F0(belo)144 312 Q(w\).)-.25 -E F1(LANG)108 324 Q F0 1.239(Used to determine the locale cate)144 324 R -1.239(gory for an)-.15 F 3.739(yc)-.15 G(ate)-3.739 E 1.24 +1.436(rriding the def).15 F 1.436(ault of)-.1 F F4(~/.inputr)5.602 E(c) +-.37 E F0(\(see)5.601 E F1(READLINE)3.935 E F0(belo)144 672 Q(w\).)-.25 +E F3(INSIDE_EMA)108 684 Q(CS)-.55 E F0 .886(If this v)144 696 R .886 +(ariable appears in the en)-.25 F .886(vironment when the shell starts,) +-.4 F F3(bash)3.386 E F0 .887(assumes that it is running)3.386 F +(inside an Emacs shell b)144 708 Q(uf)-.2 E +(fer and may disable line editing, depending on the v)-.25 E(alue of) +-.25 E F3(TERM)2.5 E F0(.)A(GNU Bash 5.0)72 768 Q(2018 December 7) +139.295 E(16)188.455 E 0 Cg EP +%%Page: 17 17 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(LANG)108 84 Q F0 1.24(Used to determine the locale cate)144 84 R +1.239(gory for an)-.15 F 3.739(yc)-.15 G(ate)-3.739 E 1.239 (gory not speci\214cally selected with a v)-.15 F(ariable)-.25 E -(starting with)144 336 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 348 Q F0 .974 -(This v)144 360 R .974(ariable o)-.25 F -.15(ve)-.15 G .974 -(rrides the v).15 F .973(alue of)-.25 F F3(LANG)3.473 E F0 .973(and an) -3.223 F 3.473(yo)-.15 G(ther)-3.473 E F1(LC_)3.473 E F0 -.25(va)3.473 G -.973(riable specifying a locale cate-).25 F(gory)144 372 Q(.)-.65 E F1 -(LC_COLLA)108 384 Q(TE)-.95 E F0 .411(This v)144 396 R .412(ariable det\ -ermines the collation order used when sorting the results of pathname e) --.25 F(xpansion,)-.15 E 1.465(and determines the beha)144 408 R 1.465 -(vior of range e)-.2 F 1.464(xpressions, equi)-.15 F -.25(va)-.25 G -1.464(lence classes, and collating sequences).25 F(within pathname e)144 -420 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 432 Q F0 -1.935(This v)144 444 R 1.936 +(starting with)144 96 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 108 Q F0 .973 +(This v)144 120 R .973(ariable o)-.25 F -.15(ve)-.15 G .973 +(rrides the v).15 F .973(alue of)-.25 F/F2 9/Times-Bold@0 SF(LANG)3.473 +E F0 .973(and an)3.223 F 3.473(yo)-.15 G(ther)-3.473 E F1(LC_)3.473 E F0 +-.25(va)3.473 G .974(riable specifying a locale cate-).25 F(gory)144 132 +Q(.)-.65 E F1(LC_COLLA)108 144 Q(TE)-.95 E F0 .412(This v)144 156 R .412 +(ariable determines the collation order used when sorting the results o\ +f pathname e)-.25 F(xpansion,)-.15 E 1.464(and determines the beha)144 +168 R 1.464(vior of range e)-.2 F 1.465(xpressions, equi)-.15 F -.25(va) +-.25 G 1.465(lence classes, and collating sequences).25 F +(within pathname e)144 180 Q(xpansion and pattern matching.)-.15 E F1 +(LC_CTYPE)108 192 Q F0 1.936(This v)144 204 R 1.936 (ariable determines the interpretation of characters and the beha)-.25 F -1.936(vior of character classes)-.2 F(within pathname e)144 456 Q -(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 468 Q(GES)-.55 E -F0(This v)144 480 Q(ariable determines the locale used to translate dou\ +1.935(vior of character classes)-.2 F(within pathname e)144 216 Q +(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 228 Q(GES)-.55 E +F0(This v)144 240 Q(ariable determines the locale used to translate dou\ ble-quoted strings preceded by a)-.25 E F1($)2.5 E F0(.)A F1(LC_NUMERIC) -108 492 Q F0(This v)144 504 Q(ariable determines the locale cate)-.25 E -(gory used for number formatting.)-.15 E F1(LC_TIME)108 516 Q F0(This v) -144 528 Q(ariable determines the locale cate)-.25 E -(gory used for data and time formatting.)-.15 E F1(LINES)108 540 Q F0 -.055(Used by the)144 540 R F1(select)2.555 E F0 .054(compound command t\ -o determine the column length for printing selection lists.)2.555 F .264 -(Automatically set if the)144 552 R F1(checkwinsize)2.764 E F0 .264 -(option is enabled or in an interacti)2.764 F .565 -.15(ve s)-.25 H .265 -(hell upon receipt of a).15 F F3(SIGWINCH)144 564 Q/F4 9/Times-Roman@0 -SF(.)A F1(MAIL)108 576 Q F0 1.201 -(If this parameter is set to a \214le or directory name and the)144 576 -R F3(MAILP)3.701 E -.855(AT)-.666 G(H).855 E F0 -.25(va)3.451 G 1.201 -(riable is not set,).25 F F1(bash)3.701 E F0 -(informs the user of the arri)144 588 Q -.25(va)-.25 G 2.5(lo).25 G 2.5 +108 252 Q F0(This v)144 264 Q(ariable determines the locale cate)-.25 E +(gory used for number formatting.)-.15 E F1(LC_TIME)108 276 Q F0(This v) +144 288 Q(ariable determines the locale cate)-.25 E +(gory used for data and time formatting.)-.15 E F1(LINES)108 300 Q F0 +.054(Used by the)144 300 R F1(select)2.554 E F0 .054(compound command t\ +o determine the column length for printing selection lists.)2.554 F .265 +(Automatically set if the)144 312 R F1(checkwinsize)2.765 E F0 .264 +(option is enabled or in an interacti)2.765 F .564 -.15(ve s)-.25 H .264 +(hell upon receipt of a).15 F F2(SIGWINCH)144 324 Q/F3 9/Times-Roman@0 +SF(.)A F1(MAIL)108 336 Q F0 1.201 +(If this parameter is set to a \214le or directory name and the)144 336 +R F2(MAILP)3.701 E -.855(AT)-.666 G(H).855 E F0 -.25(va)3.451 G 1.202 +(riable is not set,).25 F F1(bash)3.702 E F0 +(informs the user of the arri)144 348 Q -.25(va)-.25 G 2.5(lo).25 G 2.5 (fm)-2.5 G(ail in the speci\214ed \214le or Maildir)-2.5 E -(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 600 Q F0 .098 -(Speci\214es ho)144 612 R 2.598(wo)-.25 G .098(ften \(in seconds\)) --2.598 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def) -5.098 F .098(ault is 60 seconds.)-.1 F .099(When it is time)5.099 F .224 +(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 360 Q F0 .099 +(Speci\214es ho)144 372 R 2.599(wo)-.25 G .099(ften \(in seconds\)) +-2.599 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def) +5.098 F .098(ault is 60 seconds.)-.1 F .098(When it is time)5.098 F .223 (to check for mail, the shell does so before displaying the primary pro\ -mpt.)144 624 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F -(or set to a v)144 636 Q(alue that is not a number greater than or equa\ -l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 648 Q --.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 660 S .49 +mpt.)144 384 R .224(If this v)5.224 F .224(ariable is unset,)-.25 F +(or set to a v)144 396 Q(alue that is not a number greater than or equa\ +l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 408 Q +-.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 420 S .49 (olon-separated list of \214lenames to be check)-2.99 F .49 (ed for mail.)-.1 F .49(The message to be printed when mail)5.49 F(arri) -144 672 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \ +144 432 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \ \214le may be speci\214ed by separating the \214lename from the message\ - with a `?'.)-2.62 F(When used in the te)144 684 Q(xt of the message,) + with a `?'.)-2.62 F(When used in the te)144 444 Q(xt of the message,) -.15 E F1($_)2.5 E F0 -.15(ex)2.5 G (pands to the name of the current mail\214le.).15 E(Example:)5 E F1 -(MAILP)144 696 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y) +(MAILP)144 456 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y) -.25 E(ou ha)-1.1 E .3 -.15(ve m)-.2 H -(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 708 Q F0 .015 +(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 468 Q F0 .015 (can be con\214gured to supply a def)2.515 F .015(ault v)-.1 F .015 (alue for this v)-.25 F .015(ariable \(there is no v)-.25 F .015 (alue by def)-.25 F .015(ault\), b)-.1 F(ut)-.2 E(the location of the u\ -ser mail \214les that it uses is system dependent \(e.g., /v)144 720 Q -(ar/mail/)-.25 E F1($USER)A F0(\).)A(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(16)192.055 E 0 Cg EP -%%Page: 17 17 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(OPTERR)108 84 Q F0 .39(If set to the v)144 96 R .39(alue 1,)-.25 F F1 -(bash)2.89 E F0 .389(displays error messages generated by the)2.889 F F1 -(getopts)2.889 E F0 -.2(bu)2.889 G .389(iltin command \(see).2 F/F2 9 -/Times-Bold@0 SF .359(SHELL B)144 108 R(UIL)-.09 E .359(TIN COMMANDS) --.828 F F0(belo)2.609 E(w\).)-.25 E F2(OPTERR)5.359 E F0 .36 -(is initialized to 1 each time the shell is in)2.609 F -.2(vo)-.4 G -.1 -(ke).2 G(d).1 E(or a shell script is e)144 120 Q -.15(xe)-.15 G(cuted.) -.15 E F1 -.74(PA)108 132 S(TH)-.21 E F0 .588 -(The search path for commands.)144 132 R .587 +ser mail \214les that it uses is system dependent \(e.g., /v)144 480 Q +(ar/mail/)-.25 E F1($USER)A F0(\).)A F1(OPTERR)108 492 Q F0 .389 +(If set to the v)144 504 R .389(alue 1,)-.25 F F1(bash)2.889 E F0 .389 +(displays error messages generated by the)2.889 F F1(getopts)2.89 E F0 +-.2(bu)2.89 G .39(iltin command \(see).2 F F2 .36(SHELL B)144 516 R(UIL) +-.09 E .36(TIN COMMANDS)-.828 F F0(belo)2.61 E(w\).)-.25 E F2(OPTERR) +5.36 E F0 .359(is initialized to 1 each time the shell is in)2.61 F -.2 +(vo)-.4 G -.1(ke).2 G(d).1 E(or a shell script is e)144 528 Q -.15(xe) +-.15 G(cuted.).15 E F1 -.74(PA)108 540 S(TH)-.21 E F0 .587 +(The search path for commands.)144 540 R .588 (It is a colon-separated list of directories in which the shell looks) -5.588 F .471(for commands \(see)144 144 R F2 .471(COMMAND EXECUTION) -2.971 F F0(belo)2.722 E 2.972(w\). A)-.25 F .472 -(zero-length \(null\) directory name in the)2.972 F -.25(va)144 156 S -.536(lue of).25 F F2 -.666(PA)3.036 G(TH)-.189 E F0 .535 -(indicates the current directory)2.786 F 5.535(.A)-.65 G .535 -(null directory name may appear as tw)-2.5 F 3.035(oa)-.1 G(djacent) --3.035 E .867(colons, or as an initial or trailing colon.)144 168 R .868 -(The def)5.868 F .868(ault path is system-dependent, and is set by the) --.1 F(administrator who installs)144 180 Q F1(bash)2.5 E F0 5(.A)C -(common v)-2.5 E(alue is)-.25 E/F3 10/Courier@0 SF -(/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)144 192 Q -F0(.)A F1(POSIXL)108 204 Q(Y_CORRECT)-.92 E F0 .471(If this v)144 216 R -.471(ariable is in the en)-.25 F .471(vironment when)-.4 F F1(bash)2.971 -E F0 .471(starts, the shell enters)2.971 F/F4 10/Times-Italic@0 SF .472 -(posix mode)2.972 F F0 .472(before reading)2.972 F .011 -(the startup \214les, as if the)144 228 R F1(\255\255posix)2.511 E F0 +5.587 F .472(for commands \(see)144 552 R F2 .472(COMMAND EXECUTION) +2.972 F F0(belo)2.722 E 2.972(w\). A)-.25 F .471 +(zero-length \(null\) directory name in the)2.972 F -.25(va)144 564 S +.535(lue of).25 F F2 -.666(PA)3.035 G(TH)-.189 E F0 .535 +(indicates the current directory)2.785 F 5.535(.A)-.65 G .535 +(null directory name may appear as tw)-2.5 F 3.036(oa)-.1 G(djacent) +-3.036 E .868(colons, or as an initial or trailing colon.)144 576 R .868 +(The def)5.868 F .867(ault path is system-dependent, and is set by the) +-.1 F(administrator who installs)144 588 Q F1(bash)2.5 E F0 5(.A)C +(common v)-2.5 E(alue is)-.25 E/F4 10/Courier@0 SF +(/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)144 600 Q +F0(.)A F1(POSIXL)108 612 Q(Y_CORRECT)-.92 E F0 .472(If this v)144 624 R +.472(ariable is in the en)-.25 F .471(vironment when)-.4 F F1(bash)2.971 +E F0 .471(starts, the shell enters)2.971 F/F5 10/Times-Italic@0 SF .471 +(posix mode)2.971 F F0 .471(before reading)2.971 F .011 +(the startup \214les, as if the)144 636 R F1(\255\255posix)2.511 E F0 (in)2.511 E -.2(vo)-.4 G .011(cation option had been supplied.).2 F .011 -(If it is set while the shell is)5.011 F(running,)144 240 Q F1(bash)2.5 -E F0(enables)2.5 E F4(posix mode)2.5 E F0 2.5(,a)C 2.5(si)-2.5 G 2.5(ft) --2.5 G(he command)-2.5 E F3(set -o posix)2.5 E F0(had been e)2.5 E -.15 -(xe)-.15 G(cuted.).15 E F1(PR)108 252 Q(OMPT_COMMAND)-.3 E F0 -(If set, the v)144 264 Q(alue is e)-.25 E -.15(xe)-.15 G +(If it is set while the shell is)5.011 F(running,)144 648 Q F1(bash) +4.498 E F0(enables)4.498 E F5 1.997(posix mode)4.497 F F0 4.497(,a)C +4.497(si)-4.497 G 4.497(ft)-4.497 G 1.997(he command)-4.497 F F4 1.997 +(set -o posix)4.497 F F0 1.997(had been e)4.497 F -.15(xe)-.15 G(cuted.) +.15 E(When the shell enters)144 660 Q F5(posix mode)2.5 E F0 2.5(,i)C +2.5(ts)-2.5 G(ets this v)-2.5 E(ariable if it w)-.25 E +(as not already set.)-.1 E F1(PR)108 672 Q(OMPT_COMMAND)-.3 E F0 +(If set, the v)144 684 Q(alue is e)-.25 E -.15(xe)-.15 G (cuted as a command prior to issuing each primary prompt.).15 E F1(PR) -108 276 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676 -(If set to a number greater than zero, the v)144 288 R .676 +108 696 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676 +(If set to a number greater than zero, the v)144 708 R .676 (alue is used as the number of trailing directory compo-)-.25 F .923 -(nents to retain when e)144 300 R .923(xpanding the)-.15 F F1(\\w)3.423 +(nents to retain when e)144 720 R .923(xpanding the)-.15 F F1(\\w)3.423 E F0(and)3.423 E F1(\\W)3.423 E F0 .923(prompt string escapes \(see) 3.423 F F2(PR)3.423 E(OMPTING)-.27 E F0(belo)3.173 E(w\).)-.25 E -(Characters remo)144 312 Q -.15(ve)-.15 G 2.5(da).15 G -(re replaced with an ellipsis.)-2.5 E F1(PS0)108 324 Q F0 1.174(The v) -144 324 R 1.174(alue of this parameter is e)-.25 F 1.174(xpanded \(see) --.15 F F2(PR)3.674 E(OMPTING)-.27 E F0(belo)3.424 E 1.174 +(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(17)188.455 E 0 Cg EP +%%Page: 18 18 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(Characters remo) +144 84 Q -.15(ve)-.15 G 2.5(da).15 G(re replaced with an ellipsis.)-2.5 +E/F1 10/Times-Bold@0 SF(PS0)108 96 Q F0 1.174(The v)144 96 R 1.174 +(alue of this parameter is e)-.25 F 1.174(xpanded \(see)-.15 F/F2 9 +/Times-Bold@0 SF(PR)3.674 E(OMPTING)-.27 E F0(belo)3.424 E 1.174 (w\) and displayed by interacti)-.25 F -.15(ve)-.25 G -(shells after reading a command and before the command is e)144 336 Q --.15(xe)-.15 G(cuted.).15 E F1(PS1)108 348 Q F0 .065(The v)144 348 R +(shells after reading a command and before the command is e)144 108 Q +-.15(xe)-.15 G(cuted.).15 E F1(PS1)108 120 Q F0 .065(The v)144 120 R .065(alue of this parameter is e)-.25 F .065(xpanded \(see)-.15 F F2(PR) 2.565 E(OMPTING)-.27 E F0(belo)2.315 E .065 -(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 360 R +(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 132 R (def)2.5 E(ault v)-.1 E(alue is `)-.25 E(`)-.74 E F1(\\s\255\\v\\$)A F0 --.74('')2.5 G(.).74 E F1(PS2)108 372 Q F0 .117(The v)144 372 R .117 +-.74('')2.5 G(.).74 E F1(PS2)108 144 Q F0 .117(The v)144 144 R .117 (alue of this parameter is e)-.25 F .117(xpanded as with)-.15 F F2(PS1) 2.617 E F0 .118(and used as the secondary prompt string.)2.368 F(The) -5.118 E(def)144 384 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G -(.).74 E F1(PS3)108 396 Q F0 1.116(The v)144 396 R 1.115 +5.118 E(def)144 156 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G +(.).74 E F1(PS3)108 168 Q F0 1.116(The v)144 168 R 1.115 (alue of this parameter is used as the prompt for the)-.25 F F1(select) 3.615 E F0 1.115(command \(see)3.615 F F2 1.115(SHELL GRAM-)3.615 F(MAR) -144 408 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 420 Q F0 .1 -(The v)144 420 R .1(alue of this parameter is e)-.25 F .1 +144 180 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 192 Q F0 .1 +(The v)144 192 R .1(alue of this parameter is e)-.25 F .1 (xpanded as with)-.15 F F2(PS1)2.6 E F0 .101(and the v)2.35 F .101 -(alue is printed before each command)-.25 F F1(bash)144 432 Q F0 .292 -(displays during an e)2.792 F -.15(xe)-.15 G .292(cution trace.).15 F -.292(The \214rst character of)5.292 F F2(PS4)2.792 E F0 .291 -(is replicated multiple times, as)2.542 F(necessary)144 444 Q 2.5(,t) --.65 G 2.5(oi)-2.5 G(ndicate multiple le)-2.5 E -.15(ve)-.25 G -(ls of indirection.).15 E(The def)5 E(ault is `)-.1 E(`)-.74 E F1(+)A F0 --.74('')2.5 G(.).74 E F1(SHELL)108 456 Q F0 .663 -(The full pathname to the shell is k)144 468 R .664(ept in this en)-.1 F -.664(vironment v)-.4 F 3.164(ariable. If)-.25 F .664 -(it is not set when the shell)3.164 F(starts,)144 480 Q F1(bash)2.5 E F0 -(assigns to it the full pathname of the current user')2.5 E 2.5(sl)-.55 -G(ogin shell.)-2.5 E F1(TIMEFORMA)108 492 Q(T)-.95 E F0 .827(The v)144 -504 R .826 +(alue is printed before each command)-.25 F F1(bash)144 204 Q F0 .335 +(displays during an e)2.835 F -.15(xe)-.15 G .335(cution trace.).15 F +.335(The \214rst character of the e)5.335 F .335(xpanded v)-.15 F .335 +(alue of)-.25 F F2(PS4)2.834 E F0 .334(is repli-)2.584 F +(cated multiple times, as necessary)144 216 Q 2.5(,t)-.65 G 2.5(oi)-2.5 +G(ndicate multiple le)-2.5 E -.15(ve)-.25 G(ls of indirection.).15 E +(The def)5 E(ault is `)-.1 E(`)-.74 E F1(+)A F0 -.74('')2.5 G(.).74 E F1 +(SHELL)108 228 Q F0 .663(The full pathname to the shell is k)144 240 R +.664(ept in this en)-.1 F .664(vironment v)-.4 F 3.164(ariable. If)-.25 +F .664(it is not set when the shell)3.164 F(starts,)144 252 Q F1(bash) +2.5 E F0(assigns to it the full pathname of the current user')2.5 E 2.5 +(sl)-.55 G(ogin shell.)-2.5 E F1(TIMEFORMA)108 264 Q(T)-.95 E F0 .827 +(The v)144 276 R .826 (alue of this parameter is used as a format string specifying ho)-.25 F 3.326(wt)-.25 G .826(he timing information for)-3.326 F .648 -(pipelines pre\214x)144 516 R .648(ed with the)-.15 F F1(time)3.148 E F0 +(pipelines pre\214x)144 288 R .648(ed with the)-.15 F F1(time)3.148 E F0 (reserv)3.148 E .648(ed w)-.15 F .649(ord should be displayed.)-.1 F (The)5.649 E F1(%)3.149 E F0 .649(character introduces)3.149 F .712 -(an escape sequence that is e)144 528 R .711(xpanded to a time v)-.15 F +(an escape sequence that is e)144 300 R .711(xpanded to a time v)-.15 F .711(alue or other information.)-.25 F .711(The escape sequences)5.711 F -(and their meanings are as follo)144 540 Q -(ws; the braces denote optional portions.)-.25 E F1(%%)144 558 Q F0 2.5 -(Al)194 558 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 570 Q F4(p)A F1 -(][l]R)A F0(The elapsed time in seconds.)194 570 Q F1(%[)144 582 Q F4(p) -A F1(][l]U)A F0(The number of CPU seconds spent in user mode.)194 582 Q -F1(%[)144 594 Q F4(p)A F1(][l]S)A F0 -(The number of CPU seconds spent in system mode.)194 594 Q F1(%P)144 606 -Q F0(The CPU percentage, computed as \(%U + %S\) / %R.)194 606 Q .87 -(The optional)144 622.8 R F4(p)3.37 E F0 .87(is a digit specifying the) -3.37 F F4(pr)3.37 E(ecision)-.37 E F0 3.37(,t)C .87 +(and their meanings are as follo)144 312 Q +(ws; the braces denote optional portions.)-.25 E F1(%%)144 330 Q F0 2.5 +(Al)194 330 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 342 Q/F3 10 +/Times-Italic@0 SF(p)A F1(][l]R)A F0(The elapsed time in seconds.)194 +342 Q F1(%[)144 354 Q F3(p)A F1(][l]U)A F0 +(The number of CPU seconds spent in user mode.)194 354 Q F1(%[)144 366 Q +F3(p)A F1(][l]S)A F0(The number of CPU seconds spent in system mode.)194 +366 Q F1(%P)144 378 Q F0 +(The CPU percentage, computed as \(%U + %S\) / %R.)194 378 Q .87 +(The optional)144 394.8 R F3(p)3.37 E F0 .87(is a digit specifying the) +3.37 F F3(pr)3.37 E(ecision)-.37 E F0 3.37(,t)C .87 (he number of fractional digits after a decimal)-3.37 F 2.526(point. A) -144 634.8 R -.25(va)2.526 G .025 +144 406.8 R -.25(va)2.526 G .025 (lue of 0 causes no decimal point or fraction to be output.).25 F .025 (At most three places after the)5.025 F .537 -(decimal point may be speci\214ed; v)144 646.8 R .537(alues of)-.25 F F4 +(decimal point may be speci\214ed; v)144 418.8 R .537(alues of)-.25 F F3 (p)3.037 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.538 E -F4(p)3.038 E F0 .538(is not speci\214ed,)3.038 F(the v)144 658.8 Q -(alue 3 is used.)-.25 E .668(The optional)144 675.6 R F1(l)3.168 E F0 +F3(p)3.038 E F0 .538(is not speci\214ed,)3.038 F(the v)144 430.8 Q +(alue 3 is used.)-.25 E .668(The optional)144 447.6 R F1(l)3.168 E F0 .668(speci\214es a longer format, including minutes, of the form)3.168 F -F4(MM)3.168 E F0(m)A F4(SS)A F0(.)A F4(FF)A F0 3.167(s. The)B -.25(va) -3.167 G(lue).25 E(of)144 687.6 Q F4(p)2.5 E F0 +F3(MM)3.168 E F0(m)A F3(SS)A F0(.)A F3(FF)A F0 3.167(s. The)B -.25(va) +3.167 G(lue).25 E(of)144 459.6 Q F3(p)2.5 E F0 (determines whether or not the fraction is included.)2.5 E 13.364 -(If this v)144 704.4 R 13.364(ariable is not set,)-.25 F F1(bash)15.865 +(If this v)144 476.4 R 13.364(ariable is not set,)-.25 F F1(bash)15.865 E F0 13.365(acts as if it had the v)15.865 F(alue)-.25 E F1($\010\\nr) -144 716.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113 +144 488.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113 (.I)C 4.613(ft)-7.113 G 2.113(he v)-4.613 F 2.113 (alue is null, no timing information is dis-)-.25 F 2.5(played. A)144 -728.4 R(trailing ne)2.5 E -(wline is added when the format string is displayed.)-.25 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(17)192.055 E 0 Cg EP -%%Page: 18 18 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(TMOUT)108 84 Q F0 .941(If set to a v)144 96 R .941 -(alue greater than zero,)-.25 F/F2 9/Times-Bold@0 SF(TMOUT)3.441 E F0 -.941(is treated as the def)3.191 F .941(ault timeout for the)-.1 F F1 --.18(re)3.441 G(ad).18 E F0 -.2(bu)3.441 G(iltin.).2 E(The)144 108 Q F1 -(select)2.811 E F0 .311(command terminates if input does not arri)2.811 -F .61 -.15(ve a)-.25 H(fter).15 E F2(TMOUT)2.81 E F0 .31 -(seconds when input is com-)2.56 F .885(ing from a terminal.)144 120 R -.885(In an interacti)5.885 F 1.185 -.15(ve s)-.25 H .885(hell, the v).15 -F .886(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 -132 S 1.05(it for a line of input after issuing the primary prompt.).1 F -F1(Bash)6.05 E F0 1.05(terminates after w)3.55 F 1.05(aiting for that) --.1 F(number of seconds if a complete line of input does not arri)144 -144 Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 156 Q F0 .39(If set,)144 168 +500.4 R(trailing ne)2.5 E +(wline is added when the format string is displayed.)-.25 E F1(TMOUT)108 +512.4 Q F0 .941(If set to a v)144 524.4 R .941(alue greater than zero,) +-.25 F F2(TMOUT)3.441 E F0 .941(is treated as the def)3.191 F .941 +(ault timeout for the)-.1 F F1 -.18(re)3.441 G(ad).18 E F0 -.2(bu)3.441 +G(iltin.).2 E(The)144 536.4 Q F1(select)2.811 E F0 .311 +(command terminates if input does not arri)2.811 F .61 -.15(ve a)-.25 H +(fter).15 E F2(TMOUT)2.81 E F0 .31(seconds when input is com-)2.56 F +.885(ing from a terminal.)144 548.4 R .885(In an interacti)5.885 F 1.185 +-.15(ve s)-.25 H .885(hell, the v).15 F .886 +(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 560.4 +S 1.05(it for a line of input after issuing the primary prompt.).1 F F1 +(Bash)6.05 E F0 1.05(terminates after w)3.55 F 1.05(aiting for that)-.1 +F(number of seconds if a complete line of input does not arri)144 572.4 +Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 584.4 Q F0 .39(If set,)144 596.4 R F1(bash)2.89 E F0 .39(uses its v)2.89 F .39 (alue as the name of a directory in which)-.25 F F1(bash)2.891 E F0 .391 -(creates temporary \214les for the)2.891 F(shell')144 180 Q 2.5(su)-.55 -G(se.)-2.5 E F1(auto_r)108 192 Q(esume)-.18 E F0 .531(This v)144 204 R -.531(ariable controls ho)-.25 F 3.031(wt)-.25 G .531 +(creates temporary \214les for the)2.891 F(shell')144 608.4 Q 2.5(su) +-.55 G(se.)-2.5 E F1(auto_r)108 620.4 Q(esume)-.18 E F0 .531(This v)144 +632.4 R .531(ariable controls ho)-.25 F 3.031(wt)-.25 G .531 (he shell interacts with the user and job control.)-3.031 F .53 -(If this v)5.53 F .53(ariable is set,)-.25 F .538(single w)144 216 R +(If this v)5.53 F .53(ariable is set,)-.25 F .538(single w)144 644.4 R .538(ord simple commands without redirections are treated as candidates\ - for resumption of an)-.1 F -.15(ex)144 228 S .367(isting stopped job) + for resumption of an)-.1 F -.15(ex)144 656.4 S .367(isting stopped job) .15 F 5.367(.T)-.4 G .366(here is no ambiguity allo)-5.367 F .366 (wed; if there is more than one job be)-.25 F .366(ginning with)-.15 F 1.124(the string typed, the job most recently accessed is selected.)144 -240 R(The)6.125 E/F3 10/Times-Italic@0 SF(name)3.985 E F0 1.125 -(of a stopped job, in this)3.805 F(conte)144 252 Q 1.133 +668.4 R(The)6.125 E F3(name)3.985 E F0 1.125(of a stopped job, in this) +3.805 F(conte)144 680.4 Q 1.133 (xt, is the command line used to start it.)-.15 F 1.133(If set to the v) 6.133 F(alue)-.25 E F3 -.2(ex)3.633 G(act).2 E F0 3.632(,t).68 G 1.132 (he string supplied must)-3.632 F .624 -(match the name of a stopped job e)144 264 R .624(xactly; if set to)-.15 -F F3(substring)3.125 E F0 3.125(,t).22 G .625 +(match the name of a stopped job e)144 692.4 R .624(xactly; if set to) +-.15 F F3(substring)3.125 E F0 3.125(,t).22 G .625 (he string supplied needs to match a)-3.125 F .885 -(substring of the name of a stopped job)144 276 R 5.884(.T)-.4 G(he) +(substring of the name of a stopped job)144 704.4 R 5.884(.T)-.4 G(he) -5.884 E F3(substring)3.724 E F0 -.25(va)3.604 G .884(lue pro).25 F .884 -(vides functionality analogous to)-.15 F(the)144 288 Q F1(%?)3.333 E F0 -.833(job identi\214er \(see)5.833 F F2 .834(JOB CONTR)3.334 F(OL)-.27 E -F0(belo)3.084 E 3.334(w\). If)-.25 F .834(set to an)3.334 F 3.334(yo) +(vides functionality analogous to)-.15 F(the)144 716.4 Q F1(%?)3.333 E +F0 .833(job identi\214er \(see)5.833 F F2 .834(JOB CONTR)3.334 F(OL)-.27 +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 300 R 2.816(sn)-.55 G .316 +(must be a pre\214x of a stopped job')144 728.4 R 2.816(sn)-.55 G .316 (ame; this pro)-2.816 F .315(vides functionality analogous to the)-.15 F -F1(%)2.815 E F3(string)A F0(job)2.815 E(identi\214er)144 312 Q(.)-.55 E -F1(histchars)108 324 Q F0 2.069(The tw)144 336 R 4.57(oo)-.1 G 4.57(rt) --4.57 G 2.07(hree characters which control history e)-4.57 F 2.07 -(xpansion and tok)-.15 F 2.07(enization \(see)-.1 F F2(HIST)4.57 E(OR) --.162 E(Y)-.315 E(EXP)144 348 Q(ANSION)-.666 E F0(belo)3.466 E 3.716 -(w\). The)-.25 F 1.216(\214rst character is the)3.716 F F3 1.215 -(history e)3.715 F(xpansion)-.2 E F0(character)3.715 E 3.715(,t)-.4 G -1.215(he character which)-3.715 F .798(signals the start of a history e) -144 360 R .798(xpansion, normally `)-.15 F F1(!)A F0 3.298('. The)B .798 -(second character is the)3.298 F F3(quic)3.298 E 3.298(ks)-.2 G -(ubstitu-)-3.298 E(tion)144 372 Q F0(character)2.74 E 2.74(,w)-.4 G .239 +F1(%)2.815 E F3(string)A F0(job)2.815 E(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(18)188.455 E 0 Cg EP +%%Page: 19 19 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(identi\214er)144 +84 Q(.)-.55 E/F1 10/Times-Bold@0 SF(histchars)108 96 Q F0 2.069(The tw) +144 108 R 4.57(oo)-.1 G 4.57(rt)-4.57 G 2.07 +(hree characters which control history e)-4.57 F 2.07(xpansion and tok) +-.15 F 2.07(enization \(see)-.1 F/F2 9/Times-Bold@0 SF(HIST)4.57 E(OR) +-.162 E(Y)-.315 E(EXP)144 120 Q(ANSION)-.666 E F0(belo)3.466 E 3.716 +(w\). The)-.25 F 1.216(\214rst character is the)3.716 F/F3 10 +/Times-Italic@0 SF 1.215(history e)3.715 F(xpansion)-.2 E F0(character) +3.715 E 3.715(,t)-.4 G 1.215(he character which)-3.715 F .798 +(signals the start of a history e)144 132 R .798(xpansion, normally `) +-.15 F F1(!)A F0 3.298('. The)B .798(second character is the)3.298 F F3 +(quic)3.298 E 3.298(ks)-.2 G(ubstitu-)-3.298 E(tion)144 144 Q F0 +(character)2.74 E 2.74(,w)-.4 G .239 (hich is used as shorthand for re-running the pre)-2.74 F .239 (vious command entered, substitut-)-.25 F .575 -(ing one string for another in the command.)144 384 R .575(The def)5.575 +(ing one string for another in the command.)144 156 R .575(The def)5.575 F .575(ault is `)-.1 F F1(^)A F0 3.075('. The)B .576 (optional third character is the)3.076 F .223(character which indicates\ that the remainder of the line is a comment when found as the \214rst \ -char)144 396 R(-)-.2 E 1.293(acter of a w)144 408 R 1.293 +char)144 168 R(-)-.2 E 1.293(acter of a w)144 180 R 1.293 (ord, normally `)-.1 F F1(#)A F0 3.793('. The)B 1.294 (history comment character causes history substitution to be)3.794 F .38 -(skipped for the remaining w)144 420 R .38(ords on the line.)-.1 F .379 +(skipped for the remaining w)144 192 R .38(ords on the line.)-.1 F .379 (It does not necessarily cause the shell parser to treat)5.379 F -(the rest of the line as a comment.)144 432 Q F1(Arrays)87 448.8 Q(Bash) -108 460.8 Q F0(pro)3.39 E .89(vides one-dimensional inde)-.15 F -.15(xe) +(the rest of the line as a comment.)144 204 Q F1(Arrays)87 220.8 Q(Bash) +108 232.8 Q F0(pro)3.39 E .89(vides one-dimensional inde)-.15 F -.15(xe) -.15 G 3.39(da).15 G .891(nd associati)-3.39 F 1.191 -.15(ve a)-.25 H .891(rray v).15 F 3.391(ariables. An)-.25 F 3.391(yv)-.15 G .891 -(ariable may be used as an)-3.641 F(inde)108 472.8 Q -.15(xe)-.15 G +(ariable may be used as an)-3.641 F(inde)108 244.8 Q -.15(xe)-.15 G 2.574(da).15 G .074(rray; the)-2.574 F F1(declar)2.574 E(e)-.18 E F0 -.2 (bu)2.574 G .074(iltin will e).2 F .073(xplicitly declare an array)-.15 F 5.073(.T)-.65 G .073(here is no maximum limit on the size of)-5.073 F -.328(an array)108 484.8 R 2.828(,n)-.65 G .328(or an)-2.828 F 2.828(yr) +.328(an array)108 256.8 R 2.828(,n)-.65 G .328(or an)-2.828 F 2.828(yr) -.15 G .329(equirement that members be inde)-2.828 F -.15(xe)-.15 G 2.829(do).15 G 2.829(ra)-2.829 G .329(ssigned contiguously)-2.829 F 5.329(.I)-.65 G(nde)-5.329 E -.15(xe)-.15 G 2.829(da).15 G .329 -(rrays are refer)-2.829 F(-)-.2 E 1.595(enced using inte)108 496.8 R +(rrays are refer)-2.829 F(-)-.2 E 1.595(enced using inte)108 268.8 R 1.595(gers \(including arithmetic e)-.15 F 1.595 (xpressions\) and are zero-based; associati)-.15 F 1.895 -.15(ve a)-.25 H 1.595(rrays are refer).15 F(-)-.2 E(enced using arbitrary strings.)108 -508.8 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G +280.8 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G (rray indices must be non-ne)-2.5 E -.05(ga)-.15 G(ti).05 E .3 -.15 -(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.462(An inde)108 525.6 R -.15(xe) +(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.462(An inde)108 297.6 R -.15(xe) -.15 G 4.962(da).15 G 2.462(rray is created automatically if an)-4.962 F 4.963(yv)-.15 G 2.463(ariable is assigned to using the syntax)-5.213 F -F3(name)4.963 E F0([)A F3(sub-)A(script)108 537.6 Q F0(]=)A F3(value)A +F3(name)4.963 E F0([)A F3(sub-)A(script)108 309.6 Q F0(]=)A F3(value)A F0 6.549(.T)C(he)-6.549 E F3(subscript)4.389 E F0 1.549 (is treated as an arithmetic e)4.729 F 1.549(xpression that must e)-.15 F -.25(va)-.25 G 1.548(luate to a number).25 F 6.548(.T)-.55 G(o)-7.348 -E -.15(ex)108 549.6 S 1.979(plicitly declare an inde).15 F -.15(xe)-.15 +E -.15(ex)108 321.6 S 1.979(plicitly declare an inde).15 F -.15(xe)-.15 G 4.479(da).15 G(rray)-4.479 E 4.48(,u)-.65 G(se)-4.48 E F1(declar)4.48 E 4.48<65ad>-.18 G(a)-4.48 E F3(name)4.48 E F0(\(see)4.48 E F2 1.98 (SHELL B)4.48 F(UIL)-.09 E 1.98(TIN COMMANDS)-.828 F F0(belo)4.23 E -(w\).)-.25 E F1(declar)108 561.6 Q 2.5<65ad>-.18 G(a)-2.5 E F3(name)2.5 +(w\).)-.25 E F1(declar)108 333.6 Q 2.5<65ad>-.18 G(a)-2.5 E F3(name)2.5 E F1([)A F3(subscript)A F1(])A F0(is also accepted; the)2.5 E F3 -(subscript)2.5 E F0(is ignored.)2.5 E(Associati)108 578.4 Q .3 -.15 +(subscript)2.5 E F0(is ignored.)2.5 E(Associati)108 350.4 Q .3 -.15 (ve a)-.25 H(rrays are created using).15 E F1(declar)2.5 E 2.5<65ad>-.18 -G(A)-2.5 E F3(name)2.5 E F0(.)A(Attrib)108 595.2 Q .941 +G(A)-2.5 E F3(name)2.5 E F0(.)A(Attrib)108 367.2 Q .941 (utes may be speci\214ed for an array v)-.2 F .941(ariable using the) -.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.44 E F1 -.18(re)3.44 G (adonly).18 E F0 -.2(bu)3.44 G 3.44(iltins. Each).2 F(attrib)3.44 E(ute) --.2 E(applies to all members of an array)108 607.2 Q(.)-.65 E 1.647 -(Arrays are assigned to using compound assignments of the form)108 624 R +-.2 E(applies to all members of an array)108 379.2 Q(.)-.65 E 1.647 +(Arrays are assigned to using compound assignments of the form)108 396 R F3(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F3(1)A F0 1.647 (... v)4.147 F(alue)-.25 E F3(n)A F1(\))A F0 4.148(,w)C 1.648(here each) --4.148 F F3(value)108 636 Q F0 1.833(is of the form [)4.333 F F3 +-4.148 F F3(value)108 408 Q F0 1.833(is of the form [)4.333 F F3 (subscript)A F0(]=)A F3(string)A F0 6.833(.I)C(nde)-6.833 E -.15(xe)-.15 G 4.333(da).15 G 1.833(rray assignments do not require an)-4.333 F 1.832 (ything b)-.15 F(ut)-.2 E F3(string)4.332 E F0(.)A .163 -(When assigning to inde)108 648 R -.15(xe)-.15 G 2.663(da).15 G .163 +(When assigning to inde)108 420 R -.15(xe)-.15 G 2.663(da).15 G .163 (rrays, if the optional brack)-2.663 F .163 (ets and subscript are supplied, that inde)-.1 F 2.664(xi)-.15 G 2.664 -(sa)-2.664 G(ssigned)-2.664 E 1.411(to; otherwise the inde)108 660 R +(sa)-2.664 G(ssigned)-2.664 E 1.411(to; otherwise the inde)108 432 R 3.911(xo)-.15 G 3.911(ft)-3.911 G 1.411 (he element assigned is the last inde)-3.911 F 3.91(xa)-.15 G 1.41 -(ssigned to by the statement plus one.)-3.91 F(Inde)108 672 Q -(xing starts at zero.)-.15 E(When assigning to an associati)108 688.8 Q +(ssigned to by the statement plus one.)-3.91 F(Inde)108 444 Q +(xing starts at zero.)-.15 E(When assigning to an associati)108 460.8 Q .3 -.15(ve a)-.25 H(rray).15 E 2.5(,t)-.65 G(he subscript is required.) --2.5 E .239(This syntax is also accepted by the)108 705.6 R F1(declar) +-2.5 E .239(This syntax is also accepted by the)108 477.6 R F1(declar) 2.739 E(e)-.18 E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .24 (vidual array elements may be assigned to using the)-.25 F F3(name)108 -717.6 Q F0([)A F3(subscript)A F0(]=)A F3(value)A F0 1.917 +489.6 Q F0([)A F3(subscript)A F0(]=)A F3(value)A F0 1.917 (syntax introduced abo)4.417 F -.15(ve)-.15 G 6.917(.W).15 G 1.917 (hen assigning to an inde)-6.917 F -.15(xe)-.15 G 4.417(da).15 G(rray) -4.417 E 4.417(,i)-.65 G(f)-4.417 E F3(name)4.777 E F0 1.916(is sub-) -4.597 F .115(scripted by a ne)108 729.6 R -.05(ga)-.15 G(ti).05 E .415 +4.597 F .115(scripted by a ne)108 501.6 R -.05(ga)-.15 G(ti).05 E .415 -.15(ve n)-.25 H(umber).15 E 2.615(,t)-.4 G .115 (hat number is interpreted as relati)-2.615 F .415 -.15(ve t)-.25 H 2.615(oo).15 G .116(ne greater than the maximum inde)-2.615 F(x)-.15 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(18)192.055 E 0 Cg EP -%%Page: 19 19 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(of)108 84 Q/F1 10 -/Times-Italic@0 SF(name)3.338 E F0 3.338(,s)C 3.338(on)-3.338 G -2.25 +(of)108 513.6 Q F3(name)3.338 E F0 3.338(,s)C 3.338(on)-3.338 G -2.25 -.15(eg a)-3.338 H(ti).15 E 1.138 -.15(ve i)-.25 H .838 (ndices count back from the end of the array).15 F 3.338(,a)-.65 G .838 (nd an inde)-3.338 F 3.338(xo)-.15 G 3.338<66ad>-3.338 G 3.338(1r)-3.338 -G .838(eferences the last)-3.338 F(element.)108 96 Q(An)108 112.8 Q +G .838(eferences the last)-3.338 F(element.)108 525.6 Q(An)108 542.4 Q 3.575(ye)-.15 G 1.075(lement of an array may be referenced using ${) --3.575 F F1(name)A F0([)A F1(subscript)A F0 3.575(]}. The)B 1.076 +-3.575 F F3(name)A F0([)A F3(subscript)A F0 3.575(]}. The)B 1.076 (braces are required to a)3.576 F -.2(vo)-.2 G(id).2 E 1.542 -(con\215icts with pathname e)108 124.8 R 4.041(xpansion. If)-.15 F F1 -(subscript)4.041 E F0(is)4.041 E/F2 10/Times-Bold@0 SF(@)4.041 E F0(or) -4.041 E F2(*)4.041 E F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F -1.541(xpands to all members of)-.15 F F1(name)4.041 E F0(.)A 1.056 -(These subscripts dif)108 136.8 R 1.056(fer only when the w)-.25 F 1.057 +(con\215icts with pathname e)108 554.4 R 4.041(xpansion. If)-.15 F F3 +(subscript)4.041 E F0(is)4.041 E F1(@)4.041 E F0(or)4.041 E F1(*)4.041 E +F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F 1.541 +(xpands to all members of)-.15 F F3(name)4.041 E F0(.)A 1.056 +(These subscripts dif)108 566.4 R 1.056(fer only when the w)-.25 F 1.057 (ord appears within double quotes.)-.1 F 1.057(If the w)6.057 F 1.057 -(ord is double-quoted,)-.1 F(${)108 148.8 Q F1(name)A F0 .521([*]} e)B +(ord is double-quoted,)-.1 F(${)108 578.4 Q F3(name)A F0 .521([*]} e)B .521(xpands to a single w)-.15 F .521(ord with the v)-.1 F .52 (alue of each array member separated by the \214rst character)-.25 F -1.374(of the)108 160.8 R/F3 9/Times-Bold@0 SF(IFS)3.874 E F0 1.374 -(special v)3.624 F 1.375(ariable, and ${)-.25 F F1(name)A F0 1.375 -([@]} e)B 1.375(xpands each element of)-.15 F F1(name)3.875 E F0 1.375 -(to a separate w)3.875 F 3.875(ord. When)-.1 F 2.028 -(there are no array members, ${)108 172.8 R F1(name)A F0 2.028([@]} e)B -2.028(xpands to nothing.)-.15 F 2.027(If the double-quoted e)7.028 F -2.027(xpansion occurs)-.15 F .758(within a w)108 184.8 R .759 -(ord, the e)-.1 F .759 +1.374(of the)108 590.4 R F2(IFS)3.874 E F0 1.374(special v)3.624 F 1.375 +(ariable, and ${)-.25 F F3(name)A F0 1.375([@]} e)B 1.375 +(xpands each element of)-.15 F F3(name)3.875 E F0 1.375(to a separate w) +3.875 F 3.875(ord. When)-.1 F 2.028(there are no array members, ${)108 +602.4 R F3(name)A F0 2.028([@]} e)B 2.028(xpands to nothing.)-.15 F +2.027(If the double-quoted e)7.028 F 2.027(xpansion occurs)-.15 F .758 +(within a w)108 614.4 R .759(ord, the e)-.1 F .759 (xpansion of the \214rst parameter is joined with the be)-.15 F .759 (ginning part of the original w)-.15 F(ord,)-.1 E .516(and the e)108 -196.8 R .516(xpansion of the last parameter is joined with the last par\ +626.4 R .516(xpansion of the last parameter is joined with the last par\ t of the original w)-.15 F 3.015(ord. This)-.1 F .515(is analogous)3.015 -F .227(to the e)108 208.8 R .228(xpansion of the special parameters)-.15 -F F2(*)2.728 E F0(and)2.728 E F2(@)2.728 E F0(\(see)2.728 E F2 .228 +F .227(to the e)108 638.4 R .228(xpansion of the special parameters)-.15 +F F1(*)2.728 E F0(and)2.728 E F1(@)2.728 E F0(\(see)2.728 E F1 .228 (Special P)2.728 F(arameters)-.1 E F0(abo)2.728 E -.15(ve)-.15 G 2.728 -(\). ${#).15 F F1(name)A F0([)A F1(subscript)A F0(]})A -.15(ex)108 220.8 -S .886(pands to the length of ${).15 F F1(name)A F0([)A F1(subscript)A -F0 3.386(]}. If)B F1(subscript)3.386 E F0(is)3.386 E F2(*)3.386 E F0(or) -3.386 E F2(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886 -(xpansion is the number of ele-)-.15 F .294(ments in the array)108 232.8 -R 5.294(.I)-.65 G 2.794(ft)-5.294 G(he)-2.794 E F1(subscript)3.135 E F0 +(\). ${#).15 F F3(name)A F0([)A F3(subscript)A F0(]})A -.15(ex)108 650.4 +S .886(pands to the length of ${).15 F F3(name)A F0([)A F3(subscript)A +F0 3.386(]}. If)B F3(subscript)3.386 E F0(is)3.386 E F1(*)3.386 E F0(or) +3.386 E F1(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886 +(xpansion is the number of ele-)-.15 F .294(ments in the array)108 662.4 +R 5.294(.I)-.65 G 2.794(ft)-5.294 G(he)-2.794 E F3(subscript)3.135 E F0 .295(used to reference an element of an inde)3.475 F -.15(xe)-.15 G 2.795(da).15 G .295(rray e)-2.795 F -.25(va)-.25 G .295 (luates to a number).25 F .629 -(less than zero, it is interpreted as relati)108 244.8 R .929 -.15(ve t) +(less than zero, it is interpreted as relati)108 674.4 R .929 -.15(ve t) -.25 H 3.128(oo).15 G .628(ne greater than the maximum inde)-3.128 F 3.128(xo)-.15 G 3.128(ft)-3.128 G .628(he array)-3.128 F 3.128(,s)-.65 G 3.128(on)-3.128 G -2.25 -.15(eg a)-3.128 H(ti).15 E -.15(ve)-.25 G -(indices count back from the end of the array)108 256.8 Q 2.5(,a)-.65 G +(indices count back from the end of the array)108 686.4 Q 2.5(,a)-.65 G (nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G (eferences the last element.)-2.5 E .595(Referencing an array v)108 -273.6 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G +703.2 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G .595(lent to referencing the array with a subscript of).25 F 2.5(0. An) -108 285.6 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25 -E(alid subscript is le)-.25 E -.05(ga)-.15 G(l, and).05 E F2(bash)2.5 E -F0(will create an array if necessary)2.5 E(.)-.65 E(An array v)108 302.4 +108 715.2 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25 +E(alid subscript is le)-.25 E -.05(ga)-.15 G(l, and).05 E F1(bash)2.5 E +F0(will create an array if necessary)2.5 E(.)-.65 E(GNU Bash 5.0)72 768 +Q(2018 December 7)139.295 E(19)188.455 E 0 Cg EP +%%Page: 20 20 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(An array v)108 84 Q(ariable is considered set if a subscript has been assigned a v)-.25 E 2.5(alue. The)-.25 F(null string is a v)2.5 E(alid v)-.25 E(alue.)-.25 E -.418(It is possible to obtain the k)108 319.2 R -.15(ey)-.1 G 2.918(s\() +.418(It is possible to obtain the k)108 100.8 R -.15(ey)-.1 G 2.918(s\() .15 G .418(indices\) of an array as well as the v)-2.918 F 2.917 -(alues. ${)-.25 F F2(!)A F1(name)A F0([)A F1(@)A F0 .417(]} and ${)B F2 -(!)A F1(name)A F0([)A F1(*)A F0(]})A -.15(ex)108 331.2 S .749 -(pand to the indices assigned in array v).15 F(ariable)-.25 E F1(name) +(alues. ${)-.25 F/F1 10/Times-Bold@0 SF(!)A/F2 10/Times-Italic@0 SF +(name)A F0([)A F2(@)A F0 .417(]} and ${)B F1(!)A F2(name)A F0([)A F2(*)A +F0(]})A -.15(ex)108 112.8 S .749 +(pand to the indices assigned in array v).15 F(ariable)-.25 E F2(name) 3.249 E F0 5.749(.T)C .75 (he treatment when in double quotes is similar to)-5.749 F(the e)108 -343.2 Q(xpansion of the special parameters)-.15 E F1(@)2.5 E F0(and)2.5 -E F1(*)2.5 E F0(within double quotes.)2.5 E(The)108 360 Q F2(unset)2.767 -E F0 -.2(bu)2.767 G .267(iltin is used to destro).2 F 2.767(ya)-.1 G -(rrays.)-2.767 E F2(unset)5.267 E F1(name)2.767 E F0([)A F1(subscript)A +124.8 Q(xpansion of the special parameters)-.15 E F2(@)2.5 E F0(and)2.5 +E F2(*)2.5 E F0(within double quotes.)2.5 E(The)108 141.6 Q F1(unset) +2.767 E F0 -.2(bu)2.767 G .267(iltin is used to destro).2 F 2.767(ya)-.1 +G(rrays.)-2.767 E F1(unset)5.267 E F2(name)2.767 E F0([)A F2(subscript)A F0 2.767(]d)C(estro)-2.767 E .267(ys the array element at inde)-.1 F(x) --.15 E F1(sub-)2.766 E(script)108 372 Q F0 6.318(.N)C -2.25 -.15(eg a) --6.318 H(ti).15 E 1.618 -.15(ve s)-.25 H 1.318(ubscripts to inde).15 F --.15(xe)-.15 G 3.818(da).15 G 1.319 -(rrays are interpreted as described abo)-3.818 F -.15(ve)-.15 G 6.319 -(.C).15 G 1.319(are must be tak)-6.319 F 1.319(en to)-.1 F -.2(avo)108 -384 S .298(id unw).2 F .298(anted side ef)-.1 F .298 -(fects caused by pathname e)-.25 F(xpansion.)-.15 E F2(unset)5.298 E F1 -(name)2.797 E F0 2.797(,w)C(here)-2.797 E F1(name)2.797 E F0 .297 -(is an array)2.797 F 2.797(,o)-.65 G(r)-2.797 E F2(unset)2.797 E F1 -(name)108 396 Q F0([)A F1(subscript)A F0(], where)A F1(subscript)2.5 E -F0(is)2.5 E F2(*)2.5 E F0(or)2.5 E F2(@)2.5 E F0 2.5(,r)C(emo)-2.5 E --.15(ve)-.15 G 2.5(st).15 G(he entire array)-2.5 E(.)-.65 E(The)108 -412.8 Q F2(declar)3.573 E(e)-.18 E F0(,)A F2(local)3.573 E F0 3.573(,a)C -(nd)-3.573 E F2 -.18(re)3.573 G(adonly).18 E F0 -.2(bu)3.573 G 1.073 -(iltins each accept a).2 F F23.573 E F0 1.073 +-.15 E F2(sub-)2.766 E(script)108 153.6 Q F0 3.974(,f)C 1.474 +(or both inde)-3.974 F -.15(xe)-.15 G 3.974(da).15 G 1.474(nd associati) +-3.974 F 1.774 -.15(ve a)-.25 H 3.974(rrays. Ne).15 F -.05(ga)-.15 G(ti) +.05 E 1.774 -.15(ve s)-.25 H 1.474(ubscripts to inde).15 F -.15(xe)-.15 +G 3.975(da).15 G 1.475(rrays are interpreted as)-3.975 F .615 +(described abo)108 165.6 R -.15(ve)-.15 G 5.615(.U).15 G .615 +(nsetting the last element of an array v)-5.615 F .614 +(ariable does not unset the v)-.25 F(ariable.)-.25 E F1(unset)5.614 E F2 +(name)3.114 E F0(,)A(where)108 177.6 Q F2(name)2.5 E F0(is an array)2.5 +E 2.5(,o)-.65 G(r)-2.5 E F1(unset)2.5 E F2(name)2.5 E F0([)A F2 +(subscript)A F0(], where)A F2(subscript)2.5 E F0(is)2.5 E F1(*)2.5 E F0 +(or)2.5 E F1(@)2.5 E F0 2.5(,r)C(emo)-2.5 E -.15(ve)-.15 G 2.5(st).15 G +(he entire array)-2.5 E(.)-.65 E .847(When using a v)108 194.4 R .848 +(ariable name with a subscript as an ar)-.25 F .848 +(gument to a command, such as with)-.18 F F1(unset)3.348 E F0 3.348(,w)C +(ithout)-3.348 E .345(using the w)108 206.4 R .345(ord e)-.1 F .345 +(xpansion syntax described abo)-.15 F -.15(ve)-.15 G 2.845(,t).15 G .345 +(he ar)-2.845 F .344(gument is subject to pathname e)-.18 F 2.844 +(xpansion. If)-.15 F(path-)2.844 E(name e)108 218.4 Q +(xpansion is not desired, the ar)-.15 E(gument should be quoted.)-.18 E +(The)108 235.2 Q F1(declar)3.573 E(e)-.18 E F0(,)A F1(local)3.573 E F0 +3.573(,a)C(nd)-3.573 E F1 -.18(re)3.573 G(adonly).18 E F0 -.2(bu)3.573 G +1.073(iltins each accept a).2 F 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 F23.574 E F0 .339 -(option to specify an associati)108 424.8 R .638 -.15(ve a)-.25 H(rray) +(rray and a)-3.574 F F13.574 E F0 .339 +(option to specify an associati)108 247.2 R .638 -.15(ve a)-.25 H(rray) .15 E 5.338(.I)-.65 G 2.838(fb)-5.338 G .338(oth options are supplied,) --2.838 F F22.838 E F0(tak)2.838 E .338(es precedence.)-.1 F(The) -5.338 E F2 -.18(re)2.838 G(ad).18 E F0 -.2(bu)2.838 G(iltin).2 E .44 -(accepts a)108 436.8 R F22.941 E F0 .441 +-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 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 F2(set)2.941 E F0(and)2.941 E F2(declar)2.941 E(e)-.18 E F0 -.2 -(bu)108 448.8 S(iltins display array v).2 E(alues in a w)-.25 E -(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F4 10.95 -/Times-Bold@0 SF(EXP)72 465.6 Q(ANSION)-.81 E F0 .76(Expansion is perfo\ -rmed on the command line after it has been split into w)108 477.6 R 3.26 +-5.441 E F1(set)2.941 E F0(and)2.941 E F1(declar)2.941 E(e)-.18 E F0 -.2 +(bu)108 271.2 S(iltins display array v).2 E(alues in a w)-.25 E +(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F3 10.95 +/Times-Bold@0 SF(EXP)72 288 Q(ANSION)-.81 E F0 .76(Expansion is perform\ +ed on the command line after it has been split into w)108 300 R 3.26 (ords. There)-.1 F .76(are se)3.26 F -.15(ve)-.25 G 3.26(nk).15 G .76 -(inds of)-3.26 F -.15(ex)108 489.6 S .369(pansion performed:).15 F F1 -(br)2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .369(tilde e) -2.869 F(xpansion)-.2 E F0(,).24 E F1(par)2.869 E .369 -(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .37 -(command sub-)2.869 F(stitution)108 501.6 Q F0(,).24 E F1(arithmetic e) -2.5 E(xpansion)-.2 E F0(,).24 E F1(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 -E F0 2.5(,a).22 G(nd)-2.5 E F1(pathname e)2.5 E(xpansion)-.2 E F0(.).24 -E .419(The order of e)108 518.4 R .419(xpansions is: brace e)-.15 F .418 +(inds of)-3.26 F -.15(ex)108 312 S .369(pansion performed:).15 F F2(br) +2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 E F2 .369(tilde e) +2.869 F(xpansion)-.2 E F0(,).24 E F2(par)2.869 E .369 +(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F2 .37 +(command sub-)2.869 F(stitution)108 324 Q F0(,).24 E F2(arithmetic e)2.5 +E(xpansion)-.2 E F0(,).24 E F2(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 E +F0 2.5(,a).22 G(nd)-2.5 E F2(pathname e)2.5 E(xpansion)-.2 E F0(.).24 E +.419(The order of e)108 340.8 R .419(xpansions is: brace e)-.15 F .418 (xpansion; tilde e)-.15 F .418(xpansion, parameter and v)-.15 F .418 -(ariable e)-.25 F .418(xpansion, arithmetic)-.15 F -.15(ex)108 530.4 S +(ariable e)-.25 F .418(xpansion, arithmetic)-.15 F -.15(ex)108 352.8 S .195(pansion, and command substitution \(done in a left-to-right f).15 F .196(ashion\); w)-.1 F .196(ord splitting; and pathname e)-.1 F(xpan-) --.15 E(sion.)108 542.4 Q .257 -(On systems that can support it, there is an additional e)108 559.2 R -.257(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E F1(pr)2.757 E .257 +-.15 E(sion.)108 364.8 Q .257 +(On systems that can support it, there is an additional e)108 381.6 R +.257(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E F2(pr)2.757 E .257 (ocess substitution)-.45 F F0 5.257(.T)C .256(his is per)-5.257 F(-)-.2 -E(formed at the same time as tilde, parameter)108 571.2 Q 2.5(,v)-.4 G +E(formed at the same time as tilde, parameter)108 393.6 Q 2.5(,v)-.4 G (ariable, and arithmetic e)-2.75 E(xpansion and command substitution.) --.15 E .002(After these e)108 588 R .003 +-.15 E .002(After these e)108 410.4 R .003 (xpansions are performed, quote characters present in the original w) -.15 F .003(ord are remo)-.1 F -.15(ve)-.15 G 2.503(du).15 G .003 -(nless the)-2.503 F(y)-.15 E(ha)108 600 Q .3 -.15(ve b)-.2 H -(een quoted themselv).15 E(es \()-.15 E F1(quote r)A(emo)-.37 E(val)-.1 -E F0(\).)A 1.487(Only brace e)108 616.8 R 1.487(xpansion, w)-.15 F 1.487 -(ord splitting, and pathname e)-.1 F 1.487 -(xpansion can change the number of w)-.15 F 1.486(ords of the)-.1 F -.15 -(ex)108 628.8 S 1.164(pansion; other e).15 F 1.164(xpansions e)-.15 F -1.164(xpand a single w)-.15 F 1.165(ord to a single w)-.1 F 3.665 +(nless the)-2.503 F(y)-.15 E(ha)108 422.4 Q .3 -.15(ve b)-.2 H +(een quoted themselv).15 E(es \()-.15 E F2(quote r)A(emo)-.37 E(val)-.1 +E F0(\).)A 1.191(Only brace e)108 439.2 R 1.191(xpansion, w)-.15 F 1.191 +(ord splitting, and pathname e)-.1 F 1.191 +(xpansion can increase the number of w)-.15 F 1.19(ords of the)-.1 F +-.15(ex)108 451.2 S 1.164(pansion; other e).15 F 1.164(xpansions e)-.15 +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 640.8 S(pansions of ").15 E F2($@)A F0 2.5("a)C(nd ") --2.5 E F2(${)A F1(name)A F2([@]})A F0 2.5("a)C 2.5(se)-2.5 G -(xplained abo)-2.65 E .3 -.15(ve \()-.15 H(see).15 E F3 -.666(PA)2.5 G -(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F2(Brace Expansion)87 657.6 -Q F1(Br)108.58 669.6 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606 +-.15 F -.15(ex)108 463.2 S 1.245(pansions of ").15 F F1($@)A F0 3.745 +("a)C 1.245(nd ")-3.745 F F1(${)A F2(name)A F1([@]})A F0 1.245 +(", and, in most cases,)B F1($*)3.745 E F0(and)3.745 E F1(${)3.744 E F2 +(name)A F1([*]})A F0 1.244(as e)3.744 F 1.244(xplained abo)-.15 F 1.544 +-.15(ve \()-.15 H(see).15 E/F4 9/Times-Bold@0 SF -.666(PA)108 475.2 S +(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F1(Brace Expansion)87 492 Q +F2(Br)108.58 504 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606 (is a mechanism by which arbitrary strings may be generated.)3.346 F -.606(This mechanism is similar)5.606 F(to)108 681.6 Q F1 .415 -(pathname e)2.915 F(xpansion)-.2 E F0 2.915(,b)C .415 +.606(This mechanism is similar)5.606 F(to)108 516 Q F2 .415(pathname e) +2.915 F(xpansion)-.2 E F0 2.915(,b)C .415 (ut the \214lenames generated need not e)-3.115 F 2.915(xist. P)-.15 F .415(atterns to be brace e)-.15 F .415(xpanded tak)-.15 F 2.915(et)-.1 G -(he)-2.915 E .152(form of an optional)108 693.6 R F1(pr)2.652 E(eamble) +(he)-2.915 E .151(form of an optional)108 528 R F2(pr)2.651 E(eamble) -.37 E F0 2.651(,f).18 G(ollo)-2.651 E .151 (wed by either a series of comma-separated strings or a sequence e)-.25 -F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 705.6 R -.563(wed by an optional)-.25 F F1(postscript)3.063 E F0 5.563(.T).68 G -.563(he preamble is pre\214x)-5.563 F .563(ed to each string)-.15 F .659 -(contained within the braces, and the postscript is then appended to ea\ -ch resulting string, e)108 717.6 R .658(xpanding left to)-.15 F(right.) -108 729.6 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(19)192.055 E -0 Cg EP -%%Page: 20 20 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .718(Brace e)108 -84 R .719(xpansions may be nested.)-.15 F .719(The results of each e) -5.719 F .719(xpanded string are not sorted; left to right order is)-.15 -F(preserv)108 96 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E/F1 10 -/Times-Bold@0 SF({)A F0(d,c,b)A F1(})A F0 2.5(ee)C -(xpands into `ade ace abe'.)-2.65 E 3.243(As)108 112.8 S .743(equence e) --3.243 F .743(xpression tak)-.15 F .743(es the form)-.1 F F1({)3.243 E -/F2 10/Times-Italic@0 SF(x)A F1(..)A F2(y)A F1([..)A F2(incr)A F1(]})A -F0 3.243(,w)C(here)-3.243 E F2(x)3.243 E F0(and)3.242 E F2(y)3.242 E F0 -.742(are either inte)3.242 F .742(gers or single characters,)-.15 F(and) -108 124.8 Q F2(incr)3.031 E F0 3.031(,a)C 3.032(no)-3.031 G .532 -(ptional increment, is an inte)-3.032 F(ger)-.15 E 5.532(.W)-.55 G .532 -(hen inte)-5.532 F .532(gers are supplied, the e)-.15 F .532 -(xpression e)-.15 F .532(xpands to each)-.15 F .078(number between)108 -136.8 R F2(x)2.578 E F0(and)2.578 E F2(y)2.578 E F0 2.578(,i)C(nclusi) --2.578 E -.15(ve)-.25 G 5.078(.S).15 G .078(upplied inte)-5.078 F .077 -(gers may be pre\214x)-.15 F .077(ed with)-.15 F F2(0)2.577 E F0 .077 -(to force each term to ha)2.577 F .377 -.15(ve t)-.2 H(he).15 E .014 -(same width.)108 148.8 R .014(When either)5.014 F F2(x)2.514 E F0(or) -2.514 E F2(y)2.514 E F0(be)2.514 E .015(gins with a zero, the shell att\ +F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 540 R .563 +(wed by an optional)-.25 F F2(postscript)3.063 E F0 5.563(.T).68 G .563 +(he preamble is pre\214x)-5.563 F .563(ed to each string)-.15 F .659(co\ +ntained within the braces, and the postscript is then appended to each \ +resulting string, e)108 552 R .659(xpanding left to)-.15 F(right.)108 +564 Q .719(Brace e)108 580.8 R .719(xpansions may be nested.)-.15 F .719 +(The results of each e)5.719 F .719 +(xpanded string are not sorted; left to right order is)-.15 F(preserv) +108 592.8 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E F1({)A F0 +(d,c,b)A F1(})A F0 2.5(ee)C(xpands into `ade ace abe'.)-2.65 E 3.242(As) +108 609.6 S .742(equence e)-3.242 F .742(xpression tak)-.15 F .742 +(es the form)-.1 F F1({)3.242 E F2(x)A F1(..)A F2(y)A F1([..)A F2(incr)A +F1(]})A F0 3.242(,w)C(here)-3.242 E F2(x)3.242 E F0(and)3.243 E F2(y) +3.243 E F0 .743(are either inte)3.243 F .743(gers or single characters,) +-.15 F(and)108 621.6 Q F2(incr)3.032 E F0 3.032(,a)C 3.032(no)-3.032 G +.532(ptional increment, is an inte)-3.032 F(ger)-.15 E 5.532(.W)-.55 G +.532(hen inte)-5.532 F .532(gers are supplied, the e)-.15 F .532 +(xpression e)-.15 F .531(xpands to each)-.15 F .077(number between)108 +633.6 R F2(x)2.577 E F0(and)2.577 E F2(y)2.577 E F0 2.577(,i)C(nclusi) +-2.577 E -.15(ve)-.25 G 5.077(.S).15 G .077(upplied inte)-5.077 F .077 +(gers may be pre\214x)-.15 F .077(ed with)-.15 F F2(0)2.577 E F0 .078 +(to force each term to ha)2.578 F .378 -.15(ve t)-.2 H(he).15 E .015 +(same width.)108 645.6 R .015(When either)5.015 F F2(x)2.515 E F0(or) +2.515 E F2(y)2.515 E F0(be)2.515 E .014(gins with a zero, the shell att\ empts to force all generated terms to contain)-.15 F 1.143 -(the same number of digits, zero-padding where necessary)108 160.8 R +(the same number of digits, zero-padding where necessary)108 657.6 R 6.143(.W)-.65 G 1.143(hen characters are supplied, the e)-6.143 F -(xpression)-.15 E -.15(ex)108 172.8 S 1.064(pands to each character le) +(xpression)-.15 E -.15(ex)108 669.6 S 1.064(pands to each character le) .15 F 1.064(xicographically between)-.15 F F2(x)3.564 E F0(and)3.564 E F2(y)3.564 E F0 3.564(,i)C(nclusi)-3.564 E -.15(ve)-.25 G 3.564(,u).15 G -1.064(sing the def)-3.564 F 1.064(ault C locale.)-.1 F(Note)6.064 E .984 -(that both)108 184.8 R F2(x)3.484 E F0(and)3.484 E F2(y)3.484 E F0 .983 -(must be of the same type.)3.484 F .983 +1.064(sing the def)-3.564 F 1.064(ault C locale.)-.1 F(Note)6.064 E .983 +(that both)108 681.6 R F2(x)3.483 E F0(and)3.483 E F2(y)3.483 E F0 .983 +(must be of the same type.)3.483 F .984 (When the increment is supplied, it is used as the dif)5.983 F(ference) --.25 E(between each term.)108 196.8 Q(The def)5 E -(ault increment is 1 or -1 as appropriate.)-.1 E .581(Brace e)108 213.6 -R .581(xpansion is performed before an)-.15 F 3.081(yo)-.15 G .581 -(ther e)-3.081 F .581(xpansions, and an)-.15 F 3.082(yc)-.15 G .582 -(haracters special to other e)-3.082 F(xpansions)-.15 E .016 -(are preserv)108 225.6 R .016(ed in the result.)-.15 F .016 -(It is strictly te)5.016 F(xtual.)-.15 E F1(Bash)5.016 E F0 .015 -(does not apply an)2.516 F 2.515(ys)-.15 G .015 -(yntactic interpretation to the con-)-2.515 F(te)108 237.6 Q +-.25 E(between each term.)108 693.6 Q(The def)5 E +(ault increment is 1 or \2551 as appropriate.)-.1 E .582(Brace e)108 +710.4 R .582(xpansion is performed before an)-.15 F 3.082(yo)-.15 G .581 +(ther e)-3.082 F .581(xpansions, and an)-.15 F 3.081(yc)-.15 G .581 +(haracters special to other e)-3.081 F(xpansions)-.15 E 1.208 +(are preserv)108 722.4 R 1.208(ed in the result.)-.15 F 1.209 +(It is strictly te)6.209 F(xtual.)-.15 E F1(Bash)6.209 E F0 1.209 +(does not apply an)3.709 F 3.709(ys)-.15 G 1.209 +(yntactic interpretation to the)-3.709 F(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(20)188.455 E 0 Cg EP +%%Page: 21 21 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(conte)108 84 Q (xt of the e)-.15 E(xpansion or the te)-.15 E(xt between the braces.) --.15 E 3.632(Ac)108 254.4 S 1.132(orrectly-formed brace e)-3.632 F 1.132 +-.15 E 3.633(Ac)108 100.8 S 1.133(orrectly-formed brace e)-3.633 F 1.132 (xpansion must contain unquoted opening and closing braces, and at leas\ -t one)-.15 F 3.441(unquoted comma or a v)108 266.4 R 3.441 +t one)-.15 F 3.44(unquoted comma or a v)108 112.8 R 3.441 (alid sequence e)-.25 F 5.941(xpression. An)-.15 F 5.941(yi)-.15 G 3.441 -(ncorrectly formed brace e)-5.941 F 3.44(xpansion is left)-.15 F 2.755 -(unchanged. A)108 278.4 R F1({)2.755 E F0(or)2.755 E F1(,)2.755 E F0 -.255(may be quoted with a backslash to pre)2.755 F -.15(ve)-.25 G .255 -(nt its being considered part of a brace e).15 F(xpres-)-.15 E 2.911 -(sion. T)108 290.4 R 2.911(oa)-.8 G -.2(vo)-3.111 G .411 +(ncorrectly formed brace e)-5.941 F 3.441(xpansion is left)-.15 F 2.755 +(unchanged. A)108 124.8 R/F1 10/Times-Bold@0 SF({)2.755 E F0(or)2.755 E +F1(,)2.755 E F0 .255(may be quoted with a backslash to pre)2.755 F -.15 +(ve)-.25 G .255(nt its being considered part of a brace e).15 F(xpres-) +-.15 E 2.91(sion. T)108 136.8 R 2.91(oa)-.8 G -.2(vo)-3.11 G .41 (id con\215icts with parameter e).2 F .411(xpansion, the string)-.15 F -F1(${)2.911 E F0 .41(is not considered eligible for brace e)2.911 F -(xpan-)-.15 E(sion.)108 302.4 Q 1.476(This construct is typically used \ -as shorthand when the common pre\214x of the strings to be generated is) -108 319.2 R(longer than in the abo)108 331.2 Q .3 -.15(ve ex)-.15 H -(ample:).15 E(mkdir /usr/local/src/bash/{old,ne)144 348 Q -.65(w,)-.25 G -(dist,b).65 E(ugs})-.2 E(or)108 360 Q(cho)144 372 Q -(wn root /usr/{ucb/{e)-.25 E(x,edit},lib/{e)-.15 E(x?.?*,ho)-.15 E(w_e) --.25 E(x}})-.15 E .618(Brace e)108 388.8 R .618 +F1(${)2.911 E F0 .411(is not considered eligible for brace e)2.911 F +(xpan-)-.15 E(sion, and inhibits brace e)108 148.8 Q +(xpansion until the closing)-.15 E F1(})2.5 E F0(.)A 1.476(This constru\ +ct is typically used as shorthand when the common pre\214x of the strin\ +gs to be generated is)108 165.6 R(longer than in the abo)108 177.6 Q .3 +-.15(ve ex)-.15 H(ample:).15 E(mkdir /usr/local/src/bash/{old,ne)144 +194.4 Q -.65(w,)-.25 G(dist,b).65 E(ugs})-.2 E(or)108 206.4 Q(cho)144 +218.4 Q(wn root /usr/{ucb/{e)-.25 E(x,edit},lib/{e)-.15 E(x?.?*,ho)-.15 +E(w_e)-.25 E(x}})-.15 E .618(Brace e)108 235.2 R .618 (xpansion introduces a slight incompatibility with historical v)-.15 F .618(ersions of)-.15 F F1(sh)3.118 E F0(.)A F1(sh)5.618 E F0 .618 -(does not treat open-)3.118 F .247 -(ing or closing braces specially when the)108 400.8 R 2.747(ya)-.15 G -.247(ppear as part of a w)-2.747 F .248(ord, and preserv)-.1 F .248 -(es them in the output.)-.15 F F1(Bash)5.248 E F0(remo)108 412.8 Q -.15 +(does not treat open-)3.118 F .248 +(ing or closing braces specially when the)108 247.2 R 2.748(ya)-.15 G +.247(ppear as part of a w)-2.748 F .247(ord, and preserv)-.1 F .247 +(es them in the output.)-.15 F F1(Bash)5.247 E F0(remo)108 259.2 Q -.15 (ve)-.15 G 3.53(sb).15 G 1.03(races from w)-3.53 F 1.03 (ords as a consequence of brace e)-.1 F 3.53(xpansion. F)-.15 F 1.03 (or e)-.15 F 1.03(xample, a w)-.15 F 1.03(ord entered to)-.1 F F1(sh) -3.53 E F0(as)3.53 E F2(\214le{1,2})108 424.8 Q F0 .514 -(appears identically in the output.)3.014 F .515(The same w)5.515 F .515 -(ord is output as)-.1 F F2 .515(\214le1 \214le2)4.925 F F0 .515(after e) -3.035 F .515(xpansion by)-.15 F F1(bash)3.015 E F0(.)A .437 -(If strict compatibility with)108 436.8 R F1(sh)2.936 E F0 .436 +3.53 E F0(as)3.53 E/F2 10/Times-Italic@0 SF(\214le{1,2})108 271.2 Q F0 +.515(appears identically in the output.)3.015 F .515(The same w)5.515 F +.515(ord is output as)-.1 F F2 .514(\214le1 \214le2)4.925 F F0 .514 +(after e)3.034 F .514(xpansion by)-.15 F F1(bash)3.014 E F0(.)A .436 +(If strict compatibility with)108 283.2 R F1(sh)2.936 E F0 .436 (is desired, start)2.936 F F1(bash)2.936 E F0 .436(with the)2.936 F F1 -(+B)2.936 E F0 .436(option or disable brace e)2.936 F .436 -(xpansion with the)-.15 F F1(+B)108 448.8 Q F0(option to the)2.5 E F1 +(+B)2.936 E F0 .436(option or disable brace e)2.936 F .437 +(xpansion with the)-.15 F F1(+B)108 295.2 Q F0(option to the)2.5 E F1 (set)2.5 E F0(command \(see)2.5 E/F3 9/Times-Bold@0 SF(SHELL B)2.5 E (UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1 -.18(Ti) -87 465.6 S(lde Expansion).18 E F0 1.086(If a w)108 477.6 R 1.086(ord be) --.1 F 1.086(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0 -1.087('\), all of the characters preceding the \214rst unquoted)B .185(\ -slash \(or all characters, if there is no unquoted slash\) are consider\ -ed a)108 489.6 R F2(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685 -(fn)-5.185 G .185(one of the characters)-2.685 F .725(in the tilde-pre\ -\214x are quoted, the characters in the tilde-pre\214x follo)108 501.6 R -.726(wing the tilde are treated as a possible)-.25 F F2(lo)108 513.6 Q -.523(gin name)-.1 F F0 5.523(.I)C 3.023(ft)-5.523 G .523 +87 312 S(lde Expansion).18 E F0 1.087(If a w)108 324 R 1.087(ord be)-.1 +F 1.087(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0 1.086 +('\), all of the characters preceding the \214rst unquoted)B .185(slash\ + \(or all characters, if there is no unquoted slash\) are considered a) +108 336 R F2(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685(fn) +-5.185 G .185(one of the characters)-2.685 F .726(in the tilde-pre\214x\ + are quoted, the characters in the tilde-pre\214x follo)108 348 R .725 +(wing the tilde are treated as a possible)-.25 F F2(lo)108 360 Q .522 +(gin name)-.1 F F0 5.522(.I)C 3.022(ft)-5.522 G .522 (his login name is the null string, the tilde is replaced with the v) --3.023 F .522(alue of the shell parameter)-.25 F F3(HOME)108 525.6 Q/F4 -9/Times-Roman@0 SF(.)A F0(If)4.786 E F3(HOME)2.786 E F0 .287 -(is unset, the home directory of the user e)2.536 F -.15(xe)-.15 G .287 -(cuting the shell is substituted instead.).15 F(Other)5.287 E(-)-.2 E(w\ +-3.022 F .523(alue of the shell parameter)-.25 F F3(HOME)108 372 Q/F4 9 +/Times-Roman@0 SF(.)A F0(If)4.787 E F3(HOME)2.787 E F0 .287 +(is unset, the home directory of the user e)2.537 F -.15(xe)-.15 G .286 +(cuting the shell is substituted instead.).15 F(Other)5.286 E(-)-.2 E(w\ ise, the tilde-pre\214x is replaced with the home directory associated \ -with the speci\214ed login name.)108 537.6 Q .093 -(If the tilde-pre\214x is a `~+', the v)108 554.4 R .092 +with the speci\214ed login name.)108 384 Q .092 +(If the tilde-pre\214x is a `~+', the v)108 400.8 R .092 (alue of the shell v)-.25 F(ariable)-.25 E F3(PWD)2.592 E F0 .092 -(replaces the tilde-pre\214x.)2.342 F .092(If the tilde-pre\214x is) -5.092 F 3.403(a`)108 566.4 S .903(~\255', the v)-3.403 F .903 +(replaces the tilde-pre\214x.)2.342 F .093(If the tilde-pre\214x is) +5.093 F 3.404(a`)108 412.8 S .904(~\255', the v)-3.404 F .904 (alue of the shell v)-.25 F(ariable)-.25 E F3(OLDPWD)3.404 E F4(,)A F0 -.904(if it is set, is substituted.)3.154 F .904(If the characters follo) -5.904 F .904(wing the)-.25 F 1.642 -(tilde in the tilde-pre\214x consist of a number)108 578.4 R F2(N)4.142 -E F0 4.142(,o)C 1.642(ptionally pre\214x)-4.142 F 1.641 -(ed by a `+' or a `\255', the tilde-pre\214x is)-.15 F 1.437(replaced w\ +.904(if it is set, is substituted.)3.154 F .903(If the characters follo) +5.903 F .903(wing the)-.25 F 1.641 +(tilde in the tilde-pre\214x consist of a number)108 424.8 R F2(N)4.141 +E F0 4.142(,o)C 1.642(ptionally pre\214x)-4.142 F 1.642 +(ed by a `+' or a `\255', the tilde-pre\214x is)-.15 F 1.438(replaced w\ ith the corresponding element from the directory stack, as it w)108 -590.4 R 1.438(ould be displayed by the)-.1 F F1(dirs)3.938 E F0 -.2(bu) -108 602.4 S .455(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.955(dw).1 G -.455(ith the tilde-pre\214x as an ar)-2.955 F 2.954(gument. If)-.18 F -.454(the characters follo)2.954 F .454 +436.8 R 1.437(ould be displayed by the)-.1 F F1(dirs)3.937 E F0 -.2(bu) +108 448.8 S .454(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.954(dw).1 G +.454(ith the tilde-pre\214x as an ar)-2.954 F 2.954(gument. If)-.18 F +.454(the characters follo)2.954 F .455 (wing the tilde in the tilde-pre\214x)-.25 F (consist of a number without a leading `+' or `\255', `+' is assumed.) -108 614.4 Q(If the login name is in)108 631.2 Q -.25(va)-.4 G +108 460.8 Q(If the login name is in)108 477.6 Q -.25(va)-.4 G (lid, or the tilde e).25 E(xpansion f)-.15 E(ails, the w)-.1 E -(ord is unchanged.)-.1 E .166(Each v)108 648 R .167 +(ord is unchanged.)-.1 E .167(Each v)108 494.4 R .167 (ariable assignment is check)-.25 F .167(ed for unquoted tilde-pre\214x) -.1 F .167(es immediately follo)-.15 F .167(wing a)-.25 F F1(:)2.667 E -F0 .167(or the \214rst)2.667 F F1(=)2.667 E F0 5.167(.I)C(n)-5.167 E -.468(these cases, tilde e)108 660 R .468(xpansion is also performed.) --.15 F(Consequently)5.467 E 2.967(,o)-.65 G .467 -(ne may use \214lenames with tildes in assign-)-2.967 F(ments to)108 672 -Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25 E -.855(AT)-.666 G -(H).855 E F4(,)A F0(and)2.25 E F3(CDP)2.5 E -.855(AT)-.666 G(H).855 E F4 -(,)A F0(and the shell assigns the e)2.25 E(xpanded v)-.15 E(alue.)-.25 E -F1 -.1(Pa)87 688.8 S(rameter Expansion).1 E F0 1.605(The `)108 700.8 R -F1($)A F0 4.105('c)C 1.605(haracter introduces parameter e)-4.105 F -1.606(xpansion, command substitution, or arithmetic e)-.15 F 4.106 -(xpansion. The)-.15 F .407(parameter name or symbol to be e)108 712.8 R -.407(xpanded may be enclosed in braces, which are optional b)-.15 F .406 -(ut serv)-.2 F 2.906(et)-.15 G 2.906(op)-2.906 G(ro-)-2.906 E .032 -(tect the v)108 724.8 R .032(ariable to be e)-.25 F .032 -(xpanded from characters immediately follo)-.15 F .033 -(wing it which could be interpreted as part)-.25 F(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(20)192.055 E 0 Cg EP -%%Page: 21 21 +F0 .167(or the \214rst)2.667 F F1(=)2.666 E F0 5.166(.I)C(n)-5.166 E +.467(these cases, tilde e)108 506.4 R .467(xpansion is also performed.) +-.15 F(Consequently)5.467 E 2.967(,o)-.65 G .468 +(ne may use \214lenames with tildes in assign-)-2.967 F(ments to)108 +518.4 Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25 E -.855(AT) +-.666 G(H).855 E F4(,)A F0(and)2.25 E F3(CDP)2.5 E -.855(AT)-.666 G(H) +.855 E F4(,)A F0(and the shell assigns the e)2.25 E(xpanded v)-.15 E +(alue.)-.25 E .024(Bash also performs tilde e)108 535.2 R .024 +(xpansion on w)-.15 F .023(ords satisfying the conditions of v)-.1 F +.023(ariable assignments \(as described)-.25 F(abo)108 547.2 Q .769 -.15 +(ve u)-.15 H(nder).15 E F3 -.666(PA)2.969 G(RAMETERS).666 E F4(\))A F0 +.469(when the)2.719 F 2.969(ya)-.15 G .469(ppear as ar)-2.969 F .469 +(guments to simple commands.)-.18 F .47(Bash does not do this,)5.469 F +-.15(ex)108 559.2 S(cept for the).15 E F2(declar)2.5 E(ation)-.15 E F0 +(commands listed abo)2.5 E -.15(ve)-.15 G 2.5(,w).15 G(hen in)-2.5 E F2 +(posix mode)2.5 E F0(.)A F1 -.1(Pa)87 576 S(rameter Expansion).1 E F0 +1.606(The `)108 588 R F1($)A F0 4.106('c)C 1.606 +(haracter introduces parameter e)-4.106 F 1.605 +(xpansion, command substitution, or arithmetic e)-.15 F 4.105 +(xpansion. The)-.15 F .406(parameter name or symbol to be e)108 600 R +.407(xpanded may be enclosed in braces, which are optional b)-.15 F .407 +(ut serv)-.2 F 2.907(et)-.15 G 2.907(op)-2.907 G(ro-)-2.907 E .033 +(tect the v)108 612 R .033(ariable to be e)-.25 F .033 +(xpanded from characters immediately follo)-.15 F .032 +(wing it which could be interpreted as part)-.25 F(of the name.)108 624 +Q 1.189 +(When braces are used, the matching ending brace is the \214rst `)108 +640.8 R F1(})A F0 3.69('n)C 1.19(ot escaped by a backslash or within a) +-3.69 F 2.15(quoted string, and not within an embedded arithmetic e)108 +652.8 R 2.15(xpansion, command substitution, or parameter)-.15 F -.15 +(ex)108 664.8 S(pansion.).15 E(${)108 681.6 Q F2(par)A(ameter)-.15 E F0 +(})A 1.204(The v)144 693.6 R 1.204(alue of)-.25 F F2(par)3.704 E(ameter) +-.15 E F0 1.204(is substituted.)3.704 F 1.204 +(The braces are required when)6.204 F F2(par)4.955 E(ameter)-.15 E F0 +1.205(is a positional)4.435 F .264 +(parameter with more than one digit, or when)144 705.6 R F2(par)4.014 E +(ameter)-.15 E F0 .264(is follo)3.494 F .264 +(wed by a character which is not to)-.25 F 2.676 +(be interpreted as part of its name.)144 717.6 R(The)7.677 E F2(par) +5.177 E(ameter)-.15 E F0 2.677(is a shell parameter as described abo) +5.177 F -.15(ve)-.15 G F1 -.74(PA)144 729.6 S(RAMETERS).74 E F0 2.5(\)o) +C 2.5(ra)-2.5 G 2.5(na)-2.5 G(rray reference \()-2.5 E F1(Arrays)A F0 +(\).)A(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(21)188.455 E 0 Cg +EP +%%Page: 22 22 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(of the name.)108 -84 Q 1.19 -(When braces are used, the matching ending brace is the \214rst `)108 -100.8 R/F1 10/Times-Bold@0 SF(})A F0 3.689('n)C 1.189 -(ot escaped by a backslash or within a)-3.689 F 2.15 -(quoted string, and not within an embedded arithmetic e)108 112.8 R 2.15 -(xpansion, command substitution, or parameter)-.15 F -.15(ex)108 124.8 S -(pansion.).15 E(${)108 141.6 Q/F2 10/Times-Italic@0 SF(par)A(ameter)-.15 -E F0(})A 1.205(The v)144 153.6 R 1.205(alue of)-.25 F F2(par)3.705 E -(ameter)-.15 E F0 1.204(is substituted.)3.705 F 1.204 -(The braces are required when)6.204 F F2(par)4.954 E(ameter)-.15 E F0 -1.204(is a positional)4.434 F .264 -(parameter with more than one digit, or when)144 165.6 R F2(par)4.014 E -(ameter)-.15 E F0 .264(is follo)3.494 F .264 -(wed by a character which is not to)-.25 F 2.677 -(be interpreted as part of its name.)144 177.6 R(The)7.677 E F2(par) -5.177 E(ameter)-.15 E F0 2.676(is a shell parameter as described abo) -5.177 F -.15(ve)-.15 G F1 -.74(PA)144 189.6 S(RAMETERS).74 E F0 2.5(\)o) -C 2.5(ra)-2.5 G 2.5(na)-2.5 G(rray reference \()-2.5 E F1(Arrays)A F0 -(\).)A .346(If the \214rst character of)108 206.4 R F2(par)2.846 E -(ameter)-.15 E F0 .346(is an e)2.846 F .346(xclamation point \()-.15 F -F1(!)A F0 .346(\), and)B F2(par)2.846 E(ameter)-.15 E F0 .346(is not a) -2.846 F F2(namer)2.846 E(ef)-.37 E F0 2.847(,i)C 2.847(ti)-2.847 G -(ntroduces)-2.847 E 2.635(al)108 218.4 S -2.15 -.25(ev e)-2.635 H 2.635 -(lo).25 G 2.635(fv)-2.635 G .135(ariable indirection.)-2.885 F F1(Bash) -5.134 E F0 .134(uses the v)2.634 F .134(alue of the v)-.25 F .134 -(ariable formed from the rest of)-.25 F F2(par)2.634 E(ameter)-.15 E F0 -.134(as the)2.634 F 1.003(name of the v)108 230.4 R 1.003 -(ariable; this v)-.25 F 1.003(ariable is then e)-.25 F 1.003 -(xpanded and that v)-.15 F 1.003 -(alue is used in the rest of the substitution,)-.25 F .595 -(rather than the v)108 242.4 R .595(alue of)-.25 F F2(par)3.095 E -(ameter)-.15 E F0 3.095(itself. This)3.095 F .595(is kno)3.095 F .595 -(wn as)-.25 F F2(indir)3.095 E .595(ect e)-.37 F(xpansion)-.2 E F0 5.594 -(.I)C(f)-5.594 E F2(par)3.094 E(ameter)-.15 E F0 .594(is a nameref,) -3.094 F .477(this e)108 254.4 R .477(xpands to the name of the v)-.15 F -.477(ariable referenced by)-.25 F F2(par)2.978 E(ameter)-.15 E F0 .478 -(instead of performing the complete indi-)2.978 F 2.164(rect e)108 266.4 -R 4.663(xpansion. The)-.15 F -.15(ex)4.663 G 2.163 -(ceptions to this are the e).15 F 2.163(xpansions of ${)-.15 F F1(!)A F2 -(pr)A(e\214x)-.37 E F1(*)A F0 4.663(}a)C 2.163(nd ${)-4.663 F F1(!)A F2 -(name)A F0([)A F2(@)A F0 2.163(]} described)B(belo)108 278.4 Q 3.8 -.65 -(w. T)-.25 H(he e).65 E(xclamation point must immediately follo)-.15 E -2.5(wt)-.25 G(he left brace in order to introduce indirection.)-2.5 E -.334(In each of the cases belo)108 295.2 R -.65(w,)-.25 G F2(wor)3.484 E -(d)-.37 E F0 .334(is subject to tilde e)2.834 F .334 -(xpansion, parameter e)-.15 F .334(xpansion, command substitution,)-.15 -F(and arithmetic e)108 307.2 Q(xpansion.)-.15 E 1.09 -(When not performing substring e)108 324 R 1.089 -(xpansion, using the forms documented belo)-.15 F 3.589(w\()-.25 G -(e.g.,)-3.589 E F1(:-)3.589 E F0(\),)A F1(bash)3.589 E F0 1.089 -(tests for a)3.589 F(parameter that is unset or null.)108 336 Q(Omittin\ -g the colon results in a test only for a parameter that is unset.)5 E -(${)108 352.8 Q F2(par)A(ameter)-.15 E F1<3aad>A F2(wor)A(d)-.37 E F0(}) -A F1 .722(Use Default V)144 364.8 R(alues)-.92 E F0 5.722(.I)C(f)-5.722 -E F2(par)4.472 E(ameter)-.15 E F0 .723(is unset or null, the e)3.952 F -.723(xpansion of)-.15 F F2(wor)3.563 E(d)-.37 E F0 .723(is substituted.) -3.993 F(Other)5.723 E(-)-.2 E(wise, the v)144 376.8 Q(alue of)-.25 E F2 -(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 388.8 Q F2 -(par)A(ameter)-.15 E F1(:=)A F2(wor)A(d)-.37 E F0(})A F1 2.005 -(Assign Default V)144 400.8 R(alues)-.92 E F0 7.005(.I)C(f)-7.005 E F2 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .347 +(If the \214rst character of)108 84 R/F1 10/Times-Italic@0 SF(par)2.846 +E(ameter)-.15 E F0 .346(is an e)2.846 F .346(xclamation point \()-.15 F +/F2 10/Times-Bold@0 SF(!)A F0 .346(\), and)B F1(par)2.846 E(ameter)-.15 +E F0 .346(is not a)2.846 F F1(namer)2.846 E(ef)-.37 E F0 2.846(,i)C +2.846(ti)-2.846 G(ntroduces)-2.846 E 2.906(al)108 96 S -2.15 -.25(ev e) +-2.906 H 2.906(lo).25 G 2.906(fi)-2.906 G(ndirection.)-2.906 E F2(Bash) +5.406 E F0 .406(uses the v)2.906 F .406(alue formed by e)-.25 F .406 +(xpanding the rest of)-.15 F F1(par)2.906 E(ameter)-.15 E F0 .406 +(as the ne)2.906 F(w)-.25 E F1(par)2.907 E(ame-)-.15 E(ter)108 108 Q F0 +2.579(;t)C .079(his is then e)-2.579 F .079(xpanded and that v)-.15 F +.079(alue is used in the rest of the e)-.25 F .078 +(xpansion, rather than the e)-.15 F .078(xpansion of the)-.15 F +(original)108 120 Q F1(par)2.542 E(ameter)-.15 E F0 5.042(.T)C .042 +(his is kno)-5.042 F .042(wn as)-.25 F F1(indir)2.543 E .043(ect e)-.37 +F(xpansion)-.2 E F0 5.043(.T)C .043(he v)-5.043 F .043 +(alue is subject to tilde e)-.25 F .043(xpansion, parameter)-.15 F -.15 +(ex)108 132 S .249(pansion, command substitution, and arithmetic e).15 F +2.749(xpansion. If)-.15 F F1(par)2.749 E(ameter)-.15 E F0 .248 +(is a nameref, this e)2.749 F .248(xpands to the)-.15 F 1.51 +(name of the parameter referenced by)108 144 R F1(par)4.01 E(ameter)-.15 +E F0 1.51(instead of performing the complete indirect e)4.01 F +(xpansion.)-.15 E .388(The e)108 156 R .387(xceptions to this are the e) +-.15 F .387(xpansions of ${)-.15 F F2(!)A F1(pr)A(e\214x)-.37 E F2(*)A +F0 2.887(}a)C .387(nd ${)-2.887 F F2(!)A F1(name)A F0([)A F1(@)A F0 .387 +(]} described belo)B 4.187 -.65(w. T)-.25 H .387(he e).65 F(xclama-)-.15 +E(tion point must immediately follo)108 168 Q 2.5(wt)-.25 G +(he left brace in order to introduce indirection.)-2.5 E .334 +(In each of the cases belo)108 184.8 R -.65(w,)-.25 G F1(wor)3.484 E(d) +-.37 E F0 .334(is subject to tilde e)2.834 F .334(xpansion, parameter e) +-.15 F .334(xpansion, command substitution,)-.15 F(and arithmetic e)108 +196.8 Q(xpansion.)-.15 E 1.09(When not performing substring e)108 213.6 +R 1.089(xpansion, using the forms documented belo)-.15 F 3.589(w\()-.25 +G(e.g.,)-3.589 E F2(:-)3.589 E F0(\),)A F2(bash)3.589 E F0 1.089 +(tests for a)3.589 F(parameter that is unset or null.)108 225.6 Q(Omitt\ +ing the colon results in a test only for a parameter that is unset.)5 E +(${)108 242.4 Q F1(par)A(ameter)-.15 E F2<3aad>A F1(wor)A(d)-.37 E F0(}) +A F2 .722(Use Default V)144 254.4 R(alues)-.92 E F0 5.722(.I)C(f)-5.722 +E F1(par)4.472 E(ameter)-.15 E F0 .723(is unset or null, the e)3.952 F +.723(xpansion of)-.15 F F1(wor)3.563 E(d)-.37 E F0 .723(is substituted.) +3.993 F(Other)5.723 E(-)-.2 E(wise, the v)144 266.4 Q(alue of)-.25 E F1 +(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 278.4 Q F1 +(par)A(ameter)-.15 E F2(:=)A F1(wor)A(d)-.37 E F0(})A F2 2.005 +(Assign Default V)144 290.4 R(alues)-.92 E F0 7.005(.I)C(f)-7.005 E F1 (par)5.755 E(ameter)-.15 E F0 2.005(is unset or null, the e)5.235 F -2.004(xpansion of)-.15 F F2(wor)4.844 E(d)-.37 E F0 2.004 -(is assigned to)5.274 F F2(par)144 412.8 Q(ameter)-.15 E F0 5.278(.T).73 -G .278(he v)-5.278 F .278(alue of)-.25 F F2(par)4.028 E(ameter)-.15 E F0 +2.004(xpansion of)-.15 F F1(wor)4.844 E(d)-.37 E F0 2.004 +(is assigned to)5.274 F F1(par)144 302.4 Q(ameter)-.15 E F0 5.278(.T).73 +G .278(he v)-5.278 F .278(alue of)-.25 F F1(par)4.028 E(ameter)-.15 E F0 .278(is then substituted.)3.508 F .279 (Positional parameters and special param-)5.278 F -(eters may not be assigned to in this w)144 424.8 Q(ay)-.1 E(.)-.65 E -(${)108 436.8 Q F2(par)A(ameter)-.15 E F1(:?)A F2(wor)A(d)-.37 E F0(})A -F1 .535(Display Err)144 448.8 R .535(or if Null or Unset)-.18 F F0 5.535 -(.I)C(f)-5.535 E F2(par)4.285 E(ameter)-.15 E F0 .535 -(is null or unset, the e)3.765 F .535(xpansion of)-.15 F F2(wor)3.035 E -(d)-.37 E F0 .535(\(or a mes-)3.035 F .661(sage to that ef)144 460.8 R -.661(fect if)-.25 F F2(wor)3.501 E(d)-.37 E F0 .662(is not present\) is\ +(eters may not be assigned to in this w)144 314.4 Q(ay)-.1 E(.)-.65 E +(${)108 326.4 Q F1(par)A(ameter)-.15 E F2(:?)A F1(wor)A(d)-.37 E F0(})A +F2 .535(Display Err)144 338.4 R .535(or if Null or Unset)-.18 F F0 5.535 +(.I)C(f)-5.535 E F1(par)4.285 E(ameter)-.15 E F0 .535 +(is null or unset, the e)3.765 F .535(xpansion of)-.15 F F1(wor)3.035 E +(d)-.37 E F0 .535(\(or a mes-)3.035 F .661(sage to that ef)144 350.4 R +.661(fect if)-.25 F F1(wor)3.501 E(d)-.37 E F0 .662(is not present\) is\ written to the standard error and the shell, if it is not)3.931 F -(interacti)144 472.8 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,) --2.65 F(the v)2.5 E(alue of)-.25 E F2(par)2.5 E(ameter)-.15 E F0 -(is substituted.)2.5 E(${)108 484.8 Q F2(par)A(ameter)-.15 E F1(:+)A F2 -(wor)A(d)-.37 E F0(})A F1 .745(Use Alter)144 496.8 R .745(nate V)-.15 F -(alue)-.92 E F0 5.745(.I)C(f)-5.745 E F2(par)4.495 E(ameter)-.15 E F0 +(interacti)144 362.4 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,) +-2.65 F(the v)2.5 E(alue of)-.25 E F1(par)2.5 E(ameter)-.15 E F0 +(is substituted.)2.5 E(${)108 374.4 Q F1(par)A(ameter)-.15 E F2(:+)A F1 +(wor)A(d)-.37 E F0(})A F2 .745(Use Alter)144 386.4 R .745(nate V)-.15 F +(alue)-.92 E F0 5.745(.I)C(f)-5.745 E F1(par)4.495 E(ameter)-.15 E F0 .745(is null or unset, nothing is substituted, otherwise the e)3.975 F -(xpan-)-.15 E(sion of)144 508.8 Q F2(wor)2.84 E(d)-.37 E F0 -(is substituted.)3.27 E(${)108 520.8 Q F2(par)A(ameter)-.15 E F1(:)A F2 -(of)A(fset)-.18 E F0(})A(${)108 532.8 Q F2(par)A(ameter)-.15 E F1(:)A F2 -(of)A(fset)-.18 E F1(:)A F2(length)A F0(})A F1 .002(Substring Expansion) -144 544.8 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F2(length)2.502 -E F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F2(par)2.502 E +(xpan-)-.15 E(sion of)144 398.4 Q F1(wor)2.84 E(d)-.37 E F0 +(is substituted.)3.27 E(${)108 410.4 Q F1(par)A(ameter)-.15 E F2(:)A F1 +(of)A(fset)-.18 E F0(})A(${)108 422.4 Q F1(par)A(ameter)-.15 E F2(:)A F1 +(of)A(fset)-.18 E F2(:)A F1(length)A F0(})A F2 .002(Substring Expansion) +144 434.4 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F1(length)2.502 +E F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F1(par)2.502 E (ameter)-.15 E F0 .002(starting at the)2.502 F 1.082 -(character speci\214ed by)144 556.8 R F2(of)3.582 E(fset)-.18 E F0 6.082 -(.I)C(f)-6.082 E F2(par)3.582 E(ameter)-.15 E F0(is)3.582 E F1(@)3.582 E +(character speci\214ed by)144 446.4 R F1(of)3.582 E(fset)-.18 E F0 6.082 +(.I)C(f)-6.082 E F1(par)3.582 E(ameter)-.15 E F0(is)3.582 E F2(@)3.582 E F0 3.582(,a)C 3.582(ni)-3.582 G(nde)-3.582 E -.15(xe)-.15 G 3.582(da).15 -G 1.082(rray subscripted by)-3.582 F F1(@)3.582 E F0(or)3.581 E F1(*) -3.581 E F0 3.581(,o)C 3.581(ra)-3.581 G(n)-3.581 E(associati)144 568.8 Q +G 1.082(rray subscripted by)-3.582 F F2(@)3.582 E F0(or)3.581 E F2(*) +3.581 E F0 3.581(,o)C 3.581(ra)-3.581 G(n)-3.581 E(associati)144 458.4 Q 1.022 -.15(ve a)-.25 H .722(rray name, the results dif).15 F .722 -(fer as described belo)-.25 F 4.522 -.65(w. I)-.25 H(f).65 E F2(length) +(fer as described belo)-.25 F 4.522 -.65(w. I)-.25 H(f).65 E F1(length) 3.222 E F0 .722(is omitted, e)3.222 F .722(xpands to the)-.15 F .043 -(substring of the v)144 580.8 R .043(alue of)-.25 F F2(par)2.543 E +(substring of the v)144 470.4 R .043(alue of)-.25 F F1(par)2.543 E (ameter)-.15 E F0 .042(starting at the character speci\214ed by)2.543 F -F2(of)2.542 E(fset)-.18 E F0 .042(and e)2.542 F .042(xtending to the) --.15 F .846(end of the v)144 592.8 R(alue.)-.25 E F2(length)5.846 E F0 -(and)3.346 E F2(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F +F1(of)2.542 E(fset)-.18 E F0 .042(and e)2.542 F .042(xtending to the) +-.15 F .846(end of the v)144 482.4 R(alue.)-.25 E F1(length)5.846 E F0 +(and)3.346 E F1(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F .847(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .847(ARITHMETIC EV) -3.347 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 604.8 Q -(w\).)-.25 E(If)144 628.8 Q F2(of)3.029 E(fset)-.18 E F0 -.25(eva)3.029 +3.347 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 494.4 Q +(w\).)-.25 E(If)144 518.4 Q F1(of)3.029 E(fset)-.18 E F0 -.25(eva)3.029 G .529(luates to a number less than zero, the v).25 F .529 (alue is used as an of)-.25 F .529(fset in characters from the)-.25 F -.045(end of the v)144 640.8 R .045(alue of)-.25 F F2(par)2.546 E(ameter) --.15 E F0 5.046(.I)C(f)-5.046 E F2(length)2.546 E F0 -.25(eva)2.546 G +.045(end of the v)144 530.4 R .045(alue of)-.25 F F1(par)2.546 E(ameter) +-.15 E F0 5.046(.I)C(f)-5.046 E F1(length)2.546 E F0 -.25(eva)2.546 G .046(luates to a number less than zero, it is interpreted as an).25 F -(of)144 652.8 Q .203(fset in characters from the end of the v)-.25 F -.202(alue of)-.25 F F2(par)2.702 E(ameter)-.15 E F0 .202 -(rather than a number of characters, and)2.702 F .557(the e)144 664.8 R -.557(xpansion is the characters between)-.15 F F2(of)3.057 E(fset)-.18 E +(of)144 542.4 Q .203(fset in characters from the end of the v)-.25 F +.202(alue of)-.25 F F1(par)2.702 E(ameter)-.15 E F0 .202 +(rather than a number of characters, and)2.702 F .557(the e)144 554.4 R +.557(xpansion is the characters between)-.15 F F1(of)3.057 E(fset)-.18 E F0 .557(and that result.)3.057 F .558(Note that a ne)5.558 F -.05(ga) -.15 G(ti).05 E .858 -.15(ve o)-.25 H -.25(ff).15 G .558(set must be).25 -F(separated from the colon by at least one space to a)144 676.8 Q -.2 -(vo)-.2 G(id being confused with the).2 E F1(:-)2.5 E F0 -.15(ex)2.5 G -(pansion.).15 E(If)144 700.8 Q F2(par)2.959 E(ameter)-.15 E F0(is)2.959 -E F1(@)2.959 E F0 2.959(,t)C .459(he result is)-2.959 F F2(length)2.959 -E F0 .459(positional parameters be)2.959 F .458(ginning at)-.15 F F2(of) +F(separated from the colon by at least one space to a)144 566.4 Q -.2 +(vo)-.2 G(id being confused with the).2 E F2(:-)2.5 E F0 -.15(ex)2.5 G +(pansion.).15 E(If)144 590.4 Q F1(par)2.959 E(ameter)-.15 E F0(is)2.959 +E F2(@)2.959 E F0 2.959(,t)C .459(he result is)-2.959 F F1(length)2.959 +E F0 .459(positional parameters be)2.959 F .458(ginning at)-.15 F F1(of) 2.958 E(fset)-.18 E F0 5.458(.A)C(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15 -(ve)-.25 G F2(of)3.108 E(fset)-.18 E F0 .095(is tak)144 712.8 R .095 -(en relati)-.1 F .396 -.15(ve t)-.25 H 2.596(oo).15 G .096 -(ne greater than the greatest positional parameter)-2.596 F 2.596(,s)-.4 -G 2.596(oa)-2.596 G 2.596(no)-2.596 G -.25(ff)-2.596 G .096(set of -1 e) -.25 F -.25(va)-.25 G .096(luates to).25 F 1.322 -(the last positional parameter)144 724.8 R 6.322(.I)-.55 G 3.822(ti) --6.322 G 3.822(sa)-3.822 G 3.822(ne)-3.822 G 1.322(xpansion error if) --3.972 F F2(length)3.822 E F0 -.25(eva)3.822 G 1.322 -(luates to a number less than).25 F(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(21)192.055 E 0 Cg EP -%%Page: 22 22 +(ve)-.25 G F1(of)3.108 E(fset)-.18 E F0 .6(is tak)144 602.4 R .6 +(en relati)-.1 F .9 -.15(ve t)-.25 H 3.1(oo).15 G .6 +(ne greater than the greatest positional parameter)-3.1 F 3.1(,s)-.4 G +3.1(oa)-3.1 G 3.1(no)-3.1 G -.25(ff)-3.1 G .6(set of \2551 e).25 F -.25 +(va)-.25 G(luates).25 E .64(to the last positional parameter)144 614.4 R +5.64(.I)-.55 G 3.14(ti)-5.64 G 3.14(sa)-3.14 G 3.139(ne)-3.14 G .639 +(xpansion error if)-3.289 F F1(length)3.139 E F0 -.25(eva)3.139 G .639 +(luates to a number less than).25 F(zero.)144 626.4 Q(If)144 650.4 Q F1 +(par)3.013 E(ameter)-.15 E F0 .514(is an inde)3.013 F -.15(xe)-.15 G +3.014(da).15 G .514(rray name subscripted by @ or *, the result is the) +-3.014 F F1(length)3.014 E F0 .514(members of)3.014 F 1.082 +(the array be)144 662.4 R 1.082(ginning with ${)-.15 F F1(par)A(ameter) +-.15 E F0([)A F1(of)A(fset)-.18 E F0 3.582(]}. A)B(ne)3.582 E -.05(ga) +-.15 G(ti).05 E -.15(ve)-.25 G F1(of)3.732 E(fset)-.18 E F0 1.081 +(is tak)3.581 F 1.081(en relati)-.1 F 1.381 -.15(ve t)-.25 H 3.581(oo) +.15 G 1.081(ne greater)-3.581 F 1.079(than the maximum inde)144 674.4 R +3.579(xo)-.15 G 3.579(ft)-3.579 G 1.079(he speci\214ed array)-3.579 F +6.079(.I)-.65 G 3.579(ti)-6.079 G 3.579(sa)-3.579 G 3.58(ne)-3.579 G +1.08(xpansion error if)-3.73 F F1(length)3.58 E F0 -.25(eva)3.58 G 1.08 +(luates to a).25 F(number less than zero.)144 686.4 Q(Substring e)144 +710.4 Q(xpansion applied to an associati)-.15 E .3 -.15(ve a)-.25 H +(rray produces unde\214ned results.).15 E(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(22)188.455 E 0 Cg EP +%%Page: 23 23 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(zero.)144 84 Q(If) -144 108 Q/F1 10/Times-Italic@0 SF(par)3.013 E(ameter)-.15 E F0 .514 -(is an inde)3.013 F -.15(xe)-.15 G 3.014(da).15 G .514 -(rray name subscripted by @ or *, the result is the)-3.014 F F1(length) -3.014 E F0 .514(members of)3.014 F 1.082(the array be)144 120 R 1.082 -(ginning with ${)-.15 F F1(par)A(ameter)-.15 E F0([)A F1(of)A(fset)-.18 -E F0 3.582(]}. A)B(ne)3.582 E -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G F1 -(of)3.732 E(fset)-.18 E F0 1.081(is tak)3.581 F 1.081(en relati)-.1 F -1.381 -.15(ve t)-.25 H 3.581(oo).15 G 1.081(ne greater)-3.581 F 1.079 -(than the maximum inde)144 132 R 3.579(xo)-.15 G 3.579(ft)-3.579 G 1.079 -(he speci\214ed array)-3.579 F 6.079(.I)-.65 G 3.579(ti)-6.079 G 3.579 -(sa)-3.579 G 3.58(ne)-3.579 G 1.08(xpansion error if)-3.73 F F1(length) -3.58 E F0 -.25(eva)3.58 G 1.08(luates to a).25 F(number less than zero.) -144 144 Q(Substring e)144 168 Q(xpansion applied to an associati)-.15 E -.3 -.15(ve a)-.25 H(rray produces unde\214ned results.).15 E 1.931 -(Substring inde)144 192 R 1.931(xing is zero-based unless the positiona\ -l parameters are used, in which case the)-.15 F(inde)144 204 Q .306 -(xing starts at 1 by def)-.15 F 2.806(ault. If)-.1 F F1(of)2.807 E(fset) --.18 E F0 .307(is 0, and the positional parameters are used,)2.807 F/F2 -10/Times-Bold@0 SF($0)2.807 E F0 .307(is pre\214x)2.807 F(ed)-.15 E -(to the list.)144 216 Q(${)108 232.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2 -(*)A F0(})A(${)108 244.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(@)A F0(})A F2 -.085(Names matching pr)144 256.8 R(e\214x)-.18 E F0 5.085(.E)C .084 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.931 +(Substring inde)144 84 R 1.931(xing is zero-based unless the positional\ + parameters are used, in which case the)-.15 F(inde)144 96 Q .306 +(xing starts at 1 by def)-.15 F 2.806(ault. If)-.1 F/F1 10 +/Times-Italic@0 SF(of)2.807 E(fset)-.18 E F0 .307 +(is 0, and the positional parameters are used,)2.807 F/F2 10 +/Times-Bold@0 SF($0)2.807 E F0 .307(is pre\214x)2.807 F(ed)-.15 E +(to the list.)144 108 Q(${)108 124.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2 +(*)A F0(})A(${)108 136.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(@)A F0(})A F2 +.085(Names matching pr)144 148.8 R(e\214x)-.18 E F0 5.085(.E)C .084 (xpands to the names of v)-5.085 F .084(ariables whose names be)-.25 F .084(gin with)-.15 F F1(pr)2.584 E(e\214x)-.37 E F0 2.584(,s)C(epa-) --2.584 E .257(rated by the \214rst character of the)144 268.8 R/F3 9 +-2.584 E .257(rated by the \214rst character of the)144 160.8 R/F3 9 /Times-Bold@0 SF(IFS)2.757 E F0 .257(special v)2.507 F 2.757 (ariable. When)-.25 F F1(@)2.758 E F0 .258(is used and the e)2.758 F -.258(xpansion appears)-.15 F(within double quotes, each v)144 280.8 Q +.258(xpansion appears)-.15 F(within double quotes, each v)144 172.8 Q (ariable name e)-.25 E(xpands to a separate w)-.15 E(ord.)-.1 E(${)108 -297.6 Q F2(!)A F1(name)A F0([)A F1(@)A F0(]})A(${)108 309.6 Q F2(!)A F1 -(name)A F0([)A F1(*)A F0(]})A F2 2.036(List of array k)144 321.6 R(eys) +189.6 Q F2(!)A F1(name)A F0([)A F1(@)A F0(]})A(${)108 201.6 Q F2(!)A F1 +(name)A F0([)A F1(*)A F0(]})A F2 2.036(List of array k)144 213.6 R(eys) -.1 E F0 7.036(.I)C(f)-7.036 E F1(name)4.536 E F0 2.036(is an array v) 4.536 F 2.036(ariable, e)-.25 F 2.036 (xpands to the list of array indices \(k)-.15 F -.15(ey)-.1 G(s\)).15 E -.595(assigned in)144 333.6 R F1(name)3.095 E F0 5.595(.I)C(f)-5.595 E F1 +.595(assigned in)144 225.6 R F1(name)3.095 E F0 5.595(.I)C(f)-5.595 E F1 (name)3.095 E F0 .595(is not an array)3.095 F 3.095(,e)-.65 G .595 (xpands to 0 if)-3.245 F F1(name)3.095 E F0 .596 -(is set and null otherwise.)3.095 F(When)5.596 E F1(@)144 345.6 Q F0 +(is set and null otherwise.)3.095 F(When)5.596 E F1(@)144 237.6 Q F0 (is used and the e)2.5 E(xpansion appears within double quotes, each k) -.15 E .3 -.15(ey ex)-.1 H(pands to a separate w).15 E(ord.)-.1 E(${)108 -362.4 Q F2(#)A F1(par)A(ameter)-.15 E F0(})A F2 -.1(Pa)144 374.4 S .471 +254.4 Q F2(#)A F1(par)A(ameter)-.15 E F0(})A F2 -.1(Pa)144 266.4 S .471 (rameter length).1 F F0 5.471(.T)C .471 (he length in characters of the v)-5.471 F .471(alue of)-.25 F F1(par) 2.971 E(ameter)-.15 E F0 .47(is substituted.)2.97 F(If)5.47 E F1(par) -4.22 E(ame-)-.15 E(ter)144 386.4 Q F0(is)4.438 E F2(*)3.708 E F0(or) +4.22 E(ame-)-.15 E(ter)144 278.4 Q F0(is)4.438 E F2(*)3.708 E F0(or) 3.708 E F2(@)3.708 E F0 3.708(,t)C 1.208(he v)-3.708 F 1.208 (alue substituted is the number of positional parameters.)-.25 F(If) 6.209 E F1(par)4.959 E(ameter)-.15 E F0 1.209(is an)4.439 F .349 -(array name subscripted by)144 398.4 R F2(*)2.849 E F0(or)2.849 E F2(@) +(array name subscripted by)144 290.4 R F2(*)2.849 E F0(or)2.849 E F2(@) 2.849 E F0 2.849(,t)C .349(he v)-2.849 F .349 (alue substituted is the number of elements in the array)-.25 F 5.348 -(.I)-.65 G(f)-5.348 E F1(par)145.25 410.4 Q(ameter)-.15 E F0 .455 +(.I)-.65 G(f)-5.348 E F1(par)145.25 302.4 Q(ameter)-.15 E F0 .455 (is an inde)3.685 F -.15(xe)-.15 G 2.955(da).15 G .456 (rray name subscripted by a ne)-2.955 F -.05(ga)-.15 G(ti).05 E .756 -.15(ve n)-.25 H(umber).15 E 2.956(,t)-.4 G .456 -(hat number is interpreted)-2.956 F .973(as relati)144 422.4 R 1.273 +(hat number is interpreted)-2.956 F .973(as relati)144 314.4 R 1.273 -.15(ve t)-.25 H 3.473(oo).15 G .973(ne greater than the maximum inde) -3.473 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0 3.472(,s)C 3.472(on)-3.472 G -2.25 -.15(eg a)-3.472 H(ti).15 E 1.272 -.15(ve i)-.25 H .972(ndices count back).15 F(from the end of the array) -144 434.4 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 -G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 451.2 Q F1 -(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A(${)108 463.2 Q F1 -(par)A(ameter)-.15 E F2(##)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 475.2 +144 326.4 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 +G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 343.2 Q F1 +(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A(${)108 355.2 Q F1 +(par)A(ameter)-.15 E F2(##)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 367.2 Q 1.396 -.1(ve m)-.1 H 1.196(atching pr).1 F 1.196(e\214x patter)-.18 F (n)-.15 E F0 6.196(.T)C(he)-6.196 E F1(wor)4.036 E(d)-.37 E F0 1.196 (is e)4.466 F 1.196(xpanded to produce a pattern just as in path-)-.15 F -.152(name e)144 487.2 R 2.652(xpansion. If)-.15 F .152 -(the pattern matches the be)2.652 F .152(ginning of the v)-.15 F .152 -(alue of)-.25 F F1(par)2.652 E(ameter)-.15 E F0 2.652(,t).73 G .151 -(hen the result of)-2.652 F 1.4(the e)144 499.2 R 1.4(xpansion is the e) --.15 F 1.4(xpanded v)-.15 F 1.4(alue of)-.25 F F1(par)5.15 E(ameter)-.15 -E F0 1.4(with the shortest matching pattern \(the `)4.63 F(`)-.74 E F2 -(#)A F0 -.74('')C .281(case\) or the longest matching pattern \(the `) -144 511.2 R(`)-.74 E F2(##)A F0 1.761 -.74('' c)D .281(ase\) deleted.) -.74 F(If)5.281 E F1(par)4.031 E(ameter)-.15 E F0(is)3.511 E F2(@)2.781 E -F0(or)2.781 E F2(*)2.781 E F0 2.781(,t)C .281(he pattern)-2.781 F(remo) -144 523.2 Q -.25(va)-.15 G 3.274(lo).25 G .774 +.544(name e)144 379.2 R .544(xpansion, and matched ag)-.15 F .544 +(ainst the e)-.05 F .544(xpanded v)-.15 F .544(alue of)-.25 F F1(par) +4.294 E(ameter)-.15 E F0 .543(using the rules described)3.774 F(under) +144 391.2 Q F2 -.1(Pa)3.221 G(tter).1 E 3.221(nM)-.15 G(atching)-3.221 E +F0(belo)3.221 E 4.521 -.65(w. I)-.25 H 3.221(ft).65 G .721 +(he pattern matches the be)-3.221 F .722(ginning of the v)-.15 F .722 +(alue of)-.25 F F1(par)3.222 E(ameter)-.15 E F0(,).73 E 1.152 +(then the result of the e)144 403.2 R 1.151(xpansion is the e)-.15 F +1.151(xpanded v)-.15 F 1.151(alue of)-.25 F F1(par)4.901 E(ameter)-.15 E +F0 1.151(with the shortest matching)4.381 F .183(pattern \(the `)144 +415.2 R(`)-.74 E F2(#)A F0 1.663 -.74('' c)D .184 +(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(##)A F0 +1.664 -.74('' c)D .184(ase\) deleted.).74 F(If)5.184 E F1(par)3.934 E +(ameter)-.15 E F0(is)3.414 E F2(@)2.684 E F0(or)144 427.2 Q F2(*)3.019 E +F0 3.019(,t)C .518(he pattern remo)-3.019 F -.25(va)-.15 G 3.018(lo).25 +G .518 (peration is applied to each positional parameter in turn, and the e) --3.274 F .774(xpansion is the resul-)-.15 F .402(tant list.)144 535.2 R -(If)5.402 E F1(par)4.152 E(ameter)-.15 E F0 .401(is an array v)3.632 F -.401(ariable subscripted with)-.25 F F2(@)2.901 E F0(or)2.901 E F2(*) -2.901 E F0 2.901(,t)C .401(he pattern remo)-2.901 F -.25(va)-.15 G 2.901 -(lo).25 G(peration)-2.901 E -(is applied to each member of the array in turn, and the e)144 547.2 Q -(xpansion is the resultant list.)-.15 E(${)108 564 Q F1(par)A(ameter) --.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 576 Q F1(par)A(ameter)-.15 -E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 588 Q .346 -.1(ve m)-.1 H -.146(atching suf\214x patter).1 F(n)-.15 E F0 5.146(.T)C(he)-5.146 E F1 -(wor)2.646 E(d)-.37 E F0 .147(is e)2.647 F .147 -(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 600 -S 3.088(pansion. If).15 F .588 -(the pattern matches a trailing portion of the e)3.088 F .588(xpanded v) --.15 F .588(alue of)-.25 F F1(par)3.088 E(ameter)-.15 E F0 3.088(,t).73 -G .588(hen the)-3.088 F .226(result of the e)144 612 R .226 -(xpansion is the e)-.15 F .226(xpanded v)-.15 F .226(alue of)-.25 F F1 -(par)3.976 E(ameter)-.15 E F0 .226 -(with the shortest matching pattern \(the)3.456 F -.74(``)144 624 S F2 -(%).74 E F0 1.522 -.74('' c)D .042 -(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(%%)A F0 -1.522 -.74('' c)D .042(ase\) deleted.).74 F(If)5.042 E F1(par)3.792 E -(ameter)-.15 E F0(is)3.272 E F2(@)2.541 E F0(or)2.541 E F2(*)2.541 E F0 -2.541(,t)C(he)-2.541 E .44(pattern remo)144 636 R -.25(va)-.15 G 2.94 -(lo).25 G .441 -(peration is applied to each positional parameter in turn, and the e) --2.94 F .441(xpansion is the)-.15 F .241(resultant list.)144 648 R(If) -5.241 E F1(par)3.991 E(ameter)-.15 E F0 .241(is an array v)3.471 F .241 -(ariable subscripted with)-.25 F F2(@)2.741 E F0(or)2.74 E F2(*)2.74 E -F0 2.74(,t)C .24(he pattern remo)-2.74 F -.25(va)-.15 G 2.74(lo).25 G -(per)-2.74 E(-)-.2 E -(ation is applied to each member of the array in turn, and the e)144 660 -Q(xpansion is the resultant list.)-.15 E(${)108 676.8 Q F1(par)A(ameter) --.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0(})A F2 -.1(Pa)144 688.8 -S(tter).1 E 3.606(ns)-.15 G(ubstitution)-3.606 E F0 6.106(.T)C(he)-6.106 -E F1(pattern)3.606 E F0 1.106(is e)3.606 F 1.107 -(xpanded to produce a pattern just as in pathname e)-.15 F(xpan-)-.15 E -(sion.)144 700.8 Q F1 -.8(Pa)6.034 G -.15(ra).8 G(meter).15 E F0 1.034 -(is e)3.534 F 1.033(xpanded and the longest match of)-.15 F F1(pattern) -3.533 E F0(ag)3.533 E 1.033(ainst its v)-.05 F 1.033 -(alue is replaced with)-.25 F F1(string)144 712.8 Q F0 5.16(.I)C(f)-5.16 -E F1(pattern)2.66 E F0(be)2.66 E .16(gins with)-.15 F F2(/)2.66 E F0 -2.66(,a)C .161(ll matches of)-2.66 F F1(pattern)2.661 E F0 .161 -(are replaced with)2.661 F F1(string)2.661 E F0 5.161(.N)C .161 -(ormally only the)-5.161 F .807(\214rst match is replaced.)144 724.8 R -(If)5.807 E F1(pattern)3.307 E F0(be)3.307 E .807(gins with)-.15 F F2(#) -3.307 E F0 3.306(,i)C 3.306(tm)-3.306 G .806(ust match at the be)-3.306 -F .806(ginning of the e)-.15 F(xpanded)-.15 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(22)192.055 E 0 Cg EP -%%Page: 23 23 +-3.018 F(xpan-)-.15 E 1.121(sion is the resultant list.)144 439.2 R(If) +6.121 E F1(par)4.871 E(ameter)-.15 E F0 1.121(is an array v)4.351 F +1.121(ariable subscripted with)-.25 F F2(@)3.621 E F0(or)3.621 E F2(*) +3.622 E F0 3.622(,t)C 1.122(he pattern)-3.622 F(remo)144 451.2 Q -.25 +(va)-.15 G 2.53(lo).25 G .03 +(peration is applied to each member of the array in turn, and the e) +-2.53 F .03(xpansion is the resultant)-.15 F(list.)144 463.2 Q(${)108 +480 Q F1(par)A(ameter)-.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 492 +Q F1(par)A(ameter)-.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 +504 Q .346 -.1(ve m)-.1 H .146(atching suf\214x patter).1 F(n)-.15 E F0 +5.146(.T)C(he)-5.146 E F1(wor)2.646 E(d)-.37 E F0 .147(is e)2.647 F .147 +(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 516 +S .459(pansion, and matched ag).15 F .459(ainst the e)-.05 F .459 +(xpanded v)-.15 F .458(alue of)-.25 F F1(par)4.208 E(ameter)-.15 E F0 +.458(using the rules described under)3.688 F F2 -.1(Pa)144 528 S(tter).1 +E 4.592(nM)-.15 G(atching)-4.592 E F0(belo)4.592 E 5.892 -.65(w. I)-.25 +H 4.592(ft).65 G 2.092(he pattern matches a trailing portion of the e) +-4.592 F 2.093(xpanded v)-.15 F 2.093(alue of)-.25 F F1(par)144 540 Q +(ameter)-.15 E F0 3.15(,t).73 G .65(hen the result of the e)-3.15 F .65 +(xpansion is the e)-.15 F .65(xpanded v)-.15 F .65(alue of)-.25 F F1 +(par)4.4 E(ameter)-.15 E F0 .65(with the shortest)3.88 F 1.084 +(matching pattern \(the `)144 552 R(`)-.74 E F2(%)A F0 2.564 -.74('' c)D +1.084(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2 +(%%)A F0 2.565 -.74('' c)D 1.085(ase\) deleted.).74 F(If)6.085 E F1(par) +145.25 564 Q(ameter)-.15 E F0(is)3.39 E F2(@)2.66 E F0(or)2.66 E F2(*) +2.66 E F0 2.66(,t)C .16(he pattern remo)-2.66 F -.25(va)-.15 G 2.659(lo) +.25 G .159(peration is applied to each positional parameter in turn,) +-2.659 F .509(and the e)144 576 R .509(xpansion is the resultant list.) +-.15 F(If)5.509 E F1(par)4.259 E(ameter)-.15 E F0 .51(is an array v) +3.739 F .51(ariable subscripted with)-.25 F F2(@)3.01 E F0(or)3.01 E F2 +(*)3.01 E F0(,)A .423(the pattern remo)144 588 R -.25(va)-.15 G 2.923 +(lo).25 G .422 +(peration is applied to each member of the array in turn, and the e) +-2.923 F .422(xpansion is)-.15 F(the resultant list.)144 600 Q(${)108 +616.8 Q F1(par)A(ameter)-.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0 +(})A F2 -.1(Pa)144 628.8 S(tter).1 E 3.606(ns)-.15 G(ubstitution)-3.606 +E F0 6.106(.T)C(he)-6.106 E F1(pattern)3.606 E F0 1.106(is e)3.606 F +1.107(xpanded to produce a pattern just as in pathname e)-.15 F(xpan-) +-.15 E(sion,)144 640.8 Q F1 -.8(Pa)3.7 G -.15(ra).8 G(meter).15 E F0 1.2 +(is e)3.7 F 1.2(xpanded and the longest match of)-.15 F F1(pattern)3.7 E +F0(ag)3.7 E 1.2(ainst its v)-.05 F 1.2(alue is replaced with)-.25 F F1 +(string)144 652.8 Q F0 5.396(.T)C .396 +(he match is performed using the rules described under)-5.396 F F2 -.1 +(Pa)2.897 G(tter).1 E 2.897(nM)-.15 G(atching)-2.897 E F0(belo)2.897 E +4.197 -.65(w. I)-.25 H(f).65 E F1(pat-)2.897 E(tern)144 664.8 Q F0(be) +2.57 E .07(gins with)-.15 F F2(/)2.57 E F0 2.57(,a)C .07(ll matches of) +-2.57 F F1(pattern)2.57 E F0 .069(are replaced with)2.569 F F1(string) +2.569 E F0 5.069(.N)C .069(ormally only the \214rst match is)-5.069 F +2.579(replaced. If)144 676.8 R F1(pattern)2.579 E F0(be)2.579 E .079 +(gins with)-.15 F F2(#)2.579 E F0 2.579(,i)C 2.579(tm)-2.579 G .079 +(ust match at the be)-2.579 F .08(ginning of the e)-.15 F .08(xpanded v) +-.15 F .08(alue of)-.25 F F1(par)2.58 E(am-)-.15 E(eter)144 688.8 Q F0 +5.762(.I)C(f)-5.762 E F1(pattern)3.262 E F0(be)3.261 E .761(gins with) +-.15 F F2(%)3.261 E F0 3.261(,i)C 3.261(tm)-3.261 G .761 +(ust match at the end of the e)-3.261 F .761(xpanded v)-.15 F .761 +(alue of)-.25 F F1(par)3.261 E(ameter)-.15 E F0 5.761(.I)C(f)-5.761 E F1 +(string)144 700.8 Q F0 .957(is null, matches of)3.457 F F1(pattern)3.457 +E F0 .958(are deleted and the)3.457 F F2(/)3.458 E F0(follo)3.458 E +(wing)-.25 E F1(pattern)3.458 E F0 .958(may be omitted.)3.458 F .958 +(If the)5.958 F F2(nocasematch)144 712.8 Q F0 .492 +(shell option is enabled, the match is performed without re)2.992 F -.05 +(ga)-.15 G .492(rd to the case of alpha-).05 F .883(betic characters.) +144 724.8 R(If)5.883 E F1(par)4.633 E(ameter)-.15 E F0(is)4.113 E F2(@) +3.383 E F0(or)3.383 E F2(*)3.383 E F0 3.383(,t)C .884 +(he substitution operation is applied to each positional)-3.383 F +(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(23)188.455 E 0 Cg EP +%%Page: 24 24 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)144 84 S -.62(lue of).25 F/F1 10/Times-Italic@0 SF(par)3.12 E(ameter)-.15 E F0 -5.62(.I)C(f)-5.62 E F1(pattern)3.12 E F0(be)3.12 E .62(gins with)-.15 F -/F2 10/Times-Bold@0 SF(%)3.12 E F0 3.12(,i)C 3.121(tm)-3.12 G .621 -(ust match at the end of the e)-3.121 F .621(xpanded v)-.15 F .621 -(alue of)-.25 F F1(par)144 96 Q(ameter)-.15 E F0 6.254(.I)C(f)-6.254 E -F1(string)3.754 E F0 1.253(is null, matches of)3.753 F F1(pattern)3.753 -E F0 1.253(are deleted and the)3.753 F F2(/)3.753 E F0(follo)3.753 E -(wing)-.25 E F1(pattern)3.753 E F0 1.253(may be)3.753 F 2.731 -(omitted. If)144 108 R(the)2.731 E F2(nocasematch)2.731 E F0 .231 -(shell option is enabled, the match is performed without re)2.731 F -.05 -(ga)-.15 G .232(rd to the).05 F .188(case of alphabetic characters.)144 -120 R(If)5.188 E F1(par)3.938 E(ameter)-.15 E F0(is)3.418 E F2(@)2.688 E -F0(or)2.688 E F2(*)2.687 E F0 2.687(,t)C .187 -(he substitution operation is applied to each)-2.687 F .445 -(positional parameter in turn, and the e)144 132 R .446 -(xpansion is the resultant list.)-.15 F(If)5.446 E F1(par)4.196 E -(ameter)-.15 E F0 .446(is an array v)3.676 F(ari-)-.25 E .463 -(able subscripted with)144 144 R F2(@)2.963 E F0(or)2.963 E F2(*)2.963 E -F0 2.963(,t)C .462 -(he substitution operation is applied to each member of the array in) --2.963 F(turn, and the e)144 156 Q(xpansion is the resultant list.)-.15 -E(${)108 172.8 Q F1(par)A(ameter)-.15 E F2(^)A F1(pattern)A F0(})A(${) -108 184.8 Q F1(par)A(ameter)-.15 E F2(^^)A F1(pattern)A F0(})A(${)108 -196.8 Q F1(par)A(ameter)-.15 E F2(,)A F1(pattern)A F0(})A(${)108 208.8 Q -F1(par)A(ameter)-.15 E F2(,,)A F1(pattern)A F0(})A F2 .437 -(Case modi\214cation)144 220.8 R F0 5.437(.T)C .437(his e)-5.437 F .438 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.002 +(parameter in turn, and the e)144 84 R 1.002 +(xpansion is the resultant list.)-.15 F(If)6.002 E/F1 10/Times-Italic@0 +SF(par)4.752 E(ameter)-.15 E F0 1.002(is an array v)4.232 F 1.001 +(ariable sub-)-.25 F .158(scripted with)144 96 R/F2 10/Times-Bold@0 SF +(@)2.658 E F0(or)2.659 E F2(*)2.659 E F0 2.659(,t)C .159(he substitutio\ +n operation is applied to each member of the array in turn, and)-2.659 F +(the e)144 108 Q(xpansion is the resultant list.)-.15 E(${)108 124.8 Q +F1(par)A(ameter)-.15 E F2(^)A F1(pattern)A F0(})A(${)108 136.8 Q F1(par) +A(ameter)-.15 E F2(^^)A F1(pattern)A F0(})A(${)108 148.8 Q F1(par)A +(ameter)-.15 E F2(,)A F1(pattern)A F0(})A(${)108 160.8 Q F1(par)A +(ameter)-.15 E F2(,,)A F1(pattern)A F0(})A F2 .438(Case modi\214cation) +144 172.8 R F0 5.438(.T)C .438(his e)-5.438 F .437 (xpansion modi\214es the case of alphabetic characters in)-.15 F F1(par) -2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F1(pattern)144 232.8 Q -F0 1.407(is e)3.907 F 1.407 -(xpanded to produce a pattern just as in pathname e)-.15 F 3.906 -(xpansion. Each)-.15 F 1.406(character in the)3.906 F -.15(ex)144 244.8 -S 1.231(panded v).15 F 1.231(alue of)-.25 F F1(par)3.732 E(ameter)-.15 E +2.937 E(ameter)-.15 E F0 5.437(.T)C(he)-5.437 E F1(pattern)144 184.8 Q +F0 1.406(is e)3.906 F 1.407 +(xpanded to produce a pattern just as in pathname e)-.15 F 3.907 +(xpansion. Each)-.15 F 1.407(character in the)3.907 F -.15(ex)144 196.8 +S 1.232(panded v).15 F 1.232(alue of)-.25 F F1(par)3.732 E(ameter)-.15 E F0 1.232(is tested ag)3.732 F(ainst)-.05 E F1(pattern)3.732 E F0 3.732 (,a)C 1.232(nd, if it matches the pattern, its case is)-3.732 F(con)144 -256.8 Q -.15(ve)-.4 G 2.924(rted. The).15 F .424 +208.8 Q -.15(ve)-.4 G 2.924(rted. The).15 F .424 (pattern should not attempt to match more than one character)2.924 F 5.424(.T)-.55 G(he)-5.424 E F2(^)2.924 E F0 .424(operator con-)2.924 F --.15(ve)144 268.8 S .61(rts lo).15 F .61(wercase letters matching)-.25 F +-.15(ve)144 220.8 S .61(rts lo).15 F .61(wercase letters matching)-.25 F F1(pattern)3.11 E F0 .61(to uppercase; the)3.11 F F2(,)3.11 E F0 .61 (operator con)3.11 F -.15(ve)-.4 G .61(rts matching uppercase).15 F -1.548(letters to lo)144 280.8 R 4.047(wercase. The)-.25 F F2(^^)4.047 E +1.547(letters to lo)144 232.8 R 4.047(wercase. The)-.25 F F2(^^)4.047 E F0(and)4.047 E F2(,,)4.047 E F0 -.15(ex)4.047 G 1.547(pansions con).15 F -.15(ve)-.4 G 1.547(rt each matched character in the e).15 F(xpanded) --.15 E -.25(va)144 292.8 S .633(lue; the).25 F F2(^)3.133 E F0(and)3.133 -E F2(,)3.133 E F0 -.15(ex)3.133 G .633(pansions match and con).15 F -.15 -(ve)-.4 G .634(rt only the \214rst character in the e).15 F .634 -(xpanded v)-.15 F 3.134(alue. If)-.25 F F1(pattern)144 304.8 Q F0 .78 +-.15 E -.25(va)144 244.8 S .634(lue; the).25 F F2(^)3.134 E F0(and)3.134 +E F2(,)3.134 E F0 -.15(ex)3.134 G .634(pansions match and con).15 F -.15 +(ve)-.4 G .633(rt only the \214rst character in the e).15 F .633 +(xpanded v)-.15 F 3.133(alue. If)-.25 F F1(pattern)144 256.8 Q F0 .78 (is omitted, it is treated lik)3.28 F 3.28(ea)-.1 G F2(?)A F0 3.28(,w)C .78(hich matches e)-3.28 F -.15(ve)-.25 G .78(ry character).15 F 5.78 (.I)-.55 G(f)-5.78 E F1(par)4.53 E(ameter)-.15 E F0(is)4.01 E F2(@)3.28 E F0(or)3.28 E F2(*)3.28 E F0(,)A .582(the case modi\214cation operatio\ -n is applied to each positional parameter in turn, and the e)144 316.8 R -(xpansion)-.15 E .469(is the resultant list.)144 328.8 R(If)5.469 E F1 +n is applied to each positional parameter in turn, and the e)144 268.8 R +(xpansion)-.15 E .468(is the resultant list.)144 280.8 R(If)5.468 E F1 (par)4.218 E(ameter)-.15 E F0 .468(is an array v)3.698 F .468 -(ariable subscripted with)-.25 F F2(@)2.968 E F0(or)2.968 E F2(*)2.968 E -F0 2.968(,t)C .468(he case modi\214ca-)-2.968 F(tion operation is appli\ -ed to each member of the array in turn, and the e)144 340.8 Q -(xpansion is the resultant list.)-.15 E(${)108 357.6 Q F1(par)A(ameter) --.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 369.6 S .86 +(ariable subscripted with)-.25 F F2(@)2.968 E F0(or)2.968 E F2(*)2.969 E +F0 2.969(,t)C .469(he case modi\214ca-)-2.969 F(tion operation is appli\ +ed to each member of the array in turn, and the e)144 292.8 Q +(xpansion is the resultant list.)-.15 E(${)108 309.6 Q F1(par)A(ameter) +-.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 321.6 S .86 (rameter transf).1 F(ormation)-.25 E F0 5.86(.T)C .86(he e)-5.86 F .86 (xpansion is either a transformation of the v)-.15 F .86(alue of)-.25 F -F1(par)3.36 E(ameter)-.15 E F0 .154(or information about)144 381.6 R F1 -(par)2.654 E(ameter)-.15 E F0 .153(itself, depending on the v)2.654 F -.153(alue of)-.25 F F1(oper)2.653 E(ator)-.15 E F0 5.153(.E)C(ach)-5.153 -E F1(oper)2.653 E(ator)-.15 E F0 .153(is a sin-)2.653 F(gle letter:)144 -393.6 Q F2(Q)144 417.6 Q F0 1.064(The e)180 417.6 R 1.064 +F1(par)3.36 E(ameter)-.15 E F0 .153(or information about)144 333.6 R F1 +(par)2.653 E(ameter)-.15 E F0 .153(itself, depending on the v)2.653 F +.153(alue of)-.25 F F1(oper)2.653 E(ator)-.15 E F0 5.154(.E)C(ach)-5.154 +E F1(oper)2.654 E(ator)-.15 E F0 .154(is a sin-)2.654 F(gle letter:)144 +345.6 Q F2(Q)144 369.6 Q F0 1.065(The e)180 369.6 R 1.065 (xpansion is a string that is the v)-.15 F 1.065(alue of)-.25 F F1(par) -3.565 E(ameter)-.15 E F0 1.065(quoted in a format that can be)3.565 F -(reused as input.)180 429.6 Q F2(E)144 441.6 Q F0 .441(The e)180 441.6 R +3.565 E(ameter)-.15 E F0 1.064(quoted in a format that can be)3.565 F +(reused as input.)180 381.6 Q F2(E)144 393.6 Q F0 .44(The e)180 393.6 R .441(xpansion is a string that is the v)-.15 F .441(alue of)-.25 F F1 -(par)2.941 E(ameter)-.15 E F0 .44(with backslash escape sequences)2.94 F --.15(ex)180 453.6 S(panded as with the).15 E F2($'...)2.5 E(')-.55 E F0 -(quoting mechansim.)2.5 E F2(P)144 465.6 Q F0 1.072(The e)180 465.6 R +(par)2.941 E(ameter)-.15 E F0 .441(with backslash escape sequences)2.941 +F -.15(ex)180 405.6 S(panded as with the).15 E F2($'...)2.5 E(')-.55 E +F0(quoting mechanism.)2.5 E F2(P)144 417.6 Q F0 1.073(The e)180 417.6 R 1.073(xpansion is a string that is the result of e)-.15 F 1.073 (xpanding the v)-.15 F 1.073(alue of)-.25 F F1(par)3.573 E(ameter)-.15 E -F0 1.073(as if it)3.573 F(were a prompt string \(see)180 477.6 Q F2(PR) -2.5 E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F2(A)144 489.6 Q F0 1.138 -(The e)180 489.6 R 1.138 +F0 1.073(as if it)3.573 F(were a prompt string \(see)180 429.6 Q F2(PR) +2.5 E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F2(A)144 441.6 Q F0 1.137 +(The e)180 441.6 R 1.138 (xpansion is a string in the form of an assignment statement or)-.15 F -F2(declar)3.637 E(e)-.18 E F0(command)3.637 E(that, if e)180 501.6 Q +F2(declar)3.638 E(e)-.18 E F0(command)3.638 E(that, if e)180 453.6 Q -.25(va)-.25 G(luated, will recreate).25 E F1(par)2.5 E(ameter)-.15 E F0 -(with its attrib)2.5 E(utes and v)-.2 E(alue.)-.25 E F2(a)144 513.6 Q F0 -(The e)180 513.6 Q(xpansion is a string consisting of \215ag v)-.15 E +(with its attrib)2.5 E(utes and v)-.2 E(alue.)-.25 E F2(a)144 465.6 Q F0 +(The e)180 465.6 Q(xpansion is a string consisting of \215ag v)-.15 E (alues representing)-.25 E F1(par)2.5 E(ameter)-.15 E F0 1.1 -.55('s a)D -(ttrib).55 E(utes.)-.2 E(If)144 530.4 Q F1(par)5.33 E(ameter)-.15 E F0 -(is)4.81 E F2(@)4.08 E F0(or)4.08 E F2(*)4.08 E F0 4.08(,t)C 1.581 +(ttrib).55 E(utes.)-.2 E(If)144 482.4 Q F1(par)5.331 E(ameter)-.15 E F0 +(is)4.811 E F2(@)4.081 E F0(or)4.081 E F2(*)4.081 E F0 4.081(,t)C 1.58 (he operation is applied to each positional parameter in turn, and the) --4.08 F -.15(ex)144 542.4 S .347(pansion is the resultant list.).15 F -(If)5.347 E F1(par)4.097 E(ameter)-.15 E F0 .346(is an array v)3.577 F -.346(ariable subscripted with)-.25 F F2(@)2.846 E F0(or)2.846 E F2(*) -2.846 E F0 2.846(,t)C .346(he case)-2.846 F 1.204(modi\214cation operat\ -ion is applied to each member of the array in turn, and the e)144 554.4 -R 1.204(xpansion is the)-.15 F(resultant list.)144 566.4 Q 1.85 -(The result of the e)144 590.4 R 1.849(xpansion is subject to w)-.15 F -1.849(ord splitting and pathname e)-.1 F 1.849(xpansion as described) --.15 F(belo)144 602.4 Q -.65(w.)-.25 G F2(Command Substitution)87 619.2 -Q F1 1.697(Command substitution)108 631.2 R F0(allo)4.197 E 1.697 +-4.081 F -.15(ex)144 494.4 S .129(pansion is the resultant list.).15 F +(If)5.129 E F1(par)3.879 E(ameter)-.15 E F0 .129(is an array v)3.359 F +.13(ariable subscripted with)-.25 F F2(@)2.63 E F0(or)2.63 E F2(*)2.63 E +F0 2.63(,t)C .13(he oper)-2.63 F(-)-.2 E +(ation is applied to each member of the array in turn, and the e)144 +506.4 Q(xpansion is the resultant list.)-.15 E 1.85(The result of the e) +144 530.4 R 1.849(xpansion is subject to w)-.15 F 1.849 +(ord splitting and pathname e)-.1 F 1.849(xpansion as described)-.15 F +(belo)144 542.4 Q -.65(w.)-.25 G F2(Command Substitution)87 559.2 Q F1 +1.697(Command substitution)108 571.2 R F0(allo)4.197 E 1.697 (ws the output of a command to replace the command name.)-.25 F 1.698 -(There are tw)6.698 F(o)-.1 E(forms:)108 643.2 Q F2($\()144 660 Q F1 -(command)A F2(\))1.666 E F0(or)108 672 Q F2<92>144 684 Q F1(command)A F2 -<92>A(Bash)108 700.8 Q F0 .089(performs the e)2.589 F .089 +(There are tw)6.698 F(o)-.1 E(forms:)108 583.2 Q F2($\()144 600 Q F1 +(command)A F2(\))1.666 E F0(or)108 612 Q F2<92>144 624 Q F1(command)A F2 +<92>A(Bash)108 640.8 Q F0 .089(performs the e)2.589 F .089 (xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F1(command)2.589 E F0 .088(in a subshell en)2.589 F .088(vironment and replacing the command) -.4 F .41(substitution with the standard output of the command, with an) -108 712.8 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.) +108 652.8 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.) -.25 F .41(Embedded ne)5.41 F(w-)-.25 E .192(lines are not deleted, b) -108 724.8 R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F +108 664.8 R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F -.15(ve)-.15 G 2.692(dd).15 G .192(uring w)-2.692 F .192(ord splitting.) -.1 F .192(The command substitution)5.192 F F2($\(cat)2.691 E F1(\214le) -2.691 E F2(\))A F0(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(23) -192.055 E 0 Cg EP -%%Page: 24 24 +2.691 E F2(\))A F0(can be replaced by the equi)108 676.8 Q -.25(va)-.25 +G(lent b).25 E(ut f)-.2 E(aster)-.1 E F2($\(<)2.5 E F1(\214le)2.5 E F2 +(\))A F0(.)A 1.724(When the old-style backquote form of substitution is\ + used, backslash retains its literal meaning e)108 693.6 R(xcept)-.15 E +.315(when follo)108 705.6 R .315(wed by)-.25 F F2($)2.815 E F0(,)A F2 +<92>2.815 E F0 2.815(,o)C(r)-2.815 E F2(\\)2.815 E F0 5.315(.T)C .314(h\ +e \214rst backquote not preceded by a backslash terminates the command \ +sub-)-5.315 F 3.886(stitution. When)108 717.6 R 1.386(using the $\() +3.886 F F1(command).833 E F0 3.886(\)f)1.666 G 1.387 +(orm, all characters between the parentheses mak)-3.886 F 3.887(eu)-.1 G +3.887(pt)-3.887 G 1.387(he com-)-3.887 F +(mand; none are treated specially)108 729.6 Q(.)-.65 E(GNU Bash 5.0)72 +768 Q(2018 December 7)139.295 E(24)188.455 E 0 Cg EP +%%Page: 25 25 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(can be replaced by the equi)108 84 Q -.25(va)-.25 G(lent b).25 E(ut f) --.2 E(aster)-.1 E/F1 10/Times-Bold@0 SF($\(<)2.5 E/F2 10/Times-Italic@0 -SF(\214le)2.5 E F1(\))A F0(.)A 1.724(When the old-style backquote form \ -of substitution is used, backslash retains its literal meaning e)108 -100.8 R(xcept)-.15 E .315(when follo)108 112.8 R .315(wed by)-.25 F F1 -($)2.815 E F0(,)A F1<92>2.815 E F0 2.815(,o)C(r)-2.815 E F1(\\)2.815 E -F0 5.315(.T)C .314(he \214rst backquote not preceded by a backslash ter\ -minates the command sub-)-5.315 F 3.886(stitution. When)108 124.8 R -1.386(using the $\()3.886 F F2(command).833 E F0 3.886(\)f)1.666 G 1.387 -(orm, all characters between the parentheses mak)-3.886 F 3.887(eu)-.1 G -3.887(pt)-3.887 G 1.387(he com-)-3.887 F -(mand; none are treated specially)108 136.8 Q(.)-.65 E .894 -(Command substitutions may be nested.)108 153.6 R 2.494 -.8(To n)5.894 H +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .894 +(Command substitutions may be nested.)108 84 R 2.494 -.8(To n)5.894 H .894(est when using the backquoted form, escape the inner back-).8 F -(quotes with backslashes.)108 165.6 Q .422 -(If the substitution appears within double quotes, w)108 182.4 R .422 +(quotes with backslashes.)108 96 Q .422 +(If the substitution appears within double quotes, w)108 112.8 R .422 (ord splitting and pathname e)-.1 F .423(xpansion are not performed)-.15 -F(on the results.)108 194.4 Q F1(Arithmetic Expansion)87 211.2 Q F0 -1.035(Arithmetic e)108 223.2 R 1.035(xpansion allo)-.15 F 1.035 -(ws the e)-.25 F -.25(va)-.25 G 1.034(luation of an arithmetic e).25 F -1.034(xpression and the substitution of the result.)-.15 F -(The format for arithmetic e)108 235.2 Q(xpansion is:)-.15 E F1($\(\() -144 252 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A F0(The)108 268.8 Q -F2 -.2(ex)2.665 G(pr).2 E(ession)-.37 E F0 .165 -(is treated as if it were within double quotes, b)2.905 F .166 +F(on the results.)108 124.8 Q/F1 10/Times-Bold@0 SF +(Arithmetic Expansion)87 141.6 Q F0 1.035(Arithmetic e)108 153.6 R 1.035 +(xpansion allo)-.15 F 1.035(ws the e)-.25 F -.25(va)-.25 G 1.034 +(luation of an arithmetic e).25 F 1.034 +(xpression and the substitution of the result.)-.15 F +(The format for arithmetic e)108 165.6 Q(xpansion is:)-.15 E F1($\(\() +144 182.4 Q/F2 10/Times-Italic@0 SF -.2(ex)C(pr).2 E(ession)-.37 E F1 +(\)\))A F0(The)108 199.2 Q F2 -.2(ex)2.665 G(pr).2 E(ession)-.37 E F0 +.165(is treated as if it were within double quotes, b)2.905 F .166 (ut a double quote inside the parentheses is not)-.2 F .231 -(treated specially)108 280.8 R 5.231(.A)-.65 G .231(ll tok)-5.231 F .231 +(treated specially)108 211.2 R 5.231(.A)-.65 G .231(ll tok)-5.231 F .231 (ens in the e)-.1 F .231(xpression under)-.15 F .231(go parameter and v) -.18 F .23(ariable e)-.25 F .23(xpansion, command substi-)-.15 F 1.059 -(tution, and quote remo)108 292.8 R -.25(va)-.15 G 3.559(l. The).25 F +(tution, and quote remo)108 223.2 R -.25(va)-.15 G 3.559(l. The).25 F 1.059(result is treated as the arithmetic e)3.559 F 1.06 (xpression to be e)-.15 F -.25(va)-.25 G 3.56(luated. Arithmetic).25 F --.15(ex)108 304.8 S(pansions may be nested.).15 E 1.379(The e)108 321.6 -R -.25(va)-.25 G 1.378 +-.15(ex)108 235.2 S(pansions may be nested.).15 E 1.379(The e)108 252 R +-.25(va)-.25 G 1.378 (luation is performed according to the rules listed belo).25 F 3.878(wu) -.25 G(nder)-3.878 E/F3 9/Times-Bold@0 SF 1.378(ARITHMETIC EV)3.878 F (ALU)-1.215 E -.855(AT)-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 -(If)5.878 E F2 -.2(ex)108 333.6 S(pr).2 E(ession)-.37 E F0(is in)2.74 E +(If)5.878 E F2 -.2(ex)108 264 S(pr).2 E(ession)-.37 E F0(is in)2.74 E -.25(va)-.4 G(lid,).25 E F1(bash)2.5 E F0(prints a message indicating f) -2.5 E(ailure and no substitution occurs.)-.1 E F1(Pr)87 350.4 Q -(ocess Substitution)-.18 E F2(Pr)108 362.4 Q .405(ocess substitution) +2.5 E(ailure and no substitution occurs.)-.1 E F1(Pr)87 280.8 Q +(ocess Substitution)-.18 E F2(Pr)108 292.8 Q .405(ocess substitution) -.45 F F0(allo)2.905 E .405(ws a process')-.25 F 2.905(si)-.55 G .405 (nput or output to be referred to using a \214lename.)-2.905 F .405 -(It tak)5.405 F .405(es the form)-.1 F(of)108 374.4 Q F1(<\()3.251 E F2 +(It tak)5.405 F .405(es the form)-.1 F(of)108 304.8 Q F1(<\()3.251 E F2 (list)A F1(\)).833 E F0(or)3.251 E F1(>\()3.251 E F2(list)A F1(\)).833 E F0 5.751(.T)C .751(he process)-5.751 F F2(list)3.251 E F0 .751 (is run asynchronously)3.251 F 3.251(,a)-.65 G .751 (nd its input or output appears as a \214lename.)-3.251 F .147 -(This \214lename is passed as an ar)108 386.4 R .148 +(This \214lename is passed as an ar)108 316.8 R .148 (gument to the current command as the result of the e)-.18 F 2.648 (xpansion. If)-.15 F(the)2.648 E F1(>\()2.648 E F2(list)A F1(\)).833 E -F0 .56(form is used, writing to the \214le will pro)108 398.4 R .56 +F0 .56(form is used, writing to the \214le will pro)108 328.8 R .56 (vide input for)-.15 F F2(list)3.059 E F0 5.559(.I)C 3.059(ft)-5.559 G (he)-3.059 E F1(<\()3.059 E F2(list)A F1(\)).833 E F0 .559 -(form is used, the \214le passed as an)3.059 F(ar)108 410.4 Q .308 +(form is used, the \214le passed as an)3.059 F(ar)108 340.8 Q .308 (gument should be read to obtain the output of)-.18 F F2(list)2.808 E F0 5.308(.P)C .309(rocess substitution is supported on systems that sup-) --5.308 F(port named pipes \()108 422.4 Q F2(FIFOs)A F0 2.5(\)o)C 2.5(rt) +-5.308 F(port named pipes \()108 352.8 Q F2(FIFOs)A F0 2.5(\)o)C 2.5(rt) -2.5 G(he)-2.5 E F1(/de)2.5 E(v/fd)-.15 E F0 -(method of naming open \214les.)2.5 E .897(When a)108 439.2 R -.25(va) +(method of naming open \214les.)2.5 E .897(When a)108 369.6 R -.25(va) -.2 G .896(ilable, process substitution is performed simultaneously wit\ h parameter and v).25 F .896(ariable e)-.25 F(xpansion,)-.15 E -(command substitution, and arithmetic e)108 451.2 Q(xpansion.)-.15 E F1 --.75(Wo)87 468 S(rd Splitting).75 E F0 1.142 -(The shell scans the results of parameter e)108 480 R 1.143 +(command substitution, and arithmetic e)108 381.6 Q(xpansion.)-.15 E F1 +-.75(Wo)87 398.4 S(rd Splitting).75 E F0 1.142 +(The shell scans the results of parameter e)108 410.4 R 1.143 (xpansion, command substitution, and arithmetic e)-.15 F 1.143 -(xpansion that)-.15 F(did not occur within double quotes for)108 492 Q +(xpansion that)-.15 F(did not occur within double quotes for)108 422.4 Q F2(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 E F0(.).22 E .063 -(The shell treats each character of)108 508.8 R F3(IFS)2.563 E F0 .063 +(The shell treats each character of)108 439.2 R F3(IFS)2.563 E F0 .063 (as a delimiter)2.313 F 2.563(,a)-.4 G .063 (nd splits the results of the other e)-2.563 F .063(xpansions into w) -.15 F(ords)-.1 E .207(using these characters as \214eld terminators.) -108 520.8 R(If)5.207 E F3(IFS)2.707 E F0 .207(is unset, or its v)2.457 F +108 451.2 R(If)5.207 E F3(IFS)2.707 E F0 .207(is unset, or its v)2.457 F .207(alue is e)-.25 F(xactly)-.15 E F1()2.708 E F0 -(,)A .837(the def)108 532.8 R .837(ault, then sequences of)-.1 F F1 +(,)A .837(the def)108 463.2 R .837(ault, then sequences of)-.1 F F1 ()3.337 E F0(,)A F1()3.337 E F0 3.337(,a)C(nd)-3.337 E F1 ()3.337 E F0 .836(at the be)3.336 F .836 -(ginning and end of the results of)-.15 F .345(the pre)108 544.8 R .345 +(ginning and end of the results of)-.15 F .345(the pre)108 475.2 R .345 (vious e)-.25 F .345(xpansions are ignored, and an)-.15 F 2.845(ys)-.15 G .345(equence of)-2.845 F F3(IFS)2.845 E F0 .345 (characters not at the be)2.595 F .345(ginning or end serv)-.15 F(es) --.15 E 1.237(to delimit w)108 556.8 R 3.737(ords. If)-.1 F F3(IFS)3.737 +-.15 E 1.237(to delimit w)108 487.2 R 3.737(ords. If)-.1 F F3(IFS)3.737 E F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.236 (ault, then sequences of the whitespace characters)-.1 F F1(space)108 -568.8 Q F0(,)A F1(tab)2.506 E F0 2.506(,a)C(nd)-2.506 E F1(newline)2.506 +499.2 Q F0(,)A F1(tab)2.506 E F0 2.506(,a)C(nd)-2.506 E F1(newline)2.506 E F0 .006(are ignored at the be)2.506 F .006(ginning and end of the w) -.15 F .007(ord, as long as the whitespace charac-)-.1 F .921 -(ter is in the v)108 580.8 R .92(alue of)-.25 F F3(IFS)3.42 E F0(\(an) +(ter is in the v)108 511.2 R .92(alue of)-.25 F F3(IFS)3.42 E F0(\(an) 3.17 E F3(IFS)3.42 E F0 .92(whitespace character\).)3.17 F(An)5.92 E 3.42(yc)-.15 G .92(haracter in)-3.42 F F3(IFS)3.42 E F0 .92(that is not) -3.17 F F3(IFS)3.42 E F0(whitespace,)3.17 E .428(along with an)108 592.8 +3.17 F F3(IFS)3.42 E F0(whitespace,)3.17 E .428(along with an)108 523.2 R 2.928(ya)-.15 G(djacent)-2.928 E F3(IFS)2.928 E F0 .428 (whitespace characters, delimits a \214eld.)2.678 F 2.928(As)5.428 G .428(equence of)-2.928 F F3(IFS)2.928 E F0 .429(whitespace charac-)2.679 -F(ters is also treated as a delimiter)108 604.8 Q 5(.I)-.55 G 2.5(ft)-5 +F(ters is also treated as a delimiter)108 535.2 Q 5(.I)-.55 G 2.5(ft)-5 G(he v)-2.5 E(alue of)-.25 E F3(IFS)2.5 E F0(is null, no w)2.25 E -(ord splitting occurs.)-.1 E 1.927(Explicit null ar)108 621.6 R 1.927 +(ord splitting occurs.)-.1 E 1.927(Explicit null ar)108 552 R 1.927 (guments \()-.18 F F1 .833("").833 G F0(or)3.594 E F1 .833<0808>5.26 G F0 4.427(\)a)C 1.927 (re retained and passed to commands as empty strings.)-4.427 F(Unquoted) -6.927 E .484(implicit null ar)108 633.6 R .484 +6.927 E .484(implicit null ar)108 564 R .484 (guments, resulting from the e)-.18 F .484 (xpansion of parameters that ha)-.15 F .785 -.15(ve n)-.2 H 2.985(ov).15 G .485(alues, are remo)-3.235 F -.15(ve)-.15 G 2.985(d. If).15 F(a)2.985 -E 1.572(parameter with no v)108 645.6 R 1.572(alue is e)-.25 F 1.571 +E 1.572(parameter with no v)108 576 R 1.572(alue is e)-.25 F 1.571 (xpanded within double quotes, a null ar)-.15 F 1.571 (gument results and is retained and)-.18 F .723 -(passed to a command as an empty string.)108 657.6 R .724 +(passed to a command as an empty string.)108 588 R .724 (When a quoted null ar)5.724 F .724(gument appears as part of a w)-.18 F -.724(ord whose)-.1 F -.15(ex)108 669.6 S .176 +.724(ord whose)-.1 F -.15(ex)108 600 S .176 (pansion is non-null, the null ar).15 F .176(gument is remo)-.18 F -.15 (ve)-.15 G 2.676(d. That).15 F .176(is, the w)2.676 F(ord)-.1 E/F5 10 /Courier@0 SF -5.1672.676 F F0(becomes)2.675 E F52.675 -E F0 .175(after w)2.675 F .175(ord split-)-.1 F(ting and null ar)108 -681.6 Q(gument remo)-.18 E -.25(va)-.15 G(l.).25 E(Note that if no e)108 -698.4 Q(xpansion occurs, no splitting is performed.)-.15 E(GNU Bash 4.4) -72 768 Q(2016 August 26)142.895 E(24)192.055 E 0 Cg EP -%%Page: 25 25 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF -.1(Pa)87 84 S(thname Expansion).1 E F0 .37(After w)108 96 R .37 +E F0 .175(after w)2.675 F .175(ord split-)-.1 F(ting and null ar)108 612 +Q(gument remo)-.18 E -.25(va)-.15 G(l.).25 E(Note that if no e)108 628.8 +Q(xpansion occurs, no splitting is performed.)-.15 E F1 -.1(Pa)87 645.6 +S(thname Expansion).1 E F0 .37(After w)108 657.6 R .37 (ord splitting, unless the)-.1 F F12.87 E F0 .37 (option has been set,)2.87 F F1(bash)2.87 E F0 .371(scans each w)2.871 F .371(ord for the characters)-.1 F F1(*)2.871 E F0(,)A F1(?)2.871 E F0 2.871(,a)C(nd)-2.871 E F1([)2.871 E F0(.)A .678 -(If one of these characters appears, then the w)108 108 R .677 -(ord is re)-.1 F -.05(ga)-.15 G .677(rded as a).05 F/F2 10 -/Times-Italic@0 SF(pattern)3.177 E F0 3.177(,a).24 G .677 -(nd replaced with an alphabeti-)-3.177 F .562 -(cally sorted list of \214lenames matching the pattern \(see)108 120 R -/F3 9/Times-Bold@0 SF -.09(Pa)3.062 G(tter).09 E 2.812(nM)-.135 G -(atching)-2.812 E F0(belo)2.812 E 3.062(w\). If)-.25 F .562 -(no matching \214lenames)3.062 F .009(are found, and the shell option) -108 132 R F1(nullglob)2.509 E F0 .008(is not enabled, the w)2.509 F .008 -(ord is left unchanged.)-.1 F .008(If the)5.008 F F1(nullglob)2.508 E F0 -.008(option is)2.508 F .442(set, and no matches are found, the w)108 144 -R .442(ord is remo)-.1 F -.15(ve)-.15 G 2.942(d. If).15 F(the)2.943 E F1 -(failglob)2.943 E F0 .443(shell option is set, and no matches are)2.943 -F 1.38(found, an error message is printed and the command is not e)108 -156 R -.15(xe)-.15 G 3.88(cuted. If).15 F 1.38(the shell option)3.88 F -F1(nocaseglob)3.88 E F0(is)3.88 E .103 -(enabled, the match is performed without re)108 168 R -.05(ga)-.15 G +(If one of these characters appears, then the w)108 669.6 R .677 +(ord is re)-.1 F -.05(ga)-.15 G .677(rded as a).05 F F2(pattern)3.177 E +F0 3.177(,a).24 G .677(nd replaced with an alphabeti-)-3.177 F .562 +(cally sorted list of \214lenames matching the pattern \(see)108 681.6 R +F3 -.09(Pa)3.062 G(tter).09 E 2.812(nM)-.135 G(atching)-2.812 E F0(belo) +2.812 E 3.062(w\). If)-.25 F .562(no matching \214lenames)3.062 F .009 +(are found, and the shell option)108 693.6 R F1(nullglob)2.509 E F0 .008 +(is not enabled, the w)2.509 F .008(ord is left unchanged.)-.1 F .008 +(If the)5.008 F F1(nullglob)2.508 E F0 .008(option is)2.508 F .442 +(set, and no matches are found, the w)108 705.6 R .442(ord is remo)-.1 F +-.15(ve)-.15 G 2.942(d. If).15 F(the)2.943 E F1(failglob)2.943 E F0 .443 +(shell option is set, and no matches are)2.943 F 1.38 +(found, an error message is printed and the command is not e)108 717.6 R +-.15(xe)-.15 G 3.88(cuted. If).15 F 1.38(the shell option)3.88 F F1 +(nocaseglob)3.88 E F0(is)3.88 E .103 +(enabled, the match is performed without re)108 729.6 R -.05(ga)-.15 G .104(rd to the case of alphabetic characters.).05 F .104 -(When a pattern is used)5.104 F .378(for pathname e)108 180 R .378 -(xpansion, the character)-.15 F F1 -.63(``)2.878 G -.55(.').63 G(')-.08 -E F0 .378(at the start of a name or immediately follo)5.378 F .377 -(wing a slash must be)-.25 F .578(matched e)108 192 R(xplicitly)-.15 E -3.078(,u)-.65 G .578(nless the shell option)-3.078 F F1(dotglob)3.079 E -F0 .579(is set.)3.079 F .579 -(When matching a pathname, the slash character)5.579 F 1.789(must al)108 -204 R -.1(wa)-.1 G 1.788(ys be matched e).1 F(xplicitly)-.15 E 6.788(.I) --.65 G 4.288(no)-6.788 G 1.788(ther cases, the)-4.288 F F1 -.63(``)4.288 -G -.55(.').63 G(')-.08 E F0 1.788(character is not treated specially) -6.788 F 6.788(.S)-.65 G 1.788(ee the)-6.788 F .165(description of)108 -216 R F1(shopt)2.665 E F0(belo)2.665 E 2.665(wu)-.25 G(nder)-2.665 E F3 -.165(SHELL B)2.665 F(UIL)-.09 E .165(TIN COMMANDS)-.828 F F0 .166 -(for a description of the)2.415 F F1(nocaseglob)2.666 E F0(,)A F1(null-) -2.666 E(glob)108 228 Q F0(,)A F1(failglob)2.5 E F0 2.5(,a)C(nd)-2.5 E F1 -(dotglob)2.5 E F0(shell options.)2.5 E(The)108 244.8 Q F3(GLOBIGNORE) -2.786 E F0 .286(shell v)2.536 F .285 -(ariable may be used to restrict the set of \214lenames matching a)-.25 -F F2(pattern)2.785 E F0 5.285(.I).24 G(f)-5.285 E F3(GLO-)2.785 E -(BIGNORE)108 256.8 Q F0 2.316(is set, each matching \214lename that als\ -o matches one of the patterns in)4.565 F F3(GLOBIGNORE)4.816 E F0(is) -4.566 E(remo)108 268.8 Q -.15(ve)-.15 G 3.915(df).15 G 1.415 -(rom the list of matches.)-3.915 F 1.415(If the)6.415 F F1(nocaseglob) -3.915 E F0 1.415(option is set, the matching ag)3.915 F 1.414 -(ainst the patterns in)-.05 F F3(GLOBIGNORE)108 280.8 Q F0 .146 +(When a pattern is used)5.104 F(GNU Bash 5.0)72 768 Q(2018 December 7) +139.295 E(25)188.455 E 0 Cg EP +%%Page: 26 26 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .378 +(for pathname e)108 84 R .378(xpansion, the character)-.15 F/F1 10 +/Times-Bold@0 SF -.63(``)2.878 G -.55(.').63 G(')-.08 E F0 .378 +(at the start of a name or immediately follo)5.378 F .377 +(wing a slash must be)-.25 F 1.353(matched e)108 96 R(xplicitly)-.15 E +3.853(,u)-.65 G 1.353(nless the shell option)-3.853 F F1(dotglob)3.854 E +F0 1.354(is set.)3.854 F 1.354(The \214lenames)6.354 F F1 -.63(``)3.854 +G -.55(.').63 G(')-.08 E F0(and)6.354 E F1 -.63(``)3.854 G(..).63 E -.63 +('')-.55 G F0 1.354(must al)6.984 F -.1(wa)-.1 G 1.354(ys be).1 F .486 +(matched e)108 108 R(xplicitly)-.15 E 2.986(,e)-.65 G -.15(ve)-3.236 G +2.986(ni).15 G(f)-2.986 E F1(dotglob)2.986 E F0 .485(is set.)2.986 F +.485(In other cases, the)5.485 F F1 -.63(``)2.985 G -.55(.').63 G(')-.08 +E F0 .485(character is not treated specially)5.485 F 5.485(.W)-.65 G +(hen)-5.485 E .114(matching a pathname, the slash character must al)108 +120 R -.1(wa)-.1 G .114(ys be matched e).1 F .115 +(xplicitly by a slash in the pattern, b)-.15 F .115(ut in)-.2 F .581 +(other matching conte)108 132 R .581 +(xts it can be matched by a special pattern character as described belo) +-.15 F 3.081(wu)-.25 G(nder)-3.081 E/F2 9/Times-Bold@0 SF -.09(Pa)3.081 +G(tter).09 E(n)-.135 E(Matching)108 144 Q/F3 9/Times-Roman@0 SF(.)A F0 +.072(See the description of)4.572 F F1(shopt)2.572 E F0(belo)2.572 E +2.572(wu)-.25 G(nder)-2.572 E F2 .073(SHELL B)2.572 F(UIL)-.09 E .073 +(TIN COMMANDS)-.828 F F0 .073(for a description of the)2.323 F F1 +(nocaseglob)108 156 Q F0(,)A F1(nullglob)2.5 E F0(,)A F1(failglob)2.5 E +F0 2.5(,a)C(nd)-2.5 E F1(dotglob)2.5 E F0(shell options.)2.5 E(The)108 +172.8 Q F2(GLOBIGNORE)2.631 E F0 .131(shell v)2.381 F .131 +(ariable may be used to restrict the set of \214le names matching a)-.25 +F/F4 10/Times-Italic@0 SF(pattern)2.63 E F0 5.13(.I).24 G(f)-5.13 E F2 +(GLO-)2.63 E(BIGNORE)108 184.8 Q F0 2.015(is set, each matching \214le \ +name that also matches one of the patterns in)4.264 F F2(GLOBIGNORE) +4.515 E F0(is)4.265 E(remo)108 196.8 Q -.15(ve)-.15 G 3.915(df).15 G +1.415(rom the list of matches.)-3.915 F 1.415(If the)6.415 F F1 +(nocaseglob)3.915 E F0 1.415(option is set, the matching ag)3.915 F +1.414(ainst the patterns in)-.05 F F2(GLOBIGNORE)108 208.8 Q F0 .146 (is performed without re)2.396 F -.05(ga)-.15 G .146(rd to case.).05 F .146(The \214lenames)5.146 F F1 -.63(``)2.646 G -.55(.').63 G(')-.08 E F0(and)5.147 E F1 -.63(``)2.647 G(..).63 E -.63('')-.55 G F0 .147 -(are al)5.777 F -.1(wa)-.1 G .147(ys ignored when).1 F F3(GLOBIGNORE)108 -292.8 Q F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15 -(ve)-.25 G 1.627 -.4(r, s).15 H(etting).4 E F3(GLOBIGNORE)3.327 E F0 +(are al)5.777 F -.1(wa)-.1 G .147(ys ignored when).1 F F2(GLOBIGNORE)108 +220.8 Q F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15 +(ve)-.25 G 1.627 -.4(r, s).15 H(etting).4 E F2(GLOBIGNORE)3.327 E F0 .827(to a non-null v)3.077 F .827(alue has the ef)-.25 F .827(fect of) --.25 F .682(enabling the)108 304.8 R F1(dotglob)3.182 E F0 .682 +-.25 F .682(enabling the)108 232.8 R F1(dotglob)3.182 E F0 .682 (shell option, so all other \214lenames be)3.182 F .682(ginning with a) -.15 F F1 -.63(``)3.182 G -.55(.').63 G(')-.08 E F0 .682(will match.) -5.682 F 2.283 -.8(To g)5.683 H .683(et the old).8 F(beha)108 316.8 Q +5.682 F 2.283 -.8(To g)5.683 H .683(et the old).8 F(beha)108 244.8 Q 1.185(vior of ignoring \214lenames be)-.2 F 1.185(ginning with a)-.15 F F1 -.63(``)3.684 G -.55(.').63 G(')-.08 E F0 3.684(,m)C(ak)-3.684 E(e) -.1 E F1 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.184 -(one of the patterns in)6.184 F F3(GLOBIGNORE)3.684 E/F4 9/Times-Roman@0 -SF(.)A F0(The)108 328.8 Q F1(dotglob)3.131 E F0 .631 -(option is disabled when)3.131 F F3(GLOBIGNORE)3.132 E F0 .632 -(is unset.)2.882 F .632(The pattern matching honors the setting of)5.632 -F(the)108 340.8 Q F1(extglob)2.5 E F0(shell option.)2.5 E F1 -.1(Pa)108 -357.6 S(tter).1 E 2.5(nM)-.15 G(atching)-2.5 E F0(An)108 374.4 Q 3.138 -(yc)-.15 G .638(haracter that appears in a pattern, other than the spec\ -ial pattern characters described belo)-3.138 F 1.938 -.65(w, m)-.25 H -(atches).65 E 3.62(itself. The)108 386.4 R 1.12 -(NUL character may not occur in a pattern.)3.62 F 3.62(Ab)6.12 G 1.12 -(ackslash escapes the follo)-3.62 F 1.12(wing character; the)-.25 F .576 -(escaping backslash is discarded when matching.)108 398.4 R .576 +(one of the patterns in)6.184 F F2(GLOBIGNORE)3.684 E F3(.)A F0(The)108 +256.8 Q F1(dotglob)3.131 E F0 .631(option is disabled when)3.131 F F2 +(GLOBIGNORE)3.132 E F0 .632(is unset.)2.882 F .632 +(The pattern matching honors the setting of)5.632 F(the)108 268.8 Q F1 +(extglob)2.5 E F0(shell option.)2.5 E F1 -.1(Pa)108 285.6 S(tter).1 E +2.5(nM)-.15 G(atching)-2.5 E F0(An)108 302.4 Q 3.138(yc)-.15 G .638(har\ +acter that appears in a pattern, other than the special pattern charact\ +ers described belo)-3.138 F 1.938 -.65(w, m)-.25 H(atches).65 E 3.62 +(itself. The)108 314.4 R 1.12(NUL character may not occur in a pattern.) +3.62 F 3.62(Ab)6.12 G 1.12(ackslash escapes the follo)-3.62 F 1.12 +(wing character; the)-.25 F .576 +(escaping backslash is discarded when matching.)108 326.4 R .576 (The special pattern characters must be quoted if the)5.576 F 3.076(ya) --.15 G(re)-3.076 E(to be matched literally)108 410.4 Q(.)-.65 E -(The special pattern characters ha)108 427.2 Q .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E F1(*)144 444 Q F0 .376(Matches an) -180 444 R 2.876(ys)-.15 G .376(tring, including the null string.)-2.876 +-.15 G(re)-3.076 E(to be matched literally)108 338.4 Q(.)-.65 E +(The special pattern characters ha)108 355.2 Q .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F1(*)144 372 Q F0 .376(Matches an) +180 372 R 2.876(ys)-.15 G .376(tring, including the null string.)-2.876 F .376(When the)5.376 F F1(globstar)2.876 E F0 .377 -(shell option is enabled,)2.876 F(and)180 456 Q F1(*)3.275 E F0 .775 +(shell option is enabled,)2.876 F(and)180 384 Q F1(*)3.275 E F0 .775 (is used in a pathname e)3.275 F .775(xpansion conte)-.15 F .775(xt, tw) -.15 F 3.275(oa)-.1 G(djacent)-3.275 E F1(*)3.275 E F0 3.275(su)C .775 (sed as a single pattern)-3.275 F 1.058(will match all \214les and zero\ - or more directories and subdirectories.)180 468 R 1.058(If follo)6.058 -F 1.058(wed by a)-.25 F F1(/)3.558 E F0(,)A(tw)180 480 Q 2.5(oa)-.1 G + or more directories and subdirectories.)180 396 R 1.058(If follo)6.058 +F 1.058(wed by a)-.25 F F1(/)3.558 E F0(,)A(tw)180 408 Q 2.5(oa)-.1 G (djacent)-2.5 E F1(*)2.5 E F0 2.5(sw)C -(ill match only directories and subdirectories.)-2.5 E F1(?)144 492 Q F0 -(Matches an)180 492 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F1 -([...])144 504 Q F0 .579(Matches an)180 504 R 3.079(yo)-.15 G .579 +(ill match only directories and subdirectories.)-2.5 E F1(?)144 420 Q F0 +(Matches an)180 420 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F1 +([...])144 432 Q F0 .579(Matches an)180 432 R 3.079(yo)-.15 G .579 (ne of the enclosed characters.)-3.079 F 3.079(Ap)5.579 G .578 (air of characters separated by a h)-3.079 F(yphen)-.05 E .684 -(denotes a)180 516 R F2 -.15(ra)3.184 G(ng).15 E 3.184(ee)-.1 G(xpr) +(denotes a)180 444 R F4 -.15(ra)3.184 G(ng).15 E 3.184(ee)-.1 G(xpr) -3.384 E(ession)-.37 E F0 3.184(;a)C .984 -.15(ny c)-3.184 H .684 (haracter that f).15 F .684(alls between those tw)-.1 F 3.185(oc)-.1 G -.685(haracters, inclu-)-3.185 F(si)180 528 Q -.15(ve)-.25 G 3.713(,u).15 +.685(haracters, inclu-)-3.185 F(si)180 456 Q -.15(ve)-.25 G 3.713(,u).15 G 1.213(sing the current locale')-3.713 F 3.712(sc)-.55 G 1.212 (ollating sequence and character set, is matched.)-3.712 F 1.212(If the) -6.212 F 1.123(\214rst character follo)180 540 R 1.123(wing the)-.25 F F1 +6.212 F 1.123(\214rst character follo)180 468 R 1.123(wing the)-.25 F F1 ([)3.623 E F0 1.123(is a)3.623 F F1(!)3.623 E F0 1.124(or a)6.123 F F1 (^)3.624 E F0 1.124(then an)3.624 F 3.624(yc)-.15 G 1.124 (haracter not enclosed is matched.)-3.624 F .895 -(The sorting order of characters in range e)180 552 R .894 +(The sorting order of characters in range e)180 480 R .894 (xpressions is determined by the current locale)-.15 F .375(and the v) -180 564 R .375(alues of the)-.25 F F3(LC_COLLA)2.875 E(TE)-.855 E F0(or) -2.625 E F3(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375 +180 492 R .375(alues of the)-.25 F F2(LC_COLLA)2.875 E(TE)-.855 E F0(or) +2.625 E F2(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375 (ariables, if set.)-.25 F 1.976 -.8(To o)5.376 H .376(btain the tra-).8 -F .068(ditional interpretation of range e)180 576 R .068 +F .068(ditional interpretation of range e)180 504 R .068 (xpressions, where)-.15 F F1([a\255d])2.568 E F0 .067(is equi)2.567 F -.25(va)-.25 G .067(lent to).25 F F1([abcd])2.567 E F0 2.567(,s)C .067 -(et v)-2.567 F(alue)-.25 E .156(of the)180 588 R F1(LC_ALL)2.656 E F0 +(et v)-2.567 F(alue)-.25 E .156(of the)180 516 R F1(LC_ALL)2.656 E F0 .156(shell v)2.656 F .156(ariable to)-.25 F F1(C)2.657 E F0 2.657(,o)C 2.657(re)-2.657 G .157(nable the)-2.657 F F1(globasciiranges)2.657 E F0 .157(shell option.)2.657 F(A)5.157 E F12.657 E F0(may)2.657 E .193(\ be matched by including it as the \214rst or last character in the set.) -180 600 R(A)5.193 E F1(])2.693 E F0 .193(may be matched by)2.693 F -(including it as the \214rst character in the set.)180 612 Q -.4(Wi)180 -630 S(thin).4 E F1([)3.07 E F0(and)3.07 E F1(])3.07 E F0(,)A F2 -.15(ch) +180 528 R(A)5.193 E F1(])2.693 E F0 .193(may be matched by)2.693 F +(including it as the \214rst character in the set.)180 540 Q -.4(Wi)180 +558 S(thin).4 E F1([)3.07 E F0(and)3.07 E F1(])3.07 E F0(,)A F4 -.15(ch) 3.07 G(ar).15 E .571(acter classes)-.15 F F0 .571 -(can be speci\214ed using the syntax)3.071 F F1([:)3.071 E F2(class)A F1 -(:])A F0 3.071(,w)C(here)-3.071 E F2(class)3.071 E F0 -(is one of the follo)180 642 Q +(can be speci\214ed using the syntax)3.071 F F1([:)3.071 E F4(class)A F1 +(:])A F0 3.071(,w)C(here)-3.071 E F4(class)3.071 E F0 +(is one of the follo)180 570 Q (wing classes de\214ned in the POSIX standard:)-.25 E F1 8.173 -(alnum alpha ascii blank cntrl digit graph lo)180 654 R 8.173 -(wer print punct space)-.1 F 5(upper w)180 666 R 5(ord xdigit)-.1 F F0 -4.289(Ac)180 678 S 1.789(haracter class matches an)-4.289 F 4.289(yc) +(alnum alpha ascii blank cntrl digit graph lo)180 582 R 8.173 +(wer print punct space)-.1 F 5(upper w)180 594 R 5(ord xdigit)-.1 F F0 +4.289(Ac)180 606 S 1.789(haracter class matches an)-4.289 F 4.289(yc) -.15 G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E F1 -.1(wo)4.29 G(rd).1 E F0(character)4.29 E -(class matches letters, digits, and the character _.)180 690 Q -.4(Wi) -180 708 S(thin).4 E F1([)4.537 E F0(and)4.537 E F1(])4.537 E F0 4.537 -(,a)C(n)-4.537 E F2 2.037(equivalence class)4.537 F F0 2.036 -(can be speci\214ed using the syntax)4.536 F F1([=)4.536 E F2(c)A F1(=]) +(class matches letters, digits, and the character _.)180 618 Q -.4(Wi) +180 636 S(thin).4 E F1([)4.537 E F0(and)4.537 E F1(])4.537 E F0 4.537 +(,a)C(n)-4.537 E F4 2.037(equivalence class)4.537 F F0 2.036 +(can be speci\214ed using the syntax)4.536 F F1([=)4.536 E F4(c)A F1(=]) A F0 4.536(,w)C(hich)-4.536 E .125(matches all characters with the same\ - collation weight \(as de\214ned by the current locale\) as)180 720 R -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(25)192.055 E 0 Cg EP -%%Page: 26 26 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(the character)180 -84 Q/F1 10/Times-Italic@0 SF(c)2.5 E F0(.)A -.4(Wi)180 102 S(thin).4 E -/F2 10/Times-Bold@0 SF([)2.5 E F0(and)2.5 E F2(])2.5 E F0 2.5(,t)C -(he syntax)-2.5 E F2([.)2.5 E F1(symbol)A F2(.])A F0 -(matches the collating symbol)2.5 E F1(symbol)2.5 E F0(.)A .705(If the) -108 118.8 R F2(extglob)3.205 E F0 .705 -(shell option is enabled using the)3.205 F F2(shopt)3.205 E F0 -.2(bu) + collation weight \(as de\214ned by the current locale\) as)180 648 R +(the character)180 660 Q F4(c)2.5 E F0(.)A -.4(Wi)180 678 S(thin).4 E F1 +([)2.5 E F0(and)2.5 E F1(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F1([.)2.5 +E F4(symbol)A F1(.])A F0(matches the collating symbol)2.5 E F4(symbol) +2.5 E F0(.)A .705(If the)108 694.8 R F1(extglob)3.205 E F0 .705 +(shell option is enabled using the)3.205 F F1(shopt)3.205 E F0 -.2(bu) 3.205 G .704(iltin, se).2 F -.15(ve)-.25 G .704(ral e).15 F .704 (xtended pattern matching operators)-.15 F .255(are recognized.)108 -130.8 R .255(In the follo)5.255 F .255(wing description, a)-.25 F F1 +706.8 R .255(In the follo)5.255 F .255(wing description, a)-.25 F F4 (pattern-list)2.755 E F0 .255 -(is a list of one or more patterns separated by a)2.755 F F2(|)2.756 E +(is a list of one or more patterns separated by a)2.755 F F1(|)2.756 E F0(.)A(Composite patterns may be formed using one or more of the follo) -108 142.8 Q(wing sub-patterns:)-.25 E F2(?\()144 166.8 Q F1 -(pattern-list).833 E F2(\)).833 E F0 -(Matches zero or one occurrence of the gi)180 178.8 Q -.15(ve)-.25 G 2.5 -(np).15 G(atterns)-2.5 E F2(*\()144 190.8 Q F1(pattern-list).833 E F2 -(\)).833 E F0(Matches zero or more occurrences of the gi)180 202.8 Q --.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F2(+\()144 214.8 Q F1 -(pattern-list).833 E F2(\)).833 E F0 -(Matches one or more occurrences of the gi)180 226.8 Q -.15(ve)-.25 G -2.5(np).15 G(atterns)-2.5 E F2(@\()144 238.8 Q F1(pattern-list).833 E F2 -(\)).833 E F0(Matches one of the gi)180 250.8 Q -.15(ve)-.25 G 2.5(np) -.15 G(atterns)-2.5 E F2(!\()144 262.8 Q F1(pattern-list).833 E F2(\)) -.833 E F0(Matches an)180 274.8 Q(ything e)-.15 E(xcept one of the gi) --.15 E -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F2(Quote Remo)87 291.6 -Q -.1(va)-.1 G(l).1 E F0 1.113(After the preceding e)108 303.6 R 1.113 -(xpansions, all unquoted occurrences of the characters)-.15 F F2(\\) -3.613 E F0(,)A F2<08>3.612 E F0 3.612(,a)C(nd)-3.612 E F2(")4.445 E F0 -1.112(that did not result)4.445 F(from one of the abo)108 315.6 Q .3 +108 718.8 Q(wing sub-patterns:)-.25 E(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(26)188.455 E 0 Cg EP +%%Page: 27 27 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(?\()144 84 Q/F2 10/Times-Italic@0 SF(pattern-list).833 E F1(\)).833 E +F0(Matches zero or one occurrence of the gi)180 96 Q -.15(ve)-.25 G 2.5 +(np).15 G(atterns)-2.5 E F1(*\()144 108 Q F2(pattern-list).833 E F1(\)) +.833 E F0(Matches zero or more occurrences of the gi)180 120 Q -.15(ve) +-.25 G 2.5(np).15 G(atterns)-2.5 E F1(+\()144 132 Q F2(pattern-list).833 +E F1(\)).833 E F0(Matches one or more occurrences of the gi)180 144 Q +-.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(@\()144 156 Q F2 +(pattern-list).833 E F1(\)).833 E F0(Matches one of the gi)180 168 Q +-.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(!\()144 180 Q F2 +(pattern-list).833 E F1(\)).833 E F0(Matches an)180 192 Q(ything e)-.15 +E(xcept one of the gi)-.15 E -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E +.969(Complicated e)108 208.8 R .969(xtended pattern matching ag)-.15 F +.969(ainst long strings is slo)-.05 F 2.268 -.65(w, e)-.25 H .968 +(specially when the patterns contain).65 F 1.23 +(alternations and the strings contain multiple matches.)108 220.8 R 1.23 +(Using separate matches ag)6.23 F 1.23(ainst shorter strings, or)-.05 F +(using arrays of strings instead of a single long string, may be f)108 +232.8 Q(aster)-.1 E(.)-.55 E F1(Quote Remo)87 249.6 Q -.1(va)-.1 G(l).1 +E F0 1.113(After the preceding e)108 261.6 R 1.113 +(xpansions, all unquoted occurrences of the characters)-.15 F F1(\\) +3.613 E F0(,)A F1<08>3.612 E F0 3.612(,a)C(nd)-3.612 E F1(")4.445 E F0 +1.112(that did not result)4.445 F(from one of the abo)108 273.6 Q .3 -.15(ve ex)-.15 H(pansions are remo).15 E -.15(ve)-.15 G(d.).15 E/F3 -10.95/Times-Bold@0 SF(REDIRECTION)72 332.4 Q F0 .545 -(Before a command is e)108 344.4 R -.15(xe)-.15 G .545 -(cuted, its input and output may be).15 F F1 -.37(re)3.045 G(dir).37 E +10.95/Times-Bold@0 SF(REDIRECTION)72 290.4 Q F0 .545 +(Before a command is e)108 302.4 R -.15(xe)-.15 G .545 +(cuted, its input and output may be).15 F F2 -.37(re)3.045 G(dir).37 E (ected)-.37 E F0 .545(using a special notation interpreted)3.815 F .405 -(by the shell.)108 356.4 R .405(Redirection allo)5.405 F .405(ws comman\ +(by the shell.)108 314.4 R .405(Redirection allo)5.405 F .405(ws comman\ ds' \214le handles to be duplicated, opened, closed, made to refer to) --.25 F(dif)108 368.4 Q 1.019(ferent \214les, and can change the \214les\ +-.25 F(dif)108 326.4 Q 1.019(ferent \214les, and can change the \214les\ the command reads from and writes to.)-.25 F 1.02 (Redirection may also be)6.02 F .215 -(used to modify \214le handles in the current shell e)108 380.4 R -.15 +(used to modify \214le handles in the current shell e)108 338.4 R -.15 (xe)-.15 G .215(cution en).15 F 2.715(vironment. The)-.4 F(follo)2.715 E .215(wing redirection operators)-.25 F .875(may precede or appear an)108 -392.4 R .875(ywhere within a)-.15 F F1 .875(simple command)3.715 F F0 -.875(or may follo)4.145 F 3.376(wa)-.25 G F1(command)A F0 5.876(.R).77 G -.876(edirections are)-5.876 F(processed in the order the)108 404.4 Q 2.5 +350.4 R .875(ywhere within a)-.15 F F2 .875(simple command)3.715 F F0 +.875(or may follo)4.145 F 3.376(wa)-.25 G F2(command)A F0 5.876(.R).77 G +.876(edirections are)-5.876 F(processed in the order the)108 362.4 Q 2.5 (ya)-.15 G(ppear)-2.5 E 2.5(,f)-.4 G(rom left to right.)-2.5 E .771(Eac\ h redirection that may be preceded by a \214le descriptor number may in\ -stead be preceded by a w)108 421.2 R .771(ord of)-.1 F .292(the form {) -108 433.2 R F1(varname)A F0 2.793(}. In)B .293 +stead be preceded by a w)108 379.2 R .771(ord of)-.1 F .292(the form {) +108 391.2 R F2(varname)A F0 2.793(}. In)B .293 (this case, for each redirection operator e)2.793 F .293 -(xcept >&- and <&-, the shell will allocate)-.15 F 3.18<618c>108 445.2 S +(xcept >&- and <&-, the shell will allocate)-.15 F 3.18<618c>108 403.2 S .679(le descriptor greater than or equal to 10 and assign it to)-3.18 F -F1(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679 -(&- or <&- is preceded by {)-3.179 F F1(var)A(-)-.2 E(name)108 457.2 Q -F0(}, the v)A(alue of)-.25 E F1(varname)2.5 E F0 -(de\214nes the \214le descriptor to close.)2.5 E .283(In the follo)108 -474 R .284(wing descriptions, if the \214le descriptor number is omitte\ -d, and the \214rst character of the redirect-)-.25 F .513 -(ion operator is)108 486 R F2(<)3.012 E F0 3.012(,t)C .512 +F2(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679 +(&- or <&- is preceded by {)-3.179 F F2(var)A(-)-.2 E(name)108 415.2 Q +F0 .599(}, the v)B .599(alue of)-.25 F F2(varname)3.099 E F0 .599 +(de\214nes the \214le descriptor to close.)3.099 F .6(If {)5.6 F F2 +(varname)A F0 3.1(}i)C 3.1(ss)-3.1 G .6(upplied, the redirection)-3.1 F +1.238(persists be)108 427.2 R 1.238(yond the scope of the command, allo) +-.15 F 1.238(wing the shell programmer to manage the \214le descriptor) +-.25 F(himself.)108 439.2 Q .283(In the follo)108 456 R .284(wing descr\ +iptions, if the \214le descriptor number is omitted, and the \214rst ch\ +aracter of the redirect-)-.25 F .513(ion operator is)108 468 R F1(<) +3.012 E F0 3.012(,t)C .512 (he redirection refers to the standard input \(\214le descriptor 0\).) -3.012 F .512(If the \214rst character of the)5.512 F -(redirection operator is)108 498 Q F2(>)2.5 E F0 2.5(,t)C +(redirection operator is)108 480 Q F1(>)2.5 E F0 2.5(,t)C (he redirection refers to the standard output \(\214le descriptor 1\).) --2.5 E .824(The w)108 514.8 R .824(ord follo)-.1 F .824 +-2.5 E .824(The w)108 496.8 R .824(ord follo)-.1 F .824 (wing the redirection operator in the follo)-.25 F .825 (wing descriptions, unless otherwise noted, is sub-)-.25 F .463 -(jected to brace e)108 526.8 R .463(xpansion, tilde e)-.15 F .462 +(jected to brace e)108 508.8 R .463(xpansion, tilde e)-.15 F .462 (xpansion, parameter and v)-.15 F .462(ariable e)-.25 F .462 -(xpansion, command substitution, arith-)-.15 F .866(metic e)108 538.8 R +(xpansion, command substitution, arith-)-.15 F .866(metic e)108 520.8 R .866(xpansion, quote remo)-.15 F -.25(va)-.15 G .866(l, pathname e).25 F .867(xpansion, and w)-.15 F .867(ord splitting.)-.1 F .867(If it e)5.867 -F .867(xpands to more than one)-.15 F -.1(wo)108 550.8 S(rd,).1 E F2 +F .867(xpands to more than one)-.15 F -.1(wo)108 532.8 S(rd,).1 E F1 (bash)2.5 E F0(reports an error)2.5 E(.)-.55 E -(Note that the order of redirections is signi\214cant.)108 567.6 Q -.15 -(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 584.4 Q F2(>)2.5 -E F0(dirlist 2)2.5 E F2(>&)A F0(1)A -(directs both standard output and standard error to the \214le)108 601.2 -Q F1(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 618 -Q F2(>&)A F0(1)A F2(>)2.5 E F0(dirlist)2.5 E .527 -(directs only the standard output to \214le)108 634.8 R F1(dirlist)3.027 +(Note that the order of redirections is signi\214cant.)108 549.6 Q -.15 +(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 566.4 Q F1(>)2.5 +E F0(dirlist 2)2.5 E F1(>&)A F0(1)A +(directs both standard output and standard error to the \214le)108 583.2 +Q F2(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 600 +Q F1(>&)A F0(1)A F1(>)2.5 E F0(dirlist)2.5 E .527 +(directs only the standard output to \214le)108 616.8 R F2(dirlist)3.027 E F0 3.027(,b).68 G .527(ecause the standard error w)-3.027 F .527 (as duplicated from the standard)-.1 F -(output before the standard output w)108 646.8 Q(as redirected to)-.1 E -F1(dirlist)2.5 E F0(.).68 E F2(Bash)108 663.6 Q F0 .598(handles se)3.098 +(output before the standard output w)108 628.8 Q(as redirected to)-.1 E +F2(dirlist)2.5 E F0(.).68 E F1(Bash)108 645.6 Q F0 .598(handles se)3.098 F -.15(ve)-.25 G .598(ral \214lenames specially when the).15 F 3.099(ya) -.15 G .599(re used in redirections, as described in the follo)-3.099 F -(wing)-.25 E 3.478(table. If)108 675.6 R .978 -(the operating system on which)3.478 F F2(bash)3.478 E F0 .978 +(wing)-.25 E 3.478(table. If)108 657.6 R .978 +(the operating system on which)3.478 F F1(bash)3.478 E F0 .978 (is running pro)3.478 F .977 (vides these special \214les, bash will use them;)-.15 F -(otherwise it will emulate them internally with the beha)108 687.6 Q -(vior described belo)-.2 E -.65(w.)-.25 G F2(/de)144 704.4 Q(v/fd/)-.15 -E F1(fd)A F0(If)180 716.4 Q F1(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E -(ger)-.15 E 2.5<2c8c>-.4 G(le descriptor)-2.5 E F1(fd)2.5 E F0 -(is duplicated.)2.5 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(26) -192.055 E 0 Cg EP -%%Page: 27 27 +(otherwise it will emulate them internally with the beha)108 669.6 Q +(vior described belo)-.2 E -.65(w.)-.25 G F1(/de)144 686.4 Q(v/fd/)-.15 +E F2(fd)A F0(If)180 698.4 Q F2(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E +(ger)-.15 E 2.5<2c8c>-.4 G(le descriptor)-2.5 E F2(fd)2.5 E F0 +(is duplicated.)2.5 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E +(27)188.455 E 0 Cg EP +%%Page: 28 28 %%BeginPageSetup BP %%EndPageSetup @@ -3594,9 +3719,9 @@ E F1(>&)A F0(1)A .114(When using the second form,)108 710.4 R F2(wor) -.15 F F12.614 E F0 5.114(.I)C 2.614(fi)-5.114 G 2.615(td)-2.614 G .115(oes, other redirection operators)-2.615 F(apply \(see)108 722.4 Q F1(Duplicating File Descriptors)2.5 E F0(belo)2.5 E -(w\) for compatibility reasons.)-.25 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(27)192.055 E 0 Cg EP -%%Page: 28 28 +(w\) for compatibility reasons.)-.25 E(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(28)188.455 E 0 Cg EP +%%Page: 29 29 %%BeginPageSetup BP %%EndPageSetup @@ -3648,19 +3773,17 @@ C .601(hen all leading tab characters are stripped from input lines and\ -.25 E(ashion.)-.1 E F1(Her)87 412.8 Q 2.5(eS)-.18 G(trings)-2.5 E F0 2.5(Av)108 424.8 S(ariant of here documents, the format is:)-2.75 E([) 144 441.6 Q F2(n)A F0(])A F1(<<<)A F2(wor)A(d)-.37 E F0(The)108 458.4 Q -F2(wor)2.894 E(d)-.37 E F0(under)2.894 E .394(goes brace e)-.18 F .393 -(xpansion, tilde e)-.15 F .393(xpansion, parameter and v)-.15 F .393 -(ariable e)-.25 F .393(xpansion, command substi-)-.15 F 2.147 -(tution, arithmetic e)108 470.4 R 2.147(xpansion, and quote remo)-.15 F --.25(va)-.15 G 4.648(l. P).25 F 2.148(athname e)-.15 F 2.148 -(xpansion and w)-.15 F 2.148(ord splitting are not per)-.1 F(-)-.2 E -2.813(formed. The)108 482.4 R .313 -(result is supplied as a single string, with a ne)2.813 F .312 -(wline appended, to the command on its standard)-.25 F -(input \(or \214le descriptor)108 494.4 Q F2(n)2.5 E F0(if)2.5 E F2(n) -2.5 E F0(is speci\214ed\).)2.5 E F1(Duplicating File Descriptors)87 -511.2 Q F0(The redirection operator)108 523.2 Q([)144 540 Q F2(n)A F0(]) -A F1(<&)A F2(wor)A(d)-.37 E F0 .126 +F2(wor)3.292 E(d)-.37 E F0(under)3.292 E .792(goes tilde e)-.18 F .792 +(xpansion, parameter and v)-.15 F .792(ariable e)-.25 F .791 +(xpansion, command substitution, arithmetic)-.15 F -.15(ex)108 470.4 S +1.187(pansion, and quote remo).15 F -.25(va)-.15 G 3.687(l. P).25 F +1.187(athname e)-.15 F 1.187(xpansion and w)-.15 F 1.187 +(ord splitting are not performed.)-.1 F 1.188(The result is)6.187 F .375 +(supplied as a single string, with a ne)108 482.4 R .374(wline appended\ +, to the command on its standard input \(or \214le descrip-)-.25 F(tor) +108 494.4 Q F2(n)2.5 E F0(if)2.5 E F2(n)2.5 E F0(is speci\214ed\).)2.5 E +F1(Duplicating File Descriptors)87 511.2 Q F0(The redirection operator) +108 523.2 Q([)144 540 Q F2(n)A F0(])A F1(<&)A F2(wor)A(d)-.37 E F0 .126 (is used to duplicate input \214le descriptors.)108 556.8 R(If)5.127 E F2(wor)2.967 E(d)-.37 E F0 -.15(ex)3.397 G .127 (pands to one or more digits, the \214le descriptor denoted).15 F(by)108 @@ -3688,9 +3811,9 @@ F0 2.754<2c8c>C .254(le descriptor)-2.754 F F2(n)3.114 E F0 .254 .965(not e)108 679.2 R .965(xpand to one or more digits or)-.15 F F1 3.465 E F0 3.466(,t)C .966 (he standard output and standard error are redirected as described) --3.466 F(pre)108 691.2 Q(viously)-.25 E(.)-.65 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(28)192.055 E 0 Cg EP -%%Page: 29 29 +-3.466 F(pre)108 691.2 Q(viously)-.25 E(.)-.65 E(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(29)188.455 E 0 Cg EP +%%Page: 30 30 %%BeginPageSetup BP %%EndPageSetup @@ -3766,5576 +3889,5837 @@ E(Aliases are created and listed with the)108 432 Q F1(alias)2.5 E F0 E .436 (The rules concerning the de\214nition and use of aliases are some)108 506.4 R .435(what confusing.)-.25 F F1(Bash)5.435 E F0(al)2.935 E -.1 -(wa)-.1 G .435(ys reads at least).1 F .337 -(one complete line of input before e)108 518.4 R -.15(xe)-.15 G .338 -(cuting an).15 F 2.838(yo)-.15 G 2.838(ft)-2.838 G .338 -(he commands on that line.)-2.838 F .338(Aliases are e)5.338 F .338 -(xpanded when)-.15 F 3.404(ac)108 530.4 S .904 -(ommand is read, not when it is e)-3.404 F -.15(xe)-.15 G 3.404 -(cuted. Therefore,).15 F .904 -(an alias de\214nition appearing on the same line as)3.404 F 1.161 -(another command does not tak)108 542.4 R 3.662(ee)-.1 G -.25(ff)-3.662 -G 1.162(ect until the ne).25 F 1.162(xt line of input is read.)-.15 F -1.162(The commands follo)6.162 F 1.162(wing the)-.25 F .277 -(alias de\214nition on that line are not af)108 554.4 R .277 -(fected by the ne)-.25 F 2.777(wa)-.25 G 2.777(lias. This)-2.777 F(beha) -2.777 E .277(vior is also an issue when functions)-.2 F .698(are e)108 -566.4 R -.15(xe)-.15 G 3.198(cuted. Aliases).15 F .698(are e)3.198 F -.699(xpanded when a function de\214nition is read, not when the functio\ -n is e)-.15 F -.15(xe)-.15 G(cuted,).15 E .613 -(because a function de\214nition is itself a command.)108 578.4 R .612 -(As a consequence, aliases de\214ned in a function are not)5.612 F -.2 -(av)108 590.4 S .058(ailable until after that function is e)-.05 F -.15 -(xe)-.15 G 2.558(cuted. T).15 F 2.558(ob)-.8 G 2.558(es)-2.558 G .058 -(afe, al)-2.558 F -.1(wa)-.1 G .059 -(ys put alias de\214nitions on a separate line, and).1 F(do not use)108 -602.4 Q F1(alias)2.5 E F0(in compound commands.)2.5 E -.15(Fo)108 619.2 -S 2.5(ra).15 G(lmost e)-2.5 E -.15(ve)-.25 G +(wa)-.1 G .435(ys reads at least).1 F .67 +(one complete line of input, and all lines that mak)108 518.4 R 3.17(eu) +-.1 G 3.17(pac)-3.17 G .67(ompound command, before e)-3.17 F -.15(xe) +-.15 G .67(cuting an).15 F 3.17(yo)-.15 G 3.17(ft)-3.17 G(he)-3.17 E +1.059(commands on that line or the compound command.)108 530.4 R 1.059 +(Aliases are e)6.059 F 1.058(xpanded when a command is read, not)-.15 F +.074(when it is e)108 542.4 R -.15(xe)-.15 G 2.574(cuted. Therefore,).15 +F .075(an alias de\214nition appearing on the same line as another comm\ +and does not)2.574 F(tak)108 554.4 Q 2.838(ee)-.1 G -.25(ff)-2.838 G +.338(ect until the ne).25 F .338(xt line of input is read.)-.15 F .337 +(The commands follo)5.337 F .337 +(wing the alias de\214nition on that line are)-.25 F 1.472(not af)108 +566.4 R 1.473(fected by the ne)-.25 F 3.973(wa)-.25 G 3.973(lias. This) +-3.973 F(beha)3.973 E 1.473(vior is also an issue when functions are e) +-.2 F -.15(xe)-.15 G 3.973(cuted. Aliases).15 F(are)3.973 E -.15(ex)108 +578.4 S .61(panded when a function de\214nition is read, not when the f\ +unction is e).15 F -.15(xe)-.15 G .609 +(cuted, because a function de\214ni-).15 F .711 +(tion is itself a command.)108 590.4 R .711 +(As a consequence, aliases de\214ned in a function are not a)5.711 F +-.25(va)-.2 G .712(ilable until after that).25 F 1.186(function is e)108 +602.4 R -.15(xe)-.15 G 3.686(cuted. T).15 F 3.686(ob)-.8 G 3.686(es) +-3.686 G 1.185(afe, al)-3.686 F -.1(wa)-.1 G 1.185 +(ys put alias de\214nitions on a separate line, and do not use).1 F F1 +(alias)3.685 E F0(in)3.685 E(compound commands.)108 614.4 Q -.15(Fo)108 +631.2 S 2.5(ra).15 G(lmost e)-2.5 E -.15(ve)-.25 G (ry purpose, aliases are superseded by shell functions.).15 E F3 -(FUNCTIONS)72 636 Q F0 3.468(As)108 648 S .968 -(hell function, de\214ned as described abo)-3.468 F 1.267 -.15(ve u)-.15 +(FUNCTIONS)72 648 Q F0 3.467(As)108 660 S .967 +(hell function, de\214ned as described abo)-3.467 F 1.267 -.15(ve u)-.15 H(nder).15 E F4 .967(SHELL GRAMMAR)3.467 F/F5 9/Times-Roman@0 SF(,)A F0 -.967(stores a series of commands for)3.217 F 1.001(later e)108 660 R --.15(xe)-.15 G 3.501(cution. When).15 F 1.002(the name of a shell funct\ -ion is used as a simple command name, the list of com-)3.501 F .316 -(mands associated with that function name is e)108 672 R -.15(xe)-.15 G -2.816(cuted. Functions).15 F .316(are e)2.816 F -.15(xe)-.15 G .315 -(cuted in the conte).15 F .315(xt of the current)-.15 F .035 -(shell; no ne)108 684 R 2.535(wp)-.25 G .036 -(rocess is created to interpret them \(contrast this with the e)-2.535 F --.15(xe)-.15 G .036(cution of a shell script\).).15 F .036(When a)5.036 -F .64(function is e)108 696 R -.15(xe)-.15 G .64(cuted, the ar).15 F +.968(stores a series of commands for)3.217 F 1.002(later e)108 672 R +-.15(xe)-.15 G 3.502(cution. When).15 F 1.002(the name of a shell funct\ +ion is used as a simple command name, the list of com-)3.502 F .315 +(mands associated with that function name is e)108 684 R -.15(xe)-.15 G +2.816(cuted. Functions).15 F .316(are e)2.816 F -.15(xe)-.15 G .316 +(cuted in the conte).15 F .316(xt of the current)-.15 F .036 +(shell; no ne)108 696 R 2.536(wp)-.25 G .036 +(rocess is created to interpret them \(contrast this with the e)-2.536 F +-.15(xe)-.15 G .036(cution of a shell script\).).15 F .035(When a)5.035 +F .639(function is e)108 708 R -.15(xe)-.15 G .639(cuted, the ar).15 F .639 (guments to the function become the positional parameters during its e) --.18 F -.15(xe)-.15 G(cution.).15 E .532(The special parameter)108 708 R -F1(#)3.032 E F0 .532(is updated to re\215ect the change.)3.032 F .532 -(Special parameter)5.532 F F1(0)3.033 E F0 .533(is unchanged.)3.033 F -.533(The \214rst ele-)5.533 F(ment of the)108 720 Q F4(FUNCN)2.5 E(AME) --.18 E F0 -.25(va)2.25 G -(riable is set to the name of the function while the function is e).25 E --.15(xe)-.15 G(cuting.).15 E(GNU Bash 4.4)72 768 Q(2016 August 26) -142.895 E(29)192.055 E 0 Cg EP -%%Page: 30 30 +-.18 F -.15(xe)-.15 G(cution.).15 E 1.659(The special parameter)108 720 +R F1(#)4.159 E F0 1.659(is updated to re\215ect the change.)4.159 F +1.659(Special parameter)6.659 F F1(0)4.159 E F0 1.658(is unchanged.) +4.158 F 1.658(The \214rst)6.658 F(GNU Bash 5.0)72 768 Q(2018 December 7) +139.295 E(30)188.455 E 0 Cg EP +%%Page: 31 31 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.25 -(All other aspects of the shell e)108 84 R -.15(xe)-.15 G 1.25 -(cution en).15 F 1.25 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(element of the)108 +84 Q/F1 9/Times-Bold@0 SF(FUNCN)2.5 E(AME)-.18 E F0 -.25(va)2.25 G +(riable is set to the name of the function while the function is e).25 E +-.15(xe)-.15 G(cuting.).15 E 1.25(All other aspects of the shell e)108 +100.8 R -.15(xe)-.15 G 1.25(cution en).15 F 1.25 (vironment are identical between a function and its caller with)-.4 F -1.214(these e)108 96 R 1.214(xceptions: the)-.15 F/F1 9/Times-Bold@0 SF -(DEB)3.714 E(UG)-.09 E F0(and)3.464 E/F2 10/Times-Bold@0 SF(RETURN)3.715 -E F0 1.215(traps \(see the description of the)3.715 F F2(trap)3.715 E F0 --.2(bu)3.715 G 1.215(iltin under).2 F F1(SHELL)3.715 E -.09(BU)108 108 S -(IL).09 E .479(TIN COMMANDS)-.828 F F0(belo)2.729 E .479 +1.215(these e)108 112.8 R 1.215(xceptions: the)-.15 F F1(DEB)3.715 E(UG) +-.09 E F0(and)3.465 E/F2 10/Times-Bold@0 SF(RETURN)3.715 E F0 1.215 +(traps \(see the description of the)3.715 F F2(trap)3.714 E F0 -.2(bu) +3.714 G 1.214(iltin under).2 F F1(SHELL)3.714 E -.09(BU)108 124.8 S(IL) +.09 E .478(TIN COMMANDS)-.828 F F0(belo)2.728 E .479 (w\) are not inherited unless the function has been gi)-.25 F -.15(ve) --.25 G 2.978(nt).15 G(he)-2.978 E F2(trace)2.978 E F0(attrib)2.978 E -.478(ute \(see)-.2 F .42(the description of the)108 120 R F1(declar)2.92 -E(e)-.162 E F0 -.2(bu)2.67 G .42(iltin belo).2 F .42(w\) or the)-.25 F -F2 .42(\255o functrace)2.92 F F0 .42 -(shell option has been enabled with the)2.92 F F2(set)2.921 E F0 -.2(bu) -108 132 S .072(iltin \(in which case all functions inherit the).2 F F2 +-.25 G 2.979(nt).15 G(he)-2.979 E F2(trace)2.979 E F0(attrib)2.979 E +.479(ute \(see)-.2 F .421(the description of the)108 136.8 R F1(declar) +2.92 E(e)-.162 E F0 -.2(bu)2.67 G .42(iltin belo).2 F .42(w\) or the) +-.25 F F2 .42(\255o functrace)2.92 F F0 .42 +(shell option has been enabled with the)2.92 F F2(set)2.92 E F0 -.2(bu) +108 148.8 S .071(iltin \(in which case all functions inherit the).2 F F2 (DEB)2.572 E(UG)-.1 E F0(and)2.572 E F2(RETURN)2.572 E F0 .072 -(traps\), and the)2.572 F F1(ERR)2.571 E F0 .071(trap is not inher)2.321 -F(-)-.2 E(ited unless the)108 144 Q F2(\255o errtrace)2.5 E F0 -(shell option has been enabled.)2.5 E -1.11(Va)108 160.8 S .655 +(traps\), and the)2.572 F F1(ERR)2.572 E F0 .072(trap is not inher)2.322 +F(-)-.2 E(ited unless the)108 160.8 Q F2(\255o errtrace)2.5 E F0 +(shell option has been enabled.)2.5 E -1.11(Va)108 177.6 S .656 (riables local to the function may be declared with the)1.11 F F2(local) -3.155 E F0 -.2(bu)3.156 G .656(iltin command.).2 F(Ordinarily)5.656 E -3.156(,v)-.65 G .656(ariables and)-3.406 F(their v)108 172.8 Q -(alues are shared between the function and its caller)-.25 E(.)-.55 E -(The)108 189.6 Q F2(FUNCNEST)3.529 E F0 -.25(va)3.529 G 1.028 -(riable, if set to a numeric v).25 F 1.028 +3.155 E F0 -.2(bu)3.155 G .655(iltin command.).2 F(Ordinarily)5.655 E +3.155(,v)-.65 G .655(ariables and)-3.405 F .05(their v)108 189.6 R .05 +(alues are shared between the function and its caller)-.25 F 5.051(.I) +-.55 G 2.551(fav)-5.051 G .051(ariable is declared)-2.801 F F2(local) +2.551 E F0 2.551(,t)C .051(he v)-2.551 F(ariable')-.25 E 2.551(sv)-.55 G +(isi-)-2.551 E 1.186(ble scope is restricted to that function and its c\ +hildren \(including the functions it calls\).)108 201.6 R 1.185(Local v) +6.185 F(ariables)-.25 E("shado)108 213.6 Q .154(w" v)-.25 F .154 +(ariables with the same name declared at pre)-.25 F .155(vious scopes.) +-.25 F -.15(Fo)5.155 G 2.655(ri).15 G .155(nstance, a local v)-2.655 F +.155(ariable declared)-.25 F .67(in a function hides a global v)108 +225.6 R .669(ariable of the same name: references and assignments refer\ + to the local v)-.25 F(ari-)-.25 E .688(able, lea)108 237.6 R .688 +(ving the global v)-.2 F .688(ariable unmodi\214ed.)-.25 F .688 +(When the function returns, the global v)5.688 F .688 +(ariable is once ag)-.25 F(ain)-.05 E(visible.)108 249.6 Q .727 +(The shell uses)108 266.4 R/F3 10/Times-Italic@0 SF .727 +(dynamic scoping)3.227 F F0 .726(to control a v)3.227 F(ariable')-.25 E +3.226(sv)-.55 G .726(isibility within functions.)-3.226 F -.4(Wi)5.726 G +.726(th dynamic scoping,).4 F .007(visible v)108 278.4 R .007 +(ariables and their v)-.25 F .007 +(alues are a result of the sequence of function calls that caused e)-.25 +F -.15(xe)-.15 G .008(cution to reach).15 F .814(the current function.) +108 290.4 R .813(The v)5.814 F .813(alue of a v)-.25 F .813 +(ariable that a function sees depends on its v)-.25 F .813 +(alue within its caller)-.25 F 3.313(,i)-.4 G(f)-3.313 E(an)108 302.4 Q +2.116 -.65(y, w)-.15 H .816 +(hether that caller is the "global" scope or another shell function.).65 +F .817(This is also the v)5.816 F .817(alue that a local)-.25 F -.25(va) +108 314.4 S(riable declaration "shado).25 E(ws", and the v)-.25 E +(alue that is restored when the function returns.)-.25 E -.15(Fo)108 +331.2 S 2.724(re).15 G .224(xample, if a v)-2.874 F(ariable)-.25 E F3 +(var)2.724 E F0 .223(is declared as local in function)2.724 F F3(func1) +2.723 E F0 2.723(,a)C(nd)-2.723 E F3(func1)2.723 E F0 .223 +(calls another function)2.723 F F3(func2)2.723 E F0(,)A .463 +(references to)108 343.2 R F3(var)2.963 E F0 .463(made from within)2.963 +F F3(func2)2.963 E F0 .463(will resolv)2.963 F 2.964(et)-.15 G 2.964(ot) +-2.964 G .464(he local v)-2.964 F(ariable)-.25 E F3(var)2.964 E F0(from) +2.964 E F3(func1)2.964 E F0 2.964(,s)C(hado)-2.964 E .464(wing an)-.25 F +(y)-.15 E(global v)108 355.2 Q(ariable named)-.25 E F3(var)2.5 E F0(.)A +(The)108 372 Q F2(unset)2.983 E F0 -.2(bu)2.983 G .483 +(iltin also acts using the same dynamic scope: if a v).2 F .482 +(ariable is local to the current scope,)-.25 F F2(unset)2.982 E F0 .19 +(will unset it; otherwise the unset will refer to the v)108 384 R .19 +(ariable found in an)-.25 F 2.69(yc)-.15 G .19 +(alling scope as described abo)-2.69 F -.15(ve)-.15 G 5.19(.I).15 G(f) +-5.19 E 2.721(av)108 396 S .221(ariable at the current local scope is u\ +nset, it will remain so until it is reset in that scope or until the fu\ +nc-)-2.971 F .013(tion returns.)108 408 R .013 +(Once the function returns, an)5.013 F 2.513(yi)-.15 G .014 +(nstance of the v)-2.513 F .014(ariable at a pre)-.25 F .014 +(vious scope will become visible.)-.25 F .567(If the unset acts on a v) +108 420 R .566(ariable at a pre)-.25 F .566(vious scope, an)-.25 F 3.066 +(yi)-.15 G .566(nstance of a v)-3.066 F .566 +(ariable with that name that had been)-.25 F(shado)108 432 Q +(wed will become visible.)-.25 E(The)108 448.8 Q F2(FUNCNEST)3.528 E F0 +-.25(va)3.528 G 1.028(riable, if set to a numeric v).25 F 1.028 (alue greater than 0, de\214nes a maximum function nesting)-.25 F(le)108 -201.6 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G +460.8 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G (cations that e).2 E(xceed the limit cause the entire command to abort.) --.15 E .043(If the b)108 218.4 R .043(uiltin command)-.2 F F2 -.18(re) +-.15 E .044(If the b)108 477.6 R .043(uiltin command)-.2 F F2 -.18(re) 2.543 G(tur).18 E(n)-.15 E F0 .043(is e)2.543 F -.15(xe)-.15 G .043 (cuted in a function, the function completes and e).15 F -.15(xe)-.15 G -.044(cution resumes with).15 F 1.012(the ne)108 230.4 R 1.012 +.043(cution resumes with).15 F 1.011(the ne)108 489.6 R 1.011 (xt command after the function call.)-.15 F(An)6.011 E 3.511(yc)-.15 G -1.011(ommand associated with the)-3.511 F F2(RETURN)3.511 E F0 1.011 -(trap is e)3.511 F -.15(xe)-.15 G(cuted).15 E .213(before e)108 242.4 R --.15(xe)-.15 G .213(cution resumes.).15 F .213 -(When a function completes, the v)5.213 F .214 +1.011(ommand associated with the)-3.511 F F2(RETURN)3.512 E F0 1.012 +(trap is e)3.512 F -.15(xe)-.15 G(cuted).15 E .214(before e)108 501.6 R +-.15(xe)-.15 G .214(cution resumes.).15 F .213 +(When a function completes, the v)5.214 F .213 (alues of the positional parameters and the spe-)-.25 F(cial parameter) -108 254.4 Q F2(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E +108 513.6 Q F2(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E 2.5(yh)-.15 G(ad prior to the function')-2.5 E 2.5(se)-.55 G -.15(xe) --2.65 G(cution.).15 E 1.359 -(Function names and de\214nitions may be listed with the)108 271.2 R F2 +-2.65 G(cution.).15 E 1.358 +(Function names and de\214nitions may be listed with the)108 530.4 R F2 3.858 E F0 1.358(option to the)3.858 F F2(declar)3.858 E(e)-.18 E -F0(or)3.858 E F2(typeset)3.858 E F0 -.2(bu)3.858 G 1.358(iltin com-).2 F -3.39(mands. The)108 283.2 R F23.39 E F0 .89(option to)3.39 F F2 +F0(or)3.859 E F2(typeset)3.859 E F0 -.2(bu)3.859 G 1.359(iltin com-).2 F +3.39(mands. The)108 542.4 R F23.39 E F0 .89(option to)3.39 F F2 (declar)3.39 E(e)-.18 E F0(or)3.39 E F2(typeset)3.39 E F0 .89 (will list the function names only \(and optionally the source)3.39 F -.327(\214le and line number)108 295.2 R 2.827(,i)-.4 G 2.827(ft)-2.827 G -(he)-2.827 E F2(extdeb)2.827 E(ug)-.2 E F0 .326 -(shell option is enabled\).)2.827 F .326(Functions may be e)5.326 F .326 -(xported so that subshells)-.15 F 1.297(automatically ha)108 307.2 R -1.597 -.15(ve t)-.2 H 1.297(hem de\214ned with the).15 F F23.797 E -F0 1.297(option to the)3.797 F F2(export)3.798 E F0 -.2(bu)3.798 G 3.798 -(iltin. A).2 F 1.298(function de\214nition may be)3.798 F .161 -(deleted using the)108 319.2 R F22.661 E F0 .161(option to the) -2.661 F F2(unset)2.661 E F0 -.2(bu)2.661 G 2.661(iltin. Note).2 F .16 -(that shell functions and v)2.661 F .16(ariables with the same name)-.25 -F 1.325(may result in multiple identically-named entries in the en)108 -331.2 R 1.325(vironment passed to the shell')-.4 F 3.825(sc)-.55 G 3.825 -(hildren. Care)-3.825 F(should be tak)108 343.2 Q -(en in cases where this may cause a problem.)-.1 E .372 -(Functions may be recursi)108 360 R -.15(ve)-.25 G 5.371(.T).15 G(he) --5.371 E F2(FUNCNEST)2.871 E F0 -.25(va)2.871 G .371 +.326(\214le and line number)108 554.4 R 2.826(,i)-.4 G 2.826(ft)-2.826 G +(he)-2.826 E F2(extdeb)2.826 E(ug)-.2 E F0 .326 +(shell option is enabled\).)2.826 F .327(Functions may be e)5.327 F .327 +(xported so that subshells)-.15 F 1.298(automatically ha)108 566.4 R +1.598 -.15(ve t)-.2 H 1.298(hem de\214ned with the).15 F F23.798 E +F0 1.298(option to the)3.798 F F2(export)3.797 E F0 -.2(bu)3.797 G 3.797 +(iltin. A).2 F 1.297(function de\214nition may be)3.797 F +(deleted using the)108 578.4 Q F22.5 E F0(option to the)2.5 E F2 +(unset)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .371(Functions may be recursi) +108 595.2 R -.15(ve)-.25 G 5.371(.T).15 G(he)-5.371 E F2(FUNCNEST)2.871 +E F0 -.25(va)2.871 G .371 (riable may be used to limit the depth of the function call).25 F 1.141 -(stack and restrict the number of function in)108 372 R -.2(vo)-.4 G +(stack and restrict the number of function in)108 607.2 R -.2(vo)-.4 G 3.641(cations. By).2 F(def)3.641 E 1.141 -(ault, no limit is imposed on the number of)-.1 F(recursi)108 384 Q .3 --.15(ve c)-.25 H(alls.).15 E/F3 10.95/Times-Bold@0 SF(ARITHMETIC EV)72 -400.8 Q(ALU)-1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 2.298 -(The shell allo)108 412.8 R 2.297(ws arithmetic e)-.25 F 2.297 -(xpressions to be e)-.15 F -.25(va)-.25 G 2.297 -(luated, under certain circumstances \(see the).25 F F2(let)4.797 E F0 -(and)4.797 E F2(declar)108 424.8 Q(e)-.18 E F0 -.2(bu)2.683 G .183 -(iltin commands, the).2 F F2(\(\()2.683 E F0 .183(compound command, and) -2.683 F F2 .183(Arithmetic Expansion)2.683 F F0 2.683(\). Ev)B .183 -(aluation is done in)-.25 F<8c78>108 436.8 Q 1.058(ed-width inte)-.15 F -1.057(gers with no check for o)-.15 F -.15(ve)-.15 G(r\215o).15 E 2.357 --.65(w, t)-.25 H 1.057(hough di).65 F 1.057 -(vision by 0 is trapped and \215agged as an error)-.25 F(.)-.55 E .828 -(The operators and their precedence, associati)108 448.8 R(vity)-.25 E +(ault, no limit is imposed on the number of)-.1 F(recursi)108 619.2 Q .3 +-.15(ve c)-.25 H(alls.).15 E/F4 10.95/Times-Bold@0 SF(ARITHMETIC EV)72 +636 Q(ALU)-1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 2.297(The shell allo) +108 648 R 2.297(ws arithmetic e)-.25 F 2.297(xpressions to be e)-.15 F +-.25(va)-.25 G 2.297(luated, under certain circumstances \(see the).25 F +F2(let)4.798 E F0(and)4.798 E F2(declar)108 660 Q(e)-.18 E F0 -.2(bu) +2.684 G .183(iltin commands, the).2 F F2(\(\()2.683 E F0 .183 +(compound command, and)2.683 F F2 .183(Arithmetic Expansion)2.683 F F0 +2.683(\). Ev)B .183(aluation is done in)-.25 F<8c78>108 672 Q 1.057 +(ed-width inte)-.15 F 1.057(gers with no check for o)-.15 F -.15(ve)-.15 +G(r\215o).15 E 2.357 -.65(w, t)-.25 H 1.057(hough di).65 F 1.057 +(vision by 0 is trapped and \215agged as an error)-.25 F(.)-.55 E .829 +(The operators and their precedence, associati)108 684 R(vity)-.25 E 3.329(,a)-.65 G .829(nd v)-3.329 F .829 -(alues are the same as in the C language.)-.25 F .829(The fol-)5.829 F -(lo)108 460.8 Q .44(wing list of operators is grouped into le)-.25 F --.15(ve)-.25 G .439(ls of equal-precedence operators.).15 F .439(The le) -5.439 F -.15(ve)-.25 G .439(ls are listed in order).15 F -(of decreasing precedence.)108 472.8 Q/F4 10/Times-Italic@0 SF(id)108 -489.6 Q F2(++)A F4(id)2.5 E F2A F0 -.25(va)144 501.6 S -(riable post-increment and post-decrement).25 E F2(++)108 513.6 Q F4(id) -A F22.5 E F4(id)A F0 -.25(va)144 525.6 S -(riable pre-increment and pre-decrement).25 E F2 2.5108 537.6 S F0 -(unary minus and plus)144 537.6 Q F2 2.5(!~)108 549.6 S F0 -(logical and bitwise ne)144 549.6 Q -.05(ga)-.15 G(tion).05 E F2(**)108 -561.6 Q F0 -.15(ex)144 561.6 S(ponentiation).15 E F2 2.5(*/%)108 573.6 S -F0(multiplication, di)144 573.6 Q(vision, remainder)-.25 E F2 2.5<2bad> -108 585.6 S F0(addition, subtraction)144 585.6 Q F2(<< >>)108 597.6 Q F0 -(left and right bitwise shifts)144 597.6 Q F2(<= >= < >)108 609.6 Q F0 -(comparison)144 621.6 Q F2(== !=)108 633.6 Q F0(equality and inequality) -144 633.6 Q F2(&)108 645.6 Q F0(bitwise AND)144 645.6 Q F2(^)108 657.6 Q -F0(bitwise e)144 657.6 Q(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F2(|) -108 669.6 Q F0(bitwise OR)144 669.6 Q F2(&&)108 681.6 Q F0(logical AND) -144 681.6 Q F2(||)108 693.6 Q F0(logical OR)144 693.6 Q F4 -.2(ex)108 -705.6 S(pr).2 E F2(?)A F4 -.2(ex)C(pr).2 E F2(:)A F4 -.2(ex)C(pr).2 E F0 -(conditional operator)144 717.6 Q(GNU Bash 4.4)72 768 Q(2016 August 26) -142.895 E(30)192.055 E 0 Cg EP -%%Page: 31 31 +(alues are the same as in the C language.)-.25 F .828(The fol-)5.828 F +(lo)108 696 Q .439(wing list of operators is grouped into le)-.25 F -.15 +(ve)-.25 G .439(ls of equal-precedence operators.).15 F .44(The le)5.44 +F -.15(ve)-.25 G .44(ls are listed in order).15 F +(of decreasing precedence.)108 708 Q(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(31)188.455 E 0 Cg EP +%%Page: 32 32 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF 2.5(=*)108 84 S 2.5(=/)-2.5 G 2.5(=%)-2.5 G 2.5(=+)-2.5 G 2.5<3dad> --2.5 G 2.5(=<)-2.5 G(<= >>= &= ^= |=)-2.5 E F0(assignment)144 96 Q/F2 10 -/Times-Italic@0 SF -.2(ex)108 108 S(pr1).2 E F1(,)2.5 E F2 -.2(ex)2.5 G -(pr2).2 E F0(comma)144 120 Q .68(Shell v)108 136.8 R .68 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 +/Times-Italic@0 SF(id)108 84 Q/F2 10/Times-Bold@0 SF(++)A F1(id)2.5 E F2 +A F0 -.25(va)144 96 S(riable post-increment and post-decrement).25 +E F2 2.5108 108 S F0(unary minus and plus)144 108 Q F2(++)108 120 +Q F1(id)A F22.5 E F1(id)A F0 -.25(va)144 132 S +(riable pre-increment and pre-decrement).25 E F2 2.5(!~)108 144 S F0 +(logical and bitwise ne)144 144 Q -.05(ga)-.15 G(tion).05 E F2(**)108 +156 Q F0 -.15(ex)144 156 S(ponentiation).15 E F2 2.5(*/%)108 168 S F0 +(multiplication, di)144 168 Q(vision, remainder)-.25 E F2 2.5<2bad>108 +180 S F0(addition, subtraction)144 180 Q F2(<< >>)108 192 Q F0 +(left and right bitwise shifts)144 192 Q F2(<= >= < >)108 204 Q F0 +(comparison)144 216 Q F2(== !=)108 228 Q F0(equality and inequality)144 +228 Q F2(&)108 240 Q F0(bitwise AND)144 240 Q F2(^)108 252 Q F0 +(bitwise e)144 252 Q(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F2(|)108 +264 Q F0(bitwise OR)144 264 Q F2(&&)108 276 Q F0(logical AND)144 276 Q +F2(||)108 288 Q F0(logical OR)144 288 Q F1 -.2(ex)108 300 S(pr).2 E F2 +(?)A F1 -.2(ex)C(pr).2 E F2(:)A F1 -.2(ex)C(pr).2 E F0 +(conditional operator)144 312 Q F2 2.5(=*)108 324 S 2.5(=/)-2.5 G 2.5 +(=%)-2.5 G 2.5(=+)-2.5 G 2.5<3dad>-2.5 G 2.5(=<)-2.5 G(<= >>= &= ^= |=) +-2.5 E F0(assignment)144 336 Q F1 -.2(ex)108 348 S(pr1).2 E F2(,)2.5 E +F1 -.2(ex)2.5 G(pr2).2 E F0(comma)144 360 Q .68(Shell v)108 376.8 R .68 (ariables are allo)-.25 F .68(wed as operands; parameter e)-.25 F .68 (xpansion is performed before the e)-.15 F .68(xpression is e)-.15 F --.25(va)-.25 G(lu-).25 E 3.508(ated. W)108 148.8 R 1.008(ithin an e)-.4 -F 1.008(xpression, shell v)-.15 F 1.007 +-.25(va)-.25 G(lu-).25 E 3.507(ated. W)108 388.8 R 1.007(ithin an e)-.4 +F 1.007(xpression, shell v)-.15 F 1.007 (ariables may also be referenced by name without using the parameter) --.25 F -.15(ex)108 160.8 S 1.04(pansion syntax.).15 F 3.54(As)6.04 G -1.04(hell v)-3.54 F 1.04(ariable that is null or unset e)-.25 F -.25(va) --.25 G 1.041(luates to 0 when referenced by name without).25 F 1.467 -(using the parameter e)108 172.8 R 1.467(xpansion syntax.)-.15 F 1.467 -(The v)6.467 F 1.467(alue of a v)-.25 F 1.467(ariable is e)-.25 F -.25 -(va)-.25 G 1.466(luated as an arithmetic e).25 F(xpression)-.15 E 1.389 -(when it is referenced, or when a v)108 184.8 R 1.389 -(ariable which has been gi)-.25 F -.15(ve)-.25 G 3.89(nt).15 G(he)-3.89 -E F2(inte)3.89 E -.1(ge)-.4 G(r).1 E F0(attrib)3.89 E 1.39(ute using)-.2 -F F1(declar)3.89 E 3.89(e-)-.18 G(i)-3.89 E F0(is)3.89 E .333 -(assigned a v)108 196.8 R 2.832(alue. A)-.25 F .332(null v)2.832 F .332 -(alue e)-.25 F -.25(va)-.25 G .332(luates to 0.).25 F 2.832(As)5.332 G -.332(hell v)-2.832 F .332(ariable need not ha)-.25 F .632 -.15(ve i)-.2 -H(ts).15 E F2(inte)2.832 E -.1(ge)-.4 G(r).1 E F0(attrib)2.832 E .332 -(ute turned on)-.2 F(to be used in an e)108 208.8 Q(xpression.)-.15 E -1.406(Constants with a leading 0 are interpreted as octal numbers.)108 -225.6 R 3.906(Al)6.406 G 1.407(eading 0x or 0X denotes he)-3.906 F -(xadecimal.)-.15 E .113(Otherwise, numbers tak)108 237.6 R 2.613(et)-.1 -G .113(he form [)-2.613 F F2(base#)A F0 .112(]n, where the optional)B F2 -(base)2.612 E F0 .112(is a decimal number between 2 and 64)2.612 F .533 -(representing the arithmetic base, and)108 249.6 R F2(n)3.033 E F0 .533 -(is a number in that base.)3.033 F(If)5.534 E F2(base#)3.034 E F0 .534 -(is omitted, then base 10 is used.)3.034 F .513(When specifying)108 -261.6 R F2(n)3.013 E F0 3.013(,t)C .513 -(he digits greater than 9 are represented by the lo)-3.013 F .512 -(wercase letters, the uppercase letters,)-.25 F .942 -(@, and _, in that order)108 273.6 R 5.942(.I)-.55 G(f)-5.942 E F2(base) -3.442 E F0 .942(is less than or equal to 36, lo)3.442 F .943 +-.25 F -.15(ex)108 400.8 S 1.041(pansion syntax.).15 F 3.541(As)6.041 G +1.041(hell v)-3.541 F 1.041(ariable that is null or unset e)-.25 F -.25 +(va)-.25 G 1.04(luates to 0 when referenced by name without).25 F 1.466 +(using the parameter e)108 412.8 R 1.466(xpansion syntax.)-.15 F 1.467 +(The v)6.466 F 1.467(alue of a v)-.25 F 1.467(ariable is e)-.25 F -.25 +(va)-.25 G 1.467(luated as an arithmetic e).25 F(xpression)-.15 E 1.258 +(when it is referenced, or when a v)108 424.8 R 1.258 +(ariable which has been gi)-.25 F -.15(ve)-.25 G 3.758(nt).15 G(he) +-3.758 E F1(inte)3.758 E -.1(ge)-.4 G(r).1 E F0(attrib)3.758 E 1.257 +(ute using)-.2 F F2(declar)3.757 E 3.757<65ad>-.18 G(i)-3.757 E F0(is) +3.757 E .332(assigned a v)108 436.8 R 2.832(alue. A)-.25 F .332(null v) +2.832 F .332(alue e)-.25 F -.25(va)-.25 G .332(luates to 0.).25 F 2.832 +(As)5.332 G .332(hell v)-2.832 F .332(ariable need not ha)-.25 F .632 +-.15(ve i)-.2 H(ts).15 E F1(inte)2.832 E -.1(ge)-.4 G(r).1 E F0(attrib) +2.832 E .333(ute turned on)-.2 F(to be used in an e)108 448.8 Q +(xpression.)-.15 E 1.406 +(Constants with a leading 0 are interpreted as octal numbers.)108 465.6 +R 3.906(Al)6.406 G 1.406(eading 0x or 0X denotes he)-3.906 F(xadecimal.) +-.15 E .112(Otherwise, numbers tak)108 477.6 R 2.612(et)-.1 G .112 +(he form [)-2.612 F F1(base#)A F0 .112(]n, where the optional)B F1(base) +2.612 E F0 .113(is a decimal number between 2 and 64)2.612 F .534 +(representing the arithmetic base, and)108 489.6 R F1(n)3.034 E F0 .534 +(is a number in that base.)3.034 F(If)5.533 E F1(base#)3.033 E F0 .533 +(is omitted, then base 10 is used.)3.033 F .512(When specifying)108 +501.6 R F1(n)3.012 E F0 3.012(,t)C .512 +(he digits greater than 9 are represented by the lo)-3.012 F .513 +(wercase letters, the uppercase letters,)-.25 F .943 +(@, and _, in that order)108 513.6 R 5.943(.I)-.55 G(f)-5.943 E F1(base) +3.443 E F0 .942(is less than or equal to 36, lo)3.443 F .942 (wercase and uppercase letters may be used)-.25 F -(interchangeably to represent numbers between 10 and 35.)108 285.6 Q -.235(Operators are e)108 302.4 R -.25(va)-.25 G .235 +(interchangeably to represent numbers between 10 and 35.)108 525.6 Q +.234(Operators are e)108 542.4 R -.25(va)-.25 G .234 (luated in order of precedence.).25 F(Sub-e)5.234 E .234 -(xpressions in parentheses are e)-.15 F -.25(va)-.25 G .234 -(luated \214rst and may).25 F -.15(ove)108 314.4 S +(xpressions in parentheses are e)-.15 F -.25(va)-.25 G .235 +(luated \214rst and may).25 F -.15(ove)108 554.4 S (rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E/F3 10.95 -/Times-Bold@0 SF(CONDITION)72 331.2 Q(AL EXPRESSIONS)-.219 E F0 .255 -(Conditional e)108 343.2 R .255(xpressions are used by the)-.15 F F1([[) -2.755 E F0 .255(compound command and the)2.755 F F1(test)2.755 E F0(and) -2.755 E F1([)2.756 E F0 -.2(bu)2.756 G .256(iltin commands to test).2 F -.77(\214le attrib)108 355.2 R .77 -(utes and perform string and arithmetic comparisons.)-.2 F .77 -(Expressions are formed from the follo)5.77 F(wing)-.25 E .426 -(unary or binary primaries.)108 367.2 R F1(Bash)5.426 E F0 .426 -(handles se)2.926 F -.15(ve)-.25 G .426 -(ral \214lenames specially when the).15 F 2.926(ya)-.15 G .426 -(re used in e)-2.926 F 2.926(xpressions. If)-.15 F .193 -(the operating system on which)108 379.2 R F1(bash)2.693 E F0 .193 -(is running pro)2.693 F .193 -(vides these special \214les, bash will use them; otherwise it)-.15 F -.589(will emulate them internally with this beha)108 391.2 R .589 -(vior: If an)-.2 F(y)-.15 E F2(\214le)3.089 E F0(ar)3.089 E .589 -(gument to one of the primaries is of the form)-.18 F F2(/de)108 403.2 Q -(v/fd/n)-.15 E F0 2.917(,t)C .417(hen \214le descriptor)-2.917 F F2(n) -2.917 E F0 .417(is check)2.917 F 2.917(ed. If)-.1 F(the)2.917 E F2 -(\214le)2.917 E F0(ar)2.917 E .417 -(gument to one of the primaries is one of)-.18 F F2(/de)2.916 E(v/stdin) --.15 E F0(,)A F2(/de)108 415.2 Q(v/stdout)-.15 E F0 2.5(,o)C(r)-2.5 E F2 -(/de)2.5 E(v/stderr)-.15 E F0 2.5<2c8c>C -(le descriptor 0, 1, or 2, respecti)-2.5 E -.15(ve)-.25 G(ly).15 E 2.5 -(,i)-.65 G 2.5(sc)-2.5 G(heck)-2.5 E(ed.)-.1 E .721 +/Times-Bold@0 SF(CONDITION)72 571.2 Q(AL EXPRESSIONS)-.219 E F0 .256 +(Conditional e)108 583.2 R .256(xpressions are used by the)-.15 F F2([[) +2.755 E F0 .255(compound command and the)2.755 F F2(test)2.755 E F0(and) +2.755 E F2([)2.755 E F0 -.2(bu)2.755 G .255(iltin commands to test).2 F +1.233(\214le attrib)108 595.2 R 1.233 +(utes and perform string and arithmetic comparisons.)-.2 F(The)6.234 E +F2(test)3.734 E F0(abd)3.734 E F2([)3.734 E F0 1.234 +(commands determine their)3.734 F(beha)108 607.2 Q .997 +(vior based on the number of ar)-.2 F .996 +(guments; see the descriptions of those commands for an)-.18 F 3.496(yo) +-.15 G .996(ther com-)-3.496 F(mand-speci\214c actions.)108 619.2 Q .234 +(Expressions are formed from the follo)108 636 R .234 +(wing unary or binary primaries.)-.25 F F2(Bash)5.234 E F0 .235 +(handles se)2.735 F -.15(ve)-.25 G .235(ral \214lenames spe-).15 F .425 +(cially when the)108 648 R 2.925(ya)-.15 G .425(re used in e)-2.925 F +2.925(xpressions. If)-.15 F .425(the operating system on which)2.925 F +F2(bash)2.924 E F0 .424(is running pro)2.924 F .424(vides these)-.15 F +1.153(special \214les, bash will use them; otherwise it will emulate th\ +em internally with this beha)108 660 R 1.153(vior: If an)-.2 F(y)-.15 E +F1(\214le)3.653 E F0(ar)108 672 Q .426 +(gument to one of the primaries is of the form)-.18 F F1(/de)2.926 E +(v/fd/n)-.15 E F0 2.926(,t)C .426(hen \214le descriptor)-2.926 F F1(n) +2.926 E F0 .426(is check)2.926 F 2.926(ed. If)-.1 F(the)2.926 E F1 +(\214le)2.926 E F0(ar)2.926 E(gu-)-.18 E .029 +(ment to one of the primaries is one of)108 684 R F1(/de)2.529 E +(v/stdin)-.15 E F0(,)A F1(/de)2.529 E(v/stdout)-.15 E F0 2.53(,o)C(r) +-2.53 E F1(/de)2.53 E(v/stderr)-.15 E F0 2.53<2c8c>C .03 +(le descriptor 0, 1, or 2, respec-)-2.53 F(ti)108 696 Q -.15(ve)-.25 G +(ly).15 E 2.5(,i)-.65 G 2.5(sc)-2.5 G(heck)-2.5 E(ed.)-.1 E .722 (Unless otherwise speci\214ed, primaries that operate on \214les follo) -108 432 R 3.221(ws)-.25 G .722(ymbolic links and operate on the tar) --3.221 F(get)-.18 E(of the link, rather than the link itself.)108 444 Q -1.096(When used with)108 462 R F1([[)3.596 E F0 3.596(,t)C(he)-3.596 E -F1(<)3.596 E F0(and)3.595 E F1(>)3.595 E F0 1.095(operators sort le) -3.595 F 1.095(xicographically using the current locale.)-.15 F(The)6.095 -E F1(test)3.595 E F0(com-)3.595 E(mand sorts using ASCII ordering.)108 -474 Q F1108 498 Q F2(\214le)2.5 E F0 -.35(Tr)144 498 S(ue if).35 E -F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F1108 510 Q F2 -(\214le)2.5 E F0 -.35(Tr)144 510 S(ue if).35 E F2(\214le)2.5 E F0 -.15 -(ex)2.5 G(ists and is a block special \214le.).15 E F1108 522 Q F2 -(\214le)2.5 E F0 -.35(Tr)144 522 S(ue if).35 E F2(\214le)2.5 E F0 -.15 -(ex)2.5 G(ists and is a character special \214le.).15 E F1108 534 -Q F2(\214le)2.5 E F0 -.35(Tr)144 534 S(ue if).35 E F2(\214le)2.5 E F0 --.15(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F1108 546 Q -F2(\214le)2.5 E F0 -.35(Tr)144 546 S(ue if).35 E F2(\214le)2.5 E F0 -.15 -(ex)2.5 G(ists.).15 E F1108 558 Q F2(\214le)2.5 E F0 -.35(Tr)144 -558 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a re).15 -E(gular \214le.)-.15 E F1108 570 Q F2(\214le)2.5 E F0 -.35(Tr)144 -570 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is set-group-id.).15 E F1108 582 Q F2(\214le)2.5 E F0 --.35(Tr)144 582 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is a symbolic link.).15 E F1108 594 Q F2(\214le)2.5 E F0 --.35(Tr)144 594 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +108 712.8 R 3.221(ws)-.25 G .721(ymbolic links and operate on the tar) +-3.221 F(get)-.18 E(of the link, rather than the link itself.)108 724.8 +Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(32)188.455 E 0 Cg EP +%%Page: 33 33 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.095 +(When used with)108 84 R/F1 10/Times-Bold@0 SF([[)3.595 E F0 3.595(,t)C +(he)-3.595 E F1(<)3.595 E F0(and)3.595 E F1(>)3.595 E F0 1.095 +(operators sort le)3.595 F 1.095 +(xicographically using the current locale.)-.15 F(The)6.096 E F1(test) +3.596 E F0(com-)3.596 E(mand sorts using ASCII ordering.)108 96 Q F1 +108 120 Q/F2 10/Times-Italic@0 SF(\214le)2.5 E F0 -.35(Tr)144 120 +S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F1108 +132 Q F2(\214le)2.5 E F0 -.35(Tr)144 132 S(ue if).35 E F2(\214le)2.5 E +F0 -.15(ex)2.5 G(ists and is a block special \214le.).15 E F1108 +144 Q F2(\214le)2.5 E F0 -.35(Tr)144 144 S(ue if).35 E F2(\214le)2.5 E +F0 -.15(ex)2.5 G(ists and is a character special \214le.).15 E F1 +108 156 Q F2(\214le)2.5 E F0 -.35(Tr)144 156 S(ue if).35 E F2(\214le)2.5 +E F0 -.15(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F1108 +168 Q F2(\214le)2.5 E F0 -.35(Tr)144 168 S(ue if).35 E F2(\214le)2.5 E +F0 -.15(ex)2.5 G(ists.).15 E F1108 180 Q F2(\214le)2.5 E F0 -.35 +(Tr)144 180 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and is a re).15 E(gular \214le.)-.15 E F1108 192 Q F2 +(\214le)2.5 E F0 -.35(Tr)144 192 S(ue if).35 E F2(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is set-group-id.).15 E F1108 204 Q F2(\214le) +2.5 E F0 -.35(Tr)144 204 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and is a symbolic link.).15 E F1108 216 Q F2(\214le)2.5 E F0 +-.35(Tr)144 216 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G (ists and its `).15 E(`stick)-.74 E(y')-.15 E 2.5('b)-.74 G(it is set.) --2.5 E F1108 606 Q F2(\214le)2.5 E F0 -.35(Tr)144 606 S(ue if).35 +-2.5 E F1108 228 Q F2(\214le)2.5 E F0 -.35(Tr)144 228 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a named pipe \(FIFO\).) -.15 E F1108 618 Q F2(\214le)2.5 E F0 -.35(Tr)144 618 S(ue if).35 E +.15 E F1108 240 Q F2(\214le)2.5 E F0 -.35(Tr)144 240 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is readable.).15 E F1108 -630 Q F2(\214le)2.5 E F0 -.35(Tr)144 630 S(ue if).35 E F2(\214le)2.5 E +252 Q F2(\214le)2.5 E F0 -.35(Tr)144 252 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and has a size greater than zero.).15 E F1 -108 642 Q F2(fd)2.5 E F0 -.35(Tr)144 642 S(ue if \214le descriptor).35 E -F2(fd)4.47 E F0(is open and refers to a terminal.)3.27 E F1108 654 -Q F2(\214le)2.5 E F0 -.35(Tr)144 654 S(ue if).35 E F2(\214le)2.5 E F0 +108 264 Q F2(fd)2.5 E F0 -.35(Tr)144 264 S(ue if \214le descriptor).35 E +F2(fd)4.47 E F0(is open and refers to a terminal.)3.27 E F1108 276 +Q F2(\214le)2.5 E F0 -.35(Tr)144 276 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and its set-user).15 E(-id bit is set.)-.2 E F1 -108 666 Q F2(\214le)2.5 E F0 -.35(Tr)144 666 S(ue if).35 E F2(\214le)2.5 -E F0 -.15(ex)2.5 G(ists and is writable.).15 E F1108 678 Q F2 -(\214le)2.5 E F0 -.35(Tr)144 678 S(ue if).35 E F2(\214le)2.5 E F0 -.15 +108 288 Q F2(\214le)2.5 E F0 -.35(Tr)144 288 S(ue if).35 E F2(\214le)2.5 +E F0 -.15(ex)2.5 G(ists and is writable.).15 E F1108 300 Q F2 +(\214le)2.5 E F0 -.35(Tr)144 300 S(ue if).35 E F2(\214le)2.5 E F0 -.15 (ex)2.5 G(ists and is e).15 E -.15(xe)-.15 G(cutable.).15 E F1108 -690 Q F2(\214le)2.5 E F0 -.35(Tr)144 690 S(ue if).35 E F2(\214le)2.5 E +312 Q F2(\214le)2.5 E F0 -.35(Tr)144 312 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E(fecti)-.25 E -.3 -.15(ve g)-.25 H(roup id.).15 E F1108 702 Q F2(\214le)2.5 E F0 --.35(Tr)144 702 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is a symbolic link.).15 E F1108 714 Q F2(\214le)2.5 E F0 --.35(Tr)144 714 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and has been modi\214ed since it w).15 E(as last read.)-.1 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(31)192.055 E 0 Cg EP -%%Page: 32 32 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF108 84 Q/F2 10/Times-Italic@0 SF(\214le)2.5 E F0 -.35(Tr)144 84 -S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E -(wned by the ef)-.25 E(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id.).15 E F1 -108 96 Q F2(\214le)2.5 E F0 -.35(Tr)144 96 S(ue if).35 E F2 -(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a sock).15 E(et.)-.1 E F2 -(\214le1)108 108 Q F1(\255ef)2.5 E F2(\214le2)2.5 E F0 -.35(Tr)144 120 S -(ue if).35 E F2(\214le1)2.5 E F0(and)2.5 E F2(\214le2)2.5 E F0 -(refer to the same de)2.5 E(vice and inode numbers.)-.25 E F2(\214le1) -108 132 Q F02.5 E F1(nt)A F2(\214le2)2.5 E F0 -.35(Tr)144 144 S -(ue if).35 E F2(\214le1)2.5 E F0(is ne)2.5 E -(wer \(according to modi\214cation date\) than)-.25 E F2(\214le2)2.5 E -F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F2(\214le1)2.5 E F0 -.15(ex)2.5 G -(ists and).15 E F2(\214le2)2.5 E F0(does not.)2.5 E F2(\214le1)108 156 Q -F02.5 E F1(ot)A F2(\214le2)2.5 E F0 -.35(Tr)144 168 S(ue if).35 E F2 -(\214le1)2.5 E F0(is older than)2.5 E F2(\214le2)2.5 E F0 2.5(,o)C 2.5 -(ri)-2.5 G(f)-2.5 E F2(\214le2)2.5 E F0 -.15(ex)2.5 G(ists and).15 E F2 -(\214le1)2.5 E F0(does not.)2.5 E F1108 180 Q F2(optname)2.5 E F0 --.35(Tr)144 192 S .262(ue if the shell option).35 F F2(optname)2.992 E -F0 .262(is enabled.)2.942 F .262 +.3 -.15(ve g)-.25 H(roup id.).15 E F1108 324 Q F2(\214le)2.5 E F0 +-.35(Tr)144 324 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and is a symbolic link.).15 E F1108 336 Q F2(\214le)2.5 E F0 +-.35(Tr)144 336 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and has been modi\214ed since it w).15 E(as last read.)-.1 E F1 +108 348 Q F2(\214le)2.5 E F0 -.35(Tr)144 348 S(ue if).35 E F2 +(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E +(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id.).15 E F1108 360 Q F2 +(\214le)2.5 E F0 -.35(Tr)144 360 S(ue if).35 E F2(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is a sock).15 E(et.)-.1 E F2(\214le1)108 372 Q F1 +(\255ef)2.5 E F2(\214le2)2.5 E F0 -.35(Tr)144 384 S(ue if).35 E F2 +(\214le1)2.5 E F0(and)2.5 E F2(\214le2)2.5 E F0(refer to the same de)2.5 +E(vice and inode numbers.)-.25 E F2(\214le1)108 396 Q F02.5 E F1(nt) +A F2(\214le2)2.5 E F0 -.35(Tr)144 408 S(ue if).35 E F2(\214le1)2.5 E F0 +(is ne)2.5 E(wer \(according to modi\214cation date\) than)-.25 E F2 +(\214le2)2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F2(\214le1)2.5 E F0 +-.15(ex)2.5 G(ists and).15 E F2(\214le2)2.5 E F0(does not.)2.5 E F2 +(\214le1)108 420 Q F02.5 E F1(ot)A F2(\214le2)2.5 E F0 -.35(Tr)144 +432 S(ue if).35 E F2(\214le1)2.5 E F0(is older than)2.5 E F2(\214le2)2.5 +E F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F2(\214le2)2.5 E F0 -.15(ex)2.5 G +(ists and).15 E F2(\214le1)2.5 E F0(does not.)2.5 E F1108 444 Q F2 +(optname)2.5 E F0 -.35(Tr)144 456 S .263(ue if the shell option).35 F F2 +(optname)2.992 E F0 .262(is enabled.)2.942 F .262 (See the list of options under the description of the)5.262 F F1 -2.763 E F0(option to the)144 204 Q F1(set)2.5 E F0 -.2(bu)2.5 G -(iltin belo).2 E -.65(w.)-.25 G F1108 216 Q F2(varname)2.5 E F0 --.35(Tr)144 228 S(ue if the shell v).35 E(ariable)-.25 E F2(varname)2.79 +2.762 E F0(option to the)144 468 Q F1(set)2.5 E F0 -.2(bu)2.5 G +(iltin belo).2 E -.65(w.)-.25 G F1108 480 Q F2(varname)2.5 E F0 +-.35(Tr)144 492 S(ue if the shell v).35 E(ariable)-.25 E F2(varname)2.79 E F0(is set \(has been assigned a v)2.68 E(alue\).)-.25 E F1108 -240 Q F2(varname)2.5 E F0 -.35(Tr)144 252 S(ue if the shell v).35 E +504 Q F2(varname)2.5 E F0 -.35(Tr)144 516 S(ue if the shell v).35 E (ariable)-.25 E F2(varname)2.79 E F0(is set and is a name reference.) -2.68 E F1108 264 Q F2(string)2.5 E F0 -.35(Tr)144 276 S +2.68 E F1108 528 Q F2(string)2.5 E F0 -.35(Tr)144 540 S (ue if the length of).35 E F2(string)2.5 E F0(is zero.)2.5 E F2(string) -108 288 Q F1108 300 Q F2(string)2.5 E F0 -.35(Tr)144 312 S +108 552 Q F1108 564 Q F2(string)2.5 E F0 -.35(Tr)144 576 S (ue if the length of).35 E F2(string)2.84 E F0(is non-zero.)2.72 E F2 -(string1)108 328.8 Q F1(==)2.5 E F2(string2)2.5 E(string1)108 340.8 Q F1 -(=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 352.8 S .862 +(string1)108 592.8 Q F1(==)2.5 E F2(string2)2.5 E(string1)108 604.8 Q F1 +(=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 616.8 S .861 (ue if the strings are equal.).35 F F1(=)5.861 E F0 .861 -(should be used with the)3.361 F F1(test)3.361 E F0 .861 -(command for POSIX conformance.)3.361 F .446(When used with the)144 -364.8 R F1([[)2.946 E F0 .446 -(command, this performs pattern matching as described abo)2.946 F .747 --.15(ve \()-.15 H F1(Compound).15 E(Commands)144 376.8 Q F0(\).)A F2 -(string1)108 393.6 Q F1(!=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 405.6 S -(ue if the strings are not equal.).35 E F2(string1)108 422.4 Q F1(<)2.5 -E F2(string2)2.5 E F0 -.35(Tr)144 434.4 S(ue if).35 E F2(string1)2.5 E +(should be used with the)3.361 F F1(test)3.361 E F0 .862 +(command for POSIX conformance.)3.362 F .447(When used with the)144 +628.8 R F1([[)2.946 E F0 .446 +(command, this performs pattern matching as described abo)2.946 F .746 +-.15(ve \()-.15 H F1(Compound).15 E(Commands)144 640.8 Q F0(\).)A F2 +(string1)108 657.6 Q F1(!=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 669.6 S +(ue if the strings are not equal.).35 E F2(string1)108 686.4 Q F1(<)2.5 +E F2(string2)2.5 E F0 -.35(Tr)144 698.4 S(ue if).35 E F2(string1)2.5 E F0(sorts before)2.5 E F2(string2)2.5 E F0(le)2.5 E(xicographically)-.15 -E(.)-.65 E F2(string1)108 451.2 Q F1(>)2.5 E F2(string2)2.5 E F0 -.35 -(Tr)144 463.2 S(ue if).35 E F2(string1)2.5 E F0(sorts after)2.5 E F2 -(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E F2(ar)108.33 -480 Q(g1)-.37 E F1(OP)2.5 E F2(ar)2.5 E(g2)-.37 E/F3 9/Times-Bold@0 SF -(OP)144 492 Q F0 .385(is one of)2.635 F F1(\255eq)2.885 E F0(,)A F1 -(\255ne)2.885 E F0(,)A F1(\255lt)2.885 E F0(,)A F1(\255le)2.885 E F0(,)A -F1(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F1(\255ge)2.885 E F0 5.385 -(.T)C .385(hese arithmetic binary operators return true if)-5.385 F F2 -(ar)2.884 E(g1)-.37 E F0 .845(is equal to, not equal to, less than, les\ -s than or equal to, greater than, or greater than or equal to)144 504 R -F2(ar)144 516 Q(g2)-.37 E F0 2.5(,r)C(especti)-2.5 E -.15(ve)-.25 G(ly) -.15 E(.)-.65 E F2(Ar)6.01 E(g1)-.37 E F0(and)2.5 E F2(ar)2.83 E(g2)-.37 -E F0(may be positi)2.52 E .3 -.15(ve o)-.25 H 2.5(rn).15 G -2.25 -.15 -(eg a)-2.5 H(ti).15 E .3 -.15(ve i)-.25 H(nte).15 E(gers.)-.15 E/F4 -10.95/Times-Bold@0 SF(SIMPLE COMMAND EXP)72 532.8 Q(ANSION)-.81 E F0 -.614(When a simple command is e)108 544.8 R -.15(xe)-.15 G .614 -(cuted, the shell performs the follo).15 F .613(wing e)-.25 F .613 +E(.)-.65 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(33)188.455 E +0 Cg EP +%%Page: 34 34 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 +/Times-Italic@0 SF(string1)108 84 Q/F2 10/Times-Bold@0 SF(>)2.5 E F1 +(string2)2.5 E F0 -.35(Tr)144 96 S(ue if).35 E F1(string1)2.5 E F0 +(sorts after)2.5 E F1(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E +(.)-.65 E F1(ar)108.33 112.8 Q(g1)-.37 E F2(OP)2.5 E F1(ar)2.5 E(g2)-.37 +E/F3 9/Times-Bold@0 SF(OP)144 124.8 Q F0 .385(is one of)2.634 F F2 +(\255eq)2.885 E F0(,)A F2(\255ne)2.885 E F0(,)A F2(\255lt)2.885 E F0(,)A +F2(\255le)2.885 E F0(,)A F2(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F2 +(\255ge)2.885 E F0 5.385(.T)C .385 +(hese arithmetic binary operators return true if)-5.385 F F1(ar)2.885 E +(g1)-.37 E F0 .845(is equal to, not equal to, less than, less than or e\ +qual to, greater than, or greater than or equal to)144 136.8 R F1(ar)144 +148.8 Q(g2)-.37 E F0 3.589(,r)C(especti)-3.589 E -.15(ve)-.25 G(ly).15 E +(.)-.65 E F1(Ar)7.099 E(g1)-.37 E F0(and)3.589 E F1(ar)3.919 E(g2)-.37 E +F0 1.089(may be positi)3.609 F 1.389 -.15(ve o)-.25 H 3.589(rn).15 G +-2.25 -.15(eg a)-3.589 H(ti).15 E 1.389 -.15(ve i)-.25 H(nte).15 E 3.59 +(gers. When)-.15 F 1.09(used with the)3.59 F F2([[)3.59 E F0(command,) +144 160.8 Q F1(Ar)4.22 E(g1)-.37 E F0(and)3.21 E F1(Ar)4.22 E(g2)-.37 E +F0 .71(are e)3.23 F -.25(va)-.25 G .71(luated as arithmetic e).25 F +3.209(xpressions \(see)-.15 F F3 .709(ARITHMETIC EV)3.209 F(ALU)-1.215 E +(A-)-.54 E(TION)144 172.8 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E/F4 +10.95/Times-Bold@0 SF(SIMPLE COMMAND EXP)72 189.6 Q(ANSION)-.81 E F0 +.613(When a simple command is e)108 201.6 R -.15(xe)-.15 G .614 +(cuted, the shell performs the follo).15 F .614(wing e)-.25 F .614 (xpansions, assignments, and redi-)-.15 F(rections, from left to right.) -108 556.8 Q(1.)108 573.6 Q 1.848(The w)144 573.6 R 1.848 -(ords that the parser has mark)-.1 F 1.848(ed as v)-.1 F 1.849 +108 213.6 Q(1.)108 230.4 Q 1.849(The w)144 230.4 R 1.849 +(ords that the parser has mark)-.1 F 1.848(ed as v)-.1 F 1.848 (ariable assignments \(those preceding the command)-.25 F -(name\) and redirections are sa)144 585.6 Q -.15(ve)-.2 G 2.5(df).15 G -(or later processing.)-2.5 E(2.)108 602.4 Q 1.164(The w)144 602.4 R -1.164(ords that are not v)-.1 F 1.164 -(ariable assignments or redirections are e)-.25 F 3.663(xpanded. If)-.15 -F(an)3.663 E 3.663(yw)-.15 G 1.163(ords remain)-3.763 F .775(after e)144 -614.4 R .775(xpansion, the \214rst w)-.15 F .775(ord is tak)-.1 F .775 +(name\) and redirections are sa)144 242.4 Q -.15(ve)-.2 G 2.5(df).15 G +(or later processing.)-2.5 E(2.)108 259.2 Q 1.163(The w)144 259.2 R +1.163(ords that are not v)-.1 F 1.164 +(ariable assignments or redirections are e)-.25 F 3.664(xpanded. If)-.15 +F(an)3.664 E 3.664(yw)-.15 G 1.164(ords remain)-3.764 F .776(after e)144 +271.2 R .776(xpansion, the \214rst w)-.15 F .776(ord is tak)-.1 F .775 (en to be the name of the command and the remaining w)-.1 F(ords)-.1 E -(are the ar)144 626.4 Q(guments.)-.18 E(3.)108 643.2 Q -(Redirections are performed as described abo)144 643.2 Q .3 -.15(ve u) --.15 H(nder).15 E F3(REDIRECTION)2.5 E/F5 9/Times-Roman@0 SF(.)A F0(4.) -108 660 Q .717(The te)144 660 R .717(xt after the)-.15 F F1(=)3.217 E F0 +(are the ar)144 283.2 Q(guments.)-.18 E(3.)108 300 Q +(Redirections are performed as described abo)144 300 Q .3 -.15(ve u)-.15 +H(nder).15 E F3(REDIRECTION)2.5 E/F5 9/Times-Roman@0 SF(.)A F0(4.)108 +316.8 Q .716(The te)144 316.8 R .717(xt after the)-.15 F F2(=)3.217 E F0 .717(in each v)3.217 F .717(ariable assignment under)-.25 F .717 (goes tilde e)-.18 F .717(xpansion, parameter e)-.15 F(xpansion,)-.15 E -.339(command substitution, arithmetic e)144 672 R .339 +.34(command substitution, arithmetic e)144 328.8 R .339 (xpansion, and quote remo)-.15 F -.25(va)-.15 G 2.839(lb).25 G .339 -(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 684 Q .332 -(If no command name results, the v)108 700.8 R .332 +(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 340.8 Q +.332(If no command name results, the v)108 357.6 R .332 (ariable assignments af)-.25 F .332(fect the current shell en)-.25 F -2.832(vironment. Otherwise,)-.4 F(the)2.832 E -.25(va)108 712.8 S .757 +2.833(vironment. Otherwise,)-.4 F(the)2.833 E -.25(va)108 369.6 S .757 (riables are added to the en).25 F .757(vironment of the e)-.4 F -.15 (xe)-.15 G .757(cuted command and do not af).15 F .757 -(fect the current shell en)-.25 F(vi-)-.4 E 3.177(ronment. If)108 724.8 -R(an)3.177 E 3.177(yo)-.15 G 3.177(ft)-3.177 G .677 -(he assignments attempts to assign a v)-3.177 F .677 -(alue to a readonly v)-.25 F .676(ariable, an error occurs, and)-.25 F -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(32)192.055 E 0 Cg EP -%%Page: 33 33 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(the command e)108 -84 Q(xits with a non-zero status.)-.15 E .149 -(If no command name results, redirections are performed, b)108 100.8 R -.149(ut do not af)-.2 F .15(fect the current shell en)-.25 F 2.65 -(vironment. A)-.4 F(redirection error causes the command to e)108 112.8 +(fect the current shell en)-.25 F(vi-)-.4 E 3.176(ronment. If)108 381.6 +R(an)3.176 E 3.176(yo)-.15 G 3.176(ft)-3.176 G .677 +(he assignments attempts to assign a v)-3.176 F .677 +(alue to a readonly v)-.25 F .677(ariable, an error occurs, and)-.25 F +(the command e)108 393.6 Q(xits with a non-zero status.)-.15 E .15 +(If no command name results, redirections are performed, b)108 410.4 R +.149(ut do not af)-.2 F .149(fect the current shell en)-.25 F 2.649 +(vironment. A)-.4 F(redirection error causes the command to e)108 422.4 Q(xit with a non-zero status.)-.15 E 1.064 -(If there is a command name left after e)108 129.6 R 1.064(xpansion, e) +(If there is a command name left after e)108 439.2 R 1.064(xpansion, e) -.15 F -.15(xe)-.15 G 1.064(cution proceeds as described belo).15 F -4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .068(command e)108 -141.6 R 2.568(xits. If)-.15 F .069(one of the e)2.568 F .069 -(xpansions contained a command substitution, the e)-.15 F .069 -(xit status of the command)-.15 F .467(is the e)108 153.6 R .466 -(xit status of the last command substitution performed.)-.15 F .466 -(If there were no command substitutions, the)5.466 F(command e)108 165.6 -Q(xits with a status of zero.)-.15 E/F1 10.95/Times-Bold@0 SF -(COMMAND EXECUTION)72 182.4 Q F0 .546 -(After a command has been split into w)108 194.4 R .547 +4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .069(command e)108 +451.2 R 2.569(xits. If)-.15 F .069(one of the e)2.569 F .069 +(xpansions contained a command substitution, the e)-.15 F .068 +(xit status of the command)-.15 F .466(is the e)108 463.2 R .466 +(xit status of the last command substitution performed.)-.15 F .467 +(If there were no command substitutions, the)5.466 F(command e)108 475.2 +Q(xits with a status of zero.)-.15 E F4(COMMAND EXECUTION)72 492 Q F0 +.547(After a command has been split into w)108 504 R .546 (ords, if it results in a simple command and an optional list of ar)-.1 -F(gu-)-.18 E(ments, the follo)108 206.4 Q(wing actions are tak)-.25 E -(en.)-.1 E .379(If the command name contains no slashes, the shell atte\ -mpts to locate it.)108 223.2 R .379(If there e)5.379 F .379 +F(gu-)-.18 E(ments, the follo)108 516 Q(wing actions are tak)-.25 E(en.) +-.1 E .379(If the command name contains no slashes, the shell attempts \ +to locate it.)108 532.8 R .379(If there e)5.379 F .379 (xists a shell function by)-.15 F .246(that name, that function is in) -108 235.2 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G -.246(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E/F2 9 -/Times-Bold@0 SF(FUNCTIONS)2.746 E/F3 9/Times-Roman@0 SF(.)A F0 .246 -(If the name does not match a func-)4.746 F -(tion, the shell searches for it in the list of shell b)108 247.2 Q 2.5 +108 544.8 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G +.246(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E F3(FUNCTIONS) +2.746 E F5(.)A F0 .246(If the name does not match a func-)4.746 F +(tion, the shell searches for it in the list of shell b)108 556.8 Q 2.5 (uiltins. If)-.2 F 2.5(am)2.5 G(atch is found, that b)-2.5 E -(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E .31 -(If the name is neither a shell function nor a b)108 264 R .309 -(uiltin, and contains no slashes,)-.2 F/F4 10/Times-Bold@0 SF(bash)2.809 -E F0 .309(searches each element of)2.809 F(the)108 276 Q F2 -.666(PA) -3.162 G(TH)-.189 E F0 .662(for a directory containing an e)2.912 F -.15 -(xe)-.15 G .662(cutable \214le by that name.).15 F F4(Bash)5.662 E F0 -.663(uses a hash table to remember)3.162 F 1.915 -(the full pathnames of e)108 288 R -.15(xe)-.15 G 1.915 -(cutable \214les \(see).15 F F4(hash)4.415 E F0(under)4.415 E F2 1.915 -(SHELL B)4.415 F(UIL)-.09 E 1.914(TIN COMMANDS)-.828 F F0(belo)4.164 E -4.414(w\). A)-.25 F(full)4.414 E .719(search of the directories in)108 -300 R F2 -.666(PA)3.219 G(TH)-.189 E F0 .72 -(is performed only if the command is not found in the hash table.)2.969 -F .72(If the)5.72 F .956(search is unsuccessful, the shell searches for\ - a de\214ned shell function named)108 312 R F4(command_not_f)3.455 E -(ound_han-)-.25 E(dle)108 324 Q F0 5.277(.I)C 2.777(ft)-5.277 G .277 -(hat function e)-2.777 F .277(xists, it is in)-.15 F -.2(vo)-.4 G -.1 -(ke).2 G 2.777(dw).1 G .278 -(ith the original command and the original command')-2.777 F 2.778(sa) --.55 G -.18(rg)-2.778 G(uments).18 E .776(as its ar)108 336 R .776 -(guments, and the function')-.18 F 3.275(se)-.55 G .775 -(xit status becomes the e)-3.425 F .775(xit status of the shell.)-.15 F -.775(If that function is not)5.775 F -(de\214ned, the shell prints an error message and returns an e)108 348 Q -(xit status of 127.)-.15 E 1.089(If the search is successful, or if the\ - command name contains one or more slashes, the shell e)108 364.8 R -.15 -(xe)-.15 G 1.09(cutes the).15 F .198(named program in a separate e)108 -376.8 R -.15(xe)-.15 G .198(cution en).15 F 2.698(vironment. Ar)-.4 F -.198(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .197 -(n, and the remain-).15 F(ing ar)108 388.8 Q +(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E .309 +(If the name is neither a shell function nor a b)108 573.6 R .31 +(uiltin, and contains no slashes,)-.2 F F2(bash)2.81 E F0 .31 +(searches each element of)2.81 F(the)108 585.6 Q F3 -.666(PA)3.163 G(TH) +-.189 E F0 .662(for a directory containing an e)2.913 F -.15(xe)-.15 G +.662(cutable \214le by that name.).15 F F2(Bash)5.662 E F0 .662 +(uses a hash table to remember)3.162 F 1.914(the full pathnames of e)108 +597.6 R -.15(xe)-.15 G 1.915(cutable \214les \(see).15 F F2(hash)4.415 E +F0(under)4.415 E F3 1.915(SHELL B)4.415 F(UIL)-.09 E 1.915(TIN COMMANDS) +-.828 F F0(belo)4.165 E 4.415(w\). A)-.25 F(full)4.415 E .72 +(search of the directories in)108 609.6 R F3 -.666(PA)3.22 G(TH)-.189 E +F0 .719 +(is performed only if the command is not found in the hash table.)2.97 F +.719(If the)5.719 F .956(search is unsuccessful, the shell searches for\ + a de\214ned shell function named)108 621.6 R F2(command_not_f)3.456 E +(ound_han-)-.25 E(dle)108 633.6 Q F0 6.006(.I)C 3.506(ft)-6.006 G 1.006 +(hat function e)-3.506 F 1.006(xists, it is in)-.15 F -.2(vo)-.4 G -.1 +(ke).2 G 3.506(di).1 G 3.506(nas)-3.506 G 1.005(eparate e)-3.506 F -.15 +(xe)-.15 G 1.005(cution en).15 F 1.005 +(vironment with the original command)-.4 F .255 +(and the original command')108 645.6 R 2.755(sa)-.55 G -.18(rg)-2.755 G +.255(uments as its ar).18 F .256(guments, and the function')-.18 F 2.756 +(se)-.55 G .256(xit status becomes the e)-2.906 F .256(xit sta-)-.15 F +.263(tus of that subshell.)108 657.6 R .263(If that function is not de\ +\214ned, the shell prints an error message and returns an e)5.263 F .263 +(xit sta-)-.15 F(tus of 127.)108 669.6 Q 1.089(If the search is success\ +ful, or if the command name contains one or more slashes, the shell e) +108 686.4 R -.15(xe)-.15 G 1.09(cutes the).15 F .198 +(named program in a separate e)108 698.4 R -.15(xe)-.15 G .198 +(cution en).15 F 2.698(vironment. Ar)-.4 F .198 +(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .197 +(n, and the remain-).15 F(ing ar)108 710.4 Q (guments to the command are set to the ar)-.18 E(guments gi)-.18 E -.15 -(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.809(If this e)108 405.6 R +(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.809(If this e)108 727.2 R -.15(xe)-.15 G 1.809(cution f).15 F 1.809 (ails because the \214le is not in e)-.1 F -.15(xe)-.15 G 1.809 (cutable format, and the \214le is not a directory).15 F 4.309(,i)-.65 G -4.309(ti)-4.309 G(s)-4.309 E .678(assumed to be a)108 417.6 R/F5 10 -/Times-Italic@0 SF .678(shell script)3.178 F F0 3.178(,a\214)C .678 -(le containing shell commands.)-3.178 F 3.178(As)5.678 G .678 -(ubshell is spa)-3.178 F .677(wned to e)-.15 F -.15(xe)-.15 G .677 -(cute it.).15 F(This)5.677 E .329 -(subshell reinitializes itself, so that the ef)108 429.6 R .329 +4.309(ti)-4.309 G(s)-4.309 E(GNU Bash 5.0)72 768 Q(2018 December 7) +139.295 E(34)188.455 E 0 Cg EP +%%Page: 35 35 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .678 +(assumed to be a)108 84 R/F1 10/Times-Italic@0 SF .678(shell script) +3.178 F F0 3.178(,a\214)C .678(le containing shell commands.)-3.178 F +3.178(As)5.678 G .678(ubshell is spa)-3.178 F .677(wned to e)-.15 F -.15 +(xe)-.15 G .677(cute it.).15 F(This)5.677 E .329 +(subshell reinitializes itself, so that the ef)108 96 R .329 (fect is as if a ne)-.25 F 2.83(ws)-.25 G .33(hell had been in)-2.83 F -.2(vo)-.4 G -.1(ke).2 G 2.83(dt).1 G 2.83(oh)-2.83 G .33 -(andle the script, with)-2.83 F 1.219(the e)108 441.6 R 1.219 +(andle the script, with)-2.83 F 1.219(the e)108 108 R 1.219 (xception that the locations of commands remembered by the parent \(see) --.15 F F4(hash)3.719 E F0(belo)3.719 E 3.719(wu)-.25 G(nder)-3.719 E F2 -(SHELL)3.719 E -.09(BU)108 453.6 S(IL).09 E(TIN COMMANDS)-.828 E F3(\))A -F0(are retained by the child.)2.25 E .347(If the program is a \214le be) -108 470.4 R .347(ginning with)-.15 F F4(#!)2.847 E F0 2.847(,t)C .348(h\ +-.15 F/F2 10/Times-Bold@0 SF(hash)3.719 E F0(belo)3.719 E 3.719(wu)-.25 +G(nder)-3.719 E/F3 9/Times-Bold@0 SF(SHELL)3.719 E -.09(BU)108 120 S(IL) +.09 E(TIN COMMANDS)-.828 E/F4 9/Times-Roman@0 SF(\))A F0 +(are retained by the child.)2.25 E .347(If the program is a \214le be) +108 136.8 R .347(ginning with)-.15 F F2(#!)2.847 E F0 2.847(,t)C .348(h\ e remainder of the \214rst line speci\214es an interpreter for the pro-) --2.847 F 3.178(gram. The)108 482.4 R .678(shell e)3.178 F -.15(xe)-.15 G +-2.847 F 3.178(gram. The)108 148.8 R .678(shell e)3.178 F -.15(xe)-.15 G .678(cutes the speci\214ed interpreter on operating systems that do not\ handle this e).15 F -.15(xe)-.15 G(cutable).15 E 1.192(format themselv) -108 494.4 R 3.692(es. The)-.15 F(ar)3.693 E 1.193 +108 160.8 R 3.692(es. The)-.15 F(ar)3.693 E 1.193 (guments to the interpreter consist of a single optional ar)-.18 F 1.193 (gument follo)-.18 F 1.193(wing the)-.25 F 1.131 -(interpreter name on the \214rst line of the program, follo)108 506.4 R +(interpreter name on the \214rst line of the program, follo)108 172.8 R 1.13(wed by the name of the program, follo)-.25 F 1.13(wed by the)-.25 F -(command ar)108 518.4 Q(guments, if an)-.18 E -.65(y.)-.15 G F1 -(COMMAND EXECUTION ENVIR)72 535.2 Q(ONMENT)-.329 E F0(The shell has an) -108 547.2 Q F5 -.2(ex)2.5 G(ecution en).2 E(vir)-.4 E(onment)-.45 E F0 -2.5(,w)C(hich consists of the follo)-2.5 E(wing:)-.25 E<83>108 564 Q -1.405(open \214les inherited by the shell at in)144 564 R -.2(vo)-.4 G -1.406(cation, as modi\214ed by redirections supplied to the).2 F F4 -(exec)3.906 E F0 -.2(bu)144 576 S(iltin).2 E<83>108 592.8 Q -(the current w)144 592.8 Q(orking directory as set by)-.1 E F4(cd)2.5 E -F0(,)A F4(pushd)2.5 E F0 2.5(,o)C(r)-2.5 E F4(popd)2.5 E F0 2.5(,o)C 2.5 -(ri)-2.5 G(nherited by the shell at in)-2.5 E -.2(vo)-.4 G(cation).2 E -<83>108 609.6 Q(the \214le creation mode mask as set by)144 609.6 Q F4 -(umask)2.5 E F0(or inherited from the shell')2.5 E 2.5(sp)-.55 G(arent) --2.5 E<83>108 626.4 Q(current traps set by)144 626.4 Q F4(trap)2.5 E F0 -<83>108 643.2 Q .257(shell parameters that are set by v)144 643.2 R .256 -(ariable assignment or with)-.25 F F4(set)2.756 E F0 .256 +(command ar)108 184.8 Q(guments, if an)-.18 E -.65(y.)-.15 G/F5 10.95 +/Times-Bold@0 SF(COMMAND EXECUTION ENVIR)72 201.6 Q(ONMENT)-.329 E F0 +(The shell has an)108 213.6 Q F1 -.2(ex)2.5 G(ecution en).2 E(vir)-.4 E +(onment)-.45 E F0 2.5(,w)C(hich consists of the follo)-2.5 E(wing:)-.25 +E<83>108 230.4 Q 1.405(open \214les inherited by the shell at in)144 +230.4 R -.2(vo)-.4 G 1.406 +(cation, as modi\214ed by redirections supplied to the).2 F F2(exec) +3.906 E F0 -.2(bu)144 242.4 S(iltin).2 E<83>108 259.2 Q(the current w) +144 259.2 Q(orking directory as set by)-.1 E F2(cd)2.5 E F0(,)A F2 +(pushd)2.5 E F0 2.5(,o)C(r)-2.5 E F2(popd)2.5 E F0 2.5(,o)C 2.5(ri)-2.5 +G(nherited by the shell at in)-2.5 E -.2(vo)-.4 G(cation).2 E<83>108 276 +Q(the \214le creation mode mask as set by)144 276 Q F2(umask)2.5 E F0 +(or inherited from the shell')2.5 E 2.5(sp)-.55 G(arent)-2.5 E<83>108 +292.8 Q(current traps set by)144 292.8 Q F2(trap)2.5 E F0<83>108 309.6 Q +.257(shell parameters that are set by v)144 309.6 R .256 +(ariable assignment or with)-.25 F F2(set)2.756 E F0 .256 (or inherited from the shell')2.756 F 2.756(sp)-.55 G(arent)-2.756 E -(in the en)144 655.2 Q(vironment)-.4 E<83>108 672 Q -(shell functions de\214ned during e)144 672 Q -.15(xe)-.15 G +(in the en)144 321.6 Q(vironment)-.4 E<83>108 338.4 Q +(shell functions de\214ned during e)144 338.4 Q -.15(xe)-.15 G (cution or inherited from the shell').15 E 2.5(sp)-.55 G -(arent in the en)-2.5 E(vironment)-.4 E<83>108 688.8 Q -(options enabled at in)144 688.8 Q -.2(vo)-.4 G(cation \(either by def) -.2 E(ault or with command-line ar)-.1 E(guments\) or by)-.18 E F4(set) -2.5 E F0<83>108 705.6 Q(options enabled by)144 705.6 Q F4(shopt)2.5 E F0 -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(33)192.055 E 0 Cg EP -%%Page: 34 34 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>108 84 Q -(shell aliases de\214ned with)144 84 Q/F1 10/Times-Bold@0 SF(alias)2.5 E -F0<83>108 100.8 Q -.25(va)144 100.8 S +(arent in the en)-2.5 E(vironment)-.4 E<83>108 355.2 Q +(options enabled at in)144 355.2 Q -.2(vo)-.4 G(cation \(either by def) +.2 E(ault or with command-line ar)-.1 E(guments\) or by)-.18 E F2(set) +2.5 E F0<83>108 372 Q(options enabled by)144 372 Q F2(shopt)2.5 E F0<83> +108 388.8 Q(shell aliases de\214ned with)144 388.8 Q F2(alias)2.5 E F0 +<83>108 405.6 Q -.25(va)144 405.6 S (rious process IDs, including those of background jobs, the v).25 E -(alue of)-.25 E F1($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E -/F2 9/Times-Bold@0 SF(PPID)2.5 E F0 .426 -(When a simple command other than a b)108 117.6 R .427 -(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .427 +(alue of)-.25 E F2($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E +F3(PPID)2.5 E F0 .426(When a simple command other than a b)108 422.4 R +.427(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .427 (cuted, it is in).15 F -.2(vo)-.4 G -.1(ke).2 G 2.927(di).1 G 2.927(nas) --2.927 G(eparate)-2.927 E -.15(exe)108 129.6 S .134(cution en).15 F .134 +-2.927 G(eparate)-2.927 E -.15(exe)108 434.4 S .134(cution en).15 F .134 (vironment that consists of the follo)-.4 F 2.634(wing. Unless)-.25 F .133(otherwise noted, the v)2.634 F .133(alues are inherited from)-.25 F -(the shell.)108 141.6 Q<83>108 158.4 Q 1.055(the shell')144 158.4 R +(the shell.)108 446.4 Q<83>108 463.2 Q 1.055(the shell')144 463.2 R 3.555(so)-.55 G 1.055(pen \214les, plus an)-3.555 F 3.556(ym)-.15 G 1.056 (odi\214cations and additions speci\214ed by redirections to the com-) --3.556 F(mand)144 170.4 Q<83>108 187.2 Q(the current w)144 187.2 Q -(orking directory)-.1 E<83>108 204 Q(the \214le creation mode mask)144 -204 Q<83>108 220.8 Q .857(shell v)144 220.8 R .857 +-3.556 F(mand)144 475.2 Q<83>108 492 Q(the current w)144 492 Q +(orking directory)-.1 E<83>108 508.8 Q(the \214le creation mode mask)144 +508.8 Q<83>108 525.6 Q .857(shell v)144 525.6 R .857 (ariables and functions mark)-.25 F .857(ed for e)-.1 F .857 (xport, along with v)-.15 F .857(ariables e)-.25 F .857 -(xported for the command,)-.15 F(passed in the en)144 232.8 Q(vironment) --.4 E<83>108 249.6 Q .306(traps caught by the shell are reset to the v) -144 249.6 R .307(alues inherited from the shell')-.25 F 2.807(sp)-.55 G +(xported for the command,)-.15 F(passed in the en)144 537.6 Q(vironment) +-.4 E<83>108 554.4 Q .306(traps caught by the shell are reset to the v) +144 554.4 R .307(alues inherited from the shell')-.25 F 2.807(sp)-.55 G .307(arent, and traps ignored)-2.807 F(by the shell are ignored)144 -261.6 Q 2.5(Ac)108 278.4 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5 +566.4 Q 2.5(Ac)108 583.2 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5 (di).1 G 2.5(nt)-2.5 G(his separate en)-2.5 E(vironment cannot af)-.4 E (fect the shell')-.25 E 2.5(se)-.55 G -.15(xe)-2.65 G(cution en).15 E (vironment.)-.4 E .577(Command substitution, commands grouped with pare\ -ntheses, and asynchronous commands are in)108 295.2 R -.2(vo)-.4 G -.1 -(ke).2 G 3.077(di).1 G(n)-3.077 E 2.744(as)108 307.2 S .244(ubshell en) --2.744 F .244(vironment that is a duplicate of the shell en)-.4 F .245 +ntheses, and asynchronous commands are in)108 600 R -.2(vo)-.4 G -.1(ke) +.2 G 3.077(di).1 G(n)-3.077 E 2.744(as)108 612 S .244(ubshell en)-2.744 +F .244(vironment that is a duplicate of the shell en)-.4 F .245 (vironment, e)-.4 F .245(xcept that traps caught by the shell are)-.15 F -.359(reset to the v)108 319.2 R .358 +.359(reset to the v)108 624 R .358 (alues that the shell inherited from its parent at in)-.25 F -.2(vo)-.4 G 2.858(cation. Builtin).2 F .358(commands that are in)2.858 F -.2(vo) --.4 G -.1(ke).2 G(d).1 E .856(as part of a pipeline are also e)108 331.2 -R -.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.357 +-.4 G -.1(ke).2 G(d).1 E .856(as part of a pipeline are also e)108 636 R +-.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.357 (vironment. Changes)-.4 F .857(made to the subshell en)3.357 F(viron-) --.4 E(ment cannot af)108 343.2 Q(fect the shell')-.25 E 2.5(se)-.55 G --.15(xe)-2.65 G(cution en).15 E(vironment.)-.4 E 1.377(Subshells spa)108 -360 R 1.377(wned to e)-.15 F -.15(xe)-.15 G 1.377 +-.4 E(ment cannot af)108 648 Q(fect the shell')-.25 E 2.5(se)-.55 G -.15 +(xe)-2.65 G(cution en).15 E(vironment.)-.4 E 1.377(Subshells spa)108 +664.8 R 1.377(wned to e)-.15 F -.15(xe)-.15 G 1.377 (cute command substitutions inherit the v).15 F 1.377(alue of the)-.25 F -F13.876 E F0 1.376(option from the parent)3.876 F 2.5(shell. When) -108 372 R(not in)2.5 E/F3 10/Times-Italic@0 SF(posix)2.5 E F0(mode,)2.5 -E F1(bash)2.5 E F0(clears the)2.5 E F12.5 E F0 -(option in such subshells.)2.5 E .404(If a command is follo)108 388.8 R -.404(wed by a)-.25 F F1(&)2.904 E F0 .405(and job control is not acti) -2.904 F -.15(ve)-.25 G 2.905(,t).15 G .405(he def)-2.905 F .405 -(ault standard input for the command)-.1 F .198(is the empty \214le)108 -400.8 R F3(/de)2.698 E(v/null)-.15 E F0 5.198(.O)C .198 -(therwise, the in)-5.198 F -.2(vo)-.4 G -.1(ke).2 G 2.698(dc).1 G .197 -(ommand inherits the \214le descriptors of the calling shell)-2.698 F -(as modi\214ed by redirections.)108 412.8 Q/F4 10.95/Times-Bold@0 SF -(ENVIR)72 429.6 Q(ONMENT)-.329 E F0 2.353(When a program is in)108 441.6 -R -.2(vo)-.4 G -.1(ke).2 G 4.853(di).1 G 4.853(ti)-4.853 G 4.853(sg) --4.853 G -2.15 -.25(iv e)-4.853 H 4.853(na).25 G 4.853(na)-4.853 G 2.353 -(rray of strings called the)-4.853 F F3(en)4.853 E(vir)-.4 E(onment)-.45 -E F0 7.353(.T).68 G 2.354(his is a list of)-7.353 F F3(name)108 453.6 Q -F0A F3(value)A F0(pairs, of the form)2.5 E F3(name)2.5 E F0(=)A F3 -(value)A F0(.).18 E 1.486(The shell pro)108 470.4 R 1.486(vides se)-.15 -F -.15(ve)-.25 G 1.486(ral w).15 F 1.485(ays to manipulate the en)-.1 F -3.985(vironment. On)-.4 F(in)3.985 E -.2(vo)-.4 G 1.485 -(cation, the shell scans its o).2 F(wn)-.25 E(en)108 482.4 Q .144(viron\ +F23.876 E F0 1.376(option from the parent)3.876 F 2.5(shell. When) +108 676.8 R(not in)2.5 E F1(posix mode)2.5 E F0(,)A F2(bash)2.5 E F0 +(clears the)2.5 E F22.5 E F0(option in such subshells.)2.5 E .404 +(If a command is follo)108 693.6 R .404(wed by a)-.25 F F2(&)2.904 E F0 +.405(and job control is not acti)2.904 F -.15(ve)-.25 G 2.905(,t).15 G +.405(he def)-2.905 F .405(ault standard input for the command)-.1 F .198 +(is the empty \214le)108 705.6 R F1(/de)2.698 E(v/null)-.15 E F0 5.198 +(.O)C .198(therwise, the in)-5.198 F -.2(vo)-.4 G -.1(ke).2 G 2.698(dc) +.1 G .197(ommand inherits the \214le descriptors of the calling shell) +-2.698 F(as modi\214ed by redirections.)108 717.6 Q(GNU Bash 5.0)72 768 +Q(2018 December 7)139.295 E(35)188.455 E 0 Cg EP +%%Page: 36 36 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95 +/Times-Bold@0 SF(ENVIR)72 84 Q(ONMENT)-.329 E F0 2.353 +(When a program is in)108 96 R -.2(vo)-.4 G -.1(ke).2 G 4.853(di).1 G +4.853(ti)-4.853 G 4.853(sg)-4.853 G -2.15 -.25(iv e)-4.853 H 4.853(na) +.25 G 4.853(na)-4.853 G 2.353(rray of strings called the)-4.853 F/F2 10 +/Times-Italic@0 SF(en)4.853 E(vir)-.4 E(onment)-.45 E F0 7.353(.T).68 G +2.354(his is a list of)-7.353 F F2(name)108 108 Q F0A F2(value)A F0 +(pairs, of the form)2.5 E F2(name)2.5 E F0(=)A F2(value)A F0(.).18 E +1.486(The shell pro)108 124.8 R 1.486(vides se)-.15 F -.15(ve)-.25 G +1.486(ral w).15 F 1.485(ays to manipulate the en)-.1 F 3.985 +(vironment. On)-.4 F(in)3.985 E -.2(vo)-.4 G 1.485 +(cation, the shell scans its o).2 F(wn)-.25 E(en)108 136.8 Q .144(viron\ ment and creates a parameter for each name found, automatically marking\ - it for)-.4 F F3 -.2(ex)2.644 G(port).2 E F0 .144(to child pro-)3.324 F -2.704(cesses. Ex)108 494.4 R .203(ecuted commands inherit the en)-.15 F -2.703(vironment. The)-.4 F F1(export)2.703 E F0(and)2.703 E F1(declar) -2.703 E 2.703<65ad>-.18 G(x)-2.703 E F0 .203(commands allo)2.703 F 2.703 -(wp)-.25 G(aram-)-2.703 E 1.153 -(eters and functions to be added to and deleted from the en)108 506.4 R + it for)-.4 F F2 -.2(ex)2.644 G(port).2 E F0 .144(to child pro-)3.324 F +2.704(cesses. Ex)108 148.8 R .203(ecuted commands inherit the en)-.15 F +2.703(vironment. The)-.4 F/F3 10/Times-Bold@0 SF(export)2.703 E F0(and) +2.703 E F3(declar)2.703 E 2.703<65ad>-.18 G(x)-2.703 E F0 .203 +(commands allo)2.703 F 2.703(wp)-.25 G(aram-)-2.703 E 1.153 +(eters and functions to be added to and deleted from the en)108 160.8 R 3.653(vironment. If)-.4 F 1.153(the v)3.653 F 1.154 -(alue of a parameter in the)-.25 F(en)108 518.4 Q .64 +(alue of a parameter in the)-.25 F(en)108 172.8 Q .64 (vironment is modi\214ed, the ne)-.4 F 3.14(wv)-.25 G .64 (alue becomes part of the en)-3.39 F .64(vironment, replacing the old.) --.4 F .64(The en)5.64 F(viron-)-.4 E .58(ment inherited by an)108 530.4 +-.4 F .64(The en)5.64 F(viron-)-.4 E .58(ment inherited by an)108 184.8 R 3.08(ye)-.15 G -.15(xe)-3.23 G .58 (cuted command consists of the shell').15 F 3.08(si)-.55 G .58 (nitial en)-3.08 F .58(vironment, whose v)-.4 F .58(alues may be)-.25 F -.301(modi\214ed in the shell, less an)108 542.4 R 2.801(yp)-.15 G .301 +.301(modi\214ed in the shell, less an)108 196.8 R 2.801(yp)-.15 G .301 (airs remo)-2.801 F -.15(ve)-.15 G 2.801(db).15 G 2.801(yt)-2.801 G(he) --2.801 E F1(unset)2.801 E F0 .3(command, plus an)2.8 F 2.8(ya)-.15 G .3 -(dditions via the)-2.8 F F1(export)2.8 E F0(and)2.8 E F1(declar)108 -554.4 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)2.5 E .562(The en)108 -571.2 R .562(vironment for an)-.4 F(y)-.15 E F3 .562(simple command) +-2.801 E F3(unset)2.801 E F0 .3(command, plus an)2.8 F 2.8(ya)-.15 G .3 +(dditions via the)-2.8 F F3(export)2.8 E F0(and)2.8 E F3(declar)108 +208.8 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)2.5 E .562(The en)108 +225.6 R .562(vironment for an)-.4 F(y)-.15 E F2 .562(simple command) 3.402 F F0 .563 (or function may be augmented temporarily by pre\214xing it with)3.833 F -.203(parameter assignments, as described abo)108 583.2 R .502 -.15(ve i) --.15 H(n).15 E F2 -.666(PA)2.702 G(RAMETERS).666 E/F5 9/Times-Roman@0 SF -(.)A F0 .202(These assignment statements af)4.702 F .202(fect only the) --.25 F(en)108 595.2 Q(vironment seen by that command.)-.4 E .81(If the) -108 612 R F13.31 E F0 .81(option is set \(see the)3.31 F F1(set) -3.31 E F0 -.2(bu)3.31 G .81(iltin command belo).2 F .81(w\), then)-.25 F -F3(all)3.64 E F0 .81(parameter assignments are placed in)3.82 F(the en) -108 624 Q +.203(parameter assignments, as described abo)108 237.6 R .502 -.15(ve i) +-.15 H(n).15 E/F4 9/Times-Bold@0 SF -.666(PA)2.702 G(RAMETERS).666 E/F5 +9/Times-Roman@0 SF(.)A F0 .202(These assignment statements af)4.702 F +.202(fect only the)-.25 F(en)108 249.6 Q +(vironment seen by that command.)-.4 E .81(If the)108 266.4 R F3 +3.31 E F0 .81(option is set \(see the)3.31 F F3(set)3.31 E F0 -.2(bu) +3.31 G .81(iltin command belo).2 F .81(w\), then)-.25 F F2(all)3.64 E F0 +.81(parameter assignments are placed in)3.82 F(the en)108 278.4 Q (vironment for a command, not just those that precede the command name.) --.4 E(When)108 640.8 Q F1(bash)3.586 E F0(in)3.586 E -.2(vo)-.4 G -.1 +-.4 E(When)108 295.2 Q F3(bash)3.586 E F0(in)3.586 E -.2(vo)-.4 G -.1 (ke).2 G 3.586(sa).1 G 3.586(ne)-3.586 G 1.086(xternal command, the v) --3.736 F(ariable)-.25 E F1(_)3.586 E F0 1.085 +-3.736 F(ariable)-.25 E F3(_)3.586 E F0 1.085 (is set to the full \214lename of the command and)3.586 F -(passed to that command in its en)108 652.8 Q(vironment.)-.4 E F4 -(EXIT ST)72 669.6 Q -1.04(AT)-.986 G(US)1.04 E F0 .15(The e)108 681.6 R -.15(xit status of an e)-.15 F -.15(xe)-.15 G .15(cuted command is the v) -.15 F .151(alue returned by the)-.25 F F3(waitpid)2.651 E F0 .151 +(passed to that command in its en)108 307.2 Q(vironment.)-.4 E F1 +(EXIT ST)72 324 Q -1.04(AT)-.986 G(US)1.04 E F0 .15(The e)108 336 R .15 +(xit status of an e)-.15 F -.15(xe)-.15 G .15(cuted command is the v).15 +F .151(alue returned by the)-.25 F F2(waitpid)2.651 E F0 .151 (system call or equi)2.651 F -.25(va)-.25 G .151(lent func-).25 F 2.848 -(tion. Exit)108 693.6 R .348(statuses f)2.848 F .347 +(tion. Exit)108 348 R .348(statuses f)2.848 F .347 (all between 0 and 255, though, as e)-.1 F .347(xplained belo)-.15 F 1.647 -.65(w, t)-.25 H .347(he shell may use v).65 F .347(alues abo)-.25 -F .647 -.15(ve 1)-.15 H(25).15 E(specially)108 705.6 Q 5.506(.E)-.65 G +F .647 -.15(ve 1)-.15 H(25).15 E(specially)108 360 Q 5.506(.E)-.65 G .506(xit statuses from shell b)-5.506 F .507 (uiltins and compound commands are also limited to this range.)-.2 F (Under)5.507 E(certain circumstances, the shell will use special v)108 -717.6 Q(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(34)192.055 E 0 Cg EP -%%Page: 35 35 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.15(Fo)108 84 S -3.373(rt).15 G .873(he shell')-3.373 F 3.373(sp)-.55 G .873 +372 Q(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E -.15(Fo) +108 388.8 S 3.373(rt).15 G .873(he shell')-3.373 F 3.373(sp)-.55 G .873 (urposes, a command which e)-3.373 F .873(xits with a zero e)-.15 F .873 (xit status has succeeded.)-.15 F .872(An e)5.872 F .872(xit status of) --.15 F .048(zero indicates success.)108 96 R 2.548(An)5.048 G .049 +-.15 F .048(zero indicates success.)108 400.8 R 2.548(An)5.048 G .049 (on-zero e)-2.548 F .049(xit status indicates f)-.15 F 2.549 (ailure. When)-.1 F 2.549(ac)2.549 G .049(ommand terminates on a f) --2.549 F .049(atal sig-)-.1 F(nal)108 108 Q/F1 10/Times-Italic@0 SF(N) -2.5 E F0(,)A/F2 10/Times-Bold@0 SF(bash)2.5 E F0(uses the v)2.5 E -(alue of 128+)-.25 E F1(N)A F0(as the e)2.5 E(xit status.)-.15 E .405 -(If a command is not found, the child process created to e)108 124.8 R +-2.549 F .049(atal sig-)-.1 F(nal)108 412.8 Q F2(N)2.5 E F0(,)A F3(bash) +2.5 E F0(uses the v)2.5 E(alue of 128+)-.25 E F2(N)A F0(as the e)2.5 E +(xit status.)-.15 E .405 +(If a command is not found, the child process created to e)108 429.6 R -.15(xe)-.15 G .404(cute it returns a status of 127.).15 F .404 -(If a command is)5.404 F(found b)108 136.8 Q(ut is not e)-.2 E -.15(xe) --.15 G(cutable, the return status is 126.).15 E(If a command f)108 153.6 +(If a command is)5.404 F(found b)108 441.6 Q(ut is not e)-.2 E -.15(xe) +-.15 G(cutable, the return status is 126.).15 E(If a command f)108 458.4 Q(ails because of an error during e)-.1 E (xpansion or redirection, the e)-.15 E(xit status is greater than zero.) --.15 E .08(Shell b)108 170.4 R .08 -(uiltin commands return a status of 0 \()-.2 F F1(true)A F0 2.581(\)i)C -2.581(fs)-2.581 G .081(uccessful, and non-zero \()-2.581 F F1(false)A F0 +-.15 E .08(Shell b)108 475.2 R .08 +(uiltin commands return a status of 0 \()-.2 F F2(true)A F0 2.581(\)i)C +2.581(fs)-2.581 G .081(uccessful, and non-zero \()-2.581 F F2(false)A F0 2.581(\)i)C 2.581(fa)-2.581 G 2.581(ne)-2.581 G .081(rror occurs while) --2.581 F(the)108 182.4 Q 2.968(ye)-.15 G -.15(xe)-3.118 G 2.968 +-2.581 F(the)108 487.2 Q 2.968(ye)-.15 G -.15(xe)-3.118 G 2.968 (cute. All).15 F -.2(bu)2.968 G .468(iltins return an e).2 F .468 (xit status of 2 to indicate incorrect usage, generally in)-.15 F -.25 -(va)-.4 G .467(lid options or).25 F(missing ar)108 194.4 Q(guments.)-.18 -E F2(Bash)108 211.2 Q F0 .201(itself returns the e)2.701 F .202 +(va)-.4 G .467(lid options or).25 F(missing ar)108 499.2 Q(guments.)-.18 +E F3(Bash)108 516 Q F0 .201(itself returns the e)2.701 F .202 (xit status of the last command e)-.15 F -.15(xe)-.15 G .202 -(cuted, unless a syntax error occurs, in which case).15 F(it e)108 223.2 -Q(xits with a non-zero v)-.15 E 2.5(alue. See)-.25 F(also the)2.5 E F2 -(exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G/F3 -10.95/Times-Bold@0 SF(SIGN)72 240 Q(ALS)-.219 E F0(When)108 252 Q F2 -(bash)3.183 E F0 .683(is interacti)3.183 F -.15(ve)-.25 G 3.183(,i).15 G -3.183(nt)-3.183 G .683(he absence of an)-3.183 F 3.183(yt)-.15 G .683 -(raps, it ignores)-3.183 F/F4 9/Times-Bold@0 SF(SIGTERM)3.183 E F0 .682 -(\(so that)2.933 F F2 .682(kill 0)3.182 F F0 .682(does not kill an)3.182 -F(interacti)108 264 Q .757 -.15(ve s)-.25 H .457(hell\), and).15 F F4 -(SIGINT)2.957 E F0 .458(is caught and handled \(so that the)2.707 F F2 -(wait)2.958 E F0 -.2(bu)2.958 G .458(iltin is interruptible\).).2 F .458 -(In all cases,)5.458 F F2(bash)108 276 Q F0(ignores)2.5 E F4(SIGQ)2.5 E -(UIT)-.09 E/F5 9/Times-Roman@0 SF(.)A F0(If job control is in ef)4.5 E -(fect,)-.25 E F2(bash)2.5 E F0(ignores)2.5 E F4(SIGTTIN)2.5 E F5(,)A F4 -(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 E F4(SIGTSTP)2.5 E F5(.)A F0 -(Non-b)108 292.8 Q 1.065(uiltin commands run by)-.2 F F2(bash)3.565 E F0 -(ha)3.565 E 1.365 -.15(ve s)-.2 H 1.065(ignal handlers set to the v).15 -F 1.064(alues inherited by the shell from its)-.25 F 3.247(parent. When) -108 304.8 R .747(job control is not in ef)3.247 F .747 +(cuted, unless a syntax error occurs, in which case).15 F(it e)108 528 Q +(xits with a non-zero v)-.15 E 2.5(alue. See)-.25 F(also the)2.5 E F3 +(exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G F1 +(SIGN)72 544.8 Q(ALS)-.219 E F0(When)108 556.8 Q F3(bash)3.183 E F0 .683 +(is interacti)3.183 F -.15(ve)-.25 G 3.183(,i).15 G 3.183(nt)-3.183 G +.683(he absence of an)-3.183 F 3.183(yt)-.15 G .683(raps, it ignores) +-3.183 F F4(SIGTERM)3.183 E F0 .682(\(so that)2.933 F F3 .682(kill 0) +3.182 F F0 .682(does not kill an)3.182 F(interacti)108 568.8 Q .757 -.15 +(ve s)-.25 H .457(hell\), and).15 F F4(SIGINT)2.957 E F0 .458 +(is caught and handled \(so that the)2.707 F F3(wait)2.958 E F0 -.2(bu) +2.958 G .458(iltin is interruptible\).).2 F .458(In all cases,)5.458 F +F3(bash)108 580.8 Q F0(ignores)2.5 E F4(SIGQ)2.5 E(UIT)-.09 E F5(.)A F0 +(If job control is in ef)4.5 E(fect,)-.25 E F3(bash)2.5 E F0(ignores)2.5 +E F4(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 +E F4(SIGTSTP)2.5 E F5(.)A F0(Non-b)108 597.6 Q 1.065 +(uiltin commands run by)-.2 F F3(bash)3.565 E F0(ha)3.565 E 1.365 -.15 +(ve s)-.2 H 1.065(ignal handlers set to the v).15 F 1.064 +(alues inherited by the shell from its)-.25 F 3.247(parent. When)108 +609.6 R .747(job control is not in ef)3.247 F .747 (fect, asynchronous commands ignore)-.25 F F4(SIGINT)3.248 E F0(and) 2.998 E F4(SIGQ)3.248 E(UIT)-.09 E F0 .748(in addi-)2.998 F .653 -(tion to these inherited handlers.)108 316.8 R .653 +(tion to these inherited handlers.)108 621.6 R .653 (Commands run as a result of command substitution ignore the k)5.653 F --.15(ey)-.1 G(board-).15 E(generated job control signals)108 328.8 Q F4 +-.15(ey)-.1 G(board-).15 E(generated job control signals)108 633.6 Q F4 (SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 E F4 -(SIGTSTP)2.5 E F5(.)A F0 2.045(The shell e)108 345.6 R 2.045 +(SIGTSTP)2.5 E F5(.)A F0 2.045(The shell e)108 650.4 R 2.045 (xits by def)-.15 F 2.045(ault upon receipt of a)-.1 F F4(SIGHUP)4.545 E F5(.)A F0 2.045(Before e)6.545 F 2.045(xiting, an interacti)-.15 F 2.346 --.15(ve s)-.25 H 2.046(hell resends the).15 F F4(SIGHUP)108 357.6 Q F0 +-.15(ve s)-.25 H 2.046(hell resends the).15 F F4(SIGHUP)108 662.4 Q F0 1.005(to all jobs, running or stopped.)3.255 F 1.004 (Stopped jobs are sent)6.005 F F4(SIGCONT)3.504 E F0 1.004 (to ensure that the)3.254 F 3.504(yr)-.15 G(ecei)-3.504 E 1.304 -.15 -(ve t)-.25 H(he).15 E F4(SIGHUP)108 369.6 Q F5(.)A F0 2.529 -.8(To p) +(ve t)-.25 H(he).15 E F4(SIGHUP)108 674.4 Q F5(.)A F0 2.529 -.8(To p) 5.429 H(re).8 E -.15(ve)-.25 G .93(nt the shell from sending the signal\ to a particular job, it should be remo).15 F -.15(ve)-.15 G 3.43(df).15 -G .93(rom the)-3.43 F 1.357(jobs table with the)108 381.6 R F2(diso) +G .93(rom the)-3.43 F 1.357(jobs table with the)108 686.4 R F3(diso) 3.857 E(wn)-.1 E F0 -.2(bu)3.857 G 1.357(iltin \(see).2 F F4 1.356 (SHELL B)3.856 F(UIL)-.09 E 1.356(TIN COMMANDS)-.828 F F0(belo)3.606 E 1.356(w\) or mark)-.25 F 1.356(ed to not recei)-.1 F -.15(ve)-.25 G F4 -(SIGHUP)108 393.6 Q F0(using)2.25 E F2(diso)2.5 E(wn \255h)-.1 E F0(.)A -.166(If the)108 410.4 R F2(huponexit)2.666 E F0 .166 -(shell option has been set with)2.666 F F2(shopt)2.666 E F0(,)A F2(bash) +(SIGHUP)108 698.4 Q F0(using)2.25 E F3(diso)2.5 E(wn \255h)-.1 E F0(.)A +.166(If the)108 715.2 R F3(huponexit)2.666 E F0 .166 +(shell option has been set with)2.666 F F3(shopt)2.666 E F0(,)A F3(bash) 2.666 E F0 .166(sends a)2.666 F F4(SIGHUP)2.666 E F0 .166 (to all jobs when an interacti)2.416 F -.15(ve)-.25 G(login shell e)108 -422.4 Q(xits.)-.15 E(If)108 439.2 Q F2(bash)3.047 E F0 .547(is w)3.047 F -.546(aiting for a command to complete and recei)-.1 F -.15(ve)-.25 G -3.046(sas).15 G .546(ignal for which a trap has been set, the trap) --3.046 F .662(will not be e)108 451.2 R -.15(xe)-.15 G .662 -(cuted until the command completes.).15 F(When)5.663 E F2(bash)3.163 E -F0 .663(is w)3.163 F .663(aiting for an asynchronous command)-.1 F .99 -(via the)108 463.2 R F2(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin, the rec\ -eption of a signal for which a trap has been set will cause the).2 F F2 -(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin to).2 F -(return immediately with an e)108 475.2 Q -(xit status greater than 128, immediately after which the trap is e)-.15 -E -.15(xe)-.15 G(cuted.).15 E F3(JOB CONTR)72 492 Q(OL)-.329 E F1 -.25 -(Jo)108 504 S 4.567(bc).25 G(ontr)-4.567 E(ol)-.45 E F0 2.067 -(refers to the ability to selecti)5.077 F -.15(ve)-.25 G 2.067 -(ly stop \().15 F F1(suspend)A F0 4.567(\)t)C 2.068(he e)-4.567 F -.15 -(xe)-.15 G 2.068(cution of processes and continue).15 F(\()108 516 Q F1 --.37(re)C(sume).37 E F0 3.202(\)t)C .702(heir e)-3.202 F -.15(xe)-.15 G -.702(cution at a later point.).15 F 3.202(Au)5.702 G .702 -(ser typically emplo)-3.202 F .702(ys this f)-.1 F .702 +727.2 Q(xits.)-.15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(36) +188.455 E 0 Cg EP +%%Page: 37 37 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(If)108 84 Q/F1 10 +/Times-Bold@0 SF(bash)3.047 E F0 .547(is w)3.047 F .546 +(aiting for a command to complete and recei)-.1 F -.15(ve)-.25 G 3.046 +(sas).15 G .546(ignal for which a trap has been set, the trap)-3.046 F +.662(will not be e)108 96 R -.15(xe)-.15 G .662 +(cuted until the command completes.).15 F(When)5.663 E F1(bash)3.163 E +F0 .663(is w)3.163 F .663(aiting for an asynchronous command)-.1 F .99 +(via the)108 108 R F1(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin, the recep\ +tion of a signal for which a trap has been set will cause the).2 F F1 +(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin to).2 F +(return immediately with an e)108 120 Q +(xit status greater than 128, immediately after which the trap is e)-.15 +E -.15(xe)-.15 G(cuted.).15 E/F2 10.95/Times-Bold@0 SF(JOB CONTR)72 +136.8 Q(OL)-.329 E/F3 10/Times-Italic@0 SF -.25(Jo)108 148.8 S 4.567(bc) +.25 G(ontr)-4.567 E(ol)-.45 E F0 2.067(refers to the ability to selecti) +5.077 F -.15(ve)-.25 G 2.067(ly stop \().15 F F3(suspend)A F0 4.567(\)t) +C 2.068(he e)-4.567 F -.15(xe)-.15 G 2.068 +(cution of processes and continue).15 F(\()108 160.8 Q F3 -.37(re)C +(sume).37 E F0 3.202(\)t)C .702(heir e)-3.202 F -.15(xe)-.15 G .702 +(cution at a later point.).15 F 3.202(Au)5.702 G .702 +(ser typically emplo)-3.202 F .702(ys this f)-.1 F .702 (acility via an interacti)-.1 F 1.001 -.15(ve i)-.25 H(nterf).15 E(ace) --.1 E(supplied jointly by the operating system k)108 528 Q(ernel')-.1 E -2.5(st)-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(ra).15 G(nd)-2.5 E -F2(bash)2.5 E F0(.)A .784(The shell associates a)108 544.8 R F1(job) +-.1 E(supplied jointly by the operating system k)108 172.8 Q(ernel')-.1 +E 2.5(st)-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(ra).15 G(nd)-2.5 E +F1(bash)2.5 E F0(.)A .784(The shell associates a)108 189.6 R F3(job) 5.024 E F0 .784(with each pipeline.)3.514 F .784(It k)5.784 F .785 (eeps a table of currently e)-.1 F -.15(xe)-.15 G .785 -(cuting jobs, which may be).15 F .341(listed with the)108 556.8 R F2 -(jobs)2.841 E F0 2.841(command. When)2.841 F F2(bash)2.841 E F0 .341 -(starts a job asynchronously \(in the)2.841 F F1(bac)2.84 E(kgr)-.2 E -(ound)-.45 E F0 .34(\), it prints a line).77 F(that looks lik)108 568.8 -Q(e:)-.1 E([1] 25647)144 585.6 Q .241(indicating that this job is job n\ +(cuting jobs, which may be).15 F .341(listed with the)108 201.6 R F1 +(jobs)2.841 E F0 2.841(command. When)2.841 F F1(bash)2.841 E F0 .341 +(starts a job asynchronously \(in the)2.841 F F3(bac)2.84 E(kgr)-.2 E +(ound)-.45 E F0 .34(\), it prints a line).77 F(that looks lik)108 213.6 +Q(e:)-.1 E([1] 25647)144 230.4 Q .241(indicating that this job is job n\ umber 1 and that the process ID of the last process in the pipeline ass\ -ociated)108 602.4 R .733(with this job is 25647.)108 614.4 R .732 +ociated)108 247.2 R .733(with this job is 25647.)108 259.2 R .732 (All of the processes in a single pipeline are members of the same job) -5.733 F(.)-.4 E F2(Bash)5.732 E F0(uses)3.232 E(the)108 626.4 Q F1(job) +5.733 F(.)-.4 E F1(Bash)5.732 E F0(uses)3.232 E(the)108 271.2 Q F3(job) 4.24 E F0(abstraction as the basis for job control.)2.73 E 3.062 -.8 -(To f)108 643.2 T 1.462(acilitate the implementation of the user interf) -.7 F 1.463(ace to job control, the operating system maintains the)-.1 F -.871(notion of a)108 655.2 R F1(curr)3.371 E .871(ent terminal pr)-.37 F +(To f)108 288 T 1.462(acilitate the implementation of the user interf).7 +F 1.463(ace to job control, the operating system maintains the)-.1 F +.871(notion of a)108 300 R F3(curr)3.371 E .871(ent terminal pr)-.37 F .871(ocess gr)-.45 F .871(oup ID)-.45 F F0 5.871(.M)C .87 (embers of this process group \(processes whose process)-5.871 F .023 (group ID is equal to the current terminal process group ID\) recei)108 -667.2 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023 -(board-generated signals such as).15 F F4(SIG-)2.523 E(INT)108 679.2 Q -F5(.)A F0 1.347(These processes are said to be in the)5.847 F F1(for) -3.846 E -.4(eg)-.37 G -.45(ro).4 G(und).45 E F0(.).77 E F1(Bac)6.926 E -(kgr)-.2 E(ound)-.45 E F0 1.346(processes are those whose process)4.616 -F .145(group ID dif)108 691.2 R .145(fers from the terminal')-.25 F .146 +312 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023 +(board-generated signals such as).15 F/F4 9/Times-Bold@0 SF(SIG-)2.523 E +(INT)108 324 Q/F5 9/Times-Roman@0 SF(.)A F0 1.347 +(These processes are said to be in the)5.847 F F3(for)3.846 E -.4(eg) +-.37 G -.45(ro).4 G(und).45 E F0(.).77 E F3(Bac)6.926 E(kgr)-.2 E(ound) +-.45 E F0 1.346(processes are those whose process)4.616 F .145 +(group ID dif)108 336 R .145(fers from the terminal')-.25 F .146 (s; such processes are immune to k)-.55 F -.15(ey)-.1 G .146 (board-generated signals.).15 F .146(Only fore-)5.146 F .16 -(ground processes are allo)108 703.2 R .16(wed to read from or)-.25 F -2.66(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F6 -10/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter) --2.66 F(-)-.2 E 3.051(minal. Background)108 715.2 R .551 +(ground processes are allo)108 348 R .16(wed to read from or)-.25 F 2.66 +(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F6 10 +/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter) +-2.66 F(-)-.2 E 3.051(minal. Background)108 360 R .551 (processes which attempt to read from \(write to when)3.051 F F6 .551 (stty tostop)3.051 F F0 .552(is in ef)3.052 F .552(fect\) the)-.25 F -2.098(terminal are sent a)108 727.2 R F4 2.098(SIGTTIN \(SIGTT)4.598 F -(OU\))-.162 E F0 2.098(signal by the k)4.348 F(ernel')-.1 E 4.598(st) --.55 G 2.098(erminal dri)-4.598 F -.15(ve)-.25 G 2.898 -.4(r, w).15 H -2.098(hich, unless caught,).4 F(GNU Bash 4.4)72 768 Q(2016 August 26) -142.895 E(35)192.055 E 0 Cg EP -%%Page: 36 36 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(suspends the process.)108 84 Q 1.087(If the operating system on which) -108 100.8 R/F1 10/Times-Bold@0 SF(bash)3.587 E F0 1.088 +.718(terminal are sent a)108 372 R F4 .718(SIGTTIN \(SIGTT)3.218 F(OU\)) +-.162 E F0 .718(signal by the k)2.968 F(ernel')-.1 E 3.217(st)-.55 G +.717(erminal dri)-3.217 F -.15(ve)-.25 G 1.517 -.4(r, w).15 H .717 +(hich, unless caught, sus-).4 F(pends the process.)108 384 Q 1.087 +(If the operating system on which)108 400.8 R F1(bash)3.587 E F0 1.088 (is running supports job control,)3.588 F F1(bash)3.588 E F0 1.088 -(contains f)3.588 F 1.088(acilities to use it.)-.1 F -.8(Ty)108 112.8 S -.302(ping the).8 F/F2 10/Times-Italic@0 SF(suspend)3.142 E F0 .302 -(character \(typically)3.572 F F1(^Z)2.801 E F0 2.801(,C)C .301 +(contains f)3.588 F 1.088(acilities to use it.)-.1 F -.8(Ty)108 412.8 S +.302(ping the).8 F F3(suspend)3.142 E F0 .302(character \(typically) +3.572 F F1(^Z)2.801 E F0 2.801(,C)C .301 (ontrol-Z\) while a process is running causes that process to be)-2.801 -F 2.142(stopped and returns control to)108 124.8 R F1(bash)4.642 E F0 -7.142(.T)C 2.142(yping the)-7.942 F F2 2.142(delayed suspend)4.992 F F0 +F 2.142(stopped and returns control to)108 424.8 R F1(bash)4.642 E F0 +7.142(.T)C 2.142(yping the)-7.942 F F3 2.142(delayed suspend)4.992 F F0 2.143(character \(typically)5.413 F F1(^Y)4.643 E F0 4.643(,C)C (ontrol-Y\))-4.643 E .021(causes the process to be stopped when it atte\ mpts to read input from the terminal, and control to be returned)108 -136.8 R(to)108 148.8 Q F1(bash)3.392 E F0 5.892(.T)C .892 +436.8 R(to)108 448.8 Q F1(bash)3.392 E F0 5.892(.T)C .892 (he user may then manipulate the state of this job, using the)-5.892 F F1(bg)3.392 E F0 .892(command to continue it in the)3.392 F .895 -(background, the)108 160.8 R F1(fg)3.395 E F0 .895 +(background, the)108 460.8 R F1(fg)3.395 E F0 .895 (command to continue it in the fore)3.395 F .895(ground, or the)-.15 F F1(kill)3.395 E F0 .894(command to kill it.)3.395 F(A)5.894 E F1(^Z) -3.394 E F0(tak)3.394 E(es)-.1 E(ef)108 172.8 Q .948(fect immediately) +3.394 E F0(tak)3.394 E(es)-.1 E(ef)108 472.8 Q .948(fect immediately) -.25 F 3.448(,a)-.65 G .948(nd has the additional side ef)-3.448 F .948 (fect of causing pending output and typeahead to be dis-)-.25 F(carded.) -108 184.8 Q .777(There are a number of w)108 201.6 R .777 +108 484.8 Q .777(There are a number of w)108 501.6 R .777 (ays to refer to a job in the shell.)-.1 F .777(The character)5.777 F F1 -(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 213.6 -Q F2(jobspec)A F0 3.457(\). Job)B(number)3.457 E F2(n)3.817 E F0 .957 +(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 513.6 +Q F3(jobspec)A F0 3.457(\). Job)B(number)3.457 E F3(n)3.817 E F0 .957 (may be referred to as)3.697 F F1(%n)3.457 E F0 5.957(.A)C .957 (job may also be referred to using a pre\214x of the)-2.5 F .59(name us\ ed to start it, or using a substring that appears in its command line.) -108 225.6 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F1(%ce)3.09 E -F0 .59(refers to a)3.09 F(stopped)108 237.6 Q F1(ce)3.463 E F0(job)3.463 +108 525.6 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F1(%ce)3.09 E +F0 .59(refers to a)3.09 F(stopped)108 537.6 Q F1(ce)3.463 E F0(job)3.463 E 5.963(.I)-.4 G 3.463(fap)-5.963 G .963 (re\214x matches more than one job,)-3.463 F F1(bash)3.463 E F0 .963 (reports an error)3.463 F 5.963(.U)-.55 G(sing)-5.963 E F1(%?ce)3.463 E F0 3.464(,o)C 3.464(nt)-3.464 G .964(he other)-3.464 F .087 -(hand, refers to an)108 249.6 R 2.587(yj)-.15 G .087 +(hand, refers to an)108 549.6 R 2.587(yj)-.15 G .087 (ob containing the string)-2.587 F F1(ce)2.587 E F0 .087 (in its command line.)2.587 F .087 -(If the substring matches more than one)5.087 F(job,)108 261.6 Q F1 +(If the substring matches more than one)5.087 F(job,)108 561.6 Q F1 (bash)2.518 E F0 .018(reports an error)2.518 F 5.018(.T)-.55 G .018 (he symbols)-5.018 F F1(%%)2.518 E F0(and)2.518 E F1(%+)2.518 E F0 .018 (refer to the shell')2.518 F 2.518(sn)-.55 G .018(otion of the)-2.518 F -F2(curr)2.518 E .018(ent job)-.37 F F0 2.518(,w).23 G .018(hich is) --2.518 F .495(the last job stopped while it w)108 273.6 R .495 +F3(curr)2.518 E .018(ent job)-.37 F F0 2.518(,w).23 G .018(hich is) +-2.518 F .495(the last job stopped while it w)108 573.6 R .495 (as in the fore)-.1 F .495(ground or started in the background.)-.15 F -(The)5.494 E F2(pr)4.244 E -.15(ev)-.37 G .494(ious job).15 F F0 .494 -(may be)3.224 F .787(referenced using)108 285.6 R F1<25ad>3.287 E F0 +(The)5.494 E F3(pr)4.244 E -.15(ev)-.37 G .494(ious job).15 F F0 .494 +(may be)3.224 F .787(referenced using)108 585.6 R F1<25ad>3.287 E F0 5.787(.I)C 3.287(ft)-5.787 G .787(here is only a single job,)-3.287 F F1 (%+)3.287 E F0(and)3.287 E F1<25ad>3.287 E F0 .788 (can both be used to refer to that job)3.287 F 5.788(.I)-.4 G(n)-5.788 E -.257(output pertaining to jobs \(e.g., the output of the)108 297.6 R F1 +.257(output pertaining to jobs \(e.g., the output of the)108 597.6 R F1 (jobs)2.756 E F0 .256(command\), the current job is al)2.756 F -.1(wa) -.1 G .256(ys \215agged with a).1 F F1(+)2.756 E F0(,)A .41(and the pre) -108 309.6 R .41(vious job with a)-.25 F F12.91 E F0 5.41(.A)C .411 +108 609.6 R .41(vious job with a)-.25 F F12.91 E F0 5.41(.A)C .411 (single % \(with no accompan)-2.5 F .411 (ying job speci\214cation\) also refers to the cur)-.15 F(-)-.2 E -(rent job)108 321.6 Q(.)-.4 E .444 -(Simply naming a job can be used to bring it into the fore)108 338.4 R +(rent job)108 621.6 Q(.)-.4 E .444 +(Simply naming a job can be used to bring it into the fore)108 638.4 R (ground:)-.15 E F1(%1)2.943 E F0 .443(is a synon)2.943 F .443(ym for) -.15 F F1 -.63(``)2.943 G .443(fg %1').63 F(')-.63 E F0 2.943(,b)C (ringing)-2.943 E 1.472(job 1 from the background into the fore)108 -350.4 R 3.972(ground. Similarly)-.15 F(,)-.65 E F1 -.63(``)3.973 G 1.473 +650.4 R 3.972(ground. Similarly)-.15 F(,)-.65 E F1 -.63(``)3.973 G 1.473 (%1 &').63 F(')-.63 E F0 1.473(resumes job 1 in the background,)3.973 F -(equi)108 362.4 Q -.25(va)-.25 G(lent to).25 E F1 -.63(``)2.5 G(bg %1') -.63 E(')-.63 E F0(.)A .131(The shell learns immediately whene)108 379.2 +(equi)108 662.4 Q -.25(va)-.25 G(lent to).25 E F1 -.63(``)2.5 G(bg %1') +.63 E(')-.63 E F0(.)A .131(The shell learns immediately whene)108 679.2 R -.15(ve)-.25 G 2.631(raj).15 G .131(ob changes state.)-2.631 F (Normally)5.131 E(,)-.65 E F1(bash)2.631 E F0 -.1(wa)2.63 G .13 (its until it is about to print a).1 F .157 -(prompt before reporting changes in a job')108 391.2 R 2.657(ss)-.55 G +(prompt before reporting changes in a job')108 691.2 R 2.657(ss)-.55 G .157(tatus so as to not interrupt an)-2.657 F 2.658(yo)-.15 G .158 (ther output.)-2.658 F .158(If the)5.158 F F12.658 E F0 .158 -(option to)2.658 F(the)108 403.2 Q F1(set)2.648 E F0 -.2(bu)2.648 G .148 +(option to)2.658 F(the)108 703.2 Q F1(set)2.648 E F0 -.2(bu)2.648 G .148 (iltin command is enabled,).2 F F1(bash)2.648 E F0 .148 (reports such changes immediately)2.648 F 5.147(.A)-.65 G .447 -.15 -(ny t)-5.147 H .147(rap on).15 F/F3 9/Times-Bold@0 SF(SIGCHLD)2.647 E F0 -.147(is e)2.397 F -.15(xe)-.15 G(-).15 E(cuted for each child that e)108 -415.2 Q(xits.)-.15 E .032(If an attempt to e)108 432 R(xit)-.15 E F1 -(bash)2.532 E F0 .032(is made while jobs are stopped \(or)2.532 F 2.533 -(,i)-.4 G 2.533(ft)-2.533 G(he)-2.533 E F1(checkjobs)2.533 E F0 .033 -(shell option has been enabled)2.533 F 2.02(using the)108 444 R F1 -(shopt)4.52 E F0 -.2(bu)4.52 G 2.02 -(iltin, running\), the shell prints a w).2 F 2.019 -(arning message, and, if the)-.1 F F1(checkjobs)4.519 E F0 2.019 +(ny t)-5.147 H .147(rap on).15 F F4(SIGCHLD)2.647 E F0 .147(is e)2.397 F +-.15(xe)-.15 G(-).15 E(cuted for each child that e)108 715.2 Q(xits.) +-.15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(37)188.455 E 0 Cg +EP +%%Page: 38 38 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .032 +(If an attempt to e)108 84 R(xit)-.15 E/F1 10/Times-Bold@0 SF(bash)2.532 +E F0 .032(is made while jobs are stopped \(or)2.532 F 2.533(,i)-.4 G +2.533(ft)-2.533 G(he)-2.533 E F1(checkjobs)2.533 E F0 .033 +(shell option has been enabled)2.533 F 2.02(using the)108 96 R F1(shopt) +4.52 E F0 -.2(bu)4.52 G 2.02(iltin, running\), the shell prints a w).2 F +2.019(arning message, and, if the)-.1 F F1(checkjobs)4.519 E F0 2.019 (option is)4.519 F .458(enabled, lists the jobs and their statuses.)108 -456 R(The)5.458 E F1(jobs)2.958 E F0 .459 +108 R(The)5.458 E F1(jobs)2.958 E F0 .459 (command may then be used to inspect their status.)2.958 F .459(If a) -5.459 F .604(second attempt to e)108 468 R .604 +5.459 F .604(second attempt to e)108 120 R .604 (xit is made without an interv)-.15 F .604 (ening command, the shell does not print another w)-.15 F(arning,)-.1 E -(and an)108 480 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E/F4 -10.95/Times-Bold@0 SF(PR)72 496.8 Q(OMPTING)-.329 E F0 .644(When e)108 -508.8 R -.15(xe)-.15 G .644(cuting interacti).15 F -.15(ve)-.25 G(ly).15 -E(,)-.65 E F1(bash)3.144 E F0 .645(displays the primary prompt)3.145 F -F3(PS1)3.145 E F0 .645(when it is ready to read a command,)2.895 F .315 -(and the secondary prompt)108 520.8 R F3(PS2)2.815 E F0 .315 -(when it needs more input to complete a command.)2.565 F F1(Bash)5.314 E -F0(displays)2.814 E F1(PS0)2.814 E F0(after)2.814 E .049 -(it reads a command b)108 532.8 R .049(ut before e)-.2 F -.15(xe)-.15 G -.049(cuting it.).15 F F1(Bash)5.049 E F0(allo)2.549 E .05 -(ws these prompt strings to be customized by inserting)-.25 F 2.5(an)108 -544.8 S(umber of backslash-escaped special characters that are decoded \ -as follo)-2.5 E(ws:)-.25 E F1(\\a)144 556.8 Q F0 -(an ASCII bell character \(07\))180 556.8 Q F1(\\d)144 568.8 Q F0 -(the date in "W)180 568.8 Q(eekday Month Date" format \(e.g., "T)-.8 E -(ue May 26"\))-.45 E F1(\\D{)144 580.8 Q F2(format)A F1(})A F0(the)180 -592.8 Q F2(format)3.927 E F0 1.427(is passed to)3.927 F F2(strftime) -3.927 E F0 1.427 +(and an)108 132 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E .644 +(When the shell is w)108 148.8 R .644 +(aiting for a job or process using the)-.1 F F1(wait)3.145 E F0 -.2(bu) +3.145 G .645(iltin, and job control is enabled,).2 F F1(wait)3.145 E F0 +(will)3.145 E .428(return when the job changes state. The)108 160.8 R F1 +2.928 E F0 .428(option will force)2.928 F F1(wait)2.928 E F0 .428 +(to w)2.928 F .428(ait until the job or process terminates)-.1 F +(before returning.)108 172.8 Q/F2 10.95/Times-Bold@0 SF(PR)72 189.6 Q +(OMPTING)-.329 E F0 .644(When e)108 201.6 R -.15(xe)-.15 G .644 +(cuting interacti).15 F -.15(ve)-.25 G(ly).15 E(,)-.65 E F1(bash)3.144 E +F0 .645(displays the primary prompt)3.145 F/F3 9/Times-Bold@0 SF(PS1) +3.145 E F0 .645(when it is ready to read a command,)2.895 F .428 +(and the secondary prompt)108 213.6 R F3(PS2)2.928 E F0 .427 +(when it needs more input to complete a command.)2.678 F F1(Bash)5.427 E +F0(displays)2.927 E F3(PS0)2.927 E F0(after)2.677 E .037 +(it reads a command b)108 225.6 R .037(ut before e)-.2 F -.15(xe)-.15 G +.037(cuting it.).15 F F1(Bash)5.037 E F0(displays)2.537 E F3(PS4)2.538 E +F0 .038(as described abo)2.288 F .338 -.15(ve b)-.15 H .038 +(efore tracing each com-).15 F 1.122(mand when the)108 237.6 R F1 +3.622 E F0 1.122(option is enabled.)3.622 F F1(Bash)6.122 E F0(allo) +3.622 E 1.122(ws these prompt strings to be customized by inserting a) +-.25 F(number of backslash-escaped special characters that are decoded \ +as follo)108 249.6 Q(ws:)-.25 E F1(\\a)144 261.6 Q F0 +(an ASCII bell character \(07\))180 261.6 Q F1(\\d)144 273.6 Q F0 +(the date in "W)180 273.6 Q(eekday Month Date" format \(e.g., "T)-.8 E +(ue May 26"\))-.45 E F1(\\D{)144 285.6 Q/F4 10/Times-Italic@0 SF(format) +A F1(})A F0(the)180 297.6 Q F4(format)3.926 E F0 1.426(is passed to) +3.926 F F4(strftime)3.926 E F0 1.427 (\(3\) and the result is inserted into the prompt string; an)B(empty)180 -604.8 Q F2(format)2.5 E F0 +309.6 Q F4(format)2.5 E F0 (results in a locale-speci\214c time representation.)2.5 E -(The braces are required)5 E F1(\\e)144 616.8 Q F0 -(an ASCII escape character \(033\))180 616.8 Q F1(\\h)144 628.8 Q F0 -(the hostname up to the \214rst `.)180 628.8 Q(')-.7 E F1(\\H)144 640.8 -Q F0(the hostname)180 640.8 Q F1(\\j)144 652.8 Q F0 -(the number of jobs currently managed by the shell)180 652.8 Q F1(\\l) -144 664.8 Q F0(the basename of the shell')180 664.8 Q 2.5(st)-.55 G -(erminal de)-2.5 E(vice name)-.25 E F1(\\n)144 676.8 Q F0(ne)180 676.8 Q -(wline)-.25 E F1(\\r)144 688.8 Q F0(carriage return)180 688.8 Q F1(\\s) -144 700.8 Q F0(the name of the shell, the basename of)180 700.8 Q F1($0) +(The braces are required)5 E F1(\\e)144 321.6 Q F0 +(an ASCII escape character \(033\))180 321.6 Q F1(\\h)144 333.6 Q F0 +(the hostname up to the \214rst `.)180 333.6 Q(')-.7 E F1(\\H)144 345.6 +Q F0(the hostname)180 345.6 Q F1(\\j)144 357.6 Q F0 +(the number of jobs currently managed by the shell)180 357.6 Q F1(\\l) +144 369.6 Q F0(the basename of the shell')180 369.6 Q 2.5(st)-.55 G +(erminal de)-2.5 E(vice name)-.25 E F1(\\n)144 381.6 Q F0(ne)180 381.6 Q +(wline)-.25 E F1(\\r)144 393.6 Q F0(carriage return)180 393.6 Q F1(\\s) +144 405.6 Q F0(the name of the shell, the basename of)180 405.6 Q F1($0) 2.5 E F0(\(the portion follo)2.5 E(wing the \214nal slash\))-.25 E F1 -(\\t)144 712.8 Q F0(the current time in 24-hour HH:MM:SS format)180 -712.8 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(36)192.055 E 0 Cg +(\\t)144 417.6 Q F0(the current time in 24-hour HH:MM:SS format)180 +417.6 Q F1(\\T)144 429.6 Q F0 +(the current time in 12-hour HH:MM:SS format)180 429.6 Q F1(\\@)144 +441.6 Q F0(the current time in 12-hour am/pm format)180 441.6 Q F1(\\A) +144 453.6 Q F0(the current time in 24-hour HH:MM format)180 453.6 Q F1 +(\\u)144 465.6 Q F0(the username of the current user)180 465.6 Q F1(\\v) +144 477.6 Q F0(the v)180 477.6 Q(ersion of)-.15 E F1(bash)2.5 E F0 +(\(e.g., 2.00\))2.5 E F1(\\V)144 489.6 Q F0(the release of)180 489.6 Q +F1(bash)2.5 E F0 2.5(,v)C(ersion + patch le)-2.65 E -.15(ve)-.25 G 2.5 +(l\().15 G(e.g., 2.00.0\))-2.5 E F1(\\w)144 501.6 Q F0 .116 +(the current w)180 501.6 R .116(orking directory)-.1 F 2.616(,w)-.65 G +(ith)-2.616 E F3($HOME)2.616 E F0(abbre)2.366 E .115 +(viated with a tilde \(uses the v)-.25 F .115(alue of the)-.25 F F3(PR) +180 513.6 Q(OMPT_DIR)-.27 E(TRIM)-.36 E F0 -.25(va)2.25 G(riable\)).25 E +F1(\\W)144 525.6 Q F0(the basename of the current w)180 525.6 Q +(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F3($HOME)2.5 E F0 +(abbre)2.25 E(viated with a tilde)-.25 E F1(\\!)144 537.6 Q F0 +(the history number of this command)180 537.6 Q F1(\\#)144 549.6 Q F0 +(the command number of this command)180 549.6 Q F1(\\$)144 561.6 Q F0 +(if the ef)180 561.6 Q(fecti)-.25 E .3 -.15(ve U)-.25 H(ID is 0, a).15 E +F1(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E(\\)144 573.6 Q F4 +(nnn)A F0(the character corresponding to the octal number)180 573.6 Q F4 +(nnn)2.5 E F1(\\\\)144 585.6 Q F0 2.5(ab)180 585.6 S(ackslash)-2.5 E F1 +(\\[)144 597.6 Q F0(be)180 597.6 Q 1.257(gin a sequence of non-printing\ + characters, which could be used to embed a terminal)-.15 F +(control sequence into the prompt)180 609.6 Q F1(\\])144 621.6 Q F0 +(end a sequence of non-printing characters)180 621.6 Q .12 +(The command number and the history number are usually dif)108 638.4 R +.119(ferent: the history number of a command is its)-.25 F 1.585(positi\ +on in the history list, which may include commands restored from the hi\ +story \214le \(see)108 650.4 R F3(HIST)4.085 E(OR)-.162 E(Y)-.315 E F0 +(belo)108 662.4 Q .541(w\), while the command number is the position in\ + the sequence of commands e)-.25 F -.15(xe)-.15 G .54 +(cuted during the cur).15 F(-)-.2 E .546(rent shell session.)108 674.4 R +.546(After the string is decoded, it is e)5.546 F .546 +(xpanded via parameter e)-.15 F .546(xpansion, command substitu-)-.15 F +.352(tion, arithmetic e)108 686.4 R .352(xpansion, and quote remo)-.15 F +-.25(va)-.15 G .352(l, subject to the v).25 F .352(alue of the)-.25 F F1 +(pr)2.852 E(omptv)-.18 E(ars)-.1 E F0 .351(shell option \(see the)2.852 +F(description of the)108 698.4 Q F1(shopt)2.5 E F0(command under)2.5 E +F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).) +-.25 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(38)188.455 E 0 Cg EP -%%Page: 37 37 +%%Page: 39 39 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(\\T)144 84 Q F0(the current time in 12-hour HH:MM:SS format)180 84 Q -F1(\\@)144 96 Q F0(the current time in 12-hour am/pm format)180 96 Q F1 -(\\A)144 108 Q F0(the current time in 24-hour HH:MM format)180 108 Q F1 -(\\u)144 120 Q F0(the username of the current user)180 120 Q F1(\\v)144 -132 Q F0(the v)180 132 Q(ersion of)-.15 E F1(bash)2.5 E F0 -(\(e.g., 2.00\))2.5 E F1(\\V)144 144 Q F0(the release of)180 144 Q F1 -(bash)2.5 E F0 2.5(,v)C(ersion + patch le)-2.65 E -.15(ve)-.25 G 2.5 -(l\().15 G(e.g., 2.00.0\))-2.5 E F1(\\w)144 156 Q F0 .115(the current w) -180 156 R .115(orking directory)-.1 F 2.615(,w)-.65 G(ith)-2.615 E/F2 9 -/Times-Bold@0 SF($HOME)2.615 E F0(abbre)2.365 E .116 -(viated with a tilde \(uses the v)-.25 F .116(alue of the)-.25 F F2(PR) -180 168 Q(OMPT_DIR)-.27 E(TRIM)-.36 E F0 -.25(va)2.25 G(riable\)).25 E -F1(\\W)144 180 Q F0(the basename of the current w)180 180 Q -(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F2($HOME)2.5 E F0 -(abbre)2.25 E(viated with a tilde)-.25 E F1(\\!)144 192 Q F0 -(the history number of this command)180 192 Q F1(\\#)144 204 Q F0 -(the command number of this command)180 204 Q F1(\\$)144 216 Q F0 -(if the ef)180 216 Q(fecti)-.25 E .3 -.15(ve U)-.25 H(ID is 0, a).15 E -F1(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E(\\)144 228 Q/F3 10 -/Times-Italic@0 SF(nnn)A F0 -(the character corresponding to the octal number)180 228 Q F3(nnn)2.5 E -F1(\\\\)144 240 Q F0 2.5(ab)180 240 S(ackslash)-2.5 E F1(\\[)144 252 Q -F0(be)180 252 Q 1.257(gin a sequence of non-printing characters, which \ -could be used to embed a terminal)-.15 F -(control sequence into the prompt)180 264 Q F1(\\])144 276 Q F0 -(end a sequence of non-printing characters)180 276 Q .119 -(The command number and the history number are usually dif)108 292.8 R -.12(ferent: the history number of a command is its)-.25 F 1.585(positio\ -n in the history list, which may include commands restored from the his\ -tory \214le \(see)108 304.8 R F2(HIST)4.084 E(OR)-.162 E(Y)-.315 E F0 -(belo)108 316.8 Q .541(w\), while the command number is the position in\ - the sequence of commands e)-.25 F -.15(xe)-.15 G .541 -(cuted during the cur).15 F(-)-.2 E .546(rent shell session.)108 328.8 R -.546(After the string is decoded, it is e)5.546 F .546 -(xpanded via parameter e)-.15 F .546(xpansion, command substitu-)-.15 F -.351(tion, arithmetic e)108 340.8 R .352(xpansion, and quote remo)-.15 F --.25(va)-.15 G .352(l, subject to the v).25 F .352(alue of the)-.25 F F1 -(pr)2.852 E(omptv)-.18 E(ars)-.1 E F0 .352(shell option \(see the)2.852 -F(description of the)108 352.8 Q F1(shopt)2.5 E F0(command under)2.5 E -F2(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).) --.25 E/F4 10.95/Times-Bold@0 SF(READLINE)72 369.6 Q F0 .151 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95 +/Times-Bold@0 SF(READLINE)72 84 Q F0 .15 (This is the library that handles reading input when using an interacti) -108 381.6 R .45 -.15(ve s)-.25 H .15(hell, unless the).15 F F1 -(\255\255noediting)2.65 E F0(option)2.65 E 1.208(is gi)108 393.6 R -.15 -(ve)-.25 G 3.708(na).15 G 3.708(ts)-3.708 G 1.208(hell in)-3.708 F -.2 -(vo)-.4 G 3.708(cation. Line).2 F 1.208 -(editing is also used when using the)3.708 F F13.709 E F0 1.209 -(option to the)3.709 F F1 -.18(re)3.709 G(ad).18 E F0 -.2(bu)3.709 G -3.709(iltin. By).2 F(def)108 405.6 Q .851 +108 96 R .451 -.15(ve s)-.25 H .151(hell, unless the).15 F/F2 10 +/Times-Bold@0 SF(\255\255noediting)2.651 E F0(option)2.651 E 1.209 +(is gi)108 108 R -.15(ve)-.25 G 3.709(na).15 G 3.709(ts)-3.709 G 1.209 +(hell in)-3.709 F -.2(vo)-.4 G 3.709(cation. Line).2 F 1.208 +(editing is also used when using the)3.709 F F23.708 E F0 1.208 +(option to the)3.708 F F2 -.18(re)3.708 G(ad).18 E F0 -.2(bu)3.708 G +3.708(iltin. By).2 F(def)108 120 Q .851 (ault, the line editing commands are similar to those of Emacs.)-.1 F -3.351(Av)5.851 G .851(i-style line editing interf)-3.351 F .851 -(ace is also)-.1 F -.2(av)108 417.6 S 3.35(ailable. Line)-.05 F .85 +3.351(Av)5.851 G .851(i-style line editing interf)-3.351 F .852 +(ace is also)-.1 F -.2(av)108 132 S 3.35(ailable. Line)-.05 F .85 (editing can be enabled at an)3.35 F 3.35(yt)-.15 G .85(ime using the) --3.35 F F1 .85(\255o emacs)3.35 F F0(or)3.35 E F1 .85(\255o vi)3.35 F F0 -.85(options to the)3.35 F F1(set)3.35 E F0 -.2(bu)3.35 G(iltin).2 E -(\(see)108 429.6 Q F2 .763(SHELL B)3.263 F(UIL)-.09 E .763(TIN COMMANDS) --.828 F F0(belo)3.013 E 3.263(w\). T)-.25 F 3.263(ot)-.8 G .763(urn of) --3.263 F 3.263(fl)-.25 G .763 -(ine editing after the shell is running, use the)-3.263 F F1(+o)3.262 E -(emacs)108 441.6 Q F0(or)2.5 E F1(+o vi)2.5 E F0(options to the)2.5 E F1 -(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(Readline Notation)87 458.4 Q +-3.35 F F2 .85(\255o emacs)3.35 F F0(or)3.35 E F2 .85(\255o vi)3.35 F F0 +.85(options to the)3.35 F F2(set)3.35 E F0 -.2(bu)3.35 G(iltin).2 E +(\(see)108 144 Q/F3 9/Times-Bold@0 SF .762(SHELL B)3.262 F(UIL)-.09 E +.762(TIN COMMANDS)-.828 F F0(belo)3.012 E 3.262(w\). T)-.25 F 3.263(ot) +-.8 G .763(urn of)-3.263 F 3.263(fl)-.25 G .763 +(ine editing after the shell is running, use the)-3.263 F F2(+o)3.263 E +(emacs)108 156 Q F0(or)2.5 E F2(+o vi)2.5 E F0(options to the)2.5 E F2 +(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F2(Readline Notation)87 172.8 Q F0 .463(In this section, the Emacs-style notation is used to denote k) -108 470.4 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke) -2.963 G .463(ys are denoted by C\255)-.05 F F3 -.1(ke)C(y)-.2 E F0(,)A -1.153(e.g., C\255n means Control\255N.)108 482.4 R(Similarly)6.153 E(,) --.65 E F3(meta)4.033 E F0 -.1(ke)3.913 G 1.153(ys are denoted by M\255) --.05 F F3 -.1(ke)C(y)-.2 E F0 3.652(,s)C 3.652(oM)-3.652 G 1.152 -(\255x means Meta\255X.)-3.652 F(\(On)6.152 E -.1(ke)108 494.4 S .83 -(yboards without a)-.05 F F3(meta)3.71 E F0 -.1(ke)3.59 G 2.13 -.65 -(y, M)-.05 H.65 E F3(x)A F0 .83(means ESC)3.33 F F3(x)3.33 E F0 3.33 -(,i)C .831(.e., press the Escape k)-3.33 F 1.131 -.15(ey t)-.1 H .831 -(hen the).15 F F3(x)4.101 E F0 -.1(ke)3.861 G 4.631 -.65(y. T)-.05 H -.831(his mak).65 F(es)-.1 E .6(ESC the)108 506.4 R F3 .6(meta pr)3.1 F -(e\214x)-.37 E F0 5.6(.T)C .6(he combination M\255C\255)-5.6 F F3(x)A F0 -.599(means ESC\255Control\255)3.099 F F3(x)A F0 3.099(,o)C 3.099(rp) --3.099 G .599(ress the Escape k)-3.099 F .899 -.15(ey t)-.1 H .599 -(hen hold).15 F(the Control k)108 518.4 Q .3 -.15(ey w)-.1 H -(hile pressing the).15 E F3(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\)) -.65 E .619(Readline commands may be gi)108 535.2 R -.15(ve)-.25 G 3.119 -(nn).15 G(umeric)-3.119 E F3(ar)3.119 E(guments)-.37 E F0 3.119(,w).27 G -.619(hich normally act as a repeat count.)-3.119 F(Sometimes,)5.62 E(ho) -108 547.2 Q(we)-.25 E -.15(ve)-.25 G 1.419 -.4(r, i).15 H 3.119(ti).4 G -3.119(st)-3.119 G .619(he sign of the ar)-3.119 F .619 +108 184.8 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke) +2.963 G .463(ys are denoted by C\255)-.05 F/F4 10/Times-Italic@0 SF -.1 +(ke)C(y)-.2 E F0(,)A 1.152(e.g., C\255n means Control\255N.)108 196.8 R +(Similarly)6.152 E(,)-.65 E F4(meta)4.032 E F0 -.1(ke)3.913 G 1.153 +(ys are denoted by M\255)-.05 F F4 -.1(ke)C(y)-.2 E F0 3.653(,s)C 3.653 +(oM)-3.653 G 1.153(\255x means Meta\255X.)-3.653 F(\(On)6.153 E -.1(ke) +108 208.8 S .831(yboards without a)-.05 F F4(meta)3.711 E F0 -.1(ke) +3.591 G 2.131 -.65(y, M)-.05 H.65 E F4(x)A F0 .831(means ESC)3.331 F +F4(x)3.331 E F0 3.331(,i)C .83(.e., press the Escape k)-3.331 F 1.13 +-.15(ey t)-.1 H .83(hen the).15 F F4(x)4.1 E F0 -.1(ke)3.86 G 4.63 -.65 +(y. T)-.05 H .83(his mak).65 F(es)-.1 E .599(ESC the)108 220.8 R F4 .599 +(meta pr)3.099 F(e\214x)-.37 E F0 5.599(.T)C .599 +(he combination M\255C\255)-5.599 F F4(x)A F0 .599 +(means ESC\255Control\255)3.099 F F4(x)A F0 3.099(,o)C 3.099(rp)-3.099 G +.6(ress the Escape k)-3.099 F .9 -.15(ey t)-.1 H .6(hen hold).15 F +(the Control k)108 232.8 Q .3 -.15(ey w)-.1 H(hile pressing the).15 E F4 +(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\)).65 E .62 +(Readline commands may be gi)108 249.6 R -.15(ve)-.25 G 3.119(nn).15 G +(umeric)-3.119 E F4(ar)3.119 E(guments)-.37 E F0 3.119(,w).27 G .619 +(hich normally act as a repeat count.)-3.119 F(Sometimes,)5.619 E(ho)108 +261.6 Q(we)-.25 E -.15(ve)-.25 G 1.418 -.4(r, i).15 H 3.118(ti).4 G +3.119(st)-3.118 G .619(he sign of the ar)-3.119 F .619 (gument that is signi\214cant.)-.18 F -.15(Pa)5.619 G .619(ssing a ne) .15 F -.05(ga)-.15 G(ti).05 E .919 -.15(ve a)-.25 H -.18(rg).15 G .619 -(ument to a command that).18 F 1.018(acts in the forw)108 559.2 R 1.018 -(ard direction \(e.g.,)-.1 F F1(kill\255line)3.518 E F0 3.518(\)c)C -1.018(auses that command to act in a backw)-3.518 F 1.019 -(ard direction.)-.1 F(Com-)6.019 E(mands whose beha)108 571.2 Q +(ument to a command that).18 F 1.019(acts in the forw)108 273.6 R 1.018 +(ard direction \(e.g.,)-.1 F F2(kill\255line)3.518 E F0 3.518(\)c)C +1.018(auses that command to act in a backw)-3.518 F 1.018 +(ard direction.)-.1 F(Com-)6.018 E(mands whose beha)108 285.6 Q (vior with ar)-.2 E(guments de)-.18 E(viates from this are noted belo) --.25 E -.65(w.)-.25 G .812(When a command is described as)108 588 R F3 +-.25 E -.65(w.)-.25 G .811(When a command is described as)108 302.4 R F4 (killing)3.311 E F0(te)3.311 E .811(xt, the te)-.15 F .811 -(xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .811 -(or possible future retrie)-3.311 F -.25(va)-.25 G 3.311(l\().25 G F3 -(yank-)-3.311 E(ing)108 600 Q F0 2.529(\). The)B .029(killed te)2.529 F -.029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F3 +(xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .812 +(or possible future retrie)-3.311 F -.25(va)-.25 G 3.312(l\().25 G F4 +(yank-)-3.312 E(ing)108 314.4 Q F0 2.529(\). The)B .029(killed te)2.529 +F .029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F4 .029(kill ring)B F0 5.029(.C)C(onsecuti)-5.029 E .329 -.15(ve k)-.25 H .029(ills cause the te).15 F .029(xt to be accumulated into one unit,) --.15 F .567(which can be yank)108 612 R .567(ed all at once.)-.1 F .567 -(Commands which do not kill te)5.567 F .567 +-.15 F .567(which can be yank)108 326.4 R .567(ed all at once.)-.1 F +.567(Commands which do not kill te)5.567 F .567 (xt separate the chunks of te)-.15 F .567(xt on the kill)-.15 F(ring.) -108 624 Q F1(Readline Initialization)87 640.8 Q F0 .091(Readline is cus\ -tomized by putting commands in an initialization \214le \(the)108 652.8 -R F3(inputr)2.591 E(c)-.37 E F0 2.591(\214le\). The)2.591 F .092 -(name of this \214le)2.591 F .197(is tak)108 664.8 R .196(en from the v) --.1 F .196(alue of the)-.25 F F2(INPUTRC)2.696 E F0 -.25(va)2.446 G +108 338.4 Q F2(Readline Initialization)87 355.2 Q F0 .091(Readline is c\ +ustomized by putting commands in an initialization \214le \(the)108 +367.2 R F4(inputr)2.591 E(c)-.37 E F0 2.591(\214le\). The)2.591 F .091 +(name of this \214le)2.591 F .196(is tak)108 379.2 R .196(en from the v) +-.1 F .196(alue of the)-.25 F F3(INPUTRC)2.696 E F0 -.25(va)2.446 G 2.696(riable. If).25 F .196(that v)2.696 F .196 -(ariable is unset, the def)-.25 F .196(ault is)-.1 F F3(~/.inputr)2.696 -E(c)-.37 E F0 5.196(.W).31 G .196(hen a)-5.196 F 1.034(program which us\ +(ariable is unset, the def)-.25 F .196(ault is)-.1 F F4(~/.inputr)2.696 +E(c)-.37 E F0 5.196(.W).31 G .197(hen a)-5.196 F 1.034(program which us\ es the readline library starts up, the initialization \214le is read, a\ -nd the k)108 676.8 R 1.335 -.15(ey b)-.1 H 1.035(indings and).15 F -.25 -(va)108 688.8 S 1.15(riables are set.).25 F 1.15(There are only a fe) -6.15 F 3.649(wb)-.25 G 1.149(asic constructs allo)-3.649 F 1.149 -(wed in the readline initialization \214le.)-.25 F(Blank)6.149 E .736 -(lines are ignored.)108 700.8 R .737(Lines be)5.737 F .737 -(ginning with a)-.15 F F1(#)3.237 E F0 .737(are comments.)3.237 F .737 -(Lines be)5.737 F .737(ginning with a)-.15 F F1($)3.237 E F0 .737 -(indicate conditional)3.237 F 2.5(constructs. Other)108 712.8 R +nd the k)108 391.2 R 1.334 -.15(ey b)-.1 H 1.034(indings and).15 F -.25 +(va)108 403.2 S 1.149(riables are set.).25 F 1.149(There are only a fe) +6.149 F 3.649(wb)-.25 G 1.149(asic constructs allo)-3.649 F 1.15 +(wed in the readline initialization \214le.)-.25 F(Blank)6.15 E .737 +(lines are ignored.)108 415.2 R .737(Lines be)5.737 F .737 +(ginning with a)-.15 F F2(#)3.237 E F0 .737(are comments.)3.237 F .737 +(Lines be)5.737 F .737(ginning with a)-.15 F F2($)3.237 E F0 .736 +(indicate conditional)3.236 F 2.5(constructs. Other)108 427.2 R (lines denote k)2.5 E .3 -.15(ey b)-.1 H(indings and v).15 E -(ariable settings.)-.25 E .987(The def)108 729.6 R .987(ault k)-.1 F --.15(ey)-.1 G .987(-bindings may be changed with an).15 F F3(inputr) -3.497 E(c)-.37 E F0 3.487(\214le. Other)3.797 F .987 -(programs that use this library may)3.487 F(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(37)192.055 E 0 Cg EP -%%Page: 38 38 +(ariable settings.)-.25 E .986(The def)108 444 R .986(ault k)-.1 F -.15 +(ey)-.1 G .987(-bindings may be changed with an).15 F F4(inputr)3.497 E +(c)-.37 E F0 3.487(\214le. Other)3.797 F .987 +(programs that use this library may)3.487 F(add their o)108 456 Q +(wn commands and bindings.)-.25 E -.15(Fo)108 472.8 S 2.5(re).15 G +(xample, placing)-2.65 E(M\255Control\255u: uni)144 489.6 Q -.15(ve)-.25 +G(rsal\255ar).15 E(gument)-.18 E(or)108 501.6 Q(C\255Meta\255u: uni)144 +513.6 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 525.6 +Q F4(inputr)2.51 E(c)-.37 E F0 -.1(wo)2.81 G(uld mak).1 E 2.5(eM)-.1 G +(\255C\255u e)-2.5 E -.15(xe)-.15 G(cute the readline command).15 E F4 +(univer)2.5 E(sal\255ar)-.1 E(gument)-.37 E F0(.).68 E 1.261(The follo) +108 542.4 R 1.261(wing symbolic character names are recognized:)-.25 F +F4 -.4(RU)3.761 G(BOUT).4 E F0(,)1.27 E F4(DEL)3.761 E F0(,).53 E F4 +(ESC)3.761 E F0(,).72 E F4(LFD)3.761 E F0(,).28 E F4(NEWLINE)3.76 E F0 +(,).73 E F4(RET)3.76 E F0(,)1.27 E F4(RETURN)108 554.4 Q F0(,)1.1 E F4 +(SPC)2.5 E F0(,).72 E F4(SP)2.5 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 G +(nd)-2.5 E F4 -.5(TA)2.5 G(B).5 E F0(.).27 E .209 +(In addition to command names, readline allo)108 571.2 R .209(ws k)-.25 +F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209 +(ound to a string that is inserted when the k)-2.709 F .509 -.15(ey i) +-.1 H(s).15 E(pressed \(a)108 583.2 Q F4(macr)2.5 E(o)-.45 E F0(\).)A F2 +(Readline K)87 600 Q(ey Bindings)-.25 E F0 .366 +(The syntax for controlling k)108 612 R .666 -.15(ey b)-.1 H .366 +(indings in the).15 F F4(inputr)2.876 E(c)-.37 E F0 .366 +(\214le is simple.)3.176 F .366(All that is required is the name of the) +5.366 F .263(command or the te)108 624 R .264(xt of a macro and a k)-.15 +F .564 -.15(ey s)-.1 H .264(equence to which it should be bound.).15 F +.264(The name may be speci-)5.264 F .853(\214ed in one of tw)108 636 R +3.353(ow)-.1 G .853(ays: as a symbolic k)-3.453 F 1.153 -.15(ey n)-.1 H +.853(ame, possibly with).15 F F4(Meta\255)3.353 E F0(or)3.353 E F4 +(Contr)3.353 E(ol\255)-.45 E F0(pre\214x)3.353 E .853(es, or as a k)-.15 +F -.15(ey)-.1 G(sequence.)108 648 Q .16(When using the form)108 664.8 R +F2 -.1(ke)2.66 G(yname).1 E F0(:)A F4(function\255name).833 E F0(or)2.66 +E F4(macr)2.66 E(o)-.45 E F0(,)A F4 -.1(ke)2.66 G(yname)-.2 E F0 .161 +(is the name of a k)2.84 F .461 -.15(ey s)-.1 H .161(pelled out in Eng-) +.15 F 2.5(lish. F)108 676.8 R(or e)-.15 E(xample:)-.15 E(Control-u: uni) +144 700.8 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E +(Meta-Rubout: backw)144 712.8 Q(ard-kill-w)-.1 E(ord)-.1 E +(Control-o: "> output")144 724.8 Q(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(39)188.455 E 0 Cg EP +%%Page: 40 40 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(add their o)108 84 -Q(wn commands and bindings.)-.25 E -.15(Fo)108 100.8 S 2.5(re).15 G -(xample, placing)-2.65 E(M\255Control\255u: uni)144 117.6 Q -.15(ve)-.25 -G(rsal\255ar).15 E(gument)-.18 E(or)108 129.6 Q(C\255Meta\255u: uni)144 -141.6 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 153.6 -Q/F1 10/Times-Italic@0 SF(inputr)2.51 E(c)-.37 E F0 -.1(wo)2.81 G -(uld mak).1 E 2.5(eM)-.1 G(\255C\255u e)-2.5 E -.15(xe)-.15 G -(cute the readline command).15 E F1(univer)2.5 E(sal\255ar)-.1 E(gument) --.37 E F0(.).68 E 1.26(The follo)108 170.4 R 1.261 -(wing symbolic character names are recognized:)-.25 F F1 -.4(RU)3.761 G -(BOUT).4 E F0(,)1.27 E F1(DEL)3.761 E F0(,).53 E F1(ESC)3.761 E F0(,).72 -E F1(LFD)3.761 E F0(,).28 E F1(NEWLINE)3.761 E F0(,).73 E F1(RET)3.761 E -F0(,)1.27 E F1(RETURN)108 182.4 Q F0(,)1.1 E F1(SPC)2.5 E F0(,).72 E F1 -(SP)2.5 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 G(nd)-2.5 E F1 -.5(TA)2.5 G -(B).5 E F0(.).27 E .209(In addition to command names, readline allo)108 -199.2 R .209(ws k)-.25 F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G -2.709(eb)-2.709 G .209(ound to a string that is inserted when the k) --2.709 F .509 -.15(ey i)-.1 H(s).15 E(pressed \(a)108 211.2 Q F1(macr) -2.5 E(o)-.45 E F0(\).)A/F2 10/Times-Bold@0 SF(Readline K)87 228 Q -(ey Bindings)-.25 E F0 .366(The syntax for controlling k)108 240 R .666 --.15(ey b)-.1 H .366(indings in the).15 F F1(inputr)2.876 E(c)-.37 E F0 -.366(\214le is simple.)3.176 F .366 -(All that is required is the name of the)5.366 F .264(command or the te) -108 252 R .264(xt of a macro and a k)-.15 F .564 -.15(ey s)-.1 H .264 -(equence to which it should be bound.).15 F .263(The name may be speci-) -5.264 F .853(\214ed in one of tw)108 264 R 3.353(ow)-.1 G .853 -(ays: as a symbolic k)-3.453 F 1.153 -.15(ey n)-.1 H .853 -(ame, possibly with).15 F F1(Meta\255)3.353 E F0(or)3.353 E F1(Contr) -3.353 E(ol\255)-.45 E F0(pre\214x)3.353 E .853(es, or as a k)-.15 F -.15 -(ey)-.1 G(sequence.)108 276 Q .161(When using the form)108 292.8 R F2 --.1(ke)2.661 G(yname).1 E F0(:)A F1(function\255name).833 E F0(or)2.661 -E F1(macr)2.661 E(o)-.45 E F0(,)A F1 -.1(ke)2.661 G(yname)-.2 E F0 .16 -(is the name of a k)2.84 F .46 -.15(ey s)-.1 H .16(pelled out in Eng-) -.15 F 2.5(lish. F)108 304.8 R(or e)-.15 E(xample:)-.15 E(Control-u: uni) -144 328.8 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E -(Meta-Rubout: backw)144 340.8 Q(ard-kill-w)-.1 E(ord)-.1 E -(Control-o: "> output")144 352.8 Q .698(In the abo)108 369.6 R .998 -.15 -(ve ex)-.15 H(ample,).15 E F1(C\255u)3.038 E F0 .698 -(is bound to the function)3.448 F F2(uni)3.198 E -.1(ve)-.1 G -(rsal\255ar).1 E(gument)-.1 E F0(,)A F1(M\255DEL)3.878 E F0 .698 -(is bound to the func-)3.728 F(tion)108 381.6 Q F2 -(backward\255kill\255w)2.759 E(ord)-.1 E F0 2.759(,a)C(nd)-2.759 E F1 -(C\255o)2.599 E F0 .258(is bound to run the macro e)2.939 F .258 -(xpressed on the right hand side \(that is, to)-.15 F(insert the te)108 -393.6 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0 -(into the line\).)2.5 E .055(In the second form,)108 410.4 R F2("k)2.555 -E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.555 E F1(macr) -2.555 E(o)-.45 E F0(,)A F2 -.1(ke)2.555 G(yseq).1 E F0(dif)2.556 E .056 -(fers from)-.25 F F2 -.1(ke)2.556 G(yname).1 E F0(abo)2.556 E .356 -.15 -(ve i)-.15 H 2.556(nt).15 G .056(hat strings)-2.556 F 1.284 -(denoting an entire k)108 422.4 R 1.584 -.15(ey s)-.1 H 1.284(equence m\ +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .699(In the abo) +108 84 R .998 -.15(ve ex)-.15 H(ample,).15 E/F1 10/Times-Italic@0 SF +(C\255u)3.038 E F0 .698(is bound to the function)3.448 F/F2 10 +/Times-Bold@0 SF(uni)3.198 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E +F0(,)A F1(M\255DEL)3.878 E F0 .698(is bound to the func-)3.728 F(tion) +108 96 Q F2(backward\255kill\255w)2.758 E(ord)-.1 E F0 2.758(,a)C(nd) +-2.758 E F1(C\255o)2.598 E F0 .258(is bound to run the macro e)2.938 F +.259(xpressed on the right hand side \(that is, to)-.15 F(insert the te) +108 108 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0 +(into the line\).)2.5 E .056(In the second form,)108 124.8 R F2("k)2.556 +E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.556 E F1(macr) +2.556 E(o)-.45 E F0(,)A F2 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055 +(fers from)-.25 F F2 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15 +(ve i)-.15 H 2.555(nt).15 G .055(hat strings)-2.555 F 1.284 +(denoting an entire k)108 136.8 R 1.584 -.15(ey s)-.1 H 1.284(equence m\ ay be speci\214ed by placing the sequence within double quotes.).15 F -(Some)6.284 E .385(GNU Emacs style k)108 434.4 R .685 -.15(ey e)-.1 H -.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .386 -(xample, b)-.15 F .386(ut the symbolic character names)-.2 F -(are not recognized.)108 446.4 Q("\\C\255u": uni)144 470.4 Q -.15(ve) +(Some)6.284 E .386(GNU Emacs style k)108 148.8 R .686 -.15(ey e)-.1 H +.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .385 +(xample, b)-.15 F .385(ut the symbolic character names)-.2 F +(are not recognized.)108 160.8 Q("\\C\255u": uni)144 184.8 Q -.15(ve) -.25 G(rsal\255ar).15 E(gument)-.18 E -("\\C\255x\\C\255r": re\255read\255init\255\214le)144 482.4 Q -("\\e[11~": "Function K)144 494.4 Q .3 -.15(ey 1)-.25 H(").15 E .315 -(In this e)108 511.2 R(xample,)-.15 E F1(C\255u)2.655 E F0 .315(is ag) -3.065 F .315(ain bound to the function)-.05 F F2(uni)2.815 E -.1(ve)-.1 +("\\C\255x\\C\255r": re\255read\255init\255\214le)144 196.8 Q +("\\e[11~": "Function K)144 208.8 Q .3 -.15(ey 1)-.25 H(").15 E .314 +(In this e)108 225.6 R(xample,)-.15 E F1(C\255u)2.654 E F0 .314(is ag) +3.064 F .315(ain bound to the function)-.05 F F2(uni)2.815 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .315(C\255x C\255r)5.155 F F0 -.314(is bound to the func-)3.544 F(tion)108 523.2 Q F2 -.18(re)2.5 G +.315(is bound to the func-)3.545 F(tion)108 237.6 Q F2 -.18(re)2.5 G .18 E(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F1 (ESC [ 1 1 ~)3.01 E F0(is bound to insert the te)3.94 E(xt)-.15 E F3 (Function Key 1)2.5 E F0(.)A -(The full set of GNU Emacs style escape sequences is)108 540 Q F2 -<5c43ad>144 552 Q F0(control pre\214x)180 552 Q F2<5c4dad>144 564 Q F0 -(meta pre\214x)180 564 Q F2(\\e)144 576 Q F0(an escape character)180 576 -Q F2(\\\\)144 588 Q F0(backslash)180 588 Q F2(\\")144 600 Q F0 -(literal ")180 600 Q F2<5c08>144 612 Q F0(literal \010)180 612 Q(In add\ -ition to the GNU Emacs style escape sequences, a second set of backslas\ -h escapes is a)108 628.8 Q -.25(va)-.2 G(ilable:).25 E F2(\\a)144 640.8 -Q F0(alert \(bell\))180 640.8 Q F2(\\b)144 652.8 Q F0(backspace)180 -652.8 Q F2(\\d)144 664.8 Q F0(delete)180 664.8 Q F2(\\f)144 676.8 Q F0 -(form feed)180 676.8 Q F2(\\n)144 688.8 Q F0(ne)180 688.8 Q(wline)-.25 E -F2(\\r)144 700.8 Q F0(carriage return)180 700.8 Q F2(\\t)144 712.8 Q F0 -(horizontal tab)180 712.8 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 -E(38)192.055 E 0 Cg EP -%%Page: 39 39 +(The full set of GNU Emacs style escape sequences is)108 254.4 Q F2 +<5c43ad>144 266.4 Q F0(control pre\214x)180 266.4 Q F2<5c4dad>144 278.4 +Q F0(meta pre\214x)180 278.4 Q F2(\\e)144 290.4 Q F0 +(an escape character)180 290.4 Q F2(\\\\)144 302.4 Q F0(backslash)180 +302.4 Q F2(\\")144 314.4 Q F0(literal ")180 314.4 Q F2<5c08>144 326.4 Q +F0(literal \010)180 326.4 Q(In addition to the GNU Emacs style escape s\ +equences, a second set of backslash escapes is a)108 343.2 Q -.25(va)-.2 +G(ilable:).25 E F2(\\a)144 355.2 Q F0(alert \(bell\))180 355.2 Q F2(\\b) +144 367.2 Q F0(backspace)180 367.2 Q F2(\\d)144 379.2 Q F0(delete)180 +379.2 Q F2(\\f)144 391.2 Q F0(form feed)180 391.2 Q F2(\\n)144 403.2 Q +F0(ne)180 403.2 Q(wline)-.25 E F2(\\r)144 415.2 Q F0(carriage return)180 +415.2 Q F2(\\t)144 427.2 Q F0(horizontal tab)180 427.2 Q F2(\\v)144 +439.2 Q F0 -.15(ve)180 439.2 S(rtical tab).15 E F2(\\)144 451.2 Q F1 +(nnn)A F0(the eight-bit character whose v)180 451.2 Q +(alue is the octal v)-.25 E(alue)-.25 E F1(nnn)2.5 E F0 +(\(one to three digits\))2.5 E F2(\\x)144 463.2 Q F1(HH)A F0 +(the eight-bit character whose v)180 463.2 Q(alue is the he)-.25 E +(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh) +-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E 1.142(When entering the te)108 +480 R 1.141(xt of a macro, single or double quotes must be used to indi\ +cate a macro de\214nition.)-.15 F .089(Unquoted te)108 492 R .089 +(xt is assumed to be a function name.)-.15 F .09(In the macro body)5.089 +F 2.59(,t)-.65 G .09(he backslash escapes described abo)-2.59 F -.15(ve) +-.15 G(are e)108 504 Q 2.5(xpanded. Backslash)-.15 F(will quote an)2.5 E +2.5(yo)-.15 G(ther character in the macro te)-2.5 E +(xt, including " and \010.)-.15 E F2(Bash)108 520.8 Q F0(allo)2.93 E .43 +(ws the current readline k)-.25 F .73 -.15(ey b)-.1 H .429 +(indings to be displayed or modi\214ed with the).15 F F2(bind)2.929 E F0 +-.2(bu)2.929 G .429(iltin command.).2 F .045 +(The editing mode may be switched during interacti)108 532.8 R .345 -.15 +(ve u)-.25 H .046(se by using the).15 F F22.546 E F0 .046 +(option to the)2.546 F F2(set)2.546 E F0 -.2(bu)2.546 G .046 +(iltin command).2 F(\(see)108 544.8 Q/F4 9/Times-Bold@0 SF(SHELL B)2.5 E +(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F2 +(Readline V)87 561.6 Q(ariables)-.92 E F0 .044(Readline has v)108 573.6 +R .043(ariables that can be used to further customize its beha)-.25 F +(vior)-.2 E 5.043(.A)-.55 G -.25(va)-2.5 G .043 +(riable may be set in the).25 F F1(inpu-)2.553 E(tr)108 585.6 Q(c)-.37 E +F0(\214le with a statement of the form)2.81 E F2(set)144 602.4 Q F1 +(variable\255name value)2.5 E F0 .79(Except where noted, readline v)108 +619.2 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F +(alues)-.25 E F2(On)3.29 E F0(or)3.29 E F2(Off)3.29 E F0 .79 +(\(without re)3.29 F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-) +5.79 E .449(nized v)108 631.2 R .448(ariable names are ignored.)-.25 F +.448(When a v)5.448 F .448(ariable v)-.25 F .448 +(alue is read, empty or null v)-.25 F .448(alues, "on" \(case-insensi-) +-.25 F(ti)108 643.2 Q -.15(ve)-.25 G .467(\), and "1" are equi).15 F +-.25(va)-.25 G .468(lent to).25 F F2(On)2.968 E F0 5.468(.A)C .468 +(ll other v)-5.468 F .468(alues are equi)-.25 F -.25(va)-.25 G .468 +(lent to).25 F F2(Off)2.968 E F0 5.468(.T)C .468(he v)-5.468 F .468 +(ariables and their def)-.25 F(ault)-.1 E -.25(va)108 655.2 S(lues are:) +.25 E F2(bell\255style \(audible\))108 672 Q F0 .011 +(Controls what happens when readline w)144 684 R .011 +(ants to ring the terminal bell.)-.1 F .01(If set to)5.01 F F2(none)2.51 +E F0 2.51(,r)C .01(eadline ne)-2.51 F -.15(ve)-.25 G(r).15 E .94 +(rings the bell.)144 696 R .94(If set to)5.94 F F2(visible)3.44 E F0 +3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25(va) +-.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F2(audible)3.44 E F0(,)A +(readline attempts to ring the terminal')144 708 Q 2.5(sb)-.55 G(ell.) +-2.5 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(40)188.455 E 0 Cg +EP +%%Page: 41 41 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(\\v)144 84 Q F0 -.15(ve)180 84 S(rtical tab).15 E F1(\\)144 96 Q/F2 -10/Times-Italic@0 SF(nnn)A F0(the eight-bit character whose v)180 96 Q -(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0 -(\(one to three digits\))2.5 E F1(\\x)144 108 Q F2(HH)A F0 -(the eight-bit character whose v)180 108 Q(alue is the he)-.25 E -(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh) --.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E 1.141(When entering the te)108 -124.8 R 1.141(xt of a macro, single or double quotes must be used to in\ -dicate a macro de\214nition.)-.15 F .09(Unquoted te)108 136.8 R .09 -(xt is assumed to be a function name.)-.15 F .089(In the macro body) -5.089 F 2.589(,t)-.65 G .089(he backslash escapes described abo)-2.589 F --.15(ve)-.15 G(are e)108 148.8 Q 2.5(xpanded. Backslash)-.15 F -(will quote an)2.5 E 2.5(yo)-.15 G(ther character in the macro te)-2.5 E -(xt, including " and \010.)-.15 E F1(Bash)108 165.6 Q F0(allo)2.929 E -.429(ws the current readline k)-.25 F .729 -.15(ey b)-.1 H .429 -(indings to be displayed or modi\214ed with the).15 F F1(bind)2.93 E F0 --.2(bu)2.93 G .43(iltin command.).2 F .046 -(The editing mode may be switched during interacti)108 177.6 R .346 -.15 -(ve u)-.25 H .046(se by using the).15 F F12.545 E F0 .045 -(option to the)2.545 F F1(set)2.545 E F0 -.2(bu)2.545 G .045 -(iltin command).2 F(\(see)108 189.6 Q/F3 9/Times-Bold@0 SF(SHELL B)2.5 E -(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1 -(Readline V)87 206.4 Q(ariables)-.92 E F0 .043(Readline has v)108 218.4 -R .043(ariables that can be used to further customize its beha)-.25 F -(vior)-.2 E 5.043(.A)-.55 G -.25(va)-2.5 G .043 -(riable may be set in the).25 F F2(inpu-)2.554 E(tr)108 230.4 Q(c)-.37 E -F0(\214le with a statement of the form)2.81 E F1(set)144 247.2 Q F2 -(variable\255name value)2.5 E F0 .79(Except where noted, readline v)108 -264 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F(alues) --.25 E F1(On)3.29 E F0(or)3.29 E F1(Off)3.29 E F0 .79(\(without re)3.29 -F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-)5.79 E .448(nized v) -108 276 R .448(ariable names are ignored.)-.25 F .448(When a v)5.448 F -.448(ariable v)-.25 F .448(alue is read, empty or null v)-.25 F .449 -(alues, "on" \(case-insensi-)-.25 F(ti)108 288 Q -.15(ve)-.25 G .468 -(\), and "1" are equi).15 F -.25(va)-.25 G .468(lent to).25 F F1(On) -2.968 E F0 5.468(.A)C .468(ll other v)-5.468 F .468(alues are equi)-.25 -F -.25(va)-.25 G .468(lent to).25 F F1(Off)2.968 E F0 5.468(.T)C .467 -(he v)-5.468 F .467(ariables and their def)-.25 F(ault)-.1 E -.25(va)108 -300 S(lues are:).25 E F1(bell\255style \(audible\))108 316.8 Q F0 .01 -(Controls what happens when readline w)144 328.8 R .011 -(ants to ring the terminal bell.)-.1 F .011(If set to)5.011 F F1(none) -2.511 E F0 2.511(,r)C .011(eadline ne)-2.511 F -.15(ve)-.25 G(r).15 E -.94(rings the bell.)144 340.8 R .94(If set to)5.94 F F1(visible)3.44 E -F0 3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25 -(va)-.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F1(audible)3.44 E F0 -(,)A(readline attempts to ring the terminal')144 352.8 Q 2.5(sb)-.55 G -(ell.)-2.5 E F1(bind\255tty\255special\255chars \(On\))108 364.8 Q F0 -.055(If set to)144 376.8 R F1(On)2.555 E F0 2.555(,r)C .056(eadline att\ -empts to bind the control characters treated specially by the k)-2.555 F -(ernel')-.1 E 2.556(st)-.55 G(ermi-)-2.556 E(nal dri)144 388.8 Q -.15 -(ve)-.25 G 2.5(rt).15 G 2.5(ot)-2.5 G(heir readline equi)-2.5 E -.25(va) --.25 G(lents.).25 E F1(blink\255matching\255par)108 400.8 Q(en \(Off\)) --.18 E F0 .21(If set to)144 412.8 R F1(On)2.71 E F0 2.71(,r)C .21 +SF(bind\255tty\255special\255chars \(On\))108 84 Q F0 .056(If set to)144 +96 R F1(On)2.556 E F0 2.556(,r)C .056(eadline attempts to bind the cont\ +rol characters treated specially by the k)-2.556 F(ernel')-.1 E 2.555 +(st)-.55 G(ermi-)-2.555 E(nal dri)144 108 Q -.15(ve)-.25 G 2.5(rt).15 G +2.5(ot)-2.5 G(heir readline equi)-2.5 E -.25(va)-.25 G(lents.).25 E F1 +(blink\255matching\255par)108 120 Q(en \(Off\))-.18 E F0 .21(If set to) +144 132 R F1(On)2.71 E F0 2.71(,r)C .21 (eadline attempts to brie\215y mo)-2.71 F .51 -.15(ve t)-.15 H .21 (he cursor to an opening parenthesis when a closing).15 F -(parenthesis is inserted.)144 424.8 Q F1(color)108 436.8 Q +(parenthesis is inserted.)144 144 Q F1(color)108 156 Q (ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F0 .515(If set to) -144 448.8 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, r\ -eadline displays the common pre\214x of the set of possible)-3.015 F -2.936(completions using a dif)144 460.8 R 2.936(ferent color)-.25 F -7.936(.T)-.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.935 -(en from the v)-.1 F 2.935(alue of the)-.25 F F1(LS_COLORS)144 472.8 Q -F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1(color)108 484.8 Q -(ed\255stats \(Off\))-.18 E F0 1.579(If set to)144 496.8 R F1(On)4.079 E -F0 4.079(,r)C 1.579(eadline displays possible completions using dif) --4.079 F 1.58(ferent colors to indicate their \214le)-.25 F 2.5 -(type. The)144 508.8 R(color de\214nitions are tak)2.5 E(en from the v) --.1 E(alue of the)-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 -E(ariable.)-.25 E F1(comment\255begin \(`)108 520.8 Q(`#')-.63 E('\)) --.63 E F0 .885(The string that is inserted when the readline)144 532.8 R -F1(insert\255comment)3.385 E F0 .884(command is e)3.384 F -.15(xe)-.15 G -3.384(cuted. This).15 F(com-)3.384 E(mand is bound to)144 544.8 Q F1 +144 168 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, rea\ +dline displays the common pre\214x of the set of possible)-3.015 F 2.935 +(completions using a dif)144 180 R 2.935(ferent color)-.25 F 7.936(.T) +-.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.936 +(en from the v)-.1 F 2.936(alue of the)-.25 F F1(LS_COLORS)144 192 Q F0 +(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1(color)108 204 Q +(ed\255stats \(Off\))-.18 E F0 1.58(If set to)144 216 R F1(On)4.08 E F0 +4.08(,r)C 1.579(eadline displays possible completions using dif)-4.08 F +1.579(ferent colors to indicate their \214le)-.25 F 2.5(type. The)144 +228 R(color de\214nitions are tak)2.5 E(en from the v)-.1 E(alue of the) +-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E +F1(comment\255begin \(`)108 240 Q(`#')-.63 E('\))-.63 E F0 .884 +(The string that is inserted when the readline)144 252 R F1 +(insert\255comment)3.385 E F0 .885(command is e)3.385 F -.15(xe)-.15 G +3.385(cuted. This).15 F(com-)3.385 E(mand is bound to)144 264 Q F1 (M\255#)2.5 E F0(in emacs mode and to)2.5 E F1(#)2.5 E F0 -(in vi command mode.)2.5 E F1(completion\255display\255width \(-1\))108 -556.8 Q F0 1.453(The number of screen columns used to display possible \ -matches when performing completion.)144 568.8 R .194(The v)144 580.8 R +(in vi command mode.)2.5 E F1(completion\255display\255width \(\2551\)) +108 276 Q F0 1.453(The number of screen columns used to display possibl\ +e matches when performing completion.)144 288 R .193(The v)144 300 R .193(alue is ignored if it is less than 0 or greater than the terminal \ -screen width.)-.25 F 2.693(Av)5.193 G .193(alue of 0 will)-2.943 F -(cause matches to be displayed one per line.)144 592.8 Q(The def)5 E -(ault v)-.1 E(alue is -1.)-.25 E F1(completion\255ignor)108 604.8 Q -(e\255case \(Off\))-.18 E F0(If set to)144 616.8 Q F1(On)2.5 E F0 2.5 -(,r)C(eadline performs \214lename matching and completion in a case\255\ -insensiti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1 -(completion\255map\255case \(Off\))108 628.8 Q F0 .093(If set to)144 -640.8 R F1(On)2.593 E F0 2.593(,a)C(nd)-2.593 E F1(completion\255ignor) -2.593 E(e\255case)-.18 E F0 .093(is enabled, readline treats h)2.593 F -.093(yphens \()-.05 F F2A F0 2.593(\)a)C .094(nd underscores)-2.593 -F(\()144 652.8 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G(qui)-2.5 E -.25(va) --.25 G(lent when performing case\255insensiti).25 E .3 -.15(ve \214)-.25 -H(lename matching and completion.).15 E F1(completion\255pr)108 664.8 Q -(e\214x\255display\255length \(0\))-.18 E F0 .829(The length in charact\ -ers of the common pre\214x of a list of possible completions that is di\ -splayed)144 676.8 R 1.274(without modi\214cation.)144 688.8 R 1.274 -(When set to a v)6.274 F 1.274(alue greater than zero, common pre\214x) --.25 F 1.275(es longer than this)-.15 F -.25(va)144 700.8 S(lue are rep\ -laced with an ellipsis when displaying possible completions.).25 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(39)192.055 E 0 Cg EP -%%Page: 40 40 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(completion\255query\255items \(100\))108 84 Q F0 .53 -(This determines when the user is queried about vie)144 96 R .529 -(wing the number of possible completions gen-)-.25 F .56(erated by the) -144 108 R F1(possible\255completions)3.06 E F0 3.06(command. It)3.06 F -.561(may be set to an)3.061 F 3.061(yi)-.15 G(nte)-3.061 E .561(ger v) --.15 F .561(alue greater than or)-.25 F .783(equal to zero.)144 120 R +screen width.)-.25 F 2.694(Av)5.194 G .194(alue of 0 will)-2.944 F +(cause matches to be displayed one per line.)144 312 Q(The def)5 E +(ault v)-.1 E(alue is \2551.)-.25 E F1(completion\255ignor)108 324 Q +(e\255case \(Off\))-.18 E F0(If set to)144 336 Q F1(On)2.5 E F0 2.5(,r)C +(eadline performs \214lename matching and completion in a case\255insen\ +siti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1 +(completion\255map\255case \(Off\))108 348 Q F0 .094(If set to)144 360 R +F1(On)2.593 E F0 2.593(,a)C(nd)-2.593 E F1(completion\255ignor)2.593 E +(e\255case)-.18 E F0 .093(is enabled, readline treats h)2.593 F .093 +(yphens \()-.05 F/F2 10/Times-Italic@0 SFA F0 2.593(\)a)C .093 +(nd underscores)-2.593 F(\()144 372 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G +(qui)-2.5 E -.25(va)-.25 G(lent when performing case\255insensiti).25 E +.3 -.15(ve \214)-.25 H(lename matching and completion.).15 E F1 +(completion\255pr)108 384 Q(e\214x\255display\255length \(0\))-.18 E F0 +.829(The length in characters of the common pre\214x of a list of possi\ +ble completions that is displayed)144 396 R 1.275 +(without modi\214cation.)144 408 R 1.275(When set to a v)6.275 F 1.274 +(alue greater than zero, common pre\214x)-.25 F 1.274 +(es longer than this)-.15 F -.25(va)144 420 S(lue are replaced with an \ +ellipsis when displaying possible completions.).25 E F1 +(completion\255query\255items \(100\))108 432 Q F0 .529 +(This determines when the user is queried about vie)144 444 R .53 +(wing the number of possible completions gen-)-.25 F .561(erated by the) +144 456 R F1(possible\255completions)3.061 E F0 3.061(command. It)3.061 +F .561(may be set to an)3.061 F 3.06(yi)-.15 G(nte)-3.06 E .56(ger v) +-.15 F .56(alue greater than or)-.25 F .782(equal to zero.)144 468 R .783(If the number of possible completions is greater than or equal to \ -the v)5.783 F .782(alue of this)-.25 F -.25(va)144 132 S .237 +the v)5.782 F .783(alue of this)-.25 F -.25(va)144 480 S .237 (riable, the user is ask).25 F .237(ed whether or not he wishes to vie) -.1 F 2.737(wt)-.25 G .237(hem; otherwise the)-2.737 F 2.737(ya)-.15 G -.237(re simply listed)-2.737 F(on the terminal.)144 144 Q F1(con)108 156 -Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .613(If set to)144 168 R F1(On) -3.113 E F0 3.113(,r)C .613(eadline will con)-3.113 F -.15(ve)-.4 G .613 -(rt characters with the eighth bit set to an ASCII k).15 F .912 -.15 -(ey s)-.1 H .612(equence by).15 F .541 +.237(re simply listed)-2.737 F(on the terminal.)144 492 Q F1(con)108 504 +Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .612(If set to)144 516 R F1(On) +3.112 E F0 3.112(,r)C .613(eadline will con)-3.112 F -.15(ve)-.4 G .613 +(rt characters with the eighth bit set to an ASCII k).15 F .913 -.15 +(ey s)-.1 H .613(equence by).15 F .541 (stripping the eighth bit and pre\214xing an escape character \(in ef) -144 180 R .541(fect, using escape as the)-.25 F/F2 10/Times-Italic@0 SF -.542(meta pr)3.042 F(e-)-.37 E<8c78>144 192 Q F0 2.5(\). The)B(def)2.5 E -(ault is)-.1 E F2(On)2.5 E F0 2.5(,b)C(ut readline will set it to)-2.7 E -F2(Of)2.5 E(f)-.18 E F0(if the locale contains eight-bit characters.)2.5 -E F1(disable\255completion \(Off\))108 204 Q F0 .038(If set to)144 216 R -F1(On)2.538 E F0 2.538(,r)C .038(eadline will inhibit w)-2.538 F .038 +144 528 R .541(fect, using escape as the)-.25 F F2 .541(meta pr)3.041 F +(e-)-.37 E<8c78>144 540 Q F0 2.5(\). The)B(def)2.5 E(ault is)-.1 E F2 +(On)2.5 E F0 2.5(,b)C(ut readline will set it to)-2.7 E F2(Of)2.5 E(f) +-.18 E F0(if the locale contains eight-bit characters.)2.5 E F1 +(disable\255completion \(Off\))108 552 Q F0 .038(If set to)144 564 R F1 +(On)2.538 E F0 2.538(,r)C .038(eadline will inhibit w)-2.538 F .038 (ord completion.)-.1 F .038 (Completion characters will be inserted into the)5.038 F(line as if the) -144 228 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0 -(.)A F1(echo\255contr)108 240 Q(ol\255characters \(On\))-.18 E F0 1.21 -(When set to)144 252 R F1(On)3.71 E F0 3.71(,o)C 3.71(no)-3.71 G 1.211 -(perating systems that indicate the)-3.71 F 3.711(ys)-.15 G 1.211 +144 576 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0 +(.)A F1(echo\255contr)108 588 Q(ol\255characters \(On\))-.18 E F0 1.211 +(When set to)144 600 R F1(On)3.711 E F0 3.711(,o)C 3.711(no)-3.711 G +1.211(perating systems that indicate the)-3.711 F 3.711(ys)-.15 G 1.21 (upport it, readline echoes a character)-3.711 F -(corresponding to a signal generated from the k)144 264 Q -.15(ey)-.1 G -(board.).15 E F1(editing\255mode \(emacs\))108 276 Q F0 .142 -(Controls whether readline be)144 288 R .141(gins with a set of k)-.15 F -.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.641 E F0 -(or)2.641 E F2(vi)2.641 E F0(.)A F1(editing\255mode)5.141 E F0 -(can be set to either)144 300 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E -F0(.)A F1(enable\255brack)108 312 Q(eted\255paste \(Off\))-.1 E F0 1.221 -(When set to)144 324 R F1(On)3.721 E F0 3.721(,r)C 1.221 +(corresponding to a signal generated from the k)144 612 Q -.15(ey)-.1 G +(board.).15 E F1(editing\255mode \(emacs\))108 624 Q F0 .141 +(Controls whether readline be)144 636 R .141(gins with a set of k)-.15 F +.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.642 E F0 +(or)2.642 E F2(vi)2.642 E F0(.)A F1(editing\255mode)5.142 E F0 +(can be set to either)144 648 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E +F0(.)A F1(emacs\255mode\255string \(@\))108 660 Q F0 .518(If the)144 672 +R F2(show\255mode\255in\255pr)3.018 E(ompt)-.45 E F0 -.25(va)3.018 G +.517(riable is enabled, this string is displayed immediately before the) +.25 F .622 +(last line of the primary prompt when emacs editing mode is acti)144 684 +R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .622(alue is e)-.25 F +.622(xpanded lik)-.15 F 3.122(ea)-.1 G -.1(ke)144 696 S 3.34(yb)-.05 G +.839(inding, so the standard set of meta- and control pre\214x)-3.34 F +.839(es and backslash escape sequences is)-.15 F -.2(av)144 708 S 2.798 +(ailable. Use)-.05 F .298(the \\1 and \\2 escapes to be)2.798 F .298 +(gin and end sequences of non-printing characters, which)-.15 F +(can be used to embed a terminal control sequence into the mode string.) +144 720 Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(41)188.455 E 0 +Cg EP +%%Page: 42 42 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(enable\255brack)108 84 Q(eted\255paste \(Off\))-.1 E F0 1.222 +(When set to)144 96 R F1(On)3.721 E F0 3.721(,r)C 1.221 (eadline will con\214gure the terminal in a w)-3.721 F 1.221 (ay that will enable it to insert each)-.1 F .353 -(paste into the editing b)144 336 R(uf)-.2 E .353(fer as a single strin\ -g of characters, instead of treating each character as if)-.25 F .543 -(it had been read from the k)144 348 R -.15(ey)-.1 G 3.043(board. This) -.15 F .543(can pre)3.043 F -.15(ve)-.25 G .544 +(paste into the editing b)144 108 R(uf)-.2 E .353(fer as a single strin\ +g of characters, instead of treating each character as if)-.25 F .544 +(it had been read from the k)144 120 R -.15(ey)-.1 G 3.043(board. This) +.15 F .543(can pre)3.043 F -.15(ve)-.25 G .543 (nt pasted characters from being interpreted as).15 F(editing commands.) -144 360 Q F1(enable\255k)108 372 Q(eypad \(Off\))-.1 E F0 .893 -(When set to)144 384 R F1(On)3.393 E F0 3.393(,r)C .893 +144 132 Q F1(enable\255k)108 144 Q(eypad \(Off\))-.1 E F0 .892 +(When set to)144 156 R F1(On)3.393 E F0 3.393(,r)C .893 (eadline will try to enable the application k)-3.393 F -.15(ey)-.1 G -.893(pad when it is called.).15 F .892(Some sys-)5.893 F -(tems need this to enable the arro)144 396 Q 2.5(wk)-.25 G -.15(ey)-2.6 -G(s.).15 E F1(enable\255meta\255k)108 408 Q(ey \(On\))-.1 E F0 .64 -(When set to)144 420 R F1(On)3.14 E F0 3.14(,r)C .64 +.893(pad when it is called.).15 F .893(Some sys-)5.893 F +(tems need this to enable the arro)144 168 Q 2.5(wk)-.25 G -.15(ey)-2.6 +G(s.).15 E F1(enable\255meta\255k)108 180 Q(ey \(On\))-.1 E F0 .64 +(When set to)144 192 R F1(On)3.14 E F0 3.14(,r)C .64 (eadline will try to enable an)-3.14 F 3.14(ym)-.15 G .64 (eta modi\214er k)-3.14 F .94 -.15(ey t)-.1 H .64 -(he terminal claims to support).15 F(when it is called.)144 432 Q +(he terminal claims to support).15 F(when it is called.)144 204 Q (On man)5 E 2.5(yt)-.15 G(erminals, the meta k)-2.5 E .3 -.15(ey i)-.1 H 2.5(su).15 G(sed to send eight-bit characters.)-2.5 E F1 -(expand\255tilde \(Off\))108 444 Q F0(If set to)144 456 Q F1(On)2.5 E F0 +(expand\255tilde \(Off\))108 216 Q F0(If set to)144 228 Q F1(On)2.5 E F0 2.5(,t)C(ilde e)-2.5 E(xpansion is performed when readline attempts w) --.15 E(ord completion.)-.1 E F1(history\255pr)108 468 Q(eser)-.18 E -.1 -(ve)-.1 G(\255point \(Off\)).1 E F0 1.339(If set to)144 480 R F1(On) -3.839 E F0 3.839(,t)C 1.338(he history code attempts to place point at \ -the same location on each history line)-3.839 F(retrie)144 492 Q -.15 +-.15 E(ord completion.)-.1 E F1(history\255pr)108 240 Q(eser)-.18 E -.1 +(ve)-.1 G(\255point \(Off\)).1 E F0 1.338(If set to)144 252 R F1(On) +3.838 E F0 3.838(,t)C 1.338(he history code attempts to place point at \ +the same location on each history line)-3.838 F(retrie)144 264 Q -.15 (ve)-.25 G 2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G (ious-history).15 E F0(or)2.5 E F1(next-history)2.5 E F0(.)A F1 -(history\255size \(unset\))108 504 Q F0 .948 -(Set the maximum number of history entries sa)144 516 R -.15(ve)-.2 G -3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.)-3.448 F .949 -(If set to zero, an)5.948 F 3.449(ye)-.15 G(xisting)-3.599 E .483 -(history entries are deleted and no ne)144 528 R 2.983(we)-.25 G .483 -(ntries are sa)-2.983 F -.15(ve)-.2 G 2.983(d. If).15 F .482(set to a v) -2.983 F .482(alue less than zero, the num-)-.25 F .277 -(ber of history entries is not limited.)144 540 R .277(By def)5.277 F -.278(ault, the number of history entries is set to the v)-.1 F .278 -(alue of)-.25 F(the)144 552 Q F1(HISTSIZE)3.411 E F0 .911(shell v)3.411 -F 3.411(ariable. If)-.25 F .911(an attempt is made to set)3.411 F F2 -(history\255size)3.41 E F0 .91(to a non-numeric v)3.41 F(alue,)-.25 E -(the maximum number of history entries will be set to 500.)144 564 Q F1 -(horizontal\255scr)108 576 Q(oll\255mode \(Off\))-.18 E F0 .448 -(When set to)144 588 R F1(On)2.948 E F0 2.948(,m)C(ak)-2.948 E .448 -(es readline use a single line for display)-.1 F 2.948(,s)-.65 G .449 +(history\255size \(unset\))108 276 Q F0 .949 +(Set the maximum number of history entries sa)144 288 R -.15(ve)-.2 G +3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.)-3.448 F .948 +(If set to zero, an)5.948 F 3.448(ye)-.15 G(xisting)-3.598 E .482 +(history entries are deleted and no ne)144 300 R 2.982(we)-.25 G .483 +(ntries are sa)-2.982 F -.15(ve)-.2 G 2.983(d. If).15 F .483(set to a v) +2.983 F .483(alue less than zero, the num-)-.25 F .278 +(ber of history entries is not limited.)144 312 R .277(By def)5.278 F +.277(ault, the number of history entries is set to the v)-.1 F .277 +(alue of)-.25 F(the)144 324 Q F1(HISTSIZE)3.41 E F0 .91(shell v)3.41 F +3.41(ariable. If)-.25 F .911(an attempt is made to set)3.41 F/F2 10 +/Times-Italic@0 SF(history\255size)3.411 E F0 .911(to a non-numeric v) +3.411 F(alue,)-.25 E +(the maximum number of history entries will be set to 500.)144 336 Q F1 +(horizontal\255scr)108 348 Q(oll\255mode \(Off\))-.18 E F0 .449 +(When set to)144 360 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E .448 +(es readline use a single line for display)-.1 F 2.948(,s)-.65 G .448 (crolling the input horizontally on a)-2.948 F 1.194(single screen line\ when it becomes longer than the screen width rather than wrapping to a\ - ne)144 600 R(w)-.25 E(line.)144 612 Q F1(input\255meta \(Off\))108 624 -Q F0 1.061(If set to)144 636 R F1(On)3.561 E F0 3.561(,r)C 1.062(eadlin\ + ne)144 372 R(w)-.25 E(line.)144 384 Q F1(input\255meta \(Off\))108 396 +Q F0 1.062(If set to)144 408 R F1(On)3.562 E F0 3.562(,r)C 1.061(eadlin\ e will enable eight-bit input \(that is, it will not strip the eighth b\ -it from the)-3.561 F .336(characters it reads\), re)144 648 R -.05(ga) +it from the)-3.562 F .335(characters it reads\), re)144 420 R -.05(ga) -.15 G .335(rdless of what the terminal claims it can support.).05 F -.335(The name)5.335 F F1(meta\255\215ag)2.835 E F0(is)2.835 E 2.864(as) -144 660 S(ynon)-2.864 E .364(ym for this v)-.15 F 2.864(ariable. The) +.336(The name)5.336 F F1(meta\255\215ag)2.836 E F0(is)2.836 E 2.865(as) +144 432 S(ynon)-2.865 E .365(ym for this v)-.15 F 2.864(ariable. The) -.25 F(def)2.864 E .364(ault is)-.1 F F2(Of)2.864 E(f)-.18 E F0 2.864 -(,b)C .364(ut readline will set it to)-3.064 F F2(On)2.864 E F0 .365 -(if the locale contains)2.865 F(eight-bit characters.)144 672 Q F1 -(isear)108 684 Q(ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\)) +(,b)C .364(ut readline will set it to)-3.064 F F2(On)2.864 E F0 .364 +(if the locale contains)2.864 F(eight-bit characters.)144 444 Q F1 +(isear)108 456 Q(ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\)) -.63 E F0 .439(The string of characters that should terminate an increm\ -ental search without subsequently e)144 696 R -.15(xe)-.15 G(cut-).15 E -.934(ing the character as a command.)144 708 R .935(If this v)5.935 F -.935(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.435(nav).15 G .935 -(alue, the characters)-3.685 F F2(ESC)3.435 E F0(and)144 720 Q F2 -(C\255J)2.5 E F0(will terminate an incremental search.)2.5 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(40)192.055 E 0 Cg EP -%%Page: 41 41 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF -.1(ke)108 84 S(ymap \(emacs\)).1 E F0 2.021 -(Set the current readline k)144 96 R -.15(ey)-.1 G 4.521(map. The).15 F -2.021(set of v)4.521 F 2.021(alid k)-.25 F -.15(ey)-.1 G 2.021 -(map names is).15 F/F2 10/Times-Italic@0 SF 2.02 -(emacs, emacs\255standar)4.52 F(d,)-.37 E .068 -(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 108 R F0 2.568(,a)C +ental search without subsequently e)144 468 R -.15(xe)-.15 G(cut-).15 E +.935(ing the character as a command.)144 480 R .935(If this v)5.935 F +.935(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.434(nav).15 G .934 +(alue, the characters)-3.684 F F2(ESC)3.434 E F0(and)144 492 Q F2 +(C\255J)2.5 E F0(will terminate an incremental search.)2.5 E F1 -.1(ke) +108 504 S(ymap \(emacs\)).1 E F0 2.02(Set the current readline k)144 516 +R -.15(ey)-.1 G 4.521(map. The).15 F 2.021(set of v)4.521 F 2.021 +(alid k)-.25 F -.15(ey)-.1 G 2.021(map names is).15 F F2 2.021 +(emacs, emacs\255standar)4.521 F(d,)-.37 E .069 +(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 528 R F0 2.568(,a)C (nd)-2.568 E F2(vi\255insert)2.568 E F0(.).68 E F2(vi)5.068 E F0 .068 (is equi)2.568 F -.25(va)-.25 G .068(lent to).25 F F2(vi\255command) -2.569 E F0(;)A F2(emacs)2.569 E F0 1.544(is equi)144 120 R -.25(va)-.25 -G 1.544(lent to).25 F F2(emacs\255standar)4.044 E(d)-.37 E F0 6.544(.T)C +2.568 E F0(;)A F2(emacs)2.568 E F0 1.543(is equi)144 540 R -.25(va)-.25 +G 1.543(lent to).25 F F2(emacs\255standar)4.044 E(d)-.37 E F0 6.544(.T)C 1.544(he def)-6.544 F 1.544(ault v)-.1 F 1.544(alue is)-.25 F F2(emacs) 4.044 E F0 4.044(;t).27 G 1.544(he v)-4.044 F 1.544(alue of)-.25 F F1 -(editing\255mode)4.043 E F0(also)4.043 E(af)144 132 Q(fects the def)-.25 -E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -(emacs\255mode\255string \(@\))108 144 Q F0 .051(This string is display\ -ed immediately before the last line of the primary prompt when emacs ed\ -iting)144 156 R .293(mode is acti)144 168 R -.15(ve)-.25 G 5.293(.T).15 -G .293(he v)-5.293 F .293(alue is e)-.25 F .293(xpanded lik)-.15 F 2.793 -(eak)-.1 G .593 -.15(ey b)-2.893 H .293 -(inding, so the standard set of meta- and control).15 F(pre\214x)144 180 -Q .601(es and backslash escape sequences is a)-.15 F -.25(va)-.2 G 3.101 -(ilable. Use).25 F .601(the \\1 and \\2 escapes to be)3.101 F .602 -(gin and end)-.15 F .019(sequences of non-printing characters, which ca\ -n be used to embed a terminal control sequence into)144 192 R -(the mode string.)144 204 Q F1 -.1(ke)108 216 S(yseq\255timeout \(500\)) -.1 E F0 .367(Speci\214es the duration)144 228 R F2 -.37(re)2.867 G -(adline).37 E F0 .367(will w)2.867 F .367 -(ait for a character when reading an ambiguous k)-.1 F .668 -.15(ey s) --.1 H(equence).15 E 1.356(\(one that can form a complete k)144 240 R +(editing\255mode)4.044 E F0(also)4.044 E(af)144 552 Q(fects the def)-.25 +E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -.1(ke)108 564 S +(yseq\255timeout \(500\)).1 E F0 .368(Speci\214es the duration)144 576 R +F2 -.37(re)2.867 G(adline).37 E F0 .367(will w)2.867 F .367 +(ait for a character when reading an ambiguous k)-.1 F .667 -.15(ey s) +-.1 H(equence).15 E 1.356(\(one that can form a complete k)144 588 R 1.656 -.15(ey s)-.1 H 1.356(equence using the input read so f).15 F(ar) --.1 E 3.856(,o)-.4 G 3.856(rc)-3.856 G 1.355(an tak)-3.856 F 3.855(ea) --.1 G(dditional)-3.855 E .32(input to complete a longer k)144 252 R .62 +-.1 E 3.856(,o)-.4 G 3.856(rc)-3.856 G 1.356(an tak)-3.856 F 3.856(ea) +-.1 G(dditional)-3.856 E .32(input to complete a longer k)144 600 R .62 -.15(ey s)-.1 H 2.82(equence\). If).15 F .32(no input is recei)2.82 F -.15(ve)-.25 G 2.82(dw).15 G .32(ithin the timeout,)-2.82 F F2 -.37(re) -2.82 G(adline).37 E F0(will)2.82 E .907(use the shorter b)144 264 R .907 +2.82 G(adline).37 E F0(will)2.82 E .906(use the shorter b)144 612 R .907 (ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407(equence. The).15 F -.25 -(va)3.407 G .907(lue is speci\214ed in milliseconds, so a v).25 F .906 -(alue of)-.25 F .05(1000 means that)144 276 R F2 -.37(re)2.55 G(adline) +(va)3.407 G .907(lue is speci\214ed in milliseconds, so a v).25 F .907 +(alue of)-.25 F .05(1000 means that)144 624 R F2 -.37(re)2.55 G(adline) .37 E F0 .05(will w)2.55 F .05(ait one second for additional input.)-.1 F .05(If this v)5.05 F .05(ariable is set to a v)-.25 F(alue)-.25 E .051 -(less than or equal to zero, or to a non-numeric v)144 288 R(alue,)-.25 +(less than or equal to zero, or to a non-numeric v)144 636 R(alue,)-.25 E F2 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051 -(ait until another k)-.1 F .351 -.15(ey i)-.1 H 2.551(sp).15 G(ressed) --2.551 E(to decide which k)144 300 Q .3 -.15(ey s)-.1 H -(equence to complete.).15 E F1(mark\255dir)108 312 Q(ectories \(On\)) --.18 E F0(If set to)144 324 Q F1(On)2.5 E F0 2.5(,c)C +(ait until another k)-.1 F .352 -.15(ey i)-.1 H 2.552(sp).15 G(ressed) +-2.552 E(to decide which k)144 648 Q .3 -.15(ey s)-.1 H +(equence to complete.).15 E F1(mark\255dir)108 660 Q(ectories \(On\)) +-.18 E F0(If set to)144 672 Q F1(On)2.5 E F0 2.5(,c)C (ompleted directory names ha)-2.5 E .3 -.15(ve a s)-.2 H(lash appended.) -.15 E F1(mark\255modi\214ed\255lines \(Off\))108 336 Q F0(If set to)144 -348 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b) +.15 E F1(mark\255modi\214ed\255lines \(Off\))108 684 Q F0(If set to)144 +696 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b) -.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F1 -(*)A F0(\).)A F1(mark\255symlink)108 360 Q(ed\255dir)-.1 E -(ectories \(Off\))-.18 E F0 .175(If set to)144 372 R F1(On)2.675 E F0 -2.675(,c)C .175 +(*)A F0(\).)A(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(42)188.455 +E 0 Cg EP +%%Page: 43 43 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(mark\255symlink)108 84 Q(ed\255dir)-.1 E(ectories \(Off\))-.18 E F0 +.175(If set to)144 96 R F1(On)2.675 E F0 2.675(,c)C .175 (ompleted names which are symbolic links to directories ha)-2.675 F .475 --.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 384 +-.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 108 Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1 -(match\255hidden\255\214les \(On\))108 396 Q F0 .193(This v)144 408 R -.193(ariable, when set to)-.25 F F1(On)2.693 E F0 2.693(,c)C .192 -(auses readline to match \214les whose names be)-2.693 F .192 -(gin with a `.)-.15 F 2.692('\()-.7 G(hidden)-2.692 E .456 -(\214les\) when performing \214lename completion.)144 420 R .456 +(match\255hidden\255\214les \(On\))108 120 Q F0 .192(This v)144 132 R +.192(ariable, when set to)-.25 F F1(On)2.692 E F0 2.692(,c)C .192 +(auses readline to match \214les whose names be)-2.692 F .193 +(gin with a `.)-.15 F 2.693('\()-.7 G(hidden)-2.693 E .457 +(\214les\) when performing \214lename completion.)144 144 R .456 (If set to)5.456 F F1(Off)2.956 E F0 2.956(,t)C .456(he leading `.) --2.956 F 2.956('m)-.7 G .457(ust be supplied by the)-2.956 F -(user in the \214lename to be completed.)144 432 Q F1 -(menu\255complete\255display\255pr)108 444 Q(e\214x \(Off\))-.18 E F0 -1.586(If set to)144 456 R F1(On)4.086 E F0 4.086(,m)C 1.585(enu complet\ +-2.956 F 2.956('m)-.7 G .456(ust be supplied by the)-2.956 F +(user in the \214lename to be completed.)144 156 Q F1 +(menu\255complete\255display\255pr)108 168 Q(e\214x \(Off\))-.18 E F0 +1.585(If set to)144 180 R F1(On)4.085 E F0 4.085(,m)C 1.585(enu complet\ ion displays the common pre\214x of the list of possible completions) --4.086 F(\(which may be empty\) before c)144 468 Q -(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 480 Q F0 -.506(If set to)144 492 R F1(On)3.006 E F0 3.006(,r)C .507(eadline will \ +-4.085 F(\(which may be empty\) before c)144 192 Q +(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 204 Q F0 +.507(If set to)144 216 R F1(On)3.007 E F0 3.007(,r)C .507(eadline will \ display characters with the eighth bit set directly rather than as a me\ -ta-)-3.006 F(pre\214x)144 504 Q .885(ed escape sequence.)-.15 F .884 -(The def)5.884 F .884(ault is)-.1 F F2(Of)3.384 E(f)-.18 E F0 3.384(,b)C -.884(ut readline will set it to)-3.584 F F2(On)3.384 E F0 .884 -(if the locale contains)3.384 F(eight-bit characters.)144 516 Q F1 -(page\255completions \(On\))108 528 Q F0 .808(If set to)144 540 R F1(On) -3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F2(mor) -3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808 +ta-)-3.007 F(pre\214x)144 228 Q .884(ed escape sequence.)-.15 F .884 +(The def)5.884 F .884(ault is)-.1 F/F2 10/Times-Italic@0 SF(Of)3.384 E +(f)-.18 E F0 3.384(,b)C .884(ut readline will set it to)-3.584 F F2(On) +3.384 E F0 .885(if the locale contains)3.384 F(eight-bit characters.)144 +240 Q F1(page\255completions \(On\))108 252 Q F0 .809(If set to)144 264 +R F1(On)3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F2 +(mor)3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808 (ager to display a screenful of possible comple-)-3.308 F -(tions at a time.)144 552 Q F1 -(print\255completions\255horizontally \(Off\))108 564 Q F0 1.319 -(If set to)144 576 R F1(On)3.819 E F0 3.819(,r)C 1.318(eadline will dis\ -play completions with matches sorted horizontally in alphabetical)-3.819 -F(order)144 588 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25 -E F1 -2.29 -.18(re v)108 600 T(ert\255all\255at\255newline \(Off\)).08 E -F0 .698(If set to)144 612 R F1(On)3.198 E F0 3.198(,r)C .699 +(tions at a time.)144 276 Q F1 +(print\255completions\255horizontally \(Off\))108 288 Q F0 1.318 +(If set to)144 300 R F1(On)3.818 E F0 3.818(,r)C 1.319(eadline will dis\ +play completions with matches sorted horizontally in alphabetical)-3.818 +F(order)144 312 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25 +E F1 -2.29 -.18(re v)108 324 T(ert\255all\255at\255newline \(Off\)).08 E +F0 .699(If set to)144 336 R F1(On)3.199 E F0 3.199(,r)C .699 (eadline will undo all changes to history lines before returning when) --3.198 F F1(accept\255line)3.199 E F0(is)3.199 E -.15(exe)144 624 S +-3.199 F F1(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 348 S 2.686(cuted. By).15 F(def)2.686 E .186 (ault, history lines may be modi\214ed and retain indi)-.1 F .186 -(vidual undo lists across calls to)-.25 F F1 -.18(re)144 636 S(adline) -.18 E F0(.)A F1(sho)108 648 Q(w\255all\255if\255ambiguous \(Off\))-.1 E -F0 .303(This alters the def)144 660 R .303(ault beha)-.1 F .304 +(vidual undo lists across calls to)-.25 F F1 -.18(re)144 360 S(adline) +.18 E F0(.)A F1(sho)108 372 Q(w\255all\255if\255ambiguous \(Off\))-.1 E +F0 .304(This alters the def)144 384 R .304(ault beha)-.1 F .304 (vior of the completion functions.)-.2 F .304(If set to)5.304 F F1(On) -2.804 E F0 2.804(,w)C .304(ords which ha)-2.904 F .604 -.15(ve m)-.2 H +2.804 E F0 2.803(,w)C .303(ords which ha)-2.903 F .603 -.15(ve m)-.2 H (ore).15 E 1.264(than one possible completion cause the matches to be l\ -isted immediately instead of ringing the)144 672 R(bell.)144 684 Q F1 -(sho)108 696 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.345 -(This alters the def)144 708 R 5.345(ault beha)-.1 F 5.345 -(vior of the completion functions in a f)-.2 F 5.346(ashion similar to) --.1 F F1(sho)144 720 Q(w\255all\255if\255ambiguous)-.1 E F0 6.691(.I)C -4.191(fs)-6.691 G 1.691(et to)-4.191 F F1(On)4.191 E F0 4.191(,w)C 1.691 +isted immediately instead of ringing the)144 396 R(bell.)144 408 Q F1 +(sho)108 420 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346 +(This alters the def)144 432 R 5.346(ault beha)-.1 F 5.345 +(vior of the completion functions in a f)-.2 F 5.345(ashion similar to) +-.1 F F1(sho)144 444 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C +4.19(fs)-6.69 G 1.691(et to)-4.19 F F1(On)4.191 E F0 4.191(,w)C 1.691 (ords which ha)-4.291 F 1.991 -.15(ve m)-.2 H 1.691 -(ore than one possible completion).15 F(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(41)192.055 E 0 Cg EP -%%Page: 42 42 +(ore than one possible completion).15 F 1.04(without an)144 456 R 3.54 +(yp)-.15 G 1.039 +(ossible partial completion \(the possible completions don')-3.54 F +3.539(ts)-.18 G 1.039(hare a common pre\214x\))-3.539 F(cause the match\ +es to be listed immediately instead of ringing the bell.)144 468 Q F1 +(sho)108 480 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.021 +(If set to)144 492 R F1(On)3.521 E F0 3.521(,a)C 1.022 +(dd a string to the be)-3.521 F 1.022 +(ginning of the prompt indicating the editing mode: emacs, vi)-.15 F +(command, or vi insertion.)144 504 Q(The mode strings are user)5 E +(-settable \(e.g.,)-.2 E F2(emacs\255mode\255string)2.5 E F0(\).)A F1 +(skip\255completed\255text \(Off\))108 516 Q F0 .095(If set to)144 528 R +F1(On)2.595 E F0 2.595(,t)C .095(his alters the def)-2.595 F .095 +(ault completion beha)-.1 F .094 +(vior when inserting a single match into the line.)-.2 F(It')144 540 Q +2.545(so)-.55 G .045(nly acti)-2.545 F .345 -.15(ve w)-.25 H .046 +(hen performing completion in the middle of a w).15 F 2.546(ord. If)-.1 +F .046(enabled, readline does not)2.546 F 1.394(insert characters from \ +the completion that match characters after point in the w)144 552 R +1.394(ord being com-)-.1 F(pleted, so portions of the w)144 564 Q +(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1 +(vi\255cmd\255mode\255string \(\(cmd\)\))108 576 Q F0 .517(If the)144 +588 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G +.518(riable is enabled, this string is displayed immediately before the) +.25 F .475(last line of the primary prompt when vi editing mode is acti) +144 600 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475 +(The v)5.475 F(alue)-.25 E 1.235(is e)144 612 R 1.235(xpanded lik)-.15 F +3.735(eak)-.1 G 1.535 -.15(ey b)-3.835 H 1.236 +(inding, so the standard set of meta- and control pre\214x).15 F 1.236 +(es and backslash)-.15 F .315(escape sequences is a)144 624 R -.25(va) +-.2 G 2.815(ilable. Use).25 F .314(the \\1 and \\2 escapes to be)2.815 F +.314(gin and end sequences of non-print-)-.15 F(ing characters, which c\ +an be used to embed a terminal control sequence into the mode string.) +144 636 Q F1(vi\255ins\255mode\255string \(\(ins\)\))108 648 Q F0 .517 +(If the)144 660 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 +-.25(va)3.017 G .518 +(riable is enabled, this string is displayed immediately before the).25 +F .186(last line of the primary prompt when vi editing mode is acti)144 +672 R .486 -.15(ve a)-.25 H .186(nd in insertion mode.).15 F .186(The v) +5.186 F .186(alue is)-.25 F -.15(ex)144 684 S 1.929(panded lik).15 F +4.429(eak)-.1 G 2.229 -.15(ey b)-4.529 H 1.929 +(inding, so the standard set of meta- and control pre\214x).15 F 1.93 +(es and backslash)-.15 F .315(escape sequences is a)144 696 R -.25(va) +-.2 G 2.815(ilable. Use).25 F .314(the \\1 and \\2 escapes to be)2.815 F +.314(gin and end sequences of non-print-)-.15 F(ing characters, which c\ +an be used to embed a terminal control sequence into the mode string.) +144 708 Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(43)188.455 E 0 +Cg EP +%%Page: 44 44 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.039(without an) -144 84 R 3.539(yp)-.15 G 1.039 -(ossible partial completion \(the possible completions don')-3.539 F -3.539(ts)-.18 G 1.04(hare a common pre\214x\))-3.539 F(cause the matche\ -s to be listed immediately instead of ringing the bell.)144 96 Q/F1 10 -/Times-Bold@0 SF(sho)108 108 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\)) --.18 E F0 1.019(If set to)144 120 R F1(On)3.519 E F0 3.519(,a)C 1.018 -(dd a character to the be)-3.519 F 1.018 -(ginning of the prompt indicating the editing mode: emacs)-.15 F -(\(@\), vi command \(:\) or vi insertion \(+\).)144 132 Q F1 -(skip\255completed\255text \(Off\))108 144 Q F0 .094(If set to)144 156 R -F1(On)2.594 E F0 2.594(,t)C .095(his alters the def)-2.594 F .095 -(ault completion beha)-.1 F .095 -(vior when inserting a single match into the line.)-.2 F(It')144 168 Q -2.546(so)-.55 G .046(nly acti)-2.546 F .346 -.15(ve w)-.25 H .046 -(hen performing completion in the middle of a w).15 F 2.545(ord. If)-.1 -F .045(enabled, readline does not)2.545 F 1.394(insert characters from \ -the completion that match characters after point in the w)144 180 R -1.395(ord being com-)-.1 F(pleted, so portions of the w)144 192 Q -(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1 -(vi\255cmd\255mode\255string \(\(cmd\)\))108 204 Q F0 1.198(This string\ - is displayed immediately before the last line of the primary prompt wh\ -en vi editing)144 216 R .521(mode is acti)144 228 R .821 -.15(ve a)-.25 -H .522(nd in command mode.).15 F .522(The v)5.522 F .522(alue is e)-.25 -F .522(xpanded lik)-.15 F 3.022(eak)-.1 G .822 -.15(ey b)-3.122 H .522 -(inding, so the standard).15 F .87(set of meta- and control pre\214x)144 -240 R .869(es and backslash escape sequences is a)-.15 F -.25(va)-.2 G -3.369(ilable. Use).25 F .869(the \\1 and \\2)3.369 F .386(escapes to be) -144 252 R .386(gin and end sequences of non-printing characters, which \ -can be used to embed a ter)-.15 F(-)-.2 E -(minal control sequence into the mode string.)144 264 Q F1 -(vi\255ins\255mode\255string \(\(ins\)\))108 276 Q F0 1.198(This string\ - is displayed immediately before the last line of the primary prompt wh\ -en vi editing)144 288 R .782(mode is acti)144 300 R 1.083 -.15(ve a)-.25 -H .783(nd in insertion mode.).15 F .783(The v)5.783 F .783(alue is e) --.25 F .783(xpanded lik)-.15 F 3.283(eak)-.1 G 1.083 -.15(ey b)-3.383 H -.783(inding, so the standard).15 F .87 -(set of meta- and control pre\214x)144 312 R .869 -(es and backslash escape sequences is a)-.15 F -.25(va)-.2 G 3.369 -(ilable. Use).25 F .869(the \\1 and \\2)3.369 F .386(escapes to be)144 -324 R .386(gin and end sequences of non-printing characters, which can \ -be used to embed a ter)-.15 F(-)-.2 E -(minal control sequence into the mode string.)144 336 Q F1 -(visible\255stats \(Off\))108 348 Q F0 .847(If set to)144 360 R F1(On) +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(visible\255stats \(Off\))108 84 Q F0 .846(If set to)144 96 R F1(On) 3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le')-3.346 F 3.346 (st)-.55 G .846(ype as reported by)-3.346 F/F2 10/Times-Italic@0 SF (stat)3.346 E F0 .846(\(2\) is appended to the \214lename)B -(when listing possible completions.)144 372 Q F1 -(Readline Conditional Constructs)87 388.8 Q F0 .05 -(Readline implements a f)108 400.8 R .05(acility similar in spirit to t\ -he conditional compilation features of the C preprocessor)-.1 F .097 -(which allo)108 412.8 R .097(ws k)-.25 F .396 -.15(ey b)-.1 H .096 +(when listing possible completions.)144 108 Q F1 +(Readline Conditional Constructs)87 124.8 Q F0 .05 +(Readline implements a f)108 136.8 R .05(acility similar in spirit to t\ +he conditional compilation features of the C preprocessor)-.1 F .096 +(which allo)108 148.8 R .096(ws k)-.25 F .396 -.15(ey b)-.1 H .096 (indings and v).15 F .096 -(ariable settings to be performed as the result of tests.)-.25 F .096 -(There are four parser)5.096 F(directi)108 424.8 Q -.15(ve)-.25 G 2.5 -(su).15 G(sed.)-2.5 E F1($if)108 441.6 Q F0(The)144 441.6 Q F1($if)2.962 -E F0 .462(construct allo)2.962 F .463(ws bindings to be made based on t\ -he editing mode, the terminal being used,)-.25 F .478 -(or the application using readline.)144 453.6 R .477(The te)5.477 F .477 -(xt of the test e)-.15 F .477 -(xtends to the end of the line; no characters)-.15 F -(are required to isolate it.)144 465.6 Q F1(mode)144 482.4 Q F0(The)180 -482.4 Q F1(mode=)3.711 E F0 1.211(form of the)3.711 F F1($if)3.711 E F0 -(directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711(su).15 G 1.211 -(sed to test whether readline is in emacs or vi)-3.711 F 3.065 -(mode. This)180 494.4 R .565(may be used in conjunction with the)3.065 F -F1 .565(set k)3.065 F(eymap)-.1 E F0 .565(command, for instance, to) -3.065 F .735(set bindings in the)180 506.4 R F2(emacs\255standar)3.235 E -(d)-.37 E F0(and)3.235 E F2(emacs\255ctlx)3.235 E F0 -.1(ke)3.235 G .735 -(ymaps only if readline is starting)-.05 F(out in emacs mode.)180 518.4 -Q F1(term)144 535.2 Q F0(The)180 535.2 Q F1(term=)3.197 E F0 .696 +(ariable settings to be performed as the result of tests.)-.25 F .097 +(There are four parser)5.096 F(directi)108 160.8 Q -.15(ve)-.25 G 2.5 +(su).15 G(sed.)-2.5 E F1($if)108 177.6 Q F0(The)144 177.6 Q F1($if)2.963 +E F0 .463(construct allo)2.963 F .462(ws bindings to be made based on t\ +he editing mode, the terminal being used,)-.25 F +(or the application using readline.)144 189.6 Q(The te)5 E +(xt of the test, after an)-.15 E 2.5(yc)-.15 G(omparison operator)-2.5 E +(,)-.4 E -.15(ex)146.5 201.6 S(tends to the end of the line; unless oth\ +erwise noted, no characters are required to isolate it.).15 E F1(mode) +144 218.4 Q F0(The)180 218.4 Q F1(mode=)3.711 E F0 1.211(form of the) +3.711 F F1($if)3.711 E F0(directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711 +(su).15 G 1.211(sed to test whether readline is in emacs or vi)-3.711 F +3.065(mode. This)180 230.4 R .565(may be used in conjunction with the) +3.065 F F1 .565(set k)3.065 F(eymap)-.1 E F0 .565 +(command, for instance, to)3.065 F .735(set bindings in the)180 242.4 R +F2(emacs\255standar)3.235 E(d)-.37 E F0(and)3.235 E F2(emacs\255ctlx) +3.235 E F0 -.1(ke)3.235 G .735(ymaps only if readline is starting)-.05 F +(out in emacs mode.)180 254.4 Q F1(term)144 271.2 Q F0(The)180 271.2 Q +F1(term=)3.197 E F0 .696 (form may be used to include terminal-speci\214c k)3.197 F .996 -.15 -(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 547.2 R +(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 283.2 R .954 -.15(ey s)-.1 H .654(equences output by the terminal').15 F 3.154 (sf)-.55 G .654(unction k)-3.154 F -.15(ey)-.1 G 3.154(s. The).15 F -.1 -(wo)3.154 G .654(rd on the right side of).1 F(the)180 559.2 Q F1(=)3.232 +(wo)3.154 G .654(rd on the right side of).1 F(the)180 295.2 Q F1(=)3.232 E F0 .732(is tested ag)3.232 F .732(ainst both the full name of the ter\ minal and the portion of the terminal)-.05 F(name before the \214rst)180 -571.2 Q F12.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0 +307.2 Q F12.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0 (to match both)2.74 E F2(sun)2.84 E F0(and)2.74 E F2(sun\255cmd)2.5 E F0 -2.5(,f).77 G(or instance.)-2.5 E F1(application)144 588 Q F0(The)180 600 -Q F1(application)3.003 E F0 .503 +2.5(,f).77 G(or instance.)-2.5 E F1 -.1(ve)144 324 S(rsion).1 E F0(The) +180 336 Q F1 -.1(ve)3.108 G(rsion).1 E F0 .608 +(test may be used to perform comparisons ag)3.108 F .609 +(ainst speci\214c readline v)-.05 F(ersions.)-.15 E(The)180 348 Q F1 -.1 +(ve)3.929 G(rsion).1 E F0 -.15(ex)3.929 G 1.428 +(pands to the current readline v).15 F 3.928(ersion. The)-.15 F 1.428 +(set of comparison operators)3.928 F(includes)180 360 Q F1(=)2.605 E F0 +2.605(,\()C(and)-2.605 E F1(==)2.606 E F0(\),)A F1(!=)2.606 E F0(,)A F1 +(<=)2.606 E F0(,)A F1(>=)2.606 E F0(,)A F1(<)2.606 E F0 2.606(,a)C(nd) +-2.606 E F1(>)2.606 E F0 5.106(.T)C .106(he v)-5.106 F .106 +(ersion number supplied on the right side)-.15 F 1.472 +(of the operator consists of a major v)180 372 R 1.471(ersion number) +-.15 F 3.971(,a)-.4 G 3.971(no)-3.971 G 1.471 +(ptional decimal point, and an)-3.971 F .766(optional minor v)180 384 R +.766(ersion \(e.g.,)-.15 F F1(7.1)3.266 E F0 .766(\). If the minor v)B +.766(ersion is omitted, it is assumed to be)-.15 F F1(0)3.267 E F0(.)A +1.756(The operator may be separated from the string)180 396 R F1 -.1(ve) +4.255 G(rsion).1 E F0 1.755(and from the v)4.255 F 1.755(ersion number) +-.15 F(ar)180 408 Q(gument by whitespace.)-.18 E F1(application)144 +424.8 Q F0(The)180 436.8 Q F1(application)3.003 E F0 .503 (construct is used to include application-speci\214c settings.)3.003 F .503(Each program)5.503 F .114(using the readline library sets the)180 -612 R F2 .114(application name)2.614 F F0 2.614(,a)C .114 +448.8 R F2 .114(application name)2.614 F F0 2.614(,a)C .114 (nd an initialization \214le can test for a)-2.614 F .5(particular v)180 -624 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15 +460.8 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15 (ey s)-.1 H .501(equences to functions useful for a spe-).15 F .397 -(ci\214c program.)180 636 R -.15(Fo)5.397 G 2.896(ri).15 G .396 +(ci\214c program.)180 472.8 R -.15(Fo)5.397 G 2.896(ri).15 G .396 (nstance, the follo)-2.896 F .396(wing command adds a k)-.25 F .696 -.15 -(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 648 Q -(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 672 Q F0 -(Bash)2.5 E 2.5(#Q)180 684 S(uote the current or pre)-2.5 E(vious w)-.25 -E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 696 Q F1($endif)180 708 Q -F0(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(42)192.055 E 0 Cg EP -%%Page: 43 43 +(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 484.8 +Q(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 508.8 Q F0 +(Bash)2.5 E 2.5(#Q)180 520.8 S(uote the current or pre)-2.5 E(vious w) +-.25 E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 532.8 Q F1($endif)180 +544.8 Q F2(variable)144 561.6 Q F0(The)180 573.6 Q F2(variable)3.776 E +F0 1.276(construct pro)3.776 F 1.276 +(vides simple equality tests for readline v)-.15 F 1.277(ariables and v) +-.25 F(alues.)-.25 E .08(The permitted comparison operators are)180 +585.6 R F2(=)2.579 E F0(,)A F2(==)2.579 E F0 2.579(,a)C(nd)-2.579 E F2 +(!=)2.579 E F0 5.079(.T)C .079(he v)-5.079 F .079 +(ariable name must be sepa-)-.25 F .98(rated from the comparison operat\ +or by whitespace; the operator may be separated from)180 597.6 R .13 +(the v)180 609.6 R .13(alue on the right hand side by whitespace.)-.25 F +.129(Both string and boolean v)5.129 F .129(ariables may be)-.25 F +(tested. Boolean v)180 621.6 Q(ariables must be tested ag)-.25 E +(ainst the v)-.05 E(alues)-.25 E F2(on)2.5 E F0(and)2.5 E F2(of)2.5 E(f) +-.18 E F0(.)A F1($endif)108 638.4 Q F0(This command, as seen in the pre) +144 638.4 Q(vious e)-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0 +(command.)2.5 E F1($else)108 655.2 Q F0(Commands in this branch of the) +144 655.2 Q F1($if)2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E +-.15(xe)-.15 G(cuted if the test f).15 E(ails.)-.1 E F1($include)108 672 +Q F0 .356(This directi)144 684 R .656 -.15(ve t)-.25 H(ak).15 E .356 +(es a single \214lename as an ar)-.1 F .357 +(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F) +144 696 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 +-.15(ve w)-.25 H(ould read).05 E F2(/etc/inputr)2.5 E(c)-.37 E F0(:)A F1 +($include)144 720 Q F2(/etc/inputr)5.833 E(c)-.37 E F0(GNU Bash 5.0)72 +768 Q(2018 December 7)139.295 E(44)188.455 E 0 Cg EP +%%Page: 45 45 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF($endif)108 84 Q F0(This command, as seen in the pre)144 84 Q(vious e) --.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0(command.)2.5 E F1 -($else)108 100.8 Q F0(Commands in this branch of the)144 100.8 Q F1($if) -2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G -(cuted if the test f).15 E(ails.)-.1 E F1($include)108 117.6 Q F0 .356 -(This directi)144 129.6 R .656 -.15(ve t)-.25 H(ak).15 E .356 -(es a single \214lename as an ar)-.1 F .357 -(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F) -144 141.6 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 --.15(ve w)-.25 H(ould read).05 E/F2 10/Times-Italic@0 SF(/etc/inputr)2.5 -E(c)-.37 E F0(:)A F1($include)144 165.6 Q F2(/etc/inputr)5.833 E(c)-.37 -E F1(Sear)87 182.4 Q(ching)-.18 E F0 .835(Readline pro)108 194.4 R .835 +SF(Sear)87 84 Q(ching)-.18 E F0 .835(Readline pro)108 96 R .835 (vides commands for searching through the command history \(see)-.15 F -/F3 9/Times-Bold@0 SF(HIST)3.334 E(OR)-.162 E(Y)-.315 E F0(belo)3.084 E -.834(w\) for lines)-.25 F(containing a speci\214ed string.)108 206.4 Q -(There are tw)5 E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.51 E -(emental)-.37 E F0(and)3.01 E F2(non-incr)2.5 E(emental)-.37 E F0(.).51 -E .697(Incremental searches be)108 223.2 R .697 +/F2 9/Times-Bold@0 SF(HIST)3.334 E(OR)-.162 E(Y)-.315 E F0(belo)3.084 E +.834(w\) for lines)-.25 F(containing a speci\214ed string.)108 108 Q +(There are tw)5 E 2.5(os)-.1 G(earch modes:)-2.5 E/F3 10/Times-Italic@0 +SF(incr)2.51 E(emental)-.37 E F0(and)3.01 E F3(non-incr)2.5 E(emental) +-.37 E F0(.).51 E .697(Incremental searches be)108 124.8 R .697 (gin before the user has \214nished typing the search string.)-.15 F .698(As each character of the)5.698 F .113 -(search string is typed, readline displays the ne)108 235.2 R .112 +(search string is typed, readline displays the ne)108 136.8 R .112 (xt entry from the history matching the string typed so f)-.15 F(ar)-.1 E 5.112(.A)-.55 G(n)-5.112 E .542 -(incremental search requires only as man)108 247.2 R 3.042(yc)-.15 G +(incremental search requires only as man)108 148.8 R 3.042(yc)-.15 G .542(haracters as needed to \214nd the desired history entry)-3.042 F 5.542(.T)-.65 G .542(he char)-5.542 F(-)-.2 E .224 -(acters present in the v)108 259.2 R .224(alue of the)-.25 F F1(isear) +(acters present in the v)108 160.8 R .224(alue of the)-.25 F F1(isear) 2.724 E(ch-terminators)-.18 E F0 -.25(va)2.724 G .224 (riable are used to terminate an incremental search.).25 F .66 -(If that v)108 271.2 R .66(ariable has not been assigned a v)-.25 F .66 +(If that v)108 172.8 R .66(ariable has not been assigned a v)-.25 F .66 (alue the Escape and Control-J characters will terminate an incre-)-.25 -F .097(mental search.)108 283.2 R .096(Control-G will abort an incremen\ +F .097(mental search.)108 184.8 R .096(Control-G will abort an incremen\ tal search and restore the original line.)5.097 F .096 (When the search is)5.096 F(terminated, the history entry containing th\ -e search string becomes the current line.)108 295.2 Q 2.938 -.8(To \214) -108 312 T 1.339(nd other matching entries in the history list, type Con\ -trol-S or Control-R as appropriate.).8 F 1.339(This will)6.339 F .675 -(search backw)108 324 R .675(ard or forw)-.1 F .675 +e search string becomes the current line.)108 196.8 Q 2.938 -.8(To \214) +108 213.6 T 1.339(nd other matching entries in the history list, type C\ +ontrol-S or Control-R as appropriate.).8 F 1.339(This will)6.339 F .675 +(search backw)108 225.6 R .675(ard or forw)-.1 F .675 (ard in the history for the ne)-.1 F .674 (xt entry matching the search string typed so f)-.15 F(ar)-.1 E 5.674 -(.A)-.55 G -.15(ny)-5.674 G .174(other k)108 336 R .474 -.15(ey s)-.1 H -.174 +(.A)-.55 G -.15(ny)-5.674 G .174(other k)108 237.6 R .474 -.15(ey s)-.1 +H .174 (equence bound to a readline command will terminate the search and e).15 F -.15(xe)-.15 G .175(cute that command.).15 F -.15(Fo)5.175 G(r).15 E -.541(instance, a)108 348 R F2(ne)3.041 E(wline)-.15 E F0 .541 +.541(instance, a)108 249.6 R F3(ne)3.041 E(wline)-.15 E F0 .541 (will terminate the search and accept the line, thereby e)3.041 F -.15 -(xe)-.15 G .54(cuting the command from the).15 F(history list.)108 360 Q -.653(Readline remembers the last incremental search string.)108 376.8 R -.653(If tw)5.653 F 3.153(oC)-.1 G .653(ontrol-Rs are typed without an) +(xe)-.15 G .54(cuting the command from the).15 F(history list.)108 261.6 +Q .653(Readline remembers the last incremental search string.)108 278.4 +R .653(If tw)5.653 F 3.153(oC)-.1 G .653(ontrol-Rs are typed without an) -3.153 F 3.153(yi)-.15 G(nterv)-3.153 E(en-)-.15 E -(ing characters de\214ning a ne)108 388.8 Q 2.5(ws)-.25 G +(ing characters de\214ning a ne)108 290.4 Q 2.5(ws)-.25 G (earch string, an)-2.5 E 2.5(yr)-.15 G(emembered search string is used.) -2.5 E .567(Non-incremental searches read the entire search string befo\ -re starting to search for matching history lines.)108 405.6 R(The searc\ +re starting to search for matching history lines.)108 307.2 R(The searc\ h string may be typed by the user or be part of the contents of the cur\ -rent line.)108 417.6 Q F1(Readline Command Names)87 434.4 Q F0 1.391 -(The follo)108 446.4 R 1.391 +rent line.)108 319.2 Q F1(Readline Command Names)87 336 Q F0 1.391 +(The follo)108 348 R 1.391 (wing is a list of the names of the commands and the def)-.25 F 1.391 (ault k)-.1 F 1.691 -.15(ey s)-.1 H 1.391(equences to which the).15 F -3.892(ya)-.15 G(re)-3.892 E 2.622(bound. Command)108 458.4 R .122 +3.892(ya)-.15 G(re)-3.892 E 2.622(bound. Command)108 360 R .122 (names without an accompan)2.622 F .122(ying k)-.15 F .421 -.15(ey s)-.1 H .121(equence are unbound by def).15 F 2.621(ault. In)-.1 F .121 -(the follo)2.621 F(wing)-.25 E(descriptions,)108 470.4 Q F2(point)3.41 E -F0 .91(refers to the current cursor position, and)3.41 F F2(mark)3.411 E +(the follo)2.621 F(wing)-.25 E(descriptions,)108 372 Q F3(point)3.41 E +F0 .91(refers to the current cursor position, and)3.41 F F3(mark)3.411 E F0 .911(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.411(db) -.15 G 3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 482.4 Q F0 2.5 +.15 G 3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 384 Q F0 2.5 (command. The)2.5 F(te)2.5 E -(xt between the point and mark is referred to as the)-.15 E F2 -.37(re) -2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 499.2 Q(or Mo)-.25 E(ving)-.1 -E(beginning\255of\255line \(C\255a\))108 511.2 Q F0(Mo)144 523.2 Q .3 +(xt between the point and mark is referred to as the)-.15 E F3 -.37(re) +2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 400.8 Q(or Mo)-.25 E(ving)-.1 +E(beginning\255of\255line \(C\255a\))108 412.8 Q F0(Mo)144 424.8 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F1 -(end\255of\255line \(C\255e\))108 535.2 Q F0(Mo)144 547.2 Q .3 -.15 +(end\255of\255line \(C\255e\))108 436.8 Q F0(Mo)144 448.8 Q .3 -.15 (ve t)-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 -559.2 S(rward\255char \(C\255f\)).25 E F0(Mo)144 571.2 Q .3 -.15(ve f) +460.8 S(rward\255char \(C\255f\)).25 E F0(Mo)144 472.8 Q .3 -.15(ve f) -.15 H(orw).15 E(ard a character)-.1 E(.)-.55 E F1 -(backward\255char \(C\255b\))108 583.2 Q F0(Mo)144 595.2 Q .3 -.15(ve b) --.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 607.2 S(rward\255w) -.25 E(ord \(M\255f\))-.1 E F0(Mo)144 619.2 Q .823 -.15(ve f)-.15 H(orw) +(backward\255char \(C\255b\))108 484.8 Q F0(Mo)144 496.8 Q .3 -.15(ve b) +-.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 508.8 S(rward\255w) +.25 E(ord \(M\255f\))-.1 E F0(Mo)144 520.8 Q .823 -.15(ve f)-.15 H(orw) .15 E .523(ard to the end of the ne)-.1 F .523(xt w)-.15 F 3.023(ord. W) -.1 F .522(ords are composed of alphanumeric characters \(let-)-.8 F -(ters and digits\).)144 631.2 Q F1(backward\255w)108 643.2 Q -(ord \(M\255b\))-.1 E F0(Mo)144 655.2 Q 1.71 -.15(ve b)-.15 H 1.41 +(ters and digits\).)144 532.8 Q F1(backward\255w)108 544.8 Q +(ord \(M\255b\))-.1 E F0(Mo)144 556.8 Q 1.71 -.15(ve b)-.15 H 1.41 (ack to the start of the current or pre).15 F 1.41(vious w)-.25 F 3.91 (ord. W)-.1 F 1.41(ords are composed of alphanumeric)-.8 F -(characters \(letters and digits\).)144 667.2 Q F1(shell\255f)108 679.2 -Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 691.2 Q .784 -.15(ve f)-.15 H +(characters \(letters and digits\).)144 568.8 Q F1(shell\255f)108 580.8 +Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 592.8 Q .784 -.15(ve f)-.15 H (orw).15 E .484(ard to the end of the ne)-.1 F .484(xt w)-.15 F 2.984 (ord. W)-.1 F .484(ords are delimited by non-quoted shell metacharac-) --.8 F(ters.)144 703.2 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E -(43)192.055 E 0 Cg EP -%%Page: 44 44 +-.8 F(ters.)144 604.8 Q F1(shell\255backward\255w)108 616.8 Q(ord)-.1 E +F0(Mo)144 628.8 Q .908 -.15(ve b)-.15 H .609 +(ack to the start of the current or pre).15 F .609(vious w)-.25 F 3.109 +(ord. W)-.1 F .609(ords are delimited by non-quoted shell)-.8 F +(metacharacters.)144 640.8 Q F1(pr)108 652.8 Q -.15(ev)-.18 G +(ious\255scr).15 E(een\255line)-.18 E F0 .891(Attempt to mo)144 664.8 R +1.191 -.15(ve p)-.15 H .891(oint to the same ph).15 F .891 +(ysical screen column on the pre)-.05 F .89(vious ph)-.25 F .89 +(ysical screen line.)-.05 F .87(This will not ha)144 676.8 R 1.17 -.15 +(ve t)-.2 H .87(he desired ef).15 F .87 +(fect if the current Readline line does not tak)-.25 F 3.37(eu)-.1 G +3.37(pm)-3.37 G .87(ore than one)-3.37 F(ph)144 688.8 Q(ysical line or \ +if point is not greater than the length of the prompt plus the screen w\ +idth.)-.05 E F1(next\255scr)108 700.8 Q(een\255line)-.18 E F0 .638 +(Attempt to mo)144 712.8 R .938 -.15(ve p)-.15 H .638 +(oint to the same ph).15 F .637(ysical screen column on the ne)-.05 F +.637(xt ph)-.15 F .637(ysical screen line. This)-.05 F .008(will not ha) +144 724.8 R .309 -.15(ve t)-.2 H .009(he desired ef).15 F .009 +(fect if the current Readline line does not tak)-.25 F 2.509(eu)-.1 G +2.509(pm)-2.509 G .009(ore than one ph)-2.509 F(ysical)-.05 E +(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(45)188.455 E 0 Cg EP +%%Page: 46 46 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(shell\255backward\255w)108 84 Q(ord)-.1 E F0(Mo)144 96 Q .908 -.15 -(ve b)-.15 H .609(ack to the start of the current or pre).15 F .609 -(vious w)-.25 F 3.109(ord. W)-.1 F .609 -(ords are delimited by non-quoted shell)-.8 F(metacharacters.)144 108 Q -F1(clear\255scr)108 120 Q(een \(C\255l\))-.18 E F0 .993 -(Clear the screen lea)144 132 R .993 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .772(line or if t\ +he length of the current Readline line is not greater than the length o\ +f the prompt plus)144 84 R(the screen width.)144 96 Q/F1 10/Times-Bold@0 +SF(clear\255scr)108 108 Q(een \(C\255l\))-.18 E F0 .993 +(Clear the screen lea)144 120 R .993 (ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993 G .993(th an ar).4 F .993(gument, refresh the)-.18 F -(current line without clearing the screen.)144 144 Q F1 -.18(re)108 156 +(current line without clearing the screen.)144 132 Q F1 -.18(re)108 144 S(draw\255curr).18 E(ent\255line)-.18 E F0(Refresh the current line.)144 -168 Q F1(Commands f)87 184.8 Q(or Manipulating the History)-.25 E -(accept\255line \(Newline, Retur)108 196.8 Q(n\))-.15 E F0 .158 -(Accept the line re)144 208.8 R -.05(ga)-.15 G .158 +156 Q F1(Commands f)87 172.8 Q(or Manipulating the History)-.25 E +(accept\255line \(Newline, Retur)108 184.8 Q(n\))-.15 E F0 .159 +(Accept the line re)144 196.8 R -.05(ga)-.15 G .159 (rdless of where the cursor is.).05 F .158(If this line is non-empty) -5.158 F 2.659(,a)-.65 G .159(dd it to the history list)-2.659 F .699 -(according to the state of the)144 220.8 R/F2 9/Times-Bold@0 SF +5.158 F 2.658(,a)-.65 G .158(dd it to the history list)-2.658 F .699 +(according to the state of the)144 208.8 R/F2 9/Times-Bold@0 SF (HISTCONTR)3.199 E(OL)-.27 E F0 -.25(va)2.949 G 3.199(riable. If).25 F .699(the line is a modi\214ed history line, then)3.199 F -(restore the history line to its original state.)144 232.8 Q F1(pr)108 -244.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0 -(Fetch the pre)144 256.8 Q(vious command from the history list, mo)-.25 -E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 268.8 -Q F0(Fetch the ne)144 280.8 Q(xt command from the history list, mo)-.15 +(restore the history line to its original state.)144 220.8 Q F1(pr)108 +232.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0 +(Fetch the pre)144 244.8 Q(vious command from the history list, mo)-.25 +E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 256.8 +Q F0(Fetch the ne)144 268.8 Q(xt command from the history list, mo)-.15 E(ving forw)-.15 E(ard in the list.)-.1 E F1 -(beginning\255of\255history \(M\255<\))108 292.8 Q F0(Mo)144 304.8 Q .3 +(beginning\255of\255history \(M\255<\))108 280.8 Q F0(Mo)144 292.8 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.) --.65 E F1(end\255of\255history \(M\255>\))108 316.8 Q F0(Mo)144 328.8 Q +-.65 E F1(end\255of\255history \(M\255>\))108 304.8 Q F0(Mo)144 316.8 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5 (,i)-.65 G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18 -(re v)108 340.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 -1.47(Search backw)144 352.8 R 1.471 -(ard starting at the current line and mo)-.1 F 1.471 +(re v)108 328.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 +1.471(Search backw)144 340.8 R 1.471 +(ard starting at the current line and mo)-.1 F 1.47 (ving `up' through the history as necessary)-.15 F(.)-.65 E -(This is an incremental search.)144 364.8 Q F1 -.25(fo)108 376.8 S -(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.132 -(Search forw)144 388.8 R 1.132(ard starting at the current line and mo) --.1 F 1.131(ving `do)-.15 F 1.131(wn' through the history as necessary) --.25 F(.)-.65 E(This is an incremental search.)144 400.8 Q F1 -(non\255incr)108 412.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H -(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .164(Search backw) -144 424.8 R .164(ard through the history starting at the current line u\ -sing a non-incremental search for)-.1 F 2.5(as)144 436.8 S -(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 448.8 Q +(This is an incremental search.)144 352.8 Q F1 -.25(fo)108 364.8 S +(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131 +(Search forw)144 376.8 R 1.131(ard starting at the current line and mo) +-.1 F 1.132(ving `do)-.15 F 1.132(wn' through the history as necessary) +-.25 F(.)-.65 E(This is an incremental search.)144 388.8 Q F1 +(non\255incr)108 400.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H +(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .165(Search backw) +144 412.8 R .164(ard through the history starting at the current line u\ +sing a non-incremental search for)-.1 F 2.5(as)144 424.8 S +(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 436.8 Q (emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18 -E F0 1.354(Search forw)144 460.8 R 1.354(ard through the history using \ +E F0 1.353(Search forw)144 448.8 R 1.354(ard through the history using \ a non-incremental search for a string supplied by the)-.1 F(user)144 -472.8 Q(.)-.55 E F1(history\255sear)108 484.8 Q(ch\255f)-.18 E(orward) --.25 E F0 .248(Search forw)144 496.8 R .249(ard through the history for\ +460.8 Q(.)-.55 E F1(history\255sear)108 472.8 Q(ch\255f)-.18 E(orward) +-.25 E F0 .249(Search forw)144 484.8 R .249(ard through the history for\ the string of characters between the start of the current line)-.1 F -(and the point.)144 508.8 Q(This is a non-incremental search.)5 E F1 -(history\255sear)108 520.8 Q(ch\255backward)-.18 E F0 .951(Search backw) -144 532.8 R .951(ard through the history for the string of characters b\ -etween the start of the current)-.1 F(line and the point.)144 544.8 Q -(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 556.8 Q -2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 -568.8 R .622(gument to the pre)-.18 F .622 -(vious command \(usually the second w)-.25 F .622(ord on the pre)-.1 F -.622(vious line\))-.25 F .795(at point.)144 580.8 R -.4(Wi)5.795 G .794 -(th an ar).4 F(gument)-.18 E/F3 10/Times-Italic@0 SF(n)3.294 E F0 3.294 -(,i).24 G .794(nsert the)-3.294 F F3(n)3.294 E F0 .794(th w)B .794 -(ord from the pre)-.1 F .794(vious command \(the w)-.25 F .794 -(ords in the)-.1 F(pre)144 592.8 Q .291(vious command be)-.25 F .291 +(and the point.)144 496.8 Q(This is a non-incremental search.)5 E F1 +(history\255sear)108 508.8 Q(ch\255backward)-.18 E F0 .95(Search backw) +144 520.8 R .951(ard through the history for the string of characters b\ +etween the start of the current)-.1 F(line and the point.)144 532.8 Q +(This is a non-incremental search.)5 E F1(history\255substring\255sear) +108 544.8 Q(ch\255backward)-.18 E F0 .951(Search backw)144 556.8 R .951 +(ard through the history for the string of characters between the start\ + of the current)-.1 F .007(line and the current cursor position \(the) +144 568.8 R/F3 10/Times-Italic@0 SF(point)2.507 E F0 2.507(\). The)B +.007(search string may match an)2.507 F .007(ywhere in a history)-.15 F +2.5(line. This)144 580.8 R(is a non-incremental search.)2.5 E F1 +(history\255substring\255sear)108 592.8 Q(ch\255f)-.18 E(orward)-.25 E +F0 .249(Search forw)144 604.8 R .249(ard through the history for the st\ +ring of characters between the start of the current line)-.1 F .318 +(and the point.)144 616.8 R .319(The search string may match an)5.318 F +.319(ywhere in a history line.)-.15 F .319(This is a non-incremental) +5.319 F(search.)144 628.8 Q F1(yank\255nth\255ar)108 640.8 Q 2.5(g\()-.1 +G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 652.8 R .622 +(gument to the pre)-.18 F .622(vious command \(usually the second w)-.25 +F .622(ord on the pre)-.1 F .622(vious line\))-.25 F .794(at point.)144 +664.8 R -.4(Wi)5.794 G .794(th an ar).4 F(gument)-.18 E F3(n)3.294 E F0 +3.294(,i).24 G .794(nsert the)-3.294 F F3(n)3.294 E F0 .794(th w)B .794 +(ord from the pre)-.1 F .794(vious command \(the w)-.25 F .795 +(ords in the)-.1 F(pre)144 676.8 Q .292(vious command be)-.25 F .292 (gin with w)-.15 F .291(ord 0\).)-.1 F 2.791(An)5.291 G -2.25 -.15(eg a) -2.791 H(ti).15 E .591 -.15(ve a)-.25 H -.18(rg).15 G .291 -(ument inserts the).18 F F3(n)2.791 E F0 .291(th w)B .292 -(ord from the end of)-.1 F .282(the pre)144 604.8 R .282(vious command.) --.25 F .282(Once the ar)5.282 F(gument)-.18 E F3(n)2.781 E F0 .281 -(is computed, the ar)2.781 F .281(gument is e)-.18 F .281 -(xtracted as if the "!)-.15 F F3(n)A F0(")A(history e)144 616.8 Q -(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 628.8 Q -2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.307 -(Insert the last ar)144 640.8 R 1.307(gument to the pre)-.18 F 1.307 -(vious command \(the last w)-.25 F 1.308(ord of the pre)-.1 F 1.308 -(vious history entry\).)-.25 F -.4(Wi)144 652.8 S .204(th a numeric ar) -.4 F .204(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F -(e)-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.203(.S)C(uccessi) --5.203 E .503 -.15(ve c)-.25 H .203(alls to).15 F F1(yank\255last\255ar) -2.703 E(g)-.1 E F0(mo)144 664.8 Q .806 -.15(ve b)-.15 H .507 -(ack through the history list, inserting the last w).15 F .507 -(ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E -1.397(to the \214rst call\) of each line in turn.)144 676.8 R(An)6.396 E -3.896(yn)-.15 G 1.396(umeric ar)-3.896 F 1.396 -(gument supplied to these successi)-.18 F 1.696 -.15(ve c)-.25 H(alls) -.15 E .491(determines the direction to mo)144 688.8 R .791 -.15(ve t) --.15 H .491(hrough the history).15 F 5.492(.A)-.65 G(ne)-2.5 E -.05(ga) --.15 G(ti).05 E .792 -.15(ve a)-.25 H -.18(rg).15 G .492 -(ument switches the direction).18 F .494 -(through the history \(back or forw)144 700.8 R 2.994(ard\). The)-.1 F -.494(history e)2.994 F .494(xpansion f)-.15 F .494 -(acilities are used to e)-.1 F .494(xtract the last)-.15 F -.1(wo)144 -712.8 S(rd, as if the "!$" history e).1 E -(xpansion had been speci\214ed.)-.15 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(44)192.055 E 0 Cg EP -%%Page: 45 45 +(ument inserts the).18 F F3(n)2.791 E F0 .291(th w)B .291 +(ord from the end of)-.1 F .281(the pre)144 688.8 R .281(vious command.) +-.25 F .281(Once the ar)5.281 F(gument)-.18 E F3(n)2.781 E F0 .281 +(is computed, the ar)2.781 F .281(gument is e)-.18 F .282 +(xtracted as if the "!)-.15 F F3(n)A F0(")A(history e)144 700.8 Q +(xpansion had been speci\214ed.)-.15 E(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(46)188.455 E 0 Cg EP +%%Page: 47 47 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(shell\255expand\255line \(M\255C\255e\))108 84 Q F0 .622 -(Expand the line as the shell does.)144 96 R .622 -(This performs alias and history e)5.622 F .623 -(xpansion as well as all of the)-.15 F(shell w)144 108 Q(ord e)-.1 E 2.5 +SF(yank\255last\255ar)108 84 Q 2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F +-1.667(M\255_ \))2.5 F F0 1.308(Insert the last ar)144 96 R 1.308 +(gument to the pre)-.18 F 1.307(vious command \(the last w)-.25 F 1.307 +(ord of the pre)-.1 F 1.307(vious history entry\).)-.25 F -.4(Wi)144 108 +S .203(th a numeric ar).4 F .203(gument, beha)-.18 F .504 -.15(ve ex)-.2 +H .204(actly lik).15 F(e)-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 +5.204(.S)C(uccessi)-5.204 E .504 -.15(ve c)-.25 H .204(alls to).15 F F1 +(yank\255last\255ar)2.704 E(g)-.1 E F0(mo)144 120 Q .807 -.15(ve b)-.15 +H .507(ack through the history list, inserting the last w).15 F .507 +(ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E +1.396(to the \214rst call\) of each line in turn.)144 132 R(An)6.396 E +3.896(yn)-.15 G 1.396(umeric ar)-3.896 F 1.397 +(gument supplied to these successi)-.18 F 1.697 -.15(ve c)-.25 H(alls) +.15 E .492(determines the direction to mo)144 144 R .792 -.15(ve t)-.15 +H .492(hrough the history).15 F 5.491(.A)-.65 G(ne)-2.5 E -.05(ga)-.15 G +(ti).05 E .791 -.15(ve a)-.25 H -.18(rg).15 G .491 +(ument switches the direction).18 F .494 +(through the history \(back or forw)144 156 R 2.994(ard\). The)-.1 F +.494(history e)2.994 F .494(xpansion f)-.15 F .494 +(acilities are used to e)-.1 F .494(xtract the last)-.15 F -.1(wo)144 +168 S(rd, as if the "!$" history e).1 E(xpansion had been speci\214ed.) +-.15 E F1(shell\255expand\255line \(M\255C\255e\))108 180 Q F0 .623 +(Expand the line as the shell does.)144 192 R .622 +(This performs alias and history e)5.622 F .622 +(xpansion as well as all of the)-.15 F(shell w)144 204 Q(ord e)-.1 E 2.5 (xpansions. See)-.15 F/F2 9/Times-Bold@0 SF(HIST)2.5 E(OR)-.162 E 2.25 (YE)-.315 G(XP)-2.25 E(ANSION)-.666 E F0(belo)2.25 E 2.5(wf)-.25 G (or a description of history e)-2.5 E(xpansion.)-.15 E F1 -(history\255expand\255line \(M\255^\))108 120 Q F0 .939 -(Perform history e)144 132 R .939(xpansion on the current line.)-.15 F +(history\255expand\255line \(M\255^\))108 216 Q F0 .938 +(Perform history e)144 228 R .939(xpansion on the current line.)-.15 F (See)5.939 E F2(HIST)3.439 E(OR)-.162 E 3.189(YE)-.315 G(XP)-3.189 E -(ANSION)-.666 E F0(belo)3.189 E 3.438(wf)-.25 G .938(or a descrip-) --3.438 F(tion of history e)144 144 Q(xpansion.)-.15 E F1(magic\255space) -108 156 Q F0 1.626(Perform history e)144 168 R 1.626 -(xpansion on the current line and insert a space.)-.15 F(See)6.627 E F2 -(HIST)4.127 E(OR)-.162 E 3.877(YE)-.315 G(XP)-3.877 E(ANSION)-.666 E F0 -(belo)144 180 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E -(xpansion.)-.15 E F1(alias\255expand\255line)108 192 Q F0 .395 -(Perform alias e)144 204 R .395(xpansion on the current line.)-.15 F -(See)5.395 E F2(ALIASES)2.895 E F0(abo)2.645 E .694 -.15(ve f)-.15 H -.394(or a description of alias e).15 F(xpan-)-.15 E(sion.)144 216 Q F1 -(history\255and\255alias\255expand\255line)108 228 Q F0 -(Perform history and alias e)144 240 Q(xpansion on the current line.) --.15 E F1(insert\255last\255ar)108 252 Q(gument \(M\255.)-.1 E 2.5(,M) -.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 264 S(ynon)-2.5 E(ym for) +(ANSION)-.666 E F0(belo)3.189 E 3.439(wf)-.25 G .939(or a descrip-) +-3.439 F(tion of history e)144 240 Q(xpansion.)-.15 E F1(magic\255space) +108 252 Q F0 1.627(Perform history e)144 264 R 1.627 +(xpansion on the current line and insert a space.)-.15 F(See)6.626 E F2 +(HIST)4.126 E(OR)-.162 E 3.876(YE)-.315 G(XP)-3.876 E(ANSION)-.666 E F0 +(belo)144 276 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E +(xpansion.)-.15 E F1(alias\255expand\255line)108 288 Q F0 .394 +(Perform alias e)144 300 R .394(xpansion on the current line.)-.15 F +(See)5.395 E F2(ALIASES)2.895 E F0(abo)2.645 E .695 -.15(ve f)-.15 H +.395(or a description of alias e).15 F(xpan-)-.15 E(sion.)144 312 Q F1 +(history\255and\255alias\255expand\255line)108 324 Q F0 +(Perform history and alias e)144 336 Q(xpansion on the current line.) +-.15 E F1(insert\255last\255ar)108 348 Q(gument \(M\255.)-.1 E 2.5(,M) +.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 360 S(ynon)-2.5 E(ym for) -.15 E F1(yank\255last\255ar)2.5 E(g)-.1 E F0(.)A F1 -(operate\255and\255get\255next \(C\255o\))108 276 Q F0 .947 -(Accept the current line for e)144 288 R -.15(xe)-.15 G .948 -(cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.248 -.15 -(ve t)-.25 H 3.448(ot).15 G .948(he current line from the)-3.448 F -(history for editing.)144 300 Q(An)5 E 2.5(ya)-.15 G -.18(rg)-2.5 G -(ument is ignored.).18 E F1 -(edit\255and\255execute\255command \(C\255xC\255e\))108 312 Q F0(In)144 -324 Q -.2(vo)-.4 G 1.226 -.1(ke a).2 H 3.526(ne).1 G 1.026 +(operate\255and\255get\255next \(C\255o\))108 372 Q F0 .948 +(Accept the current line for e)144 384 R -.15(xe)-.15 G .948 +(cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.247 -.15 +(ve t)-.25 H 3.447(ot).15 G .947(he current line from the)-3.447 F .729 +(history for editing.)144 396 R 3.229(An)5.729 G .729(umeric ar)-3.229 F +.729 +(gument, if supplied, speci\214es the history entry to use instead of) +-.18 F(the current line.)144 408 Q F1 +(edit\255and\255execute\255command \(C\255x C\255e\))108 420 Q F0(In)144 +432 Q -.2(vo)-.4 G 1.226 -.1(ke a).2 H 3.526(ne).1 G 1.026 (ditor on the current command line, and e)-3.526 F -.15(xe)-.15 G 1.026 (cute the result as shell commands.).15 F F1(Bash)6.026 E F0 -(attempts to in)144 336 Q -.2(vo)-.4 G -.1(ke).2 G F2($VISU)2.6 E(AL) +(attempts to in)144 444 Q -.2(vo)-.4 G -.1(ke).2 G F2($VISU)2.6 E(AL) -.54 E/F3 9/Times-Roman@0 SF(,)A F2($EDIT)2.25 E(OR)-.162 E F3(,)A F0 (and)2.25 E/F4 10/Times-Italic@0 SF(emacs)2.5 E F0(as the editor)2.5 E 2.5(,i)-.4 G 2.5(nt)-2.5 G(hat order)-2.5 E(.)-.55 E F1(Commands f)87 -352.8 Q(or Changing T)-.25 E(ext)-.92 E F4(end\255of\255\214le)108 364.8 +460.8 Q(or Changing T)-.25 E(ext)-.92 E F4(end\255of\255\214le)108 472.8 Q F1(\(usually C\255d\))2.5 E F0 .798 -(The character indicating end-of-\214le as set, for e)144 376.8 R .799 +(The character indicating end-of-\214le as set, for e)144 484.8 R .799 (xample, by)-.15 F/F5 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.299 (ft)-5.799 G .799(his character is read when)-3.299 F .592 -(there are no characters on the line, and point is at the be)144 388.8 R +(there are no characters on the line, and point is at the be)144 496.8 R .592(ginning of the line, Readline interprets it)-.15 F -(as the end of input and returns)144 400.8 Q F2(EOF)2.5 E F3(.)A F1 -(delete\255char \(C\255d\))108 412.8 Q F0 .441 -(Delete the character at point.)144 424.8 R .442 +(as the end of input and returns)144 508.8 Q F2(EOF)2.5 E F3(.)A F1 +(delete\255char \(C\255d\))108 520.8 Q F0 .441 +(Delete the character at point.)144 532.8 R .442 (If this function is bound to the same character as the tty)5.441 F F1 -(EOF)2.942 E F0(char)2.942 E(-)-.2 E(acter)144 436.8 Q 2.5(,a)-.4 G(s) +(EOF)2.942 E F0(char)2.942 E(-)-.2 E(acter)144 544.8 Q 2.5(,a)-.4 G(s) -2.5 E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H (or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\)) -108 448.8 Q F0 .553(Delete the character behind the cursor)144 460.8 R +108 556.8 Q F0 .553(Delete the character behind the cursor)144 568.8 R 5.553(.W)-.55 G .553(hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553 (umeric ar)-3.053 F .552(gument, sa)-.18 F .852 -.15(ve t)-.2 H .552 -(he deleted te).15 F .552(xt on)-.15 F(the kill ring.)144 472.8 Q F1 --.25(fo)108 484.8 S(rward\255backward\255delete\255char).25 E F0 .473 -(Delete the character under the cursor)144 496.8 R 2.973(,u)-.4 G .474 +(he deleted te).15 F .552(xt on)-.15 F(the kill ring.)144 580.8 Q F1 +-.25(fo)108 592.8 S(rward\255backward\255delete\255char).25 E F0 .473 +(Delete the character under the cursor)144 604.8 R 2.973(,u)-.4 G .474 (nless the cursor is at the end of the line, in which case the)-2.973 F -(character behind the cursor is deleted.)144 508.8 Q F1 -(quoted\255insert \(C\255q, C\255v\))108 520.8 Q F0 .779(Add the ne)144 -532.8 R .779(xt character typed to the line v)-.15 F 3.279 +(character behind the cursor is deleted.)144 616.8 Q F1 +(quoted\255insert \(C\255q, C\255v\))108 628.8 Q F0 .779(Add the ne)144 +640.8 R .779(xt character typed to the line v)-.15 F 3.279 (erbatim. This)-.15 F .779(is ho)3.279 F 3.279(wt)-.25 G 3.279(oi)-3.279 G .779(nsert characters lik)-3.279 F(e)-.1 E F1(C\255q)3.278 E F0 3.278 -(,f)C(or)-3.278 E -.15(ex)144 544.8 S(ample.).15 E F1 -(tab\255insert \(C\255v T)108 556.8 Q(AB\))-.9 E F0 -(Insert a tab character)144 568.8 Q(.)-.55 E F1 -(self\255insert \(a, b, A, 1, !, ...\))108 580.8 Q F0 -(Insert the character typed.)144 592.8 Q F1 -(transpose\255chars \(C\255t\))108 604.8 Q F0 .321 -(Drag the character before point forw)144 616.8 R .321(ard o)-.1 F -.15 -(ve)-.15 G 2.821(rt).15 G .321(he character at point, mo)-2.821 F .322 -(ving point forw)-.15 F .322(ard as well.)-.1 F 1.182 -(If point is at the end of the line, then this transposes the tw)144 -628.8 R 3.682(oc)-.1 G 1.182(haracters before point.)-3.682 F(Ne)6.182 E --.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 640.8 Q(guments ha)-.18 E -.3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1 -(transpose\255w)108 652.8 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144 -664.8 R .023(ord before point past the w)-.1 F .023(ord after point, mo) --.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.524(rt).15 G .024(hat w) --2.524 F .024(ord as well.)-.1 F .024(If point)5.024 F -(is at the end of the line, this transposes the last tw)144 676.8 Q 2.5 -(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 688.8 Q -(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 -700.8 R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F --.05(ga)-.15 G(ti).05 E 1.998 -.15(ve a)-.25 H -.18(rg).15 G 1.698 -(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 712.8 S(rd, b).1 -E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E(GNU Bash 4.4)72 768 -Q(2016 August 26)142.895 E(45)192.055 E 0 Cg EP -%%Page: 46 46 +(,f)C(or)-3.278 E -.15(ex)144 652.8 S(ample.).15 E F1 +(tab\255insert \(C\255v T)108 664.8 Q(AB\))-.9 E F0 +(Insert a tab character)144 676.8 Q(.)-.55 E F1 +(self\255insert \(a, b, A, 1, !, ...\))108 688.8 Q F0 +(Insert the character typed.)144 700.8 Q(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(47)188.455 E 0 Cg EP +%%Page: 48 48 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(do)108 84 Q(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 96 Q -1.647(wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147 +SF(transpose\255chars \(C\255t\))108 84 Q F0 .321 +(Drag the character before point forw)144 96 R .321(ard o)-.1 F -.15(ve) +-.15 G 2.821(rt).15 G .321(he character at point, mo)-2.821 F .322 +(ving point forw)-.15 F .322(ard as well.)-.1 F 1.182 +(If point is at the end of the line, then this transposes the tw)144 108 +R 3.682(oc)-.1 G 1.182(haracters before point.)-3.682 F(Ne)6.182 E -.05 +(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 120 Q(guments ha)-.18 E .3 +-.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1 +(transpose\255w)108 132 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144 +144 R .023(ord before point past the w)-.1 F .023(ord after point, mo) +-.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.524(rt).15 G .024(hat w) +-2.524 F .024(ord as well.)-.1 F .024(If point)5.024 F +(is at the end of the line, this transposes the last tw)144 156 Q 2.5 +(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 168 Q +(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 180 +R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga) +-.15 G(ti).05 E 1.998 -.15(ve a)-.25 H -.18(rg).15 G 1.698 +(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 192 S(rd, b).1 E +(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 204 Q +(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 216 Q 1.647 +(wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147 (ord. W)-.1 F 1.648(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.948 -.15 (ve a)-.25 H -.18(rg).15 G 1.648(ument, lo).18 F 1.648(wercase the pre) --.25 F(vious)-.25 E -.1(wo)144 108 S(rd, b).1 E(ut do not mo)-.2 E .3 --.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 120 Q -(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 132 +-.25 F(vious)-.25 E -.1(wo)144 228 S(rd, b).1 E(ut do not mo)-.2 E .3 +-.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 240 Q +(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 252 R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F -.05(ga) -.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.974 -(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 144 S(rd, b).1 -E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 156 -S(rwrite\255mode).1 E F0 -.8(To)144 168 S .437(ggle o).8 F -.15(ve)-.15 +(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 264 S(rd, b).1 +E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 276 +S(rwrite\255mode).1 E F0 -.8(To)144 288 S .437(ggle o).8 F -.15(ve)-.15 G .437(rwrite mode.).15 F -.4(Wi)5.437 G .437(th an e).4 F .437 (xplicit positi)-.15 F .738 -.15(ve n)-.25 H .438(umeric ar).15 F .438 (gument, switches to o)-.18 F -.15(ve)-.15 G .438(rwrite mode.).15 F -.4 -(Wi)144 180 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081 +(Wi)144 300 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081 -.15(ve n)-.25 H .781(umeric ar).15 F .781 (gument, switches to insert mode.)-.18 F .78(This command af)5.781 F -(fects)-.25 E(only)144 192 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi) +(fects)-.25 E(only)144 312 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi) 4.394 E F0 1.894(mode does o)4.394 F -.15(ve)-.15 G 1.894(rwrite dif).15 F(ferently)-.25 E 6.894(.E)-.65 G 1.894(ach call to)-6.894 F/F2 10 /Times-Italic@0 SF -.37(re)4.395 G(adline\(\)).37 E F0 1.895 -(starts in insert)4.395 F 3.969(mode. In)144 204 R -.15(ove)3.969 G +(starts in insert)4.395 F 3.969(mode. In)144 324 R -.15(ove)3.969 G 1.469(rwrite mode, characters bound to).15 F F1(self\255insert)3.969 E F0 1.468(replace the te)3.969 F 1.468(xt at point rather than)-.15 F -.957(pushing the te)144 216 R .957(xt to the right.)-.15 F .958 +.957(pushing the te)144 336 R .957(xt to the right.)-.15 F .958 (Characters bound to)5.957 F F1(backward\255delete\255char)3.458 E F0 -.958(replace the character)3.458 F(before point with a space.)144 228 Q +.958(replace the character)3.458 F(before point with a space.)144 348 Q (By def)5 E(ault, this command is unbound.)-.1 E F1(Killing and Y)87 -244.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 256.8 Q F0 -(Kill the te)144 268.8 Q(xt from point to the end of the line.)-.15 E F1 -(backward\255kill\255line \(C\255x Rubout\))108 280.8 Q F0(Kill backw) -144 292.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 -(unix\255line\255discard \(C\255u\))108 304.8 Q F0(Kill backw)144 316.8 +364.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 376.8 Q F0 +(Kill the te)144 388.8 Q(xt from point to the end of the line.)-.15 E F1 +(backward\255kill\255line \(C\255x Rubout\))108 400.8 Q F0(Kill backw) +144 412.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 +(unix\255line\255discard \(C\255u\))108 424.8 Q F0(Kill backw)144 436.8 Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E (The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt) --2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 328.8 Q F0 +-2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 448.8 Q F0 (Kill all characters on the current line, no matter where point is.)144 -340.8 Q F1(kill\255w)108 352.8 Q(ord \(M\255d\))-.1 E F0 .729 -(Kill from point to the end of the current w)144 364.8 R .728 +460.8 Q F1(kill\255w)108 472.8 Q(ord \(M\255d\))-.1 E F0 .729 +(Kill from point to the end of the current w)144 484.8 R .728 (ord, or if between w)-.1 F .728(ords, to the end of the ne)-.1 F .728 -(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 376.8 S +(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 496.8 S (rd boundaries are the same as those used by).8 E F1 -.25(fo)2.5 G -(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 388.8 Q -(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 400.8 Q(ord behind point.) +(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 508.8 Q +(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 520.8 Q(ord behind point.) -.1 E -.8(Wo)5 G(rd boundaries are the same as those used by).8 E F1 -(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(shell\255kill\255w)108 412.8 Q -(ord)-.1 E F0 .728(Kill from point to the end of the current w)144 424.8 +(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(shell\255kill\255w)108 532.8 Q +(ord)-.1 E F0 .728(Kill from point to the end of the current w)144 544.8 R .729(ord, or if between w)-.1 F .729(ords, to the end of the ne)-.1 F -.729(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 436.8 S +.729(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 556.8 S (rd boundaries are the same as those used by).8 E F1(shell\255f)2.5 E (orward\255w)-.25 E(ord)-.1 E F0(.)A F1(shell\255backward\255kill\255w) -108 448.8 Q(ord)-.1 E F0 3.025(Kill the w)144 460.8 R 3.025 +108 568.8 Q(ord)-.1 E F0 3.025(Kill the w)144 580.8 R 3.025 (ord behind point.)-.1 F -.8(Wo)8.025 G 3.025 (rd boundaries are the same as those used by).8 F F1(shell\255back-) -5.525 E(ward\255w)144 472.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 484.8 Q -(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 496.8 R .364 +5.525 E(ward\255w)144 592.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 604.8 Q +(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 616.8 R .364 (ord behind point, using white space as a w)-.1 F .365(ord boundary)-.1 F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15 (ve)-.2 G 2.865(do).15 G 2.865(nt)-2.865 G(he)-2.865 E(kill-ring.)144 -508.8 Q F1(unix\255\214lename\255rubout)108 520.8 Q F0 .167(Kill the w) -144 532.8 R .166 +628.8 Q F1(unix\255\214lename\255rubout)108 640.8 Q F0 .167(Kill the w) +144 652.8 R .166 (ord behind point, using white space and the slash character as the w) --.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 544.8 Q +-.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 664.8 Q (xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)-2.5 G(he kill-ring.) --2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 556.8 Q F0 -(Delete all spaces and tabs around point.)144 568.8 Q F1(kill\255r)108 -580.8 Q(egion)-.18 E F0(Kill the te)144 592.8 Q(xt in the current re) --.15 E(gion.)-.15 E F1(copy\255r)108 604.8 Q(egion\255as\255kill)-.18 E -F0(Cop)144 616.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E -(gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F1 -(copy\255backward\255w)108 628.8 Q(ord)-.1 E F0(Cop)144 640.8 Q 4.8(yt) --.1 G 2.3(he w)-4.8 F 2.3(ord before point to the kill b)-.1 F(uf)-.2 E -(fer)-.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.301 -(ord boundaries are the same as)-.1 F F1(back-)4.801 E(ward\255w)144 -652.8 Q(ord)-.1 E F0(.)A F1(copy\255f)108 664.8 Q(orward\255w)-.25 E -(ord)-.1 E F0(Cop)144 676.8 Q 4.508(yt)-.1 G 2.008(he w)-4.508 F 2.008 -(ord follo)-.1 F 2.008(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 -E 7.007(.T)-.55 G 2.007(he w)-7.007 F 2.007 -(ord boundaries are the same as)-.1 F F1 -.25(fo)4.507 G -.37(r-).25 G -(ward\255w)144 688.8 Q(ord)-.1 E F0(.)A F1(yank \(C\255y\))108 700.8 Q -F0 -1(Ya)144 712.8 S(nk the top of the kill ring into the b)1 E(uf)-.2 E -(fer at point.)-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(46) -192.055 E 0 Cg EP -%%Page: 47 47 +-2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 676.8 Q F0 +(Delete all spaces and tabs around point.)144 688.8 Q F1(kill\255r)108 +700.8 Q(egion)-.18 E F0(Kill the te)144 712.8 Q(xt in the current re) +-.15 E(gion.)-.15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(48) +188.455 E 0 Cg EP +%%Page: 49 49 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(yank\255pop \(M\255y\))108 84 Q F0 -(Rotate the kill ring, and yank the ne)144 96 Q 2.5(wt)-.25 G 2.5 +SF(copy\255r)108 84 Q(egion\255as\255kill)-.18 E F0(Cop)144 96 Q 2.5(yt) +-.1 G(he te)-2.5 E(xt in the re)-.15 E(gion to the kill b)-.15 E(uf)-.2 +E(fer)-.25 E(.)-.55 E F1(copy\255backward\255w)108 108 Q(ord)-.1 E F0 +(Cop)144 120 Q 4.8(yt)-.1 G 2.3(he w)-4.8 F 2.3 +(ord before point to the kill b)-.1 F(uf)-.2 E(fer)-.25 E 7.301(.T)-.55 +G 2.301(he w)-7.301 F 2.301(ord boundaries are the same as)-.1 F F1 +(back-)4.801 E(ward\255w)144 132 Q(ord)-.1 E F0(.)A F1(copy\255f)108 144 +Q(orward\255w)-.25 E(ord)-.1 E F0(Cop)144 156 Q 4.508(yt)-.1 G 2.008 +(he w)-4.508 F 2.008(ord follo)-.1 F 2.008(wing point to the kill b)-.25 +F(uf)-.2 E(fer)-.25 E 7.007(.T)-.55 G 2.007(he w)-7.007 F 2.007 +(ord boundaries are the same as)-.1 F F1 -.25(fo)4.507 G -.37(r-).25 G +(ward\255w)144 168 Q(ord)-.1 E F0(.)A F1(yank \(C\255y\))108 180 Q F0 -1 +(Ya)144 192 S(nk the top of the kill ring into the b)1 E(uf)-.2 E +(fer at point.)-.25 E F1(yank\255pop \(M\255y\))108 204 Q F0 +(Rotate the kill ring, and yank the ne)144 216 Q 2.5(wt)-.25 G 2.5 (op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E -F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 112.8 Q -(guments)-.1 E(digit\255ar)108 124.8 Q +F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 232.8 Q +(guments)-.1 E(digit\255ar)108 244.8 Q (gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .367 -(Add this digit to the ar)144 136.8 R .367 +(Add this digit to the ar)144 256.8 R .367 (gument already accumulating, or start a ne)-.18 F 2.867(wa)-.25 G -.18 (rg)-2.867 G 2.867(ument. M\255\255).18 F .367(starts a ne)2.867 F -.05 -(ga)-.15 G(-).05 E(ti)144 148.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G -(ument.).18 E F1(uni)108 160.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 -E F0 .779(This is another w)144 172.8 R .779(ay to specify an ar)-.1 F +(ga)-.15 G(-).05 E(ti)144 268.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G +(ument.).18 E F1(uni)108 280.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 +E F0 .779(This is another w)144 292.8 R .779(ay to specify an ar)-.1 F 3.279(gument. If)-.18 F .779(this command is follo)3.279 F .778 (wed by one or more digits,)-.25 F 1.376 (optionally with a leading minus sign, those digits de\214ne the ar)144 -184.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 -196.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni) +304.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 +316.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni) 3.67 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(ag)3.67 E 1.17 (ain ends the numeric ar)-.05 F 1.17(gument, b)-.18 F 1.17(ut is other) --.2 F(-)-.2 E .898(wise ignored.)144 208.8 R .898 +-.2 F(-)-.2 E .898(wise ignored.)144 328.8 R .898 (As a special case, if this command is immediately follo)5.898 F .898 (wed by a character that is)-.25 F 1.23 -(neither a digit nor minus sign, the ar)144 220.8 R 1.23 +(neither a digit nor minus sign, the ar)144 340.8 R 1.23 (gument count for the ne)-.18 F 1.23(xt command is multiplied by four) --.15 F(.)-.55 E .822(The ar)144 232.8 R .822 +-.15 F(.)-.55 E .822(The ar)144 352.8 R .822 (gument count is initially one, so e)-.18 F -.15(xe)-.15 G .823 (cuting this function the \214rst time mak).15 F .823(es the ar)-.1 F -(gument)-.18 E(count four)144 244.8 Q 2.5(,as)-.4 G(econd time mak)-2.5 +(gument)-.18 E(count four)144 364.8 Q 2.5(,as)-.4 G(econd time mak)-2.5 E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1(Completing) -87 261.6 Q(complete \(T)108 273.6 Q(AB\))-.9 E F0 1.137 -(Attempt to perform completion on the te)144 285.6 R 1.137 +87 381.6 Q(complete \(T)108 393.6 Q(AB\))-.9 E F0 1.137 +(Attempt to perform completion on the te)144 405.6 R 1.137 (xt before point.)-.15 F F1(Bash)6.137 E F0 1.137 -(attempts completion treating the)3.637 F(te)144 297.6 Q .532(xt as a v) +(attempts completion treating the)3.637 F(te)144 417.6 Q .532(xt as a v) -.15 F .532(ariable \(if the te)-.25 F .532(xt be)-.15 F .533(gins with) -.15 F F1($)3.033 E F0 .533(\), username \(if the te)B .533(xt be)-.15 F .533(gins with)-.15 F F1(~)3.033 E F0 .533(\), hostname \(if the)B(te) -144 309.6 Q .702(xt be)-.15 F .702(gins with)-.15 F F1(@)3.202 E F0 .701 +144 429.6 Q .702(xt be)-.15 F .702(gins with)-.15 F F1(@)3.202 E F0 .701 (\), or command \(including aliases and functions\) in turn.)B .701 (If none of these pro-)5.701 F -(duces a match, \214lename completion is attempted.)144 321.6 Q F1 -(possible\255completions \(M\255?\))108 333.6 Q F0 -(List the possible completions of the te)144 345.6 Q(xt before point.) --.15 E F1(insert\255completions \(M\255*\))108 357.6 Q F0 .783 -(Insert all completions of the te)144 369.6 R .783 +(duces a match, \214lename completion is attempted.)144 441.6 Q F1 +(possible\255completions \(M\255?\))108 453.6 Q F0 +(List the possible completions of the te)144 465.6 Q(xt before point.) +-.15 E F1(insert\255completions \(M\255*\))108 477.6 Q F0 .783 +(Insert all completions of the te)144 489.6 R .783 (xt before point that w)-.15 F .783(ould ha)-.1 F 1.083 -.15(ve b)-.2 H .783(een generated by).15 F F1(possible\255com-)3.283 E(pletions)144 -381.6 Q F0(.)A F1(menu\255complete)108 393.6 Q F0 .929(Similar to)144 -405.6 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629 +501.6 Q F0(.)A F1(menu\255complete)108 513.6 Q F0 .929(Similar to)144 +525.6 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629 F .929(ord to be completed with a single match from the list of)-.1 F -1.193(possible completions.)144 417.6 R 1.193(Repeated e)6.193 F -.15 +1.193(possible completions.)144 537.6 R 1.193(Repeated e)6.193 F -.15 (xe)-.15 G 1.193(cution of).15 F F1(menu\255complete)3.694 E F0 1.194 (steps through the list of possible)3.694 F .829 -(completions, inserting each match in turn.)144 429.6 R .828 +(completions, inserting each match in turn.)144 549.6 R .828 (At the end of the list of completions, the bell is rung)5.828 F .727 -(\(subject to the setting of)144 441.6 R F1(bell\255style)3.227 E F0 +(\(subject to the setting of)144 561.6 R F1(bell\255style)3.227 E F0 3.227(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F .727(An ar)5.727 F .727(gument of)-.18 F/F2 10/Times-Italic@0 SF(n)3.227 E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2(n)3.228 E F0 1.73 -(positions forw)144 453.6 R 1.73(ard in the list of matches; a ne)-.1 F +(positions forw)144 573.6 R 1.73(ard in the list of matches; a ne)-.1 F -.05(ga)-.15 G(ti).05 E 2.03 -.15(ve a)-.25 H -.18(rg).15 G 1.73 (ument may be used to mo).18 F 2.03 -.15(ve b)-.15 H(ackw).15 E(ard)-.1 -E(through the list.)144 465.6 Q(This command is intended to be bound to) +E(through the list.)144 585.6 Q(This command is intended to be bound to) 5 E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E -(ault.)-.1 E F1(menu\255complete\255backward)108 477.6 Q F0 .82 -(Identical to)144 489.6 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82 +(ault.)-.1 E F1(menu\255complete\255backward)108 597.6 Q F0 .82 +(Identical to)144 609.6 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82 (ut mo)-3.52 F -.15(ve)-.15 G 3.32(sb).15 G(ackw)-3.32 E .82 (ard through the list of possible completions, as if)-.1 F F1 -(menu\255complete)144 501.6 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5 +(menu\255complete)144 621.6 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5 (nan).15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg) .15 G 2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E -F1(delete\255char\255or\255list)108 513.6 Q F0 .234 -(Deletes the character under the cursor if not at the be)144 525.6 R +F1(delete\255char\255or\255list)108 633.6 Q F0 .234 +(Deletes the character under the cursor if not at the be)144 645.6 R .234(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete\255char) -2.734 E F0(\).)A .425(If at the end of the line, beha)144 537.6 R -.15 +2.734 E F0(\).)A .425(If at the end of the line, beha)144 657.6 R -.15 (ve)-.2 G 2.925(si).15 G .425(dentically to)-2.925 F F1 (possible\255completions)2.925 E F0 5.425(.T)C .425 -(his command is unbound)-5.425 F(by def)144 549.6 Q(ault.)-.1 E F1 -(complete\255\214lename \(M\255/\))108 561.6 Q F0 -(Attempt \214lename completion on the te)144 573.6 Q(xt before point.) --.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 585.6 Q -F0(List the possible completions of the te)144 597.6 Q -(xt before point, treating it as a \214lename.)-.15 E F1 -(complete\255user)108 609.6 Q(name \(M\255~\))-.15 E F0 -(Attempt completion on the te)144 621.6 Q -(xt before point, treating it as a username.)-.15 E F1(possible\255user) -108 633.6 Q(name\255completions \(C\255x ~\))-.15 E F0 -(List the possible completions of the te)144 645.6 Q -(xt before point, treating it as a username.)-.15 E F1(complete\255v)108 -657.6 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 -669.6 Q(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E -F1(possible\255v)108 681.6 Q(ariable\255completions \(C\255x $\))-.1 E -F0(List the possible completions of the te)144 693.6 Q -(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 -(complete\255hostname \(M\255@\))108 705.6 Q F0 -(Attempt completion on the te)144 717.6 Q -(xt before point, treating it as a hostname.)-.15 E(GNU Bash 4.4)72 768 -Q(2016 August 26)142.895 E(47)192.055 E 0 Cg EP -%%Page: 48 48 +(his command is unbound)-5.425 F(by def)144 669.6 Q(ault.)-.1 E F1 +(complete\255\214lename \(M\255/\))108 681.6 Q F0 +(Attempt \214lename completion on the te)144 693.6 Q(xt before point.) +-.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 705.6 Q +F0(List the possible completions of the te)144 717.6 Q +(xt before point, treating it as a \214lename.)-.15 E(GNU Bash 5.0)72 +768 Q(2018 December 7)139.295 E(49)188.455 E 0 Cg EP +%%Page: 50 50 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(possible\255hostname\255completions \(C\255x @\))108 84 Q F0 -(List the possible completions of the te)144 96 Q +SF(complete\255user)108 84 Q(name \(M\255~\))-.15 E F0 +(Attempt completion on the te)144 96 Q +(xt before point, treating it as a username.)-.15 E F1(possible\255user) +108 108 Q(name\255completions \(C\255x ~\))-.15 E F0 +(List the possible completions of the te)144 120 Q +(xt before point, treating it as a username.)-.15 E F1(complete\255v)108 +132 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 144 Q +(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 +(possible\255v)108 156 Q(ariable\255completions \(C\255x $\))-.1 E F0 +(List the possible completions of the te)144 168 Q +(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 +(complete\255hostname \(M\255@\))108 180 Q F0 +(Attempt completion on the te)144 192 Q (xt before point, treating it as a hostname.)-.15 E F1 -(complete\255command \(M\255!\))108 108 Q F0 .581 -(Attempt completion on the te)144 120 R .581 +(possible\255hostname\255completions \(C\255x @\))108 204 Q F0 +(List the possible completions of the te)144 216 Q +(xt before point, treating it as a hostname.)-.15 E F1 +(complete\255command \(M\255!\))108 228 Q F0 .581 +(Attempt completion on the te)144 240 R .581 (xt before point, treating it as a command name.)-.15 F .58 -(Command comple-)5.58 F .715(tion attempts to match the te)144 132 R +(Command comple-)5.58 F .715(tion attempts to match the te)144 252 R .715(xt ag)-.15 F .715(ainst aliases, reserv)-.05 F .715(ed w)-.15 F .715(ords, shell functions, shell b)-.1 F .715(uiltins, and)-.2 F -(\214nally e)144 144 Q -.15(xe)-.15 G +(\214nally e)144 264 Q -.15(xe)-.15 G (cutable \214lenames, in that order).15 E(.)-.55 E F1 -(possible\255command\255completions \(C\255x !\))108 156 Q F0 -(List the possible completions of the te)144 168 Q +(possible\255command\255completions \(C\255x !\))108 276 Q F0 +(List the possible completions of the te)144 288 Q (xt before point, treating it as a command name.)-.15 E F1 -(dynamic\255complete\255history \(M\255T)108 180 Q(AB\))-.9 E F0 .425 -(Attempt completion on the te)144 192 R .425 +(dynamic\255complete\255history \(M\255T)108 300 Q(AB\))-.9 E F0 .425 +(Attempt completion on the te)144 312 R .425 (xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .424 (ainst lines from the history list)-.05 F -(for possible completion matches.)144 204 Q F1(dab)108 216 Q(br)-.1 E +(for possible completion matches.)144 324 Q F1(dab)108 336 Q(br)-.1 E -.15(ev)-.18 G(\255expand).15 E F0 .61 -(Attempt menu completion on the te)144 228 R .611 +(Attempt menu completion on the te)144 348 R .611 (xt before point, comparing the te)-.15 F .611(xt ag)-.15 F .611 (ainst lines from the his-)-.05 F -(tory list for possible completion matches.)144 240 Q F1 -(complete\255into\255braces \(M\255{\))108 252 Q F0 .4(Perform \214lena\ +(tory list for possible completion matches.)144 360 Q F1 +(complete\255into\255braces \(M\255{\))108 372 Q F0 .4(Perform \214lena\ me completion and insert the list of possible completions enclosed with\ -in braces so)144 264 R(the list is a)144 276 Q -.25(va)-.2 G +in braces so)144 384 R(the list is a)144 396 Q -.25(va)-.2 G (ilable to the shell \(see).25 E F1(Brace Expansion)2.5 E F0(abo)2.5 E --.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 292.8 S(yboard Macr).25 E(os)-.18 -E(start\255kbd\255macr)108 304.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) -.833 E F0(Be)144 316.8 Q(gin sa)-.15 E +-.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 412.8 S(yboard Macr).25 E(os)-.18 +E(start\255kbd\255macr)108 424.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) +.833 E F0(Be)144 436.8 Q(gin sa)-.15 E (ving the characters typed into the current k)-.2 E -.15(ey)-.1 G -(board macro.).15 E F1(end\255kbd\255macr)108 328.8 Q 2.5(o\()-.18 G -(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 340.8 Q +(board macro.).15 E F1(end\255kbd\255macr)108 448.8 Q 2.5(o\()-.18 G +(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 460.8 Q (ving the characters typed into the current k)-.2 E -.15(ey)-.1 G (board macro and store the de\214nition.).15 E F1 -(call\255last\255kbd\255macr)108 352.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 -E F0(Re-e)144 364.8 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey) +(call\255last\255kbd\255macr)108 472.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 +E F0(Re-e)144 484.8 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey) -.1 G .999(board macro de\214ned, by making the characters in the macro\ - appear as if).15 F(typed at the k)144 376.8 Q -.15(ey)-.1 G(board.).15 -E F1(print\255last\255kbd\255macr)108 388.8 Q 2.5(o\()-.18 G(\))-2.5 E -F0(Print the last k)144 400.8 Q -.15(ey)-.1 G + appear as if).15 F(typed at the k)144 496.8 Q -.15(ey)-.1 G(board.).15 +E F1(print\255last\255kbd\255macr)108 508.8 Q 2.5(o\()-.18 G(\))-2.5 E +F0(Print the last k)144 520.8 Q -.15(ey)-.1 G (board macro de\214ned in a format suitable for the).15 E/F2 10 /Times-Italic@0 SF(inputr)2.5 E(c)-.37 E F0(\214le.)2.5 E F1 -(Miscellaneous)87 417.6 Q -.18(re)108 429.6 S.18 E +(Miscellaneous)87 537.6 Q -.18(re)108 549.6 S.18 E (ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.777 -(Read in the contents of the)144 441.6 R F2(inputr)4.277 E(c)-.37 E F0 +(Read in the contents of the)144 561.6 R F2(inputr)4.277 E(c)-.37 E F0 1.776(\214le, and incorporate an)4.276 F 4.276(yb)-.15 G 1.776 (indings or v)-4.276 F 1.776(ariable assignments)-.25 F(found there.)144 -453.6 Q F1(abort \(C\255g\))108 465.6 Q F0 3.248 -(Abort the current editing command and ring the terminal')144 477.6 R +573.6 Q F1(abort \(C\255g\))108 585.6 Q F0 3.248 +(Abort the current editing command and ring the terminal')144 597.6 R 5.749(sb)-.55 G 3.249(ell \(subject to the setting of)-5.749 F F1 -(bell\255style)144 489.6 Q F0(\).)A F1(do\255upper)108 501.6 Q -(case\255v)-.18 E(ersion \(M\255a, M\255b, M\255)-.1 E F2(x)A F1 2.5(,.) -C(..\))-2.5 E F0 1.756(If the meta\214ed character)144 513.6 R F2(x) -4.256 E F0 1.755(is lo)4.256 F 1.755 -(wercase, run the command that is bound to the corresponding)-.25 F -(uppercase character)144 525.6 Q(.)-.55 E F1(pr)108 537.6 Q -(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 549.6 Q -(xt character typed.)-.15 E/F3 9/Times-Bold@0 SF(ESC)5 E F1(f)2.25 E F0 -(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1(Meta\255f)2.5 E F0(.)A F1 -(undo \(C\255_, C\255x C\255u\))108 561.6 Q F0 -(Incremental undo, separately remembered for each line.)144 573.6 Q F1 --2.29 -.18(re v)108 585.6 T(ert\255line \(M\255r\)).08 E F0 1.095 -(Undo all changes made to this line.)144 597.6 R 1.095(This is lik)6.095 +(bell\255style)144 609.6 Q F0(\).)A F1(do\255lo)108 621.6 Q(wer)-.1 E +(case\255v)-.18 E(ersion \(M\255A, M\255B, M\255)-.1 E F2(x)A F1 2.5(,.) +C(..\))-2.5 E F0 1.739(If the meta\214ed character)144 633.6 R F2(x) +4.239 E F0 1.739 +(is uppercase, run the command that is bound to the corresponding)4.239 +F(meta\214ed lo)144 645.6 Q(wercase character)-.25 E 5(.T)-.55 G +(he beha)-5 E(vior is unde\214ned if)-.2 E F2(x)2.5 E F0(is already lo) +2.5 E(wercase.)-.25 E F1(pr)108 657.6 Q(e\214x\255meta \(ESC\))-.18 E F0 +(Metafy the ne)144 669.6 Q(xt character typed.)-.15 E/F3 9/Times-Bold@0 +SF(ESC)5 E F1(f)2.25 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1 +(Meta\255f)2.5 E F0(.)A F1(undo \(C\255_, C\255x C\255u\))108 681.6 Q F0 +(Incremental undo, separately remembered for each line.)144 693.6 Q F1 +-2.29 -.18(re v)108 705.6 T(ert\255line \(M\255r\)).08 E F0 1.095 +(Undo all changes made to this line.)144 717.6 R 1.095(This is lik)6.095 F 3.595(ee)-.1 G -.15(xe)-3.745 G 1.095(cuting the).15 F F1(undo)3.595 E F0 1.095(command enough times to)3.595 F -(return the line to its initial state.)144 609.6 Q F1 -(tilde\255expand \(M\255&\))108 621.6 Q F0(Perform tilde e)144 633.6 Q +(return the line to its initial state.)144 729.6 Q(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(50)188.455 E 0 Cg EP +%%Page: 51 51 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(tilde\255expand \(M\255&\))108 84 Q F0(Perform tilde e)144 96 Q (xpansion on the current w)-.15 E(ord.)-.1 E F1 -(set\255mark \(C\255@, M\255\))108 645.6 Q F0 -(Set the mark to the point.)144 657.6 Q(If a numeric ar)5 E +(set\255mark \(C\255@, M\255\))108 108 Q F0 +(Set the mark to the point.)144 120 Q(If a numeric ar)5 E (gument is supplied, the mark is set to that position.)-.18 E F1 -(exchange\255point\255and\255mark \(C\255x C\255x\))108 669.6 Q F0(Sw) -144 681.6 Q .283(ap the point with the mark.)-.1 F .283 +(exchange\255point\255and\255mark \(C\255x C\255x\))108 132 Q F0(Sw)144 +144 Q .283(ap the point with the mark.)-.1 F .283 (The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G 2.782(dp).15 G .282(osition, and the old)-2.782 F(cursor position is sa) -144 693.6 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1 -(character\255sear)108 705.6 Q(ch \(C\255]\))-.18 E F0 3.035(Ac)144 -717.6 S .535(haracter is read and point is mo)-3.035 F -.15(ve)-.15 G -3.035(dt).15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535 +144 156 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1 +(character\255sear)108 168 Q(ch \(C\255]\))-.18 E F0 3.035(Ac)144 180 S +.535(haracter is read and point is mo)-3.035 F -.15(ve)-.15 G 3.035(dt) +.15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535 (xt occurrence of that character)-.15 F 5.536(.A)-.55 G(ne)-2.5 E -.05 (ga)-.15 G(ti).05 E .836 -.15(ve c)-.25 H(ount).15 E(searches for pre) -144 729.6 Q(vious occurrences.)-.25 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(48)192.055 E 0 Cg EP -%%Page: 49 49 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(character\255sear)108 84 Q(ch\255backward \(M\255C\255]\))-.18 E F0 -3.544(Ac)144 96 S 1.044(haracter is read and point is mo)-3.544 F -.15 -(ve)-.15 G 3.544(dt).15 G 3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044 +144 192 Q(vious occurrences.)-.25 E F1(character\255sear)108 204 Q +(ch\255backward \(M\255C\255]\))-.18 E F0 3.544(Ac)144 216 S 1.044 +(haracter is read and point is mo)-3.544 F -.15(ve)-.15 G 3.544(dt).15 G +3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044 (vious occurrence of that character)-.25 F 6.043(.A)-.55 G(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G -(count searches for subsequent occurrences.)144 108 Q F1 -(skip\255csi\255sequence)108 120 Q F0 1.826 -(Read enough characters to consume a multi-k)144 132 R 2.126 -.15(ey s) +(count searches for subsequent occurrences.)144 228 Q F1 +(skip\255csi\255sequence)108 240 Q F0 1.826 +(Read enough characters to consume a multi-k)144 252 R 2.126 -.15(ey s) -.1 H 1.827(equence such as those de\214ned for k).15 F -.15(ey)-.1 G -4.327(sl).15 G(ik)-4.327 E(e)-.1 E .791(Home and End.)144 144 R .791 +4.327(sl).15 G(ik)-4.327 E(e)-.1 E .791(Home and End.)144 264 R .791 (Such sequences be)5.791 F .791 (gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F -.331(If this sequence is bound to "\\[", k)144 156 R -.15(ey)-.1 G 2.831 +.331(If this sequence is bound to "\\[", k)144 276 R -.15(ey)-.1 G 2.831 (sp).15 G .331(roducing such sequences will ha)-2.831 F .632 -.15(ve n) -.2 H 2.832(oe).15 G -.25(ff)-2.832 G .332(ect unless e).25 F(xplic-) -.15 E .026(itly bound to a readline command, instead of inserting stra\ -y characters into the editing b)144 168 R(uf)-.2 E(fer)-.25 E 5.026(.T) --.55 G(his)-5.026 E(is unbound by def)144 180 Q(ault, b)-.1 E +y characters into the editing b)144 288 R(uf)-.2 E(fer)-.25 E 5.026(.T) +-.55 G(his)-5.026 E(is unbound by def)144 300 Q(ault, b)-.1 E (ut usually bound to ESC\255[.)-.2 E F1(insert\255comment \(M\255#\))108 -192 Q F0 -.4(Wi)144 204 S .48(thout a numeric ar).4 F .48(gument, the v) +312 Q F0 -.4(Wi)144 324 S .48(thout a numeric ar).4 F .48(gument, the v) -.18 F .481(alue of the readline)-.25 F F1(comment\255begin)2.981 E F0 --.25(va)2.981 G .481(riable is inserted at the).25 F(be)144 216 Q .245 +-.25(va)2.981 G .481(riable is inserted at the).25 F(be)144 336 Q .245 (ginning of the current line.)-.15 F .245(If a numeric ar)5.245 F .244 (gument is supplied, this command acts as a toggle: if)-.18 F .321 -(the characters at the be)144 228 R .321 +(the characters at the be)144 348 R .321 (ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F1 (comment\255begin)2.821 E F0 2.822(,t)C .322(he v)-2.822 F .322(alue is) --.25 F .832(inserted, otherwise the characters in)144 240 R F1 +-.25 F .832(inserted, otherwise the characters in)144 360 R F1 (comment\255begin)3.332 E F0 .831(are deleted from the be)3.332 F .831 (ginning of the line.)-.15 F 1.468 -(In either case, the line is accepted as if a ne)144 252 R 1.468 +(In either case, the line is accepted as if a ne)144 372 R 1.468 (wline had been typed.)-.25 F 1.469(The def)6.469 F 1.469(ault v)-.1 F -1.469(alue of)-.25 F F1(com-)3.969 E(ment\255begin)144 264 Q F0 .84 +1.469(alue of)-.25 F F1(com-)3.969 E(ment\255begin)144 384 Q F0 .84 (causes this command to mak)3.34 F 3.339(et)-.1 G .839 (he current line a shell comment.)-3.339 F .839(If a numeric ar)5.839 F -(gu-)-.18 E(ment causes the comment character to be remo)144 276 Q -.15 +(gu-)-.18 E(ment causes the comment character to be remo)144 396 Q -.15 (ve)-.15 G(d, the line will be e).15 E -.15(xe)-.15 G -(cuted by the shell.).15 E F1(glob\255complete\255w)108 288 Q -(ord \(M\255g\))-.1 E F0 .791(The w)144 300 R .791 +(cuted by the shell.).15 E F1(glob\255complete\255w)108 408 Q +(ord \(M\255g\))-.1 E F0 .791(The w)144 420 R .791 (ord before point is treated as a pattern for pathname e)-.1 F .792 -(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 312 +(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 432 R(pattern is used to generate a list of matching \214lenames for possib\ -le completions.)2.5 E F1(glob\255expand\255w)108 324 Q(ord \(C\255x *\)) --.1 E F0 .176(The w)144 336 R .176 +le completions.)2.5 E F1(glob\255expand\255w)108 444 Q(ord \(C\255x *\)) +-.1 E F0 .176(The w)144 456 R .176 (ord before point is treated as a pattern for pathname e)-.1 F .176 (xpansion, and the list of matching \214le-)-.15 F .516 -(names is inserted, replacing the w)144 348 R 3.016(ord. If)-.1 F 3.016 +(names is inserted, replacing the w)144 468 R 3.016(ord. If)-.1 F 3.016 (an)3.016 G .516(umeric ar)-3.016 F .516 (gument is supplied, an asterisk is appended)-.18 F(before pathname e) -144 360 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\)) -108 372 Q F0 .923(The list of e)144 384 R .923(xpansions that w)-.15 F +144 480 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\)) +108 492 Q F0 .923(The list of e)144 504 R .923(xpansions that w)-.15 F .923(ould ha)-.1 F 1.223 -.15(ve b)-.2 H .923(een generated by).15 F F1 (glob\255expand\255w)3.423 E(ord)-.1 E F0 .923(is displayed, and)3.423 F -.872(the line is redra)144 396 R 3.372(wn. If)-.15 F 3.372(an)3.372 G +.872(the line is redra)144 516 R 3.372(wn. If)-.15 F 3.372(an)3.372 G .872(umeric ar)-3.372 F .872 (gument is supplied, an asterisk is appended before pathname)-.18 F -.15 -(ex)144 408 S(pansion.).15 E F1(dump\255functions)108 420 Q F0 .627 -(Print all of the functions and their k)144 432 R .927 -.15(ey b)-.1 H +(ex)144 528 S(pansion.).15 E F1(dump\255functions)108 540 Q F0 .627 +(Print all of the functions and their k)144 552 R .927 -.15(ey b)-.1 H .626(indings to the readline output stream.).15 F .626(If a numeric ar) 5.626 F(gu-)-.18 E -(ment is supplied, the output is formatted in such a w)144 444 Q +(ment is supplied, the output is formatted in such a w)144 564 Q (ay that it can be made part of an)-.1 E/F2 10/Times-Italic@0 SF(inputr) -2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 456 Q(ariables)-.1 E F0 -1.799(Print all of the settable readline v)144 468 R 1.799 +2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 576 Q(ariables)-.1 E F0 +1.799(Print all of the settable readline v)144 588 R 1.799 (ariables and their v)-.25 F 1.8(alues to the readline output stream.) --.25 F 1.8(If a)6.8 F .305(numeric ar)144 480 R .304 +-.25 F 1.8(If a)6.8 F .305(numeric ar)144 600 R .304 (gument is supplied, the output is formatted in such a w)-.18 F .304 -(ay that it can be made part of an)-.1 F F2(inputr)144 492 Q(c)-.37 E F0 -(\214le.)2.5 E F1(dump\255macr)108 504 Q(os)-.18 E F0 .592 -(Print all of the readline k)144 516 R .892 -.15(ey s)-.1 H .592 +(ay that it can be made part of an)-.1 F F2(inputr)144 612 Q(c)-.37 E F0 +(\214le.)2.5 E F1(dump\255macr)108 624 Q(os)-.18 E F0 .592 +(Print all of the readline k)144 636 R .892 -.15(ey s)-.1 H .592 (equences bound to macros and the strings the).15 F 3.093(yo)-.15 G -3.093(utput. If)-3.093 F 3.093(an)3.093 G(umeric)-3.093 E(ar)144 528 Q +3.093(utput. If)-3.093 F 3.093(an)3.093 G(umeric)-3.093 E(ar)144 648 Q .528(gument is supplied, the output is formatted in such a w)-.18 F .528 (ay that it can be made part of an)-.1 F F2(inputr)3.027 E(c)-.37 E F0 -(\214le.)144 540 Q F1(display\255shell\255v)108 552 Q -(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 564 Q +(\214le.)144 660 Q F1(display\255shell\255v)108 672 Q +(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 684 Q (ersion information about the current instance of)-.15 E F1(bash)2.5 E -F0(.)A F1(Pr)87 580.8 Q(ogrammable Completion)-.18 E F0 .146(When w)108 -592.8 R .147(ord completion is attempted for an ar)-.1 F .147 +F0(.)A F1(Pr)87 700.8 Q(ogrammable Completion)-.18 E F0 .146(When w)108 +712.8 R .147(ord completion is attempted for an ar)-.1 F .147 (gument to a command for which a completion speci\214cation \(a)-.18 F -F2(compspec)108 604.8 Q F0 3.829(\)h)C 1.329 +F2(compspec)108 724.8 Q F0 3.829(\)h)C 1.329 (as been de\214ned using the)-3.829 F F1(complete)3.829 E F0 -.2(bu) 3.829 G 1.329(iltin \(see).2 F/F3 9/Times-Bold@0 SF 1.329(SHELL B)3.829 F(UIL)-.09 E 1.329(TIN COMMANDS)-.828 F F0(belo)3.579 E 1.328(w\), the) --.25 F(programmable completion f)108 616.8 Q(acilities are in)-.1 E -.2 -(vo)-.4 G -.1(ke).2 G(d.).1 E .497 -(First, the command name is identi\214ed.)108 633.6 R .497 -(If the command w)5.497 F .498 -(ord is the empty string \(completion attempted at)-.1 F .234(the be)108 -645.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233 -(ompspec de\214ned with the)-2.733 F F12.733 E F0 .233(option to) -2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F .233(If a comp-) -5.233 F .481(spec has been de\214ned for that command, the compspec is \ -used to generate the list of possible completions)108 657.6 R .823 -(for the w)108 669.6 R 3.323(ord. If)-.1 F .823(the command w)3.323 F -.822(ord is a full pathname, a compspec for the full pathname is search\ -ed for)-.1 F 2.866(\214rst. If)108 681.6 R .367(no compspec is found fo\ -r the full pathname, an attempt is made to \214nd a compspec for the po\ -rtion)2.866 F(follo)108 693.6 Q .299(wing the \214nal slash.)-.25 F .298 -(If those searches do not result in a compspec, an)5.299 F 2.798(yc)-.15 -G .298(ompspec de\214ned with the)-2.798 F F12.798 E F0(option to) -108 705.6 Q F1(complete)2.5 E F0(is used as the def)2.5 E(ault.)-.1 E -.817(Once a compspec has been found, it is used to generate the list of\ - matching w)108 722.4 R 3.317(ords. If)-.1 F 3.317(ac)3.317 G .817 -(ompspec is not)-3.317 F(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E -(49)192.055 E 0 Cg EP -%%Page: 50 50 +-.25 F(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(51)188.455 E 0 Cg +EP +%%Page: 52 52 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(found, the def)108 -84 Q(ault)-.1 E/F1 10/Times-Bold@0 SF(bash)2.5 E F0 -(completion as described abo)2.5 E .3 -.15(ve u)-.15 H(nder).15 E F1 -(Completing)2.5 E F0(is performed.)2.5 E .464 -(First, the actions speci\214ed by the compspec are used.)108 100.8 R +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(programmable completion f)108 84 Q(acilities are in)-.1 E -.2(vo)-.4 G +-.1(ke).2 G(d.).1 E .497(First, the command name is identi\214ed.)108 +100.8 R .497(If the command w)5.497 F .498 +(ord is the empty string \(completion attempted at)-.1 F .234(the be)108 +112.8 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233 +(ompspec de\214ned with the)-2.733 F/F1 10/Times-Bold@0 SF2.733 E +F0 .233(option to)2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F +.233(If a comp-)5.233 F .481(spec has been de\214ned for that command, \ +the compspec is used to generate the list of possible completions)108 +124.8 R .823(for the w)108 136.8 R 3.323(ord. If)-.1 F .823 +(the command w)3.323 F .822(ord is a full pathname, a compspec for the \ +full pathname is searched for)-.1 F 2.866(\214rst. If)108 148.8 R .367(\ +no compspec is found for the full pathname, an attempt is made to \214n\ +d a compspec for the portion)2.866 F(follo)108 160.8 Q .299 +(wing the \214nal slash.)-.25 F .298 +(If those searches do not result in a compspec, an)5.299 F 2.798(yc)-.15 +G .298(ompspec de\214ned with the)-2.798 F F12.798 E F0 .056 +(option to)108 172.8 R F1(complete)2.556 E F0 .056(is used as the def) +2.556 F 2.556(ault. If)-.1 F .056(there is no def)2.556 F .056 +(ault compspec,)-.1 F F1(bash)2.556 E F0 .056(attempts alias e)2.556 F +.057(xpansion on)-.15 F .333(the command w)108 184.8 R .332(ord as a \ +\214nal resort, and attempts to \214nd a compspec for the command w)-.1 +F .332(ord from an)-.1 F 2.832(ys)-.15 G(uc-)-2.832 E(cessful e)108 +196.8 Q(xpansion.)-.15 E .817(Once a compspec has been found, it is use\ +d to generate the list of matching w)108 213.6 R 3.317(ords. If)-.1 F +3.317(ac)3.317 G .817(ompspec is not)-3.317 F(found, the def)108 225.6 Q +(ault)-.1 E F1(bash)2.5 E F0(completion as described abo)2.5 E .3 -.15 +(ve u)-.15 H(nder).15 E F1(Completing)2.5 E F0(is performed.)2.5 E .464 +(First, the actions speci\214ed by the compspec are used.)108 242.4 R .463(Only matches which are pre\214x)5.464 F .463(ed by the w)-.15 F -.463(ord being)-.1 F .595(completed are returned.)108 112.8 R .595 +.463(ord being)-.1 F .595(completed are returned.)108 254.4 R .595 (When the)5.595 F F13.095 E F0(or)3.095 E F13.095 E F0 .596 (option is used for \214lename or directory name completion, the)3.095 F -(shell v)108 124.8 Q(ariable)-.25 E/F2 9/Times-Bold@0 SF(FIGNORE)2.5 E -F0(is used to \214lter the matches.)2.25 E(An)108 141.6 Q 4.084(yc)-.15 +(shell v)108 266.4 Q(ariable)-.25 E/F2 9/Times-Bold@0 SF(FIGNORE)2.5 E +F0(is used to \214lter the matches.)2.25 E(An)108 283.2 Q 4.084(yc)-.15 G 1.584(ompletions speci\214ed by a pathname e)-4.084 F 1.584 (xpansion pattern to the)-.15 F F14.084 E F0 1.584 -(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 153.6 S +(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 295.2 S .554(rds generated by the pattern need not match the w).1 F .555 (ord being completed.)-.1 F(The)5.555 E F2(GLOBIGNORE)3.055 E F0 .555 (shell v)2.805 F(ari-)-.25 E -(able is not used to \214lter the matches, b)108 165.6 Q(ut the)-.2 E F2 -(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 182.4 Q -.321(xt, the string speci\214ed as the ar)-.15 F .321(gument to the)-.18 -F F12.821 E F0 .32(option is considered.)2.821 F .32 +(able is not used to \214lter the matches, b)108 307.2 Q(ut the)-.2 E F2 +(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 324 Q .321 +(xt, the string speci\214ed as the ar)-.15 F .321(gument to the)-.18 F +F12.821 E F0 .32(option is considered.)2.821 F .32 (The string is \214rst split using the)5.32 F .412(characters in the)108 -194.4 R F2(IFS)2.912 E F0 .412(special v)2.662 F .412 +336 R F2(IFS)2.912 E F0 .412(special v)2.662 F .412 (ariable as delimiters.)-.25 F .412(Shell quoting is honored.)5.412 F .413(Each w)5.412 F .413(ord is then e)-.1 F(xpanded)-.15 E .092 -(using brace e)108 206.4 R .092(xpansion, tilde e)-.15 F .092 +(using brace e)108 348 R .092(xpansion, tilde e)-.15 F .092 (xpansion, parameter and v)-.15 F .092(ariable e)-.25 F .091 -(xpansion, command substitution, and arith-)-.15 F 1.396(metic e)108 -218.4 R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H -(nder).15 E F2(EXP)3.896 E(ANSION)-.666 E/F3 9/Times-Roman@0 SF(.)A F0 -1.396(The results are split using the rules described)5.896 F(abo)108 -230.4 Q .51 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.71 G .21 -(rd Splitting).75 F F0 5.21(.T)C .209(he results of the e)-5.21 F .209 +(xpansion, command substitution, and arith-)-.15 F 1.396(metic e)108 360 +R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H(nder) +.15 E F2(EXP)3.896 E(ANSION)-.666 E/F3 9/Times-Roman@0 SF(.)A F0 1.396 +(The results are split using the rules described)5.896 F(abo)108 372 Q +.51 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.71 G .21(rd Splitting).75 F +F0 5.21(.T)C .209(he results of the e)-5.21 F .209 (xpansion are pre\214x-matched ag)-.15 F .209(ainst the w)-.05 F .209 -(ord being com-)-.1 F(pleted, and the matching w)108 242.4 Q +(ord being com-)-.1 F(pleted, and the matching w)108 384 Q (ords become the possible completions.)-.1 E 1.237 -(After these matches ha)108 259.2 R 1.537 -.15(ve b)-.2 H 1.237 +(After these matches ha)108 400.8 R 1.537 -.15(ve b)-.2 H 1.237 (een generated, an).15 F 3.737(ys)-.15 G 1.238 (hell function or command speci\214ed with the)-3.737 F F13.738 E -F0(and)3.738 E F13.738 E F0 3.376(options is in)108 271.2 R -.2 +F0(and)3.738 E F13.738 E F0 3.376(options is in)108 412.8 R -.2 (vo)-.4 G -.1(ke).2 G 5.875(d. When).1 F 3.375 (the command or function is in)5.875 F -.2(vo)-.4 G -.1(ke).2 G 3.375 (d, the).1 F F2(COMP_LINE)5.875 E F3(,)A F2(COMP_POINT)5.625 E F3(,)A F2 -(COMP_KEY)108 283.2 Q F3(,)A F0(and)2.407 E F2(COMP_TYPE)2.657 E F0 -.25 +(COMP_KEY)108 424.8 Q F3(,)A F0(and)2.407 E F2(COMP_TYPE)2.657 E F0 -.25 (va)2.407 G .157(riables are assigned v).25 F .157 (alues as described abo)-.25 F .457 -.15(ve u)-.15 H(nder).15 E F1 .158 (Shell V)2.658 F(ariables)-.92 E F0 5.158(.I)C(f)-5.158 E 3.486(as)108 -295.2 S .986(hell function is being in)-3.486 F -.2(vo)-.4 G -.1(ke).2 G +436.8 S .986(hell function is being in)-3.486 F -.2(vo)-.4 G -.1(ke).2 G .986(d, the).1 F F2(COMP_W)3.486 E(ORDS)-.09 E F0(and)3.236 E F2 (COMP_CW)3.486 E(ORD)-.09 E F0 -.25(va)3.236 G .986 (riables are also set.).25 F(When)5.985 E .346 -(the function or command is in)108 307.2 R -.2(vo)-.4 G -.1(ke).2 G .346 +(the function or command is in)108 448.8 R -.2(vo)-.4 G -.1(ke).2 G .346 (d, the \214rst ar).1 F .346(gument \()-.18 F F1($1)A F0 2.847(\)i)C 2.847(st)-2.847 G .347(he name of the command whose ar)-2.847 F(guments) --.18 E .264(are being completed, the second ar)108 319.2 R .264 +-.18 E .264(are being completed, the second ar)108 460.8 R .264 (gument \()-.18 F F1($2)A F0 2.764(\)i)C 2.764(st)-2.764 G .264(he w) -2.764 F .263(ord being completed, and the third ar)-.1 F .263 -(gument \()-.18 F F1($3)A F0 2.763(\)i)C(s)-2.763 E .628(the w)108 331.2 +(gument \()-.18 F F1($3)A F0 2.763(\)i)C(s)-2.763 E .628(the w)108 472.8 R .628(ord preceding the w)-.1 F .629 (ord being completed on the current command line.)-.1 F .629 -(No \214ltering of the generated)5.629 F .715(completions ag)108 343.2 R +(No \214ltering of the generated)5.629 F .715(completions ag)108 484.8 R .715(ainst the w)-.05 F .714(ord being completed is performed; the func\ tion or command has complete free-)-.1 F(dom in generating the matches.) -108 355.2 Q(An)108 372 Q 2.937(yf)-.15 G .437(unction speci\214ed with) --2.937 F F12.937 E F0 .437(is in)2.937 F -.2(vo)-.4 G -.1(ke).2 G -2.937<648c>.1 G 2.937(rst. The)-2.937 F .437(function may use an)2.937 F -2.937(yo)-.15 G 2.937(ft)-2.937 G .437(he shell f)-2.937 F .438 -(acilities, including)-.1 F(the)108 384 Q F1(compgen)2.957 E F0 -.2(bu) -2.957 G .457(iltin described belo).2 F 1.756 -.65(w, t)-.25 H 2.956(og) -.65 G .456(enerate the matches.)-2.956 F .456 -(It must put the possible completions in the)5.456 F F2(COMPREPL)108 396 -Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25 E(Ne) -108 412.8 Q .08(xt, an)-.15 F 2.58(yc)-.15 G .08 +108 496.8 Q(An)108 513.6 Q 2.937(yf)-.15 G .437 +(unction speci\214ed with)-2.937 F F12.937 E F0 .437(is in)2.937 F +-.2(vo)-.4 G -.1(ke).2 G 2.937<648c>.1 G 2.937(rst. The)-2.937 F .437 +(function may use an)2.937 F 2.937(yo)-.15 G 2.937(ft)-2.937 G .437 +(he shell f)-2.937 F .438(acilities, including)-.1 F(the)108 525.6 Q F1 +(compgen)2.957 E F0 -.2(bu)2.957 G .457(iltin described belo).2 F 1.756 +-.65(w, t)-.25 H 2.956(og).65 G .456(enerate the matches.)-2.956 F .456 +(It must put the possible completions in the)5.456 F F2(COMPREPL)108 +537.6 Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25 +E(Ne)108 554.4 Q .08(xt, an)-.15 F 2.58(yc)-.15 G .08 (ommand speci\214ed with the)-2.58 F F12.58 E F0 .081 (option is in)2.581 F -.2(vo)-.4 G -.1(ke).2 G 2.581(di).1 G 2.581(na) -2.581 G 2.581(ne)-2.581 G -.4(nv)-2.581 G .081(ironment equi).4 F -.25 -(va)-.25 G .081(lent to command sub-).25 F 2.859(stitution. It)108 424.8 +(va)-.25 G .081(lent to command sub-).25 F 2.859(stitution. It)108 566.4 R .359(should print a list of completions, one per line, to the standar\ d output.)2.859 F .358(Backslash may be used)5.359 F(to escape a ne)108 -436.8 Q(wline, if necessary)-.25 E(.)-.65 E .376 -(After all of the possible completions are generated, an)108 453.6 R +578.4 Q(wline, if necessary)-.25 E(.)-.65 E .376 +(After all of the possible completions are generated, an)108 595.2 R 2.877<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F12.877 -E F0 .377(option is applied to the)2.877 F 3.182(list. The)108 465.6 R +E F0 .377(option is applied to the)2.877 F 3.182(list. The)108 607.2 R .682(\214lter is a pattern as used for pathname e)3.182 F .681 (xpansion; a)-.15 F F1(&)3.181 E F0 .681 (in the pattern is replaced with the te)3.181 F .681(xt of)-.15 F .522 -(the w)108 477.6 R .522(ord being completed.)-.1 F 3.022(Al)5.522 G +(the w)108 619.2 R .522(ord being completed.)-.1 F 3.022(Al)5.522 G (iteral)-3.022 E F1(&)3.022 E F0 .523 (may be escaped with a backslash; the backslash is remo)3.022 F -.15(ve) --.15 G 3.023(db).15 G(efore)-3.023 E .85(attempting a match.)108 489.6 R +-.15 G 3.023(db).15 G(efore)-3.023 E .85(attempting a match.)108 631.2 R (An)5.85 E 3.35(yc)-.15 G .849 (ompletion that matches the pattern will be remo)-3.35 F -.15(ve)-.15 G 3.349(df).15 G .849(rom the list.)-3.349 F 3.349(Al)5.849 G(eading) --3.349 E F1(!)3.349 E F0(ne)108 501.6 Q -.05(ga)-.15 G .764 +-3.349 E F1(!)3.349 E F0(ne)108 643.2 Q -.05(ga)-.15 G .764 (tes the pattern; in this case an).05 F 3.264(yc)-.15 G .764 (ompletion not matching the pattern will be remo)-3.264 F -.15(ve)-.15 G -3.264(d. If).15 F(the)3.265 E F1(nocase-)3.265 E(match)108 513.6 Q F0 +3.264(d. If).15 F(the)3.265 E F1(nocase-)3.265 E(match)108 655.2 Q F0 (shell option is enabled, the match is performed without re)2.5 E -.05 (ga)-.15 G(rd to the case of alphabetic characters.).05 E(Finally)108 -530.4 Q 3.087(,a)-.65 G .887 -.15(ny p)-3.087 H .587(re\214x and suf).15 -F .587(\214x speci\214ed with the)-.25 F F13.087 E F0(and)3.087 E -F13.087 E F0 .587(options are added to each member of the com-) -3.087 F(pletion list, and the result is returned to the readline comple\ -tion code as the list of possible completions.)108 542.4 Q .246 -(If the pre)108 559.2 R .247(viously-applied actions do not generate an) --.25 F 2.747(ym)-.15 G .247(atches, and the)-2.747 F F1 .247(\255o dir) -2.747 F(names)-.15 E F0 .247(option w)2.747 F .247(as supplied to)-.1 F -F1(complete)108 571.2 Q F0(when the compspec w)2.5 E -(as de\214ned, directory name completion is attempted.)-.1 E .462 -(If the)108 588 R F1 .462(\255o plusdirs)2.962 F F0 .462(option w)2.962 -F .462(as supplied to)-.1 F F1(complete)2.962 E F0 .462 -(when the compspec w)2.962 F .462(as de\214ned, directory name com-)-.1 -F(pletion is attempted and an)108 600 Q 2.5(ym)-.15 G +672 Q 3.087(,a)-.65 G .887 -.15(ny p)-3.087 H .587(re\214x and suf).15 F +.587(\214x speci\214ed with the)-.25 F F13.087 E F0(and)3.087 E F1 +3.087 E F0 .587(options are added to each member of the com-)3.087 +F(pletion list, and the result is returned to the readline completion c\ +ode as the list of possible completions.)108 684 Q .246(If the pre)108 +700.8 R .247(viously-applied actions do not generate an)-.25 F 2.747(ym) +-.15 G .247(atches, and the)-2.747 F F1 .247(\255o dir)2.747 F(names) +-.15 E F0 .247(option w)2.747 F .247(as supplied to)-.1 F F1(complete) +108 712.8 Q F0(when the compspec w)2.5 E +(as de\214ned, directory name completion is attempted.)-.1 E 2.03 +(If the)108 729.6 R F1 2.03(\255o plusdirs)4.53 F F0 2.03(option w)4.53 +F 2.029(as supplied to)-.1 F F1(complete)4.529 E F0 2.029 +(when the compspec w)4.529 F 2.029(as de\214ned, directory name)-.1 F +(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(52)188.455 E 0 Cg EP +%%Page: 53 53 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(completion is attempted and an)108 84 Q 2.5(ym)-.15 G (atches are added to the results of the other actions.)-2.5 E .559 -(By def)108 616.8 R .559(ault, if a compspec is found, whate)-.1 F -.15 +(By def)108 100.8 R .559(ault, if a compspec is found, whate)-.1 F -.15 (ve)-.25 G 3.059(ri).15 G 3.059(tg)-3.059 G .56 (enerates is returned to the completion code as the full set)-3.059 F -.632(of possible completions.)108 628.8 R .632(The def)5.632 F(ault)-.1 -E F1(bash)3.132 E F0 .631 +.632(of possible completions.)108 112.8 R .632(The def)5.632 F(ault)-.1 +E/F1 10/Times-Bold@0 SF(bash)3.132 E F0 .631 (completions are not attempted, and the readline def)3.131 F .631 -(ault of \214le-)-.1 F .558(name completion is disabled.)108 640.8 R +(ault of \214le-)-.1 F .558(name completion is disabled.)108 124.8 R .558(If the)5.558 F F1 .559(\255o bashdefault)3.059 F F0 .559(option w) 3.059 F .559(as supplied to)-.1 F F1(complete)3.059 E F0 .559 -(when the compspec)3.059 F -.1(wa)108 652.8 S 3.172(sd).1 G .672 +(when the compspec)3.059 F -.1(wa)108 136.8 S 3.172(sd).1 G .672 (e\214ned, the)-3.172 F F1(bash)3.172 E F0(def)3.172 E .671 (ault completions are attempted if the compspec generates no matches.) --.1 F .671(If the)5.671 F F13.171 E(default)108 664.8 Q F0 1.207 +-.1 F .671(If the)5.671 F F13.171 E(default)108 148.8 Q F0 1.207 (option w)3.706 F 1.207(as supplied to)-.1 F F1(complete)3.707 E F0 1.207(when the compspec w)3.707 F 1.207(as de\214ned, readline')-.1 F 3.707(sd)-.55 G(ef)-3.707 E 1.207(ault completion)-.1 F (will be performed if the compspec \(and, if attempted, the def)108 -676.8 Q(ault)-.1 E F1(bash)2.5 E F0(completions\) generate no matches.) +160.8 Q(ault)-.1 E F1(bash)2.5 E F0(completions\) generate no matches.) 2.5 E .245(When a compspec indicates that directory name completion is \ -desired, the programmable completion func-)108 693.6 R .632(tions force\ +desired, the programmable completion func-)108 177.6 R .632(tions force\ readline to append a slash to completed names which are symbolic links\ - to directories, subject)108 705.6 R 2.762(to the v)108 717.6 R 2.762 + to directories, subject)108 189.6 R 2.762(to the v)108 201.6 R 2.762 (alue of the)-.25 F F1(mark\255dir)5.262 E(ectories)-.18 E F0 2.761 (readline v)5.262 F 2.761(ariable, re)-.25 F -.05(ga)-.15 G 2.761 -(rdless of the setting of the).05 F F1(mark-sym-)5.261 E(link)108 729.6 +(rdless of the setting of the).05 F F1(mark-sym-)5.261 E(link)108 213.6 Q(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(50)192.055 E 0 Cg EP -%%Page: 51 51 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .19 -(There is some support for dynamically modifying completions.)108 84 R -.191(This is most useful when used in combina-)5.191 F 1.33 -(tion with a def)108 96 R 1.33(ault completion speci\214ed with)-.1 F/F1 -10/Times-Bold@0 SF 1.33(complete -D)3.83 F F0 6.33(.I)C(t')-6.33 E 3.83 -(sp)-.55 G 1.33(ossible for shell functions e)-3.83 F -.15(xe)-.15 G -1.33(cuted as).15 F .93(completion handlers to indicate that completion\ - should be retried by returning an e)108 108 R .93(xit status of 124.) --.15 F .93(If a)5.93 F .1(shell function returns 124, and changes the c\ -ompspec associated with the command on which completion is)108 120 R -.665(being attempted \(supplied as the \214rst ar)108 132 R .666 +.19(There is some support for dynamically modifying completions.)108 +230.4 R .191(This is most useful when used in combina-)5.191 F 1.172 +(tion with a def)108 242.4 R 1.172(ault completion speci\214ed with)-.1 +F F1 1.172(complete \255D)3.672 F F0 6.172(.I)C(t')-6.172 E 3.672(sp) +-.55 G 1.172(ossible for shell functions e)-3.672 F -.15(xe)-.15 G 1.172 +(cuted as).15 F .93(completion handlers to indicate that completion sho\ +uld be retried by returning an e)108 254.4 R .93(xit status of 124.)-.15 +F .93(If a)5.93 F .1(shell function returns 124, and changes the compsp\ +ec associated with the command on which completion is)108 266.4 R .665 +(being attempted \(supplied as the \214rst ar)108 278.4 R .666 (gument when the function is e)-.18 F -.15(xe)-.15 G .666 (cuted\), programmable completion).15 F .084(restarts from the be)108 -144 R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc)-.25 -G .084(ompspec for that command.)-2.584 F .083(This allo)5.083 F .083 -(ws a set of)-.25 F(completions to be b)108 156 Q(uilt dynamically as c\ -ompletion is attempted, rather than being loaded all at once.)-.2 E -.15 -(Fo)108 172.8 S 2.636(ri).15 G .137 +290.4 R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc) +-.25 G .084(ompspec for that command.)-2.584 F .083(This allo)5.083 F +.083(ws a set of)-.25 F(completions to be b)108 302.4 Q(uilt dynamicall\ +y as completion is attempted, rather than being loaded all at once.)-.2 +E -.15(Fo)108 319.2 S 2.636(ri).15 G .137 (nstance, assuming that there is a library of compspecs, each k)-2.636 F .137(ept in a \214le corresponding to the name of)-.1 F -(the command, the follo)108 184.8 Q(wing def)-.25 E +(the command, the follo)108 331.2 Q(wing def)-.25 E (ault completion function w)-.1 E(ould load completions dynamically:)-.1 -E/F2 10/Courier@0 SF(_completion_loader\(\))108 201.6 Q({)108 213.6 Q 6 -(.")144 225.6 S -(/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124)-6 E(})108 -237.6 Q(complete -D -F _completion_loader -o bashdefault -o default)108 -249.6 Q/F3 10.95/Times-Bold@0 SF(HIST)72 278.4 Q(OR)-.197 E(Y)-.383 E F0 -.372(When the)108 290.4 R F1 .372(\255o history)2.872 F F0 .372 +E/F2 10/Courier@0 SF(_completion_loader\(\))108 348 Q({)108 360 Q 6(.") +144 372 S(/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124)-6 +E(})108 384 Q +(complete -D -F _completion_loader -o bashdefault -o default)108 396 Q +/F3 10.95/Times-Bold@0 SF(HIST)72 424.8 Q(OR)-.197 E(Y)-.383 E F0 .372 +(When the)108 436.8 R F1 .372(\255o history)2.872 F F0 .372 (option to the)2.872 F F1(set)2.872 E F0 -.2(bu)2.872 G .372 (iltin is enabled, the shell pro).2 F .371(vides access to the)-.15 F/F4 10/Times-Italic@0 SF .371(command history)2.871 F F0(,)A .304 -(the list of commands pre)108 302.4 R .304(viously typed.)-.25 F .304 +(the list of commands pre)108 448.8 R .304(viously typed.)-.25 F .304 (The v)5.304 F .304(alue of the)-.25 F/F5 9/Times-Bold@0 SF(HISTSIZE) 2.804 E F0 -.25(va)2.554 G .305(riable is used as the number of com-).25 -F .43(mands to sa)108 314.4 R .73 -.15(ve i)-.2 H 2.93(nah).15 G .43 +F .43(mands to sa)108 460.8 R .73 -.15(ve i)-.2 H 2.93(nah).15 G .43 (istory list.)-2.93 F .43(The te)5.43 F .429(xt of the last)-.15 F F5 (HISTSIZE)2.929 E F0 .429(commands \(def)2.679 F .429(ault 500\) is sa) -.1 F -.15(ve)-.2 G 2.929(d. The).15 F(shell)2.929 E .287 (stores each command in the history list prior to parameter and v)108 -326.4 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F5(EXP)2.787 E -(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 338.4 +472.8 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F5(EXP)2.787 E +(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 484.8 S 4.066(ta).2 G 1.565(fter history e)-4.066 F 1.565 (xpansion is performed, subject to the v)-.15 F 1.565 (alues of the shell v)-.25 F(ariables)-.25 E F5(HISTIGNORE)4.065 E F0 -(and)3.815 E F5(HISTCONTR)108 350.4 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.) +(and)3.815 E F5(HISTCONTR)108 496.8 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.) A F0 .082 (On startup, the history is initialized from the \214le named by the v) -108 367.2 R(ariable)-.25 E F5(HISTFILE)2.583 E F0(\(def)2.333 E(ault)-.1 +108 513.6 R(ariable)-.25 E F5(HISTFILE)2.583 E F0(\(def)2.333 E(ault)-.1 E F4(~/.bash_history)2.583 E F0(\).)A .315(The \214le named by the v)108 -379.2 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315 +525.6 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315 (is truncated, if necessary)2.565 F 2.815(,t)-.65 G 2.815(oc)-2.815 G .315(ontain no more than the number of)-2.815 F .658 -(lines speci\214ed by the v)108 391.2 R .658(alue of)-.25 F F5 +(lines speci\214ed by the v)108 537.6 R .658(alue of)-.25 F F5 (HISTFILESIZE)3.158 E F6(.)A F0(If)5.158 E F1(HISTFILESIZE)3.158 E F0 -.659(is unset, or set to null, a non-numeric)3.158 F -.25(va)108 403.2 S +.659(is unset, or set to null, a non-numeric)3.158 F -.25(va)108 549.6 S .142(lue, or a numeric v).25 F .142 (alue less than zero, the history \214le is not truncated.)-.25 F .142 -(When the history \214le is read, lines)5.142 F(be)108 415.2 Q 1.604 +(When the history \214le is read, lines)5.142 F(be)108 561.6 Q 1.604 (ginning with the history comment character follo)-.15 F 1.604 -(wed immediately by a digit are interpreted as time-)-.25 F .098 -(stamps for the preceding history line.)108 427.2 R .098 -(These timestamps are optionally displayed depending on the v)5.098 F -.098(alue of)-.25 F(the)108 439.2 Q F5(HISTTIMEFORMA)3.558 E(T)-.855 E -F0 -.25(va)3.309 G 3.559(riable. When).25 F 3.559(as)3.559 G 1.059 +(wed immediately by a digit are interpreted as time-)-.25 F .151 +(stamps for the follo)108 573.6 R .151(wing history line.)-.25 F .151 +(These timestamps are optionally displayed depending on the v)5.151 F +.15(alue of)-.25 F(the)108 585.6 Q F5(HISTTIMEFORMA)3.558 E(T)-.855 E F0 +-.25(va)3.309 G 3.559(riable. When).25 F 3.559(as)3.559 G 1.059 (hell with history enabled e)-3.559 F 1.059(xits, the last)-.15 F F5 ($HISTSIZE)3.559 E F0 1.059(lines are)3.309 F .159 -(copied from the history list to)108 451.2 R F5($HISTFILE)2.659 E F6(.)A +(copied from the history list to)108 597.6 R F5($HISTFILE)2.659 E F6(.)A F0 .159(If the)4.659 F F1(histappend)2.658 E F0 .158 (shell option is enabled \(see the description of)2.658 F F1(shopt)108 -463.2 Q F0(under)2.581 E F5 .081(SHELL B)2.581 F(UIL)-.09 E .081 +609.6 Q F0(under)2.581 E F5 .081(SHELL B)2.581 F(UIL)-.09 E .081 (TIN COMMANDS)-.828 F F0(belo)2.332 E .082 (w\), the lines are appended to the history \214le, otherwise the)-.25 F -.197(history \214le is o)108 475.2 R -.15(ve)-.15 G 2.697(rwritten. If) +.197(history \214le is o)108 621.6 R -.15(ve)-.15 G 2.697(rwritten. If) .15 F F5(HISTFILE)2.697 E F0 .196(is unset, or if the history \214le is\ unwritable, the history is not sa)2.447 F -.15(ve)-.2 G(d.).15 E .583 -(If the)108 487.2 R F5(HISTTIMEFORMA)3.083 E(T)-.855 E F0 -.25(va)2.834 +(If the)108 633.6 R F5(HISTTIMEFORMA)3.083 E(T)-.855 E F0 -.25(va)2.834 G .584 (riable is set, time stamps are written to the history \214le, mark).25 -F .584(ed with the his-)-.1 F 1.148(tory comment character)108 499.2 R +F .584(ed with the his-)-.1 F 1.148(tory comment character)108 645.6 R 3.648(,s)-.4 G 3.648(ot)-3.648 G(he)-3.648 E 3.648(ym)-.15 G 1.147 (ay be preserv)-3.648 F 1.147(ed across shell sessions.)-.15 F 1.147 (This uses the history comment)6.147 F 1.376 -(character to distinguish timestamps from other history lines.)108 511.2 +(character to distinguish timestamps from other history lines.)108 657.6 R 1.377(After sa)6.377 F 1.377(ving the history)-.2 F 3.877(,t)-.65 G 1.377(he history \214le is)-3.877 F .757 -(truncated to contain no more than)108 523.2 R F5(HISTFILESIZE)3.257 E +(truncated to contain no more than)108 669.6 R F5(HISTFILESIZE)3.257 E F0 3.257(lines. If)3.007 F F5(HISTFILESIZE)3.257 E F0 .757 -(is unset, or set to null, a non-)3.007 F(numeric v)108 535.2 Q +(is unset, or set to null, a non-)3.007 F(numeric v)108 681.6 Q (alue, or a numeric v)-.25 E (alue less than zero, the history \214le is not truncated.)-.25 E .298 -(The b)108 552 R .298(uiltin command)-.2 F F1(fc)2.798 E F0(\(see)2.798 -E F5 .298(SHELL B)2.798 F(UIL)-.09 E .298(TIN COMMANDS)-.828 F F0(belo) -2.549 E .299(w\) may be used to list or edit and re-e)-.25 F -.15(xe) --.15 G(-).15 E .472(cute a portion of the history list.)108 564 R(The) -5.472 E F1(history)2.972 E F0 -.2(bu)2.972 G .471 -(iltin may be used to display or modify the history list and).2 F .001 -(manipulate the history \214le.)108 576 R .001 -(When using command-line editing, search commands are a)5.001 F -.25(va) --.2 G .002(ilable in each edit-).25 F(ing mode that pro)108 588 Q -(vide access to the history list.)-.15 E 1.486(The shell allo)108 604.8 -R 1.486(ws control o)-.25 F -.15(ve)-.15 G 3.986(rw).15 G 1.486 -(hich commands are sa)-3.986 F -.15(ve)-.2 G 3.986(do).15 G 3.986(nt) --3.986 G 1.486(he history list.)-3.986 F(The)6.485 E F5(HISTCONTR)3.985 -E(OL)-.27 E F0(and)3.735 E F5(HISTIGNORE)108 616.8 Q F0 -.25(va)2.707 G -.457(riables may be set to cause the shell to sa).25 F .758 -.15(ve o) --.2 H .458(nly a subset of the commands entered.).15 F(The)5.458 E F1 -(cmdhist)108 628.8 Q F0 .75 +(The b)108 698.4 R .298(uiltin command)-.2 F F1(fc)2.798 E F0(\(see) +2.798 E F5 .298(SHELL B)2.798 F(UIL)-.09 E .298(TIN COMMANDS)-.828 F F0 +(belo)2.549 E .299(w\) may be used to list or edit and re-e)-.25 F -.15 +(xe)-.15 G(-).15 E .472(cute a portion of the history list.)108 710.4 R +(The)5.472 E F1(history)2.972 E F0 -.2(bu)2.972 G .471 +(iltin may be used to display or modify the history list and).2 F 1.603 +(manipulate the history \214le.)108 722.4 R 1.604 +(When using command-line editing, search commands are a)6.604 F -.25(va) +-.2 G 1.604(ilable in each).25 F(GNU Bash 5.0)72 768 Q(2018 December 7) +139.295 E(53)188.455 E 0 Cg EP +%%Page: 54 54 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(editing mode that pro)108 84 Q(vide access to the history list.)-.15 E +1.486(The shell allo)108 100.8 R 1.486(ws control o)-.25 F -.15(ve)-.15 +G 3.986(rw).15 G 1.486(hich commands are sa)-3.986 F -.15(ve)-.2 G 3.986 +(do).15 G 3.986(nt)-3.986 G 1.486(he history list.)-3.986 F(The)6.485 E +/F1 9/Times-Bold@0 SF(HISTCONTR)3.985 E(OL)-.27 E F0(and)3.735 E F1 +(HISTIGNORE)108 112.8 Q F0 -.25(va)2.707 G .457 +(riables may be set to cause the shell to sa).25 F .758 -.15(ve o)-.2 H +.458(nly a subset of the commands entered.).15 F(The)5.458 E/F2 10 +/Times-Bold@0 SF(cmdhist)108 124.8 Q F0 .75 (shell option, if enabled, causes the shell to attempt to sa)3.25 F 1.05 -.15(ve e)-.2 H .75(ach line of a multi-line command in).15 F 1.077 -(the same history entry)108 640.8 R 3.577(,a)-.65 G 1.077 +(the same history entry)108 136.8 R 3.577(,a)-.65 G 1.077 (dding semicolons where necessary to preserv)-3.577 F 3.577(es)-.15 G -1.077(yntactic correctness.)-3.577 F(The)6.077 E F1(lithist)3.577 E F0 -.374(shell option causes the shell to sa)108 652.8 R .674 -.15(ve t)-.2 +1.077(yntactic correctness.)-3.577 F(The)6.077 E F2(lithist)3.577 E F0 +.374(shell option causes the shell to sa)108 148.8 R .674 -.15(ve t)-.2 H .374(he command with embedded ne).15 F .373 (wlines instead of semicolons.)-.25 F .373(See the)5.373 F .318 -(description of the)108 664.8 R F1(shopt)2.818 E F0 -.2(bu)2.818 G .318 -(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F5 .318(SHELL B)2.818 F +(description of the)108 160.8 R F2(shopt)2.818 E F0 -.2(bu)2.818 G .318 +(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F1 .318(SHELL B)2.818 F (UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .319 (for information on setting and)2.568 F(unsetting shell options.)108 -676.8 Q F3(HIST)72 693.6 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E -(ANSION)-.81 E F0 .611(The shell supports a history e)108 705.6 R .611 +172.8 Q/F3 10.95/Times-Bold@0 SF(HIST)72 189.6 Q(OR)-.197 E 2.738(YE) +-.383 G(XP)-2.738 E(ANSION)-.81 E F0 .611 +(The shell supports a history e)108 201.6 R .611 (xpansion feature that is similar to the history e)-.15 F .61 -(xpansion in)-.15 F F1(csh.)3.11 E F0 .61(This section)5.61 F .87 -(describes what syntax features are a)108 717.6 R -.25(va)-.2 G 3.371 +(xpansion in)-.15 F F2(csh)3.11 E F0 5.61(.T)C .61(his section)-5.61 F +.87(describes what syntax features are a)108 213.6 R -.25(va)-.2 G 3.371 (ilable. This).25 F .871(feature is enabled by def)3.371 F .871 (ault for interacti)-.1 F 1.171 -.15(ve s)-.25 H .871(hells, and).15 F -2.014(can be disabled using the)108 729.6 R F1(+H)4.514 E F0 2.014 -(option to the)4.514 F F1(set)4.514 E F0 -.2(bu)4.514 G 2.014 -(iltin command \(see).2 F F5 2.013(SHELL B)4.513 F(UIL)-.09 E 2.013 -(TIN COMMANDS)-.828 F F0(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E -(51)192.055 E 0 Cg EP -%%Page: 52 52 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(belo)108 84 Q 2.5 -(w\). Non-interacti)-.25 F .3 -.15(ve s)-.25 H -(hells do not perform history e).15 E(xpansion by def)-.15 E(ault.)-.1 E -1.305(History e)108 100.8 R 1.305(xpansions introduce w)-.15 F 1.306(or\ -ds from the history list into the input stream, making it easy to repea\ -t)-.1 F .21(commands, insert the ar)108 112.8 R .21(guments to a pre) --.18 F .209 +2.014(can be disabled using the)108 225.6 R F2(+H)4.514 E F0 2.014 +(option to the)4.514 F F2(set)4.514 E F0 -.2(bu)4.514 G 2.014 +(iltin command \(see).2 F F1 2.013(SHELL B)4.513 F(UIL)-.09 E 2.013 +(TIN COMMANDS)-.828 F F0(belo)108 237.6 Q 2.5(w\). Non-interacti)-.25 F +.3 -.15(ve s)-.25 H(hells do not perform history e).15 E +(xpansion by def)-.15 E(ault.)-.1 E 1.305(History e)108 254.4 R 1.305 +(xpansions introduce w)-.15 F 1.306(ords from the history list into the\ + input stream, making it easy to repeat)-.1 F .21 +(commands, insert the ar)108 266.4 R .21(guments to a pre)-.18 F .209 (vious command into the current input line, or \214x errors in pre)-.25 -F(vious)-.25 E(commands quickly)108 124.8 Q(.)-.65 E 1.163(History e)108 -141.6 R 1.163(xpansion is performed immediately after a complete line i\ -s read, before the shell breaks it into)-.15 F -.1(wo)108 153.6 S 3.2 -(rds. It).1 F(tak)3.2 E .7(es place in tw)-.1 F 3.2(op)-.1 G 3.2 -(arts. The)-3.2 F .7 -(\214rst is to determine which line from the history list to use during) -3.2 F 4.367(substitution. The)108 165.6 R 1.868(second is to select por\ -tions of that line for inclusion into the current one.)4.367 F 1.868 -(The line)6.868 F .663(selected from the history is the)108 177.6 R/F1 -10/Times-Italic@0 SF -.15(ev)3.163 G(ent).15 E F0 3.163(,a)C .663 -(nd the portions of that line that are acted upon are)-3.163 F F1(wor) -3.162 E(ds)-.37 E F0 5.662(.V)C(arious)-6.772 E F1(modi\214er)108 189.6 -Q(s)-.1 E F0 .226(are a)2.726 F -.25(va)-.2 G .226 -(ilable to manipulate the selected w).25 F 2.726(ords. The)-.1 F .227 -(line is brok)2.726 F .227(en into w)-.1 F .227(ords in the same f)-.1 F -(ashion)-.1 E .352(as when reading input, so that se)108 201.6 R -.15 -(ve)-.25 G(ral).15 E F1(metac)2.852 E(har)-.15 E(acter)-.15 E F0 .351 -(-separated w)B .351(ords surrounded by quotes are considered)-.1 F .624 -(one w)108 213.6 R 3.124(ord. History)-.1 F -.15(ex)3.124 G .624 -(pansions are introduced by the appearance of the history e).15 F .625 -(xpansion character)-.15 F 3.125(,w)-.4 G(hich)-3.125 E(is)108 225.6 Q -/F2 10/Times-Bold@0 SF(!)3.511 E F0 .178(by def)3.511 F 2.678 -(ault. Only)-.1 F .178(backslash \()2.678 F F2(\\).833 E F0 2.678(\)a) -.833 G .178(nd single quotes can quote the history e)-2.678 F .177 -(xpansion character)-.15 F 2.677(,b)-.4 G .177(ut the his-)-2.877 F .67 -(tory e)108 237.6 R .67(xpansion character is also treated as quoted if\ - it immediately precedes the closing double quote in a)-.15 F -(double-quoted string.)108 249.6 Q(Se)108 266.4 Q -.15(ve)-.25 G .03 +F(vious)-.25 E(commands quickly)108 278.4 Q(.)-.65 E 1.163(History e)108 +295.2 R 1.163(xpansion is performed immediately after a complete line i\ +s read, before the shell breaks it into)-.15 F -.1(wo)108 307.2 S .252 +(rds, and is performed on each line indi).1 F .251 +(vidually without taking quoting on pre)-.25 F .251 +(vious lines into account.)-.25 F(It)5.251 E(tak)108 319.2 Q .145 +(es place in tw)-.1 F 2.645(op)-.1 G 2.646(arts. The)-2.645 F .146(\214\ +rst is to determine which line from the history list to use during subs\ +titution.)2.646 F .766(The second is to select portions of that line fo\ +r inclusion into the current one.)108 331.2 R .766 +(The line selected from the)5.766 F .253(history is the)108 343.2 R/F4 +10/Times-Italic@0 SF -.15(ev)2.753 G(ent).15 E F0 2.753(,a)C .253 +(nd the portions of that line that are acted upon are)-2.753 F F4(wor) +2.753 E(ds)-.37 E F0 5.253(.V)C(arious)-6.363 E F4(modi\214er)2.754 E(s) +-.1 E F0 .254(are a)2.754 F -.25(va)-.2 G(il-).25 E .539 +(able to manipulate the selected w)108 355.2 R 3.039(ords. The)-.1 F +.538(line is brok)3.038 F .538(en into w)-.1 F .538(ords in the same f) +-.1 F .538(ashion as when reading)-.1 F .572(input, so that se)108 367.2 +R -.15(ve)-.25 G(ral).15 E F4(metac)3.072 E(har)-.15 E(acter)-.15 E F0 +.572(-separated w)B .572(ords surrounded by quotes are considered one w) +-.1 F 3.073(ord. His-)-.1 F .356(tory e)108 379.2 R .355 +(xpansions are introduced by the appearance of the history e)-.15 F .355 +(xpansion character)-.15 F 2.855(,w)-.4 G .355(hich is)-2.855 F F2(!) +3.688 E F0 .355(by def)3.688 F(ault.)-.1 E .79(Only backslash \()108 +391.2 R F2(\\).833 E F0 3.29(\)a).833 G .79 +(nd single quotes can quote the history e)-3.29 F .79 +(xpansion character)-.15 F 3.291(,b)-.4 G .791(ut the history e)-3.491 F +(xpansion)-.15 E .789(character is also treated as quoted if it immedia\ +tely precedes the closing double quote in a double-quoted)108 403.2 R +(string.)108 415.2 Q(Se)108 432 Q -.15(ve)-.25 G .03 (ral characters inhibit history e).15 F .03 (xpansion if found immediately follo)-.15 F .03(wing the history e)-.25 -F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 278.4 T -3.162(ni).25 G 3.162(fi)-3.162 G 3.162(ti)-3.162 G 3.162(su)-3.162 G -.662(nquoted: space, tab, ne)-3.162 F .662(wline, carriage return, and) --.25 F F2(=)3.162 E F0 5.662(.I)C 3.162(ft)-5.662 G(he)-3.162 E F2 -(extglob)3.162 E F0 .662(shell option is enabled,)3.162 F F2(\()3.163 E -F0(will also inhibit e)108 290.4 Q(xpansion.)-.15 E(Se)108 307.2 Q -.15 -(ve)-.25 G .11(ral shell options settable with the).15 F F2(shopt)2.61 E -F0 -.2(bu)2.61 G .109(iltin may be used to tailor the beha).2 F .109 -(vior of history e)-.2 F(xpansion.)-.15 E 1.142(If the)108 319.2 R F2 +F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 444 T 3.163 +(ni).25 G 3.163(fi)-3.163 G 3.162(ti)-3.163 G 3.162(su)-3.162 G .662 +(nquoted: space, tab, ne)-3.162 F .662(wline, carriage return, and)-.25 +F F2(=)3.162 E F0 5.662(.I)C 3.162(ft)-5.662 G(he)-3.162 E F2(extglob) +3.162 E F0 .662(shell option is enabled,)3.162 F F2(\()3.162 E F0 +(will also inhibit e)108 456 Q(xpansion.)-.15 E(Se)108 472.8 Q -.15(ve) +-.25 G .109(ral shell options settable with the).15 F F2(shopt)2.609 E +F0 -.2(bu)2.609 G .11(iltin may be used to tailor the beha).2 F .11 +(vior of history e)-.2 F(xpansion.)-.15 E 1.143(If the)108 484.8 R F2 (histv)3.643 E(erify)-.1 E F0 1.143 (shell option is enabled \(see the description of the)3.643 F F2(shopt) 3.643 E F0 -.2(bu)3.643 G 1.143(iltin belo).2 F 1.143(w\), and)-.25 F F2 --.18(re)3.643 G(adline).18 E F0(is)3.643 E .461(being used, history sub\ -stitutions are not immediately passed to the shell parser)108 331.2 R -5.46(.I)-.55 G .46(nstead, the e)-5.46 F .46(xpanded line)-.15 F 1.515 -(is reloaded into the)108 343.2 R F2 -.18(re)4.015 G(adline).18 E F0 -1.515(editing b)4.015 F(uf)-.2 E 1.516(fer for further modi\214cation.) --.25 F(If)6.516 E F2 -.18(re)4.016 G(adline).18 E F0 1.516 -(is being used, and the)4.016 F F2(histr)108 355.2 Q(eedit)-.18 E F0 -1.202(shell option is enabled, a f)3.702 F 1.202 +-.18(re)3.643 G(adline).18 E F0(is)3.642 E .461(being used, history sub\ +stitutions are not immediately passed to the shell parser)108 496.8 R +5.461(.I)-.55 G .461(nstead, the e)-5.461 F .461(xpanded line)-.15 F +1.516(is reloaded into the)108 508.8 R F2 -.18(re)4.016 G(adline).18 E +F0 1.516(editing b)4.016 F(uf)-.2 E 1.516 +(fer for further modi\214cation.)-.25 F(If)6.516 E F2 -.18(re)4.015 G +(adline).18 E F0 1.515(is being used, and the)4.015 F F2(histr)108 520.8 +Q(eedit)-.18 E F0 1.202(shell option is enabled, a f)3.702 F 1.202 (ailed history substitution will be reloaded into the)-.1 F F2 -.18(re) -3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 367.2 S -.25(ff).2 G -1.16(er for correction.).25 F(The)6.16 E F23.66 E F0 1.16 -(option to the)3.66 F F2(history)3.66 E F0 -.2(bu)3.661 G 1.161 -(iltin command may be used to see what a history).2 F -.15(ex)108 379.2 -S .056(pansion will do before using it.).15 F(The)5.056 E F22.556 -E F0 .056(option to the)2.556 F F2(history)2.555 E F0 -.2(bu)2.555 G -.055(iltin may be used to add commands to the).2 F -(end of the history list without actually e)108 391.2 Q -.15(xe)-.15 G +3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 532.8 S -.25(ff).2 G +1.161(er for correction.).25 F(The)6.161 E F23.661 E F0 1.161 +(option to the)3.661 F F2(history)3.661 E F0 -.2(bu)3.661 G 1.16 +(iltin command may be used to see what a history).2 F -.15(ex)108 544.8 +S .055(pansion will do before using it.).15 F(The)5.055 E F22.555 +E F0 .055(option to the)2.555 F F2(history)2.556 E F0 -.2(bu)2.556 G +.056(iltin may be used to add commands to the).2 F +(end of the history list without actually e)108 556.8 Q -.15(xe)-.15 G (cuting them, so that the).15 E 2.5(ya)-.15 G(re a)-2.5 E -.25(va)-.2 G -(ilable for subsequent recall.).25 E 2.2(The shell allo)108 408 R 2.2 +(ilable for subsequent recall.).25 E 2.2(The shell allo)108 573.6 R 2.2 (ws control of the v)-.25 F 2.2(arious characters used by the history e) --.25 F 2.2(xpansion mechanism \(see the)-.15 F 1.147(description of)108 -420 R F2(histchars)3.647 E F0(abo)3.647 E 1.447 -.15(ve u)-.15 H(nder) -.15 E F2 1.147(Shell V)3.647 F(ariables)-.92 E F0 3.646(\). The)B 1.146 +-.25 F 2.2(xpansion mechanism \(see the)-.15 F 1.146(description of)108 +585.6 R F2(histchars)3.646 E F0(abo)3.646 E 1.446 -.15(ve u)-.15 H(nder) +.15 E F2 1.146(Shell V)3.646 F(ariables)-.92 E F0 3.646(\). The)B 1.147 (shell uses the history comment character to)3.646 F -(mark history timestamps when writing the history \214le.)108 432 Q F2 -(Ev)87 448.8 Q(ent Designators)-.1 E F0 .204(An e)108 460.8 R -.15(ve) +(mark history timestamps when writing the history \214le.)108 597.6 Q F2 +(Ev)87 614.4 Q(ent Designators)-.1 E F0 .205(An e)108 626.4 R -.15(ve) -.25 G .204(nt designator is a reference to a command line entry in the\ - history list.).15 F .205(Unless the reference is abso-)5.204 F(lute, e) -108 472.8 Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5 -(ot).15 G(he current position in the history list.)-2.5 E F2(!)108 489.6 -Q F0 1.608(Start a history substitution, e)144 489.6 R 1.608 + history list.).15 F .204(Unless the reference is abso-)5.204 F(lute, e) +108 638.4 Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5 +(ot).15 G(he current position in the history list.)-2.5 E F2(!)108 655.2 +Q F0 1.607(Start a history substitution, e)144 655.2 R 1.607 (xcept when follo)-.15 F 1.607(wed by a)-.25 F F2(blank)4.107 E F0 4.107 -(,n)C -.25(ew)-4.107 G 1.607(line, carriage return, = or \().25 F -(\(when the)144 501.6 Q F2(extglob)2.5 E F0 +(,n)C -.25(ew)-4.107 G 1.608(line, carriage return, = or \().25 F +(\(when the)144 667.2 Q F2(extglob)2.5 E F0 (shell option is enabled using the)2.5 E F2(shopt)2.5 E F0 -.2(bu)2.5 G -(iltin\).).2 E F2(!)108 513.6 Q F1(n)A F0(Refer to command line)144 -513.6 Q F1(n)2.5 E F0(.).24 E F2<21ad>108 525.6 Q F1(n)A F0 -(Refer to the current command minus)144 525.6 Q F1(n)2.5 E F0(.).24 E F2 -(!!)108 537.6 Q F0(Refer to the pre)144 537.6 Q(vious command.)-.25 E -(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 549.6 Q F1(string) +(iltin\).).2 E F2(!)108 679.2 Q F4(n)A F0(Refer to command line)144 +679.2 Q F4(n)2.5 E F0(.).24 E F2<21ad>108 691.2 Q F4(n)A F0 +(Refer to the current command minus)144 691.2 Q F4(n)2.5 E F0(.).24 E F2 +(!!)108 703.2 Q F0(Refer to the pre)144 703.2 Q(vious command.)-.25 E +(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 715.2 Q F4(string) A F0 .865(Refer to the most recent command preceding the current positi\ -on in the history list starting with)144 549.6 R F1(string)144 561.6 Q -F0(.).22 E F2(!?)108 573.6 Q F1(string)A F2([?])A F0 1.503(Refer to the\ - most recent command preceding the current position in the history list\ - containing)144 585.6 R F1(string)144 597.6 Q F0 5(.T).22 G(he trailing) --5 E F2(?)2.5 E F0(may be omitted if)2.5 E F1(string)2.84 E F0(is follo) -2.72 E(wed immediately by a ne)-.25 E(wline.)-.25 E/F3 12/Times-Bold@0 -SF(^)108 614.6 Q F1(string1)-5 I F3(^)5 I F1(string2)-5 I F3(^)5 I F0 -.783(Quick substitution.)144 621.6 R .783(Repeat the pre)5.783 F .784 -(vious command, replacing)-.25 F F1(string1)3.624 E F0(with)3.284 E F1 -(string2)3.284 E F0 5.784(.E).02 G(qui)-5.784 E -.25(va)-.25 G .784 -(lent to).25 F -.74(``)144 633.6 S(!!:s/).74 E F1(string1)A F0(/)A F1 -(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F2(Modi\214ers)2.5 E F0 -(belo)2.5 E(w\).)-.25 E F2(!#)108 645.6 Q F0 -(The entire command line typed so f)144 645.6 Q(ar)-.1 E(.)-.55 E F2 --.75(Wo)87 662.4 S(rd Designators).75 E F0 -.8(Wo)108 674.4 S 1.314 -(rd designators are used to select desired w).8 F 1.314(ords from the e) --.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)3.814 E F0 1.313 -(separates the e)3.813 F -.15(ve)-.25 G 1.313(nt speci\214cation).15 F -.529(from the w)108 686.4 R .529(ord designator)-.1 F 5.529(.I)-.55 G -3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529 -(ord designator be)-.1 F .529(gins with a)-.15 F F2(^)3.029 E F0(,)A F2 -($)3.029 E F0(,)A F2(*)3.029 E F0(,)A F23.029 E F0 3.029(,o)C(r) --3.029 E F2(%)3.029 E F0 5.53(.W)C(ords)-6.33 E 1.301 -(are numbered from the be)108 698.4 R 1.301 -(ginning of the line, with the \214rst w)-.15 F 1.3 -(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.3 G 1.3(rds are).8 F -(inserted into the current line separated by single spaces.)108 710.4 Q -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(52)192.055 E 0 Cg EP -%%Page: 53 53 +on in the history list starting with)144 715.2 R F4(string)144 727.2 Q +F0(.).22 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(54)188.455 E +0 Cg EP +%%Page: 55 55 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF 2.5(0\()108 84 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 96 Q 2.5 -(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E/F2 -10/Times-Italic@0 SF(n)108.36 108 Q F0(The)144 108 Q F2(n)2.5 E F0(th w) -A(ord.)-.1 E F1(^)108 120 Q F0(The \214rst ar)144 120 Q 2.5 -(gument. That)-.18 F(is, w)2.5 E(ord 1.)-.1 E F1($)108 132 Q F0 .063 -(The last w)144 132 R 2.563(ord. This)-.1 F .063(is usually the last ar) -2.563 F .064(gument, b)-.18 F .064(ut will e)-.2 F .064 -(xpand to the zeroth w)-.15 F .064(ord if there is only)-.1 F(one w)144 -144 Q(ord in the line.)-.1 E F1(%)108 156 Q F0(The w)144 156 Q -(ord matched by the most recent `?)-.1 E F2(string)A F0(?' search.)A F2 -(x)108.77 168 Q F1A F2(y)A F0 2.5(Ar)144 168 S(ange of w)-2.5 E -(ords; `\255)-.1 E F2(y)A F0 2.5('a)C(bbre)-2.5 E(viates `0\255)-.25 E -F2(y)A F0('.)A F1(*)108 180 Q F0 .316(All of the w)144 180 R .316 -(ords b)-.1 F .316(ut the zeroth.)-.2 F .315(This is a synon)5.315 F -.315(ym for `)-.15 F F2(1\255$)A F0 2.815('. It)B .315 -(is not an error to use)2.815 F F1(*)2.815 E F0 .315(if there is)2.815 F -(just one w)144 192 Q(ord in the e)-.1 E -.15(ve)-.25 G -(nt; the empty string is returned in that case.).15 E F1(x*)108 204 Q F0 -(Abbre)144 204 Q(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1<78ad>108 216 Q -F0(Abbre)144 216 Q(viates)-.25 E F2(x\255$)2.5 E F0(lik)2.5 E(e)-.1 E F1 -(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E(If a w)108 -232.8 Q(ord designator is supplied without an e)-.1 E -.15(ve)-.25 G -(nt speci\214cation, the pre).15 E(vious command is used as the e)-.25 E --.15(ve)-.25 G(nt.).15 E F1(Modi\214ers)87 249.6 Q F0 .183 -(After the optional w)108 261.6 R .183(ord designator)-.1 F 2.683(,t)-.4 -G .184(here may appear a sequence of one or more of the follo)-2.683 F -.184(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 273.6 Q F1(h) -108 290.4 Q F0(Remo)144 290.4 Q .3 -.15(ve a t)-.15 H +SF(!?)108 84 Q/F2 10/Times-Italic@0 SF(string)A F1([?])A F0 1.503(Refer\ + to the most recent command preceding the current position in the histo\ +ry list containing)144 96 R F2(string)144 108 Q F0 5(.T).22 G +(he trailing)-5 E F1(?)2.5 E F0(may be omitted if)2.5 E F2(string)2.84 E +F0(is follo)2.72 E(wed immediately by a ne)-.25 E(wline.)-.25 E/F3 12 +/Times-Bold@0 SF(^)108 125 Q F2(string1)-5 I F3(^)5 I F2(string2)-5 I F3 +(^)5 I F0 .784(Quick substitution.)144 132 R .784(Repeat the pre)5.784 F +.784(vious command, replacing)-.25 F F2(string1)3.624 E F0(with)3.283 E +F2(string2)3.283 E F0 5.783(.E).02 G(qui)-5.783 E -.25(va)-.25 G .783 +(lent to).25 F -.74(``)144 144 S(!!:s/).74 E F2(string1)A F0(/)A F2 +(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F1(Modi\214ers)2.5 E F0 +(belo)2.5 E(w\).)-.25 E F1(!#)108 156 Q F0 +(The entire command line typed so f)144 156 Q(ar)-.1 E(.)-.55 E F1 -.75 +(Wo)87 172.8 S(rd Designators).75 E F0 -.8(Wo)108 184.8 S 1.313 +(rd designators are used to select desired w).8 F 1.314(ords from the e) +-.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F1(:)3.814 E F0 1.314 +(separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation).15 F +.53(from the w)108 196.8 R .529(ord designator)-.1 F 5.529(.I)-.55 G +3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529 +(ord designator be)-.1 F .529(gins with a)-.15 F F1(^)3.029 E F0(,)A F1 +($)3.029 E F0(,)A F1(*)3.029 E F0(,)A F13.029 E F0 3.029(,o)C(r) +-3.029 E F1(%)3.029 E F0 5.529(.W)C(ords)-6.329 E 1.3 +(are numbered from the be)108 208.8 R 1.3 +(ginning of the line, with the \214rst w)-.15 F 1.301 +(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.301 G 1.301(rds are).8 +F(inserted into the current line separated by single spaces.)108 220.8 Q +F1 2.5(0\()108 237.6 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 249.6 Q +2.5(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E +F2(n)108.36 261.6 Q F0(The)144 261.6 Q F2(n)2.5 E F0(th w)A(ord.)-.1 E +F1(^)108 273.6 Q F0(The \214rst ar)144 273.6 Q 2.5(gument. That)-.18 F +(is, w)2.5 E(ord 1.)-.1 E F1($)108 285.6 Q F0 .064(The last w)144 285.6 +R 2.564(ord. This)-.1 F .064(is usually the last ar)2.564 F .064 +(gument, b)-.18 F .064(ut will e)-.2 F .064(xpand to the zeroth w)-.15 F +.063(ord if there is only)-.1 F(one w)144 297.6 Q(ord in the line.)-.1 E +F1(%)108 309.6 Q F0(The w)144 309.6 Q(ord matched by the most recent `?) +-.1 E F2(string)A F0(?' search.)A F2(x)108.77 321.6 Q F1A F2(y)A F0 +2.5(Ar)144 321.6 S(ange of w)-2.5 E(ords; `\255)-.1 E F2(y)A F0 2.5('a)C +(bbre)-2.5 E(viates `0\255)-.25 E F2(y)A F0('.)A F1(*)108 333.6 Q F0 +.315(All of the w)144 333.6 R .315(ords b)-.1 F .315(ut the zeroth.)-.2 +F .315(This is a synon)5.315 F .315(ym for `)-.15 F F2(1\255$)A F0 2.815 +('. It)B .315(is not an error to use)2.815 F F1(*)2.816 E F0 .316 +(if there is)2.816 F(just one w)144 345.6 Q(ord in the e)-.1 E -.15(ve) +-.25 G(nt; the empty string is returned in that case.).15 E F1(x*)108 +357.6 Q F0(Abbre)144 357.6 Q(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1 +<78ad>108 369.6 Q F0(Abbre)144 369.6 Q(viates)-.25 E F2(x\255$)2.5 E F0 +(lik)2.5 E(e)-.1 E F1(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E +(ord.)-.1 E(If a w)108 386.4 Q(ord designator is supplied without an e) +-.1 E -.15(ve)-.25 G(nt speci\214cation, the pre).15 E +(vious command is used as the e)-.25 E -.15(ve)-.25 G(nt.).15 E F1 +(Modi\214ers)87 403.2 Q F0 .184(After the optional w)108 415.2 R .184 +(ord designator)-.1 F 2.684(,t)-.4 G .183 +(here may appear a sequence of one or more of the follo)-2.684 F .183 +(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 427.2 Q F1(h)108 +444 Q F0(Remo)144 444 Q .3 -.15(ve a t)-.15 H (railing \214lename component, lea).15 E(ving only the head.)-.2 E F1(t) -108 302.4 Q F0(Remo)144 302.4 Q .3 -.15(ve a)-.15 H +108 456 Q F0(Remo)144 456 Q .3 -.15(ve a)-.15 H (ll leading \214lename components, lea).15 E(ving the tail.)-.2 E F1(r) -108 314.4 Q F0(Remo)144 314.4 Q .3 -.15(ve a t)-.15 H(railing suf).15 E +108 468 Q F0(Remo)144 468 Q .3 -.15(ve a t)-.15 H(railing suf).15 E (\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E -(ving the basename.)-.2 E F1(e)108 326.4 Q F0(Remo)144 326.4 Q .3 -.15 -(ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 -338.4 Q F0(Print the ne)144 338.4 Q 2.5(wc)-.25 G(ommand b)-2.5 E -(ut do not e)-.2 E -.15(xe)-.15 G(cute it.).15 E F1(q)108 350.4 Q F0 -(Quote the substituted w)144 350.4 Q -(ords, escaping further substitutions.)-.1 E F1(x)108 362.4 Q F0 -(Quote the substituted w)144 362.4 Q(ords as with)-.1 E F1(q)2.5 E F0 -2.5(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks)2.5 E F0(and ne) -2.5 E(wlines.)-.25 E F1(s/)108 374.4 Q F2(old)A F1(/)A F2(ne)A(w)-.15 E -F1(/)A F0(Substitute)144 386.4 Q F2(ne)3.082 E(w)-.15 E F0 .221 -(for the \214rst occurrence of)3.032 F F2(old)2.951 E F0 .221(in the e) +(ving the basename.)-.2 E F1(e)108 480 Q F0(Remo)144 480 Q .3 -.15(ve a) +-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 492 Q +F0(Print the ne)144 492 Q 2.5(wc)-.25 G(ommand b)-2.5 E(ut do not e)-.2 +E -.15(xe)-.15 G(cute it.).15 E F1(q)108 504 Q F0 +(Quote the substituted w)144 504 Q +(ords, escaping further substitutions.)-.1 E F1(x)108 516 Q F0 +(Quote the substituted w)144 516 Q(ords as with)-.1 E F1(q)2.5 E F0 2.5 +(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks)2.5 E F0(and ne)2.5 +E(wlines.)-.25 E F1(s/)108 528 Q F2(old)A F1(/)A F2(ne)A(w)-.15 E F1(/)A +F0(Substitute)144 540 Q F2(ne)3.081 E(w)-.15 E F0 .221 +(for the \214rst occurrence of)3.031 F F2(old)2.951 E F0 .221(in the e) 3.491 F -.15(ve)-.25 G .221(nt line.).15 F(An)5.221 E 2.721(yd)-.15 G -.221(elimiter can be used in place)-2.721 F .616(of /.)144 398.4 R .617 +.221(elimiter can be used in place)-2.721 F .617(of /.)144 552 R .617 (The \214nal delimiter is optional if it is the last character of the e) -5.616 F -.15(ve)-.25 G .617(nt line.).15 F .617(The delimiter may)5.617 -F .666(be quoted in)144 410.4 R F2(old)3.396 E F0(and)3.936 E F2(ne) -3.526 E(w)-.15 E F0 .666(with a single backslash.)3.476 F .666 +5.617 F -.15(ve)-.25 G .617(nt line.).15 F .616(The delimiter may)5.616 +F .666(be quoted in)144 564 R F2(old)3.396 E F0(and)3.936 E F2(ne)3.526 +E(w)-.15 E F0 .666(with a single backslash.)3.476 F .666 (If & appears in)5.666 F F2(ne)3.166 E(w)-.15 E F0 3.166(,i).31 G 3.166 (ti)-3.166 G 3.166(sr)-3.166 G .666(eplaced by)-3.166 F F2(old)3.166 E -F0 5.666(.A).77 G .274(single backslash will quote the &.)144 422.4 R -(If)5.274 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544 -F F2(old)3.005 E F0 .275(substituted, or)3.545 F 2.775(,i)-.4 G 2.775 -(fn)-2.775 G 2.775(op)-2.775 G(re)-2.775 E(vi-)-.25 E -(ous history substitutions took place, the last)144 434.4 Q F2(string) -2.84 E F0(in a)2.72 E F1(!?)2.5 E F2(string)A F1([?])A F0(search.)5 E F1 -(&)108 446.4 Q F0(Repeat the pre)144 446.4 Q(vious substitution.)-.25 E -F1(g)108 458.4 Q F0 .398(Cause changes to be applied o)144 458.4 R -.15 -(ve)-.15 G 2.898(rt).15 G .398(he entire e)-2.898 F -.15(ve)-.25 G .398 -(nt line.).15 F .397(This is used in conjunction with `)5.398 F F1(:s)A -F0 2.897('\()C(e.g.,)-2.897 E(`)144 470.4 Q F1(:gs/)A F2(old)A F1(/)A F2 -(ne)A(w)-.15 E F1(/)A F0 1.218('\) or `)B F1(:&)A F0 3.718('. If)B 1.218 -(used with `)3.718 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.219 -(elimiter can be used in place of /, and the \214nal)-3.718 F .09 -(delimiter is optional if it is the last character of the e)144 482.4 R --.15(ve)-.25 G .089(nt line.).15 F(An)5.089 E F1(a)2.589 E F0 .089 -(may be used as a synon)2.589 F .089(ym for)-.15 F F1(g)144 494.4 Q F0 -(.)A F1(G)108 506.4 Q F0(Apply the follo)144 506.4 Q(wing `)-.25 E F1(s) -A F0 2.5('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15 -(ve)-.25 G(nt line.).15 E/F3 10.95/Times-Bold@0 SF(SHELL B)72 523.2 Q -(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .062 -(Unless otherwise noted, each b)108 535.2 R .062(uiltin command documen\ -ted in this section as accepting options preceded by)-.2 F F1108 -547.2 Q F0(accepts)2.534 E F12.534 E F0 .034 -(to signify the end of the options.)2.534 F(The)5.034 E F1(:)2.534 E F0 -(,)A F1(true)2.534 E F0(,)A F1(false)2.534 E F0 2.534(,a)C(nd)-2.534 E -F1(test)2.534 E F0 -.2(bu)2.534 G .033(iltins do not accept options and) -.2 F 1.548(do not treat)108 559.2 R F14.048 E F0(specially)4.048 E -6.549(.T)-.65 G(he)-6.549 E F1(exit)4.049 E F0(,)A F1(logout)4.049 E F0 -(,)A F1 -.18(re)4.049 G(tur).18 E(n)-.15 E F0(,)A F1(br)4.049 E(eak)-.18 -E F0(,)A F1(continue)4.049 E F0(,)A F1(let)4.049 E F0 4.049(,a)C(nd) --4.049 E F1(shift)4.049 E F0 -.2(bu)4.049 G 1.549(iltins accept and).2 F -.261(process ar)108 571.2 R .261(guments be)-.18 F .261(ginning with) --.15 F F12.761 E F0 .261(without requiring)2.761 F F12.761 E -F0 5.261(.O)C .261(ther b)-5.261 F .26(uiltins that accept ar)-.2 F .26 -(guments b)-.18 F .26(ut are not)-.2 F 1.154 -(speci\214ed as accepting options interpret ar)108 583.2 R 1.154 -(guments be)-.18 F 1.154(ginning with)-.15 F F13.654 E F0 1.154 -(as in)3.654 F -.25(va)-.4 G 1.154(lid options and require).25 F F1 -3.654 E F0(to)3.654 E(pre)108 595.2 Q -.15(ve)-.25 G -(nt this interpretation.).15 E F1(:)108 613.2 Q F0([)2.5 E F2(ar)A -(guments)-.37 E F0(])A .452(No ef)144 625.2 R .452 -(fect; the command does nothing be)-.25 F .452(yond e)-.15 F(xpanding) --.15 E F2(ar)3.282 E(guments)-.37 E F0 .451(and performing an)3.221 F -2.951(ys)-.15 G(peci\214ed)-2.951 E 2.5(redirections. The)144 637.2 R -(return status is zero.)2.5 E F1(.)110.5 654 Q F2(\214lename)6.666 E F0 -([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 666 Q(ce)-.18 E F2 -(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.02 -(Read and e)144 678 R -.15(xe)-.15 G 1.02(cute commands from).15 F F2 -(\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02 -(vironment and return the e)-.4 F(xit)-.15 E 1.458 -(status of the last command e)144 690 R -.15(xe)-.15 G 1.458(cuted from) -.15 F F2(\214lename)3.958 E F0 6.458(.I).18 G(f)-6.458 E F2(\214lename) -5.868 E F0 1.458(does not contain a slash, \214le-)4.138 F .608 -(names in)144 702 R/F4 9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 E F0 -.608(are used to \214nd the directory containing)2.858 F F2(\214lename) -3.108 E F0 5.608(.T).18 G .608(he \214le searched for in)-5.608 F F4 --.666(PA)3.108 G(TH)-.189 E F0 .833(need not be e)144 714 R -.15(xe)-.15 -G 3.333(cutable. When).15 F F1(bash)3.333 E F0 .832(is not in)3.333 F F2 -.832(posix mode)3.332 F F0 3.332(,t)C .832 -(he current directory is searched if no)-3.332 F .981 -(\214le is found in)144 726 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9 -/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F1(sour)3.481 E(cepath)-.18 -E F0 .981(option to the)3.481 F F1(shopt)3.481 E F0 -.2(bu)3.481 G .981 -(iltin command is turned of).2 F .982(f, the)-.25 F(GNU Bash 4.4)72 768 -Q(2016 August 26)142.895 E(53)192.055 E 0 Cg EP -%%Page: 54 54 +F0 5.666(.A).77 G .275(single backslash will quote the &.)144 576 R(If) +5.275 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544 F F2 +(old)3.004 E F0 .274(substituted, or)3.544 F 2.774(,i)-.4 G 2.774(fn) +-2.774 G 2.774(op)-2.774 G(re)-2.774 E(vi-)-.25 E +(ous history substitutions took place, the last)144 588 Q F2(string)2.84 +E F0(in a)2.72 E F1(!?)2.5 E F2(string)A F1([?])A F0(search.)5 E F1(&) +108 600 Q F0(Repeat the pre)144 600 Q(vious substitution.)-.25 E F1(g) +108 612 Q F0 .397(Cause changes to be applied o)144 612 R -.15(ve)-.15 G +2.897(rt).15 G .398(he entire e)-2.897 F -.15(ve)-.25 G .398(nt line.) +.15 F .398(This is used in conjunction with `)5.398 F F1(:s)A F0 2.898 +('\()C(e.g.,)-2.898 E(`)144 624 Q F1(:gs/)A F2(old)A F1(/)A F2(ne)A(w) +-.15 E F1(/)A F0 1.219('\) or `)B F1(:&)A F0 3.719('. If)B 1.219 +(used with `)3.719 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.218 +(elimiter can be used in place of /, and the \214nal)-3.718 F .089 +(delimiter is optional if it is the last character of the e)144 636 R +-.15(ve)-.25 G .09(nt line.).15 F(An)5.09 E F1(a)2.59 E F0 .09 +(may be used as a synon)2.59 F .09(ym for)-.15 F F1(g)144 648 Q F0(.)A +F1(G)108 660 Q F0(Apply the follo)144 660 Q(wing `)-.25 E F1(s)A F0 2.5 +('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15(ve)-.25 G +(nt line.).15 E/F4 10.95/Times-Bold@0 SF(SHELL B)72 676.8 Q(UIL)-.11 E +(TIN COMMANDS)-1.007 E F0 .063(Unless otherwise noted, each b)108 688.8 +R .062(uiltin command documented in this section as accepting options p\ +receded by)-.2 F F1108 700.8 Q F0(accepts)3.077 E F13.077 E F0 +.577(to signify the end of the options.)3.077 F(The)5.577 E F1(:)3.077 E +F0(,)A F1(true)3.077 E F0(,)A F1(false)3.077 E F0 3.077(,a)C(nd)-3.077 E +F1(test)3.077 E F0(/)A F1([)A F0 -.2(bu)3.077 G .577 +(iltins do not accept options).2 F .462(and do not treat)108 712.8 R F1 +2.961 E F0(specially)2.961 E 5.461(.T)-.65 G(he)-5.461 E F1(exit) +2.961 E F0(,)A F1(logout)2.961 E F0(,)A F1 -.18(re)2.961 G(tur).18 E(n) +-.15 E F0(,)A F1(br)2.961 E(eak)-.18 E F0(,)A F1(continue)2.961 E F0(,)A +F1(let)2.961 E F0 2.961(,a)C(nd)-2.961 E F1(shift)2.961 E F0 -.2(bu) +2.961 G .461(iltins accept and).2 F .26(process ar)108 724.8 R .26 +(guments be)-.18 F .26(ginning with)-.15 F 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 December 7)139.295 E(55) +188.455 E 0 Cg EP +%%Page: 56 56 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 9/Times-Bold@0 -SF -.666(PA)144 84 S(TH)-.189 E F0 .112(is not searched.)2.363 F .112 -(If an)5.112 F(y)-.15 E/F2 10/Times-Italic@0 SF(ar)2.612 E(guments)-.37 -E F0 .112(are supplied, the)2.612 F 2.612(yb)-.15 G .112 -(ecome the positional parameters when)-2.612 F F2(\214lename)144 96 Q F0 -1.697(is e)4.196 F -.15(xe)-.15 G 4.197(cuted. Otherwise).15 F 1.697 -(the positional parameters are unchanged.)4.197 F 1.697(If the)6.697 F -/F3 10/Times-Bold@0 SF4.197 E F0 1.697(option is)4.197 F(enabled,) -144 108 Q F3(sour)3.618 E(ce)-.18 E F0 1.118(inherits an)3.618 F 3.618 -(yt)-.15 G 1.118(rap on)-3.618 F F3(DEB)3.618 E(UG)-.1 E F0 3.618(;i)C -3.618(fi)-3.618 G 3.618(ti)-3.618 G 3.618(sn)-3.618 G 1.118(ot, an) --3.618 F(y)-.15 E F3(DEB)3.617 E(UG)-.1 E F0 1.117(trap string is sa) -3.617 F -.15(ve)-.2 G 3.617(da).15 G(nd)-3.617 E .36 -(restored around the call to)144 120 R F3(sour)2.86 E(ce)-.18 E F0 2.86 -(,a)C(nd)-2.86 E F3(sour)2.86 E(ce)-.18 E F0 .36(unsets the)2.86 F F3 -(DEB)2.86 E(UG)-.1 E F0 .36(trap while it e)2.86 F -.15(xe)-.15 G 2.86 -(cutes. If).15 F F32.86 E F0(is)2.86 E 1.435 -(not set, and the sourced \214le changes the)144 132 R F3(DEB)3.935 E +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.154 +(speci\214ed as accepting options interpret ar)108 84 R 1.154 +(guments be)-.18 F 1.154(ginning with)-.15 F/F1 10/Times-Bold@0 SF +3.654 E F0 1.154(as in)3.654 F -.25(va)-.4 G 1.154 +(lid options and require).25 F F13.654 E F0(to)3.654 E(pre)108 96 +Q -.15(ve)-.25 G(nt this interpretation.).15 E F1(:)108 114 Q F0([)2.5 E +/F2 10/Times-Italic@0 SF(ar)A(guments)-.37 E F0(])A .451(No ef)144 126 R +.451(fect; the command does nothing be)-.25 F .452(yond e)-.15 F +(xpanding)-.15 E F2(ar)3.282 E(guments)-.37 E F0 .452(and performing an) +3.222 F 2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5(redirections. The)144 +138 R(return status is zero.)2.5 E F1(.)110.5 154.8 Q F2(\214lename) +6.666 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 166.8 Q(ce) +-.18 E F2(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.02 +(Read and e)144 178.8 R -.15(xe)-.15 G 1.02(cute commands from).15 F F2 +(\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02 +(vironment and return the e)-.4 F(xit)-.15 E 1.458 +(status of the last command e)144 190.8 R -.15(xe)-.15 G 1.458 +(cuted from).15 F F2(\214lename)3.958 E F0 6.458(.I).18 G(f)-6.458 E F2 +(\214lename)5.868 E F0 1.458(does not contain a slash, \214le-)4.138 F +.608(names in)144 202.8 R/F3 9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 +E F0 .608(are used to \214nd the directory containing)2.858 F F2 +(\214lename)3.108 E F0 5.608(.T).18 G .608(he \214le searched for in) +-5.608 F F3 -.666(PA)3.108 G(TH)-.189 E F0 .832(need not be e)144 214.8 +R -.15(xe)-.15 G 3.332(cutable. When).15 F F1(bash)3.332 E F0 .832 +(is not in)3.332 F F2 .832(posix mode)3.332 F F0 3.332(,t)C .833 +(he current directory is searched if no)-3.332 F .982 +(\214le is found in)144 226.8 R F3 -.666(PA)3.481 G(TH)-.189 E/F4 9 +/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F1(sour)3.481 E(cepath)-.18 +E F0 .981(option to the)3.481 F F1(shopt)3.481 E F0 -.2(bu)3.481 G .981 +(iltin command is turned of).2 F .981(f, the)-.25 F F3 -.666(PA)144 +238.8 S(TH)-.189 E F0 .112(is not searched.)2.362 F .112(If an)5.112 F +(y)-.15 E F2(ar)2.612 E(guments)-.37 E F0 .112(are supplied, the)2.612 F +2.612(yb)-.15 G .112(ecome the positional parameters when)-2.612 F F2 +(\214lename)144 250.8 Q F0 1.697(is e)4.197 F -.15(xe)-.15 G 4.197 +(cuted. Otherwise).15 F 1.697(the positional parameters are unchanged.) +4.197 F 1.697(If the)6.697 F F14.197 E F0 1.696(option is)4.197 F +(enabled,)144 262.8 Q F1(sour)3.617 E(ce)-.18 E F0 1.117(inherits an) +3.617 F 3.617(yt)-.15 G 1.117(rap on)-3.617 F F1(DEB)3.617 E(UG)-.1 E F0 +3.618(;i)C 3.618(fi)-3.618 G 3.618(ti)-3.618 G 3.618(sn)-3.618 G 1.118 +(ot, an)-3.618 F(y)-.15 E F1(DEB)3.618 E(UG)-.1 E F0 1.118 +(trap string is sa)3.618 F -.15(ve)-.2 G 3.618(da).15 G(nd)-3.618 E .36 +(restored around the call to)144 274.8 R F1(sour)2.86 E(ce)-.18 E F0 +2.86(,a)C(nd)-2.86 E F1(sour)2.86 E(ce)-.18 E F0 .36(unsets the)2.86 F +F1(DEB)2.86 E(UG)-.1 E F0 .36(trap while it e)2.86 F -.15(xe)-.15 G 2.86 +(cutes. If).15 F F12.86 E F0(is)2.86 E 1.435 +(not set, and the sourced \214le changes the)144 286.8 R F1(DEB)3.935 E (UG)-.1 E F0 1.435(trap, the ne)3.935 F 3.935(wv)-.25 G 1.435 -(alue is retained when)-4.185 F F3(sour)3.935 E(ce)-.18 E F0 3.762 -(completes. The)144 144 R 1.262 -(return status is the status of the last command e)3.762 F 1.263 -(xited within the script \(0 if no)-.15 F(commands are e)144 156 Q -.15 -(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F2(\214lename)4.41 E F0 -(is not found or cannot be read.)2.68 E F3(alias)108 172.8 Q F0([)2.5 E -F3A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..]) --2.5 E F3(Alias)144 184.8 Q F0 2.725(with no ar)5.225 F 2.724 -(guments or with the)-.18 F F35.224 E F0 2.724 -(option prints the list of aliases in the form)5.224 F F3(alias)5.224 E -F2(name)144 196.8 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F +(alue is retained when)-4.185 F F1(sour)3.935 E(ce)-.18 E F0 3.763 +(completes. The)144 298.8 R 1.262 +(return status is the status of the last command e)3.763 F 1.262 +(xited within the script \(0 if no)-.15 F(commands are e)144 310.8 Q +-.15(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F2(\214lename)4.41 E +F0(is not found or cannot be read.)2.68 E F1(alias)108 327.6 Q F0([)2.5 +E F1A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C +(..])-2.5 E F1(Alias)144 339.6 Q F0 2.724(with no ar)5.224 F 2.724 +(guments or with the)-.18 F F15.224 E F0 2.724 +(option prints the list of aliases in the form)5.224 F F1(alias)5.225 E +F2(name)144 351.6 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F .58(When ar)5.58 F .58 (guments are supplied, an alias is de\214ned for each)-.18 F F2(name) -3.08 E F0(whose)144 208.8 Q F2(value)2.509 E F0 .009(is gi)2.509 F -.15 +3.08 E F0(whose)144 363.6 Q F2(value)2.508 E F0 .009(is gi)2.508 F -.15 (ve)-.25 G 2.509(n. A).15 F .009(trailing space in)2.509 F F2(value) 2.509 E F0 .009(causes the ne)2.509 F .009(xt w)-.15 F .009 -(ord to be check)-.1 F .008(ed for alias substi-)-.1 F .579 -(tution when the alias is e)144 220.8 R 3.079(xpanded. F)-.15 F .579 +(ord to be check)-.1 F .009(ed for alias substi-)-.1 F .579 +(tution when the alias is e)144 375.6 R 3.079(xpanded. F)-.15 F .579 (or each)-.15 F F2(name)3.079 E F0 .579(in the ar)3.079 F .579 -(gument list for which no)-.18 F F2(value)3.079 E F0 .579(is sup-)3.079 -F 1.314(plied, the name and v)144 232.8 R 1.314 -(alue of the alias is printed.)-.25 F F3(Alias)6.314 E F0 1.314 -(returns true unless a)3.814 F F2(name)3.814 E F0 1.313(is gi)3.814 F --.15(ve)-.25 G 3.813(nf).15 G(or)-3.813 E -(which no alias has been de\214ned.)144 244.8 Q F3(bg)108 261.6 Q F0([) -2.5 E F2(jobspec)A F0(...])2.5 E .744(Resume each suspended job)144 -273.6 R F2(jobspec)3.244 E F0 .745 -(in the background, as if it had been started with)3.244 F F3(&)3.245 E -F0 5.745(.I)C(f)-5.745 E F2(job-)4.985 E(spec)144 285.6 Q F0 .672 -(is not present, the shell')3.482 F 3.172(sn)-.55 G .672(otion of the) --3.172 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F3 -(bg)5.671 E F2(jobspec)4.911 E F0 .671(returns 0 unless run)3.481 F .418 -(when job control is disabled or)144 297.6 R 2.919(,w)-.4 G .419 -(hen run with job control enabled, an)-2.919 F 2.919(ys)-.15 G -(peci\214ed)-2.919 E F2(jobspec)2.919 E F0 -.1(wa)2.919 G 2.919(sn).1 G -(ot)-2.919 E(found or w)144 309.6 Q(as started without job control.)-.1 -E F3(bind)108 326.4 Q F0([)2.5 E F3A F2 -.1(ke)2.5 G(ymap)-.2 E F0 -2.5(][)C F3(\255lpsvPSVX)-2.5 E F0(])A F3(bind)108 338.4 Q F0([)2.5 E F3 -A F2 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F3-2.5 E F2 -(function)2.5 E F0 2.5(][)C F3-2.5 E F2(function)2.5 E F0 2.5(][)C -F3-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F3(bind)108 350.4 Q F0 -([)2.5 E F3A F2 -.1(ke)2.5 G(ymap)-.2 E F0(])A F32.5 E F2 -(\214lename)2.5 E F3(bind)108 362.4 Q F0([)2.5 E F3A F2 -.1(ke)2.5 -G(ymap)-.2 E F0(])A F32.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -(shell\255command)A F3(bind)108 374.4 Q F0([)2.5 E F3A F2 -.1(ke) +(gument list for which no)-.18 F F2(value)3.079 E F0 .578(is sup-)3.078 +F 1.313(plied, the name and v)144 387.6 R 1.314 +(alue of the alias is printed.)-.25 F F1(Alias)6.314 E F0 1.314 +(returns true unless a)3.814 F F2(name)3.814 E F0 1.314(is gi)3.814 F +-.15(ve)-.25 G 3.814(nf).15 G(or)-3.814 E +(which no alias has been de\214ned.)144 399.6 Q F1(bg)108 416.4 Q F0([) +2.5 E F2(jobspec)A F0(...])2.5 E .745(Resume each suspended job)144 +428.4 R F2(jobspec)3.245 E F0 .745 +(in the background, as if it had been started with)3.245 F F1(&)3.244 E +F0 5.744(.I)C(f)-5.744 E F2(job-)4.984 E(spec)144 440.4 Q F0 .671 +(is not present, the shell')3.481 F 3.171(sn)-.55 G .672(otion of the) +-3.171 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F1 +(bg)5.672 E F2(jobspec)4.912 E F0 .672(returns 0 unless run)3.482 F .419 +(when job control is disabled or)144 452.4 R 2.919(,w)-.4 G .419 +(hen run with job control enabled, an)-2.919 F 2.918(ys)-.15 G +(peci\214ed)-2.918 E F2(jobspec)2.918 E F0 -.1(wa)2.918 G 2.918(sn).1 G +(ot)-2.918 E(found or w)144 464.4 Q(as started without job control.)-.1 +E F1(bind)108 481.2 Q F0([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0 +2.5(][)C F1(\255lpsvPSVX)-2.5 E F0(])A F1(bind)108 493.2 Q F0([)2.5 E F1 +A F2 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F1-2.5 E F2 +(function)2.5 E F0 2.5(][)C F1-2.5 E F2(function)2.5 E F0 2.5(][)C +F1-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F1(bind)108 505.2 Q F0 +([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0(])A F12.5 E F2 +(\214lename)2.5 E F1(bind)108 517.2 Q F0([)2.5 E F1A F2 -.1(ke)2.5 +G(ymap)-.2 E F0(])A F12.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 +(shell\255command)A F1(bind)108 529.2 Q F0([)2.5 E F1A F2 -.1(ke) 2.5 G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -(function\255name)A F3(bind)108 386.4 Q F0([)2.5 E F3A F2 -.1(ke) +(function\255name)A F1(bind)108 541.2 Q F0([)2.5 E F1A F2 -.1(ke) 2.5 G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -.37(re)C -(adline\255command).37 E F0 .239(Display current)144 398.4 R F3 -.18(re) -2.739 G(adline).18 E F0 -.1(ke)2.739 G 2.739(ya)-.05 G .239 -(nd function bindings, bind a k)-2.739 F .539 -.15(ey s)-.1 H .238 -(equence to a).15 F F3 -.18(re)2.738 G(adline).18 E F0 .238(function or) -2.738 F .475(macro, or set a)144 410.4 R F3 -.18(re)2.975 G(adline).18 E -F0 -.25(va)2.975 G 2.975(riable. Each).25 F .476(non-option ar)2.976 F -.476(gument is a command as it w)-.18 F .476(ould appear in)-.1 F F2 -(.inputr)144 422.4 Q(c)-.37 E F0 2.984(,b).31 G .484 -(ut each binding or command must be passed as a separate ar)-3.184 F -.483(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 -(re\255read\255init\255\214le'. Options,)144 434.4 R(if supplied, ha)2.5 -E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F3144 -446.4 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 458.4 Q F2 -.1(ke)5.158 G -(ymap)-.2 E F0 2.658(as the k)5.348 F -.15(ey)-.1 G 2.658(map to be af) -.15 F 2.659(fected by the subsequent bindings.)-.25 F(Acceptable)7.659 E -F2 -.1(ke)180 470.4 S(ymap)-.2 E F0 3.193(names are)5.883 F F2 3.193 -(emacs, emacs\255standar)5.693 F 3.192 +(adline\255command).37 E F0 .238(Display current)144 553.2 R F1 -.18(re) +2.738 G(adline).18 E F0 -.1(ke)2.738 G 2.738(ya)-.05 G .239 +(nd function bindings, bind a k)-2.738 F .539 -.15(ey s)-.1 H .239 +(equence to a).15 F F1 -.18(re)2.739 G(adline).18 E F0 .239(function or) +2.739 F .476(macro, or set a)144 565.2 R F1 -.18(re)2.976 G(adline).18 E +F0 -.25(va)2.976 G 2.976(riable. Each).25 F .476(non-option ar)2.976 F +.475(gument is a command as it w)-.18 F .475(ould appear in)-.1 F F2 +(.inputr)144 577.2 Q(c)-.37 E F0 2.983(,b).31 G .484 +(ut each binding or command must be passed as a separate ar)-3.183 F +.484(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 +(re\255read\255init\255\214le'. Options,)144 589.2 R(if supplied, ha)2.5 +E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 +601.2 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 613.2 Q F2 -.1(ke)5.159 G +(ymap)-.2 E F0 2.659(as the k)5.349 F -.15(ey)-.1 G 2.658(map to be af) +.15 F 2.658(fected by the subsequent bindings.)-.25 F(Acceptable)7.658 E +F2 -.1(ke)180 625.2 S(ymap)-.2 E F0 3.192(names are)5.882 F F2 3.192 +(emacs, emacs\255standar)5.692 F 3.193 (d, emacs\255meta, emacs\255ctlx, vi, vi\255mo)-.37 F(ve)-.1 E(,)-.1 E -(vi\255command)180 482.4 Q F0 4.113(,a)C(nd)-4.113 E F2(vi\255insert) -4.113 E F0(.).68 E F2(vi)6.613 E F0 1.613(is equi)4.113 F -.25(va)-.25 G +(vi\255command)180 637.2 Q F0 4.114(,a)C(nd)-4.114 E F2(vi\255insert) +4.114 E F0(.).68 E F2(vi)6.614 E F0 1.613(is equi)4.114 F -.25(va)-.25 G 1.613(lent to).25 F F2(vi\255command)4.113 E F0(\()4.113 E F2(vi\255mo)A -(ve)-.1 E F0 1.614(is also a syn-)4.114 F(on)180 494.4 Q(ym\);)-.15 E F2 +(ve)-.1 E F0 1.613(is also a syn-)4.113 F(on)180 649.2 Q(ym\);)-.15 E F2 (emacs)2.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F2 -(emacs\255standar)2.5 E(d)-.37 E F0(.)A F3144 506.4 Q F0 -(List the names of all)180 506.4 Q F3 -.18(re)2.5 G(adline).18 E F0 -(functions.)2.5 E F3144 518.4 Q F0(Display)180 518.4 Q F3 -.18(re) +(emacs\255standar)2.5 E(d)-.37 E F0(.)A F1144 661.2 Q F0 +(List the names of all)180 661.2 Q F1 -.18(re)2.5 G(adline).18 E F0 +(functions.)2.5 E F1144 673.2 Q F0(Display)180 673.2 Q F1 -.18(re) 2.5 G(adline).18 E F0(function names and bindings in such a w)2.5 E -(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F3144 530.4 -Q F0(List current)180 530.4 Q F3 -.18(re)2.5 G(adline).18 E F0 -(function names and bindings.)2.5 E F3144 542.4 Q F0(Display)180 -542.4 Q F3 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05 +(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 685.2 +Q F0(List current)180 685.2 Q F1 -.18(re)2.5 G(adline).18 E F0 +(function names and bindings.)2.5 E F1144 697.2 Q F0(Display)180 +697.2 Q F1 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05 G 1.155(equences bound to macros and the strings the)-3.655 F 3.655(yo) --.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 554.4 S 2.5(yt).1 G -(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F3144 566.4 Q -F0(Display)180 566.4 Q F3 -.18(re)2.5 G(adline).18 E F0 -.1(ke)2.5 G 2.5 -(ys)-.05 G(equences bound to macros and the strings the)-2.5 E 2.5(yo) --.15 G(utput.)-2.5 E F3144 578.4 Q F0(Display)180 578.4 Q F3 -.18 -(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E -(alues in such a w)-.25 E(ay that the)-.1 E 2.5(yc)-.15 G -(an be re-read.)-2.5 E F3144 590.4 Q F0(List current)180 590.4 Q -F3 -.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E -(alues.)-.25 E F3144 602.4 Q F2(\214lename)2.5 E F0(Read k)180 -614.4 Q .3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A -F3144 626.4 Q F2(function)2.5 E F0(Query about which k)180 638.4 Q --.15(ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o)-2.5 H .2 -.1(ke t).4 H -(he named).1 E F2(function)2.5 E F0(.)A F3144 650.4 Q F2(function) -2.5 E F0(Unbind all k)180 662.4 Q -.15(ey)-.1 G 2.5(sb).15 G -(ound to the named)-2.5 E F2(function)2.5 E F0(.)A F3144 674.4 Q -F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 686.4 Q .3 -.15(ve a)-.15 H .3 --.15(ny c).15 H(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E F0 -(.)A F3144 698.4 Q F2 -.1(ke)2.5 G(yseq)-.2 E F3(:)A F2 -(shell\255command)A F0(Cause)180 710.4 Q F2(shell\255command)4.325 E F0 -1.825(to be e)4.325 F -.15(xe)-.15 G 1.825(cuted whene).15 F -.15(ve) --.25 G(r).15 E F2 -.1(ke)4.325 G(yseq)-.2 E F0 1.825(is entered.)4.325 F -(When)6.825 E F2(shell\255com-)4.325 E(mand)180 722.4 Q F0 1.765(is e) -4.265 F -.15(xe)-.15 G 1.765(cuted, the shell sets the).15 F F1 -(READLINE_LINE)4.265 E F0 -.25(va)4.015 G 1.765 -(riable to the contents of the).25 F(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(54)192.055 E 0 Cg EP -%%Page: 55 55 +-.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 709.2 S 2.5(yt).1 G +(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E(GNU Bash 5.0)72 768 +Q(2018 December 7)139.295 E(56)188.455 E 0 Cg EP +%%Page: 57 57 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF -.18(re)180 84 S(adline).18 E F0 1.353(line b)3.852 F(uf)-.2 E 1.353 -(fer and the)-.25 F/F2 9/Times-Bold@0 SF(READLINE_POINT)3.853 E F0 -.25 -(va)3.603 G 1.353(riable to the current location of the).25 F 2.012 -(insertion point.)180 96 R 2.011(If the e)7.012 F -.15(xe)-.15 G 2.011 -(cuted command changes the v).15 F 2.011(alue of)-.25 F F2 -(READLINE_LINE)4.511 E F0(or)4.261 E F2(READLINE_POINT)180 108 Q/F3 9 +SF144 84 Q F0(Display)180 84 Q F1 -.18(re)2.5 G(adline).18 E F0 +-.1(ke)2.5 G 2.5(ys)-.05 G(equences bound to macros and the strings the) +-2.5 E 2.5(yo)-.15 G(utput.)-2.5 E F1144 96 Q F0(Display)180 96 Q +F1 -.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E +(alues in such a w)-.25 E(ay that the)-.1 E 2.5(yc)-.15 G +(an be re-read.)-2.5 E F1144 108 Q F0(List current)180 108 Q F1 +-.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E +(alues.)-.25 E F1144 120 Q/F2 10/Times-Italic@0 SF(\214lename)2.5 +E F0(Read k)180 132 Q .3 -.15(ey b)-.1 H(indings from).15 E F2 +(\214lename)2.5 E F0(.)A F1144 144 Q F2(function)2.5 E F0 +(Query about which k)180 156 Q -.15(ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o) +-2.5 H .2 -.1(ke t).4 H(he named).1 E F2(function)2.5 E F0(.)A F1 +144 168 Q F2(function)2.5 E F0(Unbind all k)180 180 Q -.15(ey)-.1 G 2.5 +(sb).15 G(ound to the named)-2.5 E F2(function)2.5 E F0(.)A F1144 +192 Q F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 204 Q .3 -.15(ve a)-.15 H +.3 -.15(ny c).15 H(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E +F0(.)A F1144 216 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2 +(shell\255command)A F0(Cause)180 228 Q F2(shell\255command)4.325 E F0 +1.825(to be e)4.325 F -.15(xe)-.15 G 1.825(cuted whene).15 F -.15(ve) +-.25 G(r).15 E F2 -.1(ke)4.325 G(yseq)-.2 E F0 1.825(is entered.)4.325 F +(When)6.825 E F2(shell\255com-)4.325 E(mand)180 240 Q F0 1.764(is e) +4.264 F -.15(xe)-.15 G 1.765(cuted, the shell sets the).15 F/F3 9 +/Times-Bold@0 SF(READLINE_LINE)4.265 E F0 -.25(va)4.015 G 1.765 +(riable to the contents of the).25 F F1 -.18(re)180 252 S(adline).18 E +F0 1.353(line b)3.853 F(uf)-.2 E 1.353(fer and the)-.25 F F3 +(READLINE_POINT)3.853 E F0 -.25(va)3.603 G 1.353 +(riable to the current location of the).25 F 2.011(insertion point.)180 +264 R 2.011(If the e)7.011 F -.15(xe)-.15 G 2.011 +(cuted command changes the v).15 F 2.011(alue of)-.25 F F3 +(READLINE_LINE)4.512 E F0(or)4.262 E F3(READLINE_POINT)180 276 Q/F4 9 /Times-Roman@0 SF(,)A F0(those ne)2.25 E 2.5(wv)-.25 G -(alues will be re\215ected in the editing state.)-2.75 E F1144 120 -Q F0 .829(List all k)180 120 R 1.129 -.15(ey s)-.1 H .829 +(alues will be re\215ected in the editing state.)-2.75 E F1144 288 +Q F0 .83(List all k)180 288 R 1.13 -.15(ey s)-.1 H .829 (equences bound to shell commands and the associated commands in a for) -.15 F(-)-.2 E(mat that can be reused as input.)180 132 Q(The return v) -144 148.8 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15 +.15 F(-)-.2 E(mat that can be reused as input.)180 300 Q(The return v) +144 316.8 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15 (ve)-.25 G 2.5(no).15 G 2.5(ra)-2.5 G 2.5(ne)-2.5 G(rror occurred.)-2.5 -E F1(br)108 165.6 Q(eak)-.18 E F0([)2.5 E/F4 10/Times-Italic@0 SF(n)A F0 -(])A .055(Exit from within a)144 177.6 R F1 -.25(fo)2.555 G(r).25 E F0 -(,)A F1(while)2.555 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E -F1(select)2.555 E F0 2.555(loop. If)2.555 F F4(n)2.555 E F0 .055 -(is speci\214ed, break)2.555 F F4(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G -(ls.).15 E F4(n)5.414 E F0 .054(must be)2.794 F/F5 10/Symbol SF2.554 -E F0(1.)2.554 E(If)144 189.6 Q F4(n)3.074 E F0 .215(is greater than the\ - number of enclosing loops, all enclosing loops are e)2.954 F 2.715 -(xited. The)-.15 F .215(return v)2.715 F(alue)-.25 E(is 0 unless)144 -201.6 Q F4(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 -(bu)108 218.4 S(iltin).2 E F4(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E -F4(ar)A(guments)-.37 E F0(])A(Ex)144 230.4 Q .793 -(ecute the speci\214ed shell b)-.15 F .793(uiltin, passing it)-.2 F F4 +E F1(br)108 333.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054 +(Exit from within a)144 345.6 R F1 -.25(fo)2.554 G(r).25 E F0(,)A F1 +(while)2.554 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E F1 +(select)2.555 E F0 2.555(loop. If)2.555 F F2(n)2.555 E F0 .055 +(is speci\214ed, break)2.555 F F2(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G +(ls.).15 E F2(n)5.415 E F0 .055(must be)2.795 F/F5 10/Symbol SF2.555 +E F0(1.)2.555 E(If)144 357.6 Q F2(n)3.075 E F0 .215(is greater than the\ + number of enclosing loops, all enclosing loops are e)2.955 F 2.714 +(xited. The)-.15 F .214(return v)2.714 F(alue)-.25 E(is 0 unless)144 +369.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 +(bu)108 386.4 S(iltin).2 E F2(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E +F2(ar)A(guments)-.37 E F0(])A(Ex)144 398.4 Q .792 +(ecute the speci\214ed shell b)-.15 F .792(uiltin, passing it)-.2 F F2 (ar)3.293 E(guments)-.37 E F0 3.293(,a).27 G .793(nd return its e)-3.293 -F .792(xit status.)-.15 F .792(This is useful)5.792 F .615 +F .793(xit status.)-.15 F .793(This is useful)5.793 F .616 (when de\214ning a function whose name is the same as a shell b)144 -242.4 R .616(uiltin, retaining the functionality of)-.2 F .57(the b)144 -254.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0 +410.4 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144 +422.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0 -.2(bu)3.07 G .57(iltin is commonly rede\214ned this w).2 F(ay)-.1 E -5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 266.4 Q(alse if)-.1 -E F4(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E -(uiltin command.)-.2 E F1(caller)108 283.2 Q F0([)2.5 E F4 -.2(ex)C(pr) -.2 E F0(])A .253(Returns the conte)144 295.2 R .254(xt of an)-.15 F +5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 434.4 Q(alse if)-.1 +E F2(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E +(uiltin command.)-.2 E F1(caller)108 451.2 Q F0([)2.5 E F2 -.2(ex)C(pr) +.2 E F0(])A .254(Returns the conte)144 463.2 R .254(xt of an)-.15 F 2.754(ya)-.15 G(cti)-2.754 E .554 -.15(ve s)-.25 H .254 (ubroutine call \(a shell function or a script e).15 F -.15(xe)-.15 G -.254(cuted with the).15 F F1(.)2.754 E F0(or)2.754 E F1(sour)144 307.2 Q -(ce)-.18 E F0 -.2(bu)2.825 G 2.825(iltins\). W).2 F(ithout)-.4 E F4 -.2 -(ex)2.825 G(pr).2 E F0(,)A F1(caller)2.825 E F0 .324 +.254(cuted with the).15 F F1(.)2.753 E F0(or)2.753 E F1(sour)144 475.2 Q +(ce)-.18 E F0 -.2(bu)2.824 G 2.824(iltins\). W).2 F(ithout)-.4 E F2 -.2 +(ex)2.824 G(pr).2 E F0(,)A F1(caller)2.824 E F0 .324 (displays the line number and source \214lename of the current)2.824 F -.253(subroutine call.)144 319.2 R .253(If a non-ne)5.253 F -.05(ga)-.15 -G(ti).05 E .553 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15 -F F4 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .254 -(displays the line number)2.754 F 2.754(,s)-.4 G(ub-)-2.754 E 1.327(rou\ +.254(subroutine call.)144 487.2 R .254(If a non-ne)5.254 F -.05(ga)-.15 +G(ti).05 E .554 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15 +F F2 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .253 +(displays the line number)2.753 F 2.753(,s)-.4 G(ub-)-2.753 E 1.327(rou\ tine name, and source \214le corresponding to that position in the curr\ -ent e)144 331.2 R -.15(xe)-.15 G 1.327(cution call stack.).15 F(This e) -144 343.2 Q(xtra information may be used, for e)-.15 E .001 -(xample, to print a stack trace.)-.15 F .001(The current frame is frame) -5.001 F 3.02(0. The)144 355.2 R .52(return v)3.02 F .52 -(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .519 -(cuting a subroutine call or).15 F F4 -.2(ex)3.019 G(pr).2 E F0 .519 -(does not corre-)3.019 F(spond to a v)144 367.2 Q -(alid position in the call stack.)-.25 E F1(cd)108 384 Q F0([)2.5 E F1 -A F0(|[)A F1A F0([)2.5 E F1A F0(]] [\255@]] [)A F4 -(dir)A F0(])A .321(Change the current directory to)144 396 R F4(dir) -2.821 E F0 5.321(.i)C(f)-5.321 E F4(dir)2.821 E F0 .322 -(is not supplied, the v)2.821 F .322(alue of the)-.25 F F2(HOME)2.822 E -F0 .322(shell v)2.572 F .322(ariable is)-.25 F 1.036(the def)144 408 R -3.536(ault. An)-.1 F 3.536(ya)-.15 G 1.035(dditional ar)-3.536 F 1.035 -(guments follo)-.18 F(wing)-.25 E F4(dir)3.535 E F0 1.035(are ignored.) -3.535 F 1.035(The v)6.035 F(ariable)-.25 E F2(CDP)3.535 E -.855(AT)-.666 -G(H).855 E F0(de\214nes)3.285 E .849 -(the search path for the directory containing)144 420 R F4(dir)3.349 E -F0 3.35(:e).73 G .85(ach directory name in)-3.35 F F2(CDP)3.35 E -.855 -(AT)-.666 G(H).855 E F0 .85(is searched for)3.1 F F4(dir)144 432 Q F0 -5.665(.A)C(lternati)-5.665 E .965 -.15(ve d)-.25 H .665 -(irectory names in).15 F F2(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0 -.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .664 -(ull directory name)-3.165 F(in)144 444 Q F2(CDP)4.162 E -.855(AT)-.666 -G(H).855 E F0 1.662(is the same as the current directory)3.912 F 4.162 +ent e)144 499.2 R -.15(xe)-.15 G 1.328(cution call stack.).15 F .001 +(This e)144 511.2 R .001(xtra information may be used, for e)-.15 F .001 +(xample, to print a stack trace.)-.15 F(The current frame is frame)5 E +3.019(0. The)144 523.2 R .519(return v)3.019 F .519 +(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .52 +(cuting a subroutine call or).15 F F2 -.2(ex)3.02 G(pr).2 E F0 .52 +(does not corre-)3.02 F(spond to a v)144 535.2 Q +(alid position in the call stack.)-.25 E F1(cd)108 552 Q F0([)2.5 E F1 +A F0(|[)A F1A F0([)2.5 E F1A F0(]] [\255@]] [)A F2 +(dir)A F0(])A .322(Change the current directory to)144 564 R F2(dir) +2.822 E F0 5.322(.i)C(f)-5.322 E F2(dir)2.822 E F0 .321 +(is not supplied, the v)2.822 F .321(alue of the)-.25 F F3(HOME)2.821 E +F0 .321(shell v)2.571 F .321(ariable is)-.25 F 1.035(the def)144 576 R +3.535(ault. An)-.1 F 3.535(ya)-.15 G 1.035(dditional ar)-3.535 F 1.035 +(guments follo)-.18 F(wing)-.25 E F2(dir)3.535 E F0 1.035(are ignored.) +3.535 F 1.036(The v)6.035 F(ariable)-.25 E F3(CDP)3.536 E -.855(AT)-.666 +G(H).855 E F0(de\214nes)3.286 E .85 +(the search path for the directory containing)144 588 R F2(dir)3.35 E F0 +3.35(:e).73 G .849(ach directory name in)-3.35 F F3(CDP)3.349 E -.855 +(AT)-.666 G(H).855 E F0 .849(is searched for)3.099 F F2(dir)144 600 Q F0 +5.664(.A)C(lternati)-5.664 E .964 -.15(ve d)-.25 H .665 +(irectory names in).15 F F3(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0 +.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .665 +(ull directory name)-3.165 F(in)144 612 Q F3(CDP)4.163 E -.855(AT)-.666 +G(H).855 E F0 1.663(is the same as the current directory)3.913 F 4.162 (,i)-.65 G 1.662(.e., `)-4.162 F(`)-.74 E F1(.)A F0 -.74('')C 6.662(.I) -.74 G(f)-6.662 E F4(dir)4.513 E F0(be)4.893 E 1.663 -(gins with a slash \(/\), then)-.15 F F2(CDP)144 456 Q -.855(AT)-.666 G -(H).855 E F0 .191(is not used.)2.441 F(The)5.191 E F12.691 E F0 -.191(option causes)2.691 F F1(cd)2.691 E F0 .191(to use the ph)2.691 F -.19(ysical directory structure by resolving)-.05 F 1.12 -(symbolic links while tra)144 468 R -.15(ve)-.2 G(rsing).15 E F4(dir) -3.62 E F0 1.12(and before processing instances of)3.62 F F4(..)3.62 E F0 -(in)3.62 E F4(dir)3.62 E F0 1.12(\(see also the)3.62 F F13.62 E F0 -.395(option to the)144 480 R F1(set)2.895 E F0 -.2(bu)2.895 G .395 +.74 G(f)-6.662 E F2(dir)4.512 E F0(be)4.892 E 1.662 +(gins with a slash \(/\), then)-.15 F F3(CDP)144 624 Q -.855(AT)-.666 G +(H).855 E F0 .19(is not used.)2.44 F(The)5.191 E F12.691 E F0 .191 +(option causes)2.691 F F1(cd)2.691 E F0 .191(to use the ph)2.691 F .191 +(ysical directory structure by resolving)-.05 F 1.12 +(symbolic links while tra)144 636 R -.15(ve)-.2 G(rsing).15 E F2(dir) +3.62 E F0 1.12(and before processing instances of)3.62 F F2(..)3.62 E F0 +(in)3.62 E F2(dir)3.62 E F0 1.12(\(see also the)3.62 F F13.62 E F0 +.395(option to the)144 648 R F1(set)2.895 E F0 -.2(bu)2.895 G .395 (iltin command\); the).2 F F12.895 E F0 .395 (option forces symbolic links to be follo)2.895 F .395(wed by resolv-) --.25 F .443(ing the link after processing instances of)144 492 R F4(..) -2.943 E F0(in)2.943 E F4(dir)2.943 E F0 5.443(.I)C(f)-5.443 E F4(..) -2.943 E F0 .443(appears in)2.943 F F4(dir)2.943 E F0 2.943(,i)C 2.943 -(ti)-2.943 G 2.944(sp)-2.943 G .444(rocessed by remo)-2.944 F(ving)-.15 -E .744(the immediately pre)144 504 R .744(vious pathname component from) --.25 F F4(dir)3.244 E F0 3.244(,b)C .744(ack to a slash or the be)-3.244 -F .744(ginning of)-.15 F F4(dir)3.244 E F0(.)A 1.465(If the)144 516 R F1 -3.965 E F0 1.465(option is supplied with)3.965 F F13.965 E -F0 3.965(,a)C 1.465(nd the current w)-3.965 F 1.466 -(orking directory cannot be successfully)-.1 F .468 -(determined after a successful directory change,)144 528 R F1(cd)2.968 E -F0 .468(will return an unsuccessful status.)2.968 F .467(On systems) -5.467 F .336(that support it, the)144 540 R F12.836 E F0 .336 -(option presents the e)2.836 F .336(xtended attrib)-.15 F .337 +-.25 F .444(ing the link after processing instances of)144 660 R F2(..) +2.943 E F0(in)2.943 E F2(dir)2.943 E F0 5.443(.I)C(f)-5.443 E F2(..) +2.943 E F0 .443(appears in)2.943 F F2(dir)2.943 E F0 2.943(,i)C 2.943 +(ti)-2.943 G 2.943(sp)-2.943 G .443(rocessed by remo)-2.943 F(ving)-.15 +E .744(the immediately pre)144 672 R .744(vious pathname component from) +-.25 F F2(dir)3.244 E F0 3.244(,b)C .744(ack to a slash or the be)-3.244 +F .744(ginning of)-.15 F F2(dir)3.244 E F0(.)A 1.466(If the)144 684 R F1 +3.966 E F0 1.466(option is supplied with)3.966 F F13.965 E +F0 3.965(,a)C 1.465(nd the current w)-3.965 F 1.465 +(orking directory cannot be successfully)-.1 F .467 +(determined after a successful directory change,)144 696 R F1(cd)2.968 E +F0 .468(will return an unsuccessful status.)2.968 F .468(On systems) +5.468 F .337(that support it, the)144 708 R F12.837 E F0 .336 +(option presents the e)2.836 F .336(xtended attrib)-.15 F .336 (utes associated with a \214le as a directory)-.2 F(.)-.65 E .71(An ar) -144 552 R .71(gument of)-.18 F F13.21 E F0 .71(is con)3.21 F -.15 -(ve)-.4 G .71(rted to).15 F F2($OLDPWD)3.21 E F0 .71 +144 720 R .71(gument of)-.18 F 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 -.106(empty directory name from)144 564 R F2(CDP)2.606 E -.855(AT)-.666 G -(H).855 E F0 .107(is used, or if)2.356 F F12.607 E F0 .107 -(is the \214rst ar)2.607 F .107(gument, and the directory change)-.18 F -.038(is successful, the absolute pathname of the ne)144 576 R 2.538(ww) --.25 G .038(orking directory is written to the standard output.)-2.638 F -(The return v)144 588 Q(alue is true if the directory w)-.25 E -(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F1(command)108 -604.8 Q F0([)2.5 E F1(\255pVv)A F0(])A F4(command)2.5 E F0([)2.5 E F4 -(ar)A(g)-.37 E F0(...])2.5 E(Run)144 616.8 Q F4(command)2.764 E F0(with) -3.334 E F4(ar)2.894 E(gs)-.37 E F0 .065 -(suppressing the normal shell function lookup.)2.834 F .065(Only b)5.065 -F .065(uiltin commands or)-.2 F .502(commands found in the)144 628.8 R -F2 -.666(PA)3.002 G(TH)-.189 E F0 .502(are e)2.752 F -.15(xe)-.15 G -3.002(cuted. If).15 F(the)3.002 E F13.002 E F0 .502(option is gi) -3.002 F -.15(ve)-.25 G .501(n, the search for).15 F F4(command)3.201 E -F0(is)3.771 E .399(performed using a def)144 640.8 R .399(ault v)-.1 F -.399(alue for)-.25 F F2 -.666(PA)2.899 G(TH)-.189 E F0 .4 -(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If) -5.4 E .175(either the)144 652.8 R F12.675 E F0(or)2.675 E F1 -2.675 E F0 .175(option is supplied, a description of)2.675 F F4(command) -2.875 E F0 .174(is printed.)3.445 F(The)5.174 E F12.674 E F0 .174 -(option causes)2.674 F 3.317(as)144 664.8 S .817(ingle w)-3.317 F .817 -(ord indicating the command or \214lename used to in)-.1 F -.2(vo)-.4 G --.1(ke).2 G F4(command)3.618 E F0 .818(to be displayed; the)4.088 F F1 -144 676.8 Q F0 .25(option produces a more v)2.75 F .25 -(erbose description.)-.15 F .249(If the)5.25 F F12.749 E F0(or) -2.749 E F12.749 E F0 .249(option is supplied, the e)2.749 F .249 -(xit status)-.15 F 1.004(is 0 if)144 688.8 R F4(command)3.704 E F0 -.1 -(wa)4.274 G 3.504(sf).1 G 1.005(ound, and 1 if not.)-3.504 F 1.005 -(If neither option is supplied and an error occurred or)6.005 F F4 -(command)144.2 700.8 Q F0 1.599(cannot be found, the e)4.869 F 1.599 -(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.598 -(xit status of the)-.15 F F1(command)4.098 E F0 -.2(bu)144 712.8 S -(iltin is the e).2 E(xit status of)-.15 E F4(command)2.5 E F0(.).77 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(55)192.055 E 0 Cg EP -%%Page: 56 56 +(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(57)188.455 E 0 Cg EP +%%Page: 58 58 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(compgen)108 84 Q F0([)2.5 E/F2 10/Times-Italic@0 SF(option)A F0 2.5 -(][)C F2(wor)-2.5 E(d)-.37 E F0(])A .012 -(Generate possible completion matches for)144 96 R F2(wor)2.513 E(d)-.37 -E F0 .013(according to the)2.513 F F2(option)2.513 E F0 .013 -(s, which may be an)B 2.513(yo)-.15 G(ption)-2.513 E .982 -(accepted by the)144 108 R F1(complete)3.482 E F0 -.2(bu)3.481 G .981 -(iltin with the e).2 F .981(xception of)-.15 F F13.481 E F0(and) -3.481 E F13.481 E F0 3.481(,a)C .981(nd write the matches to the) --3.481 F .13(standard output.)144 120 R .13(When using the)5.13 F F1 -2.63 E F0(or)2.63 E F12.631 E F0 .131(options, the v)2.631 F -.131(arious shell v)-.25 F .131(ariables set by the program-)-.25 F -(mable completion f)144 132 Q(acilities, while a)-.1 E -.25(va)-.2 G +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .107 +(empty directory name from)144 84 R/F1 9/Times-Bold@0 SF(CDP)2.607 E +-.855(AT)-.666 G(H).855 E F0 .107(is used, or if)2.357 F/F2 10 +/Times-Bold@0 SF2.607 E F0 .106(is the \214rst ar)2.607 F .106 +(gument, and the directory change)-.18 F .038 +(is successful, the absolute pathname of the ne)144 96 R 2.538(ww)-.25 G +.038(orking directory is written to the standard output.)-2.638 F +(The return v)144 108 Q(alue is true if the directory w)-.25 E +(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F2(command)108 +124.8 Q F0([)2.5 E F2(\255pVv)A F0(])A/F3 10/Times-Italic@0 SF(command) +2.5 E F0([)2.5 E F3(ar)A(g)-.37 E F0(...])2.5 E(Run)144 136.8 Q F3 +(command)2.765 E F0(with)3.335 E F3(ar)2.895 E(gs)-.37 E F0 .065 +(suppressing the normal shell function lookup.)2.835 F .064(Only b)5.064 +F .064(uiltin commands or)-.2 F .501(commands found in the)144 148.8 R +F1 -.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G +3.002(cuted. If).15 F(the)3.002 E F23.002 E F0 .502(option is gi) +3.002 F -.15(ve)-.25 G .502(n, the search for).15 F F3(command)3.202 E +F0(is)3.772 E .4(performed using a def)144 160.8 R .4(ault v)-.1 F .4 +(alue for)-.25 F F1 -.666(PA)2.9 G(TH)-.189 E F0 .399 +(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If) +5.399 E .174(either the)144 172.8 R F22.674 E F0(or)2.674 E F2 +2.674 E F0 .175(option is supplied, a description of)2.674 F F3 +(command)2.875 E F0 .175(is printed.)3.445 F(The)5.175 E F22.675 E +F0 .175(option causes)2.675 F 3.318(as)144 184.8 S .818(ingle w)-3.318 F +.817(ord indicating the command or \214lename used to in)-.1 F -.2(vo) +-.4 G -.1(ke).2 G F3(command)3.617 E F0 .817(to be displayed; the)4.087 +F F2144 196.8 Q F0 .249(option produces a more v)2.749 F .249 +(erbose description.)-.15 F .249(If the)5.249 F F22.749 E F0(or) +2.749 E F22.75 E F0 .25(option is supplied, the e)2.75 F .25 +(xit status)-.15 F 1.005(is 0 if)144 208.8 R F3(command)3.705 E F0 -.1 +(wa)4.275 G 3.505(sf).1 G 1.005(ound, and 1 if not.)-3.505 F 1.004 +(If neither option is supplied and an error occurred or)6.005 F F3 +(command)144.2 220.8 Q F0 1.598(cannot be found, the e)4.868 F 1.599 +(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.599 +(xit status of the)-.15 F F2(command)4.099 E F0 -.2(bu)144 232.8 S +(iltin is the e).2 E(xit status of)-.15 E F3(command)2.5 E F0(.).77 E F2 +(compgen)108 249.6 Q F0([)2.5 E F3(option)A F0 2.5(][)C F3(wor)-2.5 E(d) +-.37 E F0(])A .013(Generate possible completion matches for)144 261.6 R +F3(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F3(option)2.513 +E F0 .013(s, which may be an)B 2.512(yo)-.15 G(ption)-2.512 E .981 +(accepted by the)144 273.6 R F2(complete)3.481 E F0 -.2(bu)3.481 G .981 +(iltin with the e).2 F .981(xception of)-.15 F F23.481 E F0(and) +3.481 E F23.481 E F0 3.481(,a)C .982(nd write the matches to the) +-3.481 F .131(standard output.)144 285.6 R .131(When using the)5.131 F +F22.631 E F0(or)2.631 E F22.631 E F0 .131(options, the v) +2.631 F .13(arious shell v)-.25 F .13(ariables set by the program-)-.25 +F(mable completion f)144 297.6 Q(acilities, while a)-.1 E -.25(va)-.2 G (ilable, will not ha).25 E .3 -.15(ve u)-.2 H(seful v).15 E(alues.)-.25 -E .352(The matches will be generated in the same w)144 156 R .352 +E .352(The matches will be generated in the same w)144 321.6 R .352 (ay as if the programmable completion code had gen-)-.1 F .02(erated th\ em directly from a completion speci\214cation with the same \215ags.)144 -168 R(If)5.02 E F2(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only)2.52 -F(those completions matching)144 180 Q F2(wor)2.5 E(d)-.37 E F0 -(will be displayed.)2.5 E(The return v)144 204 Q +333.6 R(If)5.02 E F3(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only) +2.52 F(those completions matching)144 345.6 Q F3(wor)2.5 E(d)-.37 E F0 +(will be displayed.)2.5 E(The return v)144 369.6 Q (alue is true unless an in)-.25 E -.25(va)-.4 G -(lid option is supplied, or no matches were generated.).25 E F1 -(complete)108 220.8 Q F0([)3.729 E F1(\255abcdefgjksuv)A F0 3.729(][)C -F1-3.729 E F2(comp-option)3.729 E F0 3.729(][)C F1(\255DE)-3.729 E -F0 3.728(][)C F1-3.728 E F2(action)3.728 E F0 3.728(][)C F1 --3.728 E F2(globpat)3.728 E F0 3.728(][)C F1-3.728 E F2(wor)3.728 -E(dlist)-.37 E F0 3.728(][)C F1-3.728 E F2(func-)3.728 E(tion)108 -232.8 Q F0 2.5(][)C F1-2.5 E F2(command)2.5 E F0(])A([)144 244.8 Q -F1A F2(\214lterpat)2.5 E F0 2.5(][)C F1-2.5 E F2(pr)2.5 E -(e\214x)-.37 E F0 2.5(][)C F1-2.5 E F2(suf)2.5 E<8c78>-.18 E F0(]) -A F2(name)2.5 E F0([)2.5 E F2(name ...)A F0(])A F1(complete \255pr)108 -256.8 Q F0([)2.5 E F1(\255DE)A F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E -.633(Specify ho)144 268.8 R 3.133(wa)-.25 G -.18(rg)-3.133 G .633 -(uments to each).18 F F2(name)3.133 E F0 .633(should be completed.)3.133 -F .634(If the)5.634 F F13.134 E F0 .634 -(option is supplied, or if no)3.134 F .14(options are supplied, e)144 -280.8 R .139(xisting completion speci\214cations are printed in a w)-.15 -F .139(ay that allo)-.1 F .139(ws them to be)-.25 F .31 -(reused as input.)144 292.8 R(The)5.31 E F12.81 E F0 .31 +(lid option is supplied, or no matches were generated.).25 E F2 +(complete)108 386.4 Q F0([)3.404 E F2(\255abcdefgjksuv)A F0 3.404(][)C +F2-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 F2(name)2.81 E F0 2.81(,o)C -1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F2(name)2.81 E F0(s)A 1.347 -(are supplied, all completion speci\214cations.)144 304.8 R(The)6.347 E -F13.847 E F0 1.346(option indicates that the remaining options) -3.847 F .5(and actions should apply to the `)144 316.8 R(`def)-.74 E +(ompletion speci\214cation for each)-2.81 F F3(name)2.81 E F0 2.81(,o)C +1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F3(name)2.81 E F0(s)A 1.207 +(are supplied, all completion speci\214cations.)144 470.4 R(The)6.207 E +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 -328.8 S .955(ommand for which no completion has pre)-3.455 F .955 -(viously been de\214ned.)-.25 F(The)5.955 E F13.455 E F0 .955 -(option indicates that)3.455 F .064 -(the remaining options and actions should apply to `)144 340.8 R -(`empty')-.74 E 2.565('c)-.74 G .065 -(ommand completion; that is, comple-)-2.565 F -(tion attempted on a blank line.)144 352.8 Q 1.438 +494.4 S .955(ommand for which no completion has pre)-3.455 F .955 +(viously been de\214ned.)-.25 F(The)5.955 E F23.455 E F0 .955 +(option indicates that)3.455 F .876 +(other supplied options and actions should apply to `)144 506.4 R +(`empty')-.74 E 3.376('c)-.74 G .876(ommand completion; that is, com-) +-3.376 F .447(pletion attempted on a blank line.)144 518.4 R(The)5.447 E +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 -376.8 R 1.437(ord completion is attempted is)-.1 F(described abo)144 -388.8 Q .3 -.15(ve u)-.15 H(nder).15 E F1(Pr)2.5 E +602.4 R 1.437(ord completion is attempted is)-.1 F(described abo)144 +614.4 Q .3 -.15(ve u)-.15 H(nder).15 E F2(Pr)2.5 E (ogrammable Completion)-.18 E F0(.)A .555 -(Other options, if speci\214ed, ha)144 412.8 R .855 -.15(ve t)-.2 H .555 +(Other options, if speci\214ed, ha)144 638.4 R .855 -.15(ve t)-.2 H .555 (he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F .555 -(guments to the)-.18 F 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 424.8 R 3.223(,t)-.65 G(he)-3.223 E F13.223 E F0(and)3.223 E -F13.223 E F0 .722 +(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 436.8 Q F1(complete)2.5 E F0 -.2(bu)2.5 G -(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1144 448.8 Q -F2(comp-option)2.5 E F0(The)184 460.8 Q F2(comp-option)2.79 E F0 .291 +(sion before the)144 662.4 Q F2(complete)2.5 E F0 -.2(bu)2.5 G +(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E 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 472.8 Q F2 -(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 484.8 Q F0 -.281(Perform the rest of the def)224 496.8 R(ault)-.1 E F1(bash)2.781 E -F0 .281(completions if the compspec generates no)2.781 F(matches.)224 -508.8 Q F1(default)184 520.8 Q F0 2.875(Use readline')224 520.8 R 5.375 -(sd)-.55 G(ef)-5.375 E 2.876 -(ault \214lename completion if the compspec generates no)-.1 F(matches.) -224 532.8 Q F1(dir)184 544.8 Q(names)-.15 E F0(Perform directory name c\ -ompletion if the compspec generates no matches.)224 556.8 Q F1 -(\214lenames)184 568.8 Q F0 -.7(Te)224 580.8 S .137(ll readline that th\ -e compspec generates \214lenames, so it can perform an).7 F 2.636<798c> --.15 G(le-)-2.636 E .134(name\255speci\214c processing \(lik)224 592.8 R -2.634(ea)-.1 G .134(dding a slash to directory names, quoting spe-) --2.634 F .45(cial characters, or suppressing trailing spaces\).)224 -604.8 R .45(Intended to be used with shell)5.45 F(functions.)224 616.8 Q -F1(noquote)184 628.8 Q F0 -.7(Te)224 628.8 S .814 -(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F -3.314(ya)-.15 G .815(re \214lenames \(quoting)-3.314 F -(\214lenames is the def)224 640.8 Q(ault\).)-.1 E F1(nosort)184 652.8 Q -F0 -.7(Te)224 652.8 S(ll readline not to sort the list of possible comp\ -letions alphabetically).7 E(.)-.65 E F1(nospace)184 664.8 Q F0 -.7(Te) -224 664.8 S .22(ll readline not to append a space \(the def).7 F .22 -(ault\) to w)-.1 F .22(ords completed at the end)-.1 F(of the line.)224 -676.8 Q F1(plusdirs)184 688.8 Q F0 1.985(After an)224 688.8 R 4.485(ym) --.15 G 1.985 -(atches de\214ned by the compspec are generated, directory name)-4.485 F -.584(completion is attempted and an)224 700.8 R 3.084(ym)-.15 G .584 -(atches are added to the results of the other)-3.084 F(actions.)224 -712.8 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(56)192.055 E 0 Cg -EP -%%Page: 57 57 +(yond the simple)-.15 F(generation of completions.)184 698.4 Q F3 +(comp-option)5 E F0(may be one of:)2.5 E(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(58)188.455 E 0 Cg EP +%%Page: 59 59 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 96 Q F2 -(action)2.5 E F0(may be one of the follo)2.5 E +SF(bashdefault)184 84 Q F0 .281(Perform the rest of the def)224 96 R +(ault)-.1 E F1(bash)2.781 E F0 .281 +(completions if the compspec generates no)2.781 F(matches.)224 108 Q F1 +(default)184 120 Q F0 2.875(Use readline')224 120 R 5.375(sd)-.55 G(ef) +-5.375 E 2.876(ault \214lename completion if the compspec generates no) +-.1 F(matches.)224 132 Q F1(dir)184 144 Q(names)-.15 E F0(Perform direc\ +tory name completion if the compspec generates no matches.)224 156 Q F1 +(\214lenames)184 168 Q F0 -.7(Te)224 180 S .137(ll readline that the co\ +mpspec generates \214lenames, so it can perform an).7 F 2.636<798c>-.15 +G(le-)-2.636 E .134(name\255speci\214c processing \(lik)224 192 R 2.634 +(ea)-.1 G .134(dding a slash to directory names, quoting spe-)-2.634 F +.45(cial characters, or suppressing trailing spaces\).)224 204 R .45 +(Intended to be used with shell)5.45 F(functions.)224 216 Q F1(noquote) +184 228 Q F0 -.7(Te)224 228 S .814 +(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F +3.314(ya)-.15 G .815(re \214lenames \(quoting)-3.314 F +(\214lenames is the def)224 240 Q(ault\).)-.1 E F1(nosort)184 252 Q F0 +-.7(Te)224 252 S(ll readline not to sort the list of possible completio\ +ns alphabetically).7 E(.)-.65 E F1(nospace)184 264 Q F0 -.7(Te)224 264 S +.22(ll readline not to append a space \(the def).7 F .22(ault\) to w)-.1 +F .22(ords completed at the end)-.1 F(of the line.)224 276 Q F1 +(plusdirs)184 288 Q F0 1.985(After an)224 288 R 4.485(ym)-.15 G 1.985 +(atches de\214ned by the compspec are generated, directory name)-4.485 F +.584(completion is attempted and an)224 300 R 3.084(ym)-.15 G .584 +(atches are added to the results of the other)-3.084 F(actions.)224 312 +Q 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 -108 Q F0(Alias names.)224 108 Q(May also be speci\214ed as)5 E F1 -2.5 E F0(.)A F1(arrayv)184 120 Q(ar)-.1 E F0(Array v)224 132 Q -(ariable names.)-.25 E F1(binding)184 144 Q(Readline)224 144 Q F0 -.1 -(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 156 S(iltin) -.2 E F0(Names of shell b)224 156 Q(uiltin commands.)-.2 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 168 -Q F0(Command names.)224 180 Q(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(dir)184 192 Q(ectory)-.18 E F0(Directory names.)224 204 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 216 -Q F0(Names of disabled shell b)224 228 Q(uiltins.)-.2 E F1(enabled)184 -240 Q F0(Names of enabled shell b)224 240 Q(uiltins.)-.2 E F1(export)184 -252 Q F0(Names of e)224 252 Q(xported shell v)-.15 E 2.5(ariables. May) +348 Q F0(Alias names.)224 348 Q(May also be speci\214ed as)5 E F1 +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 -264 Q F0(File names.)224 264 Q(May also be speci\214ed as)5 E F1 -2.5 E F0(.)A F1(function)184 276 Q F0(Names of shell functions.)224 288 -Q F1(gr)184 300 Q(oup)-.18 E F0(Group names.)224 300 Q +504 Q F0(File names.)224 504 Q(May also be speci\214ed as)5 E F1 +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 -312 Q F0(Help topics as accepted by the)224 324 Q F1(help)2.5 E F0 -.2 -(bu)2.5 G(iltin.).2 E F1(hostname)184 336 Q F0(Hostnames, as tak)224 348 +552 Q F0(Help topics as accepted by the)224 564 Q F1(help)2.5 E F0 -.2 +(bu)2.5 G(iltin.).2 E F1(hostname)184 576 Q F0(Hostnames, as tak)224 588 Q(en from the \214le speci\214ed by the)-.1 E/F3 9/Times-Bold@0 SF -(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 360 Q F0 -(Job names, if job control is acti)224 360 Q -.15(ve)-.25 G 5(.M).15 G -(ay also be speci\214ed as)-5 E F12.5 E F0(.)A F1 -.1(ke)184 372 S -(yw).1 E(ord)-.1 E F0(Shell reserv)224 384 Q(ed w)-.15 E 2.5(ords. May) +(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 600 Q F0 +(Job names, if job control is acti)224 600 Q -.15(ve)-.25 G 5(.M).15 G +(ay also be speci\214ed as)-5 E 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 -396 Q F0(Names of running jobs, if job control is acti)224 396 Q -.15 -(ve)-.25 G(.).15 E F1(ser)184 408 Q(vice)-.1 E F0(Service names.)224 408 -Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 420 -Q F0 -1.11(Va)224 420 S(lid ar)1.11 E(guments for the)-.18 E 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 432 Q F0(Shell option names as accepted by the)224 432 Q F1 -(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 444 Q F0 -(Signal names.)224 444 Q F1(stopped)184 456 Q F0 -(Names of stopped jobs, if job control is acti)224 456 Q -.15(ve)-.25 G -(.).15 E F1(user)184 468 Q F0(User names.)224 468 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 480 S -(riable).1 E F0(Names of all shell v)224 480 Q 2.5(ariables. May)-.25 F -(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 492 Q F2 -(command)2.5 E(command)184 504 Q F0 1.055(is e)3.555 F -.15(xe)-.15 G -1.055(cuted in a subshell en).15 F 1.056 -(vironment, and its output is used as the possible)-.4 F(completions.) -184 516 Q F1144 528 Q F2(function)2.5 E F0 .114 -(The shell function)184 540 R F2(function)2.614 E F0 .114(is e)2.614 F +(shopt)184 672 Q F0(Shell option names as accepted by the)224 672 Q F1 +(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 684 Q F0 +(Signal names.)224 684 Q F1(stopped)184 696 Q F0 +(Names of stopped jobs, if job control is acti)224 696 Q -.15(ve)-.25 G +(.).15 E F1(user)184 708 Q F0(User names.)224 708 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A(GNU Bash 5.0)72 768 +Q(2018 December 7)139.295 E(59)188.455 E 0 Cg EP +%%Page: 60 60 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF -.1(va)184 84 S(riable).1 E F0(Names of all shell v)224 84 Q 2.5 +(ariables. May)-.25 F(also be speci\214ed as)2.5 E 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 .113(the func-)2.613 F .816(tion is e)184 552 R +(vironment. When)-.4 F .113(the func-)2.613 F .816(tion is e)184 156 R -.15(xe)-.15 G .816(cuted, the \214rst ar).15 F .816(gument \()-.18 F F1 ($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .817 (he name of the command whose ar)-3.316 F(guments)-.18 E 1.407 -(are being completed, the second ar)184 564 R 1.407(gument \()-.18 F F1 +(are being completed, the second ar)184 168 R 1.407(gument \()-.18 F F1 ($2)A F0 3.907(\)i)C 3.907(st)-3.907 G 1.407(he w)-3.907 F 1.407 -(ord being completed, and the)-.1 F .103(third ar)184 576 R .103 +(ord being completed, and the)-.1 F .103(third ar)184 180 R .103 (gument \()-.18 F F1($3)A F0 2.603(\)i)C 2.603(st)-2.603 G .103(he w) -2.603 F .104(ord preceding the w)-.1 F .104 -(ord being completed on the current com-)-.1 F .102(mand line.)184 588 R +(ord being completed on the current com-)-.1 F .102(mand line.)184 192 R .102(When it \214nishes, the possible completions are retrie)5.102 F -.15(ve)-.25 G 2.601(df).15 G .101(rom the v)-2.601 F .101(alue of the) --.25 F F3(COMPREPL)184 600 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E -F1144 612 Q F2(globpat)2.5 E F0 1.007(The pathname e)184 624 R -1.007(xpansion pattern)-.15 F F2(globpat)3.507 E F0 1.007(is e)3.507 F -1.008(xpanded to generate the possible comple-)-.15 F(tions.)184 636 Q -F1144 648 Q F2(pr)2.5 E(e\214x)-.37 E(pr)184 660 Q(e\214x)-.37 E -F0 .535(is added at the be)3.035 F .534 +-.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 204 Q(Y)-.828 E F0(array v)2.25 +E(ariable.)-.25 E 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 672 Q F1144 684 Q F2(suf)2.5 E -<8c78>-.18 E(suf)184 684 Q<8c78>-.18 E F0 +-.15(ve)-.2 G(been applied.)184 276 Q 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 696 Q F2(wor)2.5 E -(dlist)-.37 E F0(The)184 708 Q F2(wor)3.639 E(dlist)-.37 E F0 1.14 +E .3 -.15(ve b)-.2 H(een applied.).15 E 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 2.008 -(each resultant w)184 720 R 2.008(ord is e)-.1 F 4.508(xpanded. The)-.15 -F 2.007(possible completions are the members of the)4.508 F -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(57)192.055 E 0 Cg EP -%%Page: 58 58 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(resultant list which match the w)184 84 Q(ord being completed.)-.1 E/F1 -10/Times-Bold@0 SF144 96 Q/F2 10/Times-Italic@0 SF(\214lterpat)2.5 -E(\214lterpat)184 108 Q F0 .455(is a pattern as used for pathname e) -2.955 F 2.956(xpansion. It)-.15 F .456 -(is applied to the list of possible)2.956 F 1.596 -(completions generated by the preceding options and ar)184 120 R 1.596 -(guments, and each completion)-.18 F(matching)184 132 Q F2(\214lterpat) +(special v)3.39 F 1.14(ariable as delimiters, and)-.25 F .981 +(each resultant w)184 324 R .981(ord is e)-.1 F 3.481(xpanded. Shell) +-.15 F .981(quoting is honored within)3.481 F F2(wor)3.481 E(dlist)-.37 +E F0 3.48(,i)C 3.48(no)-3.48 G .98(rder to)-3.48 F(pro)184 336 Q .765 +(vide a mechanism for the w)-.15 F .766 +(ords to contain shell metacharacters or characters in the)-.1 F -.25 +(va)184 348 S 1.965(lue of).25 F F3(IFS)4.465 E/F4 9/Times-Roman@0 SF(.) +A F0 1.964 +(The possible completions are the members of the resultant list which) +6.465 F(match the w)184 360 Q(ord being completed.)-.1 E 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 144 Q 2.5(yc)-.15 G +(tes the pattern;).05 F(in this case, an)184 420 Q 2.5(yc)-.15 G (ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E --.15(ve)-.15 G(d.).15 E .467(The return v)144 160.8 R .467 +-.15(ve)-.15 G(d.).15 E .467(The return v)144 436.8 R .467 (alue is true unless an in)-.25 F -.25(va)-.4 G .466 (lid option is supplied, an option other than).25 F F12.966 E F0 (or)2.966 E F12.966 E F0 .466(is sup-)2.966 F 1.361 -(plied without a)144 172.8 R F2(name)3.861 E F0(ar)3.861 E 1.361 +(plied without a)144 448.8 R F2(name)3.861 E F0(ar)3.861 E 1.361 (gument, an attempt is made to remo)-.18 F 1.662 -.15(ve a c)-.15 H -1.362(ompletion speci\214cation for a).15 F F2(name)144 184.8 Q F0 +1.362(ompletion speci\214cation for a).15 F F2(name)144 460.8 Q F0 (for which no speci\214cation e)2.5 E (xists, or an error occurs adding a completion speci\214cation.)-.15 E -F1(compopt)108 201.6 Q F0([)2.5 E 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 213.6 R -F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0 +F1(compopt)108 477.6 Q F0([)2.5 E 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 225.6 R F2(name)3.225 E F0 3.225(sa)C .725 +(completion if no)144 501.6 R F2(name)3.225 E F0 3.225(sa)C .725 (re supplied.)-3.225 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa) C .725(re gi)-3.225 F -.15(ve)-.25 G .726 -(n, display the completion options for).15 F(each)144 237.6 Q F2(name) +(n, display the completion options for).15 F(each)144 513.6 Q F2(name) 3.224 E F0 .724(or the current completion.)3.224 F .724(The possible v) 5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224 -F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 249.6 Q F0 -.2(bu) -2.797 G .297(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) --5.297 E F12.797 E F0 .297 -(option indicates that the remaining options should apply to)2.797 F -1.228(the `)144 261.6 R(`def)-.74 E(ault')-.1 E 3.728('c)-.74 G 1.228(o\ +F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 525.6 Q F0 -.2(bu) +2.677 G .177(iltin described abo).2 F -.15(ve)-.15 G 5.178(.T).15 G(he) +-5.178 E 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.728 F 2.177(completion has pre)144 273.6 R 2.177 -(viously been de\214ned.)-.25 F(The)7.177 E F14.677 E F0 2.178 -(option indicates that the remaining options)4.678 F(should apply to `) -144 285.6 Q(`empty')-.74 E 2.5('c)-.74 G -(ommand completion; that is, completion attempted on a blank line.)-2.5 -E 1.388(The return v)144 309.6 R 1.388(alue is true unless an in)-.25 F --.25(va)-.4 G 1.387 +no)-3.728 F 2.038(completion has pre)144 549.6 R 2.038 +(viously been de\214ned.)-.25 F(The)7.038 E 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 321.6 Q F2(name)2.5 E F0 +(options for a)144 633.6 Q F2(name)2.5 E F0 (for which no completion speci\214cation e)2.5 E -(xists, or an output error occurs.)-.15 E F1(continue)108 338.4 Q F0([) -2.5 E F2(n)A F0(])A 1.753(Resume the ne)144 350.4 R 1.753 +(xists, or an output error occurs.)-.15 E F1(continue)108 650.4 Q F0([) +2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 662.4 R 1.754 (xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r).25 E F0(,)A F1(while)4.254 E F0(,)A F1(until)4.254 E F0 4.254(,o)C(r)-4.254 E F1 -(select)4.254 E F0 4.254(loop. If)4.254 F F2(n)4.614 E F0 1.754 -(is speci\214ed,)4.494 F 1.209(resume at the)144 362.4 R F2(n)3.709 E F0 -1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F3 10 +(select)4.254 E F0 4.253(loop. If)4.254 F F2(n)4.613 E F0 1.753 +(is speci\214ed,)4.493 F 1.208(resume at the)144 674.4 R F2(n)3.709 E F0 +1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F5 10 /Symbol 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 .513 -(loops, the last enclosing loop \(the `)144 374.4 R(`top-le)-.74 E -.15 -(ve)-.25 G(l').15 E 3.013('l)-.74 G .513(oop\) is resumed.)-3.013 F .514 -(The return v)5.514 F .514(alue is 0 unless)-.25 F F2(n)3.014 E F0(is) -3.014 E(not greater than or equal to 1.)144 386.4 Q F1(declar)108 403.2 -Q(e)-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1-2.5 E -F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E F1 -(typeset)108 415.2 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1 --2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C -(..])-2.5 E 1.265(Declare v)144 427.2 R 1.265(ariables and/or gi)-.25 F -1.565 -.15(ve t)-.25 H 1.265(hem attrib).15 F 3.765(utes. If)-.2 F(no) -3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 -G 3.764(nt).15 G 1.264(hen display the v)-3.764 F 1.264(alues of)-.25 F --.25(va)144 439.2 S 3.482(riables. The).25 F F13.482 E F0 .982 -(option will display the attrib)3.482 F .982(utes and v)-.2 F .983 -(alues of each)-.25 F F2(name)3.483 E F0 5.983(.W).18 G(hen)-5.983 E F1 -3.483 E F0 .983(is used)3.483 F(with)144 451.2 Q F2(name)2.775 E -F0(ar)2.775 E .275(guments, additional options, other than)-.18 F F1 -2.775 E F0(and)2.775 E F12.775 E F0 2.775(,a)C .274 -(re ignored.)-2.775 F(When)5.274 E F12.774 E F0 .274(is supplied) -2.774 F(without)144 463.2 Q F2(name)4.813 E F0(ar)4.813 E 2.313 -(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.314 -(alues of all v)-.25 F 2.314(ariables ha)-.25 F 2.314(ving the)-.2 F -(attrib)144 475.2 Q 1.182(utes speci\214ed by the additional options.) --.2 F 1.181(If no other options are supplied with)6.182 F F13.681 -E F0(,)A F1(declar)3.681 E(e)-.18 E F0 .62(will display the attrib)144 -487.2 R .62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12 -(ariables. The)-.25 F F13.12 E F0 .62 -(option will restrict the display)3.12 F 1.291(to shell functions.)144 -499.2 R(The)6.291 E F13.791 E F0 1.291(option inhibits the displa\ -y of function de\214nitions; only the function)3.791 F .948 -(name and attrib)144 511.2 R .948(utes are printed.)-.2 F .948(If the) -5.948 F F1(extdeb)3.448 E(ug)-.2 E F0 .948 +(is greater than the number of enclosing)3.949 F .514 +(loops, the last enclosing loop \(the `)144 686.4 R(`top-le)-.74 E -.15 +(ve)-.25 G(l').15 E 3.014('l)-.74 G .514(oop\) is resumed.)-3.014 F .513 +(The return v)5.513 F .513(alue is 0 unless)-.25 F F2(n)3.013 E F0(is) +3.013 E(not greater than or equal to 1.)144 698.4 Q(GNU Bash 5.0)72 768 +Q(2018 December 7)139.295 E(60)188.455 E 0 Cg EP +%%Page: 61 61 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(declar)108 84 Q(e)-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C +F1-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 -523.2 R F2(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19 -F(The)6.69 E F14.19 E F0(option)4.19 E(implies)144 535.2 Q F1 -3.891 E F0 6.391(.T)C(he)-6.391 E F13.891 E F0 1.391 -(option forces v)3.891 F 1.391 +204 R F2(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19 F +(The)6.69 E 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 547.2 Q F1(declar)4.383 E(e)-.18 E F0 1.883 -(is e)4.383 F -.15(xe)-.15 G 1.883(cuted in a shell function.).15 F -1.882(It is ignored in all other cases.)6.883 F 1.882(The follo)6.882 F -(wing)-.25 E .793(options can be used to restrict output to v)144 559.2 -R .794(ariables with the speci\214ed attrib)-.25 F .794(ute or to gi)-.2 -F 1.094 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 571.2 Q(utes:)-.2 E -F1144 583.2 Q F0(Each)180 583.2 Q F2(name)2.5 E F0(is an inde)2.5 -E -.15(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F1 -(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1144 595.2 Q -F0(Each)180 595.2 Q F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a) --.25 H(rray v).15 E(ariable \(see)-.25 E F1(Arrays)2.5 E F0(abo)2.5 E --.15(ve)-.15 G(\).).15 E F1144 607.2 Q F0(Use function names only) -180 607.2 Q(.)-.65 E F1144 619.2 Q F0 .558(The v)180 619.2 R .558 +(ve)-.25 G(n).15 E(when)144 228 Q F1(declar)4.382 E(e)-.18 E F0 1.882 +(is e)4.382 F -.15(xe)-.15 G 1.882(cuted in a shell function.).15 F +1.883(It is ignored in all other cases.)6.882 F 1.883(The follo)6.883 F +(wing)-.25 E .794(options can be used to restrict output to v)144 240 R +.794(ariables with the speci\214ed attrib)-.25 F .793(ute or to gi)-.2 F +1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 252 Q(utes:)-.2 E F1 +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 (ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25 -(va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .557 -(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 631.2 Q F0(abo) -2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v) --2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E F1144 643.2 Q -F0 .909(When the v)180 643.2 R .909(ariable is assigned a v)-.25 F .909 +(va)-.25 G .558(luation \(see).25 F/F3 9/Times-Bold@0 SF .558 +(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 312 Q F0(abo)2.25 +E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v)-2.5 E +(ariable is assigned a v)-.25 E(alue.)-.25 E 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 .91(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 655.2 R -(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 667.2 -Q F0(Gi)180 667.2 Q 1.62 -.15(ve e)-.25 H(ach).15 E F2(name)3.82 E F0 -(the)3.82 E F2(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319 +G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 336 R +(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E 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.518(That other v)180 679.2 R 1.518(ariable is de\214ned by the v)-.25 -F 1.519(alue of)-.25 F F2(name)4.019 E F0 6.519(.A)C 1.519 -(ll references, assignments, and)-6.519 F(attrib)180 691.2 Q .227 +1.519(That other v)180 360 R 1.519(ariable is de\214ned by the v)-.25 F +1.518(alue of)-.25 F F2(name)4.018 E F0 6.518(.A)C 1.518 +(ll references, assignments, and)-6.518 F(attrib)180 372 Q .226 (ute modi\214cations to)-.2 F F2(name)2.726 E F0 2.726(,e)C .226 (xcept those using or changing the)-2.876 F F12.726 E F0(attrib) -2.726 E .226(ute itself, are)-.2 F .808(performed on the v)180 703.2 R -.808(ariable referenced by)-.25 F F2(name)3.308 E F0 1.908 -.55('s v)D -3.308(alue. The).3 F .809(nameref attrib)3.309 F .809(ute cannot be)-.2 -F(applied to array v)180 715.2 Q(ariables.)-.25 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(58)192.055 E 0 Cg EP -%%Page: 59 59 +2.726 E .227(ute itself, are)-.2 F .809(performed on the v)180 384 R +.809(ariable referenced by)-.25 F F2(name)3.308 E F0 1.908 -.55('s v)D +3.308(alue. The).3 F .808(nameref attrib)3.308 F .808(ute cannot be)-.2 +F(applied to array v)180 396 Q(ariables.)-.25 E 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 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 +(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .144 +(Using `+' instead of `\255' turns of)144 496.8 R 2.643(ft)-.25 G .143 +(he attrib)-2.643 F .143(ute instead, with the e)-.2 F .143 +(xceptions that)-.15 F F1(+a)2.643 E F0(and)2.643 E F1(+A)2.643 E F0 +.143(may not)2.643 F .578(be used to destro)144 508.8 R 3.079(ya)-.1 G +.579(rray v)-3.079 F .579(ariables and)-.25 F F1(+r)3.079 E F0 .579 +(will not remo)3.079 F .879 -.15(ve t)-.15 H .579(he readonly attrib).15 +F 3.079(ute. When)-.2 F .579(used in a)3.079 F(function,)144 520.8 Q F1 +(declar)3.544 E(e)-.18 E F0(and)3.544 E F1(typeset)3.544 E F0(mak)3.544 +E 3.544(ee)-.1 G(ach)-3.544 E F2(name)3.543 E F0 1.043 +(local, as with the)3.543 F F1(local)3.543 E F0 1.043 +(command, unless the)3.543 F F13.543 E F0 1.205 +(option is supplied.)144 532.8 R 1.205(If a v)6.205 F 1.205 +(ariable name is follo)-.25 F 1.205(wed by =)-.25 F F2(value)A F0 3.705 +(,t)C 1.205(he v)-3.705 F 1.205(alue of the v)-.25 F 1.205 +(ariable is set to)-.25 F F2(value)144 544.8 Q F0 5.218(.W)C .218 +(hen using)-5.218 F F12.718 E F0(or)2.718 E F12.718 E F0 +.217(and the compound assignment syntax to create array v)2.717 F .217 +(ariables, addi-)-.25 F .882(tional attrib)144 556.8 R .882 +(utes do not tak)-.2 F 3.382(ee)-.1 G -.25(ff)-3.382 G .882 +(ect until subsequent assignments.).25 F .882(The return v)5.882 F .882 +(alue is 0 unless an)-.25 F(in)144 568.8 Q -.25(va)-.4 G 1.26(lid optio\ +n is encountered, an attempt is made to de\214ne a function using).25 F +/F4 10/Courier@0 SF 1.26(\255f foo=bar)3.76 F F0 3.76(,a)C(n)-3.76 E +.187(attempt is made to assign a v)144 580.8 R .187 +(alue to a readonly v)-.25 F .188 +(ariable, an attempt is made to assign a v)-.25 F .188(alue to an)-.25 F +1.749(array v)144 592.8 R 1.749 +(ariable without using the compound assignment syntax \(see)-.25 F F1 +(Arrays)4.248 E F0(abo)4.248 E -.15(ve)-.15 G 1.748(\), one of the).15 F +F2(names)144 604.8 Q F0 .359(is not a v)2.858 F .359(alid shell v)-.25 F +.359(ariable name, an attempt is made to turn of)-.25 F 2.859(fr)-.25 G +.359(eadonly status for a read-)-2.859 F 1.213(only v)144 616.8 R 1.213 +(ariable, an attempt is made to turn of)-.25 F 3.713(fa)-.25 G 1.213 +(rray status for an array v)-3.713 F 1.212(ariable, or an attempt is) +-.25 F(made to display a non-e)144 628.8 Q(xistent function with)-.15 E +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(2018 December 7)139.295 E(61) +188.455 E 0 Cg EP +%%Page: 62 62 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q F0(Mak)180 84 Q(e)-.1 E/F2 10/Times-Italic@0 SF(name) -5.047 E F0 5.047(sr)C(eadonly)-5.047 E 7.547(.T)-.65 G 2.546 -(hese names cannot then be assigned v)-7.547 F 2.546 -(alues by subsequent)-.25 F(assignment statements or unset.)180 96 Q F1 -144 108 Q F0(Gi)180 108 Q .729 -.15(ve e)-.25 H(ach).15 E F2(name) -2.929 E F0(the)2.929 E F2(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E 2.929 -(ute. T)-.2 F .429(raced functions inherit the)-.35 F F1(DEB)2.929 E(UG) --.1 E F0(and)2.93 E F1(RETURN)2.93 E F0(traps from the calling shell.) -180 120 Q(The trace attrib)5 E(ute has no special meaning for v)-.2 E -(ariables.)-.25 E F1144 132 Q F0 .91(When the v)180 132 R .909 -(ariable is assigned a v)-.25 F .909(alue, all lo)-.25 F(wer)-.25 E .909 -(-case characters are con)-.2 F -.15(ve)-.4 G .909(rted to upper).15 F -(-)-.2 E 2.5(case. The)180 144 R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 E -(ute is disabled.)-.2 E F1144 156 Q F0(Mark)180 156 Q F2(name)2.5 -E F0 2.5(sf)C(or e)-2.5 E(xport to subsequent commands via the en)-.15 E -(vironment.)-.4 E .12(Using `+' instead of `\255' turns of)144 172.8 R -2.62(ft)-.25 G .12(he attrib)-2.62 F .121(ute instead, with the e)-.2 F -.121(xceptions that)-.15 F F1(+a)2.621 E F0 .121(may not be used)2.621 F -.645(to destro)144 184.8 R 3.145(ya)-.1 G 3.145(na)-3.145 G .645(rray v) --3.145 F .645(ariable and)-.25 F F1(+r)3.145 E F0 .645(will not remo) -3.145 F .945 -.15(ve t)-.15 H .645(he readonly attrib).15 F 3.144 -(ute. When)-.2 F .644(used in a func-)3.144 F(tion,)144 196.8 Q F1 -(declar)2.835 E(e)-.18 E F0(and)2.835 E F1(typeset)2.835 E F0(mak)2.835 -E 2.835(ee)-.1 G(ach)-2.835 E F2(name)2.835 E F0 .335 -(local, as with the)2.835 F F1(local)2.835 E F0 .335 -(command, unless the)2.835 F F12.835 E F0(option)2.835 E 1.283 -(is supplied.)144 208.8 R 1.283(If a v)6.283 F 1.283 -(ariable name is follo)-.25 F 1.283(wed by =)-.25 F F2(value)A F0 3.783 -(,t)C 1.283(he v)-3.783 F 1.283(alue of the v)-.25 F 1.282 -(ariable is set to)-.25 F F2(value)3.782 E F0(.)A .926(When using)144 -220.8 R F13.426 E F0(or)3.426 E F13.426 E F0 .927 -(and the compound assignment syntax to create array v)3.426 F .927 -(ariables, additional)-.25 F(attrib)144 232.8 Q .592(utes do not tak)-.2 -F 3.092(ee)-.1 G -.25(ff)-3.092 G .592 -(ect until subsequent assignments.).25 F .592(The return v)5.592 F .592 -(alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .429 -(option is encountered, an attempt is made to de\214ne a function using) -144 244.8 R/F3 10/Courier@0 SF .429(\255f foo=bar)2.929 F F0 2.929(,a)C -2.929(na)-2.929 G .429(ttempt is)-2.929 F .063(made to assign a v)144 -256.8 R .063(alue to a readonly v)-.25 F .062 -(ariable, an attempt is made to assign a v)-.25 F .062 -(alue to an array v)-.25 F(ari-)-.25 E .102 -(able without using the compound assignment syntax \(see)144 268.8 R F1 -(Arrays)2.602 E F0(abo)2.602 E -.15(ve)-.15 G .102(\), one of the).15 F -F2(names)2.602 E F0 .102(is not a)2.602 F -.25(va)144 280.8 S .172 -(lid shell v).25 F .171(ariable name, an attempt is made to turn of)-.25 -F 2.671(fr)-.25 G .171(eadonly status for a readonly v)-2.671 F .171 -(ariable, an)-.25 F .96(attempt is made to turn of)144 292.8 R 3.46(fa) --.25 G .96(rray status for an array v)-3.46 F .96 -(ariable, or an attempt is made to display a)-.25 F(non-e)144 304.8 Q -(xistent function with)-.15 E F12.5 E F0(.)A F1 -(dirs [\255clpv] [+)108 321.6 Q F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 -(])A F0 -.4(Wi)144 333.6 S .329 -(thout options, displays the list of currently remembered directories.) -.4 F .328(The def)5.328 F .328(ault display is on a)-.1 F 1.238 -(single line with directory names separated by spaces.)144 345.6 R 1.238 -(Directories are added to the list with the)6.238 F F1(pushd)144 357.6 Q -F0 2.003(command; the)4.504 F F1(popd)4.503 E F0 2.003(command remo) -4.503 F -.15(ve)-.15 G 4.503(se).15 G 2.003(ntries from the list.)-4.503 -F 2.003(The current directory is)7.003 F(al)144 369.6 Q -.1(wa)-.1 G -(ys the \214rst directory in the stack.).1 E F1144 381.6 Q F0 -(Clears the directory stack by deleting all of the entries.)180 381.6 Q -F1144 393.6 Q F0 .881 -(Produces a listing using full pathnames; the def)180 393.6 R .882 -(ault listing format uses a tilde to denote)-.1 F(the home directory)180 -405.6 Q(.)-.65 E F1144 417.6 Q F0 -(Print the directory stack with one entry per line.)180 417.6 Q F1 -144 429.6 Q F0 .273(Print the directory stack with one entry per line, \ -pre\214xing each entry with its inde)180 429.6 R 2.772(xi)-.15 G 2.772 -(nt)-2.772 G(he)-2.772 E(stack.)180 441.6 Q F1(+)144 453.6 Q F2(n)A F0 -1.564(Displays the)180 453.6 R F2(n)4.064 E F0 1.565 -(th entry counting from the left of the list sho)B 1.565(wn by)-.25 F F1 -(dirs)4.065 E F0 1.565(when in)4.065 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E -(without options, starting with zero.)180 465.6 Q F1144 477.6 Q F2 -(n)A F0 1.194(Displays the)180 477.6 R F2(n)3.694 E F0 1.194 +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 489.6 Q .257(The return v)144 -506.4 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 +(without options, starting with zero.)180 156 Q .258(The return v)144 +172.8 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 (lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe) -.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-) -.15 F(tory stack.)144 518.4 Q F1(diso)108 535.2 Q(wn)-.1 E F0([)2.5 E F1 +.15 F(tory stack.)144 184.8 Q F1(diso)108 201.6 Q(wn)-.1 E F0([)2.5 E F1 (\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0 -(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 547.2 S .122 +(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 213.6 S .121 (thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec) 4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H -2.622(obs. If).15 F F2(jobspec)4.362 E F0 .121(is not present, and)2.932 -F .096(neither the)144 559.2 R F12.596 E F0 .096(nor the)2.596 F +2.622(obs. If).15 F F2(jobspec)4.362 E F0 .122(is not present, and)2.932 +F .096(neither the)144 225.6 R 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 571.2 Q F0 .586(is not remo)3.396 F -.15(ve)-.15 -G 3.086(df).15 G .585(rom the table, b)-3.086 F .585(ut is mark)-.2 F -.585(ed so that)-.1 F/F4 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .585 -(is not sent to the job if the)2.835 F .962(shell recei)144 583.2 R -.15 -(ve)-.25 G 3.462(sa).15 G F4(SIGHUP)A/F5 9/Times-Roman@0 SF(.)A F0 .962 +.15 F F2(jobspec)145.74 237.6 Q F0 .585(is not remo)3.395 F -.15(ve)-.15 +G 3.085(df).15 G .585(rom the table, b)-3.085 F .585(ut is mark)-.2 F +.585(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .586 +(is not sent to the job if the)2.835 F .962(shell recei)144 249.6 R -.15 +(ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962 (If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1 3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15 -H 3.462(rm).15 G .962(ark all)-3.462 F 1.359(jobs; the)144 595.2 R F1 -3.859 E F0 1.359(option without a)3.859 F F2(jobspec)5.599 E F0 -(ar)4.169 E 1.358(gument restricts operation to running jobs.)-.18 F -1.358(The return)6.358 F -.25(va)144 607.2 S(lue is 0 unless a).25 E F2 +H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 261.6 R F1 +3.858 E F0 1.358(option without a)3.858 F F2(jobspec)5.598 E F0 +(ar)4.169 E 1.359(gument restricts operation to running jobs.)-.18 F +1.359(The return)6.359 F -.25(va)144 273.6 S(lue is 0 unless a).25 E F2 (jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E -F1(echo)108 624 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) --.37 E F0(...])2.5 E .424(Output the)144 636 R F2(ar)2.924 E(g)-.37 E F0 -.424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 -(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .308 -(error occurs.)144 648 R(If)5.308 E F12.808 E F0 .308 -(is speci\214ed, the trailing ne)2.808 F .308(wline is suppressed.)-.25 -F .307(If the)5.308 F F12.807 E F0 .307(option is gi)2.807 F -.15 -(ve)-.25 G .307(n, inter).15 F(-)-.2 E 1.348(pretation of the follo)144 -660 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) -6.348 E F13.849 E F0 1.349(option disables the)3.849 F 1.055 -(interpretation of these escape characters, e)144 672 R -.15(ve)-.25 G -3.555(no).15 G 3.555(ns)-3.555 G 1.055(ystems where the)-3.555 F 3.554 -(ya)-.15 G 1.054(re interpreted by def)-3.554 F(ault.)-.1 E(The)144 684 -Q F1(xpg_echo)3.458 E F0 .959 -(shell option may be used to dynamically determine whether or not)3.458 -F F1(echo)3.459 E F0 -.15(ex)3.459 G(pands).15 E .716 -(these escape characters by def)144 696 R(ault.)-.1 E F1(echo)5.716 E F0 -.716(does not interpret)3.216 F F13.216 E F0 .715 -(to mean the end of options.)3.216 F F1(echo)5.715 E F0 -(interprets the follo)144 708 Q(wing escape sequences:)-.25 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(59)192.055 E 0 Cg EP -%%Page: 60 60 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(\\a)144 84 Q F0(alert \(bell\))180 84 Q F1(\\b)144 96 Q F0(backspace) -180 96 Q F1(\\c)144 108 Q F0(suppress further output)180 108 Q F1(\\e) -144 120 Q(\\E)144 132 Q F0(an escape character)180 132 Q F1(\\f)144 144 -Q F0(form feed)180 144 Q F1(\\n)144 156 Q F0(ne)180 156 Q 2.5(wl)-.25 G -(ine)-2.5 E F1(\\r)144 168 Q F0(carriage return)180 168 Q F1(\\t)144 180 -Q F0(horizontal tab)180 180 Q F1(\\v)144 192 Q F0 -.15(ve)180 192 S -(rtical tab).15 E F1(\\\\)144 204 Q F0(backslash)180 204 Q F1(\\0)144 -216 Q/F2 10/Times-Italic@0 SF(nnn)A F0(the eight-bit character whose v) -180 216 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0 -(\(zero to three octal digits\))2.5 E F1(\\x)144 228 Q F2(HH)A F0 -(the eight-bit character whose v)180 228 Q(alue is the he)-.25 E -(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh) --.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1(\\u)144 240 Q F2(HHHH)A F0 -1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 252 R 1.507 -(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) -4.007 E F0(\(one to four he)180 264 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 -(\\U)144 276 Q F2(HHHHHHHH)A F0 .548 -(the Unicode \(ISO/IEC 10646\) character whose v)180 288 R .547 -(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) -3.047 E(HHH)180 300 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G(igits\)) --2.5 E F1(enable)108 316.8 Q F0([)2.5 E 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 .277(Enable and disable b)144 328.8 R +F1(echo)108 290.4 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) +-.37 E F0(...])2.5 E .425(Output the)144 302.4 R F2(ar)2.925 E(g)-.37 E +F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 +(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .307 +(error occurs.)144 314.4 R(If)5.307 E 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) +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 +3.555(no).15 G 3.555(ns)-3.555 G 1.055(ystems where the)-3.555 F 3.555 +(ya)-.15 G 1.055(re interpreted by def)-3.555 F(ault.)-.1 E(The)144 +350.4 Q F1(xpg_echo)3.459 E F0 .959 +(shell option may be used to dynamically determine whether or not)3.459 +F F1(echo)3.458 E F0 -.15(ex)3.458 G(pands).15 E .715 +(these escape characters by def)144 362.4 R(ault.)-.1 E F1(echo)5.715 E +F0 .716(does not interpret)3.215 F 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 +E(alue)-.25 E F2(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F1 +(\\x)144 530.4 Q F2(HH)A F0(the eight-bit character whose v)180 530.4 Q +(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0 +(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1 +(\\u)144 542.4 Q F2(HHHH)A F0 1.507 +(the Unicode \(ISO/IEC 10646\) character whose v)180 554.4 R 1.506 +(alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) +4.006 E F0(\(one to four he)180 566.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 +(\\U)144 578.4 Q F2(HHHHHHHH)A F0 .547 +(the Unicode \(ISO/IEC 10646\) character whose v)180 590.4 R .547 +(alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) +3.048 E(HHH)180 602.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G +(igits\))-2.5 E F1(enable)108 619.2 Q F0([)2.5 E 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 -(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .834 -(the same name as a shell b)144 340.8 R .834(uiltin to be e)-.2 F -.15 +(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .833 +(the same name as a shell b)144 643.2 R .834(uiltin to be e)-.2 F -.15 (xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15 -(ve)-.25 G 3.333(nt).15 G(hough)-3.333 E .989 -(the shell normally searches for b)144 352.8 R .989 -(uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 .99 -(is used, each)3.49 F F2(name)3.49 E F0 .99(is dis-)3.49 F 1.582 -(abled; otherwise,)144 364.8 R F2(names)4.082 E F0 1.582(are enabled.) +(ve)-.25 G 3.334(nt).15 G(hough)-3.334 E .99 +(the shell normally searches for b)144 655.2 R .989 +(uiltins before disk commands.)-.2 F(If)5.989 E 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.) 4.082 F -.15(Fo)6.582 G 4.082(re).15 G 1.582(xample, to use the)-4.232 F -F1(test)4.082 E F0 1.582(binary found via the)4.082 F/F3 9/Times-Bold@0 -SF -.666(PA)4.081 G(TH)-.189 E F0 .08(instead of the shell b)144 376.8 R -.08(uiltin v)-.2 F .08(ersion, run)-.15 F/F4 10/Courier@0 SF .081 -(enable -n test)2.58 F F0 5.081(.T)C(he)-5.081 E F12.581 E F0 .081 -(option means to load the ne)2.581 F(w)-.25 E -.2(bu)144 388.8 S 1.525 -(iltin command).2 F F2(name)4.385 E F0 1.524(from shared object)4.204 F +F1(test)4.082 E F0 1.582(binary found via the)4.082 F F3 -.666(PA)4.082 +G(TH)-.189 E F0 .081(instead of the shell b)144 679.2 R .081(uiltin v) +-.2 F .081(ersion, run)-.15 F/F5 10/Courier@0 SF .081(enable -n test) +2.581 F F0 5.081(.T)C(he)-5.081 E 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 +(iltin command).2 F F2(name)4.384 E F0 1.524(from shared object)4.204 F F2(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524 -(ystems that support dynamic loading.)-4.024 F(The)144 400.8 Q F1 -2.866 E F0 .366(option will delete a b)2.866 F .366(uiltin pre)-.2 F -.366(viously loaded with)-.25 F F12.867 E F0 5.367(.I)C 2.867(fn) --5.367 G(o)-2.867 E F2(name)2.867 E F0(ar)2.867 E .367(guments are gi) --.18 F -.15(ve)-.25 G .367(n, or).15 F .399(if the)144 412.8 R F1 -2.899 E F0 .399(option is supplied, a list of shell b)2.899 F .399 +(ystems that support dynamic loading.)-4.024 F(The)144 703.2 Q F1 +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 +2.898 E F0 .399(option is supplied, a list of shell b)2.899 F .399 (uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4 -F .398(guments, the)-.18 F .098(list consists of all enabled shell b)144 -424.8 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 -(is supplied, only disabled b)2.598 F .099(uiltins are printed.)-.2 F -(If)5.099 E F12.599 E F0 1.917 -(is supplied, the list printed includes all b)144 436.8 R 1.916 -(uiltins, with an indication of whether or not each is)-.2 F 2.878 -(enabled. If)144 448.8 R F12.878 E F0 .379 -(is supplied, the output is restricted to the POSIX)2.878 F F2(special) -2.879 E F0 -.2(bu)2.879 G 2.879(iltins. The).2 F .379(return v)2.879 F -(alue)-.25 E .995(is 0 unless a)144 460.8 R F2(name)3.855 E F0 .994 -(is not a shell b)3.675 F .994(uiltin or there is an error loading a ne) --.2 F 3.494(wb)-.25 G .994(uiltin from a shared)-3.694 F(object.)144 -472.8 Q F1 -2.3 -.15(ev a)108 489.6 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 -E F0(...])2.5 E(The)144 501.6 Q F2(ar)3.17 E(g)-.37 E F0 3.17(sa)C .671 -(re read and concatenated together into a single command.)-3.17 F .671 -(This command is then read)5.671 F .495(and e)144 513.6 R -.15(xe)-.15 G +F .399(guments, the)-.18 F .099(list consists of all enabled shell b)144 +727.2 R 2.598(uiltins. If)-.2 F 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(2018 December 7) +139.295 E(62)188.455 E 0 Cg EP +%%Page: 63 63 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.916 +(is supplied, the list printed includes all b)144 84 R 1.916 +(uiltins, with an indication of whether or not each is)-.2 F 2.879 +(enabled. If)144 96 R/F1 10/Times-Bold@0 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 525.6 Q +-2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 172.8 Q (guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1 -(exec)108 542.4 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 +(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 554.4 Q F2(command)3.005 E F0 .305 -(is speci\214ed, it replaces the shell.)3.575 F .305(No ne)5.305 F 2.805 -(wp)-.25 G .306(rocess is created.)-2.805 F(The)5.306 E F2(ar)3.136 E -(guments)-.37 E F0(become)3.076 E .177(the ar)144 566.4 R .177 +-.37 E F0(]])A(If)144 201.6 Q F2(command)3.006 E F0 .306 +(is speci\214ed, it replaces the shell.)3.576 F .305(No ne)5.305 F 2.805 +(wp)-.25 G .305(rocess is created.)-2.805 F(The)5.305 E F2(ar)3.135 E +(guments)-.37 E F0(become)3.075 E .176(the ar)144 213.6 R .176 (guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G (he)-2.676 E F12.676 E F0 .176 -(option is supplied, the shell places a dash at the be)2.676 F .176 -(ginning of)-.15 F .499(the zeroth ar)144 578.4 R .499(gument passed to) --.18 F F2(command)2.999 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2 -(lo)2.999 E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.5 E F13 E F0 -.5(option causes)3 F F2(com-)3.2 E(mand)144 590.4 Q F0 .639(to be e) -3.909 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 +(option is supplied, the shell places a dash at the be)2.676 F .177 +(ginning of)-.15 F .5(the zeroth ar)144 225.6 R .5(gument passed to)-.18 +F F2(command)3 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2(lo)2.999 +E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.499 E 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.498 E F0 .638(as the) -3.318 F 1.077(zeroth ar)144 602.4 R 1.077(gument to the e)-.18 F -.15 +(is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the) +3.319 F 1.078(zeroth ar)144 249.6 R 1.077(gument to the e)-.18 F -.15 (xe)-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 1.077(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a) -.15 F(non-interacti)144 614.4 Q .877 -.15(ve s)-.25 H .577(hell e).15 F -.577(xits, unless the)-.15 F F1(execfail)3.077 E F0 .577 -(shell option is enabled.)3.077 F .576(In that case, it returns f)5.577 -F(ail-)-.1 E 2.505(ure. An)144 626.4 R(interacti)2.505 E .305 -.15(ve s) --.25 H .005(hell returns f).15 F .005(ailure if the \214le cannot be e) --.1 F -.15(xe)-.15 G 2.505(cuted. If).15 F F2(command)2.705 E F0 .005 -(is not speci\214ed,)3.275 F(an)144 638.4 Q 3.037(yr)-.15 G .537 -(edirections tak)-3.037 F 3.036(ee)-.1 G -.25(ff)-3.036 G .536 -(ect in the current shell, and the return status is 0.).25 F .536 -(If there is a redirection)5.536 F(error)144 650.4 Q 2.5(,t)-.4 G -(he return status is 1.)-2.5 E F1(exit)108 667.2 Q F0([)2.5 E F2(n)A F0 -(])A .095(Cause the shell to e)144 667.2 R .095(xit with a status of) --.15 F F2(n)2.595 E F0 5.095(.I)C(f)-5.095 E F2(n)2.955 E F0 .096 -(is omitted, the e)2.835 F .096(xit status is that of the last command) --.15 F -.15(exe)144 679.2 S 2.5(cuted. A).15 F(trap on)2.5 E F3(EXIT)2.5 -E F0(is e)2.25 E -.15(xe)-.15 G(cuted before the shell terminates.).15 E -F1(export)108 696 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5 -E F0([=)A F2(wor)A(d)-.37 E F0(]] ...)A(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(60)192.055 E 0 Cg EP -%%Page: 61 61 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(export \255p)108 84 Q F0 .257(The supplied)144 96 R/F2 10 -/Times-Italic@0 SF(names)3.117 E F0 .257(are mark)3.027 F .257 -(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257 -(vironment of subsequently e)-.4 F -.15(xe)-.15 G(cuted).15 E 2.626 -(commands. If)144 108 R(the)2.626 E F12.626 E F0 .127 -(option is gi)2.627 F -.15(ve)-.25 G .127(n, the).15 F F2(names)2.987 E -F0 .127(refer to functions.)2.897 F .127(If no)5.127 F F2(names)2.987 E -F0 .127(are gi)2.897 F -.15(ve)-.25 G .127(n, or if the).15 F F1 -144 120 Q F0 .048(option is supplied, a list of names of all e)2.548 F -.048(xported v)-.15 F .048(ariables is printed.)-.25 F(The)5.048 E F1 -2.547 E F0 .047(option causes the)2.547 F -.15(ex)144 132 S 1.446 +.15 F(non-interacti)144 261.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F +.576(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577 +(shell option is enabled.)3.077 F .577(In that case, it returns f)5.577 +F(ail-)-.1 E 3.32(ure. An)144 273.6 R(interacti)3.32 E 1.12 -.15(ve s) +-.25 H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1 +F -.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82 +(xits uncondi-)-.15 F .287(tionally if)144 285.6 R F1(exec)2.787 E F0 +-.1(fa)2.787 G 2.787(ils. If).1 F F2(command)2.987 E F0 .287 +(is not speci\214ed, an)3.557 F 2.788(yr)-.15 G .288(edirections tak) +-2.788 F 2.788(ee)-.1 G -.25(ff)-2.788 G .288(ect in the current shell,) +.25 F(and the return status is 0.)144 297.6 Q +(If there is a redirection error)5 E 2.5(,t)-.4 G +(he return status is 1.)-2.5 E F1(exit)108 314.4 Q F0([)2.5 E F2(n)A F0 +(])A .096(Cause the shell to e)144 314.4 R .096(xit with a status of) +-.15 F F2(n)2.596 E F0 5.096(.I)C(f)-5.096 E F2(n)2.955 E F0 .095 +(is omitted, the e)2.835 F .095(xit status is that of the last command) +-.15 F -.15(exe)144 326.4 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9 +/Times-Bold@0 SF(EXIT)2.5 E F0(is e)2.25 E -.15(xe)-.15 G +(cuted before the shell terminates.).15 E F1(export)108 343.2 Q F0([)2.5 +E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E +F0(]] ...)A F1(export \255p)108 355.2 Q F0 .256(The supplied)144 367.2 R +F2(names)3.117 E F0 .257(are mark)3.027 F .257(ed for automatic e)-.1 F +.257(xport to the en)-.15 F .257(vironment of subsequently e)-.4 F -.15 +(xe)-.15 G(cuted).15 E 2.627(commands. If)144 379.2 R(the)2.627 E F1 +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 (rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G 1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d) --.37 E F0 3.947(,t)C(he)-3.947 E -.25(va)144 144 S .742(lue of the v).25 -F .742(ariable is set to)-.25 F F2(wor)3.242 E(d)-.37 E F0(.)A F1 -(export)5.742 E F0 .742(returns an e)3.242 F .741 -(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .741(lid option is) -.25 F .031(encountered, one of the)144 156 R F2(names)2.531 E F0 .031 -(is not a v)2.531 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 -F F12.532 E F0 .032(is supplied with a)2.532 F F2(name)2.892 E F0 -(that)2.712 E(is not a function.)144 168 Q F1(fc)108 184.8 Q F0([)2.5 E +-.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 415.2 S .741(lue of the v) +.25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1 +(export)5.741 E F0 .742(returns an e)3.242 F .742 +(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is) +.25 F .032(encountered, one of the)144 427.2 R F2(names)2.532 E F0 .032 +(is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 +F 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 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 -196.8 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 -(cmd)-2.5 E F0(])A .432 -(The \214rst form selects a range of commands from)144 208.8 R F2<8c72> -4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .431 -(from the history list and displays or)3.612 F .141(edits and re-e)144 -220.8 R -.15(xe)-.15 G .141(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) +468 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 +(cmd)-2.5 E F0(])A .431 +(The \214rst form selects a range of commands from)144 480 R F2<8c72> +4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .432 +(from the history list and displays or)3.612 F .142(edits and re-e)144 +492 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) .45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141 (may be speci\214ed as a string \(to locate the last command)3.321 F(be) -144 232.8 Q .311(ginning with that string\) or as a number \(an inde) --.15 F 2.811(xi)-.15 G .31(nto the history list, where a ne)-2.811 F --.05(ga)-.15 G(ti).05 E .61 -.15(ve n)-.25 H(umber).15 E .314 -(is used as an of)144 244.8 R .314 -(fset from the current command number\).)-.25 F(If)5.314 E F2(last)2.905 -E F0 .315(is not speci\214ed it is set to the cur)3.495 F(-)-.2 E .949 -(rent command for listing \(so that)144 256.8 R/F3 10/Courier@0 SF .948 -(fc \255l \25510)3.448 F F0 .948(prints the last 10 commands\) and to) -3.448 F F2<8c72>5.358 E(st)-.1 E F0(other)4.128 E(-)-.2 E 2.5(wise. If) -144 268.8 R F2<8c72>4.41 E(st)-.1 E F0 -(is not speci\214ed it is set to the pre)3.18 E -(vious command for editing and \25516 for listing.)-.25 E(The)144 292.8 -Q 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 304.8 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 -.334(the editor gi)144 316.8 R -.15(ve)-.25 G 2.834(nb).15 G(y)-2.834 E -F2(ename)3.024 E F0 .335(is in)3.014 F -.2(vo)-.4 G -.1(ke).2 G 2.835 -(do).1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 -F(If)5.335 E F2(ename)3.025 E F0 .335(is not gi)3.015 F -.15(ve)-.25 G -(n,).15 E .631(the v)144 328.8 R .631(alue of the)-.25 F/F4 9 -/Times-Bold@0 SF(FCEDIT)3.131 E F0 -.25(va)2.881 G .631 -(riable is used, and the v).25 F .631(alue of)-.25 F F4(EDIT)3.131 E(OR) --.162 E F0(if)2.881 E F4(FCEDIT)3.13 E F0 .63(is not set.)2.88 F .63 -(If nei-)5.63 F .95(ther v)144 340.8 R .95(ariable is set,)-.25 F F2(vi) -5.116 E F0 .95(is used.)5.116 F .951 -(When editing is complete, the edited commands are echoed and)5.95 F --.15(exe)144 352.8 S(cuted.).15 E .789(In the second form,)144 376.8 R -F2(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 +.335(the editor gi)144 588 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2 +(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do) +.1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F +(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G +(n,).15 E .63(the v)144 600 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E F0 +-.25(va)2.88 G .631(riable is used, and the v).25 F .631(alue of)-.25 F +F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631 +(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 612 R .951 +(ariable is set,)-.25 F F2(vi)5.117 E F0 .951(is used.)5.117 F .95 +(When editing is complete, the edited commands are echoed and)5.951 F +-.15(exe)144 624 S(cuted.).15 E .788(In the second form,)144 648 R F2 +(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 (cuted after each instance of).15 F F2(pat)3.288 E F0 .788 -(is replaced by)3.288 F F2 -.37(re)3.288 G(p).37 E F0(.)A F2(Com-)5.788 -E(mand)144 388.8 Q F0 .346(is intepreted the same as)2.846 F F2<8c72> -2.847 E(st)-.1 E F0(abo)2.847 E -.15(ve)-.15 G 5.347(.A).15 G .347 -(useful alias to use with this is)-2.5 F F3 .347(r='fc \255s')2.847 F F0 -2.847(,s)C 2.847(ot)-2.847 G(hat)-2.847 E(typing)144 400.8 Q F3 7.166 -(rc)3.666 G(c)-7.166 E F0 1.166(runs the last command be)3.666 F 1.166 -(ginning with)-.15 F F3(cc)3.666 E F0 1.165(and typing)3.666 F F3(r) -3.665 E F0(re-e)3.665 E -.15(xe)-.15 G 1.165(cutes the last com-).15 F -(mand.)144 412.8 Q .142(If the \214rst form is used, the return v)144 -436.8 R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 +(is replaced by)3.288 F F2 -.37(re)3.289 G(p).37 E F0(.)A F2(Com-)5.789 +E(mand)144 660 Q F0 .172(is interpreted the same as)2.672 F F2<8c72> +2.672 E(st)-.1 E F0(abo)2.672 E -.15(ve)-.15 G 5.172(.A).15 G .171 +(useful alias to use with this is)-2.5 F F4 .171(r='fc \255s')2.671 F F0 +2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E(typing)144 672 Q F4 7.165(rc) +3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166 +(ginning with)-.15 F F4(cc)3.666 E F0 1.166(and typing)3.666 F F4(r) +3.666 E F0(re-e)3.666 E -.15(xe)-.15 G 1.166(cutes the last com-).15 F +(mand.)144 684 Q .142(If the \214rst form is used, the return v)144 708 +R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 (lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322 -E F2(last)2.732 E F0 .455(specify history lines out of range.)144 448.8 -R .454(If the)5.454 F F12.954 E F0 .454 -(option is supplied, the return v)2.954 F .454(alue is the v)-.25 F .454 -(alue of the)-.25 F .787(last command e)144 460.8 R -.15(xe)-.15 G .787 -(cuted or f).15 F .788 +E F2(last)2.732 E F0 .454(specify history lines out of range.)144 720 R +.454(If the)5.454 F 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(2018 December 7)139.295 E(63) +188.455 E 0 Cg EP +%%Page: 64 64 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .788 +(last command e)144 84 R -.15(xe)-.15 G .788(cuted or f).15 F .787 (ailure if an error occurs with the temporary \214le of commands.)-.1 F -.788(If the)5.788 F 1.136 +.787(If the)5.787 F 1.135 (second form is used, the return status is that of the command re-e)144 -472.8 R -.15(xe)-.15 G 1.135(cuted, unless).15 F F2(cmd)3.835 E F0 1.135 -(does not)4.405 F(specify a v)144 484.8 Q -(alid history line, in which case)-.25 E F1(fc)2.5 E F0(returns f)2.5 E -(ailure.)-.1 E F1(fg)108 501.6 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume) -144 513.6 Q F2(jobspec)5.653 E F0 1.413(in the fore)4.223 F 1.413 -(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413 -(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F2(jobspec)5.653 E F0 -1.414(is not present, the)4.223 F(shell')144 525.6 Q 3.117(sn)-.55 G -.617(otion of the)-3.117 F F2(curr)3.117 E .617(ent job)-.37 F F0 .617 -(is used.)3.117 F .617(The return v)5.617 F .616 -(alue is that of the command placed into the)-.25 F(fore)144 537.6 Q -.362(ground, or f)-.15 F .362 -(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .363 -(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 549.6 Q -F0(does not specify a v)2.81 E(alid job or)-.25 E F2(jobspec)4.24 E F0 +96 R -.15(xe)-.15 G 1.136(cuted, unless).15 F/F1 10/Times-Italic@0 SF +(cmd)3.836 E F0 1.136(does not)4.406 F(specify a v)144 108 Q +(alid history line, in which case)-.25 E/F2 10/Times-Bold@0 SF(fc)2.5 E +F0(returns f)2.5 E(ailure.)-.1 E F2(fg)108 124.8 Q F0([)2.5 E F1 +(jobspec)A F0(])A(Resume)144 136.8 Q F1(jobspec)5.654 E F0 1.413 +(in the fore)4.224 F 1.413(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913 +(tt)-3.913 G 1.413(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F1 +(jobspec)5.653 E F0 1.413(is not present, the)4.223 F(shell')144 148.8 Q +3.116(sn)-.55 G .616(otion of the)-3.116 F F1(curr)3.116 E .616(ent job) +-.37 F F0 .617(is used.)3.116 F .617(The return v)5.617 F .617 +(alue is that of the command placed into the)-.25 F(fore)144 160.8 Q +.363(ground, or f)-.15 F .363 +(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362 +(hen run with job control enabled, if)-2.862 F F1(jobspec)145.74 172.8 Q +F0(does not specify a v)2.81 E(alid job or)-.25 E F1(jobspec)4.24 E F0 (speci\214es a job that w)2.81 E(as started without job control.)-.1 E -F1(getopts)108 566.4 Q F2(optstring name)2.5 E F0([)2.5 E F2(ar)A(gs) --.37 E F0(])A F1(getopts)144 578.4 Q F0 .793 -(is used by shell procedures to parse positional parameters.)3.294 F F2 -(optstring)6.023 E F0 .793(contains the option)3.513 F .149 -(characters to be recognized; if a character is follo)144 590.4 R .15 -(wed by a colon, the option is e)-.25 F .15(xpected to ha)-.15 F .45 --.15(ve a)-.2 H(n).15 E(ar)144 602.4 Q .579 -(gument, which should be separated from it by white space.)-.18 F .578 +F2(getopts)108 189.6 Q F1(optstring name)2.5 E F0([)2.5 E F1(ar)A(gs) +-.37 E F0(])A F2(getopts)144 201.6 Q F0 .793 +(is used by shell procedures to parse positional parameters.)3.293 F F1 +(optstring)6.023 E F0 .793(contains the option)3.513 F .15 +(characters to be recognized; if a character is follo)144 213.6 R .149 +(wed by a colon, the option is e)-.25 F .149(xpected to ha)-.15 F .449 +-.15(ve a)-.2 H(n).15 E(ar)144 225.6 Q .578 +(gument, which should be separated from it by white space.)-.18 F .579 (The colon and question mark char)5.579 F(-)-.2 E 1.665 -(acters may not be used as option characters.)144 614.4 R 1.665 -(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F1(getopts) -4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .797 -(option in the shell v)144 626.4 R(ariable)-.25 E F2(name)3.297 E F0 -3.297(,i).18 G(nitializing)-3.297 E F2(name)3.657 E F0 .797 -(if it does not e)3.477 F .796(xist, and the inde)-.15 F 3.296(xo)-.15 G -3.296(ft)-3.296 G .796(he ne)-3.296 F(xt)-.15 E(ar)144 638.4 Q .085 -(gument to be processed into the v)-.18 F(ariable)-.25 E F4(OPTIND)2.585 -E/F5 9/Times-Roman@0 SF(.)A F4(OPTIND)4.585 E F0 .085 -(is initialized to 1 each time the shell)2.335 F .846 -(or a shell script is in)144 650.4 R -.2(vo)-.4 G -.1(ke).2 G 3.345 -(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F1 -(getopts)3.345 E F0 .845(places that ar)3.345 F(gument)-.18 E .803 -(into the v)144 662.4 R(ariable)-.25 E F4(OPT)3.303 E(ARG)-.81 E F5(.)A -F0 .803(The shell does not reset)5.303 F F4(OPTIND)3.303 E F0 .804 -(automatically; it must be manually)3.054 F .294 -(reset between multiple calls to)144 674.4 R F1(getopts)2.793 E F0 .293 +(acters may not be used as option characters.)144 237.6 R 1.665 +(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F2(getopts) +4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .796 +(option in the shell v)144 249.6 R(ariable)-.25 E F1(name)3.296 E F0 +3.296(,i).18 G(nitializing)-3.296 E F1(name)3.657 E F0 .797 +(if it does not e)3.477 F .797(xist, and the inde)-.15 F 3.297(xo)-.15 G +3.297(ft)-3.297 G .797(he ne)-3.297 F(xt)-.15 E(ar)144 261.6 Q .085 +(gument to be processed into the v)-.18 F(ariable)-.25 E/F3 9 +/Times-Bold@0 SF(OPTIND)2.585 E/F4 9/Times-Roman@0 SF(.)A F3(OPTIND) +4.585 E F0 .085(is initialized to 1 each time the shell)2.335 F .845 +(or a shell script is in)144 273.6 R -.2(vo)-.4 G -.1(ke).2 G 3.345 +(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F2 +(getopts)3.346 E F0 .846(places that ar)3.346 F(gument)-.18 E .804 +(into the v)144 285.6 R(ariable)-.25 E F3(OPT)3.304 E(ARG)-.81 E F4(.)A +F0 .803(The shell does not reset)5.304 F F3(OPTIND)3.303 E F0 .803 +(automatically; it must be manually)3.053 F .293 +(reset between multiple calls to)144 297.6 R F2(getopts)2.793 E F0 .293 (within the same shell in)2.793 F -.2(vo)-.4 G .293(cation if a ne).2 F -2.793(ws)-.25 G .293(et of parameters)-2.793 F(is to be used.)144 686.4 -Q 2.043(When the end of options is encountered,)144 710.4 R F1(getopts) -4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.044 -(alue greater than zero.)-.25 F F4(OPTIND)144 722.4 Q F0 +2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 309.6 +Q 2.044(When the end of options is encountered,)144 333.6 R F2(getopts) +4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.043 +(alue greater than zero.)-.25 F F3(OPTIND)144 345.6 Q F0 (is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G -(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F2(name)2.5 E F0 -(is set to ?.)2.5 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(61) -192.055 E 0 Cg EP -%%Page: 62 62 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(getopts)144 84 Q F0 2.393 -(normally parses the positional parameters, b)4.893 F 2.392 -(ut if more ar)-.2 F 2.392(guments are gi)-.18 F -.15(ve)-.25 G 4.892 -(ni).15 G(n)-4.892 E/F2 10/Times-Italic@0 SF(ar)4.892 E(gs)-.37 E F0(,) -.27 E F1(getopts)144 96 Q F0(parses those instead.)2.5 E F1(getopts)144 -120 Q F0 1.165(can report errors in tw)3.665 F 3.665(ow)-.1 G 3.665 -(ays. If)-3.765 F 1.165(the \214rst character of)3.665 F F2(optstring) -3.895 E F0 1.166(is a colon,)3.886 F F2(silent)4.006 E F0(error)4.346 E -1.071(reporting is used.)144 132 R 1.071 -(In normal operation, diagnostic messages are printed when in)6.071 F --.25(va)-.4 G 1.07(lid options or).25 F .393(missing option ar)144 144 R -.393(guments are encountered.)-.18 F .394(If the v)5.394 F(ariable)-.25 -E/F3 9/Times-Bold@0 SF(OPTERR)2.894 E F0 .394 -(is set to 0, no error messages)2.644 F(will be displayed, e)144 156 Q +(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0 +(is set to ?.)2.5 E F2(getopts)144 369.6 Q F0 2.392 +(normally parses the positional parameters, b)4.892 F 2.392 +(ut if more ar)-.2 F 2.393(guments are gi)-.18 F -.15(ve)-.25 G 4.893 +(ni).15 G(n)-4.893 E F1(ar)4.893 E(gs)-.37 E F0(,).27 E F2(getopts)144 +381.6 Q F0(parses those instead.)2.5 E F2(getopts)144 405.6 Q F0 1.166 +(can report errors in tw)3.666 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F +1.165(the \214rst character of)3.665 F F1(optstring)3.895 E F0 1.165 +(is a colon,)3.885 F F1(silent)4.005 E F0(error)4.345 E 1.07 +(reporting is used.)144 417.6 R 1.071 +(In normal operation, diagnostic messages are printed when in)6.07 F +-.25(va)-.4 G 1.071(lid options or).25 F .394(missing option ar)144 +429.6 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F +(ariable)-.25 E F3(OPTERR)2.894 E F0 .394 +(is set to 0, no error messages)2.644 F(will be displayed, e)144 441.6 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E -F2(optstring)2.73 E F0(is not a colon.)2.72 E .667(If an in)144 180 R --.25(va)-.4 G .667(lid option is seen,).25 F F1(getopts)3.167 E F0 .667 -(places ? into)3.167 F F2(name)3.527 E F0 .666 -(and, if not silent, prints an error message)3.347 F .399(and unsets)144 -192 R F3(OPT)2.899 E(ARG)-.81 E/F4 9/Times-Roman@0 SF(.)A F0(If)4.899 E -F1(getopts)2.899 E F0 .399 -(is silent, the option character found is placed in)2.899 F F3(OPT)2.899 -E(ARG)-.81 E F0 .4(and no)2.65 F(diagnostic message is printed.)144 204 -Q 1.242(If a required ar)144 228 R 1.242(gument is not found, and)-.18 F -F1(getopts)3.741 E F0 1.241(is not silent, a question mark \()3.741 F F1 -(?).833 E F0 3.741(\)i).833 G 3.741(sp)-3.741 G 1.241(laced in)-3.741 F -F2(name)144 240 Q F0(,).18 E F3(OPT)2.734 E(ARG)-.81 E F0 .234 -(is unset, and a diagnostic message is printed.)2.484 F(If)5.234 E F1 -(getopts)2.734 E F0 .235(is silent, then a colon \()2.734 F F1(:).833 E -F0(\)).833 E(is placed in)144 252 Q F2(name)2.86 E F0(and)2.68 E F3(OPT) -2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F1 -(getopts)144 276 Q F0 .902 +F1(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 465.6 R +-.25(va)-.4 G .666(lid option is seen,).25 F F2(getopts)3.166 E F0 .667 +(places ? into)3.167 F F1(name)3.527 E F0 .667 +(and, if not silent, prints an error message)3.347 F .4(and unsets)144 +477.6 R F3(OPT)2.9 E(ARG)-.81 E F4(.)A F0(If)4.899 E F2(getopts)2.899 E +F0 .399(is silent, the option character found is placed in)2.899 F F3 +(OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F +(diagnostic message is printed.)144 489.6 Q 1.241(If a required ar)144 +513.6 R 1.241(gument is not found, and)-.18 F F2(getopts)3.741 E F0 +1.241(is not silent, a question mark \()3.741 F F2(?).833 E F0 3.742 +(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F1(name)144 525.6 +Q F0(,).18 E F3(OPT)2.735 E(ARG)-.81 E F0 .234 +(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F2 +(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F2(:).833 E +F0(\)).833 E(is placed in)144 537.6 Q F1(name)2.86 E F0(and)2.68 E F3 +(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F2 +(getopts)144 561.6 Q F0 .902 (returns true if an option, speci\214ed or unspeci\214ed, is found.) -3.402 F .902(It returns f)5.902 F .901(alse if the end of)-.1 F -(options is encountered or an error occurs.)144 288 Q F1(hash)108 304.8 -Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E -F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A .858 -(Each time)144 316.8 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)-.4 -G -.1(ke).2 G .858(d, the full pathname of the command).1 F F2(name) +3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F +(options is encountered or an error occurs.)144 573.6 Q F2(hash)108 +590.4 Q F0([)2.5 E F2(\255lr)A F0 2.5(][)C F2-2.5 E F1(\214lename) +2.5 E F0 2.5(][)C F2(\255dt)-2.5 E F0 2.5(][)C F1(name)-2.5 E F0(])A +.858(Each time)144 602.4 R F2(hash)3.358 E F0 .858(is in)3.358 F -.2(vo) +-.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F F1(name) 3.718 E F0 .858(is determined by searching)3.538 F .956 -(the directories in)144 328.8 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0 +(the directories in)144 614.4 R F2($P)3.456 E -.95(AT)-.74 G(H).95 E F0 .956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956 -(viously-remembered pathname is discarded.)-.25 F .242(If the)144 340.8 -R F12.742 E F0 .243 -(option is supplied, no path search is performed, and)2.742 F F2 -(\214lename)4.653 E F0 .243(is used as the full \214lename)2.923 F 1.712 -(of the command.)144 352.8 R(The)6.712 E F14.212 E F0 1.711 -(option causes the shell to for)4.212 F 1.711 -(get all remembered locations.)-.18 F(The)6.711 E F14.211 E F0 -.833(option causes the shell to for)144 364.8 R .833 -(get the remembered location of each)-.18 F F2(name)3.333 E F0 5.833(.I) -C 3.333(ft)-5.833 G(he)-3.333 E F13.333 E F0 .833(option is sup-) -3.333 F .704(plied, the full pathname to which each)144 376.8 R F2(name) -3.204 E F0 .703(corresponds is printed.)3.204 F .703(If multiple)5.703 F -F2(name)3.203 E F0(ar)3.203 E(guments)-.18 E .795(are supplied with)144 -388.8 R 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 +(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 -400.8 R .934(If no ar)5.934 F .934(guments are gi)-.18 F -.15(ve)-.25 G -.934(n, or if).15 F(only)144 412.8 Q F12.821 E F0 .321 -(is supplied, information about remembered commands is printed.)2.821 F -.322(The return status is true)5.322 F(unless a)144 424.8 Q F2(name)2.86 +686.4 R .934(If no ar)5.934 F .935(guments are gi)-.18 F -.15(ve)-.25 G +.935(n, or if).15 F(only)144 698.4 Q 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 F1(help)108 441.6 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2 -(pattern)-2.5 E F0(])A .867(Display helpful information about b)144 -453.6 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 -.866(is speci\214ed,)3.607 F F1(help)3.366 E F0(gi)3.366 E -.15(ve)-.25 -G 3.366(sd).15 G(etailed)-3.366 E .306(help on all commands matching)144 -465.6 R F2(pattern)2.806 E F0 2.807(;o).24 G .307 -(therwise help for all the b)-2.807 F .307 -(uiltins and shell control struc-)-.2 F(tures is printed.)144 477.6 Q F1 -144 489.6 Q F0(Display a short description of each)180 489.6 Q F2 -(pattern)2.5 E F1144 501.6 Q F0(Display the description of each) -180 501.6 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G -(ormat)-2.5 E F1144 513.6 Q F0 -(Display only a short usage synopsis for each)180 513.6 Q F2(pattern)2.5 -E F0(The return status is 0 unless no command matches)144 530.4 Q F2 -(pattern)2.5 E F0(.).24 E F1(history [)108 547.2 Q F2(n)A F1(])A -(history \255c)108 559.2 Q(history \255d)108 571.2 Q F2(of)2.5 E(fset) --.18 E F1(history \255anrw)108 583.2 Q F0([)2.5 E F2(\214lename)A F0(])A -F1(history \255p)108 595.2 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5 -(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 607.2 Q F2(ar)2.5 E(g) +.25 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(64)188.455 E 0 Cg +EP +%%Page: 65 65 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(help)108 84 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C/F2 10 +/Times-Italic@0 SF(pattern)-2.5 E F0(])A .866 +(Display helpful information about b)144 96 R .867(uiltin commands.)-.2 +F(If)5.867 E F2(pattern)4.617 E F0 .867(is speci\214ed,)3.607 F F1(help) +3.367 E F0(gi)3.367 E -.15(ve)-.25 G 3.367(sd).15 G(etailed)-3.367 E +.307(help on all commands matching)144 108 R F2(pattern)2.807 E F0 2.807 +(;o).24 G .307(therwise help for all the b)-2.807 F .306 +(uiltins and shell control struc-)-.2 F(tures is printed.)144 120 Q F1 +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 -619.2 S .752 +273.6 S .752 (th no options, display the command history list with line numbers.).4 F -.752(Lines listed with a)5.752 F F1(*)3.251 E F0(ha)3.251 E -.15(ve)-.2 -G .38(been modi\214ed.)144 631.2 R .38(An ar)5.38 F .38(gument of)-.18 F -F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 -(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E F3(HISTTIMEFOR-) -2.881 E(MA)144 643.2 Q(T)-.855 E F0 .265 -(is set and not null, it is used as a format string for)2.515 F F2 -(strftime)2.764 E F0 .264(\(3\) to display the time stamp asso-)B 1.019 -(ciated with each displayed history entry)144 655.2 R 6.019(.N)-.65 G +.752(Lines listed with a)5.752 F F1(*)3.252 E F0(ha)3.252 E -.15(ve)-.2 +G .381(been modi\214ed.)144 285.6 R .38(An ar)5.38 F .38(gument of)-.18 +F F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 +(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9 +/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 297.6 Q(T)-.855 E F0 .264 +(is set and not null, it is used as a format string for)2.514 F F2 +(strftime)2.765 E F0 .265(\(3\) to display the time stamp asso-)B 1.02 +(ciated with each displayed history entry)144 309.6 R 6.019(.N)-.65 G 3.519(oi)-6.019 G(nterv)-3.519 E 1.019 (ening blank is printed between the formatted)-.15 F .176 -(time stamp and the history line.)144 667.2 R(If)5.176 E F2(\214lename) +(time stamp and the history line.)144 321.6 R(If)5.176 E F2(\214lename) 2.676 E F0 .176 (is supplied, it is used as the name of the history \214le; if)2.676 F -(not, the v)144 679.2 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.) +(not, the v)144 333.6 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.) 2.25 E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 691.2 Q F0 -(Clear the history list by deleting all the entries.)180 691.2 Q F1 -144 703.2 Q F2(of)2.5 E(fset)-.18 E F0 -(Delete the history entry at position)180 715.2 Q F2(of)2.5 E(fset)-.18 -E F0(.)A(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(62)192.055 E 0 -Cg EP -%%Page: 63 63 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q F0 .564(Append the `)180 84 R(`ne)-.74 E(w')-.25 E -3.064('h)-.74 G .564(istory lines to the history \214le.)-3.064 F .565 -(These are history lines entered since)5.564 F(the be)180 96 Q +(wing meanings:)-.25 E 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 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 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 108 Q -F0 .854(Read the history lines not already read from the history \214le\ - into the current history list.)180 108 R .772 -(These are lines appended to the history \214le since the be)180 120 R +(ut not already appended to the history \214le.)-.2 E 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 132 Q F1144 144 Q F0(Read the contents of the history \ -\214le and append them to the current history list.)180 144 Q F1 -144 156 Q F0(Write the current history list to the history \214le, o)180 -156 Q -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G -(ontents.)-2.5 E F1144 168 Q F0 .626 -(Perform history substitution on the follo)180 168 R(wing)-.25 E/F2 10 -/Times-Italic@0 SF(ar)3.125 E(gs)-.37 E F0 .625 -(and display the result on the standard)3.125 F 2.975(output. Does)180 -180 R .475(not store the results in the history list.)2.975 F(Each)5.475 -E F2(ar)2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F -(normal history e)180 192 Q(xpansion.)-.15 E F1144 204 Q F0 .363 -(Store the)180 204 R F2(ar)3.193 E(gs)-.37 E F0 .363 +(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 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 216 Q -.15(ve) --.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 -(are added.)2.77 E .145(If the)144 232.8 R/F3 9/Times-Bold@0 SF -(HISTTIMEFORMA)2.645 E(T)-.855 E F0 -.25(va)2.395 G .145 +(he last command in the history list is)-5.363 F(remo)180 573.6 Q -.15 +(ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 +(are added.)2.77 E .145(If the)144 590.4 R F3(HISTTIMEFORMA)2.645 E(T) +-.855 E F0 -.25(va)2.395 G .145 (riable is set, the time stamp information associated with each history) -.25 F .669(entry is written to the history \214le, mark)144 244.8 R .669 +.25 F .669(entry is written to the history \214le, mark)144 602.4 R .669 (ed with the history comment character)-.1 F 5.668(.W)-.55 G .668 -(hen the history)-5.668 F .955(\214le is read, lines be)144 256.8 R .956 +(hen the history)-5.668 F .955(\214le is read, lines be)144 614.4 R .956 (ginning with the history comment character follo)-.15 F .956 (wed immediately by a digit)-.25 F 1.796 -(are interpreted as timestamps for the follo)144 268.8 R 1.795 +(are interpreted as timestamps for the follo)144 626.4 R 1.795 (wing history entry)-.25 F 6.795(.T)-.65 G 1.795(he return v)-6.795 F -1.795(alue is 0 unless an)-.25 F(in)144 280.8 Q -.25(va)-.4 G .768(lid \ +1.795(alue is 0 unless an)-.25 F(in)144 638.4 Q -.25(va)-.4 G .768(lid \ option is encountered, an error occurs while reading or writing the his\ -tory \214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)144 292.8 Q(fset) +tory \214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)144 650.4 Q(fset) -.18 E F0 1.032(is supplied as an ar)3.532 F 1.031(gument to)-.18 F F1 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 304.8 S(ils.).1 E F1(jobs)108 321.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 333.6 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 -E F0(... ])2.5 E(The \214rst form lists the acti)144 345.6 Q .3 -.15 +(jobs \255x)108 691.2 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 +E F0(... ])2.5 E(The \214rst form lists the acti)144 703.2 Q .3 -.15 (ve j)-.25 H 2.5(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E F1144 357.6 Q F0 -(List process IDs in addition to the normal information.)180 357.6 Q F1 -144 369.6 Q F0 .193(Display information only about jobs that ha) -180 369.6 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15 -F .194(as last noti-)-.1 F(\214ed of their status.)180 381.6 Q F1 -144 393.6 Q F0(List only the process ID of the job')180 393.6 Q 2.5(sp) --.55 G(rocess group leader)-2.5 E(.)-.55 E F1144 405.6 Q F0 -(Display only running jobs.)180 405.6 Q F1144 417.6 Q F0 -(Display only stopped jobs.)180 417.6 Q(If)144 434.4 Q F2(jobspec)4.554 -E F0 .314(is gi)3.124 F -.15(ve)-.25 G .314 -(n, output is restricted to information about that job).15 F 5.313(.T) --.4 G .313(he return status is 0 unless)-5.313 F(an in)144 446.4 Q -.25 -(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25 -E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 463.2 R F1 -2.894 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0 -.394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in) -3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .395 -(with the corre-)3.164 F(sponding process group ID, and e)144 475.2 Q --.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar) -2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E -F1(kill)108 492 Q F0([)2.5 E F1A F2(sigspec)2.5 E F0(|)2.5 E F1 -2.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2(sigspec)A F0 2.5 -(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F1 -(kill \255l)108 504 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 -516 R F2(sigspec)2.96 E F0(or)2.93 E F2(signum)2.96 E F0 .119 -(to the processes named by)2.939 F F2(pid)3.869 E F0(or)3.389 E F2 -(jobspec)2.619 E F0(.).31 E F2(sigspec)5.459 E F0(is)2.929 E .318 -(either a case-insensiti)144 528 R .618 -.15(ve s)-.25 H .318 -(ignal name such as).15 F F3(SIGKILL)2.818 E F0 .319 -(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319 -(pre\214x\) or a signal)2.569 F(number;)144 540 Q F2(signum)4.189 E F0 +(he follo).15 E(wing meanings:)-.25 E 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 December 7)139.295 E(65)188.455 E 0 Cg EP +%%Page: 66 66 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +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 +.318(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.818 E F0 +.319(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319 +(pre\214x\) or a signal)2.569 F(number;)144 254.4 Q F2(signum)4.189 E F0 1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec) 4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0 -1.348(is assumed.)3.599 F(An)6.348 E(ar)144 552 Q .522(gument of)-.18 F -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 564 R .28 -(guments are listed, and the return status is 0.)-.18 F(The)5.28 E F2 --.2(ex)2.78 G(it_status).2 E F0(ar)144 576 Q .377(gument to)-.18 F F1 -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 588 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 600 Q(alse if an error occurs or an in)-.1 -E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 616.8 Q F2 -(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144 -628.8 Q F2(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197 +(successfully sent, or f)144 314.4 Q(alse if an error occurs or an in) +-.1 E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 331.2 Q +F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144 +343.2 Q F2(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197 (xpression to be e)-.15 F -.25(va)-.25 G .197(luated \(see).25 F F3 .197 (ARITHMETIC EV)2.697 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo) -2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 640.8 Q F2(ar) +2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 355.2 Q F2(ar) 2.83 E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F1(let)2.5 E F0 -(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 657.6 Q F0([)2.5 -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 669.6 S 2.56(re).15 G .06(ach ar)-2.56 F +(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 372 Q F0([)2.5 E +F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C +(.. | \255 ])-2.5 E -.15(Fo)144 384 S 2.56(re).15 G .06(ach ar)-2.56 F .06(gument, a local v)-.18 F .06(ariable named)-.25 F F2(name)2.92 E F0 .06(is created, and assigned)2.74 F F2(value)2.56 E F0 5.06(.T).18 G(he) --5.06 E F2(option)2.56 E F0 .06(can be)2.56 F(an)144 681.6 Q 3.152(yo) --.15 G 3.152(ft)-3.152 G .652(he options accepted by)-3.152 F F1(declar) -3.152 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F1(local)3.152 E F0 .653 +-5.06 E F2(option)2.56 E F0 .06(can be)2.56 F(an)144 396 Q 3.152(yo)-.15 +G 3.152(ft)-3.152 G .652(he options accepted by)-3.152 F F1(declar)3.152 +E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F1(local)3.152 E F0 .653 (is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 -693.6 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H -.422(isible scope restricted to that function and its children.).15 F -(If)5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F 1.461 -(of shell options is made local to the function in which)144 705.6 R F1 +408 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H .422 +(isible scope restricted to that function and its children.).15 F(If) +5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F 1.461 +(of shell options is made local to the function in which)144 420 R F1 (local)3.961 E F0 1.462(is in)3.961 F -.2(vo)-.4 G -.1(ke).2 G 1.462 -(d: shell options changed).1 F 1.563(using the)144 717.6 R F1(set)4.063 -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 729.6 R 1.243 +(alues when the function)-.25 F 3.743(returns. W)144 444 R 1.243 (ith no operands,)-.4 F F1(local)3.743 E F0 1.243 (writes a list of local v)3.743 F 1.244 -(ariables to the standard output.)-.25 F 1.244(It is an)6.244 F -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(63)192.055 E 0 Cg EP -%%Page: 64 64 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .42(error to use) -144 84 R/F1 10/Times-Bold@0 SF(local)2.92 E F0 .42 +(ariables to the standard output.)-.25 F 1.244(It is an)6.244 F .42 +(error to use)144 456 R F1(local)2.92 E F0 .42 (when not within a function.)2.92 F .42(The return status is 0 unless) 5.42 F F1(local)2.92 E F0 .42(is used outside a)2.92 F(function, an in) -144 96 Q -.25(va)-.4 G(lid).25 E/F2 10/Times-Italic@0 SF(name)2.86 E F0 -(is supplied, or)2.68 E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.) --.25 E F1(logout)108 112.8 Q F0(Exit a login shell.)144 112.8 Q F1 -(map\214le)108 129.6 Q F0([)2.5 E 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 141.6 S(adarray) -.18 E 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 .35 -(Read lines from the standard input into the inde)144 153.6 R -.15(xe) --.15 G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F2(arr)2.851 E -(ay)-.15 E F0 2.851(,o).32 G 2.851(rf)-2.851 G .351 -(rom \214le descriptor)-2.851 F F2(fd)2.851 E F0 1.249(if the)144 165.6 -R F13.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 -F(ariable)-.25 E/F3 9/Times-Bold@0 SF(MAPFILE)3.749 E F0 1.249 -(is the def)3.499 F(ault)-.1 E F2(arr)3.748 E(ay)-.15 E F0 6.248(.O)C -1.248(ptions, if supplied,)-6.248 F(ha)144 177.6 Q .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E F1144 189.6 Q F0 -(The \214rst character of)180 189.6 Q F2(delim)2.5 E F0 -(is used to terminate each input line, rather than ne)2.5 E(wline.)-.25 -E F1144 201.6 Q F0(Cop)180 201.6 Q 2.5(ya)-.1 G 2.5(tm)-2.5 G(ost) --2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count)2.5 E F0 -(is 0, all lines are copied.)2.5 E F1144 213.6 Q F0(Be)180 213.6 Q -(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 E(x) --.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E 2.5(xi) --.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 225.6 Q F0 -(Discard the \214rst)180 225.6 Q F2(count)2.5 E F0(lines read.)2.5 E F1 -144 237.6 Q F0(Remo)180 237.6 Q .3 -.15(ve a t)-.15 H(railing).15 +144 468 Q -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or)2.68 +E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout)108 +484.8 Q F0(Exit a login shell.)144 484.8 Q F1(map\214le)108 501.6 Q F0 +([)2.5 E 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 +(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 +(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 +(is used to terminate each input line, rather than ne)3.41 F 3.411 +(wline. If)-.25 F F2(delim)180 573.6 Q F0(is the empty string,)2.5 E F1 +(map\214le)2.5 E F0(will terminate a line when it reads a NUL character) +2.5 E(.)-.55 E 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 249.6 Q F0 -(Read lines from \214le descriptor)180 249.6 Q F2(fd)2.5 E F0 -(instead of the standard input.)2.5 E F1144 261.6 Q F0(Ev)180 -261.6 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2 +(wline\) from each line read.)-.25 E 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 273.6 -Q F0(Specify the number of lines read between each call to)180 273.6 Q -F2(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 290.4 Q F12.967 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 (he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 (callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 -(luated, it is sup-).25 F .262(plied the inde)144 302.4 R 2.762(xo)-.15 -G 2.762(ft)-2.762 G .262(he ne)-2.762 F .261(xt array element to be ass\ -igned and the line to be assigned to that element)-.15 F .274 -(as additional ar)144 314.4 R(guments.)-.18 E F2(callbac)5.274 E(k)-.2 E -F0 .274(is e)2.774 F -.25(va)-.25 G .274 -(luated after the line is read b).25 F .275 -(ut before the array element is)-.2 F(assigned.)144 326.4 Q -(If not supplied with an e)144 343.2 Q(xplicit origin,)-.15 E F1 +(luated, it is sup-).25 F .261(plied the inde)144 686.4 R 2.761(xo)-.15 +G 2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be ass\ +igned and the line to be assigned to that element)-.15 F .275 +(as additional ar)144 698.4 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E +F0 .275(is e)2.775 F -.25(va)-.25 G .274 +(luated after the line is read b).25 F .274 +(ut before the array element is)-.2 F(assigned.)144 710.4 Q +(If not supplied with an e)144 727.2 Q(xplicit origin,)-.15 E F1 (map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0 -(before assigning to it.)2.5 E F1(map\214le)144 360 Q F0 1.906 -(returns successfully unless an in)4.406 F -.25(va)-.4 G 1.905 -(lid option or option ar).25 F 1.905(gument is supplied,)-.18 F F2(arr) -4.405 E(ay)-.15 E F0(is)4.405 E(in)144 372 Q -.25(va)-.4 G -(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0 -(is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E -F1(popd)108 388.8 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 -2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 400.8 Q -.15(ve)-.15 G 2.799 -(se).15 G .299(ntries from the directory stack.)-2.799 F -.4(Wi)5.299 G -.299(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 -G .3(he top directory from the)-2.799 F 1.479(stack, and performs a)144 -412.8 R F1(cd)3.979 E F0 1.479(to the ne)3.979 F 3.979(wt)-.25 G 1.479 -(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.478 -(uments, if supplied, ha).18 F 1.778 -.15(ve t)-.2 H 1.478(he follo).15 -F(wing)-.25 E(meanings:)144 424.8 Q F1144 436.8 Q F0 .551 -(Suppresses the normal change of directory when remo)180 436.8 R .551 -(ving directories from the stack, so)-.15 F -(that only the stack is manipulated.)180 448.8 Q F1(+)144 460.8 Q F2(n)A -F0(Remo)180 460.8 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E +(before assigning to it.)2.5 E(GNU Bash 5.0)72 768 Q(2018 December 7) +139.295 E(66)188.455 E 0 Cg EP +%%Page: 67 67 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(map\214le)144 84 Q F0 1.905(returns successfully unless an in)4.405 F +-.25(va)-.4 G 1.905(lid option or option ar).25 F 1.906 +(gument is supplied,)-.18 F/F2 10/Times-Italic@0 SF(arr)4.406 E(ay)-.15 +E F0(is)4.406 E(in)144 96 Q -.25(va)-.4 G(lid or unassignable, or if).25 +E F2(arr)2.5 E(ay)-.15 E F0(is not an inde)2.5 E -.15(xe)-.15 G 2.5(da) +.15 G(rray)-2.5 E(.)-.65 E F1(popd)108 112.8 Q F0<5bad>2.5 E F1(n)A F0 +2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C-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 -472.8 S 2.5(re).15 G(xample:)-2.65 E/F4 10/Courier@0 SF(popd +0)2.5 E F0 +196.8 S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0 (remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,) --.65 E F4(popd +1)2.5 E F0(the second.)2.5 E F1144 484.8 Q F2(n)A F0 -(Remo)180 484.8 Q -.15(ve)-.15 G 3.759(st).15 G(he)-3.759 E F2(n)3.759 E -F0 1.259(th entry counting from the right of the list sho)B 1.26(wn by) --.25 F F1(dirs)3.76 E F0 3.76(,s)C 1.26(tarting with)-3.76 F 2.5 -(zero. F)180 496.8 R(or e)-.15 E(xample:)-.15 E F4(popd -0)2.5 E F0 +-.65 E F3(popd +1)2.5 E F0(the second.)2.5 E 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 F4(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .644(If the)144 -513.6 R F1(popd)3.144 E F0 .644(command is successful, a)3.144 F F1 -(dirs)3.143 E F0 .643(is performed as well, and the return status is 0.) -3.143 F F1(popd)5.643 E F0 .415(returns f)144 525.6 R .415 +E F3(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .643(If the)144 +237.6 R F1(popd)3.143 E F0 .643(command is successful, a)3.143 F F1 +(dirs)3.143 E F0 .644(is performed as well, and the return status is 0.) +3.143 F F1(popd)5.644 E F0 .416(returns f)144 249.6 R .416 (alse if an in)-.1 F -.25(va)-.4 G .415 -(lid option is encountered, the directory stack is empty).25 F 2.916 -(,an)-.65 G(on-e)-2.916 E .416(xistent direc-)-.15 F -(tory stack entry is speci\214ed, or the directory change f)144 537.6 Q -(ails.)-.1 E F1(printf)108 554.4 Q F0([)2.5 E F1A F2(var)2.5 E F0 -(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.437 -(Write the formatted)144 566.4 R F2(ar)3.937 E(guments)-.37 E F0 1.437 -(to the standard output under the control of the)3.937 F F2(format)3.936 -E F0 6.436(.T)C(he)-6.436 E F13.936 E F0 .126 -(option causes the output to be assigned to the v)144 578.4 R(ariable) +(lid option is encountered, the directory stack is empty).25 F 2.915 +(,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F +(tory stack entry is speci\214ed, or the directory change f)144 261.6 Q +(ails.)-.1 E F1(printf)108 278.4 Q F0([)2.5 E 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 +(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) -.25 E F2(var)2.626 E F0 .126(rather than being printed to the standard) -2.626 F(output.)144 590.4 Q(The)144 614.4 Q F2(format)3.018 E F0 .517(i\ +2.626 F(output.)144 314.4 Q(The)144 338.4 Q F2(format)3.017 E F0 .517(i\ s a character string which contains three types of objects: plain chara\ -cters, which are)3.018 F .704(simply copied to standard output, charact\ -er escape sequences, which are con)144 626.4 R -.15(ve)-.4 G .704 +cters, which are)3.017 F .704(simply copied to standard output, charact\ +er escape sequences, which are con)144 350.4 R -.15(ve)-.4 G .703 (rted and copied to).15 F .036(the standard output, and format speci\ -\214cations, each of which causes printing of the ne)144 638.4 R .036 -(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 650.4 Q(gument)-.37 E F0 -5.531(.I)C 3.031(na)-5.531 G .531(ddition to the standard)-3.031 F F2 -(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.032 -E F0 .532(interprets the follo)3.032 F(w-)-.25 E(ing e)144 662.4 Q -(xtensions:)-.15 E F1(%b)144 674.4 Q F0(causes)180 674.4 Q F1(printf) -2.596 E F0 .096(to e)2.596 F .096 +\214cations, each of which causes printing of the ne)144 362.4 R .037 +(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 374.4 Q(gument)-.37 E F0 +5.532(.I)C 3.032(na)-5.532 G .532(ddition to the standard)-3.032 F F2 +(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.031 +E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 386.4 Q +(xtensions:)-.15 E F1(%b)144 398.4 Q F0(causes)180 398.4 Q F1(printf) +2.595 E F0 .096(to e)2.595 F .096 (xpand backslash escape sequences in the corresponding)-.15 F F2(ar) -2.596 E(gument)-.37 E F0 .095(in the)2.595 F(same w)180 686.4 Q(ay as) --.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 698.4 Q F0(causes)180 698.4 Q +2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 410.4 Q(ay as) +-.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 422.4 Q F0(causes)180 422.4 Q F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E (gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F -(input.)180 710.4 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(64) -192.055 E 0 Cg EP -%%Page: 65 65 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(%\()144 84 Q/F2 10/Times-Italic@0 SF(datefmt)A F1(\)T)A F0(causes)180 -96 Q F1(printf)4.404 E F0 1.904 -(to output the date-time string resulting from using)4.404 F F2(datefmt) -4.404 E F0 1.903(as a format)4.404 F .38(string for)180 108 R F2 +(input.)180 434.4 Q F1(%\()144 446.4 Q F2(datefmt)A F1(\)T)A F0(causes) +180 458.4 Q F1(printf)4.403 E F0 1.904 +(to output the date-time string resulting from using)4.403 F F2(datefmt) +4.404 E F0 1.904(as a format)4.404 F .381(string for)180 470.4 R F2 (strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar) 2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381 -(ger representing the number)-.15 F .458(of seconds since the epoch.)180 -120 R -1 -.8(Tw o)5.458 H .458(special ar)3.758 F .458(gument v)-.18 F -.458(alues may be used: -1 represents the)-.25 F .847 -(current time, and -2 represents the time the shell w)180 132 R .847 -(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.348(d. If).1 F .848(no ar)3.348 -F .848(gument is speci-)-.18 F .355(\214ed, con)180 144 R -.15(ve)-.4 G -.355(rsion beha).15 F -.15(ve)-.2 G 2.855(sa).15 G 2.855(si)-2.855 G -2.855(f-)-2.855 G 2.855(1h)-2.855 G .354(ad been gi)-2.855 F -.15(ve) --.25 G 2.854(n. This).15 F .354(is an e)2.854 F .354 -(xception to the usual)-.15 F F1(printf)2.854 E F0(beha)180 156 Q(vior) --.2 E(.)-.55 E(Ar)144 172.8 Q .463(guments to non-string format speci\ -\214ers are treated as C constants, e)-.18 F .464 -(xcept that a leading plus or)-.15 F 1.259(minus sign is allo)144 184.8 -R 1.259 +(ger representing the number)-.15 F .292(of seconds since the epoch.)180 +482.4 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F +.293(alues may be used: \2551 represents the)-.25 F .694 +(current time, and \2552 represents the time the shell w)180 494.4 R +.693(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.193(d. If).1 F .693(no ar) +3.193 F .693(gument is speci-)-.18 F .21(\214ed, con)180 506.4 R -.15 +(ve)-.4 G .21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71 +G 2.71<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25 +G 2.71(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F +F1(printf)2.71 E F0(beha)180 518.4 Q(vior)-.2 E(.)-.55 E(Ar)144 535.2 Q +.464(guments to non-string format speci\214ers are treated as C constan\ +ts, e)-.18 F .463(xcept that a leading plus or)-.15 F 1.258 +(minus sign is allo)144 547.2 R 1.259 (wed, and if the leading character is a single or double quote, the v) --.25 F 1.258(alue is the)-.25 F(ASCII v)144 196.8 Q(alue of the follo) --.25 E(wing character)-.25 E(.)-.55 E(The)144 213.6 Q F2(format)3.423 E -F0 .923(is reused as necessary to consume all of the)3.423 F F2(ar)3.423 -E(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format) -3.423 E F0 .924(requires more)3.424 F F2(ar)144 225.6 Q(guments)-.37 E -F0 .033(than are supplied, the e)2.534 F .033 +-.25 F 1.259(alue is the)-.25 F(ASCII v)144 559.2 Q(alue of the follo) +-.25 E(wing character)-.25 E(.)-.55 E(The)144 576 Q F2(format)3.424 E F0 +.923(is reused as necessary to consume all of the)3.424 F F2(ar)3.423 E +(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format) +3.423 E F0 .923(requires more)3.423 F F2(ar)144 588 Q(guments)-.37 E F0 +.033(than are supplied, the e)2.533 F .033 (xtra format speci\214cations beha)-.15 F .333 -.15(ve a)-.2 H 2.533(si) -.15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .033(alue or null string,) --.25 F(as appropriate, had been supplied.)144 237.6 Q(The return v)5 E +.15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .034(alue or null string,) +-.25 F(as appropriate, had been supplied.)144 600 Q(The return v)5 E (alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) -108 254.4 Q F0([)2.5 E 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 266.4 Q F0([)2.5 E F1A F0 -2.5(][)C F2(dir)-2.5 E F0(])A .639(Adds a directory to the top of the d\ -irectory stack, or rotates the stack, making the ne)144 278.4 R 3.14(wt) --.25 G .64(op of the)-3.14 F .417(stack the current w)144 290.4 R .416 +108 616.8 Q F0([)2.5 E 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.916(od)-.1 G(irectories)-2.916 E 1.625 -(and returns 0, unless the directory stack is empty)144 302.4 R 6.625 +(changes the top tw).15 F 2.917(od)-.1 G(irectories)-2.917 E 1.625 +(and returns 0, unless the directory stack is empty)144 664.8 R 6.625 (.A)-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 --.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 314.4 Q -F1144 326.4 Q F0 1.811(Suppresses the normal change of directory \ -when rotating or adding directories to the)180 326.4 R -(stack, so that only the stack is manipulated.)180 338.4 Q F1(+)144 -350.4 Q F2(n)A F0 1.267(Rotates the stack so that the)180 350.4 R F2(n) -3.767 E F0 1.268(th directory \(counting from the left of the list sho)B -1.268(wn by)-.25 F F1(dirs)180 362.4 Q F0 2.5(,s)C -(tarting with zero\) is at the top.)-2.5 E F1144 374.4 Q F2(n)A F0 -.92(Rotates the stack so that the)180 374.4 R F2(n)3.42 E F0 .92 +-.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 676.8 Q +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 December 7)139.295 E(67)188.455 E 0 Cg EP +%%Page: 68 68 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +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 386.4 Q F0 2.5(,s)C(tarting with zero\) is at the top.) --2.5 E F2(dir)144.35 398.4 Q F0(Adds)180 398.4 Q F2(dir)3.137 E F0 .287 -(to the directory stack at the top, making it the ne)3.517 F 2.788(wc) --.25 G .288(urrent w)-2.788 F .288(orking directory as)-.1 F -(if it had been supplied as the ar)180 410.4 Q(gument to the)-.18 E F1 -(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .489(If the)144 427.2 R F1(pushd) -2.989 E F0 .489(command is successful, a)2.989 F F1(dirs)2.988 E F0 .488 -(is performed as well.)2.988 F .488(If the \214rst form is used,)5.488 F -F1(pushd)2.988 E F0 1.039(returns 0 unless the cd to)144 439.2 R F2(dir) -3.889 E F0 -.1(fa)4.269 G 3.539(ils. W).1 F 1.039(ith the second form,) --.4 F F1(pushd)3.54 E F0 1.04(returns 0 unless the directory)3.54 F .847 -(stack is empty)144 451.2 R 3.347(,an)-.65 G(on-e)-3.347 E .847(xistent\ +F F1(dirs)180 96 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 E +F2(dir)144.35 108 Q F0(Adds)180 108 Q F2(dir)3.138 E F0 .288 +(to the directory stack at the top, making it the ne)3.518 F 2.787(wc) +-.25 G .287(urrent w)-2.787 F .287(orking directory as)-.1 F +(if it had been supplied as the ar)180 120 Q(gument to the)-.18 E F1(cd) +2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 136.8 R F1(pushd)2.988 +E F0 .488(command is successful, a)2.988 F F1(dirs)2.988 E F0 .488 +(is performed as well.)2.988 F .489(If the \214rst form is used,)5.488 F +F1(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 148.8 R F2(dir) +3.89 E F0 -.1(fa)4.27 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4 +F F1(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846 +(stack is empty)144 160.8 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\ directory stack element is speci\214ed, or the directory change to the) --.15 F(speci\214ed ne)144 463.2 Q 2.5(wc)-.25 G(urrent directory f)-2.5 -E(ails.)-.1 E F1(pwd)108 480 Q F0([)2.5 E F1(\255LP)A F0(])A .844 -(Print the absolute pathname of the current w)144 492 R .845 -(orking directory)-.1 F 5.845(.T)-.65 G .845 -(he pathname printed contains no)-5.845 F .182(symbolic links if the)144 -504 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 .181 -(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1(set) -2.681 E F0 -.2(bu)2.681 G .181(iltin command is).2 F 3.263(enabled. If) -144 516 R(the)3.263 E F13.263 E F0 .763 -(option is used, the pathname printed may contain symbolic links.)3.263 -F .764(The return)5.764 F 1.36(status is 0 unless an error occurs while\ - reading the name of the current directory or an in)144 528 R -.25(va) --.4 G(lid).25 E(option is supplied.)144 540 Q F1 -.18(re)108 556.8 S(ad) -.18 E F0([)3.816 E F1(\255ers)A F0 3.816(][)C F1-3.816 E F2(aname) -3.816 E F0 3.816(][)C F1-3.816 E F2(delim)3.816 E F0 3.816(][)C F1 --3.816 E F2(te)3.816 E(xt)-.2 E F0 3.816(][)C F1-3.816 E F2 -(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1-3.817 E F2(nc) -3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1-3.817 E F2(pr)3.817 E -(ompt)-.45 E F0 3.817(][)C F1-3.817 E F2(timeout)3.817 E F0 3.817 -(][)C F1-3.817 E F2(fd)3.817 E F0(])A([)108 568.8 Q F2(name)A F0 -(...])2.5 E .516(One line is read from the standard input, or from the \ -\214le descriptor)144 580.8 R F2(fd)3.016 E F0 .516(supplied as an ar) -3.016 F .516(gument to)-.18 F(the)144 592.8 Q F13.847 E F0 1.347 -(option, split into w)3.847 F 1.347(ords as described abo)-.1 F 1.648 --.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)3.848 G 1.348(rd Splitting).75 F -F0 3.848(,a)C 1.348(nd the \214rst w)-3.848 F 1.348(ord is)-.1 F 1.465 -(assigned to the \214rst)144 604.8 R F2(name)3.965 E F0 3.965(,t).18 G +-.15 F(speci\214ed ne)144 172.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5 +E(ails.)-.1 E F1(pwd)108 189.6 Q F0([)2.5 E F1(\255LP)A F0(])A .845 +(Print the absolute pathname of the current w)144 201.6 R .845 +(orking directory)-.1 F 5.844(.T)-.65 G .844 +(he pathname printed contains no)-5.844 F .181(symbolic links if the)144 +213.6 R 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 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 616.8 S 1.112(rds than names, the remaining w).1 F 1.112 +F -.1(wo)144 326.4 S 1.112(rds than names, the remaining w).1 F 1.112 (ords and their interv)-.1 F 1.112 -(ening delimiters are assigned to the last)-.15 F F2(name)144 628.8 Q F0 -5.723(.I).18 G 3.223(ft)-5.723 G .723(here are fe)-3.223 F .723(wer w) --.25 F .722 +(ening delimiters are assigned to the last)-.15 F F2(name)144 338.4 Q F0 +5.722(.I).18 G 3.222(ft)-5.722 G .722(here are fe)-3.222 F .722(wer w) +-.25 F .723 (ords read from the input stream than names, the remaining names are)-.1 -F .531(assigned empty v)144 640.8 R 3.031(alues. The)-.25 F .531 -(characters in)3.031 F/F3 9/Times-Bold@0 SF(IFS)3.031 E F0 .532 -(are used to split the line into w)2.781 F .532(ords using the same)-.1 -F .197(rules the shell uses for e)144 652.8 R .197 +F .532(assigned empty v)144 350.4 R 3.032(alues. The)-.25 F .532 +(characters in)3.032 F/F3 9/Times-Bold@0 SF(IFS)3.032 E F0 .531 +(are used to split the line into w)2.782 F .531(ords using the same)-.1 +F .197(rules the shell uses for e)144 362.4 R .197 (xpansion \(described abo)-.15 F .497 -.15(ve u)-.15 H(nder).15 E F1 --.75(Wo)2.697 G .197(rd Splitting).75 F F0 2.697(\). The)B .196 -(backslash charac-)2.697 F .156(ter \()144 664.8 R F1(\\)A F0 2.656(\)m) -C .156(ay be used to remo)-2.656 F .457 -.15(ve a)-.15 H .457 -.15(ny s) -.15 H .157(pecial meaning for the ne).15 F .157 +-.75(Wo)2.697 G .197(rd Splitting).75 F F0 2.697(\). The)B .197 +(backslash charac-)2.697 F .157(ter \()144 374.4 R F1(\\)A F0 2.657(\)m) +C .157(ay be used to remo)-2.657 F .457 -.15(ve a)-.15 H .457 -.15(ny s) +.15 H .157(pecial meaning for the ne).15 F .156 (xt character read and for line continu-)-.15 F 2.5(ation. Options,)144 -676.8 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 688.8 Q F2(aname)2.5 E F0 1.05(The w) -180 700.8 R 1.049 +386.4 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E 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.549 E F0 3.549(,s).18 G 1.049(tarting at 0.)-3.549 F -F2(aname)180.33 712.8 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 --.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0 -(ar)2.5 E(guments are ignored.)-.18 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(65)192.055 E 0 Cg EP -%%Page: 66 66 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q/F2 10/Times-Italic@0 SF(delim)2.5 E F0 -(The \214rst character of)180 96 Q F2(delim)2.5 E F0 -(is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E -F1144 108 Q F0 .372 -(If the standard input is coming from a terminal,)180 108 R F1 -.18(re) -2.873 G(adline).18 E F0(\(see)2.873 E/F3 9/Times-Bold@0 SF(READLINE) -2.873 E F0(abo)2.623 E -.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G -(sed)-2.873 E .218(to obtain the line.)180 120 R .218 +-.25 E F2(aname)3.55 E F0 3.55(,s).18 G 1.05(tarting at 0.)-3.55 F F2 +(aname)180.33 422.4 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25 +(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0(ar)2.5 +E(guments are ignored.)-.18 E 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 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 470.4 Q F0 .372 +(If the standard input is coming from a terminal,)180 470.4 R F1 -.18 +(re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.873 E F0(abo) +2.623 E -.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G(sed)-2.873 E +.218(to obtain the line.)180 482.4 R .218 (Readline uses the current \(or def)5.218 F .218 (ault, if line editing w)-.1 F .218(as not pre)-.1 F(viously)-.25 E -(acti)180 132 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings.)-2.5 E F1 -144 144 Q F2(te)2.5 E(xt)-.2 E F0(If)180 144 Q F1 -.18(re)2.715 G -(adline).18 E F0 .216(is being used to read the line,)2.715 F F2(te) -2.716 E(xt)-.2 E F0 .216(is placed into the editing b)2.716 F(uf)-.2 E -.216(fer before edit-)-.25 F(ing be)180 156 Q(gins.)-.15 E F1144 -168 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 180 S(ad).18 E F0 -1.395(returns after reading)3.895 F F2(nc)3.895 E(har)-.15 E(s)-.1 E F0 -1.395(characters rather than w)3.895 F 1.394 -(aiting for a complete line of)-.1 F(input, b)180 192 Q -(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15 -E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1 -144 204 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 216 S(ad) -.18 E F0 1.269(returns after reading e)3.769 F(xactly)-.15 E F2(nc)3.769 -E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.27 +(acti)180 494.4 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E +(ut uses Readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 E +(ault \214lename completion.)-.1 E 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 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 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 228 R F1 -.18(re)2.775 -G(ad).18 E F0 .274(times out.)2.774 F .274(Delimiter characters encoun-) -5.274 F 1.002 -(tered in the input are not treated specially and do not cause)180 240 R -F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc)3.503 -E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 252 R .608 +(line of input, unless EOF is encountered or)180 590.4 R F1 -.18(re) +2.775 G(ad).18 E F0 .274(times out.)2.774 F .274 +(Delimiter characters encoun-)5.274 F 1.002 +(tered in the input are not treated specially and do not cause)180 602.4 +R F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc) +3.503 E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 614.4 R .608 (The result is not split on the characters in)5.609 F F1(IFS)3.108 E F0 -3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 264 S .669 +3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 626.4 S .669 (riable is assigned e).25 F .669 (xactly the characters read \(with the e)-.15 F .67 -(xception of backslash; see the)-.15 F F1180 276 Q F0(option belo) -2.5 E(w\).)-.25 E F1144 288 Q F2(pr)2.5 E(ompt)-.45 E F0(Display) -180 300 Q F2(pr)3.661 E(ompt)-.45 E F0 1.161(on standard error)3.661 F -3.661(,w)-.4 G 1.161(ithout a trailing ne)-3.661 F 1.161 -(wline, before attempting to read)-.25 F(an)180 312 Q 2.5(yi)-.15 G 2.5 -(nput. The)-2.5 F +(xception of backslash; see the)-.15 F 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 324 Q F0 .543(Backslash does not act as an escape character) -180 324 R 5.543(.T)-.55 G .544(he backslash is considered to be part of) --5.543 F(the line.)180 336 Q(In particular)5 E 2.5(,ab)-.4 G -(ackslash-ne)-2.5 E(wline pair may not be used as a line continuation.) --.25 E F1144 348 Q F0(Silent mode.)180 348 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 .493(the line.)180 +698.4 R .493(In particular)5.493 F 2.993(,ab)-.4 G(ackslash-ne)-2.993 E +.493(wline pair may not then be used as a line continua-)-.25 F(tion.) +180 710.4 Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(68)188.455 E +0 Cg EP +%%Page: 69 69 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q F0(Silent mode.)180 84 Q (If input is coming from a terminal, characters are not echoed.)5 E F1 -144 360 Q F2(timeout)2.5 E F0(Cause)180 372 Q F1 -.18(re)2.929 G -(ad).18 E F0 .428(to time out and return f)2.929 F .428 -(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .56 -(ber of characters\) is not read within)180 384 R F2(timeout)3.061 E F0 -(seconds.)3.061 E F2(timeout)5.561 E F0 .561(may be a decimal number) -3.061 F(with a fractional portion follo)180 396 Q +144 96 Q/F2 10/Times-Italic@0 SF(timeout)2.5 E F0(Cause)180 108 Q +F1 -.18(re)2.928 G(ad).18 E F0 .428(to time out and return f)2.928 F +.428(ailure if a complete line of input \(or a speci\214ed num-)-.1 F +.561(ber of characters\) is not read within)180 120 R F2(timeout)3.061 E +F0(seconds.)3.061 E F2(timeout)5.561 E F0 .56(may be a decimal number) +3.061 F(with a fractional portion follo)180 132 Q (wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E .3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ g input from a terminal, pipe, or other special \214le; it has no ef)180 -408 R .506(fect when reading)-.25 F .59(from re)180 420 R .59 -(gular \214les.)-.15 F(If)5.59 E F1 -.18(re)3.09 G(ad).18 E F0 .589 -(times out,)3.09 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)-.2 -G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .589 -(artial input read into the speci\214ed).15 F -.25(va)180 432 S(riable) +144 R .505(fect when reading)-.25 F .589(from re)180 156 R .589 +(gular \214les.)-.15 F(If)5.589 E F1 -.18(re)3.089 G(ad).18 E F0 .589 +(times out,)3.089 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve) +-.2 G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .59 +(artial input read into the speci\214ed).15 F -.25(va)180 168 S(riable) .25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 .27 (is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately)2.77 F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 G -(ata.)-2.77 E 1.12(The e)180 444 R 1.12(xit status is 0 if input is a) +(ata.)-2.77 E 1.12(The e)180 180 R 1.12(xit status is 0 if input is a) -.15 F -.25(va)-.2 G 1.12(ilable on the speci\214ed \214le descriptor) .25 F 3.62(,n)-.4 G 1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 -456 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e) -.15 E(xceeded.)-.15 E F1144 468 Q F2(fd)2.5 E F0 -(Read input from \214le descriptor)180 468 Q F2(fd)2.5 E F0(.)A .476 -(If no)144 484.8 R F2(names)3.336 E F0 .476 -(are supplied, the line read is assigned to the v)3.246 F(ariable)-.25 E -F3(REPL)2.977 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A F0 .477(The e)4.977 -F .477(xit status is zero,)-.15 F .773 -(unless end-of-\214le is encountered,)144 496.8 R F1 -.18(re)3.273 G(ad) -.18 E F0 .772 -(times out \(in which case the status is greater than 128\), a)3.273 F --.25(va)144 508.8 S 2.004 -(riable assignment error \(such as assigning to a readonly v).25 F 2.005 -(ariable\) occurs, or an in)-.25 F -.25(va)-.4 G 2.005(lid \214le).25 F -(descriptor is supplied as the ar)144 520.8 Q(gument to)-.18 E F1 -2.5 E F0(.)A F1 -.18(re)108 537.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A +192 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e) +.15 E(xceeded.)-.15 E F1144 204 Q F2(fd)2.5 E F0 +(Read input from \214le descriptor)180 204 Q F2(fd)2.5 E F0(.)A .477 +(If no)144 220.8 R F2(names)3.337 E F0 .477 +(are supplied, the line read is assigned to the v)3.247 F(ariable)-.25 E +/F3 9/Times-Bold@0 SF(REPL)2.976 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A +F0 .476(The e)4.976 F .476(xit status is zero,)-.15 F .772 +(unless end-of-\214le is encountered,)144 232.8 R F1 -.18(re)3.272 G(ad) +.18 E F0 .773 +(times out \(in which case the status is greater than 128\), a)3.272 F +-.25(va)144 244.8 S 2.004 +(riable assignment error \(such as assigning to a readonly v).25 F 2.004 +(ariable\) occurs, or an in)-.25 F -.25(va)-.4 G 2.004(lid \214le).25 F +(descriptor is supplied as the ar)144 256.8 Q(gument to)-.18 E F1 +2.5 E F0(.)A F1 -.18(re)108 273.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(wor)A -(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 549.6 R -.15(ve)-.25 G +(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 285.6 R -.15(ve)-.25 G (n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77(ed readonly; the v) -.1 F .77(alues of these)-.25 F F2(names)3.63 E F0 .77 -(may not be changed by subse-)3.54 F 1.096(quent assignment.)144 561.6 R -1.096(If the)6.096 F 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 573.6 Q 3.334(ed. The) +(may not be changed by subse-)3.54 F 1.097(quent assignment.)144 297.6 R +1.097(If the)6.097 F F13.597 E F0 1.097 +(option is supplied, the functions corresponding to the)3.597 F F2 +(names)3.596 E F0 1.096(are so)3.596 F(mark)144 309.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 585.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 597.6 R -.15(ve) +-.25 E .777(ables to associati)144 321.6 R 1.077 -.15(ve a)-.25 H 3.277 +(rrays. If).15 F .777(both options are supplied,)3.277 F F13.277 E +F0(tak)3.277 E .776(es precedence.)-.1 F .776(If no)5.776 F F2(name) +3.636 E F0(ar)3.456 E(gu-)-.18 E .521(ments are gi)144 333.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 609.6 R(The)5.296 E F1 -2.796 E F0(option)2.796 E .786 +.522(The other)5.521 F .295(options may be used to restrict the output \ +to a subset of the set of readonly names.)144 345.6 R(The)5.295 E F1 +2.795 E F0(option)2.795 E .786 (causes output to be displayed in a format that may be reused as input.) -144 621.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 -633.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) +144 357.6 R .786(If a v)5.786 F .786(ariable name is fol-)-.25 F(lo)144 +369.6 Q .718(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) -3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor) 3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in) -5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the) -144 645.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) +144 381.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) -.25 F .26(ariable name, or)-.25 F F12.76 E F0 .26 -(is supplied with a)2.76 F F2(name)144.36 657.6 Q F0 -(that is not a function.)2.68 E F1 -.18(re)108 674.4 S(tur).18 E(n)-.15 -E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 686.4 R --.15(xe)-.15 G .02(cuting and return the v).15 F .021 -(alue speci\214ed by)-.25 F F2(n)2.881 E F0 .021(to its caller)2.761 F -5.021(.I)-.55 G(f)-5.021 E F2(n)2.881 E F0 .021(is omitted,)2.761 F .597 -(the return status is that of the last command e)144 698.4 R -.15(xe) --.15 G .596(cuted in the function body).15 F 5.596(.I)-.65 G(f)-5.596 E -F1 -.18(re)3.096 G(tur).18 E(n)-.15 E F0 .596(is e)3.096 F -.15(xe)-.15 -G(cuted).15 E 1.238(by a trap handler)144 710.4 R 3.738(,t)-.4 G 1.238 +(is supplied with a)2.76 F F2(name)144.36 393.6 Q F0 +(that is not a function.)2.68 E F1 -.18(re)108 410.4 S(tur).18 E(n)-.15 +E F0([)2.5 E F2(n)A F0(])A .021(Causes a function to stop e)144 422.4 R +-.15(xe)-.15 G .021(cuting and return the v).15 F .021 +(alue speci\214ed by)-.25 F F2(n)2.88 E F0 .02(to its caller)2.76 F 5.02 +(.I)-.55 G(f)-5.02 E F2(n)2.88 E F0 .02(is omitted,)2.76 F .596 +(the return status is that of the last command e)144 434.4 R -.15(xe) +-.15 G .597(cuted in the function body).15 F 5.597(.I)-.65 G(f)-5.597 E +F1 -.18(re)3.097 G(tur).18 E(n)-.15 E F0 .597(is e)3.097 F -.15(xe)-.15 +G(cuted).15 E 1.239(by a trap handler)144 446.4 R 3.738(,t)-.4 G 1.238 (he last command used to determine the status is the last command e) --3.738 F -.15(xe)-.15 G(cuted).15 E 1.067(before the trap handler)144 -722.4 R 6.067(.i)-.55 G(f)-6.067 E F1 -.18(re)3.567 G(tur).18 E(n)-.15 E -F0 1.067(is e)3.567 F -.15(xe)-.15 G 1.067(cuted during a).15 F F1(DEB) -3.567 E(UG)-.1 E F0 1.067(trap, the last command used to)3.567 F -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(66)192.055 E 0 Cg EP -%%Page: 67 67 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .389 -(determine the status is the last command e)144 84 R -.15(xe)-.15 G .389 -(cuted by the trap handler before).15 F/F1 10/Times-Bold@0 SF -.18(re) -2.89 G(tur).18 E(n)-.15 E F0 -.1(wa)2.89 G 2.89(si).1 G -1.9 -.4(nv o) --2.89 H -.1(ke).4 G(d.).1 E(If)144 96 Q F1 -.18(re)2.584 G(tur).18 E(n) --.15 E F0 .084(is used outside a function, b)2.584 F .084(ut during e) --.2 F -.15(xe)-.15 G .084(cution of a script by the).15 F F1(.)2.584 E -F0(\()5.084 E F1(sour)A(ce)-.18 E F0 2.583(\)c)C .083(ommand, it)-2.583 -F .588(causes the shell to stop e)144 108 R -.15(xe)-.15 G .588 -(cuting that script and return either).15 F/F2 10/Times-Italic@0 SF(n) -3.448 E F0 .589(or the e)3.329 F .589(xit status of the last com-)-.15 F -.326(mand e)144 120 R -.15(xe)-.15 G .326 -(cuted within the script as the e).15 F .326(xit status of the script.) --.15 F(If)5.326 E F2(n)2.826 E F0 .325(is supplied, the return v)2.826 F -.325(alue is)-.25 F .444(its least signi\214cant 8 bits.)144 132 R .444 -(The return status is non-zero if)5.444 F F1 -.18(re)2.945 G(tur).18 E -(n)-.15 E F0 .445(is supplied a non-numeric ar)2.945 F(gu-)-.18 E .381 -(ment, or is used outside a function and not during e)144 144 R -.15(xe) --.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E F1 -(sour)2.881 E(ce)-.18 E F0 5.38(.A)C .68 -.15(ny c)-5.38 H(om-).15 E -.749(mand associated with the)144 156 R F1(RETURN)3.249 E F0 .749 +-3.738 F -.15(xe)-.15 G(cuted).15 E 1.032(before the trap handler)144 +458.4 R 6.032(.I)-.55 G(f)-6.032 E F1 -.18(re)3.532 G(tur).18 E(n)-.15 E +F0 1.032(is e)3.532 F -.15(xe)-.15 G 1.032(cuted during a).15 F F1(DEB) +3.533 E(UG)-.1 E F0 1.033(trap, the last command used to)3.533 F .39 +(determine the status is the last command e)144 470.4 R -.15(xe)-.15 G +.389(cuted by the trap handler before).15 F F1 -.18(re)2.889 G(tur).18 E +(n)-.15 E F0 -.1(wa)2.889 G 2.889(si).1 G -1.9 -.4(nv o)-2.889 H -.1(ke) +.4 G(d.).1 E(If)144 482.4 Q F1 -.18(re)2.583 G(tur).18 E(n)-.15 E F0 +.084(is used outside a function, b)2.583 F .084(ut during e)-.2 F -.15 +(xe)-.15 G .084(cution of a script by the).15 F F1(.)2.584 E F0(\()5.084 +E F1(sour)A(ce)-.18 E F0 2.584(\)c)C .084(ommand, it)-2.584 F .589 +(causes the shell to stop e)144 494.4 R -.15(xe)-.15 G .589 +(cuting that script and return either).15 F F2(n)3.448 E F0 .588 +(or the e)3.328 F .588(xit status of the last com-)-.15 F .325(mand e) +144 506.4 R -.15(xe)-.15 G .325(cuted within the script as the e).15 F +.326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .326 +(is supplied, the return v)2.826 F .326(alue is)-.25 F .445 +(its least signi\214cant 8 bits.)144 518.4 R .444 +(The return status is non-zero if)5.445 F F1 -.18(re)2.944 G(tur).18 E +(n)-.15 E F0 .444(is supplied a non-numeric ar)2.944 F(gu-)-.18 E .381 +(ment, or is used outside a function and not during e)144 530.4 R -.15 +(xe)-.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E +F1(sour)2.881 E(ce)-.18 E F0 5.381(.A)C .681 -.15(ny c)-5.381 H(om-).15 +E .75(mand associated with the)144 542.4 R F1(RETURN)3.249 E F0 .749 (trap is e)3.249 F -.15(xe)-.15 G .749(cuted before e).15 F -.15(xe)-.15 -G .75(cution resumes after the function).15 F(or script.)144 168 Q F1 -(set)108 184.8 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C +G .749(cution resumes after the function).15 F(or script.)144 554.4 Q F1 +(set)108 571.2 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E -F0(...])2.5 E F1(set)108 196.8 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 +F0(...])2.5 E F1(set)108 583.2 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1(+o)-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E -(g)-.37 E F0(...])2.5 E -.4(Wi)144 208.8 S .836 +(g)-.37 E F0(...])2.5 E -.4(Wi)144 595.2 S .835 (thout options, the name and v).4 F .835(alue of each shell v)-.25 F -.835(ariable are displayed in a format that can be)-.25 F .784 -(reused as input for setting or resetting the currently-set v)144 220.8 -R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 -(riables cannot be).25 F 2.912(reset. In)144 232.8 R F2(posix)2.912 E F0 -.412(mode, only shell v)2.912 F .412(ariables are listed.)-.25 F .412 -(The output is sorted according to the current)5.412 F 3.53 -(locale. When)144 244.8 R 1.031(options are speci\214ed, the)3.53 F -3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.531(utes. An) --.2 F 3.531(ya)-.15 G -.18(rg)-3.531 G 1.031(uments remaining).18 F -1.624(after option processing are treated as v)144 256.8 R 1.623 +.836(ariable are displayed in a format that can be)-.25 F .784 +(reused as input for setting or resetting the currently-set v)144 607.2 +R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .783 +(riables cannot be).25 F 2.946(reset. In)144 619.2 R F2 .447(posix mode) +2.946 F F0 2.947(,o)C .447(nly shell v)-2.947 F .447 +(ariables are listed.)-.25 F .447 +(The output is sorted according to the current)5.447 F 3.531 +(locale. When)144 631.2 R 1.031(options are speci\214ed, the)3.531 F +3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.53(utes. An) +-.2 F 3.53(ya)-.15 G -.18(rg)-3.53 G 1.03(uments remaining).18 F 1.623 +(after option processing are treated as v)144 643.2 R 1.624 (alues for the positional parameters and are assigned, in)-.25 F(order) -144 268.8 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A +144 655.2 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 280.8 Q -F0 1.377(Each v)184 280.8 R 1.377 +-.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 667.2 Q +F0 1.378(Each v)184 667.2 R 1.377 (ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve) --.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.378(xport attrib)-.15 F -1.378(ute and)-.2 F(mark)184 292.8 Q(ed for e)-.1 E(xport to the en)-.15 -E(vironment of subsequent commands.)-.4 E F1144 304.8 Q F0 .132 -(Report the status of terminated background jobs immediately)184 304.8 R -2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E -(primary prompt.)184 316.8 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) --.25 H(nly when job control is enabled.).15 E F1144 328.8 Q F0 -.087(Exit immediately if a)184 328.8 R F2(pipeline)2.587 E F0 .087 -(\(which may consist of a single)2.587 F F2 .088(simple command)2.588 F -F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 340.8 Q -F2 1.521(compound command)4.021 F F0(\(see)4.021 E/F3 9/Times-Bold@0 SF -1.521(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e) -.15 F 1.521(xits with a non-zero status.)-.15 F .079 -(The shell does not e)184 352.8 R .079(xit if the command that f)-.15 F -.08(ails is part of the command list immediately)-.1 F(follo)184 364.8 Q -1.655(wing a)-.25 F F1(while)4.155 E F0(or)4.155 E F1(until)4.155 E F0 --.1(ke)4.155 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.654 -(wing the)-.25 F F1(if)4.154 E F0(or)4.154 E F1(elif)4.154 E F0(reserv) -4.154 E(ed)-.15 E -.1(wo)184 376.8 S .581(rds, part of an).1 F 3.081(yc) --.15 G .581(ommand e)-3.081 F -.15(xe)-.15 G .581(cuted in a).15 F F1 -(&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .582(list e)3.082 F .582 -(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 388.8 R -F1(&&)3.418 E F0(or)3.418 E F1(||)3.418 E F0 3.418(,a)C 1.218 -.15(ny c) --3.418 H .918(ommand in a pipeline b).15 F .917 -(ut the last, or if the command')-.2 F 3.417(sr)-.55 G(eturn)-3.417 E --.25(va)184 400.8 S .66(lue is being in).25 F -.15(ve)-.4 G .66 -(rted with).15 F F1(!)3.16 E F0 5.661(.I)C 3.161(fac)-5.661 G .661 -(ompound command other than a subshell returns a)-3.161 F 1.113 -(non-zero status because a command f)184 412.8 R 1.112(ailed while)-.1 F -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 424.8 R 2.677 -(xit. A)-.15 F .177(trap on)2.677 F F1(ERR)2.677 E F0 2.677(,i)C 2.678 -(fs)-2.677 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178 -(cuted before the shell e).15 F 2.678(xits. This)-.15 F .178 -(option applies to)2.678 F .618(the shell en)184 436.8 R .617 +-.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.377(xport attrib)-.15 F +1.377(ute and)-.2 F(mark)184 679.2 Q(ed for e)-.1 E(xport to the en)-.15 +E(vironment of subsequent commands.)-.4 E F1144 691.2 Q F0 .131 +(Report the status of terminated background jobs immediately)184 691.2 R +2.632(,r)-.65 G .132(ather than before the ne)-2.632 F(xt)-.15 E +(primary prompt.)184 703.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) +-.25 H(nly when job control is enabled.).15 E F1144 715.2 Q F0 +.088(Exit immediately if a)184 715.2 R F2(pipeline)2.588 E F0 .087 +(\(which may consist of a single)2.588 F F2 .087(simple command)2.587 F +F0 .087(\), a)B F2(list)2.587 E F0 2.587(,o)C(r)-2.587 E(a)184 727.2 Q +F2 1.52(compound command)4.02 F F0(\(see)4.021 E F3 1.521(SHELL GRAMMAR) +4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e).15 F 1.521 +(xits with a non-zero status.)-.15 F(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(69)188.455 E 0 Cg EP +%%Page: 70 70 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .08 +(The shell does not e)184 84 R .079(xit if the command that f)-.15 F +.079(ails is part of the command list immediately)-.1 F(follo)184 96 Q +1.654(wing a)-.25 F/F1 10/Times-Bold@0 SF(while)4.154 E F0(or)4.154 E F1 +(until)4.154 E F0 -.1(ke)4.154 G(yw)-.05 E 1.655 +(ord, part of the test follo)-.1 F 1.655(wing the)-.25 F F1(if)4.155 E +F0(or)4.155 E F1(elif)4.155 E F0(reserv)4.155 E(ed)-.15 E -.1(wo)184 108 +S .582(rds, part of an).1 F 3.082(yc)-.15 G .582(ommand e)-3.082 F -.15 +(xe)-.15 G .581(cuted in a).15 F F1(&&)3.081 E F0(or)3.081 E F1(||)3.081 +E F0 .581(list e)3.081 F .581(xcept the command follo)-.15 F(wing)-.25 E +.917(the \214nal)184 120 R F1(&&)3.417 E F0(or)3.417 E F1(||)3.417 E F0 +3.417(,a)C 1.217 -.15(ny c)-3.417 H .918(ommand in a pipeline b).15 F +.918(ut the last, or if the command')-.2 F 3.418(sr)-.55 G(eturn)-3.418 +E -.25(va)184 132 S .661(lue is being in).25 F -.15(ve)-.4 G .661 +(rted with).15 F F1(!)3.161 E F0 5.661(.I)C 3.161(fac)-5.661 G .66 +(ompound command other than a subshell returns a)-3.161 F 1.112 +(non-zero status because a command f)184 144 R 1.112(ailed while)-.1 F +F13.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.113 +(eing ignored, the shell does)-3.612 F .178(not e)184 156 R 2.678 +(xit. A)-.15 F .178(trap on)2.678 F F1(ERR)2.678 E F0 2.678(,i)C 2.678 +(fs)-2.678 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178 +(cuted before the shell e).15 F 2.677(xits. This)-.15 F .177 +(option applies to)2.677 F .617(the shell en)184 168 R .617 (vironment and each subshell en)-.4 F .617(vironment separately \(see) --.4 F F3 .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR)184 448.8 R(ONMENT) --.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 +-.4 F/F2 9/Times-Bold@0 SF .618(COMMAND EXE-)3.118 F .643(CUTION ENVIR) +184 180 R(ONMENT)-.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 (\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15 -(xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 460.8 -Q 2.042(If a compound command or shell function e)184 478.8 R -.15(xe) --.15 G 2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F14.542 -E F0 2.042(is being)4.542 F 1.435(ignored, none of the commands e)184 -490.8 R -.15(xe)-.15 G 1.436 -(cuted within the compound command or function).15 F .194 -(body will be af)184 502.8 R .194(fected by the)-.25 F F12.694 E +(xe)-.15 G .642(cuting all).15 F(the commands in the subshell.)184 192 Q +2.042(If a compound command or shell function e)184 210 R -.15(xe)-.15 G +2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F14.542 E F0 +2.043(is being)4.543 F 1.436(ignored, none of the commands e)184 222 R +-.15(xe)-.15 G 1.435(cuted within the compound command or function).15 F +.193(body will be af)184 234 R .193(fected by the)-.25 F F12.693 E F0 .193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1 -2.693 E F0 .193(is set and a command returns a f)2.693 F(ailure) --.1 E 3.39(status. If)184 514.8 R 3.39(ac)3.39 G .89 +2.693 E F0 .194(is set and a command returns a f)2.693 F(ailure) +-.1 E 3.39(status. If)184 246 R 3.39(ac)3.39 G .89 (ompound command or shell function sets)-3.39 F 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 526.8 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 538.8 Q F1 -144 550.8 Q F0(Disable pathname e)184 550.8 Q(xpansion.)-.15 E F1 -144 562.8 Q F0 2.238(Remember the location of commands as the)184 -562.8 R 4.738(ya)-.15 G 2.239(re look)-4.738 F 2.239(ed up for e)-.1 F --.15(xe)-.15 G 4.739(cution. This).15 F(is)4.739 E(enabled by def)184 -574.8 Q(ault.)-.1 E F1144 586.8 Q F0 .514(All ar)184 586.8 R .514 +(where)184 258 Q F13.153 E F0 .653 +(is ignored, that setting will not ha)3.153 F .954 -.15(ve a)-.2 H .954 +-.15(ny e).15 H -.25(ff).15 G .654(ect until the compound command).25 F +(or the command containing the function call completes.)184 270 Q F1 +144 282 Q F0(Disable pathname e)184 282 Q(xpansion.)-.15 E F1 +144 294 Q F0 2.239(Remember the location of commands as the)184 +294 R 4.738(ya)-.15 G 2.238(re look)-4.738 F 2.238(ed up for e)-.1 F +-.15(xe)-.15 G 4.738(cution. This).15 F(is)4.738 E(enabled by def)184 +306 Q(ault.)-.1 E F1144 318 Q F0 .513(All ar)184 318 R .514 (guments in the form of assignment statements are placed in the en)-.18 -F .513(vironment for a)-.4 F -(command, not just those that precede the command name.)184 598.8 Q F1 -144 610.8 Q F0 .148(Monitor mode.)184 610.8 R .148 -(Job control is enabled.)5.148 F .149(This option is on by def)5.148 F -.149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .651 -(on systems that support it \(see)184 622.8 R F3 .651(JOB CONTR)3.151 F -(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .65 -(processes run in a separate)3.151 F .678(process group.)184 634.8 R -.679(When a background job completes, the shell prints a line containin\ -g its)5.678 F -.15(ex)184 646.8 S(it status.).15 E F1144 658.8 Q -F0 .653(Read commands b)184 658.8 R .653(ut do not e)-.2 F -.15(xe)-.15 -G .653(cute them.).15 F .652 -(This may be used to check a shell script for)5.653 F(syntax errors.)184 -670.8 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 -E F1144 682.8 Q F2(option\255name)2.5 E F0(The)184 694.8 Q F2 -(option\255name)2.5 E F0(can be one of the follo)2.5 E(wing:)-.25 E F1 -(allexport)184 706.8 Q F0(Same as)224 718.8 Q F12.5 E F0(.)A -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(67)192.055 E 0 Cg EP -%%Page: 68 68 +F .514(vironment for a)-.4 F +(command, not just those that precede the command name.)184 330 Q F1 +144 342 Q F0 .149(Monitor mode.)184 342 R .149 +(Job control is enabled.)5.149 F .148(This option is on by def)5.149 F +.148(ault for interacti)-.1 F .448 -.15(ve s)-.25 H(hells).15 E .65 +(on systems that support it \(see)184 354 R F2 .651(JOB CONTR)3.151 F +(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .651 +(processes run in a separate)3.151 F .679(process group.)184 366 R .678 +(When a background job completes, the shell prints a line containing it\ +s)5.679 F -.15(ex)184 378 S(it status.).15 E F1144 390 Q F0 .652 +(Read commands b)184 390 R .652(ut do not e)-.2 F -.15(xe)-.15 G .652 +(cute them.).15 F .653(This may be used to check a shell script for) +5.652 F(syntax errors.)184 402 Q(This is ignored by interacti)5 E .3 +-.15(ve s)-.25 H(hells.).15 E F1144 414 Q/F3 10/Times-Italic@0 SF +(option\255name)2.5 E F0(The)184 426 Q F3(option\255name)2.5 E F0 +(can be one of the follo)2.5 E(wing:)-.25 E F1(allexport)184 438 Q F0 +(Same as)224 450 Q F12.5 E F0(.)A F1(braceexpand)184 462 Q F0 +(Same as)224 474 Q F12.5 E F0(.)A F1(emacs)184 486 Q F0 .089 +(Use an emacs-style command line editing interf)224 486 R 2.589 +(ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95 +(when the shell is interacti)224 498 R -.15(ve)-.25 G 3.45(,u).15 G .95 +(nless the shell is started with the)-3.45 F F1(\255\255noediting)3.45 E +F0 2.5(option. This)224 510 R(also af)2.5 E(fects the editing interf) +-.25 E(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(err) +184 522 Q(exit)-.18 E F0(Same as)224 522 Q F12.5 E F0(.)A F1 +(errtrace)184 534 Q F0(Same as)224 534 Q F12.5 E F0(.)A F1 +(functrace)184 546 Q F0(Same as)224 558 Q F12.5 E F0(.)A F1 +(hashall)184 570 Q F0(Same as)224 570 Q F12.5 E F0(.)A F1 +(histexpand)184 582 Q F0(Same as)224 594 Q F12.5 E F0(.)A F1 +(history)184 606 Q F0 .587(Enable command history)224 606 R 3.087(,a) +-.65 G 3.087(sd)-3.087 G .587(escribed abo)-3.087 F .887 -.15(ve u)-.15 +H(nder).15 E F2(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F4 9/Times-Roman@0 SF +(.)A F0 .587(This option is)5.087 F(on by def)224 618 Q +(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 +630 Q(eeof)-.18 E F0 1.656(The ef)224 642 R 1.656 +(fect is as if the shell command)-.25 F/F5 10/Courier@0 SF(IGNOREEOF=10) +4.157 E F0 1.657(had been e)4.157 F -.15(xe)-.15 G(cuted).15 E(\(see)224 +654 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).) +.15 E F1 -.1(ke)184 666 S(yw).1 E(ord)-.1 E F0(Same as)224 678 Q F1 +2.5 E F0(.)A F1(monitor)184 690 Q F0(Same as)224 690 Q F12.5 +E F0(.)A F1(noclob)184 702 Q(ber)-.1 E F0(Same as)224 714 Q F12.5 +E F0(.)A(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(70)188.455 E 0 +Cg EP +%%Page: 71 71 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(braceexpand)184 84 Q F0(Same as)224 96 Q F12.5 E F0(.)A F1 -(emacs)184 108 Q F0 .089(Use an emacs-style command line editing interf) -224 108 R 2.589(ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 -E .95(when the shell is interacti)224 120 R -.15(ve)-.25 G 3.45(,u).15 G -.95(nless the shell is started with the)-3.45 F F1(\255\255noediting) -3.45 E F0 2.5(option. This)224 132 R(also af)2.5 E -(fects the editing interf)-.25 E(ace used for)-.1 E F1 -.18(re)2.5 G -(ad \255e).18 E F0(.)A F1(err)184 144 Q(exit)-.18 E F0(Same as)224 144 Q -F12.5 E F0(.)A F1(errtrace)184 156 Q F0(Same as)224 156 Q F1 -2.5 E F0(.)A F1(functrace)184 168 Q F0(Same as)224 180 Q F12.5 E -F0(.)A F1(hashall)184 192 Q F0(Same as)224 192 Q F12.5 E F0(.)A F1 -(histexpand)184 204 Q F0(Same as)224 216 Q F12.5 E F0(.)A F1 -(history)184 228 Q F0 .586(Enable command history)224 228 R 3.087(,a) --.65 G 3.087(sd)-3.087 G .587(escribed abo)-3.087 F .887 -.15(ve u)-.15 -H(nder).15 E/F2 9/Times-Bold@0 SF(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F3 9 -/Times-Roman@0 SF(.)A F0 .587(This option is)5.087 F(on by def)224 240 Q -(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 -252 Q(eeof)-.18 E F0 1.657(The ef)224 264 R 1.657 -(fect is as if the shell command)-.25 F/F4 10/Courier@0 SF(IGNOREEOF=10) -4.156 E F0 1.656(had been e)4.156 F -.15(xe)-.15 G(cuted).15 E(\(see)224 -276 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).) -.15 E F1 -.1(ke)184 288 S(yw).1 E(ord)-.1 E F0(Same as)224 300 Q F1 -2.5 E F0(.)A F1(monitor)184 312 Q F0(Same as)224 312 Q F12.5 -E F0(.)A F1(noclob)184 324 Q(ber)-.1 E F0(Same as)224 336 Q F12.5 -E F0(.)A F1(noexec)184 348 Q F0(Same as)224 348 Q F12.5 E F0(.)A -F1(noglob)184 360 Q F0(Same as)224 360 Q F12.5 E F0(.)A F1(nolog) -184 372 Q F0(Currently ignored.)224 372 Q F1(notify)184 384 Q F0 -(Same as)224 384 Q F12.5 E F0(.)A F1(nounset)184 396 Q F0(Same as) -224 396 Q F12.5 E F0(.)A F1(onecmd)184 408 Q F0(Same as)224 408 Q -F12.5 E F0(.)A F1(ph)184 420 Q(ysical)-.15 E F0(Same as)224 420 Q -F12.5 E F0(.)A F1(pipefail)184 432 Q F0 1.029 -(If set, the return v)224 432 R 1.029(alue of a pipeline is the v)-.25 F -1.03(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 444 -R 1.136 +SF(noexec)184 84 Q F0(Same as)224 84 Q F12.5 E F0(.)A F1(noglob) +184 96 Q F0(Same as)224 96 Q F12.5 E F0(.)A F1(nolog)184 108 Q F0 +(Currently ignored.)224 108 Q F1(notify)184 120 Q F0(Same as)224 120 Q +F12.5 E F0(.)A F1(nounset)184 132 Q F0(Same as)224 132 Q F1 +2.5 E F0(.)A F1(onecmd)184 144 Q F0(Same as)224 144 Q F12.5 E F0 +(.)A F1(ph)184 156 Q(ysical)-.15 E F0(Same as)224 156 Q F12.5 E F0 +(.)A F1(pipefail)184 168 Q F0 1.03(If set, the return v)224 168 R 1.029 +(alue of a pipeline is the v)-.25 F 1.029 +(alue of the last \(rightmost\) com-)-.25 F 1.136(mand to e)224 180 R +1.136 (xit with a non-zero status, or zero if all commands in the pipeline) --.15 F -.15(ex)224 456 S(it successfully).15 E 5(.T)-.65 G -(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 468 Q F0 -2.09(Change the beha)224 468 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 +-.15 F -.15(ex)224 192 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 204 Q F0 +2.091(Change the beha)224 204 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 (fers from the)-.25 F 1.212(POSIX standard to match the standard \()224 -480 R/F5 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B F2 -1.212(SEE ALSO)3.712 F F0(belo)3.462 E(w)-.25 E 2.306 -(for a reference to a document that details ho)224 492 R 4.807(wp)-.25 G -2.307(osix mode af)-4.807 F 2.307(fects bash')-.25 F(s)-.55 E(beha)224 -504 Q(vior)-.2 E(.)-.55 E F1(pri)184 516 Q(vileged)-.1 E F0(Same as)224 -528 Q F12.5 E F0(.)A F1 -.1(ve)184 540 S(rbose).1 E F0(Same as)224 -540 Q F12.5 E F0(.)A F1(vi)184 552 Q F0 1.466 -(Use a vi-style command line editing interf)224 552 R 3.965(ace. This) --.1 F 1.465(also af)3.965 F 1.465(fects the editing)-.25 F(interf)224 -564 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 -(xtrace)184 576 Q F0(Same as)224 576 Q F12.5 E F0(.)A(If)184 594 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 -606 Q F0 1.072(is supplied with no)3.572 F F5(option\255name)3.572 E F0 -3.572(,a)C 1.071(series of)-.001 F F1(set)3.571 E F0 1.071 -(commands to recreate the current)3.571 F -(option settings is displayed on the standard output.)184 618 Q F1 -144 630 Q F0 -.45(Tu)184 630 S 1.071(rn on).45 F F5(privile)4.821 E -.1 -(ge)-.4 G(d).1 E F0 3.572(mode. In)4.341 F 1.072(this mode, the)3.572 F -F2($ENV)3.572 E F0(and)3.322 E F2($B)3.572 E(ASH_ENV)-.27 E F0 1.072 -(\214les are not pro-)3.322 F 1.501 -(cessed, shell functions are not inherited from the en)184 642 R 1.5 -(vironment, and the)-.4 F F2(SHELLOPTS)4 E F3(,)A F2 -.27(BA)184 654 S -(SHOPTS).27 E F3(,)A F2(CDP)2.774 E -.855(AT)-.666 G(H).855 E F3(,)A F0 -(and)2.774 E F2(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G .524 -(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F -(vironment,)-.4 E .38(are ignored.)184 666 R .38 -(If the shell is started with the ef)5.38 F(fecti)-.25 E .679 -.15(ve u) --.25 H .379(ser \(group\) id not equal to the real).15 F .461 -(user \(group\) id, and the)184 678 R 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 690 Q .695 -.15(ve u)-.25 H .395 +216 R/F2 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B/F3 9 +/Times-Bold@0 SF 1.212(SEE ALSO)3.712 F F0(belo)3.463 E(w)-.25 E 2.307 +(for a reference to a document that details ho)224 228 R 4.806(wp)-.25 G +2.306(osix mode af)-4.806 F 2.306(fects bash')-.25 F(s)-.55 E(beha)224 +240 Q(vior)-.2 E(.)-.55 E F1(pri)184 252 Q(vileged)-.1 E F0(Same as)224 +264 Q F12.5 E F0(.)A F1 -.1(ve)184 276 S(rbose).1 E F0(Same as)224 +276 Q F12.5 E F0(.)A F1(vi)184 288 Q F0 1.465 +(Use a vi-style command line editing interf)224 288 R 3.966(ace. This) +-.1 F 1.466(also af)3.966 F 1.466(fects the editing)-.25 F(interf)224 +300 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 +(xtrace)184 312 Q F0(Same as)224 312 Q F12.5 E F0(.)A(If)184 330 Q +F13.053 E F0 .553(is supplied with no)3.053 F F2(option\255name) +3.053 E F0 3.053(,t)C .553(he v)-3.053 F .552 +(alues of the current options are printed.)-.25 F(If)5.552 E F1(+o)184 +342 Q F0 1.071(is supplied with no)3.571 F F2(option\255name)3.571 E F0 +3.571(,as)C 1.071(eries of)-3.571 F F1(set)3.572 E F0 1.072 +(commands to recreate the current)3.572 F +(option settings is displayed on the standard output.)184 354 Q F1 +144 366 Q F0 -.45(Tu)184 366 S 1.072(rn on).45 F F2(privile)4.822 E -.1 +(ge)-.4 G(d).1 E F0 3.572(mode. In)4.342 F 1.072(this mode, the)3.572 F +F3($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV)-.27 E F0 1.071 +(\214les are not pro-)3.322 F 1.5 +(cessed, shell functions are not inherited from the en)184 378 R 1.501 +(vironment, and the)-.4 F F3(SHELLOPTS)4.001 E/F4 9/Times-Roman@0 SF(,)A +F3 -.27(BA)184 390 S(SHOPTS).27 E F4(,)A F3(CDP)2.775 E -.855(AT)-.666 G +(H).855 E F4(,)A F0(and)2.775 E F3(GLOBIGNORE)3.025 E F0 -.25(va)2.775 G +.524(riables, if the).25 F 3.024(ya)-.15 G .524(ppear in the en)-3.024 F +(vironment,)-.4 E .379(are ignored.)184 402 R .379 +(If the shell is started with the ef)5.379 F(fecti)-.25 E .679 -.15 +(ve u)-.25 H .38(ser \(group\) id not equal to the real).15 F .462 +(user \(group\) id, and the)184 414 R F12.961 E F0 .461 +(option is not supplied, these actions are tak)2.961 F .461 +(en and the ef)-.1 F(fec-)-.25 E(ti)184 426 Q .694 -.15(ve u)-.25 H .394 (ser id is set to the real user id.).15 F .395(If the)5.395 F F1 -2.895 E F0 .394(option is supplied at startup, the ef)2.895 F(fecti)-.25 -E -.15(ve)-.25 G .386(user id is not reset.)184 702 R -.45(Tu)5.386 G -.386(rning this option of).45 F 2.886(fc)-.25 G .387(auses the ef)-2.886 -F(fecti)-.25 E .687 -.15(ve u)-.25 H .387(ser and group ids to be).15 F -(set to the real user and group ids.)184 714 Q(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(68)192.055 E 0 Cg EP -%%Page: 69 69 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q F0(Exit after reading and e)184 84 Q -.15(xe)-.15 G -(cuting one command.).15 E F1144 96 Q F0 -.35(Tr)184 96 S .044 -(eat unset v).35 F .044(ariables and parameters other than the special \ -parameters "@" and "*" as an)-.25 F .182 -(error when performing parameter e)184 108 R 2.682(xpansion. If)-.15 F --.15(ex)2.682 G .183(pansion is attempted on an unset v).15 F(ari-)-.25 -E .746(able or parameter)184 120 R 3.246(,t)-.4 G .746 +2.895 E F0 .395(option is supplied at startup, the ef)2.895 F(fecti)-.25 +E -.15(ve)-.25 G .387(user id is not reset.)184 438 R -.45(Tu)5.387 G +.387(rning this option of).45 F 2.886(fc)-.25 G .386(auses the ef)-2.886 +F(fecti)-.25 E .686 -.15(ve u)-.25 H .386(ser and group ids to be).15 F +(set to the real user and group ids.)184 450 Q F1144 462 Q F0 +(Exit after reading and e)184 462 Q -.15(xe)-.15 G(cuting one command.) +.15 E F1144 474 Q F0 -.35(Tr)184 474 S .043(eat unset v).35 F .044 +(ariables and parameters other than the special parameters "@" and "*" \ +as an)-.25 F .183(error when performing parameter e)184 486 R 2.683 +(xpansion. If)-.15 F -.15(ex)2.683 G .182 +(pansion is attempted on an unset v).15 F(ari-)-.25 E .746 +(able or parameter)184 498 R 3.246(,t)-.4 G .746 (he shell prints an error message, and, if not interacti)-3.246 F -.15 (ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184 -132 Q F1144 144 Q F0(Print shell input lines as the)184 144 Q 2.5 -(ya)-.15 G(re read.)-2.5 E F1144 156 Q F0 .315(After e)184 156 R -.315(xpanding each)-.15 F/F2 10/Times-Italic@0 SF .315(simple command) -2.815 F F0(,)A F1 -.25(fo)2.815 G(r).25 E F0(command,)2.815 E F1(case) -2.815 E F0(command,)2.815 E F1(select)2.815 E F0(command,)2.815 E 1.236 -(or arithmetic)184 168 R F1 -.25(fo)3.736 G(r).25 E F0 1.236 -(command, display the e)3.736 F 1.236(xpanded v)-.15 F 1.236(alue of) --.25 F/F3 9/Times-Bold@0 SF(PS4)3.736 E/F4 9/Times-Roman@0 SF(,)A F0 -(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 180 Q +510 Q F1144 522 Q F0(Print shell input lines as the)184 522 Q 2.5 +(ya)-.15 G(re read.)-2.5 E F1144 534 Q F0 .315(After e)184 534 R +.315(xpanding each)-.15 F F2 .315(simple command)2.815 F F0(,)A F1 -.25 +(fo)2.815 G(r).25 E F0(command,)2.815 E F1(case)2.815 E F0(command,) +2.815 E F1(select)2.815 E F0(command,)2.815 E 1.235(or arithmetic)184 +546 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F +1.236(xpanded v)-.15 F 1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0 +(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 558 Q (xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1 -144 192 Q F0 2.578(The shell performs brace e)184 192 R 2.578 +144 570 Q F0 2.579(The shell performs brace e)184 570 R 2.578 (xpansion \(see)-.15 F F1 2.578(Brace Expansion)5.078 F F0(abo)5.078 E --.15(ve)-.15 G 5.079(\). This).15 F 2.579(is on by)5.079 F(def)184 204 Q -(ault.)-.1 E F1144 216 Q F0 .214(If set,)184 216 R F1(bash)2.714 E -F0 .214(does not o)2.714 F -.15(ve)-.15 G .214(rwrite an e).15 F .214 +-.15(ve)-.15 G 5.078(\). This).15 F 2.578(is on by)5.078 F(def)184 582 Q +(ault.)-.1 E F1144 594 Q F0 .213(If set,)184 594 R F1(bash)2.713 E +F0 .213(does not o)2.713 F -.15(ve)-.15 G .214(rwrite an e).15 F .214 (xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0 -2.713(,a)C(nd)-2.713 E F1(<>)2.713 E F0 .213(redirection opera-)2.713 F -3.053(tors. This)184 228 R .553(may be o)3.053 F -.15(ve)-.15 G .553 +2.714(,a)C(nd)-2.714 E F1(<>)2.714 E F0 .214(redirection opera-)2.714 F +3.054(tors. This)184 606 R .553(may be o)3.053 F -.15(ve)-.15 G .553 (rridden when creating output \214les by using the redirection opera-) -.15 F(tor)184 240 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 -144 252 Q F0 .104(If set, an)184 252 R 2.604(yt)-.15 G .104 -(rap on)-2.604 F F1(ERR)2.604 E F0 .103 -(is inherited by shell functions, command substitutions, and com-)2.604 -F .838(mands e)184 264 R -.15(xe)-.15 G .838(cuted in a subshell en).15 -F 3.338(vironment. The)-.4 F F1(ERR)3.338 E F0 .839 -(trap is normally not inherited in)3.339 F(such cases.)184 276 Q F1 -144 288 Q F0(Enable)184 288 Q F1(!)3.032 E F0 .532 -(style history substitution.)5.532 F .531(This option is on by def)5.532 -F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 300 Q -.15 -(ve)-.25 G(.).15 E F1144 312 Q F0 .959 -(If set, the shell does not resolv)184 312 R 3.459(es)-.15 G .959 -(ymbolic links when e)-3.459 F -.15(xe)-.15 G .96 -(cuting commands such as).15 F F1(cd)3.46 E F0 2.822 -(that change the current w)184 324 R 2.822(orking directory)-.1 F 7.822 -(.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.821 -(ysical directory structure)-.05 F 2.685(instead. By)184 336 R(def)2.685 +.15 F(tor)184 618 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 630 Q F0 .103(If set, an)184 630 R 2.603(yt)-.15 G .103 +(rap on)-2.603 F F1(ERR)2.603 E F0 .104 +(is inherited by shell functions, command substitutions, and com-)2.603 +F .839(mands e)184 642 R -.15(xe)-.15 G .839(cuted in a subshell en).15 +F 3.339(vironment. The)-.4 F F1(ERR)3.338 E F0 .838 +(trap is normally not inherited in)3.338 F(such cases.)184 654 Q F1 +144 666 Q F0(Enable)184 666 Q F1(!)3.031 E F0 .531 +(style history substitution.)5.531 F .531(This option is on by def)5.531 +F .532(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 678 Q -.15 +(ve)-.25 G(.).15 E F1144 690 Q F0 .96 +(If set, the shell does not resolv)184 690 R 3.459(es)-.15 G .959 +(ymbolic links when e)-3.459 F -.15(xe)-.15 G .959 +(cuting commands such as).15 F F1(cd)3.459 E F0 2.821 +(that change the current w)184 702 R 2.822(orking directory)-.1 F 7.822 +(.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.822 +(ysical directory structure)-.05 F 2.686(instead. By)184 714 R(def)2.686 E(ault,)-.1 E F1(bash)2.686 E F0(follo)2.686 E .186 (ws the logical chain of directories when performing com-)-.25 F -(mands which change the current directory)184 348 Q(.)-.65 E F1144 -360 Q F0 .89(If set, an)184 360 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1 -(DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89 +(mands which change the current directory)184 726 Q(.)-.65 E +(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(71)188.455 E 0 Cg EP +%%Page: 72 72 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +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 372 R -.15(xe)-.15 G 1.932 +(substitutions, and commands e)184 96 R -.15(xe)-.15 G 1.932 (cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E -(UG)-.1 E F0(and)4.432 E F1(RETURN)184 384 Q F0 -(traps are normally not inherited in such cases.)2.5 E F1144 396 Q -F0 .401(If no ar)184 396 R .401(guments follo)-.18 F 2.901(wt)-.25 G -.401(his option, then the positional parameters are unset.)-2.901 F -(Otherwise,)5.4 E(the positional parameters are set to the)184 408 Q F2 -(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G -(ome of them be)-2.5 E(gin with a)-.15 E F12.5 E F0(.)A F1144 -420 Q F0 1.944(Signal the end of options, cause all remaining)184 420 R -F2(ar)4.444 E(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.445(ea)-4.444 G -1.945(ssigned to the positional)-4.445 F 3.446(parameters. The)184 432 R -F13.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 444 Q .425(The options are of)144 -460.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 +(UG)-.1 E F0(and)4.432 E F1(RETURN)184 108 Q F0 +(traps are normally not inherited in such cases.)2.5 E F1144 120 Q +F0 .4(If no ar)184 120 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401 +(his option, then the positional parameters are unset.)-2.901 F +(Otherwise,)5.401 E(the positional parameters are set to the)184 132 Q +/F2 10/Times-Italic@0 SF(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5 +(ni).15 G 2.5(fs)-2.5 G(ome of them be)-2.5 E(gin with a)-.15 E F1 +2.5 E F0(.)A F1144 144 Q F0 1.945 +(Signal the end of options, cause all remaining)184 144 R F2(ar)4.444 E +(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.444(ea)-4.444 G 1.944 +(ssigned to the positional)-4.444 F 3.445(parameters. The)184 156 R F1 +3.445 E F0(and)3.445 E F13.445 E F0 .945 +(options are turned of)3.445 F 3.445(f. If)-.25 F .946(there are no) +3.445 F F2(ar)3.446 E(g)-.37 E F0 .946(s, the positional)B +(parameters remain unchanged.)184 168 Q .425(The options are of)144 +184.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 (ault unless otherwise noted.)-.1 F .425 -(Using + rather than \255 causes these options)5.425 F .178 -(to be turned of)144 472.8 R 2.678(f. The)-.25 F .178 +(Using + rather than \255 causes these options)5.425 F .177 +(to be turned of)144 196.8 R 2.677(f. The)-.25 F .178 (options can also be speci\214ed as ar)2.678 F .178(guments to an in) --.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E .066 -(current set of options may be found in)144 484.8 R F1<24ad>2.566 E F0 +-.18 F -.2(vo)-.4 G .178(cation of the shell.).2 F(The)5.178 E .066 +(current set of options may be found in)144 208.8 R F1<24ad>2.566 E F0 5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066 -(ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F -(is encountered.)144 496.8 Q F1(shift)108 513.6 Q F0([)2.5 E F2(n)A F0 -(])A .429(The positional parameters from)144 525.6 R F2(n)2.929 E F0 -.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.428 G -.428(rameters represented by the num-).15 F(bers)144 537.6 Q F1($#)2.582 -E F0(do)2.582 E .082(wn to)-.25 F F1($#)2.582 E 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 549.6 R(If)5.06 E F2(n)2.92 E F0 +(ys true unless an in).1 F -.25(va)-.4 G .066(lid option).25 F +(is encountered.)144 220.8 Q F1(shift)108 237.6 Q F0([)2.5 E F2(n)A F0 +(])A .428(The positional parameters from)144 249.6 R F2(n)2.928 E F0 +.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.429 G +.429(rameters represented by the num-).15 F(bers)144 261.6 Q F1($#)2.583 +E F0(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0A F2(n)A F0 .083 +(+1 are unset.)B F2(n)5.443 E F0 .083(must be a non-ne)2.823 F -.05(ga) +-.15 G(ti).05 E .382 -.15(ve n)-.25 H .082(umber less than or equal to) +.15 F F1($#)2.582 E F0 5.082(.I)C(f)-5.082 E F2(n)2.942 E F0 .06 +(is 0, no parameters are changed.)144 273.6 R(If)5.06 E F2(n)2.92 E F0 .06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F (If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56 -(,t)C(he)-2.56 E .143(positional parameters are not changed.)144 561.6 R -.144(The return status is greater than zero if)5.143 F F2(n)3.004 E F0 -.144(is greater than)2.884 F F1($#)2.644 E F0 -(or less than zero; otherwise 0.)144 573.6 Q F1(shopt)108 590.4 Q F0([) +(,t)C(he)-2.56 E .144(positional parameters are not changed.)144 285.6 R +.144(The return status is greater than zero if)5.144 F F2(n)3.003 E F0 +.143(is greater than)2.883 F F1($#)2.643 E F0 +(or less than zero; otherwise 0.)144 297.6 Q F1(shopt)108 314.4 Q F0([) 2.5 E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(optname) --2.5 E F0(...])2.5 E -.8(To)144 602.4 S .64(ggle the v).8 F .639 +-2.5 E F0(...])2.5 E -.8(To)144 326.4 S .639(ggle the v).8 F .639 (alues of settings controlling optional shell beha)-.25 F(vior)-.2 E -5.639(.T)-.55 G .639(he settings can be either those)-5.639 F .374 -(listed belo)144 614.4 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H -2.874(ft).4 G(he)-2.874 E F12.874 E F0 .375 +5.639(.T)-.55 G .64(he settings can be either those)-5.639 F .375 +(listed belo)144 338.4 R 1.675 -.65(w, o)-.25 H 1.175 -.4(r, i).65 H +2.875(ft).4 G(he)-2.875 E F12.875 E F0 .375 (option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 -F F12.875 E F0 .375(option to the)2.875 F F1(set)2.875 E F0 -.2 -(bu)2.875 G .375(iltin com-).2 F 3.326(mand. W)144 626.4 R .826 -(ith no options, or with the)-.4 F F13.326 E F0 .825 -(option, a list of all settable options is displayed, with an)3.326 F -.945(indication of whether or not each is set.)144 638.4 R(The)5.945 E -F13.445 E F0 .945(option causes output to be displayed in a form) -3.445 F(that may be reused as input.)144 650.4 Q(Other options ha)5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 662.4 Q -F0(Enable \(set\) each)180 662.4 Q F2(optname)2.5 E F0(.)A F1144 -674.4 Q F0(Disable \(unset\) each)180 674.4 Q F2(optname)2.5 E F0(.)A F1 -144 686.4 Q F0 .003(Suppresses normal output \(quiet mode\); the \ -return status indicates whether the)180 686.4 R F2(optname)2.503 E F0 -(is)2.503 E .255(set or unset.)180 698.4 R .255(If multiple)5.255 F F2 -(optname)2.755 E F0(ar)2.755 E .256(guments are gi)-.18 F -.15(ve)-.25 G -2.756(nw).15 G(ith)-2.756 E F12.756 E F0 2.756(,t)C .256 -(he return status is zero if)-2.756 F(all)180 710.4 Q F2(optnames)2.5 E -F0(are enabled; non-zero otherwise.)2.5 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(69)192.055 E 0 Cg EP -%%Page: 70 70 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q F0(Restricts the v)180 84 Q(alues of)-.25 E/F2 10 -/Times-Italic@0 SF(optname)2.5 E F0(to be those de\214ned for the)2.5 E -F12.5 E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G -(iltin.).2 E .625(If either)144 100.8 R F13.125 E F0(or)3.124 E F1 -3.124 E F0 .624(is used with no)3.124 F F2(optname)3.124 E F0(ar) -3.124 E(guments,)-.18 E F1(shopt)3.124 E F0(sho)3.124 E .624 -(ws only those options which are)-.25 F 2.233(set or unset, respecti)144 -112.8 R -.15(ve)-.25 G(ly).15 E 7.234(.U)-.65 G 2.234 -(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0 2.234 -(options are disabled \(unset\) by)4.734 F(def)144 124.8 Q(ault.)-.1 E -1.544(The return status when listing options is zero if all)144 141.6 R -F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.)4.044 F -.696 +F F12.875 E F0 .374(option to the)2.875 F F1(set)2.874 E F0 -.2 +(bu)2.874 G .374(iltin com-).2 F 3.325(mand. W)144 350.4 R .825 +(ith no options, or with the)-.4 F F13.325 E F0 .826 +(option, a list of all settable options is displayed, with an)3.325 F +.552(indication of whether or not each is set; if)144 362.4 R F2 +(optnames)3.052 E F0 .551 +(are supplied, the output is restricted to those)3.052 F 2.549 +(options. The)144 374.4 R F12.549 E F0 .049(option causes output \ +to be displayed in a form that may be reused as input.)2.549 F(Other) +5.05 E(options ha)144 386.4 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E 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.503 E F0(is)2.503 E +.255(set or unset.)180 434.4 R .255(If multiple)5.255 F F2(optname)2.755 +E F0(ar)2.755 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G +(ith)-2.756 E F12.756 E F0 2.756(,t)C .256 +(he return status is zero if)-2.756 F(all)180 446.4 Q F2(optnames)2.5 E +F0(are enabled; non-zero otherwise.)2.5 E 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 .625(If either)144 475.2 R F1 +3.125 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.233 +(set or unset, respecti)144 487.2 R -.15(ve)-.25 G(ly).15 E 7.234(.U) +-.65 G 2.234(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0 +2.234(options are disabled \(unset\) by)4.734 F(def)144 499.2 Q(ault.) +-.1 E 1.544(The return status when listing options is zero if all)144 +516 R F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.) +4.044 F .696 (When setting or unsetting options, the return status is zero unless an) -144 153.6 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696 -(alid shell)-.25 F(option.)144 165.6 Q(The list of)144 182.4 Q F1(shopt) -2.5 E F0(options is:)2.5 E F1(autocd)144 200.4 Q F0 .2 -(If set, a command name that is the name of a directory is e)184 200.4 R +144 528 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696(alid shell) +-.25 F(option.)144 540 Q(The list of)144 556.8 Q F1(shopt)2.5 E F0 +(options is:)2.5 E F1(assoc_expand_once)144 574.8 Q F0 1.945 +(If set, the shell suppresses multiple e)184 586.8 R -.25(va)-.25 G +1.944(luation of associati).25 F 2.244 -.15(ve a)-.25 H 1.944 +(rray subscripts during).15 F 2.556(arithmetic e)184 598.8 R 2.556 +(xpression e)-.15 F -.25(va)-.25 G 2.556(luation, while e).25 F -.15(xe) +-.15 G 2.557(cuting b).15 F 2.557(uiltins that can perform v)-.2 F +(ariable)-.25 E(assignments, and while e)184 610.8 Q -.15(xe)-.15 G +(cuting b).15 E(uiltins that perform array dereferencing.)-.2 E F1 +(autocd)144 622.8 Q F0 .2 +(If set, a command name that is the name of a directory is e)184 622.8 R -.15(xe)-.15 G .199(cuted as if it were the ar).15 F(gu-)-.18 E -(ment to the)184 212.4 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F +(ment to the)184 634.8 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F (option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E -F1(cdable_v)144 224.4 Q(ars)-.1 E F0 .155(If set, an ar)184 236.4 R .155 +F1(cdable_v)144 646.8 Q(ars)-.1 E F0 .155(If set, an ar)184 658.8 R .155 (gument to the)-.18 F F1(cd)2.655 E F0 -.2(bu)2.655 G .156 (iltin command that is not a directory is assumed to be the).2 F -(name of a v)184 248.4 Q(ariable whose v)-.25 E -(alue is the directory to change to.)-.25 E F1(cdspell)144 260.4 Q F0 +(name of a v)184 670.8 Q(ariable whose v)-.25 E +(alue is the directory to change to.)-.25 E F1(cdspell)144 682.8 Q F0 1.055 (If set, minor errors in the spelling of a directory component in a)184 -260.4 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987 -(corrected. The)184 272.4 R 1.487(errors check)3.987 F 1.487 +682.8 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987 +(corrected. The)184 694.8 R 1.487(errors check)3.987 F 1.487 (ed for are transposed characters, a missing character)-.1 F 3.988(,a) --.4 G(nd)-3.988 E .77(one character too man)184 284.4 R 4.57 -.65(y. I) +-.4 G(nd)-3.988 E .77(one character too man)184 706.8 R 4.57 -.65(y. I) -.15 H 3.27(fac).65 G .77 (orrection is found, the corrected \214lename is printed, and)-3.27 F -(the command proceeds.)184 296.4 Q +(the command proceeds.)184 718.8 Q (This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(checkhash)144 308.4 Q F0 .736(If set,)184 320.4 R F1(bash)3.236 -E F0 .736(checks that a command found in the hash table e)3.236 F .737 -(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 -332.4 Q(If a hashed command no longer e)5 E -(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 344.4 -Q F0 .449(If set,)184 356.4 R F1(bash)2.949 E F0 .449 +.15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(72)188.455 E 0 Cg +EP +%%Page: 73 73 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(checkhash)144 84 Q F0 .736(If set,)184 96 R F1(bash)3.236 E F0 .736 +(checks that a command found in the hash table e)3.236 F .737 +(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 108 +Q(If a hashed command no longer e)5 E +(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 120 Q +F0 .449(If set,)184 132 R F1(bash)2.949 E F0 .449 (lists the status of an)2.949 F 2.949(ys)-.15 G .448 (topped and running jobs before e)-2.949 F .448(xiting an interacti)-.15 -F -.15(ve)-.25 G 3.438(shell. If)184 368.4 R(an)3.438 E 3.438(yj)-.15 G +F -.15(ve)-.25 G 3.438(shell. If)184 144 R(an)3.438 E 3.438(yj)-.15 G .938(obs are running, this causes the e)-3.438 F .938 (xit to be deferred until a second e)-.15 F .939(xit is)-.15 F 2.203 -(attempted without an interv)184 380.4 R 2.203(ening command \(see)-.15 -F/F3 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E --.15(ve)-.15 G 4.703(\). The).15 F(shell)4.703 E(al)184 392.4 Q -.1(wa) --.1 G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G -(obs are stopped.)-2.5 E F1(checkwinsize)144 404.4 Q F0 .796(If set,)184 -416.4 R F1(bash)3.296 E F0 .796(checks the windo)3.296 F 3.296(ws)-.25 G -.797(ize after each command and, if necessary)-3.296 F 3.297(,u)-.65 G -.797(pdates the)-3.297 F -.25(va)184 428.4 S(lues of).25 E F3(LINES)2.5 -E F0(and)2.25 E F3(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF(.)A F1(cmdhist) -144 440.4 Q F0 1.202(If set,)184 440.4 R F1(bash)3.702 E F0 1.202 +(attempted without an interv)184 156 R 2.203(ening command \(see)-.15 F +/F2 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E +-.15(ve)-.15 G 4.703(\). The).15 F(shell)4.703 E(al)184 168 Q -.1(wa)-.1 +G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G +(obs are stopped.)-2.5 E F1(checkwinsize)144 180 Q F0 1.09(If set,)184 +192 R F1(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09 +(ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09 +(uiltin\) command and, if)-.2 F(necessary)184 204 Q 4.694(,u)-.65 G +2.194(pdates the v)-4.694 F 2.194(alues of)-.25 F F2(LINES)4.694 E F0 +(and)4.444 E F2(COLUMNS)4.693 E/F3 9/Times-Roman@0 SF(.)A F0 2.193 +(This option is enabled by)6.693 F(def)184 216 Q(ault.)-.1 E F1(cmdhist) +144 228 Q F0 1.202(If set,)184 228 R F1(bash)3.702 E F0 1.202 (attempts to sa)3.702 F 1.502 -.15(ve a)-.2 H 1.202 (ll lines of a multiple-line command in the same history).15 F(entry)184 -452.4 Q 5(.T)-.65 G(his allo)-5 E -(ws easy re-editing of multi-line commands.)-.25 E F1(compat31)144 464.4 -Q F0 .419(If set,)184 476.4 R F1(bash)2.919 E F0 .419(changes its beha) -2.919 F .419(vior to that of v)-.2 F .42 -(ersion 3.1 with respect to quoted ar)-.15 F(guments)-.18 E .462(to the) -184 488.4 R F1([[)2.962 E F0 .462(conditional command')2.962 F(s)-.55 E -F1(=~)2.962 E F0 .462 +240 Q 6.133(.T)-.65 G 1.133(his allo)-6.133 F 1.133 +(ws easy re-editing of multi-line commands.)-.25 F 1.132 +(This option is enabled by)6.132 F(def)184 252 Q .613(ault, b)-.1 F .613 +(ut only has an ef)-.2 F .614 +(fect if command history is enabled, as described abo)-.25 F .914 -.15 +(ve u)-.15 H(nder).15 E F2(HIST)184 264 Q(OR)-.162 E(Y)-.315 E F3(.)A F1 +(compat31)144 276 Q F0 .42(If set,)184 288 R F1(bash)2.92 E F0 .42 +(changes its beha)2.92 F .419(vior to that of v)-.2 F .419 +(ersion 3.1 with respect to quoted ar)-.15 F(guments)-.18 E .461(to the) +184 300 R F1([[)2.961 E F0 .462(conditional command')2.962 F(s)-.55 E F1 +(=~)2.962 E F0 .462 (operator and locale-speci\214c string comparison when)2.962 F .71 -(using the)184 500.4 R F1([[)3.21 E F0 .71(conditional command')3.21 F -(s)-.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash) -3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .821 -(use ASCII collation and)184 512.4 R F2(str)3.321 E(cmp)-.37 E F0 .821 -(\(3\); bash-4.1 and later use the current locale').19 F 3.32(sc)-.55 G -(ollation)-3.32 E(sequence and)184 524.4 Q F2(str)2.5 E(coll)-.37 E F0 -(\(3\).).51 E F1(compat32)144 536.4 Q F0 1.409(If set,)184 548.4 R F1 -(bash)3.909 E F0 1.409(changes its beha)3.909 F 1.409(vior to that of v) --.2 F 1.41(ersion 3.2 with respect to locale-speci\214c)-.15 F .423 -(string comparison when using the)184 560.4 R F1([[)2.922 E F0 .422 +(using the)184 312 R F1([[)3.21 E F0 .71(conditional command')3.21 F(s) +-.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash) +3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .82 +(use ASCII collation and)184 324 R/F4 10/Times-Italic@0 SF(str)3.321 E +(cmp)-.37 E F0 .821(\(3\); bash-4.1 and later use the current locale') +.19 F 3.321(sc)-.55 G(ollation)-3.321 E(sequence and)184 336 Q F4(str) +2.5 E(coll)-.37 E F0(\(3\).).51 E F1(compat32)144 348 Q F0 1.41(If set,) +184 360 R F1(bash)3.91 E F0 1.41(changes its beha)3.91 F 1.409 +(vior to that of v)-.2 F 1.409 +(ersion 3.2 with respect to locale-speci\214c)-.15 F .422 +(string comparison when using the)184 372 R F1([[)2.922 E F0 .422 (conditional command')2.922 F(s)-.55 E F1(<)2.922 E F0(and)2.922 E F1(>) -2.922 E F0 .422(operators \(see pre-)2.922 F .48 -(vious item\) and the ef)184 572.4 R .481 -(fect of interrupting a command list.)-.25 F .481(Bash v)5.481 F .481 -(ersions 3.2 and earlier)-.15 F(continue with the ne)184 584.4 Q +2.923 E F0 .423(operators \(see pre-)2.923 F .481 +(vious item\) and the ef)184 384 R .481 +(fect of interrupting a command list.)-.25 F .48(Bash v)5.481 F .48 +(ersions 3.2 and earlier)-.15 F(continue with the ne)184 396 Q (xt command in the list after one terminates due to an interrupt.)-.15 E -F1(compat40)144 596.4 Q F0 1.41(If set,)184 608.4 R F1(bash)3.91 E F0 -1.41(changes its beha)3.91 F 1.409(vior to that of v)-.2 F 1.409 -(ersion 4.0 with respect to locale-speci\214c)-.15 F 2.007 -(string comparison when using the)184 620.4 R F1([[)4.507 E F0 2.008 -(conditional command')4.507 F(s)-.55 E F1(<)4.508 E F0(and)4.508 E F1(>) -4.508 E F0 2.008(operators \(see)4.508 F .77(description of)184 632.4 R -F1(compat31)3.27 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 -(fect of interrupting a command list.)-.25 F .769(Bash v)5.769 F -(ersions)-.15 E .086 -(4.0 and later interrupt the list as if the shell recei)184 644.4 R -.15 -(ve)-.25 G 2.587(dt).15 G .087(he interrupt; pre)-2.587 F .087(vious v) --.25 F .087(ersions con-)-.15 F(tinue with the ne)184 656.4 Q -(xt command in the list.)-.15 E F1(compat41)144 668.4 Q F0 1.484 -(If set,)184 680.4 R F1(bash)3.984 E F0 3.984(,w)C 1.484(hen in)-3.984 F -F2(posix)3.984 E F0 1.483 -(mode, treats a single quote in a double-quoted parameter)3.984 F -.15 -(ex)184 692.4 S .958(pansion as a special character).15 F 5.958(.T)-.55 -G .959(he single quotes must match \(an e)-5.958 F -.15(ve)-.25 G 3.459 -(nn).15 G .959(umber\) and)-3.459 F .59 -(the characters between the single quotes are considered quoted.)184 -704.4 R .59(This is the beha)5.59 F .59(vior of)-.2 F .589 -(posix mode through v)184 716.4 R .589(ersion 4.1.)-.15 F .589(The def) -5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .59 -(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 728.4 Q(GNU Bash 4.4)72 768 -Q(2016 August 26)142.895 E(70)192.055 E 0 Cg EP -%%Page: 71 71 +F1(compat40)144 408 Q F0 1.409(If set,)184 420 R F1(bash)3.909 E F0 +1.409(changes its beha)3.909 F 1.409(vior to that of v)-.2 F 1.41 +(ersion 4.0 with respect to locale-speci\214c)-.15 F 2.008 +(string comparison when using the)184 432 R F1([[)4.508 E F0 2.007 +(conditional command')4.508 F(s)-.55 E F1(<)4.507 E F0(and)4.507 E F1(>) +4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 444 R +F1(compat31)3.269 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 +(fect of interrupting a command list.)-.25 F .77(Bash v)5.77 F(ersions) +-.15 E .087(4.0 and later interrupt the list as if the shell recei)184 +456 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F .086 +(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 468 Q +(xt command in the list.)-.15 E F1(compat41)144 480 Q F0 1.523(If set,) +184 492 R F1(bash)4.023 E F0 4.023(,w)C 1.523(hen in)-4.023 F F4 1.523 +(posix mode)4.023 F F0 4.024(,t)C 1.524 +(reats a single quote in a double-quoted parameter)-4.024 F -.15(ex)184 +504 S .959(pansion as a special character).15 F 5.959(.T)-.55 G .958 +(he single quotes must match \(an e)-5.959 F -.15(ve)-.25 G 3.458(nn).15 +G .958(umber\) and)-3.458 F .59 +(the characters between the single quotes are considered quoted.)184 516 +R .59(This is the beha)5.59 F .59(vior of)-.2 F .59 +(posix mode through v)184 528 R .589(ersion 4.1.)-.15 F .589(The def) +5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .589 +(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 540 Q F1(compat42)144 552 Q +F0 1.796(If set,)184 564 R F1(bash)4.296 E F0 1.796 +(does not process the replacement string in the pattern substitution w) +4.296 F(ord)-.1 E -.15(ex)184 576 S(pansion using quote remo).15 E -.25 +(va)-.15 G(l.).25 E F1(compat43)144 588 Q F0 .141(If set,)184 600 R F1 +(bash)2.641 E F0 .141(does not print a w)2.641 F .14 +(arning message if an attempt is made to use a quoted com-)-.1 F .912 +(pound array assignment as an ar)184 612 R .912(gument to)-.18 F F1 +(declar)3.413 E(e)-.18 E F0 3.413(,m)C(ak)-3.413 E .913(es w)-.1 F .913 +(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 624 S .353 +(tal errors that cause the current command to f).1 F .353(ail \(the def) +-.1 F .352(ault beha)-.1 F .352(vior is to mak)-.2 F 2.852(et)-.1 G(hem) +-2.852 E -.1(fa)184 636 S 1.057(tal errors that cause the shell to e).1 +F 1.058(xit\), and does not reset the loop state when a shell)-.15 F +.375(function is e)184 648 R -.15(xe)-.15 G .375(cuted \(this allo).15 F +(ws)-.25 E F1(br)2.875 E(eak)-.18 E F0(or)2.875 E F1(continue)2.875 E F0 +.374(in a shell function to af)2.875 F .374(fect loops in)-.25 F +(the caller')184 660 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1 +(compat44)144 672 Q F0 .441(If set,)184 684 R F1(bash)2.941 E F0(sa) +2.942 E -.15(ve)-.2 G 2.942(st).15 G .442(he positional parameters to B) +-2.942 F .442(ASH_ARGV and B)-.35 F .442(ASH_ARGC before)-.35 F(the)184 +696 Q 2.5(ya)-.15 G(re used, re)-2.5 E -.05(ga)-.15 G +(rdless of whether or not e).05 E(xtended deb)-.15 E +(ugging mode is enabled.)-.2 E(GNU Bash 5.0)72 768 Q(2018 December 7) +139.295 E(73)188.455 E 0 Cg EP +%%Page: 74 74 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(compat42)144 84 Q F0 1.797(If set,)184 96 R F1(bash)4.297 E F0 1.796 -(does not process the replacement string in the pattern substitution w) -4.296 F(ord)-.1 E -.15(ex)184 108 S(pansion using quote remo).15 E -.25 -(va)-.15 G(l.).25 E F1(compat43)144 120 Q F0 .14(If set,)184 132 R F1 -(bash)2.64 E F0 .14(does not print a w)2.64 F .141 -(arning message if an attempt is made to use a quoted com-)-.1 F .913 -(pound array assignment as an ar)184 144 R .913(gument to)-.18 F F1 -(declar)3.412 E(e)-.18 E F0 3.412(,m)C(ak)-3.412 E .912(es w)-.1 F .912 -(ord e)-.1 F .912(xpansion errors non-)-.15 F -.1(fa)184 156 S .352 -(tal errors that cause the current command to f).1 F .353(ail \(the def) --.1 F .353(ault beha)-.1 F .353(vior is to mak)-.2 F 2.853(et)-.1 G(hem) --2.853 E -.1(fa)184 168 S 1.058(tal errors that cause the shell to e).1 -F 1.057(xit\), and does not reset the loop state when a shell)-.15 F -.374(function is e)184 180 R -.15(xe)-.15 G .374(cuted \(this allo).15 F -(ws)-.25 E F1(br)2.874 E(eak)-.18 E F0(or)2.875 E F1(continue)2.875 E F0 -.375(in a shell function to af)2.875 F .375(fect loops in)-.25 F -(the caller')184 192 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1 -(complete_fullquote)144 204 Q F0 .654(If set,)184 216 R F1(bash)3.153 E +SF(complete_fullquote)144 84 Q F0 .654(If set,)184 96 R F1(bash)3.153 E F0 .653(quotes all shell metacharacters in \214lenames and directory na\ -mes when per)3.153 F(-)-.2 E 1.524(forming completion.)184 228 R 1.524 +mes when per)3.153 F(-)-.2 E 1.524(forming completion.)184 108 R 1.524 (If not set,)6.524 F F1(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524(etacharacters such as the dollar sign)-4.024 F 2.667(from the set of characters that will be quoted in completed \214l\ -enames when these)184 240 R .028(metacharacters appear in shell v)184 -252 R .028(ariable references in w)-.25 F .029(ords to be completed.)-.1 -F .029(This means)5.029 F 1.073(that dollar signs in v)184 264 R 1.073 +enames when these)184 120 R .028(metacharacters appear in shell v)184 +132 R .028(ariable references in w)-.25 F .029(ords to be completed.)-.1 +F .029(This means)5.029 F 1.073(that dollar signs in v)184 144 R 1.073 (ariable names that e)-.25 F 1.073 (xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25 -(ev e)184 276 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 +(ev e)184 156 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 (ollar signs appearing in \214lenames will not be quoted, either).15 F 6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59 (only when bash is using backslashes to quote completed \214lenames.)184 -288 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 300 Q +168 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 180 Q (ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E -(ersions through 4.2.)-.15 E F1(dir)144 312 Q(expand)-.18 E F0 .486 -(If set,)184 324 R F1(bash)2.986 E F0 .486 +(ersions through 4.2.)-.15 E F1(dir)144 192 Q(expand)-.18 E F0 .486 +(If set,)184 204 R F1(bash)2.986 E F0 .486 (replaces directory names with the results of w)2.986 F .486(ord e)-.1 F .487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184 -336 R .179(This changes the contents of the readline editing b)5.18 F +216 R .179(This changes the contents of the readline editing b)5.18 F (uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,) -184 348 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G -(hat the user typed.)-2.5 E F1(dirspell)144 360 Q F0 .858(If set,)184 -360 R F1(bash)3.358 E F0 .858 +184 228 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G +(hat the user typed.)-2.5 E F1(dirspell)144 240 Q F0 .858(If set,)184 +240 R F1(bash)3.358 E F0 .858 (attempts spelling correction on directory names during w)3.358 F .859 (ord completion if)-.1 F -(the directory name initially supplied does not e)184 372 Q(xist.)-.15 E -F1(dotglob)144 384 Q F0(If set,)184 384 Q F1(bash)2.5 E F0 -(includes \214lenames be)2.5 E(ginning with a `.)-.15 E 2.5('i)-.7 G 2.5 -(nt)-2.5 G(he results of pathname e)-2.5 E(xpansion.)-.15 E F1(execfail) -144 396 Q F0 1.387(If set, a non-interacti)184 396 R 1.687 -.15(ve s) --.25 H 1.386(hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15 -(xe)-.15 G 1.386(cute the \214le speci\214ed as an).15 F(ar)184 408 Q -(gument to the)-.18 E F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E -(An interacti)5 E .3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 -E F1(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 420 Q F0 -.716(If set, aliases are e)184 432 R .717(xpanded as described abo)-.15 -F 1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E -/F3 9/Times-Roman@0 SF(.)A F0 .717(This option is enabled)5.217 F -(by def)184 444 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(extdeb)144 456 Q(ug)-.2 E F0 .672(If set at shell in)184 468 R --.2(vo)-.4 G .672(cation, arrange to e).2 F -.15(xe)-.15 G .671 -(cute the deb).15 F .671(ugger pro\214le before the shell starts,)-.2 F -.22(identical to the)184 480 R F12.72 E(ugger)-.2 E F0 2.721 -(option. If)2.721 F .221(set after in)2.721 F -.2(vo)-.4 G .221 -(cation, beha).2 F .221(vior intended for use by)-.2 F(deb)184 492 Q -(uggers is enabled:)-.2 E F1(1.)184 504 Q F0(The)220 504 Q F14.251 -E F0 1.751(option to the)4.251 F F1(declar)4.251 E(e)-.18 E F0 -.2(bu) +(the directory name initially supplied does not e)184 252 Q(xist.)-.15 E +F1(dotglob)144 264 Q F0 .165(If set,)184 264 R F1(bash)2.665 E F0 .165 +(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665('i) +-.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F +(xpansion.)-.15 E(The \214lenames)184 276 Q F1 -.63(``)2.5 G -.55(.').63 +G(')-.08 E F0(and)5 E F1 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0 +(must al)5.63 E -.1(wa)-.1 G(ys be matched e).1 E(xplicitly)-.15 E 2.5 +(,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F1(dotglob)2.5 E F0 +(is set.)2.5 E F1(execfail)144 288 Q F0 1.386(If set, a non-interacti) +184 288 R 1.686 -.15(ve s)-.25 H 1.386(hell will not e).15 F 1.386 +(xit if it cannot e)-.15 F -.15(xe)-.15 G 1.387 +(cute the \214le speci\214ed as an).15 F(ar)184 300 Q(gument to the)-.18 +E F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E(An interacti)5 E .3 +-.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 E F1(exec)2.5 E F0 +-.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 312 Q F0 .717 +(If set, aliases are e)184 324 R .717(xpanded as described abo)-.15 F +1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E +/F3 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F +(by def)184 336 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) +.15 E F1(extdeb)144 348 Q(ug)-.2 E F0 .671(If set at shell in)184 360 R +-.2(vo)-.4 G .671(cation, arrange to e).2 F -.15(xe)-.15 G .671 +(cute the deb).15 F .672(ugger pro\214le before the shell starts,)-.2 F +.221(identical to the)184 372 R 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 384 Q +(uggers is enabled:)-.2 E F1(1.)184 396 Q F0(The)220 396 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 516 Q -(gument.)-.18 E F1(2.)184 528 Q F0 1.667(If the command run by the)220 -528 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F -1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 540 -Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 552 Q F0 .841 -(If the command run by the)220 552 R F1(DEB)3.341 E(UG)-.1 E F0 .841 -(trap returns a v)3.341 F .84(alue of 2, and the shell is)-.25 F -.15 -(exe)220 564 S .488 +(number corresponding to each function name supplied as an ar)220 408 Q +(gument.)-.18 E F1(2.)184 420 Q F0 1.667(If the command run by the)220 +420 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F +1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 432 +Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 444 Q F0 .84 +(If the command run by the)220 444 R F1(DEB)3.34 E(UG)-.1 E F0 .841 +(trap returns a v)3.341 F .841(alue of 2, and the shell is)-.25 F -.15 +(exe)220 456 S .488 (cuting in a subroutine \(a shell function or a shell script e).15 F -.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1 -(sour)220 576 Q(ce)-.18 E F0 -.2(bu)2.5 G +(sour)220 468 Q(ce)-.18 E F0 -.2(bu)2.5 G (iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E -(n)-.15 E F0(.)A F1(4.)184 588 Q F2 -.27(BA)220 588 S(SH_ARGC).27 E F0 -(and)3.154 E F2 -.27(BA)3.404 G(SH_ARGV).27 E F0 .904 -(are updated as described in their descriptions)3.154 F(abo)220 600 Q --.15(ve)-.15 G(.).15 E F1(5.)184 612 Q F0 1.637(Function tracing is ena\ -bled: command substitution, shell functions, and sub-)220 612 R -(shells in)220 624 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 +(n)-.15 E F0(.)A F1(4.)184 480 Q F2 -.27(BA)220 480 S(SH_ARGC).27 E F0 +(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904 +(are updated as described in their descriptions)3.154 F(abo)220 492 Q +-.15(ve)-.15 G(.).15 E F1(5.)184 504 Q F0 1.637(Function tracing is ena\ +bled: command substitution, shell functions, and sub-)220 504 R +(shells in)220 516 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 (\()2.5 E/F4 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0 (inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0 -(traps.)2.5 E F1(6.)184 636 Q F0 1.082(Error tracing is enabled: comman\ -d substitution, shell functions, and subshells)220 636 R(in)220 648 Q +(traps.)2.5 E F1(6.)184 528 Q F0 1.082(Error tracing is enabled: comman\ +d substitution, shell functions, and subshells)220 528 R(in)220 540 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F4(command) 2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)2.5 E F1 -(extglob)144 660 Q F0 .4(If set, the e)184 660 R .4 +(extglob)144 552 Q F0 .4(If set, the e)184 552 R .4 (xtended pattern matching features described abo)-.15 F .7 -.15(ve u) --.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 672 Q -F0(are enabled.)2.5 E F1(extquote)144 684 Q F0 2.473(If set,)184 696 R +-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 564 Q +F0(are enabled.)2.5 E F1(extquote)144 576 Q F0 2.473(If set,)184 588 R F1($)4.973 E F0<08>A F4(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 E F0(")A F4(string)A F0 4.973("q)C 2.473(uoting is performed within) -4.973 F F1(${)4.973 E F4(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G -(pansions).15 E(enclosed in double quotes.)184 708 Q -(This option is enabled by def)5 E(ault.)-.1 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(71)192.055 E 0 Cg EP -%%Page: 72 72 +(pansions).15 E(enclosed in double quotes.)184 600 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 612 Q F0 +1.425(If set, patterns which f)184 612 R 1.425 +(ail to match \214lenames during pathname e)-.1 F 1.424 +(xpansion result in an)-.15 F -.15(ex)184 624 S(pansion error).15 E(.) +-.55 E F1 -.25(fo)144 636 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.936(If set, the suf)184 648 R<8c78>-.25 E .936(es speci\214ed by the) +-.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w) +-.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 660 R .32 +(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32 +(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947 +(pletions. See)184 672 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 +(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2 +(FIGNORE)2.948 E F3(.)A F0 .448(This option is)4.948 F(enabled by def) +184 684 Q(ault.)-.1 E F1(globasciiranges)144 696 Q F0 2.519 +(If set, range e)184 708 R 2.519 +(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518 +(xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E +(Matching)184 720 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha) +-3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214 +(nt)-3.214 G .714(he traditional C locale when performing comparisons.) +-3.214 F(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(74)188.455 E 0 +Cg EP +%%Page: 75 75 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(failglob)144 84 Q F0 1.424(If set, patterns which f)184 84 R 1.425 -(ail to match \214lenames during pathname e)-.1 F 1.425 -(xpansion result in an)-.15 F -.15(ex)184 96 S(pansion error).15 E(.) --.55 E F1 -.25(fo)144 108 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.937(If set, the suf)184 120 R<8c78>-.25 E .936(es speci\214ed by the) --.15 F/F2 9/Times-Bold@0 SF(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936 -(ariable cause w)-.25 F .936(ords to be ignored)-.1 F .32 -(when performing w)184 132 R .32(ord completion e)-.1 F -.15(ve)-.25 G -2.82(ni).15 G 2.82(ft)-2.82 G .32(he ignored w)-2.82 F .32 -(ords are the only possible com-)-.1 F 2.948(pletions. See)184 144 R F2 -.448(SHELL V)2.948 F(ARIABLES)-1.215 E F0(abo)2.698 E .748 -.15(ve f) --.15 H .448(or a description of).15 F F2(FIGNORE)2.947 E/F3 9 -/Times-Roman@0 SF(.)A F0 .447(This option is)4.947 F(enabled by def)184 -156 Q(ault.)-.1 E F1(globasciiranges)144 168 Q F0 2.518(If set, range e) -184 180 R 2.519(xpressions used in pattern matching brack)-.15 F 2.519 -(et e)-.1 F 2.519(xpressions \(see)-.15 F F2 -.09(Pa)5.019 G(tter).09 E -(n)-.135 E(Matching)184 192 Q F0(abo)2.965 E -.15(ve)-.15 G 3.215(\)b) -.15 G(eha)-3.215 E 1.015 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 -G 3.214(nt)-3.214 G .714 -(he traditional C locale when performing comparisons.)-3.214 F 1.02 -(That is, the current locale')184 204 R 3.52(sc)-.55 G 1.02 -(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F F1 -(b)3.52 E F0 1.02(will not)3.52 F .957(collate between)184 216 R F1(A) -3.457 E F0(and)3.457 E F1(B)3.457 E F0 3.457(,a)C .957(nd upper)-3.457 F -.957(-case and lo)-.2 F(wer)-.25 E .956 -(-case ASCII characters will collate)-.2 F(together)184 228 Q(.)-.55 E -F1(globstar)144 240 Q F0 .518(If set, the pattern)184 240 R F1(**)3.018 -E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .519 -(xt will match all \214les and zero)-.15 F .432 -(or more directories and subdirectories.)184 252 R .431 -(If the pattern is follo)5.432 F .431(wed by a)-.25 F F1(/)2.931 E F0 -2.931(,o)C .431(nly directories)-2.931 F(and subdirectories match.)184 -264 Q F1(gnu_errfmt)144 276 Q F0(If set, shell error messages are writt\ -en in the standard GNU error message format.)184 288 Q F1(histappend)144 -300 Q F0 .676 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.02 +(That is, the current locale')184 84 R 3.52(sc)-.55 G 1.02 +(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F/F1 +10/Times-Bold@0 SF(b)3.52 E F0 1.02(will not)3.52 F .956 +(collate between)184 96 R F1(A)3.456 E F0(and)3.456 E F1(B)3.456 E F0 +3.457(,a)C .957(nd upper)-3.457 F .957(-case and lo)-.2 F(wer)-.25 E +.957(-case ASCII characters will collate)-.2 F(together)184 108 Q(.)-.55 +E F1(globstar)144 120 Q F0 .519(If set, the pattern)184 120 R F1(**) +3.019 E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F +.518(xt will match all \214les and zero)-.15 F .431 +(or more directories and subdirectories.)184 132 R .431 +(If the pattern is follo)5.431 F .432(wed by a)-.25 F F1(/)2.932 E F0 +2.932(,o)C .432(nly directories)-2.932 F(and subdirectories match.)184 +144 Q F1(gnu_errfmt)144 156 Q F0(If set, shell error messages are writt\ +en in the standard GNU error message format.)184 168 Q F1(histappend)144 +180 Q F0 .676 (If set, the history list is appended to the \214le named by the v)184 -312 R .676(alue of the)-.25 F F2(HISTFILE)3.177 E F0 -.25(va)2.927 G -(ri-).25 E(able when the shell e)184 324 Q(xits, rather than o)-.15 E --.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 336 Q(eedit)-.18 -E F0 .576(If set, and)184 348 R F1 -.18(re)3.076 G(adline).18 E F0 .575 -(is being used, a user is gi)3.076 F -.15(ve)-.25 G 3.075(nt).15 G .575 -(he opportunity to re-edit a f)-3.075 F .575(ailed his-)-.1 F -(tory substitution.)184 360 Q F1(histv)144 372 Q(erify)-.1 E F0 .402 -(If set, and)184 384 R F1 -.18(re)2.903 G(adline).18 E F0 .403 +192 R .676(alue of the)-.25 F/F2 9/Times-Bold@0 SF(HISTFILE)3.176 E F0 +-.25(va)2.926 G(ri-).25 E(able when the shell e)184 204 Q +(xits, rather than o)-.15 E -.15(ve)-.15 G(rwriting the \214le.).15 E F1 +(histr)144 216 Q(eedit)-.18 E F0 .575(If set, and)184 228 R F1 -.18(re) +3.075 G(adline).18 E F0 .575(is being used, a user is gi)3.075 F -.15 +(ve)-.25 G 3.075(nt).15 G .576(he opportunity to re-edit a f)-3.075 F +.576(ailed his-)-.1 F(tory substitution.)184 240 Q F1(histv)144 252 Q +(erify)-.1 E F0 .403(If set, and)184 264 R F1 -.18(re)2.903 G(adline).18 +E F0 .403 (is being used, the results of history substitution are not immediately) -2.903 F .662(passed to the shell parser)184 396 R 5.662(.I)-.55 G .661 -(nstead, the resulting line is loaded into the)-5.662 F F1 -.18(re)3.161 -G(adline).18 E F0(editing)3.161 E -.2(bu)184 408 S -.25(ff).2 G(er).25 E +2.903 F .661(passed to the shell parser)184 276 R 5.661(.I)-.55 G .662 +(nstead, the resulting line is loaded into the)-5.661 F F1 -.18(re)3.162 +G(adline).18 E F0(editing)3.162 E -.2(bu)184 288 S -.25(ff).2 G(er).25 E 2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1 -(hostcomplete)144 420 Q F0 1.181(If set, and)184 432 R F1 -.18(re)3.681 -G(adline).18 E F0 1.181(is being used,)3.681 F F1(bash)3.682 E F0 1.182 -(will attempt to perform hostname completion)3.682 F 1.381(when a w)184 -444 R 1.381(ord containing a)-.1 F F1(@)3.881 E F0 1.381 -(is being completed \(see)3.881 F F1(Completing)3.88 E F0(under)3.88 E -F2(READLINE)3.88 E F0(abo)184 456 Q -.15(ve)-.15 G 2.5(\). This).15 F -(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 468 Q F0(If set,) -184 480 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 +(hostcomplete)144 300 Q F0 1.182(If set, and)184 312 R F1 -.18(re)3.682 +G(adline).18 E F0 1.182(is being used,)3.682 F F1(bash)3.682 E F0 1.181 +(will attempt to perform hostname completion)3.681 F 1.38(when a w)184 +324 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381 +(is being completed \(see)3.881 F F1(Completing)3.881 E F0(under)3.881 E +F2(READLINE)3.881 E F0(abo)184 336 Q -.15(ve)-.15 G 2.5(\). This).15 F +(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 348 Q F0(If set,) +184 360 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 (to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e) -.15 E(xits.)-.15 E F1(inherit_err)144 492 Q(exit)-.18 E F0 .219 -(If set, command substitution inherits the v)184 504 R .219(alue of the) --.25 F F1(err)2.719 E(exit)-.18 E F0 .22(option, instead of unsetting) -2.719 F(it in the subshell en)184 516 Q 2.5(vironment. This)-.4 F -(option is enabled when)2.5 E/F4 10/Times-Italic@0 SF(posix mode)2.5 E -F0(is enabled.)2.5 E F1(interacti)144 528 Q -.1(ve)-.1 G(_comments).1 E -F0 .33(If set, allo)184 540 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33 +.15 E(xits.)-.15 E F1(inherit_err)144 372 Q(exit)-.18 E F0 .22 +(If set, command substitution inherits the v)184 384 R .219(alue of the) +-.25 F F1(err)2.719 E(exit)-.18 E F0 .219(option, instead of unsetting) +2.719 F(it in the subshell en)184 396 Q 2.5(vironment. This)-.4 F +(option is enabled when)2.5 E/F3 10/Times-Italic@0 SF(posix mode)2.5 E +F0(is enabled.)2.5 E F1(interacti)144 408 Q -.1(ve)-.1 G(_comments).1 E +F0 .33(If set, allo)184 420 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33 (ginning with)-.15 F F1(#)2.83 E F0 .33(to cause that w)2.83 F .33 (ord and all remaining characters on)-.1 F .967 -(that line to be ignored in an interacti)184 552 R 1.267 -.15(ve s)-.25 +(that line to be ignored in an interacti)184 432 R 1.267 -.15(ve s)-.25 H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)-.15 -G 3.467(\). This).15 F .968(option is)3.468 F(enabled by def)184 564 Q -(ault.)-.1 E F1(lastpipe)144 576 Q F0 .066 -(If set, and job control is not acti)184 576 R -.15(ve)-.25 G 2.566(,t) +G 3.467(\). This).15 F .967(option is)3.467 F(enabled by def)184 444 Q +(ault.)-.1 E F1(lastpipe)144 456 Q F0 .066 +(If set, and job control is not acti)184 456 R -.15(ve)-.25 G 2.566(,t) .15 G .066(he shell runs the last command of a pipeline not e)-2.566 F -.15(xe)-.15 G(-).15 E(cuted in the background in the current shell en) -184 588 Q(vironment.)-.4 E F1(lithist)144 600 Q F0 .654(If set, and the) -184 600 R F1(cmdhist)3.154 E F0 .654 +184 468 Q(vironment.)-.4 E F1(lithist)144 480 Q F0 .655(If set, and the) +184 480 R F1(cmdhist)3.155 E F0 .654 (option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G -3.155(dt).15 G 3.155(ot)-3.155 G .655(he history)-3.155 F -(with embedded ne)184 612 Q +3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F +(with embedded ne)184 492 Q (wlines rather than using semicolon separators where possible.)-.25 E F1 -(login_shell)144 624 Q F0 .486 +(localv)144 504 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 516 R +.422(ariables inherit the v)-.25 F .422(alue and attrib)-.25 F .422 +(utes of a v)-.2 F .422(ariable of the same name that)-.25 F -.15(ex)184 +528 S .174(ists at a pre).15 F .174(vious scope before an)-.25 F 2.673 +(yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .173 +(The nameref attrib)5.173 F .173(ute is not)-.2 F(inherited.)184 540 Q +F1(localv)144 552 Q(ar_unset)-.1 E F0 .328(If set, calling)184 564 R F1 +(unset)2.828 E F0 .328(on local v)2.828 F .329(ariables in pre)-.25 F +.329(vious function scopes marks them so subse-)-.25 F .543(quent looku\ +ps \214nd them unset until that function returns. This is identical to \ +the beha)184 576 R(v-)-.2 E(ior of unsetting local v)184 588 Q +(ariables at the current function scope.)-.25 E F1(login_shell)144 600 Q +F0 .486 (The shell sets this option if it is started as a login shell \(see)184 -636 R F2(INV)2.986 E(OCA)-.405 E(TION)-.855 E F0(abo)2.736 E -.15(ve) --.15 G 2.986(\). The).15 F -.25(va)184 648 S(lue may not be changed.).25 -E F1(mailwar)144 660 Q(n)-.15 E F0 .814(If set, and a \214le that)184 -672 R F1(bash)3.314 E F0 .815 -(is checking for mail has been accessed since the last time it)3.314 F --.1(wa)184 684 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E -(`The mail in)-.74 E F4(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i) --.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 696 -Q F0 .325(If set, and)184 708 R F1 -.18(re)2.825 G(adline).18 E F0 .325 -(is being used,)2.825 F F1(bash)2.824 E F0 .324 -(will not attempt to search the)2.824 F F2 -.666(PA)2.824 G(TH)-.189 E -F0 .324(for possible)2.574 F -(completions when completion is attempted on an empty line.)184 720 Q -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(72)192.055 E 0 Cg EP -%%Page: 73 73 +612 R F2(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve) +-.15 G 2.987(\). The).15 F -.25(va)184 624 S(lue may not be changed.).25 +E F1(mailwar)144 636 Q(n)-.15 E F0 .815(If set, and a \214le that)184 +648 R F1(bash)3.315 E F0 .814 +(is checking for mail has been accessed since the last time it)3.315 F +-.1(wa)184 660 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E +(`The mail in)-.74 E F3(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i) +-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 672 +Q F0 .324(If set, and)184 684 R F1 -.18(re)2.824 G(adline).18 E F0 .324 +(is being used,)2.824 F F1(bash)2.824 E F0 .324 +(will not attempt to search the)2.824 F F2 -.666(PA)2.825 G(TH)-.189 E +F0 .325(for possible)2.575 F +(completions when completion is attempted on an empty line.)184 696 Q +(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(75)188.455 E 0 Cg EP +%%Page: 76 76 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(nocaseglob)144 84 Q F0 .436(If set,)184 96 R F1(bash)2.936 E F0 .436 -(matches \214lenames in a case\255insensiti)2.936 F .737 -.15(ve f)-.25 -H .437(ashion when performing pathname).05 F -.15(ex)184 108 S +SF(nocaseglob)144 84 Q F0 .437(If set,)184 96 R F1(bash)2.937 E F0 .436 +(matches \214lenames in a case\255insensiti)2.937 F .736 -.15(ve f)-.25 +H .436(ashion when performing pathname).05 F -.15(ex)184 108 S (pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E --.15(ve)-.15 G(\).).15 E F1(nocasematch)144 120 Q F0 1.194(If set,)184 -132 R F1(bash)3.694 E F0 1.194(matches patterns in a case\255insensiti) -3.694 F 1.493 -.15(ve f)-.25 H 1.193(ashion when performing matching).05 +-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 120 Q F0 1.193(If set,)184 +132 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti) +3.693 F 1.494 -.15(ve f)-.25 H 1.194(ashion when performing matching).05 F .551(while e)184 144 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0 (or)3.051 E F1([[)3.051 E F0 .551 (conditional commands, when performing pattern substitution)3.051 F -.1 -(wo)184 156 S .623(rd e).1 F .623(xpansions, or when \214ltering possib\ +(wo)184 156 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ le completions as part of programmable com-)-.15 F(pletion.)184 168 Q F1 -(nullglob)144 180 Q F0 .854(If set,)184 192 R F1(bash)3.354 E F0(allo) -3.354 E .855(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa) -3.355 G .855(thname Expansion).1 F F0(abo)3.355 E -.15(ve)-.15 G 3.355 -(\)t).15 G(o)-3.355 E -.15(ex)184 204 S +(nullglob)144 180 Q F0 .855(If set,)184 192 R F1(bash)3.355 E F0(allo) +3.355 E .855(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa) +3.354 G .854(thname Expansion).1 F F0(abo)3.354 E -.15(ve)-.15 G 3.354 +(\)t).15 G(o)-3.354 E -.15(ex)184 204 S (pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 -216 Q(ogcomp)-.18 E F0 .677(If set, the programmable completion f)184 -228 R .677(acilities \(see)-.1 F F1(Pr)3.176 E .676 -(ogrammable Completion)-.18 F F0(abo)3.176 E -.15(ve)-.15 G(\)).15 E +216 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 +228 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677 +(ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E (are enabled.)184 240 Q(This option is enabled by def)5 E(ault.)-.1 E F1 -(pr)144 252 Q(omptv)-.18 E(ars)-.1 E F0 1.447 -(If set, prompt strings under)184 264 R 1.448(go parameter e)-.18 F -1.448(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 276 -S .171(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 +(pr)144 252 Q(ogcomp_alias)-.18 E F0 2.124 +(If set, and programmable completion is enabled,)184 264 R F1(bash)4.624 +E F0 2.124(treats a command name that)4.624 F(doesn')184 276 Q 3.288(th) +-.18 G -2.25 -.2(av e)-3.288 H(an)3.488 E 3.288(yc)-.15 G .789 +(ompletions as a possible alias and attempts alias e)-3.288 F .789 +(xpansion. If it has)-.15 F 1.473(an alias,)184 288 R F1(bash)3.973 E F0 +1.473(attempts programmable completion using the command w)3.973 F 1.473 +(ord resulting)-.1 F(from the e)184 300 Q(xpanded alias.)-.15 E F1(pr) +144 312 Q(omptv)-.18 E(ars)-.1 E F0 1.447(If set, prompt strings under) +184 324 R 1.448(go parameter e)-.18 F 1.448 +(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 336 S +.171(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 (fter being e)-2.67 F .17(xpanded as described in)-.15 F/F2 9 /Times-Bold@0 SF(PR)2.67 E(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G -(.).15 E(This option is enabled by def)184 288 Q(ault.)-.1 E F1 -.18(re) -144 300 S(stricted_shell).18 E F0 1.069 +(.).15 E(This option is enabled by def)184 348 Q(ault.)-.1 E F1 -.18(re) +144 360 S(stricted_shell).18 E F0 1.069 (The shell sets this option if it is started in restricted mode \(see) -184 312 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 324 Q 2.86 +184 372 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 384 Q 2.86 (w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36 (This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G -(-).15 E(cuted, allo)184 336 Q(wing the startup \214les to disco)-.25 E +(-).15 E(cuted, allo)184 396 Q(wing the startup \214les to disco)-.25 E -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E -F1(shift_v)144 348 Q(erbose)-.1 E F0 .501(If set, the)184 360 R F1 +F1(shift_v)144 408 Q(erbose)-.1 E F0 .501(If set, the)184 420 R F1 (shift)3.001 E F0 -.2(bu)3.001 G .501 (iltin prints an error message when the shift count e).2 F .502 -(xceeds the number)-.15 F(of positional parameters.)184 372 Q F1(sour) -144 384 Q(cepath)-.18 E F0 .771(If set, the)184 396 R F1(sour)3.271 E +(xceeds the number)-.15 F(of positional parameters.)184 432 Q F1(sour) +144 444 Q(cepath)-.18 E F0 .771(If set, the)184 456 R F1(sour)3.271 E (ce)-.18 E F0(\()3.271 E F1(.)A F0 3.271(\)b)C .771(uiltin uses the v) -3.471 F .771(alue of)-.25 F F2 -.666(PA)3.27 G(TH)-.189 E F0 .77 (to \214nd the directory containing the)3.02 F(\214le supplied as an ar) -184 408 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.) --.1 E F1(xpg_echo)144 420 Q F0(If set, the)184 432 Q F1(echo)2.5 E F0 +184 468 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.) +-.1 E F1(xpg_echo)144 480 Q F0(If set, the)184 492 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E(xpands backslash-escape sequences by def)-.15 -E(ault.)-.1 E F1(suspend)108 448.8 Q F0([)2.5 E F1A F0(])A 1.001 -(Suspend the e)144 460.8 R -.15(xe)-.15 G 1.001 +E(ault.)-.1 E F1(suspend)108 508.8 Q F0([)2.5 E F1A F0(])A 1.001 +(Suspend the e)144 520.8 R -.15(xe)-.15 G 1.001 (cution of this shell until it recei).15 F -.15(ve)-.25 G 3.501(sa).15 G F2(SIGCONT)A F0 3.502(signal. A)3.252 F 1.002(login shell cannot be) -3.502 F .023(suspended; the)144 472.8 R F12.523 E F0 .023 +3.502 F .023(suspended; the)144 532.8 R F12.523 E F0 .023 (option can be used to o)2.523 F -.15(ve)-.15 G .022 (rride this and force the suspension.).15 F .022(The return status is) -5.022 F 2.5(0u)144 484.8 S(nless the shell is a login shell and)-2.5 E +5.022 F 2.5(0u)144 544.8 S(nless the shell is a login shell and)-2.5 E F12.5 E F0(is not supplied, or if job control is not enabled.)2.5 -E F1(test)108 501.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) -108 513.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .877 -(Return a status of 0 \(true\) or 1 \(f)144 513.6 R .878 +E F1(test)108 561.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) +108 573.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .877 +(Return a status of 0 \(true\) or 1 \(f)144 573.6 R .878 (alse\) depending on the e)-.1 F -.25(va)-.25 G .878 -(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 525.6 +(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 585.6 S(pr).2 E F0 5.53(.E).73 G .53 (ach operator and operand must be a separate ar)-5.53 F 3.03 (gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.079 -(primaries described abo)144 537.6 R 3.379 -.15(ve u)-.15 H(nder).15 E +(primaries described abo)144 597.6 R 3.379 -.15(ve u)-.15 H(nder).15 E F2(CONDITION)5.579 E 3.079(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF (.)A F1(test)7.579 E F0 3.08(does not accept an)5.58 F(y)-.15 E -(options, nor does it accept and ignore an ar)144 549.6 Q(gument of)-.18 +(options, nor does it accept and ignore an ar)144 609.6 Q(gument of)-.18 E F12.5 E F0(as signifying the end of options.)2.5 E .786 -(Expressions may be combined using the follo)144 567.6 R .785 +(Expressions may be combined using the follo)144 627.6 R .785 (wing operators, listed in decreasing order of prece-)-.25 F 3.411 -(dence. The)144 579.6 R -.25(eva)3.411 G .911 +(dence. The)144 639.6 R -.25(eva)3.411 G .911 (luation depends on the number of ar).25 F .912(guments; see belo)-.18 F 4.712 -.65(w. O)-.25 H .912(perator precedence is).65 F -(used when there are \214v)144 591.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G -(ore ar)-2.5 E(guments.)-.18 E F1(!)144 603.6 Q F3 -.2(ex)2.5 G(pr).2 E -F0 -.35(Tr)180 603.6 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 -E(alse.)-.1 E F1(\()144 615.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 -.26(Returns the v)180 615.6 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2 +(used when there are \214v)144 651.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G +(ore ar)-2.5 E(guments.)-.18 E F1(!)144 663.6 Q F3 -.2(ex)2.5 G(pr).2 E +F0 -.35(Tr)180 663.6 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 +E(alse.)-.1 E F1(\()144 675.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 +.26(Returns the v)180 675.6 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2 E F0 5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26 -(rride the normal precedence of opera-).15 F(tors.)180 627.6 Q F3 -.2 -(ex)144 639.6 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 --.35(Tr)180 651.6 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 -E F3 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F3 -.2(ex)144 663.6 S -(pr1).2 E F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 -675.6 S(ue if either).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F3 -.2 -(ex)2.5 G(pr2).2 E F0(is true.)2.52 E F1(test)144 692.4 Q F0(and)2.5 E -F1([)2.5 E F0 -.25(eva)2.5 G(luate conditional e).25 E -(xpressions using a set of rules based on the number of ar)-.15 E -(guments.)-.18 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(73) -192.055 E 0 Cg EP -%%Page: 74 74 +(rride the normal precedence of opera-).15 F(tors.)180 687.6 Q F3 -.2 +(ex)144 699.6 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 +-.35(Tr)180 711.6 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 +E F3 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(76)188.455 E 0 Cg EP +%%Page: 77 77 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.5(0a)144 84 S --.18(rg)-2.5 G(uments).18 E(The e)180 96 Q(xpression is f)-.15 E(alse.) --.1 E 2.5(1a)144 108 S -.18(rg)-2.5 G(ument).18 E(The e)180 120 Q +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 +/Times-Italic@0 SF -.2(ex)144 84 S(pr1).2 E F02.5 E/F2 10 +/Times-Bold@0 SF(o)A F1 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 96 S +(ue if either).35 E F1 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F1 -.2(ex)2.5 G +(pr2).2 E F0(is true.)2.52 E F2(test)144 112.8 Q F0(and)2.5 E F2([)2.5 E +F0 -.25(eva)2.5 G(luate conditional e).25 E +(xpressions using a set of rules based on the number of ar)-.15 E +(guments.)-.18 E 2.5(0a)144 130.8 S -.18(rg)-2.5 G(uments).18 E(The e) +180 142.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 154.8 S -.18 +(rg)-2.5 G(ument).18 E(The e)180 166.8 Q (xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 132 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)180 -144 R .37(gument is)-.18 F/F1 10/Times-Bold@0 SF(!)2.87 E F0 2.87(,t)C -.37(he e)-2.87 F .37(xpression is true if and only if the second ar)-.15 -F .37(gument is null.)-.18 F .38(If the \214rst ar)180 156 R .38 +E 2.5(2a)144 178.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) +180 190.8 R .37(gument is)-.18 F F2(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 +F .37(xpression is true if and only if the second ar)-.15 F .37 +(gument is null.)-.18 F .38(If the \214rst ar)180 202.8 R .38 (gument is one of the unary conditional operators listed abo)-.18 F .679 --.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(CONDI-)2.879 E(TION)180 -168 Q .552(AL EXPRESSIONS)-.18 F/F3 9/Times-Roman@0 SF(,)A F0 .552 +-.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(CONDI-)2.879 E(TION)180 +214.8 Q .552(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(,)A F0 .552 (the e)2.802 F .552(xpression is true if the unary test is true.)-.15 F -.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 180 Q +.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 226.8 Q (alid unary conditional operator)-.25 E 2.5(,t)-.4 G(he e)-2.5 E -(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 192 S -.18(rg)-2.5 G -(uments).18 E .236(The follo)180 204 R .236 +(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 238.8 S -.18(rg)-2.5 G +(uments).18 E .236(The follo)180 250.8 R .236 (wing conditions are applied in the order listed.)-.25 F .236 (If the second ar)5.236 F .236(gument is one of)-.18 F .855 -(the binary conditional operators listed abo)180 216 R 1.155 -.15(ve u) --.15 H(nder).15 E F2(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F F3(,)A -F0(the)3.105 E .579(result of the e)180 228 R .578(xpression is the res\ -ult of the binary test using the \214rst and third ar)-.15 F(guments) --.18 E 1.332(as operands.)180 240 R(The)6.332 E F13.832 E F0(and) -3.832 E F13.832 E F0 1.333 +(the binary conditional operators listed abo)180 262.8 R 1.155 -.15 +(ve u)-.15 H(nder).15 E F3(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F +F4(,)A F0(the)3.105 E .579(result of the e)180 274.8 R .578(xpression i\ +s the result of the binary test using the \214rst and third ar)-.15 F +(guments)-.18 E 1.332(as operands.)180 286.8 R(The)6.332 E F23.832 +E F0(and)3.832 E F23.832 E F0 1.333 (operators are considered binary operators when there are)3.832 F .558 -(three ar)180 252 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 F -.558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F .558 -(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F(o-ar)-.1 -E(gument)-.18 E .52(test using the second and third ar)180 264 R 3.021 -(guments. If)-.18 F .521(the \214rst ar)3.021 F .521(gument is e)-.18 F -(xactly)-.15 E F1(\()3.021 E F0 .521(and the third)3.021 F(ar)180 276 Q -.485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 2.985(,t)C .485 -(he result is the one-ar)-2.985 F .485(gument test of the second ar)-.18 -F 2.985(gument. Other)-.18 F(-)-.2 E(wise, the e)180 288 Q -(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 300 S -.18(rg)-2.5 G -(uments).18 E .384(If the \214rst ar)180 312 R .384(gument is)-.18 F F1 -(!)2.884 E F0 2.885(,t)C .385(he result is the ne)-2.885 F -.05(ga)-.15 -G .385(tion of the three-ar).05 F .385(gument e)-.18 F .385 -(xpression com-)-.15 F 1.648(posed of the remaining ar)180 324 R 4.147 -(guments. Otherwise,)-.18 F 1.647(the e)4.147 F 1.647 -(xpression is parsed and e)-.15 F -.25(va)-.25 G(luated).25 E -(according to precedence using the rules listed abo)180 336 Q -.15(ve) --.15 G(.).15 E 2.5(5o)144 348 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 -E 1.635(The e)180 360 R 1.635(xpression is parsed and e)-.15 F -.25(va) --.25 G 1.635(luated according to precedence using the rules listed).25 F -(abo)180 372 Q -.15(ve)-.15 G(.).15 E(When used with)144 390 Q F1(test) -2.5 E F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 -E F1(>)2.5 E F0(operators sort le)2.5 E -(xicographically using ASCII ordering.)-.15 E F1(times)108 406.8 Q F0 +(three ar)180 298.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 +F .558(gument is)-.18 F F2(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F +.558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F +(o-ar)-.1 E(gument)-.18 E .52(test using the second and third ar)180 +310.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .521 +(gument is e)-.18 F(xactly)-.15 E F2(\()3.021 E F0 .521(and the third) +3.021 F(ar)180 322.8 Q .485(gument is e)-.18 F(xactly)-.15 E F2(\))2.985 +E F0 2.985(,t)C .485(he result is the one-ar)-2.985 F .485 +(gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E +(wise, the e)180 334.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 +346.8 S -.18(rg)-2.5 G(uments).18 E .384(If the \214rst ar)180 358.8 R +.384(gument is)-.18 F F2(!)2.884 E F0 2.885(,t)C .385 +(he result is the ne)-2.885 F -.05(ga)-.15 G .385(tion of the three-ar) +.05 F .385(gument e)-.18 F .385(xpression com-)-.15 F 1.648 +(posed of the remaining ar)180 370.8 R 4.147(guments. Otherwise,)-.18 F +1.647(the e)4.147 F 1.647(xpression is parsed and e)-.15 F -.25(va)-.25 +G(luated).25 E(according to precedence using the rules listed abo)180 +382.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 394.8 S 2.5(rm)-2.5 G(ore ar) +-2.5 E(guments)-.18 E 1.635(The e)180 406.8 R 1.635 +(xpression is parsed and e)-.15 F -.25(va)-.25 G 1.635 +(luated according to precedence using the rules listed).25 F(abo)180 +418.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 436.8 Q F2(test)2.5 E +F0(or)2.5 E F2([)2.5 E F0 2.5(,t)C(he)-2.5 E F2(<)2.5 E F0(and)2.5 E F2 +(>)2.5 E F0(operators sort le)2.5 E +(xicographically using ASCII ordering.)-.15 E F2(times)108 453.6 Q F0 1.229(Print the accumulated user and system times for the shell and for\ - processes run from the shell.)144 406.8 R(The return status is 0.)144 -418.8 Q F1(trap)108 435.6 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E -/F4 10/Times-Italic@0 SF(ar)A(g)-.37 E F0(])A F4(sigspec)2.5 E F0(...]) -2.5 E .702(The command)144 447.6 R F4(ar)3.532 E(g)-.37 E F0 .702 -(is to be read and e)3.422 F -.15(xe)-.15 G .702 -(cuted when the shell recei).15 F -.15(ve)-.25 G 3.203(ss).15 G -(ignal\(s\))-3.203 E F4(sigspec)3.203 E F0 5.703(.I).31 G(f)-5.703 E F4 -(ar)3.533 E(g)-.37 E F0(is)3.423 E .609(absent \(and there is a single) -144 459.6 R F4(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F13.108 E -F0 3.108(,e)C .608 + processes run from the shell.)144 453.6 R(The return status is 0.)144 +465.6 Q F2(trap)108 482.4 Q F0([)2.5 E F2(\255lp)A F0 2.5(][)C([)-2.5 E +F1(ar)A(g)-.37 E F0(])A F1(sigspec)2.5 E F0(...])2.5 E .702(The command) +144 494.4 R F1(ar)3.532 E(g)-.37 E F0 .702(is to be read and e)3.422 F +-.15(xe)-.15 G .702(cuted when the shell recei).15 F -.15(ve)-.25 G +3.203(ss).15 G(ignal\(s\))-3.203 E F1(sigspec)3.203 E F0 5.703(.I).31 G +(f)-5.703 E F1(ar)3.533 E(g)-.37 E F0(is)3.423 E .609 +(absent \(and there is a single)144 506.4 R F1(sigspec)3.108 E F0 3.108 +(\)o)C(r)-3.108 E F23.108 E F0 3.108(,e)C .608 (ach speci\214ed signal is reset to its original disposition)-3.108 F -.658(\(the v)144 471.6 R .658(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F4(ar)3.488 E(g)-.37 E F0 .659 -(is the null string the signal speci\214ed by each)3.378 F F4(sigspec) -144.34 483.6 Q F0 .581 +.658(\(the v)144 518.4 R .658(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F1(ar)3.488 E(g)-.37 E F0 .659 +(is the null string the signal speci\214ed by each)3.378 F F1(sigspec) +144.34 530.4 Q F0 .581 (is ignored by the shell and by the commands it in)3.391 F -.2(vo)-.4 G --.1(ke).2 G 3.08(s. If).1 F F4(ar)3.41 E(g)-.37 E F0 .58 -(is not present and)3.3 F F13.08 E F0(has)3.08 E 1.214 -(been supplied, then the trap commands associated with each)144 495.6 R -F4(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215 -F(gu-)-.18 E .86(ments are supplied or if only)144 507.6 R F13.36 -E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86 +-.1(ke).2 G 3.08(s. If).1 F F1(ar)3.41 E(g)-.37 E F0 .58 +(is not present and)3.3 F F23.08 E F0(has)3.08 E 1.214 +(been supplied, then the trap commands associated with each)144 542.4 R +F1(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215 +F(gu-)-.18 E .86(ments are supplied or if only)144 554.4 R F23.36 +E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F2(trap)3.36 E F0 .86 (prints the list of commands associated with each)3.36 F 2.83 -(signal. The)144 519.6 R F12.83 E F0 .33(option causes the shell \ +(signal. The)144 566.4 R F22.83 E F0 .33(option causes the shell \ to print a list of signal names and their corresponding num-)2.83 F -4.311(bers. Each)144 531.6 R F4(sigspec)4.651 E F0 1.811 -(is either a signal name de\214ned in <)4.621 F F4(signal.h)A F0 1.81 +4.311(bers. Each)144 578.4 R F1(sigspec)4.651 E F0 1.811 +(is either a signal name de\214ned in <)4.621 F F1(signal.h)A F0 1.81 (>, or a signal number)B 6.81(.S)-.55 G(ignal)-6.81 E -(names are case insensiti)144 543.6 Q .3 -.15(ve a)-.25 H(nd the).15 E -F2(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.648(If a)144 561.6 R F4 -(sigspec)4.488 E F0(is)4.458 E F2(EXIT)4.148 E F0 1.648 -(\(0\) the command)3.898 F F4(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F +(names are case insensiti)144 590.4 Q .3 -.15(ve a)-.25 H(nd the).15 E +F3(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.648(If a)144 608.4 R F1 +(sigspec)4.488 E F0(is)4.458 E F3(EXIT)4.148 E F0 1.648 +(\(0\) the command)3.898 F F1(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F -.15(xe)-.15 G 1.649(cuted on e).15 F 1.649(xit from the shell.)-.15 F -1.649(If a)6.649 F F4(sigspec)4.489 E F0(is)4.459 E F2(DEB)144 573.6 Q -(UG)-.09 E F3(,)A F0 1.168(the command)3.418 F F4(ar)3.998 E(g)-.37 E F0 +1.649(If a)6.649 F F1(sigspec)4.489 E F0(is)4.459 E F3(DEB)144 620.4 Q +(UG)-.09 E F4(,)A F0 1.168(the command)3.418 F F1(ar)3.998 E(g)-.37 E F0 1.168(is e)3.888 F -.15(xe)-.15 G 1.167(cuted before e).15 F -.15(ve) --.25 G(ry).15 E F4 1.167(simple command)3.667 F F0(,)A F4(for)3.667 E F0 -(command,)3.667 E F4(case)3.667 E F0(com-)3.667 E(mand,)144 585.6 Q F4 +-.25 G(ry).15 E F1 1.167(simple command)3.667 F F0(,)A F1(for)3.667 E F0 +(command,)3.667 E F1(case)3.667 E F0(com-)3.667 E(mand,)144 632.4 Q F1 (select)2.646 E F0 .146(command, e)2.646 F -.15(ve)-.25 G .146 -(ry arithmetic).15 F F4(for)2.646 E F0 .147 +(ry arithmetic).15 F F1(for)2.646 E F0 .147 (command, and before the \214rst command e)2.646 F -.15(xe)-.15 G .147 -(cutes in a).15 F .146(shell function \(see)144 597.6 R F2 .146 +(cutes in a).15 F .146(shell function \(see)144 644.4 R F3 .146 (SHELL GRAMMAR)2.646 F F0(abo)2.396 E -.15(ve)-.15 G 2.646(\). Refer).15 -F .146(to the description of the)2.646 F F1(extdeb)2.645 E(ug)-.2 E F0 -.145(option to)2.645 F(the)144 609.6 Q F1(shopt)3.2 E F0 -.2(bu)3.2 G .7 -(iltin for details of its ef).2 F .7(fect on the)-.25 F F1(DEB)3.2 E(UG) --.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F4(sigspec)3.54 E F0(is)3.51 E F2 -(RETURN)3.2 E F3(,)A F0 .701(the com-)2.951 F(mand)144 621.6 Q F4(ar) +F .146(to the description of the)2.646 F F2(extdeb)2.645 E(ug)-.2 E F0 +.145(option to)2.645 F(the)144 656.4 Q F2(shopt)3.2 E F0 -.2(bu)3.2 G .7 +(iltin for details of its ef).2 F .7(fect on the)-.25 F F2(DEB)3.2 E(UG) +-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F1(sigspec)3.54 E F0(is)3.51 E F3 +(RETURN)3.2 E F4(,)A F0 .701(the com-)2.951 F(mand)144 668.4 Q F1(ar) 3.474 E(g)-.37 E F0 .644(is e)3.364 F -.15(xe)-.15 G .643 (cuted each time a shell function or a script e).15 F -.15(xe)-.15 G -.643(cuted with the).15 F F1(.)3.143 E F0(or)3.143 E F1(sour)3.143 E(ce) --.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 633.6 Q -.15(xe) --.15 G(cuting.).15 E .96(If a)144 651.6 R F4(sigspec)3.8 E F0(is)3.77 E -F2(ERR)3.46 E F3(,)A F0 .96(the command)3.21 F F4(ar)3.791 E(g)-.37 E F0 +.643(cuted with the).15 F F2(.)3.143 E F0(or)3.143 E F2(sour)3.143 E(ce) +-.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 680.4 Q -.15(xe) +-.15 G(cuting.).15 E .96(If a)144 698.4 R F1(sigspec)3.8 E F0(is)3.77 E +F3(ERR)3.46 E F4(,)A F0 .96(the command)3.21 F F1(ar)3.791 E(g)-.37 E F0 .961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 G 3.461(rap).15 G .961(ipeline \(which may consist of a)-3.461 F .185(sin\ gle simple command\), a list, or a compound command returns a non\255ze\ -ro e)144 663.6 R .184(xit status, subject to)-.15 F .451(the follo)144 -675.6 R .451(wing conditions.)-.25 F(The)5.451 E F2(ERR)2.951 E F0 .451 -(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .452 -(ailed command is part of the com-)-.1 F .388 -(mand list immediately follo)144 687.6 R .388(wing a)-.25 F F1(while) -2.888 E F0(or)2.888 E F1(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 -(ord, part of the test in an)-.1 F F4(if)2.897 E F0 .387 -(statement, part)4.847 F .777(of a command e)144 699.6 R -.15(xe)-.15 G -.778(cuted in a).15 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0 .778 -(list e)3.278 F .778(xcept the command follo)-.15 F .778 -(wing the \214nal)-.25 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0 -3.278(,a)C -.15(ny)-3.278 G 1.28(command in a pipeline b)144 711.6 R -1.28(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v) --3.78 F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F -F1(!)3.78 E F0(.)A(These are the same conditions obe)144 723.6 Q -(yed by the)-.15 E F1(err)2.5 E(exit)-.18 E F0(\()2.5 E F1A F0 2.5 -(\)o)C(ption.)-2.5 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(74) -192.055 E 0 Cg EP -%%Page: 75 75 +ro e)144 710.4 R .184(xit status, subject to)-.15 F 1.92(the follo)144 +722.4 R 1.92(wing conditions.)-.25 F(The)6.92 E F3(ERR)4.42 E F0 1.92 +(trap is not e)4.17 F -.15(xe)-.15 G 1.92(cuted if the f).15 F 1.92 +(ailed command is part of the)-.1 F(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(77)188.455 E 0 Cg EP +%%Page: 78 78 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.095 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .464 +(command list immediately follo)144 84 R .464(wing a)-.25 F/F1 10 +/Times-Bold@0 SF(while)2.964 E F0(or)2.964 E F1(until)2.964 E F0 -.1(ke) +2.964 G(yw)-.05 E .464(ord, part of the test in an)-.1 F/F2 10 +/Times-Italic@0 SF(if)2.973 E F0(statement,)4.923 E .711 +(part of a command e)144 96 R -.15(xe)-.15 G .711(cuted in a).15 F F1 +(&&)3.211 E F0(or)3.211 E F1(||)3.212 E F0 .712(list e)3.212 F .712 +(xcept the command follo)-.15 F .712(wing the \214nal)-.25 F F1(&&)3.212 +E F0(or)3.212 E F1(||)3.212 E F0(,)A(an)144 108 Q 2.777(yc)-.15 G .276 +(ommand in a pipeline b)-2.777 F .276(ut the last, or if the command') +-.2 F 2.776(sr)-.55 G .276(eturn v)-2.776 F .276(alue is being in)-.25 F +-.15(ve)-.4 G .276(rted using).15 F F1(!)2.776 E F0(.)A +(These are the same conditions obe)144 120 Q(yed by the)-.15 E F1(err) +2.5 E(exit)-.18 E F0(\()2.5 E F1A F0 2.5(\)o)C(ption.)-2.5 E 1.095 (Signals ignored upon entry to the shell cannot be trapped or reset.)144 -84 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 -(being ignored are reset to their original v)144 96 R .662 +138 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 +(being ignored are reset to their original v)144 150 R .662 (alues in a subshell or subshell en)-.25 F .661(vironment when one is) --.4 F 2.5(created. The)144 108 R(return status is f)2.5 E(alse if an)-.1 -E(y)-.15 E/F1 10/Times-Italic@0 SF(sigspec)2.84 E F0(is in)2.81 E -.25 -(va)-.4 G(lid; otherwise).25 E/F2 10/Times-Bold@0 SF(trap)2.5 E F0 -(returns true.)2.5 E F2(type)108 124.8 Q F0([)2.5 E F2(\255aftpP)A F0(]) -A F1(name)2.5 E F0([)2.5 E F1(name)A F0(...])2.5 E -.4(Wi)144 136.8 S -.173(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F1 -(name)3.033 E F0 -.1(wo)2.853 G .174 +-.4 F 2.5(created. The)144 162 R(return status is f)2.5 E(alse if an)-.1 +E(y)-.15 E F2(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G +(lid; otherwise).25 E F1(trap)2.5 E F0(returns true.)2.5 E F1(type)108 +178.8 Q F0([)2.5 E F1(\255aftpP)A F0(])A F2(name)2.5 E F0([)2.5 E F2 +(name)A F0(...])2.5 E -.4(Wi)144 190.8 S .173 +(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F2(name) +3.033 E F0 -.1(wo)2.853 G .174 (uld be interpreted if used as a command name.).1 F .174(If the)5.174 F -F2144 148.8 Q F0 .843(option is used,)3.343 F F2(type)3.343 E F0 -.843(prints a string which is one of)3.343 F F1(alias)3.343 E F0(,).27 E -F1 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F1(function)3.343 E F0 -(,).24 E F1 -.2(bu)3.342 G(iltin).2 E F0 3.342(,o).24 G(r)-3.342 E F1 -(\214le)5.252 E F0(if)3.522 E F1(name)144.36 160.8 Q F0 .086 +F1144 202.8 Q F0 .843(option is used,)3.343 F F1(type)3.343 E F0 +.843(prints a string which is one of)3.343 F F2(alias)3.343 E F0(,).27 E +F2 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F2(function)3.343 E F0 +(,).24 E F2 -.2(bu)3.342 G(iltin).2 E F0 3.342(,o).24 G(r)-3.342 E F2 +(\214le)5.252 E F0(if)3.522 E F2(name)144.36 214.8 Q F0 .086 (is an alias, shell reserv)2.766 F .086(ed w)-.15 F .086 (ord, function, b)-.1 F .087(uiltin, or disk \214le, respecti)-.2 F -.15 -(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F1 +(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F2 (name)2.947 E F0 .087(is not)2.767 F .119 -(found, then nothing is printed, and an e)144 172.8 R .118 +(found, then nothing is printed, and an e)144 226.8 R .118 (xit status of f)-.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F -F22.618 E F0 .118(option is used,)2.618 F F2(type)2.618 E F0 .855 -(either returns the name of the disk \214le that w)144 184.8 R .855 -(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F1(name)3.715 E F0 +F12.618 E F0 .118(option is used,)2.618 F F1(type)2.618 E F0 .855 +(either returns the name of the disk \214le that w)144 238.8 R .855 +(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F2(name)3.715 E F0 .855(were speci\214ed as a com-)3.535 F .641(mand name, or nothing if) -144 196.8 R/F3 10/Courier@0 SF .641(type -t name)3.141 F F0 -.1(wo)3.141 -G .641(uld not return).1 F F1(\214le)3.14 E F0 5.64(.T).18 G(he)-5.64 E -F23.14 E F0 .64(option forces a)3.14 F/F4 9/Times-Bold@0 SF -.666 -(PA)3.14 G(TH)-.189 E F0 .112(search for each)144 208.8 R F1(name)2.612 +144 250.8 R/F3 10/Courier@0 SF .641(type -t name)3.141 F F0 -.1(wo)3.141 +G .641(uld not return).1 F F2(\214le)3.14 E F0 5.64(.T).18 G(he)-5.64 E +F13.14 E F0 .64(option forces a)3.14 F/F4 9/Times-Bold@0 SF -.666 +(PA)3.14 G(TH)-.189 E F0 .112(search for each)144 262.8 R F2(name)2.612 E F0 2.612(,e)C -.15(ve)-2.862 G 2.613(ni).15 G(f)-2.613 E F3 .113 -(type -t name)2.613 F F0 -.1(wo)2.613 G .113(uld not return).1 F F1 +(type -t name)2.613 F F0 -.1(wo)2.613 G .113(uld not return).1 F F2 (\214le)2.613 E F0 5.113(.I).18 G 2.613(fac)-5.113 G .113 -(ommand is hashed,)-2.613 F F22.613 E F0(and)144 220.8 Q F2 +(ommand is hashed,)-2.613 F F12.613 E F0(and)144 274.8 Q F1 3.231 E F0 .731(print the hashed v)3.231 F .73 (alue, which is not necessarily the \214le that appears \214rst in)-.25 F F4 -.666(PA)3.23 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .73(If the) -5.23 F F2144 232.8 Q F0 1.748(option is used,)4.248 F F2(type) +5.23 F F1144 286.8 Q F0 1.748(option is used,)4.248 F F1(type) 4.248 E F0 1.748(prints all of the places that contain an e)4.248 F -.15 -(xe)-.15 G 1.748(cutable named).15 F F1(name)4.249 E F0 6.749(.T).18 G +(xe)-.15 G 1.748(cutable named).15 F F2(name)4.249 E F0 6.749(.T).18 G (his)-6.749 E .744(includes aliases and functions, if and only if the) -144 244.8 R F23.244 E F0 .744(option is not also used.)3.244 F +144 298.8 R F13.244 E F0 .744(option is not also used.)3.244 F .743(The table of hashed)5.744 F 1.223 -(commands is not consulted when using)144 256.8 R F23.723 E F0 -6.223(.T)C(he)-6.223 E F23.723 E F0 1.223 +(commands is not consulted when using)144 310.8 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 .326(with the)144 -268.8 R F2(command)2.826 E F0 -.2(bu)2.826 G(iltin.).2 E F2(type)5.326 E +322.8 R F1(command)2.826 E F0 -.2(bu)2.826 G(iltin.).2 E F1(type)5.326 E F0 .326(returns true if all of the ar)2.826 F .325(guments are found, f) -.18 F .325(alse if an)-.1 F 2.825(ya)-.15 G .325(re not)-2.825 F -(found.)144 280.8 Q F2(ulimit)108 297.6 Q F0([)2.5 E F2 -(\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F1(limit)A F0(]])A(Pro)144 -309.6 Q .243(vides control o)-.15 F -.15(ve)-.15 G 2.743(rt).15 G .243 +(found.)144 334.8 Q F1(ulimit)108 351.6 Q F0([)2.5 E F1 +(\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F2(limit)A F0(]])A(Pro)144 +363.6 Q .243(vides control o)-.15 F -.15(ve)-.15 G 2.743(rt).15 G .243 (he resources a)-2.743 F -.25(va)-.2 G .244 (ilable to the shell and to processes started by it, on systems).25 F -.944(that allo)144 321.6 R 3.444(ws)-.25 G .944(uch control.)-3.444 F -(The)5.944 E F23.444 E F0(and)3.444 E F23.444 E F0 .943 +.944(that allo)144 375.6 R 3.444(ws)-.25 G .944(uch control.)-3.444 F +(The)5.944 E F13.444 E F0(and)3.444 E F13.444 E F0 .943 (options specify that the hard or soft limit is set for the)3.444 F(gi) -144 333.6 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208 +144 387.6 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208 (hard limit cannot be increased by a non-root user once it is set; a so\ -ft limit may)2.708 F .426(be increased up to the v)144 345.6 R .426 -(alue of the hard limit.)-.25 F .425(If neither)5.426 F F22.925 E -F0(nor)2.925 E F22.925 E F0 .425 +ft limit may)2.708 F .426(be increased up to the v)144 399.6 R .426 +(alue of the hard limit.)-.25 F .425(If neither)5.426 F F12.925 E +F0(nor)2.925 E F12.925 E F0 .425 (is speci\214ed, both the soft and)2.925 F .139(hard limits are set.)144 -357.6 R .139(The v)5.139 F .139(alue of)-.25 F F1(limit)2.729 E F0 .139 +411.6 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139 (can be a number in the unit speci\214ed for the resource or one)3.319 F -.742(of the special v)144 369.6 R(alues)-.25 E F2(hard)3.242 E F0(,)A F2 -(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F2(unlimited)3.241 E F0 3.241(,w) +.742(of the special v)144 423.6 R(alues)-.25 E F1(hard)3.242 E F0(,)A F1 +(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F1(unlimited)3.241 E F0 3.241(,w) C .741(hich stand for the current hard limit, the current)-3.241 F .78 -(soft limit, and no limit, respecti)144 381.6 R -.15(ve)-.25 G(ly).15 E -5.78(.I)-.65 G(f)-5.78 E F1(limit)3.37 E F0 .78 +(soft limit, and no limit, respecti)144 435.6 R -.15(ve)-.25 G(ly).15 E +5.78(.I)-.65 G(f)-5.78 E F2(limit)3.37 E F0 .78 (is omitted, the current v)3.96 F .78(alue of the soft limit of the)-.25 -F .499(resource is printed, unless the)144 393.6 R F22.999 E F0 +F .499(resource is printed, unless the)144 447.6 R F12.999 E F0 .499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .498 (more than one resource is speci\214ed, the)2.999 F -(limit name and unit are printed before the v)144 405.6 Q 2.5 -(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F2 -144 417.6 Q F0(All current limits are reported)180 417.6 Q F2 -144 429.6 Q F0(The maximum sock)180 429.6 Q(et b)-.1 E(uf)-.2 E -(fer size)-.25 E F2144 441.6 Q F0 -(The maximum size of core \214les created)180 441.6 Q F2144 453.6 -Q F0(The maximum size of a process')180 453.6 Q 2.5(sd)-.55 G(ata se) --2.5 E(gment)-.15 E F2144 465.6 Q F0 -(The maximum scheduling priority \("nice"\))180 465.6 Q F2144 -477.6 Q F0 +(limit name and unit are printed before the v)144 459.6 Q 2.5 +(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F1 +144 471.6 Q F0(All current limits are reported)180 471.6 Q F1 +144 483.6 Q F0(The maximum sock)180 483.6 Q(et b)-.1 E(uf)-.2 E +(fer size)-.25 E F1144 495.6 Q F0 +(The maximum size of core \214les created)180 495.6 Q F1144 507.6 +Q F0(The maximum size of a process')180 507.6 Q 2.5(sd)-.55 G(ata se) +-2.5 E(gment)-.15 E F1144 519.6 Q F0 +(The maximum scheduling priority \("nice"\))180 519.6 Q F1144 +531.6 Q F0 (The maximum size of \214les written by the shell and its children)180 -477.6 Q F2144 489.6 Q F0(The maximum number of pending signals)180 -489.6 Q F2144 501.6 Q F0 -(The maximum number of kqueues that may be allocated)180 501.6 Q F2 -144 513.6 Q F0(The maximum size that may be lock)180 513.6 Q -(ed into memory)-.1 E F2144 525.6 Q F0 -(The maximum resident set size \(man)180 525.6 Q 2.5(ys)-.15 G -(ystems do not honor this limit\))-2.5 E F2144 537.6 Q F0 .791(Th\ +531.6 Q F1144 543.6 Q F0(The maximum number of pending signals)180 +543.6 Q F1144 555.6 Q F0 +(The maximum number of kqueues that may be allocated)180 555.6 Q F1 +144 567.6 Q F0(The maximum size that may be lock)180 567.6 Q +(ed into memory)-.1 E F1144 579.6 Q F0 +(The maximum resident set size \(man)180 579.6 Q 2.5(ys)-.15 G +(ystems do not honor this limit\))-2.5 E F1144 591.6 Q F0 .791(Th\ e maximum number of open \214le descriptors \(most systems do not allo) -180 537.6 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F -(be set\))180 549.6 Q F2144 561.6 Q F0 -(The pipe size in 512-byte blocks \(this may not be set\))180 561.6 Q F2 -144 573.6 Q F0 -(The maximum number of bytes in POSIX message queues)180 573.6 Q F2 -144 585.6 Q F0(The maximum real-time scheduling priority)180 585.6 -Q F2144 597.6 Q F0(The maximum stack size)180 597.6 Q F2144 -609.6 Q F0(The maximum amount of cpu time in seconds)180 609.6 Q F2 -144 621.6 Q F0(The maximum number of processes a)180 621.6 Q -.25 -(va)-.2 G(ilable to a single user).25 E F2144 633.6 Q F0 .47 -(The maximum amount of virtual memory a)180 633.6 R -.25(va)-.2 G .47 +180 591.6 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F +(be set\))180 603.6 Q F1144 615.6 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))180 615.6 Q F1 +144 627.6 Q F0 +(The maximum number of bytes in POSIX message queues)180 627.6 Q F1 +144 639.6 Q F0(The maximum real-time scheduling priority)180 639.6 +Q F1144 651.6 Q F0(The maximum stack size)180 651.6 Q F1144 +663.6 Q F0(The maximum amount of cpu time in seconds)180 663.6 Q F1 +144 675.6 Q F0(The maximum number of processes a)180 675.6 Q -.25 +(va)-.2 G(ilable to a single user).25 E F1144 687.6 Q F0 .47 +(The maximum amount of virtual memory a)180 687.6 R -.25(va)-.2 G .47 (ilable to the shell and, on some systems, to).25 F(its children)180 -645.6 Q F2144 657.6 Q F0(The maximum number of \214le locks)180 -657.6 Q F2144 669.6 Q F0(The maximum number of pseudoterminals)180 -669.6 Q F2144 681.6 Q F0(The maximum number of threads)180 681.6 Q -(If)144 698.4 Q F1(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G -.468(n, and the).15 F F22.968 E F0 .468(option is not used,)2.968 -F F1(limit)2.968 E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468 -(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .045 -(no option is gi)144 710.4 R -.15(ve)-.25 G .045(n, then).15 F F2 -2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 -(lues are in 1024-byte increments, e)1.11 F .044(xcept for)-.15 F F2 -2.544 E F0 2.544(,w)C .044(hich is)-2.544 F 1.588(in seconds;)144 -722.4 R F24.088 E F0 4.089(,w)C 1.589 -(hich is in units of 512-byte blocks;)-4.089 F F24.089 E F0(,)A F2 -4.089 E F0(,)A F24.089 E F0(,)A F24.089 E F0(,)A F2 -4.089 E F0 4.089(,a)C(nd)-4.089 E F24.089 E F0 4.089(,w)C -1.589(hich are)-4.089 F(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E -(75)192.055 E 0 Cg EP -%%Page: 76 76 +699.6 Q F1144 711.6 Q F0(The maximum number of \214le locks)180 +711.6 Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(78)188.455 E 0 +Cg EP +%%Page: 79 79 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.439(unscaled v) -144 84 R 1.439(alues; and, when in Posix mode,)-.25 F/F1 10/Times-Bold@0 -SF3.939 E F0(and)3.939 E F13.939 E F0 3.939(,w)C 1.438 -(hich are in 512-byte increments.)-3.939 F(The)6.438 E .404 -(return status is 0 unless an in)144 96 R -.25(va)-.4 G .404 -(lid option or ar).25 F .404 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q F0(The maximum number of pseudoterminals)180 84 Q F1 +144 96 Q F0(The maximum number of threads)180 96 Q(If)144 112.8 Q +/F2 10/Times-Italic@0 SF(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve) +-.25 G .468(n, and the).15 F 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 .045(no option is gi)144 124.8 R -.15(ve)-.25 G .045(n, then).15 F F1 +2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 +(lues are in 1024-byte increments, e)1.11 F .044(xcept for)-.15 F F1 +2.544 E F0 2.544(,w)C .044(hich is)-2.544 F 1.588(in seconds;)144 +136.8 R F14.088 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.089(,w)C +1.589(hich are)-4.089 F 1.476(unscaled v)144 148.8 R 1.476 +(alues; and, when in posix mode,)-.25 F 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 160.8 R +-.25(va)-.4 G .404(lid option or ar).25 F .404 (gument is supplied, or an error occurs while setting)-.18 F 2.5(an)144 -108 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 124.8 Q F0([)2.5 E F1 -A F0 2.5(][)C F1-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF -(mode)-2.5 E F0(])A .2(The user \214le-creation mask is set to)144 136.8 -R F2(mode)2.7 E F0 5.2(.I).18 G(f)-5.2 E F2(mode)3.08 E F0(be)2.88 E .2 +172.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 189.6 Q F0([)2.5 E +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 201.6 R F2(mode)2.7 E F0 +5.2(.I).18 G(f)-5.2 E F2(mode)3.08 E F0(be)2.88 E .2 (gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\ therwise it is interpreted as a symbolic mode mask similar to that acce\ -pted by)144 148.8 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -160.8 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382 +pted by)144 213.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +225.6 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382 (alue of the mask is printed.)-.25 F(The)5.382 E F12.882 E F0 .382 (option causes the mask to be)2.882 F .547 -(printed in symbolic form; the def)144 172.8 R .547 +(printed in symbolic form; the def)144 237.6 R .547 (ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G (he)-3.047 E F13.047 E F0 .547(option is supplied, and)3.047 F F2 -(mode)144.38 184.8 Q F0 .552 +(mode)144.38 249.6 Q F0 .552 (is omitted, the output is in a form that may be reused as input.)3.232 -F .551(The return status is 0 if the)5.551 F(mode w)144 196.8 Q +F .551(The return status is 0 if the)5.551 F(mode w)144 261.6 Q (as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E (gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1 -(unalias)108 213.6 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 -(...])2.5 E(Remo)144 225.6 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) +(unalias)108 278.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 +(...])2.5 E(Remo)144 290.4 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) 4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 F(If)6.655 E F14.155 E F0 1.655(is supplied, all alias de\214nitions are)4.155 -F(remo)144 237.6 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E +F(remo)144 302.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E (alue is true unless a supplied)-.25 E F2(name)2.86 E F0 -(is not a de\214ned alias.)2.68 E F1(unset)108 254.4 Q F0<5bad>2.5 E F1 +(is not a de\214ned alias.)2.68 E F1(unset)108 319.2 Q F0<5bad>2.5 E F1 (fv)A F0 2.5(][)C-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...]) -2.5 E -.15(Fo)144 266.4 S 3.828(re).15 G(ach)-3.828 E F2(name)3.828 E F0 +2.5 E -.15(Fo)144 331.2 S 3.828(re).15 G(ach)-3.828 E F2(name)3.828 E F0 3.828(,r).18 G(emo)-3.828 E 1.628 -.15(ve t)-.15 H 1.328 (he corresponding v).15 F 1.327(ariable or function.)-.25 F 1.327 (If the)6.327 F F13.827 E F0 1.327(option is gi)3.827 F -.15(ve) --.25 G 1.327(n, each).15 F F2(name)144.36 278.4 Q F0 1.55 +-.25 G 1.327(n, each).15 F F2(name)144.36 343.2 Q F0 1.55 (refers to a shell v)4.23 F 1.551(ariable, and that v)-.25 F 1.551 (ariable is remo)-.25 F -.15(ve)-.15 G 4.051(d. Read-only).15 F -.25(va) -4.051 G 1.551(riables may not be).25 F 4.642(unset. If)144 290.4 R F1 +4.051 G 1.551(riables may not be).25 F 4.642(unset. If)144 355.2 R F1 4.642 E F0 2.142(is speci\214ed, each)4.642 F F2(name)5.001 E F0 2.141(refers to a shell function, and the function de\214nition is)4.821 -F(remo)144 302.4 Q -.15(ve)-.15 G 2.537(d. If).15 F(the)2.537 E F1 +F(remo)144 367.2 Q -.15(ve)-.15 G 2.537(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.538 E .492 -(be unset rather than the v)144 314.4 R .492(ariable it references.)-.25 +(be unset rather than the v)144 379.2 R .492(ariable it references.)-.25 F 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 .492(If no)5.492 F .22 -(options are supplied, each)144 326.4 R F2(name)2.72 E F0 .22 +(options are supplied, each)144 391.2 R F2(name)2.72 E F0 .22 (refers to a v)2.72 F .221(ariable; if there is no v)-.25 F .221 (ariable by that name, an)-.25 F 2.721(yf)-.15 G(unc-)-2.721 E 1.189 -(tion with that name is unset.)144 338.4 R 1.189(Each unset v)6.189 F +(tion with that name is unset.)144 403.2 R 1.189(Each unset v)6.189 F 1.189(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.688(df).15 G 1.188(rom the en)-3.688 F(vironment)-.4 E 3.205 -(passed to subsequent commands.)144 350.4 R 3.206(If an)8.206 F 5.706 +(passed to subsequent commands.)144 415.2 R 3.206(If an)8.206 F 5.706 (yo)-.15 G(f)-5.706 E/F3 9/Times-Bold@0 SF(COMP_W)5.706 E(ORDBREAKS)-.09 E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM)5.456 E F4(,)A F3(SECONDS)5.456 E -F4(,)A F3(LINENO)144 362.4 Q F4(,)A F3(HISTCMD)4.348 E F4(,)A F3(FUNCN) +F4(,)A F3(LINENO)144 427.2 Q F4(,)A F3(HISTCMD)4.348 E F4(,)A F3(FUNCN) 4.348 E(AME)-.18 E F4(,)A F3(GR)4.348 E(OUPS)-.27 E F4(,)A F0(or)4.348 E F3(DIRST)4.598 E -.495(AC)-.81 G(K).495 E F0 2.098(are unset, the)4.348 F 4.597(yl)-.15 G 2.097(ose their special)-4.597 F(properties, e)144 -374.4 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 +439.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 G(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a) --.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 391.2 Q -F0([)2.5 E F1A F0 2.5(][)C F2 2.5(n.)-2.5 G(..)-2.5 E F0(])A -.8 -(Wa)144 403.2 S .026(it for each speci\214ed child process and return i\ -ts termination status.).8 F(Each)5.027 E F2(n)2.887 E F0 .027 -(may be a process ID)2.767 F .256 -(or a job speci\214cation; if a job spec is gi)144 415.2 R -.15(ve)-.25 -G .256(n, all processes in that job').15 F 2.756(sp)-.55 G .256 -(ipeline are w)-2.756 F .256(aited for)-.1 F 5.256(.I)-.55 G(f)-5.256 E -F2(n)3.116 E F0 .317(is not gi)144 427.2 R -.15(ve)-.25 G .317 -(n, all currently acti).15 F .618 -.15(ve c)-.25 H .318 -(hild processes are w).15 F .318(aited for)-.1 F 2.818(,a)-.4 G .318 -(nd the return status is zero.)-2.818 F .318(If the)5.318 F F1144 -439.2 Q F0 .362(option is supplied,)2.862 F F1(wait)2.862 E F0 -.1(wa) -2.862 G .362(its for an).1 F 2.862(yj)-.15 G .362 -(ob to terminate and returns its e)-2.862 F .361(xit status.)-.15 F(If) -5.361 E F2(n)3.221 E F0(speci\214es)3.101 E 2.595(an)144 451.2 S(on-e) --2.595 E .095(xistent process or job, the return status is 127.)-.15 F -.096(Otherwise, the return status is the e)5.095 F .096(xit status)-.15 -F(of the last process or job w)144 463.2 Q(aited for)-.1 E(.)-.55 E/F5 -10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 480 Q F0(If)108 492 Q F1(bash) -4.397 E F0 1.897(is started with the name)4.397 F F1(rbash)4.397 E F0 -4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F14.397 E F0 1.896 -(option is supplied at in)4.397 F -.2(vo)-.4 G 1.896 -(cation, the shell becomes).2 F 3.445(restricted. A)108 504 R .945 +-.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 456 Q +F0([)2.5 E F1(\255fn)A F0 2.5(][)C F2(id ...)-2.5 E F0(])A -.8(Wa)144 +468 S .659(it for each speci\214ed child process and return its termina\ +tion status.).8 F(Each)5.659 E F2(id)3.169 E F0 .659(may be a process) +3.929 F .009(ID or a job speci\214cation; if a job spec is gi)144 480 R +-.15(ve)-.25 G .008(n, all processes in that job').15 F 2.508(sp)-.55 G +.008(ipeline are w)-2.508 F .008(aited for)-.1 F 5.008(.I)-.55 G(f) +-5.008 E F2(id)144.01 492 Q F0 .521(is not gi)3.791 F -.15(ve)-.25 G +.521(n, all currently acti).15 F .821 -.15(ve c)-.25 H .521 +(hild processes are w).15 F .521(aited for)-.1 F 3.021(,a)-.4 G .521 +(nd the return status is zero.)-3.021 F(If)5.522 E(the)144 504 Q F1 +3.057 E F0 .557(option is supplied,)3.057 F F1(wait)3.057 E F0 -.1 +(wa)3.057 G .557(its for an).1 F 3.057(yj)-.15 G .557 +(ob to terminate and returns its e)-3.057 F .557(xit status.)-.15 F .556 +(If the)5.556 F F13.056 E F0 .586 +(option is supplied, and job control is enabled,)144 516 R F1(wait)3.086 +E F0(forces)3.086 E F2(id)3.086 E F0 .587 +(to terminate before returning its sta-)3.086 F .756 +(tus, instead of returning when it changes status.)144 528 R(If)5.756 E +F2(id)3.266 E F0 .755(speci\214es a non-e)4.026 F .755 +(xistent process or job, the)-.15 F .365(return status is 127.)144 540 R +.365(Otherwise, the return status is the e)5.365 F .365 +(xit status of the last process or job w)-.15 F(aited)-.1 E(for)144 552 +Q(.)-.55 E/F5 10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 568.8 Q F0(If) +108 580.8 Q F1(bash)4.397 E F0 1.897(is started with the name)4.397 F F1 +(rbash)4.397 E F0 4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F14.397 +E F0 1.896(option is supplied at in)4.397 F -.2(vo)-.4 G 1.896 +(cation, the shell becomes).2 F 3.445(restricted. A)108 592.8 R .945 (restricted shell is used to set up an en)3.445 F .946 (vironment more controlled than the standard shell.)-.4 F(It)5.946 E -(beha)108 516 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1(bash) -2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E -(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 532.8 Q -(changing directories with)144 532.8 Q F1(cd)2.5 E F0<83>108 549.6 Q -(setting or unsetting the v)144 549.6 Q(alues of)-.25 E F3(SHELL)2.5 E +(beha)108 604.8 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1 +(bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E +(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 621.6 Q +(changing directories with)144 621.6 Q F1(cd)2.5 E F0<83>108 638.4 Q +(setting or unsetting the v)144 638.4 Q(alues of)-.25 E F3(SHELL)2.5 E F4(,)A F3 -.666(PA)2.25 G(TH)-.189 E F4(,)A F3(ENV)2.25 E F4(,)A F0(or) -2.25 E F3 -.27(BA)2.5 G(SH_ENV).27 E F0<83>108 566.4 Q -(specifying command names containing)144 566.4 Q F1(/)2.5 E F0<83>108 -583.2 Q(specifying a \214lename containing a)144 583.2 Q F1(/)2.5 E F0 +2.25 E F3 -.27(BA)2.5 G(SH_ENV).27 E F0<83>108 655.2 Q +(specifying command names containing)144 655.2 Q F1(/)2.5 E F0<83>108 +672 Q(specifying a \214lename containing a)144 672 Q F1(/)2.5 E F0 (as an ar)2.5 E(gument to the)-.18 E F1(.)2.5 E F0 -.2(bu)5 G -(iltin command).2 E<83>108 600 Q .45 -(specifying a \214lename containing a slash as an ar)144 600 R .449 +(iltin command).2 E<83>108 688.8 Q .45 +(specifying a \214lename containing a slash as an ar)144 688.8 R .449 (gument to the)-.18 F F12.949 E F0 .449(option to the)2.949 F F1 -(hash)2.949 E F0 -.2(bu)2.949 G .449(iltin com-).2 F(mand)144 612 Q<83> -108 628.8 Q(importing function de\214nitions from the shell en)144 628.8 -Q(vironment at startup)-.4 E<83>108 645.6 Q(parsing the v)144 645.6 Q -(alue of)-.25 E F3(SHELLOPTS)2.5 E F0(from the shell en)2.25 E -(vironment at startup)-.4 E<83>108 662.4 Q(redirecting output using the\ - >, >|, <>, >&, &>, and >> redirection operators)144 662.4 Q<83>108 -679.2 Q(using the)144 679.2 Q F1(exec)2.5 E F0 -.2(bu)2.5 G -(iltin command to replace the shell with another command).2 E<83>108 696 -Q(adding or deleting b)144 696 Q(uiltin commands with the)-.2 E F1 -2.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 712.8 Q(using the)144 712.8 Q -F1(enable)2.5 E F0 -.2(bu)2.5 G -(iltin command to enable disabled shell b).2 E(uiltins)-.2 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(76)192.055 E 0 Cg EP -%%Page: 77 77 +(hash)2.949 E F0 -.2(bu)2.949 G .449(iltin com-).2 F(mand)144 700.8 Q +<83>108 717.6 Q(importing function de\214nitions from the shell en)144 +717.6 Q(vironment at startup)-.4 E(GNU Bash 5.0)72 768 Q +(2018 December 7)139.295 E(79)188.455 E 0 Cg EP +%%Page: 80 80 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>108 84 Q -(specifying the)144 84 Q/F1 10/Times-Bold@0 SF2.5 E F0 -(option to the)2.5 E F1(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E -<83>108 100.8 Q(turning of)144 100.8 Q 2.5(fr)-.25 G -(estricted mode with)-2.5 E F1(set +r)2.5 E F0(or)2.5 E F1(set +o r)2.5 -E(estricted)-.18 E F0(.)A(These restrictions are enforced after an)108 -117.6 Q 2.5(ys)-.15 G(tartup \214les are read.)-2.5 E 1.566 -(When a command that is found to be a shell script is e)108 134.4 R -.15 -(xe)-.15 G 1.567(cuted \(see).15 F/F2 9/Times-Bold@0 SF 1.567 -(COMMAND EXECUTION)4.067 F F0(abo)3.817 E -.15(ve)-.15 G(\),).15 E F1 -(rbash)108 146.4 Q F0(turns of)2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H -(estrictions in the shell spa).15 E(wned to e)-.15 E -.15(xe)-.15 G -(cute the script.).15 E/F3 10.95/Times-Bold@0 SF(SEE ALSO)72 163.2 Q/F4 -10/Times-Italic@0 SF(Bash Refer)108 175.2 Q(ence Manual)-.37 E F0 2.5 -(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F4 -(The Gnu Readline Libr)108 187.2 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E -(ox and Chet Rame)-.15 E(y)-.15 E F4(The Gnu History Libr)108 199.2 Q +(parsing the v)144 84 Q(alue of)-.25 E/F1 9/Times-Bold@0 SF(SHELLOPTS) +2.5 E F0(from the shell en)2.25 E(vironment at startup)-.4 E<83>108 +100.8 Q(redirecting output using the >, >|, <>, >&, &>, and >> redirect\ +ion operators)144 100.8 Q<83>108 117.6 Q(using the)144 117.6 Q/F2 10 +/Times-Bold@0 SF(exec)2.5 E F0 -.2(bu)2.5 G +(iltin command to replace the shell with another command).2 E<83>108 +134.4 Q(adding or deleting b)144 134.4 Q(uiltin commands with the)-.2 E +F22.5 E F0(and)2.5 E F22.5 E F0(options to the)2.5 E F2 +(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 151.2 Q +(using the)144 151.2 Q F2(enable)2.5 E F0 -.2(bu)2.5 G +(iltin command to enable disabled shell b).2 E(uiltins)-.2 E<83>108 168 +Q(specifying the)144 168 Q F22.5 E F0(option to the)2.5 E F2 +(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 184.8 Q +(turning of)144 184.8 Q 2.5(fr)-.25 G(estricted mode with)-2.5 E F2 +(set +r)2.5 E F0(or)2.5 E F2(set +o r)2.5 E(estricted)-.18 E F0(.)A +(These restrictions are enforced after an)108 201.6 Q 2.5(ys)-.15 G +(tartup \214les are read.)-2.5 E 1.566 +(When a command that is found to be a shell script is e)108 218.4 R -.15 +(xe)-.15 G 1.567(cuted \(see).15 F F1 1.567(COMMAND EXECUTION)4.067 F F0 +(abo)3.817 E -.15(ve)-.15 G(\),).15 E F2(rbash)108 230.4 Q F0(turns of) +2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H(estrictions in the shell spa).15 +E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E/F3 10.95 +/Times-Bold@0 SF(SEE ALSO)72 247.2 Q/F4 10/Times-Italic@0 SF(Bash Refer) +108 259.2 Q(ence Manual)-.37 E F0 2.5(,B)C(rian F)-2.5 E +(ox and Chet Rame)-.15 E(y)-.15 E F4(The Gnu Readline Libr)108 271.2 Q (ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E -F4 -.8(Po)108 211.2 S(rtable Oper).8 E +F4(The Gnu History Libr)108 283.2 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E +(ox and Chet Rame)-.15 E(y)-.15 E F4 -.8(Po)108 295.2 S(rtable Oper).8 E (ating System Interface \(POSIX\) P)-.15 E(art 2: Shell and Utilities) --.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 223.2 Q -(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 235.2 Q +-.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 307.2 Q +(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 319.2 Q (.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F4(sh) -108 247.2 Q F0(\(1\),)A F4(ksh)2.5 E F0(\(1\),)A F4(csh)2.5 E F0(\(1\))A -F4(emacs)108 259.2 Q F0(\(1\),)A F4(vi)2.5 E F0(\(1\))A F4 -.37(re)108 -271.2 S(adline).37 E F0(\(3\))A F3(FILES)72 288 Q F4(/bin/bash)109.666 -300 Q F0(The)144 312 Q F1(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E F4 -(/etc/pr)109.666 324 Q(o\214le)-.45 E F0 -(The systemwide initialization \214le, e)144 336 Q -.15(xe)-.15 G -(cuted for login shells).15 E F4(~/.bash_pr)109.666 348 Q(o\214le)-.45 E -F0(The personal initialization \214le, e)144 360 Q -.15(xe)-.15 G -(cuted for login shells).15 E F4(~/.bashr)109.666 372 Q(c)-.37 E F0 -(The indi)144 384 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G -(-shell startup \214le).15 E F4(~/.bash_lo)109.666 396 Q(gout)-.1 E F0 -(The indi)144 408 Q(vidual login shell cleanup \214le, e)-.25 E -.15(xe) +108 331.2 Q F0(\(1\),)A F4(ksh)2.5 E F0(\(1\),)A F4(csh)2.5 E F0(\(1\))A +F4(emacs)108 343.2 Q F0(\(1\),)A F4(vi)2.5 E F0(\(1\))A F4 -.37(re)108 +355.2 S(adline).37 E F0(\(3\))A F3(FILES)72 372 Q F4(/bin/bash)109.666 +384 Q F0(The)144 396 Q F2(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E F4 +(/etc/pr)109.666 408 Q(o\214le)-.45 E F0 +(The systemwide initialization \214le, e)144 420 Q -.15(xe)-.15 G +(cuted for login shells).15 E F4(~/.bash_pr)109.666 432 Q(o\214le)-.45 E +F0(The personal initialization \214le, e)144 444 Q -.15(xe)-.15 G +(cuted for login shells).15 E F4(~/.bashr)109.666 456 Q(c)-.37 E F0 +(The indi)144 468 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G +(-shell startup \214le).15 E F4(~/.bash_lo)109.666 480 Q(gout)-.1 E F0 +(The indi)144 492 Q(vidual login shell cleanup \214le, e)-.25 E -.15(xe) -.15 G(cuted when a login shell e).15 E(xits)-.15 E F4(~/.inputr)109.666 -420 Q(c)-.37 E F0(Indi)144 432 Q(vidual)-.25 E F4 -.37(re)2.5 G(adline) -.37 E F0(initialization \214le)2.5 E F3 -.548(AU)72 448.8 S(THORS).548 E -F0(Brian F)108 460.8 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 -E(bfox@gnu.or)108 472.8 Q(g)-.18 E(Chet Rame)108 489.6 Q 1.3 -.65(y, C) +504 Q(c)-.37 E F0(Indi)144 516 Q(vidual)-.25 E F4 -.37(re)2.5 G(adline) +.37 E F0(initialization \214le)2.5 E F3 -.548(AU)72 532.8 S(THORS).548 E +F0(Brian F)108 544.8 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 +E(bfox@gnu.or)108 556.8 Q(g)-.18 E(Chet Rame)108 573.6 Q 1.3 -.65(y, C) -.15 H(ase W).65 E(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve) --.25 G(rsity).15 E(chet.rame)108 501.6 Q(y@case.edu)-.15 E F3 -.11(BU)72 -518.4 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .568 -(If you \214nd a b)108 530.4 R .568(ug in)-.2 F F1(bash,)3.068 E F0 .568 +-.25 G(rsity).15 E(chet.rame)108 585.6 Q(y@case.edu)-.15 E F3 -.11(BU)72 +602.4 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .568 +(If you \214nd a b)108 614.4 R .568(ug in)-.2 F F2(bash,)3.068 E F0 .568 (you should report it.)3.068 F .568(But \214rst, you should mak)5.568 F 3.068(es)-.1 G .568(ure that it really is a b)-3.068 F .567(ug, and)-.2 -F 5.625(that it appears in the latest v)108 542.4 R 5.625(ersion of)-.15 -F F1(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.626 +F 5.625(that it appears in the latest v)108 626.4 R 5.625(ersion of)-.15 +F F2(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.626 (ersion is al)-.15 F -.1(wa)-.1 G 5.626(ys a).1 F -.25(va)-.2 G 5.626 -(ilable from).25 F F4(ftp://ftp.gnu.or)108 554.4 Q(g/pub/gnu/bash/)-.37 -E F0(.)A .411(Once you ha)108 571.2 R .711 -.15(ve d)-.2 H .411 +(ilable from).25 F F4(ftp://ftp.gnu.or)108 638.4 Q(g/pub/gnu/bash/)-.37 +E F0(.)A .411(Once you ha)108 655.2 R .711 -.15(ve d)-.2 H .411 (etermined that a b).15 F .411(ug actually e)-.2 F .411(xists, use the) -.15 F F4(bashb)3.18 E(ug)-.2 E F0 .41(command to submit a b)3.13 F .41 -(ug report.)-.2 F(If)5.41 E .594(you ha)108 583.2 R .894 -.15(ve a \214) +(ug report.)-.2 F(If)5.41 E .594(you ha)108 667.2 R .894 -.15(ve a \214) -.2 H .595(x, you are encouraged to mail that as well!).15 F .595 (Suggestions and `philosophical' b)5.595 F .595(ug reports may)-.2 F -(be mailed to)108 595.2 Q F4 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0 -(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F1(gnu.bash.b)2.5 E(ug) --.2 E F0(.)A(ALL b)108 612 Q(ug reports should include:)-.2 E(The v)108 -628.8 Q(ersion number of)-.15 E F1(bash)2.5 E F0(The hardw)108 640.8 Q -(are and operating system)-.1 E(The compiler used to compile)108 652.8 Q -2.5(Ad)108 664.8 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 E -2.5(As)108 676.8 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 G -(rcises the b).15 E(ug)-.2 E F4(bashb)108.27 693.6 Q(ug)-.2 E F0 -(inserts the \214rst three items automatically into the template it pro) -2.72 E(vides for \214ling a b)-.15 E(ug report.)-.2 E(Comments and b)108 -710.4 Q(ug reports concerning this manual page should be directed to)-.2 -E F4 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.) -.25 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(77)192.055 E 0 Cg -EP -%%Page: 78 78 +(be mailed to)108 679.2 Q F4 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0 +(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F2(gnu.bash.b)2.5 E(ug) +-.2 E F0(.)A(ALL b)108 696 Q(ug reports should include:)-.2 E +(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(80)188.455 E 0 Cg EP +%%Page: 81 81 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95 -/Times-Bold@0 SF -.11(BU)72 84 S(GS).11 E F0(It')108 96 Q 2.5(st)-.55 G -(oo big and too slo)-2.5 E -.65(w.)-.25 G 1.869 -(There are some subtle dif)108 112.8 R 1.869(ferences between)-.25 F/F2 -10/Times-Bold@0 SF(bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869 -(ersions of)-.15 F F2(sh)4.368 E F0 4.368(,m)C 1.868 -(ostly because of the)-4.368 F/F3 9/Times-Bold@0 SF(POSIX)108 124.8 Q F0 -(speci\214cation.)2.25 E(Aliases are confusing in some uses.)108 141.6 Q -(Shell b)108 158.4 Q +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(The v)108 84 Q +(ersion number of)-.15 E/F1 10/Times-Bold@0 SF(bash)2.5 E F0(The hardw) +108 96 Q(are and operating system)-.1 E(The compiler used to compile)108 +108 Q 2.5(Ad)108 120 S(escription of the b)-2.5 E(ug beha)-.2 E(viour) +-.2 E 2.5(As)108 132 S(hort script or `recipe' which e)-2.5 E -.15(xe) +-.15 G(rcises the b).15 E(ug)-.2 E/F2 10/Times-Italic@0 SF(bashb)108.27 +148.8 Q(ug)-.2 E F0 +(inserts the \214rst three items automatically into the template it pro) +2.72 E(vides for \214ling a b)-.15 E(ug report.)-.2 E(Comments and b)108 +165.6 Q(ug reports concerning this manual page should be directed to)-.2 +E F2 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.) +.25 E/F3 10.95/Times-Bold@0 SF -.11(BU)72 182.4 S(GS).11 E F0(It')108 +194.4 Q 2.5(st)-.55 G(oo big and too slo)-2.5 E -.65(w.)-.25 G 1.869 +(There are some subtle dif)108 211.2 R 1.869(ferences between)-.25 F F1 +(bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869(ersions of)-.15 F +F1(sh)4.368 E F0 4.368(,m)C 1.868(ostly because of the)-4.368 F/F4 9 +/Times-Bold@0 SF(POSIX)108 223.2 Q F0(speci\214cation.)2.25 E +(Aliases are confusing in some uses.)108 240 Q(Shell b)108 256.8 Q (uiltin commands and functions are not stoppable/restartable.)-.2 E 1.315(Compound commands and command sequences of the form `a ; b ; c' a\ -re not handled gracefully when)108 175.2 R .39 -(process suspension is attempted.)108 187.2 R .389 +re not handled gracefully when)108 273.6 R .39 +(process suspension is attempted.)108 285.6 R .389 (When a process is stopped, the shell immediately e)5.39 F -.15(xe)-.15 G .389(cutes the ne).15 F .389(xt com-)-.15 F .192 -(mand in the sequence.)108 199.2 R .192(It suf)5.192 F .192(\214ces to \ +(mand in the sequence.)108 297.6 R .192(It suf)5.192 F .192(\214ces to \ place the sequence of commands between parentheses to force it into a) --.25 F(subshell, which may be stopped as a unit.)108 211.2 Q(Array v)108 -228 Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E -(There may be only one acti)108 244.8 Q .3 -.15(ve c)-.25 H -(oprocess at a time.).15 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 -E(78)192.055 E 0 Cg EP +-.25 F(subshell, which may be stopped as a unit.)108 309.6 Q(Array v)108 +326.4 Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E +(There may be only one acti)108 343.2 Q .3 -.15(ve c)-.25 H +(oprocess at a time.).15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 +E(81)188.455 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/bashref.dvi b/doc/bashref.dvi index 6b4fc4912..ece4544e7 100644 Binary files a/doc/bashref.dvi and b/doc/bashref.dvi differ diff --git a/doc/bashref.html b/doc/bashref.html index 8c2eabf06..c913de67b 100644 --- a/doc/bashref.html +++ b/doc/bashref.html @@ -1,13 +1,13 @@ - + + Bash Reference Manual @@ -24,7 +25,6 @@ A copy of the license is included in the section entitled - @@ -284,12 +284,12 @@ Next: , Previou

Bash Features

This text is a brief description of the features that are present in -the Bash shell (version 4.4, 7 September 2016). +the Bash shell (version 5.0, 7 December 2018). The Bash home page is http://www.gnu.org/software/bash/.

-

This is Edition 4.4, last updated 7 September 2016, +

This is Edition 5.0, last updated 7 December 2018, of The GNU Bash Reference Manual, -for Bash, Version 4.4. +for Bash, Version 5.0.

Bash contains features that appear in other popular shells, and some features that only appear in Bash. Some of the shells that Bash has @@ -861,7 +861,7 @@ present, are decoded as follows:

\nnn

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

\xHH

the eight-bit character whose value is the hexadecimal value HH @@ -1051,8 +1051,13 @@ the time information.

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

-

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

Each command in a pipeline is executed in its own subshell, which is a +separate process (see Command Execution Environment). +If the lastpipe option is enabled using the shopt builtin +(see The Shopt Builtin), +the last element of a pipeline may be run by the shell process. +

+

The exit status of a pipeline is the exit status of the last command in the pipeline, unless the pipefail option is enabled (see The Set Builtin). @@ -1089,7 +1094,8 @@ to delimit commands, equivalent to a semicolon.

If a command is terminated by the control operator ‘&’, the shell executes the command asynchronously in a subshell. -This is known as executing the command in the background. +This is known as executing the command in the background, +and these are referred to as asynchronous commands. The shell does not wait for the command to finish, and the return status is 0 (true). When job control is not active (see Job Control), @@ -1111,7 +1117,7 @@ associativity.

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

An OR list has the form

@@ -1144,7 +1150,7 @@ Next: , Previous: -

Compound commands are the shell programming constructs. +

Compound commands are the shell programming language constructs. Each construct begins with a reserved word or control operator and is terminated by a corresponding reserved word or operator. Any redirections (see Redirections) associated with a compound command @@ -1211,13 +1217,15 @@ in consequent-commands, or zero if none was executed.

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

Expand words, and execute commands once for each member +

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

+

The return status is the exit status of the last command that executes. If there are no items in the expansion of words, no commands are executed, and the return status is zero.

@@ -1290,11 +1298,15 @@ zero if no condition tested true.

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 according +to the rules described below in Pattern Matching. If the nocasematch shell option (see the description of shopt in The Shopt Builtin) is enabled, the match is performed without regard to the case @@ -1306,7 +1318,9 @@ as a clause.

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

@@ -1432,14 +1446,15 @@ If the nocasematch shell option is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches (‘==’) or does not -match (‘!=’)the pattern, and 1 otherwise. +match (‘!=’) the pattern, and 1 otherwise. Any part of the pattern may be quoted to force the quoted portion to be matched as a string.

An additional binary operator, ‘=~’, is available, with the same precedence as ‘==’ and ‘!=’. When it is used, the string to the right of the operator is considered -an extended regular expression and matched accordingly (as in regex3)). +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 @@ -1467,7 +1482,7 @@ if there is a sequence of characters in the value consisting of any number, including zero, of space characters, zero or one instances of ‘a’, then a ‘b’:

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

That means values like ‘aab’ and ‘ aaaaaab’ will match, as @@ -1482,7 +1497,7 @@ expressions while paying attention to the shell’s quote removal. Using a shell variable to store the pattern decreases these problems. For example, the following is equivalent to the above:

-
pattern='[[:space:]]*(a)?b'
+
pattern='[[:space:]]*?(a)b'
 [[ $line =~ $pattern ]]
 
@@ -1633,7 +1648,8 @@ This pipe is established before any redirections specified by the command (see Redirections). The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. -The file descriptors are not available in subshells. +Other than those created to execute command and process substitutions, +the file descriptors are not available in subshells.

The process ID of the shell spawned to execute the coprocess is available as the value of the variable NAME_PID. @@ -1710,7 +1726,8 @@ from a file (in this case, filenames listed one per line):

with a more compact syntax reminiscent of lambdas:

-
cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | process-output
+
cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" |
+           process-output
 

Parallel provides a built-in mechanism to remove filename extensions, which @@ -1732,19 +1749,27 @@ written as

If a command generates output, you may want to preserve the input order in the output. For instance, the following command

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

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

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

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

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

@@ -1865,7 +1890,66 @@ before the return.

Variables local to the function may be declared with the local builtin. These variables are visible only to -the function and the commands it invokes. +the function and the commands it invokes. This is particularly +important when a shell function calls other functions. +

+

Local variables "shadow" variables with the same name declared at +previous scopes. For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. +

+

The shell uses dynamic scoping to control a variable’s visibility +within functions. +With dynamic scoping, visible variables and their values +are a result of the sequence of function calls that caused execution +to reach the current function. +The value of a variable that a function sees depends +on its value within its caller, if any, whether that caller is +the "global" scope or another shell function. +This is also the value that a local variable +declaration "shadows", and the value that is restored when the function +returns. +

+

For example, if a variable var is declared as local in function +func1, and func1 calls another function func2, +references to var made from within func2 will resolve to the +local variable var from func1, shadowing any global variable +named var. +

+

The following script demonstrates this behavior. +When executed, the script displays +

+
+
In func2, var = func1 local
+
+ +
+
func1()
+{
+    local var='func1 local'
+    func2
+}
+
+func2()
+{
+    echo "In func2, var = $var"
+}
+
+var=global
+func1
+
+ +

The unset builtin also acts using the same dynamic scope: if a +variable is local to the current scope, unset will unset it; +otherwise the unset will refer to the variable found in any calling scope +as described above. +If a variable at the current local scope is unset, it will remain so +until it is reset in that scope or until the function returns. +Once the function returns, any instance of the variable at a previous +scope will become visible. +If the unset acts on a variable at a previous scope, any instance of a +variable with that name that had been shadowed will become visible.

Function names and definitions may be listed with the -f option to the declare (typeset) @@ -1878,10 +1962,6 @@ Functions may be exported so that subshells automatically have them defined with the -f option to the export builtin (see Bourne Shell Builtins). -Note that shell functions and variables with the same name may result -in multiple identically-named entries in the environment passed to the -shell’s children. -Care should be taken in cases where this may cause a problem.

Functions may be recursive. The FUNCNEST variable may be used to limit the depth of the @@ -2059,8 +2139,16 @@ separators.

-

($@) 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, "$@" is equivalent to "$1" "$2" …. If the double-quoted expansion occurs within a word, the expansion of @@ -2135,8 +2223,8 @@ to the filename used to invoke Bash, as given by argument zero. At shell startup, set to the absolute pathname used to invoke the shell or shell script being executed as passed in the environment or argument list. -Subsequently, expands to the last argument to the previous command, -after expansion. +Subsequently, expands to the last argument to the previous simple +command executed in the foreground, after expansion. Also set to the full pathname used to invoke each command executed and placed in the environment exported to that command. When checking mail, this parameter holds the name of the mail file. @@ -2208,10 +2296,11 @@ original word are removed unless they have been quoted themselves (quote removal).

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

After all expansions, quote removal (see Quote Removal) @@ -2271,8 +2360,6 @@ and any characters special to other expansions are preserved in the result. It is strictly textual. Bash does not apply any syntactic interpretation to the context of the expansion or the text between the braces. -To avoid conflicts with parameter expansion, the string ‘${’ -is not considered eligible for brace expansion.

A correctly-formed brace expansion must contain unquoted opening and closing braces, and at least one unquoted comma or a valid @@ -2282,7 +2369,8 @@ Any incorrectly formed brace expansion is left unchanged.

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

This construct is typically used as shorthand when the common prefix of the strings to be generated is longer than in the @@ -2379,6 +2467,12 @@ and the shell assigns the expanded value.

+

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


@@ -2413,12 +2507,14 @@ 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. +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. @@ -2647,8 +2743,8 @@ array, and an index of -1 references the last element.

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

The word -is expanded to produce a pattern just as in filename -expansion (see Filename Expansion). If the pattern matches +is expanded to produce a pattern and matched according to the rules +described below (see Pattern Matching). If the pattern matches the beginning of the expanded value of parameter, then the result of the expansion is the expanded value of parameter with the shortest matching pattern (the ‘#’ case) or the @@ -2664,8 +2760,9 @@ array in turn, and the expansion is the resultant list.

${parameter%word}
${parameter%%word}
-

The word is expanded to produce a pattern just as in -filename expansion. +

The word +is expanded to produce a pattern and matched according to the rules +described below (see Pattern Matching). If the pattern matches If the pattern matches a trailing portion of the expanded value of parameter, then the result of the expansion is the value of parameter with the shortest matching pattern (the ‘%’ case) @@ -2685,6 +2782,8 @@ array in turn, and the expansion is the resultant list. filename expansion. Parameter is expanded and the longest match of pattern against its value is replaced with string. +The match is performed according to the rules described below +(see Pattern Matching). If pattern begins with ‘/’, all matches of pattern are replaced with string. Normally only the first match is replaced. If pattern begins with ‘#’, it must match at the beginning @@ -2745,7 +2844,7 @@ format that can be reused as input.

E

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

P

The expansion is a string that is the result of expanding the value of @@ -2974,18 +3073,23 @@ without regard to the case of alphabetic characters.

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

+

When matching a filename, the slash character must always be +matched explicitly by a slash in the pattern, but in other matching +contexts it can be matched by a special pattern character as described +below (see Pattern Matching). +

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

The GLOBIGNORE -shell variable may be used to restrict the set of filenames matching a +shell variable may be used to restrict the set of file names matching a pattern. If GLOBIGNORE -is set, each matching filename that also matches one of the patterns in +is set, each matching file name that also matches one of the patterns in GLOBIGNORE is removed from the list of matches. If the nocaseglob option is set, the matching against the patterns in GLOBIGNORE is performed without regard to case. @@ -3110,6 +3214,12 @@ sub-patterns:

+

Complicated extended pattern matching against long strings is slow, +especially when the patterns contain alternations and the strings +contain multiple matches. +Using separate matches against shorter strings, or using arrays of +strings instead of a single long string, may be faster. +


@@ -3154,6 +3264,9 @@ In this case, for each redirection operator except than 10 and assign it to {varname}. If >&- or <&- is preceded by {varname}, the value of varname defines the file descriptor to close. +If {varname} is supplied, the redirection persists beyond +the scope of the command, allowing the shell programmer to manage +the file descriptor himself.

In the following descriptions, if the file descriptor number is omitted, and the first character of the redirection operator is @@ -3358,7 +3471,7 @@ natural fashion.

The word undergoes -brace expansion, tilde expansion, parameter and variable expansion, +tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote removal. Pathname expansion and word splitting are not performed. The result is supplied as a single string, @@ -3534,9 +3647,10 @@ A full search of the directories in $PATH is performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named command_not_found_handle. -If that function exists, it is invoked with the original command and +If that function exists, it is invoked in a separate execution environment +with the original command and the original command’s arguments as its arguments, and the function’s -exit status becomes the exit status of the shell. +exit status becomes the exit status of that subshell. If that function is not defined, the shell prints an error message and returns an exit status of 127. @@ -3894,7 +4008,7 @@ facilities (see Programmable Complet

Unless otherwise noted, each builtin command documented as accepting options preceded by ‘-’ accepts ‘--’ to signify the end of the options. -The :, true, false, and test +The :, true, false, and test/[ builtins do not accept options and do not treat ‘--’ specially. The exit, logout, return, break, continue, let, @@ -4061,6 +4175,7 @@ cannot be executed for some reason, a non-interactive shell exits, unless the execfail shell option is enabled. In that case, it returns failure. An interactive shell returns failure if the file cannot be executed. +A subshell exits unconditionally if exec fails. If no command is specified, redirections may be used to affect the current shell environment. If there are no redirection errors, the return status is zero; otherwise the return status is non-zero. @@ -4173,7 +4288,7 @@ The -d option causes the shell to forget the remembered location of each name. If the -t option is supplied, the full pathname to which each name corresponds is printed. If multiple name arguments are -supplied with -t the name is printed before the hashed +supplied with -t, the name is printed before the hashed full pathname. The -l option causes output to be displayed in a format that may be reused as input. @@ -4238,7 +4353,7 @@ If n is not supplied, the return value is the exit status of the last command executed in the function. If return is executed by a trap handler, the last command used to determine the status is the last command executed before the trap handler. -if return is executed during a DEBUG trap, the last command +If return is executed during a DEBUG trap, the last command used to determine the status is the last command executed by the trap handler before return was invoked. return may also be used to terminate execution of a script @@ -4326,7 +4441,7 @@ expressions using a set of rules based on the number of arguments.

1 argument
-

The expression is true if and only if the argument is not null. +

The expression is true if, and only if, the argument is not null.

2 arguments
@@ -4341,19 +4456,22 @@ false.
3 arguments

The following conditions are applied in the order listed. -If the second argument is one of the binary conditional +

+
    +
  1. If the second argument is one of the binary conditional operators (see Bash Conditional Expressions), the result of the expression is the result of the binary test using the first and third arguments as operands. The ‘-a’ and ‘-o’ operators are considered binary operators when there are three arguments. -If the first argument is ‘!’, the value is the negation of +
  2. 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 +
  3. If the first argument is exactly ‘(’ and the third argument is exactly ‘)’, the result is the one-argument test of the second argument. -Otherwise, the expression is false. -

    +
  4. Otherwise, the expression is false. +
+
4 arguments

If the first argument is ‘!’, the result is the negation of @@ -4787,8 +4905,8 @@ the environment.

Using ‘+’ instead of ‘-’ turns off the attribute instead, -with the exceptions that ‘+a’ -may not be used to destroy an array variable and ‘+r’ will not +with the exceptions that ‘+a’ and ‘+A’ +may not be used to destroy array variables and ‘+r’ will not remove the readonly attribute. When used in a function, declare makes each name local, as with the local command, unless the -g option is used. @@ -4990,8 +5108,8 @@ 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, @@ -5004,6 +5122,8 @@ Options, if supplied, have the following meanings:

-d

The first character of delim is used to terminate each input line, rather than newline. +If delim is the empty string, mapfile will terminate a line +when it reads a NUL character.

-n

Copy at most count lines. If count is 0, all lines are copied. @@ -5022,7 +5142,7 @@ The default index is 0.

Read lines from file descriptor fd instead of the standard input.

-C
-

Evaluate callback each time quantumP lines are read. +

Evaluate callback each time quantum lines are read. The -c option specifies quantum.

-c
@@ -5142,12 +5262,14 @@ Other name arguments are ignored.
-d delim

The first character of delim is used to terminate the input line, rather than newline. +If delim is the empty string, read will terminate a line +when it reads a NUL character.

-e

Readline (see Command Line Editing) is used to obtain the line. Readline uses the current (or default, if line editing was not previously -active) editing settings. +active) editing settings, but uses Readline’s default filename completion.

-i text
@@ -5182,7 +5304,7 @@ The prompt is displayed only if input is coming from a terminal.
-r

If this option is given, backslash does not act as an escape character. The backslash is considered to be part of the line. -In particular, a backslash-newline pair may not be used as a line +In particular, a backslash-newline pair may not then be used as a line continuation.

@@ -5217,8 +5339,8 @@ The exit status is greater than 128 if the timeout is exceeded.
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, @@ -5816,7 +5938,8 @@ The settings can be either those listed below, or, if the -o option is used, those available with the -o option to the set builtin command (see The Set Builtin). With no options, or with the -p option, a list of all settable -options is displayed, with an indication of whether or not each is set. +options is displayed, with an indication of whether or not each is set; +if optnames are supplied, the output is restricted to those options. The -p option causes output to be displayed in a form that may be reused as input. Other options have the following meanings: @@ -5859,6 +5982,13 @@ option.

The list of shopt options is:

+
assoc_expand_once
+

If set, the shell suppresses multiple evaluation of associative array +subscripts during arithmetic expression evaluation, while executing +builtins that can perform variable assignments, +and while executing builtins that perform array dereferencing. +

+
autocd

If set, a command name that is the name of a directory is executed as if it were the argument to the cd command. @@ -5896,9 +6026,10 @@ The shell always postpones exiting if any jobs are stopped.

checkwinsize
-

If set, Bash checks the window size after each command - and, if necessary, updates the values of +

If set, Bash checks the window size after each external (non-builtin) +command and, if necessary, updates the values of LINES and COLUMNS. +This option is enabled by default.

cmdhist
@@ -5906,6 +6037,8 @@ The shell always postpones exiting if any jobs are stopped. attempts to save all lines of a multiple-line command in the same history entry. This allows easy re-editing of multi-line commands. +This option is enabled by default, but only has an effect if command +history is enabled (see Bash History Facilities).

compat31
@@ -5966,6 +6099,12 @@ loop state when a shell function is executed (this allows break or continue in a shell function to affect loops in the caller’s context).

+
compat44
+

If set, Bash +saves the positional parameters to BASH_ARGV and BASH_ARGC before they are +used, regardless of whether or not extended debugging mode is enabled. +

+
complete_fullquote

If set, Bash quotes all shell metacharacters in filenames and directory names when @@ -6001,6 +6140,8 @@ if the directory name initially supplied does not exist.

dotglob

If set, Bash includes filenames beginning with a ‘.’ in the results of filename expansion. +The filenames ‘.’ and ‘..’ must always be matched explicitly, +even if dotglob is set.

execfail
@@ -6148,6 +6289,19 @@ option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible.

+
localvar_inherit
+

If set, local variables inherit the value and attributes of a variable of +the same name that exists at a previous scope before any new value is +assigned. The nameref attribute is not inherited. +

+
+
localvar_unset
+

If set, calling unset on local variables in previous function scopes +marks them so subsequent lookups find them unset until that function +returns. This is identical to the behavior of unsetting local variables +at the current function scope. +

+
login_shell

The shell sets this option if it is started as a login shell (see Invoking Bash). @@ -6190,6 +6344,13 @@ files to expand to a null string, rather than themselves. This option is enabled by default.

+
progcomp_alias
+

If set, and programmable completion is enabled, Bash treats a command +name that doesn’t have any completions as a possible alias and attempts +alias expansion. If it has an alias, Bash attempts programmable +completion using the command word resulting from the expanded alias. +

+
promptvars

If set, prompt strings undergo parameter expansion, command substitution, arithmetic @@ -6378,6 +6539,8 @@ sequences that are expanded before PS1 is displayed.

The secondary prompt string. The default value is ‘> ’. +PS2 is expanded in the same way as PS1 before being +displayed.

@@ -6424,6 +6587,10 @@ reading any startup files. This variable is readonly.

Expands to the process ID of the current Bash process. This differs from $$ under certain circumstances, such as subshells that do not require Bash to be re-initialized. +Assignments to BASHPID have no effect. +If BASHPID +is unset, it loses its special properties, even if it is +subsequently reset.

BASH_ALIASES @@ -6453,6 +6620,9 @@ The shell sets BASH_ARGC only when in extended debugging mode (see The Shopt Builtin for a description of the extdebug option to the shopt builtin). +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 @@ -6467,6 +6637,22 @@ The shell sets BASH_ARGV only when in extended debugging mode (see The Shopt Builtin for a description of the extdebug option to the shopt builtin). +Setting extdebug after the shell has started to execute a script, +or referencing this variable when extdebug is not set, +may result in inconsistent values. +

+ +
BASH_ARGV0 + +
+

When referenced, this variable expands to the name of the shell or shell +script (identical to $0; See Special Parameters, +for the description of special parameter 0). +Assignment to BASH_ARGV0 +causes the value assigned to also be assigned to $0. +If BASH_ARGV0 +is unset, it loses its special properties, even if it is +subsequently reset.

BASH_CMDS @@ -6770,6 +6956,29 @@ Emacs shell buffer and disables line editing. POSIX Mode (see Bash POSIX Mode).

+
EPOCHREALTIME + +
+

Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch as a floating point value with micro-second granularity +(see the documentation for the C library function time for the +definition of Epoch). +Assignments to EPOCHREALTIME are ignored. +If EPOCHREALTIME is unset, it loses its special properties, even if +it is subsequently reset. +

+
+
EPOCHSECONDS + +
+

Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see the documentation for the C library function +time for the definition of Epoch). +Assignments to EPOCHSECONDS are ignored. +If EPOCHSECONDS is unset, it loses its special properties, even if +it is subsequently reset. +

+
EUID
@@ -6847,9 +7056,9 @@ will cause the current command to abort.
GLOBIGNORE
-

A colon-separated list of patterns defining the set of filenames to +

A colon-separated list of patterns defining the set of file names to be ignored by filename expansion. -If a filename matched by a filename expansion pattern also matches one +If a file name matched by a filename expansion pattern also matches one of the patterns in GLOBIGNORE, it is removed from the list of matches. The pattern matching honors the setting of the extglob shell @@ -7019,7 +7228,7 @@ 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) then the default is 10. +have a numeric value, or has no value, then the default is 10. If the variable does not exist, then EOF signifies the end of input to the shell. This is only in effect for interactive shells.

@@ -7031,6 +7240,14 @@ input to the shell. This is only in effect for interactive shells. 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
@@ -7163,7 +7380,9 @@ 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 @@ -7208,10 +7427,11 @@ and before the command is executed.
PS4
-

The value is the prompt printed before the command line is echoed -when the -x option is set (see The Set Builtin). -The first character of PS4 is replicated multiple times, as -necessary, to indicate multiple levels of indirection. +

The value of this parameter is expanded like PS1 +and the expanded value is the prompt printed before the command line +is echoed when the -x option is set (see The Set Builtin). +The first character of the expanded value is replicated multiple times, +as necessary, to indicate multiple levels of indirection. The default is ‘+ ’.

@@ -7421,9 +7641,12 @@ Next:
  • Controlling the Prompt, for a complete list of prompt +string escape sequences.
  • Bash executes the value of the PROMPT_COMMAND variable as a command before printing the primary prompt, $PS1 @@ -7848,7 +8075,7 @@ when a shell with history enabled exits. (see Signals).
  • In the absence of any traps, SIGINT is caught and handled -((see Signals). +(see Signals). SIGINT will interrupt some shell builtins.
  • An interactive login shell sends a SIGHUP to all jobs on exit @@ -7901,9 +8128,13 @@ Next: ,

    Conditional expressions are used by the [[ compound command -and the test and [ builtin commands. +and the test and [ builtin commands. The test +and [ commands determine their behavior based on the number +of arguments; see the descriptions of those commands for any other +command-specific actions.

    -

    Expressions may be unary or binary. +

    Expressions may be unary or binary, +and are formed from the following primaries. Unary expressions are often used to examine the status of a file. There are string operators and numeric comparison operators as well. Bash handles several filenames specially when they are used in @@ -8076,6 +8307,8 @@ is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to arg2, respectively. Arg1 and arg2 may be positive or negative integers. +When used with the [[ command, Arg1 and Arg2 +are evaluated as arithmetic expressions (see Shell Arithmetic).

    @@ -8255,10 +8488,11 @@ unless the expand_aliases shell option is set using shopt (see The Shopt Builtin).

    The rules concerning the definition and use of aliases are -somewhat confusing. Bash -always reads at least one complete line -of input before executing any -of the commands on that line. Aliases are expanded when a +somewhat confusing. Bash +always reads at least one complete line of input, +and all lines that make up a compound command, +before executing any of the commands on that line or the compound command. +Aliases are expanded when a command is read, not when it is executed. Therefore, an alias definition appearing on the same line as another command does not take effect until the next line of input is read. @@ -8396,12 +8630,16 @@ special parameters ‘@’ and ‘*unset name[subscript] destroys the array element at index subscript. Negative subscripts to indexed arrays are interpreted as described above. -Care must be taken to avoid unwanted side effects caused by filename -expansion. +Unsetting the last element of an array variable does not unset the variable. unset name, where name is an array, removes the entire array. A subscript of ‘*’ or ‘@’ also removes the entire array.

    +

    When using a variable name with a subscript as an argument to a command, +such as with unset, without using the word expansion syntax +described above, the argument is subject to the shell’s filename expansion. +If filename expansion is not desired, the argument should be quoted. +

    The declare, local, and readonly builtins each accept a -a option to specify an indexed array and a -A option to specify an associative array. @@ -8569,7 +8807,8 @@ has a non-null value, then the value is executed just as if it had been typed on the command line.

    In addition, the following table describes the special characters which -can appear in the prompt variables PS1 to PS4: +can appear in the prompt variables PS0, PS1, PS2, and +PS4:

    \a
    @@ -8670,7 +8909,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 -promptvars shell option (see Bash Builtins). +promptvars shell option (see The Shopt Builtin).


    @@ -8740,7 +8979,9 @@ startup files.

    The following list is what’s changed when ‘POSIX mode’ is in effect:

      -
    1. When a command in the hash table no longer exists, Bash will re-search +
    2. Bash ensures that the POSIXLY_CORRECT variable is set. + +
    3. 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’. @@ -8897,6 +9138,11 @@ the -e option from the parent shell. When the inherit_errexit option is not enabled, Bash clears the -e option in such subshells. +
    4. Enabling POSIX mode has the effect of setting the +shift_verbose option, so numeric arguments to shift +that exceed the number of positional parameters will result in an +error message. +
    5. When the alias builtin displays alias definitions, it does not display them with a leading ‘alias ’ unless the -p option is supplied. @@ -8913,6 +9159,12 @@ constructed from $PWD and the directory name supplied as an argumen does not refer to an existing directory, cd will fail instead of falling back to physical mode. +
    6. When the cd builtin cannot change a directory because the +length of the pathname +constructed from $PWD and the directory name supplied as an argument +exceeds PATH_MAX when all symbolic links are expanded, cd will +fail instead of attempting to use only the supplied directory name. +
    7. 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. @@ -9102,6 +9354,11 @@ The jobs command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, Bash does not print another warning, and any stopped jobs are terminated.

      +

      When the shell is waiting for a job or process using the wait +builtin, and job control is enabled, wait will return when the +job changes state. The -f option will force wait to wait +until the job or process terminates before returning. +


      @@ -9212,7 +9469,7 @@ or non-zero if an error occurs or an invalid option is encountered.
      wait
      -
      wait [-n] [jobspec or pid …]
      +
      wait [-fn] [jobspec or pid …]
       

      Wait until the child process specified by each process ID pid @@ -9223,6 +9480,9 @@ If no arguments are given, all currently active child processes are waited for, and the return status is zero. If the -n option is supplied, wait waits for any job to terminate and returns its exit status. +If the -f option is supplied, and job control is enabled, +wait forces each pid or jobspec to terminate before +returning its status, intead of returning when it changes status. If neither jobspec nor pid specifies an active child process of the shell, the return status is 127.

      @@ -9823,6 +10083,7 @@ The default value is ‘off’.

      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. +The default value is ‘off’.

      completion-prefix-display-length
      @@ -9879,7 +10140,8 @@ set to either ‘emacs’ or ‘vi’.
      emacs-mode-string
      -

      This string is displayed immediately before the last line of the primary +

      If the show-mode-in-prompt variable is enabled, +this string is displayed immediately before the last line of the primary prompt when emacs editing mode is active. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. @@ -9969,7 +10231,7 @@ If this variable has not been given a value, the characters ESC<

      keymap

      Sets Readline’s idea of the current keymap for key binding commands. -Acceptable keymap names are +Built-in keymap names are emacs, emacs-standard, emacs-meta, @@ -9980,6 +10242,7 @@ Acceptable keymap names are vi-insert. vi is equivalent to vi-command (vi-move is also a synonym); emacs is equivalent to emacs-standard. +Applications may add additional names. The default value is emacs. The value of the editing-mode variable also affects the default keymap. @@ -10092,9 +10355,9 @@ The default value is ‘off’.

      show-mode-in-prompt
      -

      If set to ‘on’, add a character to the beginning of the prompt +

      If set to ‘on’, add a string to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi insertion. -The mode strings are user-settable. +The mode strings are user-settable (e.g., emacs-mode-string). The default value is ‘off’.

      @@ -10115,7 +10378,8 @@ The default value is ‘off’.
      vi-cmd-mode-string
      -

      This string is displayed immediately before the last line of the primary +

      If the show-mode-in-prompt variable is enabled, +this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and @@ -10128,7 +10392,8 @@ The default is ‘(cmd)’.

      vi-ins-mode-string
      -

      This string is displayed immediately before the last line of the primary +

      If the show-mode-in-prompt variable is enabled, +this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and @@ -10181,7 +10446,7 @@ 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 @@ -10321,8 +10586,9 @@ of tests. There are four parser directives used.

      $if

      The $if construct allows bindings to be made based on the editing mode, the terminal being used, or the application using -Readline. The text of the test extends to the end of the line; -no characters are required to isolate it. +Readline. The text of the test, after any comparison operator, +extends to the end of the line; +unless otherwise noted, no characters are required to isolate it.

      mode
      @@ -10343,6 +10609,28 @@ the portion of the terminal name before the first ‘-’. allows sun to match both sun and sun-cmd, for instance.

      +
      +
      version
      +

      The version test may be used to perform comparisons against +specific Readline versions. +The version expands to the current Readline version. +The set of comparison operators includes +‘=’ (and ‘==’), ‘!=’, ‘<=’, ‘>=’, ‘<’, +and ‘>’. +The version number supplied on the right side of the operator consists +of a major version number, an optional decimal point, and an optional +minor version (e.g., ‘7.1’). If the minor version is omitted, it +is assumed to be ‘0’. +The operator may be separated from the string version and +from the version number argument by whitespace. +The following example sets a variable if the Readline version being used +is 7.0 or newer: +

      +
      $if version >= 7.0
      +set show-mode-in-prompt on
      +$endif
      +
      +
      application

      The application construct is used to include @@ -10358,6 +10646,24 @@ key sequence that quotes the current or previous word in Bash: "\C-xq": "\eb\"\ef\"" $endif

  • + + +
    variable
    +

    The variable construct provides simple equality tests for Readline +variables and values. +The permitted comparison operators are ‘=’, ‘==’, and ‘!=’. +The variable name must be separated from the comparison operator by +whitespace; the operator may be separated from the value on the right hand +side by whitespace. +Both string and boolean variables may be tested. Boolean variables must be +tested against the values on and off. +The following example is equivalent to the mode=emacs test described +above: +

    +
    $if editing-mode == emacs
    +set show-mode-in-prompt on
    +$endif
    +
    @@ -10597,6 +10903,25 @@ Words are delimited by non-quoted shell metacharacters. Words are delimited by non-quoted shell metacharacters.

    +
    previous-screen-line () + +
    +

    Attempt to move point to the same physical screen column on the previous +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if point is not +greater than the length of the prompt plus the screen width. +

    +
    +
    next-screen-line () + +
    +

    Attempt to move point to the same physical screen column on the next +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if the length +of the current Readline line is not greater than the length of the prompt +plus the screen width. +

    +
    clear-screen (C-l)
    @@ -10710,8 +11035,8 @@ This is a non-incremental search. By default, this command is unbound.

    -
    history-substr-search-forward () - +
    history-substring-search-forward () +

    Search forward through the history for the string of characters between the start of the current line and the point. @@ -10720,8 +11045,8 @@ This is a non-incremental search. By default, this command is unbound.

    -
    history-substr-search-backward () - +
    history-substring-search-backward () +

    Search backward through the history for the string of characters between the start of the current line and the point. @@ -10824,7 +11149,7 @@ how to insert key sequences like C-q, for example. sequence sent by some terminals, and such a binding is assigned by default. It allows Readline to insert the pasted text as a single unit without treating each character as if it had been read from the keyboard. The characters -are inserted as if each one was bound to self-insert) instead of +are inserted as if each one was bound to self-insert instead of executing any editing commands.

    @@ -11285,11 +11610,12 @@ ring the terminal’s bell (subject to the setting of bell-style).

    -
    do-uppercase-version (M-a, M-b, M-x, …) - +
    do-lowercase-version (M-A, M-B, M-x, …) +
    -

    If the metafied character x is lowercase, run the command -that is bound to the corresponding uppercase character. +

    If the metafied character x is upper case, run the command +that is bound to the corresponding metafied lower case character. +The behavior is undefined if x is already lower case.

    prefix-meta (ESC) @@ -11479,12 +11805,13 @@ word expansions (see Shell Expansions).

    Accept the current line for execution and fetch the next line -relative to the current line from the history for editing. Any -argument is ignored. +relative to the current line from the history for editing. +A numeric argument, if supplied, specifies the history entry to use instead +of the current line.

    -
    edit-and-execute-command (C-xC-e) - +
    edit-and-execute-command (C-x C-e) +

    Invoke an editor on the current command line, and execute the result as shell commands. @@ -11550,6 +11877,9 @@ If no compspec is found for the full pathname, an attempt is made to find a compspec for the portion following the final slash. If those searches do not result in a compspec, any compspec defined with the -D option to complete is used as the default. +If there is no default compspec, Bash attempts alias expansion +on the command word as a final resort, and attempts to find a compspec +for the command word from any successful expansion

    Once a compspec has been found, it is used to generate the list of matching words. @@ -11574,7 +11904,9 @@ but the FIGNORE shell variable is used. is considered. The string is first split using the characters in the IFS special variable as delimiters. -Shell quoting is honored. +Shell quoting is honored within the string, in order to provide a +mechanism for the words to contain shell metacharacters or characters +in the value of IFS. Each word is then expanded using brace expansion, tilde expansion, parameter and variable expansion, command substitution, and arithmetic expansion, @@ -11725,10 +12057,10 @@ matches were generated.

    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. @@ -11738,16 +12070,24 @@ 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 (see Programmable Completion). The --D option takes precedence over -E. +is attempted is described above (see Programmable Completion).

    Other options, if specified, have the following meanings. The arguments to the -G, -W, and -X options @@ -11779,7 +12119,7 @@ no matches.

    filenames

    Tell Readline that the compspec generates filenames, so it can perform any -filename-specific processing (like adding a slash to directory names +filename-specific processing (like adding a slash to directory names, quoting special characters, or suppressing trailing spaces). This option is intended to be used with shell functions specified with -F. @@ -11973,7 +12313,7 @@ an error occurs adding a 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 @@ -11982,14 +12322,19 @@ 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 -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 completion @@ -12013,7 +12358,7 @@ a shell function and bind it to a particular command using complete -F

    The following function provides completions for the cd builtin. It is a reasonably good example of what shell functions must do when -used for completion. This function uses the word passsed as $2 +used for completion. This function uses the word passed as $2 to determine the directory name to complete. You can also use the COMP_WORDS array variable; the current word is indexed by the COMP_CWORD variable. @@ -12043,7 +12388,7 @@ _comp_cd() local cur _skipdot _cdpath local i j k - # Tilde expansion, with side effect of expanding tilde to full pathname + # Tilde expansion, which also expands tilde to full pathname case "$2" in \~*) eval cur="$2" ;; *) cur=$2 ;; @@ -12220,7 +12565,7 @@ The lithist shell option causes the shell to save the command with embedded newlines instead of semicolons. The shopt builtin is used to set these options. -See Bash Builtins, for a description of shopt. +See The Shopt Builtin, for a description of shopt.


    @@ -12250,8 +12595,8 @@ Both first and last may be specified as a string (to locate the most recent command beginning with that string) or as a number (an index into the history list, where a negative number is used as an offset from the -current command number). If last is not specified it is set to -first. If first is not specified it is set to the previous +current command number). If last is not specified, it is set to +first. If first is not specified, it is set to the previous command for editing and -16 for listing. If the -l flag is given, the commands are listed on standard output. The -n flag suppresses the command numbers when listing. The -r flag @@ -12278,6 +12623,7 @@ and typing ‘r’ re-executes the last command (see history [n] history -c history -d offset +history -d start-end history [-anrw] [filename] history -ps arg @@ -12301,8 +12647,18 @@ with the other options to replace the history list completely.
    -d offset

    Delete the history entry at position offset. -offset should be specified as it appears when the history is -displayed. +If offset is positive, it should be specified as it appears when +the history is displayed. +If offset is negative, it is interpreted as relative to one greater +than the last history position, so negative indices count back from the +end of the history, and an index of ‘-1’ refers to the current +history -d command. +

    +
    +
    -d start-end
    +

    Delete the history entries between positions start and end, +inclusive. Positive and negative values for start and end +are interpreted as described above.

    -a
    @@ -12366,7 +12722,9 @@ arguments to a previous command into the current input line, or fix errors in previous commands quickly.

    History expansion is performed immediately after a complete line -is read, before the shell breaks it into words. +is read, before the shell breaks it into words, and is performed +on each line individually. Bash attempts to inform the history +expansion functions about quoting still in effect from previous lines.

    History expansion takes place in two parts. The first is to determine which line from the history list should be used during substitution. @@ -12379,13 +12737,23 @@ that Bash does, so that several words surrounded by quotes are considered one word. History expansions are introduced by the appearance of the history expansion character, which is ‘!’ by default. -Only ‘\’ and ‘'’ may be used to escape the history expansion -character, but the history expansion character is +

    +

    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 (see Bash Builtins) may be used to tailor +builtin (see The Shopt Builtin) may be used to tailor the behavior of history expansion. If the histverify shell option is enabled, and Readline is being used, history substitutions are not immediately passed to @@ -12728,11 +13096,27 @@ may remove or edit it. configure script understands, type

    -
    bash-2.04$ ./configure --help
    +
    bash-4.2$ ./configure --help
     

    at the Bash prompt in your Bash source directory.

    +

    If you want to build Bash in a directory separate from the source +directory – to build for multiple architectures, for example – +just use the full path to the configure script. The following commands +will build bash in a directory under /usr/local/build from +the source code in /usr/local/src/bash-4.4: +

    +
    +
    mkdir /usr/local/build/bash-4.4
    +cd /usr/local/build/bash-4.4
    +bash /usr/local/src/bash-4.4/configure
    +make
    +
    + +

    See Compiling For Multiple Architectures for more information +about building in a directory separate from the source. +

    If you need to do unusual things to compile Bash, please try to figure out how configure could check whether or not to do them, and mail diffs or instructions to @@ -12794,7 +13178,9 @@ own directory. To do this, you must use a version of make that supports the VPATH variable, such as GNU make. cd to the directory where you want the object files and executables to go and run -the configure script from the source directory. You may need to +the configure script from the source directory +(see Basic Installation). +You may need to supply the --srcdir=PATH argument to tell configure where the source files are. configure automatically checks for the source code in the directory that configure is in and in ‘..’. @@ -13006,7 +13392,7 @@ compiled and linked, rather than changing run-time features.

    --enable-largefile
    -

    Enable support for large files if the operating system requires special compiler options +

    Enable support for large files if the operating system requires special compiler options to build programs which can access large files. This is enabled by default, if the operating system provides large file support.

    @@ -13097,6 +13483,13 @@ This allows pipelines as well as shell builtins and functions to be timed.

    Include support for the bash debugger (distributed separately).

    +
    --enable-dev-fd-stat-broken
    +

    If calling stat on /dev/fd/N returns different results than +calling fstat on file descriptor N, supply this option to +enable a workaround. +This has implications for conditional commands that test file attributes. +

    +
    --enable-direxpand-default

    Cause the direxpand shell option (see The Shopt Builtin) to be enabled by default when the shell starts. @@ -13184,7 +13577,7 @@ If Readline is not enabled, this option has no effect.

    --enable-prompt-string-decoding

    Turn on the interpretation of a number of backslash-escaped characters -in the $PS1, $PS2, $PS3, and $PS4 prompt +in the $PS0, $PS1, $PS2, and $PS4 prompt strings. See Controlling the Prompt, for a complete list of prompt string escape sequences.

    @@ -13692,7 +14085,7 @@ Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. -
      +
      1. PREAMBLE

        The purpose of this License is to make a manual, textbook, or other @@ -13868,7 +14261,7 @@ Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

        -
          +
          1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section @@ -14614,6 +15007,7 @@ Next: , Pre BASH_ALIASESBash Variables BASH_ARGCBash Variables BASH_ARGVBash Variables +BASH_ARGV0Bash Variables BASH_CMDSBash Variables BASH_COMMANDBash Variables BASH_COMPATBash Variables @@ -14666,6 +15060,8 @@ Next: , Pre enable-bracketed-pasteReadline Init File Syntax enable-keypadReadline Init File Syntax ENVBash Variables +EPOCHREALTIMEBash Variables +EPOCHSECONDSBash Variables EUIDBash Variables EXECIGNOREBash Variables expand-tildeReadline Init File Syntax @@ -14702,6 +15098,7 @@ Next: , Pre IGNOREEOFBash Variables input-metaReadline Init File Syntax INPUTRCBash Variables +INSIDE_EMACSBash Variables isearch-terminatorsReadline Init File Syntax
            K @@ -14937,7 +15334,7 @@ Next: , Previ delete-horizontal-space ()Commands For Killing digit-argument (M-0, M-1, … M--)Numeric Arguments display-shell-version (C-x C-v)Miscellaneous Commands -do-uppercase-version (M-a, M-b, M-x, …)Miscellaneous Commands +do-lowercase-version (M-A, M-B, M-x, …)Miscellaneous Commands downcase-word (M-l)Commands For Text dump-functions ()Miscellaneous Commands dump-macros ()Miscellaneous Commands @@ -14945,7 +15342,7 @@ Next: , Previ dynamic-complete-history (M-TAB)Commands For Completion
            E -edit-and-execute-command (C-xC-e)Miscellaneous Commands +edit-and-execute-command (C-x C-e)Miscellaneous Commands end-kbd-macro (C-x ))Keyboard Macros end-of-file (usually C-d)Commands For Text end-of-history (M->)Commands For History @@ -14968,8 +15365,8 @@ Next: , Previ history-expand-line (M-^)Miscellaneous Commands history-search-backward ()Commands For History history-search-forward ()Commands For History -history-substr-search-backward ()Commands For History -history-substr-search-forward ()Commands For History +history-substring-search-backward ()Commands For History +history-substring-search-forward ()Commands For History
            I insert-comment (M-#)Miscellaneous Commands @@ -14989,6 +15386,7 @@ Next: , Previ
            N next-history (C-n)Commands For History +next-screen-line ()Commands For Moving non-incremental-forward-search-history (M-n)Commands For History non-incremental-reverse-search-history (M-p)Commands For History
            @@ -15005,6 +15403,7 @@ Next: , Previ possible-variable-completions (C-x $)Commands For Completion prefix-meta (ESC)Miscellaneous Commands previous-history (C-p)Commands For History +previous-screen-line ()Commands For Moving print-last-kbd-macro ()Keyboard Macros
            Q diff --git a/doc/bashref.info b/doc/bashref.info index 28b061096..934c9feb2 100644 --- a/doc/bashref.info +++ b/doc/bashref.info @@ -1,13 +1,13 @@ -This is bashref.info, produced by makeinfo version 6.1 from +This is bashref.info, produced by makeinfo version 6.5 from bashref.texi. This text is a brief description of the features that are present in the -Bash shell (version 4.4, 7 September 2016). +Bash shell (version 5.0, 7 December 2018). - This is Edition 4.4, last updated 7 September 2016, of 'The GNU Bash -Reference Manual', for 'Bash', Version 4.4. + This is Edition 5.0, last updated 7 December 2018, of 'The GNU Bash +Reference Manual', for 'Bash', Version 5.0. - Copyright (C) 1988-2016 Free Software Foundation, Inc. + Copyright (C) 1988-2018 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -27,11 +27,11 @@ Bash Features ************* This text is a brief description of the features that are present in the -Bash shell (version 4.4, 7 September 2016). The Bash home page is +Bash shell (version 5.0, 7 December 2018). The Bash home page is . - This is Edition 4.4, last updated 7 September 2016, of 'The GNU Bash -Reference Manual', for 'Bash', Version 4.4. + This is Edition 5.0, last updated 7 December 2018, of 'The GNU Bash +Reference Manual', for 'Bash', Version 5.0. Bash contains features that appear in other popular shells, and some features that only appear in Bash. Some of the shells that Bash has @@ -451,7 +451,7 @@ decoded as follows: question mark '\NNN' the eight-bit character whose value is the octal value NNN (one to - three digits) + three octal digits) '\xHH' the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) @@ -586,16 +586,20 @@ information. If the pipeline is not executed asynchronously (*note Lists::), the shell waits for all commands in the pipeline to complete. - Each command in a pipeline is executed in its own subshell (*note -Command Execution Environment::). The exit status of a pipeline is the -exit status of the last command in the pipeline, unless the 'pipefail' -option is enabled (*note The Set Builtin::). If 'pipefail' is enabled, -the pipeline's return status is the value of the last (rightmost) -command to exit with a non-zero status, or zero if all commands exit -successfully. If the reserved word '!' precedes the pipeline, the exit -status is the logical negation of the exit status as described above. -The shell waits for all commands in the pipeline to terminate before -returning a value. + Each command in a pipeline is executed in its own subshell, which is +a separate process (*note Command Execution Environment::). If the +'lastpipe' option is enabled using the 'shopt' builtin (*note The Shopt +Builtin::), the last element of a pipeline may be run by the shell +process. + + The exit status of a pipeline is the exit status of the last command +in the pipeline, unless the 'pipefail' option is enabled (*note The Set +Builtin::). If 'pipefail' is enabled, the pipeline's return status is +the value of the last (rightmost) command to exit with a non-zero +status, or zero if all commands exit successfully. If the reserved word +'!' precedes the pipeline, the exit status is the logical negation of +the exit status as described above. The shell waits for all commands in +the pipeline to terminate before returning a value.  File: bashref.info, Node: Lists, Next: Compound Commands, Prev: Pipelines, Up: Shell Commands @@ -615,11 +619,12 @@ commands, equivalent to a semicolon. If a command is terminated by the control operator '&', the shell executes the command asynchronously in a subshell. This is known as -executing the command in the BACKGROUND. The shell does not wait for -the command to finish, and the return status is 0 (true). When job -control is not active (*note Job Control::), the standard input for -asynchronous commands, in the absence of any explicit redirections, is -redirected from '/dev/null'. +executing the command in the BACKGROUND, and these are referred to as +ASYNCHRONOUS commands. The shell does not wait for the command to +finish, and the return status is 0 (true). When job control is not +active (*note Job Control::), the standard input for asynchronous +commands, in the absence of any explicit redirections, is redirected +from '/dev/null'. Commands separated by a ';' are executed sequentially; the shell waits for each command to terminate in turn. The return status is the @@ -633,7 +638,7 @@ executed with left associativity. COMMAND1 && COMMAND2 COMMAND2 is executed if, and only if, COMMAND1 returns an exit status of -zero. +zero (success). An OR list has the form COMMAND1 || COMMAND2 @@ -656,11 +661,12 @@ File: bashref.info, Node: Compound Commands, Next: Coprocesses, Prev: Lists, * Conditional Constructs:: Shell commands for conditional execution. * Command Grouping:: Ways to group commands. -Compound commands are the shell programming constructs. Each construct -begins with a reserved word or control operator and is terminated by a -corresponding reserved word or operator. Any redirections (*note -Redirections::) associated with a compound command apply to all commands -within that compound command unless explicitly overridden. +Compound commands are the shell programming language constructs. Each +construct begins with a reserved word or control operator and is +terminated by a corresponding reserved word or operator. Any +redirections (*note Redirections::) associated with a compound command +apply to all commands within that compound command unless explicitly +overridden. In most cases a list of commands in a compound command's description may be separated from the rest of the command by one or more newlines, @@ -705,14 +711,16 @@ syntax, it may be replaced with one or more newlines. for NAME [ [in [WORDS ...] ] ; ] do COMMANDS; done - Expand WORDS, and execute COMMANDS once for each member in the - resultant list, with NAME bound to the current member. If 'in - WORDS' is not present, the 'for' command executes the COMMANDS once - for each positional parameter that is set, as if 'in "$@"' had been - specified (*note Special Parameters::). The return status is the - exit status of the last command that executes. If there are no - items in the expansion of WORDS, no commands are executed, and the - return status is zero. + Expand WORDS (*note Shell Expansions::), and execute COMMANDS once + for each member in the resultant list, with NAME bound to the + current member. If 'in WORDS' is not present, the 'for' command + executes the COMMANDS once for each positional parameter that is + set, as if 'in "$@"' had been specified (*note Special + Parameters::). + + The return status is the exit status of the last command that + executes. If there are no items in the expansion of WORDS, no + commands are executed, and the return status is zero. An alternate form of the 'for' command is also supported: @@ -761,23 +769,26 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre 'case' The syntax of the 'case' command is: - case WORD in [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]... esac + case WORD in + [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]... + esac 'case' will selectively execute the COMMAND-LIST corresponding to - the first PATTERN that matches WORD. If the 'nocasematch' shell - option (see the description of 'shopt' in *note The Shopt - Builtin::) is enabled, the match is performed without regard to the - case of alphabetic characters. The '|' is used to separate - multiple patterns, and the ')' operator terminates a pattern list. - A list of patterns and an associated command-list is known as a - CLAUSE. + the first PATTERN that matches WORD. The match is performed + according to the rules described below in *note Pattern Matching::. + If the 'nocasematch' shell option (see the description of 'shopt' + in *note The Shopt Builtin::) is enabled, the match is performed + without regard to the case of alphabetic characters. The '|' is + used to separate multiple patterns, and the ')' operator terminates + a pattern list. A list of patterns and an associated command-list + is known as a CLAUSE. Each clause must be terminated with ';;', ';&', or ';;&'. The WORD undergoes tilde expansion, parameter expansion, command - substitution, arithmetic expansion, and quote removal before - matching is attempted. Each PATTERN undergoes tilde expansion, - parameter expansion, command substitution, and arithmetic - expansion. + substitution, arithmetic expansion, and quote removal (*note Shell + Parameter Expansion::) before matching is attempted. Each PATTERN + undergoes tilde expansion, parameter expansion, command + substitution, and arithmetic expansion. There may be an arbitrary number of 'case' clauses, each terminated by a ';;', ';&', or ';;&'. The first pattern that matches @@ -875,36 +886,36 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre 'shopt' in *note The Shopt Builtin::) is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches ('==') or does not match - ('!=')the pattern, and 1 otherwise. Any part of the pattern may be - quoted to force the quoted portion to be matched as a string. + ('!=') the pattern, and 1 otherwise. Any part of the pattern may + be quoted to force the quoted portion to be matched as a string. An additional binary operator, '=~', is available, with the same precedence as '==' and '!='. When it is used, the string to the - right of the operator is considered an extended regular expression - and matched accordingly (as in regex3)). The return value is 0 if - the string matches the pattern, and 1 otherwise. If the regular - expression is syntactically incorrect, the conditional expression's - return value is 2. If the 'nocasematch' shell option (see the - description of 'shopt' in *note The Shopt Builtin::) is enabled, - the match is performed without regard to the case of alphabetic - characters. Any part of the pattern may be quoted to force the - quoted portion to be matched as a string. Bracket expressions in - regular expressions must be treated carefully, since normal quoting - characters lose their meanings between brackets. If the pattern is - stored in a shell variable, quoting the variable expansion forces - the entire pattern to be matched as a string. Substrings matched - by parenthesized subexpressions within the regular expression are - saved in the array variable 'BASH_REMATCH'. The element of - 'BASH_REMATCH' with index 0 is the portion of the string matching - the entire regular expression. The element of 'BASH_REMATCH' with - index N is the portion of the string matching the Nth parenthesized - subexpression. + right of the operator is considered a POSIX extended regular + expression and matched accordingly (as in regex3)). The return + value is 0 if the string matches the pattern, and 1 otherwise. If + the regular expression is syntactically incorrect, the conditional + expression's return value is 2. If the 'nocasematch' shell option + (see the description of 'shopt' in *note The Shopt Builtin::) is + enabled, the match is performed without regard to the case of + alphabetic characters. Any part of the pattern may be quoted to + force the quoted portion to be matched as a string. Bracket + expressions in regular expressions must be treated carefully, since + normal quoting characters lose their meanings between brackets. If + the pattern is stored in a shell variable, quoting the variable + expansion forces the entire pattern to be matched as a string. + Substrings matched by parenthesized subexpressions within the + regular expression are saved in the array variable 'BASH_REMATCH'. + The element of 'BASH_REMATCH' with index 0 is the portion of the + string matching the entire regular expression. The element of + 'BASH_REMATCH' with index N is the portion of the string matching + the Nth parenthesized subexpression. For example, the following will match a line (stored in the shell variable LINE) if there is a sequence of characters in the value consisting of any number, including zero, of space characters, zero or one instances of 'a', then a 'b': - [[ $line =~ [[:space:]]*(a)?b ]] + [[ $line =~ [[:space:]]*?(a)b ]] That means values like 'aab' and ' aaaaaab' will match, as will a line containing a 'b' anywhere in its value. @@ -917,7 +928,7 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre to the shell's quote removal. Using a shell variable to store the pattern decreases these problems. For example, the following is equivalent to the above: - pattern='[[:space:]]*(a)?b' + pattern='[[:space:]]*?(a)b' [[ $line =~ $pattern ]] If you want to match a character that's special to the regular @@ -1030,7 +1041,8 @@ a file descriptor in the executing shell, and that file descriptor is assigned to 'NAME'[1]. This pipe is established before any redirections specified by the command (*note Redirections::). The file descriptors can be utilized as arguments to shell commands and redirections using -standard word expansions. The file descriptors are not available in +standard word expansions. Other than those created to execute command +and process substitutions, the file descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is @@ -1094,7 +1106,8 @@ read from a file (in this case, filenames listed one per line): done < file | process-output with a more compact syntax reminiscent of lambdas: - cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | process-output + cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | + process-output Parallel provides a built-in mechanism to remove filename extensions, which lends itself to batch file transformations or renaming: @@ -1109,17 +1122,25 @@ take arguments from the command line; the above can also be written as If a command generates output, you may want to preserve the input order in the output. For instance, the following command - { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel traceroute + { + echo foss.org.my ; + echo debian.org ; + echo freenetproject.org ; + } | parallel traceroute will display as output the traceroute invocation that finishes first. Adding the '-k' option - { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel -k traceroute + { + echo foss.org.my ; + echo debian.org ; + echo freenetproject.org ; + } | parallel -k traceroute will ensure that the output of 'traceroute foss.org.my' is displayed first. Finally, Parallel can be used to run a sequence of shell commands in parallel, similar to 'cat file | bash'. It is not uncommon to take a list of filenames, create a series of shell commands to operate on them, -and feed that list of commnds to a shell. Parallel can speed this up. +and feed that list of commands to a shell. Parallel can speed this up. Assuming that 'file' contains a list of shell commands, one per line, parallel -j 10 < file @@ -1210,7 +1231,57 @@ last command executed before the 'return'. Variables local to the function may be declared with the 'local' builtin. These variables are visible only to the function and the -commands it invokes. +commands it invokes. This is particularly important when a shell +function calls other functions. + + Local variables "shadow" variables with the same name declared at +previous scopes. For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. + + The shell uses DYNAMIC SCOPING to control a variable's visibility +within functions. With dynamic scoping, visible variables and their +values are a result of the sequence of function calls that caused +execution to reach the current function. The value of a variable that a +function sees depends on its value within its caller, if any, whether +that caller is the "global" scope or another shell function. This is +also the value that a local variable declaration "shadows", and the +value that is restored when the function returns. + + For example, if a variable VAR is declared as local in function +FUNC1, and FUNC1 calls another function FUNC2, references to VAR made +from within FUNC2 will resolve to the local variable VAR from FUNC1, +shadowing any global variable named VAR. + + The following script demonstrates this behavior. When executed, the +script displays + + In func2, var = func1 local + + func1() + { + local var='func1 local' + func2 + } + + func2() + { + echo "In func2, var = $var" + } + + var=global + func1 + + The 'unset' builtin also acts using the same dynamic scope: if a +variable is local to the current scope, 'unset' will unset it; otherwise +the unset will refer to the variable found in any calling scope as +described above. If a variable at the current local scope is unset, it +will remain so until it is reset in that scope or until the function +returns. Once the function returns, any instance of the variable at a +previous scope will become visible. If the unset acts on a variable at +a previous scope, any instance of a variable with that name that had +been shadowed will become visible. Function names and definitions may be listed with the '-f' option to the 'declare' ('typeset') builtin command (*note Bash Builtins::). The @@ -1218,10 +1289,7 @@ the 'declare' ('typeset') builtin command (*note Bash Builtins::). The (and optionally the source file and line number, if the 'extdebug' shell option is enabled). Functions may be exported so that subshells automatically have them defined with the '-f' option to the 'export' -builtin (*note Bourne Shell Builtins::). Note that shell functions and -variables with the same name may result in multiple identically-named -entries in the environment passed to the shell's children. Care should -be taken in cases where this may cause a problem. +builtin (*note Bourne Shell Builtins::). Functions may be recursive. The 'FUNCNEST' variable may be used to limit the depth of the function call stack and restrict the number of @@ -1350,15 +1418,21 @@ only be referenced; assignment to them is not allowed. is null, the parameters are joined without intervening separators. '@' - ($@) Expands to the positional parameters, starting from one. When - the expansion occurs within double quotes, each parameter expands - to a separate word. That is, '"$@"' is equivalent to '"$1" "$2" - ...'. If the double-quoted expansion occurs within a word, the - expansion of the first parameter is joined with the beginning part - of the original word, and the expansion of the last parameter is - joined with the last part of the original word. When there are no - positional parameters, '"$@"' and '$@' expand to nothing (i.e., - they are removed). + ($@) Expands to the positional parameters, starting from one. In + contexts where word splitting is performed, this expands each + positional parameter to a separate word; if not within double + quotes, these words are subject to word splitting. In contexts + where word splitting is not performed, this expands to a single + word with each positional parameter separated by a space. When the + expansion occurs within double quotes, and word splitting is + performed, each parameter expands to a separate word. That is, + '"$@"' is equivalent to '"$1" "$2" ...'. If the double-quoted + expansion occurs within a word, the expansion of the first + parameter is joined with the beginning part of the original word, + and the expansion of the last parameter is joined with the last + part of the original word. When there are no positional + parameters, '"$@"' and '$@' expand to nothing (i.e., they are + removed). '#' ($#) Expands to the number of positional parameters in decimal. @@ -1395,10 +1469,11 @@ only be referenced; assignment to them is not allowed. ($_, an underscore.) At shell startup, set to the absolute pathname used to invoke the shell or shell script being executed as passed in the environment or argument list. Subsequently, expands - to the last argument to the previous command, after expansion. - Also set to the full pathname used to invoke each command executed - and placed in the environment exported to that command. When - checking mail, this parameter holds the name of the mail file. + to the last argument to the previous simple command executed in the + foreground, after expansion. Also set to the full pathname used to + invoke each command executed and placed in the environment exported + to that command. When checking mail, this parameter holds the name + of the mail file.  File: bashref.info, Node: Shell Expansions, Next: Redirections, Prev: Shell Parameters, Up: Basic Shell Features @@ -1447,10 +1522,10 @@ original word are removed unless they have been quoted themselves (QUOTE REMOVAL). Only brace expansion, word splitting, and filename expansion can -change the number of words of the expansion; other expansions expand a +increase the number of words of the expansion; other expansions expand a single word to a single word. The only exceptions to this are the -expansions of '"$@"' (*note Special Parameters::) and '"${NAME[@]}"' -(*note Arrays::). +expansions of '"$@"' and '$*' (*note Special Parameters::), and +'"${NAME[@]}"' and '${NAME[*]}' (*note Arrays::). After all expansions, 'quote removal' (*note Quote Removal::) is performed. @@ -1492,9 +1567,7 @@ each term. The default increment is 1 or -1 as appropriate. Brace expansion is performed before any other expansions, and any characters special to other expansions are preserved in the result. It is strictly textual. Bash does not apply any syntactic interpretation -to the context of the expansion or the text between the braces. To -avoid conflicts with parameter expansion, the string '${' is not -considered eligible for brace expansion. +to the context of the expansion or the text between the braces. A correctly-formed brace expansion must contain unquoted opening and closing braces, and at least one unquoted comma or a valid sequence @@ -1503,7 +1576,7 @@ expression. Any incorrectly formed brace expansion is left unchanged. A { or ',' may be quoted with a backslash to prevent its being considered part of a brace expression. To avoid conflicts with parameter expansion, the string '${' is not considered eligible for -brace expansion. +brace expansion, and inhibits brace expansion until the closing '}'.. This construct is typically used as shorthand when the common prefix of the strings to be generated is longer than in the above example: @@ -1574,6 +1647,11 @@ assigns the expanded value. '~-N' The string that would be displayed by 'dirs -N' + Bash also performs tilde expansion on words satisfying the conditions +of variable assignments (*note Shell Parameters::) when they appear as +arguments to simple commands. Bash does not do this, except for the +DECLARATION commands listed above, when in POSIX mode. +  File: bashref.info, Node: Shell Parameter Expansion, Next: Command Substitution, Prev: Tilde Expansion, Up: Shell Expansions @@ -1599,16 +1677,17 @@ parameter with more than one digit, or when PARAMETER is followed by a character that is not to be interpreted as part of its name. If the first character of PARAMETER is an exclamation point (!), and -PARAMETER is not a NAMEREF, it introduces a level of variable -indirection. Bash uses the value of the variable formed from the rest -of PARAMETER as the name of the variable; this variable is then expanded -and that value is used in the rest of the substitution, rather than the -value of PARAMETER itself. This is known as 'indirect expansion'. If -PARAMETER is a nameref, this expands to the name of the variable -referenced by PARAMETER instead of performing the complete indirect -expansion. The exceptions to this are the expansions of ${!PREFIX*} and -${!NAME[@]} described below. The exclamation point must immediately -follow the left brace in order to introduce indirection. +PARAMETER is not a NAMEREF, it introduces a level of indirection. Bash +uses the value formed by expanding the rest of PARAMETER as the new +PARAMETER; this is then expanded and that value is used in the rest of +the expansion, rather than the expansion of the original PARAMETER. +This is known as 'indirect expansion'. The value is subject to tilde +expansion, parameter expansion, command substitution, and arithmetic +expansion. If PARAMETER is a nameref, this expands to the name of the +variable referenced by PARAMETER instead of performing the complete +indirect expansion. The exceptions to this are the expansions of +${!PREFIX*} and ${!NAME[@]} described below. The exclamation point must +immediately follow the left brace in order to introduce indirection. In each of the cases below, WORD is subject to tilde expansion, parameter expansion, command substitution, and arithmetic expansion. @@ -1668,7 +1747,7 @@ omitted, the operator tests only for existence. $ echo ${string:7} 7890abcdefgh $ echo ${string:7:0} - + $ echo ${string:7:2} 78 $ echo ${string:7:-2} @@ -1676,7 +1755,7 @@ omitted, the operator tests only for existence. $ echo ${string: -7} bcdefgh $ echo ${string: -7:0} - + $ echo ${string: -7:2} bc $ echo ${string: -7:-2} @@ -1685,7 +1764,7 @@ omitted, the operator tests only for existence. $ echo ${1:7} 7890abcdefgh $ echo ${1:7:0} - + $ echo ${1:7:2} 78 $ echo ${1:7:-2} @@ -1693,7 +1772,7 @@ omitted, the operator tests only for existence. $ echo ${1: -7} bcdefgh $ echo ${1: -7:0} - + $ echo ${1: -7:2} bc $ echo ${1: -7:-2} @@ -1702,7 +1781,7 @@ omitted, the operator tests only for existence. $ echo ${array[0]:7} 7890abcdefgh $ echo ${array[0]:7:0} - + $ echo ${array[0]:7:2} 78 $ echo ${array[0]:7:-2} @@ -1710,7 +1789,7 @@ omitted, the operator tests only for existence. $ echo ${array[0]: -7} bcdefgh $ echo ${array[0]: -7:0} - + $ echo ${array[0]: -7:2} bc $ echo ${array[0]: -7:-2} @@ -1729,7 +1808,7 @@ omitted, the operator tests only for existence. $ echo ${@:7} 7 8 9 0 a b c d e f g h $ echo ${@:7:0} - + $ echo ${@:7:2} 7 8 $ echo ${@:7:-2} @@ -1741,7 +1820,7 @@ omitted, the operator tests only for existence. $ echo ${@:0:2} ./bash 1 $ echo ${@: -7:0} - + If PARAMETER is an indexed array name subscripted by '@' or '*', the result is the LENGTH members of the array beginning with @@ -1766,7 +1845,7 @@ omitted, the operator tests only for existence. $ echo ${array[@]:0:2} 0 1 $ echo ${array[@]: -7:0} - + Substring expansion applied to an associative array produces undefined results. @@ -1803,22 +1882,23 @@ omitted, the operator tests only for existence. '${PARAMETER#WORD}' '${PARAMETER##WORD}' - The WORD is expanded to produce a pattern just as in filename - expansion (*note Filename Expansion::). If the pattern matches the - beginning of the expanded value of PARAMETER, then the result of - the expansion is the expanded value of PARAMETER with the shortest - matching pattern (the '#' case) or the longest matching pattern - (the '##' case) deleted. If PARAMETER is '@' or '*', the pattern - removal operation is applied to each positional parameter in turn, - and the expansion is the resultant list. If PARAMETER is an array - variable subscripted with '@' or '*', the pattern removal operation - is applied to each member of the array in turn, and the expansion - is the resultant list. + The WORD is expanded to produce a pattern and matched according to + the rules described below (*note Pattern Matching::). If the + pattern matches the beginning of the expanded value of PARAMETER, + then the result of the expansion is the expanded value of PARAMETER + with the shortest matching pattern (the '#' case) or the longest + matching pattern (the '##' case) deleted. If PARAMETER is '@' or + '*', the pattern removal operation is applied to each positional + parameter in turn, and the expansion is the resultant list. If + PARAMETER is an array variable subscripted with '@' or '*', the + pattern removal operation is applied to each member of the array in + turn, and the expansion is the resultant list. '${PARAMETER%WORD}' '${PARAMETER%%WORD}' - The WORD is expanded to produce a pattern just as in filename - expansion. If the pattern matches a trailing portion of the + The WORD is expanded to produce a pattern and matched according to + the rules described below (*note Pattern Matching::). If the + pattern matches If the pattern matches a trailing portion of the expanded value of PARAMETER, then the result of the expansion is the value of PARAMETER with the shortest matching pattern (the '%' case) or the longest matching pattern (the '%%' case) deleted. If @@ -1832,21 +1912,23 @@ omitted, the operator tests only for existence. The PATTERN is expanded to produce a pattern just as in filename expansion. PARAMETER is expanded and the longest match of PATTERN - against its value is replaced with STRING. If PATTERN begins with - '/', all matches of PATTERN are replaced with STRING. Normally - only the first match is replaced. If PATTERN begins with '#', it - must match at the beginning of the expanded value of PARAMETER. If - PATTERN begins with '%', it must match at the end of the expanded - value of PARAMETER. If STRING is null, matches of PATTERN are - deleted and the '/' following PATTERN may be omitted. If the - 'nocasematch' shell option (see the description of 'shopt' in *note - The Shopt Builtin::) is enabled, the match is performed without - regard to the case of alphabetic characters. If PARAMETER is '@' - or '*', the substitution operation is applied to each positional - parameter in turn, and the expansion is the resultant list. If - PARAMETER is an array variable subscripted with '@' or '*', the - substitution operation is applied to each member of the array in - turn, and the expansion is the resultant list. + against its value is replaced with STRING. The match is performed + according to the rules described below (*note Pattern Matching::). + If PATTERN begins with '/', all matches of PATTERN are replaced + with STRING. Normally only the first match is replaced. If + PATTERN begins with '#', it must match at the beginning of the + expanded value of PARAMETER. If PATTERN begins with '%', it must + match at the end of the expanded value of PARAMETER. If STRING is + null, matches of PATTERN are deleted and the '/' following PATTERN + may be omitted. If the 'nocasematch' shell option (see the + description of 'shopt' in *note The Shopt Builtin::) is enabled, + the match is performed without regard to the case of alphabetic + characters. If PARAMETER is '@' or '*', the substitution operation + is applied to each positional parameter in turn, and the expansion + is the resultant list. If PARAMETER is an array variable + subscripted with '@' or '*', the substitution operation is applied + to each member of the array in turn, and the expansion is the + resultant list. '${PARAMETER^PATTERN}' '${PARAMETER^^PATTERN}' @@ -1881,7 +1963,7 @@ omitted, the operator tests only for existence. 'E' The expansion is a string that is the value of PARAMETER with backslash escape sequences expanded as with the '$'...'' - quoting mechansim. + quoting mechanism. 'P' The expansion is a string that is the result of expanding the value of PARAMETER as if it were a prompt string (*note @@ -2046,17 +2128,22 @@ performed without regard to the case of alphabetic characters. When a pattern is used for filename expansion, the character '.' at the start of a filename or immediately following a slash must be matched -explicitly, unless the shell option 'dotglob' is set. When matching a -filename, the slash character must always be matched explicitly. In -other cases, the '.' character is not treated specially. +explicitly, unless the shell option 'dotglob' is set. The filenames '.' +and '..' must always be matched explicitly, even if 'dotglob' is set. +In other cases, the '.' character is not treated specially. + + When matching a filename, the slash character must always be matched +explicitly by a slash in the pattern, but in other matching contexts it +can be matched by a special pattern character as described below (*note +Pattern Matching::). See the description of 'shopt' in *note The Shopt Builtin::, for a description of the 'nocaseglob', 'nullglob', 'failglob', and 'dotglob' options. The 'GLOBIGNORE' shell variable may be used to restrict the set of -filenames matching a pattern. If 'GLOBIGNORE' is set, each matching -filename that also matches one of the patterns in 'GLOBIGNORE' is +file names matching a pattern. If 'GLOBIGNORE' is set, each matching +file name that also matches one of the patterns in 'GLOBIGNORE' is removed from the list of matches. If the 'nocaseglob' option is set, the matching against the patterns in 'GLOBIGNORE' is performed without regard to case. The filenames '.' and '..' are always ignored when @@ -2149,6 +2236,12 @@ of the following sub-patterns: '!(PATTERN-LIST)' Matches anything except one of the given patterns. + Complicated extended pattern matching against long strings is slow, +especially when the patterns contain alternations and the strings +contain multiple matches. Using separate matches against shorter +strings, or using arrays of strings instead of a single long string, may +be faster. +  File: bashref.info, Node: Quote Removal, Prev: Filename Expansion, Up: Shell Expansions @@ -2180,7 +2273,9 @@ instead be preceded by a word of the form {VARNAME}. In this case, for each redirection operator except >&- and <&-, the shell will allocate a file descriptor greater than 10 and assign it to {VARNAME}. If >&- or <&- is preceded by {VARNAME}, the value of VARNAME defines the file -descriptor to close. +descriptor to close. If {VARNAME} is supplied, the redirection persists +beyond the scope of the command, allowing the shell programmer to manage +the file descriptor himself. In the following descriptions, if the file descriptor number is omitted, and the first character of the redirection operator is '<', the @@ -2344,12 +2439,11 @@ fashion. A variant of here documents, the format is: [N]<<< WORD - The WORD undergoes brace expansion, tilde expansion, parameter and -variable expansion, command substitution, arithmetic expansion, and -quote removal. Pathname expansion and word splitting are not performed. -The result is supplied as a single string, with a newline appended, to -the command on its standard input (or file descriptor N if N is -specified). + The WORD undergoes tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and quote removal. Pathname +expansion and word splitting are not performed. The result is supplied +as a single string, with a newline appended, to the command on its +standard input (or file descriptor N if N is specified). 3.6.8 Duplicating File Descriptors ---------------------------------- @@ -2486,11 +2580,11 @@ taken. '$PATH' is performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named 'command_not_found_handle'. If that - function exists, it is invoked with the original command and the - original command's arguments as its arguments, and the function's - exit status becomes the exit status of the shell. If that function - is not defined, the shell prints an error message and returns an - exit status of 127. + function exists, it is invoked in a separate execution environment + with the original command and the original command's arguments as + its arguments, and the function's exit status becomes the exit + status of that subshell. If that function is not defined, the + shell prints an error message and returns an exit status of 127. 4. If the search is successful, or if the command name contains one or more slashes, the shell executes the named program in a separate @@ -2783,13 +2877,13 @@ Completion Builtins::). Unless otherwise noted, each builtin command documented as accepting options preceded by '-' accepts '--' to signify the end of the options. -The ':', 'true', 'false', and 'test' builtins do not accept options and -do not treat '--' specially. The 'exit', 'logout', 'return', 'break', -'continue', 'let', and 'shift' builtins accept and process arguments -beginning with '-' without requiring '--'. Other builtins that accept -arguments but are not specified as accepting options interpret arguments -beginning with '-' as invalid options and require '--' to prevent this -interpretation. +The ':', 'true', 'false', and 'test'/'[' builtins do not accept options +and do not treat '--' specially. The 'exit', 'logout', 'return', +'break', 'continue', 'let', and 'shift' builtins accept and process +arguments beginning with '-' without requiring '--'. Other builtins +that accept arguments but are not specified as accepting options +interpret arguments beginning with '-' as invalid options and require +'--' to prevent this interpretation.  File: bashref.info, Node: Bourne Shell Builtins, Next: Bash Builtins, Up: Shell Builtin Commands @@ -2904,10 +2998,11 @@ standard. If COMMAND cannot be executed for some reason, a non-interactive shell exits, unless the 'execfail' shell option is enabled. In that case, it returns failure. An interactive shell returns - failure if the file cannot be executed. If no COMMAND is - specified, redirections may be used to affect the current shell - environment. If there are no redirection errors, the return status - is zero; otherwise the return status is non-zero. + failure if the file cannot be executed. A subshell exits + unconditionally if 'exec' fails. If no COMMAND is specified, + redirections may be used to affect the current shell environment. + If there are no redirection errors, the return status is zero; + otherwise the return status is non-zero. 'exit' exit [N] @@ -2988,7 +3083,7 @@ standard. locations. The '-d' option causes the shell to forget the remembered location of each NAME. If the '-t' option is supplied, the full pathname to which each NAME corresponds is printed. If - multiple NAME arguments are supplied with '-t' the NAME is printed + multiple NAME arguments are supplied with '-t', the NAME is printed before the hashed full pathname. The '-l' option causes output to be displayed in a format that may be reused as input. If no arguments are given, or if only '-l' is supplied, information about @@ -3032,7 +3127,7 @@ standard. status of the last command executed in the function. If 'return' is executed by a trap handler, the last command used to determine the status is the last command executed before the trap handler. - if 'return' is executed during a 'DEBUG' trap, the last command + If 'return' is executed during a 'DEBUG' trap, the last command used to determine the status is the last command executed by the trap handler before 'return' was invoked. 'return' may also be used to terminate execution of a script being executed with the '.' @@ -3096,7 +3191,7 @@ standard. The expression is false. 1 argument - The expression is true if and only if the argument is not + The expression is true if, and only if, the argument is not null. 2 arguments @@ -3108,17 +3203,21 @@ standard. the expression is false. 3 arguments - The following conditions are applied in the order listed. If - the second argument is one of the binary conditional operators - (*note Bash Conditional Expressions::), the result of the - expression is the result of the binary test using the first - and third arguments as operands. The '-a' and '-o' operators - are considered binary operators when there are three - arguments. If the first argument is '!', the value is the - negation of the two-argument test using the second and third - arguments. If the first argument is exactly '(' and the third - argument is exactly ')', the result is the one-argument test - of the second argument. Otherwise, the expression is false. + The following conditions are applied in the order listed. + + 1. If the second argument is one of the binary conditional + operators (*note Bash Conditional Expressions::), the + result of the expression is the result of the binary test + using the first and third arguments as operands. The + '-a' and '-o' operators are considered binary operators + when there are three arguments. + 2. If the first argument is '!', the value is the negation + of the two-argument test using the second and third + arguments. + 3. If the first argument is exactly '(' and the third + argument is exactly ')', the result is the one-argument + test of the second argument. + 4. Otherwise, the expression is false. 4 arguments If the first argument is '!', the result is the negation of @@ -3445,11 +3544,12 @@ standard. environment. Using '+' instead of '-' turns off the attribute instead, with the - exceptions that '+a' may not be used to destroy an array variable - and '+r' will not remove the readonly attribute. When used in a - function, 'declare' makes each NAME local, as with the 'local' - command, unless the '-g' option is used. If a variable name is - followed by =VALUE, the value of the variable is set to VALUE. + exceptions that '+a' and '+A' may not be used to destroy array + variables and '+r' will not remove the readonly attribute. When + used in a function, 'declare' makes each NAME local, as with the + 'local' command, unless the '-g' option is used. If a variable + name is followed by =VALUE, the value of the variable is set to + VALUE. When using '-a' or '-A' and the compound assignment syntax to create array variables, additional attributes do not take effect @@ -3590,8 +3690,8 @@ standard. Exit a login shell, returning a status of N to the shell's parent. 'mapfile' - mapfile [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD] - [-C CALLBACK] [-c QUANTUM] [ARRAY] + mapfile [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] + [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY] Read lines from the standard input into the indexed array variable ARRAY, or from file descriptor FD if the '-u' option is supplied. @@ -3600,7 +3700,8 @@ standard. '-d' The first character of DELIM is used to terminate each input - line, rather than newline. + line, rather than newline. If DELIM is the empty string, + 'mapfile' will terminate a line when it reads a NUL character. '-n' Copy at most COUNT lines. If COUNT is 0, all lines are copied. @@ -3615,7 +3716,7 @@ standard. Read lines from file descriptor FD instead of the standard input. '-C' - Evaluate CALLBACK each time QUANTUMP lines are read. The '-c' + Evaluate CALLBACK each time QUANTUM lines are read. The '-c' option specifies QUANTUM. '-c' Specify the number of lines read between each call to @@ -3712,12 +3813,14 @@ standard. '-d DELIM' The first character of DELIM is used to terminate the input - line, rather than newline. + line, rather than newline. If DELIM is the empty string, + 'read' will terminate a line when it reads a NUL character. '-e' Readline (*note Command Line Editing::) is used to obtain the line. Readline uses the current (or default, if line editing - was not previously active) editing settings. + was not previously active) editing settings, but uses + Readline's default filename completion. '-i TEXT' If Readline is being used to read the line, TEXT is placed @@ -3746,8 +3849,8 @@ standard. '-r' If this option is given, backslash does not act as an escape character. The backslash is considered to be part of the - line. In particular, a backslash-newline pair may not be used - as a line continuation. + line. In particular, a backslash-newline pair may not then be + used as a line continuation. '-s' Silent mode. If input is coming from a terminal, characters @@ -3771,8 +3874,8 @@ standard. Read input from file descriptor FD. 'readarray' - readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD] - [-C CALLBACK] [-c QUANTUM] [ARRAY] + readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] + [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY] Read lines from the standard input into the indexed array variable ARRAY, or from file descriptor FD if the '-u' option is supplied. @@ -4236,9 +4339,10 @@ This builtin allows you to change additional shell optional behavior. option is used, those available with the '-o' option to the 'set' builtin command (*note The Set Builtin::). With no options, or with the '-p' option, a list of all settable options is displayed, - with an indication of whether or not each is set. The '-p' option - causes output to be displayed in a form that may be reused as - input. Other options have the following meanings: + with an indication of whether or not each is set; if OPTNAMES are + supplied, the output is restricted to those options. The '-p' + option causes output to be displayed in a form that may be reused + as input. Other options have the following meanings: '-s' Enable (set) each OPTNAME. @@ -4269,6 +4373,13 @@ This builtin allows you to change additional shell optional behavior. The list of 'shopt' options is: + 'assoc_expand_once' + If set, the shell suppresses multiple evaluation of + associative array subscripts during arithmetic expression + evaluation, while executing builtins that can perform variable + assignments, and while executing builtins that perform array + dereferencing. + 'autocd' If set, a command name that is the name of a directory is executed as if it were the argument to the 'cd' command. This @@ -4301,13 +4412,16 @@ This builtin allows you to change additional shell optional behavior. are stopped. 'checkwinsize' - If set, Bash checks the window size after each command and, if - necessary, updates the values of 'LINES' and 'COLUMNS'. + If set, Bash checks the window size after each external + (non-builtin) command and, if necessary, updates the values of + 'LINES' and 'COLUMNS'. This option is enabled by default. 'cmdhist' If set, Bash attempts to save all lines of a multiple-line command in the same history entry. This allows easy - re-editing of multi-line commands. + re-editing of multi-line commands. This option is enabled by + default, but only has an effect if command history is enabled + (*note Bash History Facilities::). 'compat31' If set, Bash changes its behavior to that of version 3.1 with @@ -4357,6 +4471,11 @@ This builtin allows you to change additional shell optional behavior. executed (this allows 'break' or 'continue' in a shell function to affect loops in the caller's context). + 'compat44' + If set, Bash saves the positional parameters to BASH_ARGV and + BASH_ARGC before they are used, regardless of whether or not + extended debugging mode is enabled. + 'complete_fullquote' If set, Bash quotes all shell metacharacters in filenames and directory names when performing completion. If not set, Bash @@ -4384,7 +4503,8 @@ This builtin allows you to change additional shell optional behavior. 'dotglob' If set, Bash includes filenames beginning with a '.' in the - results of filename expansion. + results of filename expansion. The filenames '.' and '..' + must always be matched explicitly, even if 'dotglob' is set. 'execfail' If this is set, a non-interactive shell will not exit if it @@ -4513,6 +4633,19 @@ This builtin allows you to change additional shell optional behavior. commands are saved to the history with embedded newlines rather than using semicolon separators where possible. + 'localvar_inherit' + If set, local variables inherit the value and attributes of a + variable of the same name that exists at a previous scope + before any new value is assigned. The NAMEREF attribute is + not inherited. + + 'localvar_unset' + If set, calling 'unset' on local variables in previous + function scopes marks them so subsequent lookups find them + unset until that function returns. This is identical to the + behavior of unsetting local variables at the current function + scope. + 'login_shell' The shell sets this option if it is started as a login shell (*note Invoking Bash::). The value may not be changed. @@ -4547,6 +4680,13 @@ This builtin allows you to change additional shell optional behavior. Programmable Completion::) are enabled. This option is enabled by default. + 'progcomp_alias' + If set, and programmable completion is enabled, Bash treats a + command name that doesn't have any completions as a possible + alias and attempts alias expansion. If it has an alias, Bash + attempts programmable completion using the command word + resulting from the expanded alias. + 'promptvars' If set, prompt strings undergo parameter expansion, command substitution, arithmetic expansion, and quote removal after @@ -4676,7 +4816,8 @@ In some cases, Bash assigns a default value to the variable. that are expanded before 'PS1' is displayed. 'PS2' - The secondary prompt string. The default value is '> '. + The secondary prompt string. The default value is '> '. 'PS2' is + expanded in the same way as 'PS1' before being displayed.  File: bashref.info, Node: Bash Variables, Prev: Bourne Shell Variables, Up: Shell Variables @@ -4706,7 +4847,9 @@ Variables::). 'BASHPID' Expands to the process ID of the current Bash process. This differs from '$$' under certain circumstances, such as subshells - that do not require Bash to be re-initialized. + that do not require Bash to be re-initialized. Assignments to + 'BASHPID' have no effect. If 'BASHPID' is unset, it loses its + special properties, even if it is subsequently reset. 'BASH_ALIASES' An associative array variable whose members correspond to the @@ -4725,7 +4868,10 @@ Variables::). subroutine is executed, the number of parameters passed is pushed onto 'BASH_ARGC'. The shell sets 'BASH_ARGC' only when in extended debugging mode (see *note The Shopt Builtin:: for a description of - the 'extdebug' option to the 'shopt' builtin). + the 'extdebug' option to the 'shopt' builtin). Setting 'extdebug' + after the shell has started to execute a script, or referencing + this variable when 'extdebug' is not set, may result in + inconsistent values. 'BASH_ARGV' An array variable containing all of the parameters in the current @@ -4735,7 +4881,17 @@ Variables::). the parameters supplied are pushed onto 'BASH_ARGV'. The shell sets 'BASH_ARGV' only when in extended debugging mode (see *note The Shopt Builtin:: for a description of the 'extdebug' option to - the 'shopt' builtin). + the 'shopt' builtin). Setting 'extdebug' after the shell has + started to execute a script, or referencing this variable when + 'extdebug' is not set, may result in inconsistent values. + +'BASH_ARGV0' + When referenced, this variable expands to the name of the shell or + shell script (identical to '$0'; *Note Special Parameters::, for + the description of special parameter 0). Assignment to + 'BASH_ARGV0' causes the value assigned to also be assigned to '$0'. + If 'BASH_ARGV0' is unset, it loses its special properties, even if + it is subsequently reset. 'BASH_CMDS' An associative array variable whose members correspond to the @@ -4932,6 +5088,21 @@ Variables::). Similar to 'BASH_ENV'; used when the shell is invoked in POSIX Mode (*note Bash POSIX Mode::). +'EPOCHREALTIME' + Each time this parameter is referenced, it expands to the number of + seconds since the Unix Epoch as a floating point value with + micro-second granularity (see the documentation for the C library + function TIME for the definition of Epoch). Assignments to + 'EPOCHREALTIME' are ignored. If 'EPOCHREALTIME' is unset, it loses + its special properties, even if it is subsequently reset. + +'EPOCHSECONDS' + Each time this parameter is referenced, it expands to the number of + seconds since the Unix Epoch (see the documentation for the C + library function TIME for the definition of Epoch). Assignments to + 'EPOCHSECONDS' are ignored. If 'EPOCHSECONDS' is unset, it loses + its special properties, even if it is subsequently reset. + 'EUID' The numeric effective user id of the current user. This variable is readonly. @@ -4982,8 +5153,8 @@ Variables::). nesting level will cause the current command to abort. 'GLOBIGNORE' - A colon-separated list of patterns defining the set of filenames to - be ignored by filename expansion. If a filename matched by a + A colon-separated list of patterns defining the set of file names + to be ignored by filename expansion. If a file name matched by a filename expansion pattern also matches one of the patterns in 'GLOBIGNORE', it is removed from the list of matches. The pattern matching honors the setting of the 'extglob' shell option. @@ -5102,7 +5273,7 @@ Variables::). as the sole input. If set, the value denotes the number of consecutive 'EOF' characters that can be read as the first character on an input line before the shell will exit. If the - variable exists but does not have a numeric value (or has no value) + variable exists but does not have a numeric value, or has no value, then the default is 10. If the variable does not exist, then 'EOF' signifies the end of input to the shell. This is only in effect for interactive shells. @@ -5111,6 +5282,12 @@ Variables::). The name of the Readline initialization file, overriding the default of '~/.inputrc'. +'INSIDE_EMACS' + If Bash finds this variable in the environment when the shell + starts, it assumes that the shell is running in an Emacs shell + buffer and may disable line editing depending on the value of + 'TERM'. + 'LANG' Used to determine the locale category for any category not specifically selected with a variable starting with 'LC_'. @@ -5191,7 +5368,8 @@ Variables::). supplied. If it is set while the shell is running, Bash enables POSIX mode, as if the command set -o posix - had been executed. + had been executed. When the shell enters POSIX mode, it sets this + variable if it was not already set. 'PPID' The process ID of the shell's parent process. This variable is @@ -5218,10 +5396,12 @@ Variables::). with '#? ' 'PS4' - The value is the prompt printed before the command line is echoed - when the '-x' option is set (*note The Set Builtin::). The first - character of 'PS4' is replicated multiple times, as necessary, to - indicate multiple levels of indirection. The default is '+ '. + The value of this parameter is expanded like PS1 and the expanded + value is the prompt printed before the command line is echoed when + the '-x' option is set (*note The Set Builtin::). The first + character of the expanded value is replicated multiple times, as + necessary, to indicate multiple levels of indirection. The default + is '+ '. 'PWD' The current working directory as set by the 'cd' builtin. @@ -5356,9 +5536,12 @@ File: bashref.info, Node: Invoking Bash, Next: Bash Startup Files, Up: Bash F 6.1 Invoking Bash ================= - bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] [ARGUMENT ...] - bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] -c STRING [ARGUMENT ...] - bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] [ARGUMENT ...] + bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o OPTION] + [-O SHOPT_OPTION] [ARGUMENT ...] + bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION] + [-O SHOPT_OPTION] -c STRING [ARGUMENT ...] + bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION] + [-O SHOPT_OPTION] [ARGUMENT ...] All of the single-character options used with the 'set' builtin (*note The Set Builtin::) can be used as options when the shell is @@ -5452,7 +5635,7 @@ invocation which are not available with the 'set' builtin. If this option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be set when invoking an - interactive shell. + interactive shell or when reading input through a pipe. '-D' A list of all double-quoted strings preceded by '$' is printed on @@ -5678,8 +5861,10 @@ several ways. 3. Bash expands and displays 'PS1' before reading the first line of a command, and expands and displays 'PS2' before reading the second - and subsequent lines of a multi-line command. Bash displays 'PS0' - after it reads a command but before executing it. + and subsequent lines of a multi-line command. Bash expands and + displays 'PS0' after it reads a command but before executing it. + See *note Controlling the Prompt::, for a complete list of prompt + string escape sequences. 4. Bash executes the value of the 'PROMPT_COMMAND' variable as a command before printing the primary prompt, '$PS1' (*note Bash @@ -5702,8 +5887,8 @@ several ways. 9. In the absence of any traps, Bash ignores 'SIGTERM' (*note Signals::). - 10. In the absence of any traps, 'SIGINT' is caught and handled - ((*note Signals::). 'SIGINT' will interrupt some shell builtins. + 10. In the absence of any traps, 'SIGINT' is caught and handled (*note + Signals::). 'SIGINT' will interrupt some shell builtins. 11. An interactive login shell sends a 'SIGHUP' to all jobs on exit if the 'huponexit' shell option has been enabled (*note Signals::). @@ -5749,18 +5934,21 @@ File: bashref.info, Node: Bash Conditional Expressions, Next: Shell Arithmetic ================================ Conditional expressions are used by the '[[' compound command and the -'test' and '[' builtin commands. - - Expressions may be unary or binary. Unary expressions are often used -to examine the status of a file. There are string operators and numeric -comparison operators as well. Bash handles several filenames specially -when they are used in expressions. If the operating system on which -Bash is running provides these special files, Bash will use them; -otherwise it will emulate them internally with this behavior: If the -FILE argument to one of the primaries is of the form '/dev/fd/N', then -file descriptor N is checked. If the FILE argument to one of the -primaries is one of '/dev/stdin', '/dev/stdout', or '/dev/stderr', file -descriptor 0, 1, or 2, respectively, is checked. +'test' and '[' builtin commands. The 'test' and '[' commands determine +their behavior based on the number of arguments; see the descriptions of +those commands for any other command-specific actions. + + Expressions may be unary or binary, and are formed from the following +primaries. Unary expressions are often used to examine the status of a +file. There are string operators and numeric comparison operators as +well. Bash handles several filenames specially when they are used in +expressions. If the operating system on which Bash is running provides +these special files, Bash will use them; otherwise it will emulate them +internally with this behavior: If the FILE argument to one of the +primaries is of the form '/dev/fd/N', then file descriptor N is checked. +If the FILE argument to one of the primaries is one of '/dev/stdin', +'/dev/stdout', or '/dev/stderr', file descriptor 0, 1, or 2, +respectively, is checked. When used with '[[', the '<' and '>' operators sort lexicographically using the current locale. The 'test' command uses ASCII ordering. @@ -5884,7 +6072,9 @@ link itself. arithmetic binary operators return true if ARG1 is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to ARG2, respectively. ARG1 and ARG2 may be - positive or negative integers. + positive or negative integers. When used with the '[[' command, + ARG1 and ARG2 are evaluated as arithmetic expressions (*note Shell + Arithmetic::).  File: bashref.info, Node: Shell Arithmetic, Next: Aliases, Prev: Bash Conditional Expressions, Up: Bash Features @@ -6018,9 +6208,10 @@ the 'expand_aliases' shell option is set using 'shopt' (*note The Shopt Builtin::). The rules concerning the definition and use of aliases are somewhat -confusing. Bash always reads at least one complete line of input before -executing any of the commands on that line. Aliases are expanded when a -command is read, not when it is executed. Therefore, an alias +confusing. Bash always reads at least one complete line of input, and +all lines that make up a compound command, before executing any of the +commands on that line or the compound command. Aliases are expanded +when a command is read, not when it is executed. Therefore, an alias definition appearing on the same line as another command does not take effect until the next line of input is read. The commands following the alias definition on that line are not affected by the new alias. This @@ -6122,9 +6313,15 @@ quotes. The 'unset' builtin is used to destroy arrays. 'unset NAME[SUBSCRIPT]' destroys the array element at index SUBSCRIPT. Negative subscripts to indexed arrays are interpreted as described -above. Care must be taken to avoid unwanted side effects caused by -filename expansion. 'unset NAME', where NAME is an array, removes the -entire array. A subscript of '*' or '@' also removes the entire array. +above. Unsetting the last element of an array variable does not unset +the variable. 'unset NAME', where NAME is an array, removes the entire +array. A subscript of '*' or '@' also removes the entire array. + + When using a variable name with a subscript as an argument to a +command, such as with 'unset', without using the word expansion syntax +described above, the argument is subject to the shell's filename +expansion. If filename expansion is not desired, the argument should be +quoted. The 'declare', 'local', and 'readonly' builtins each accept a '-a' option to specify an indexed array and a '-A' option to specify an @@ -6245,7 +6442,7 @@ non-null value, then the value is executed just as if it had been typed on the command line. In addition, the following table describes the special characters -which can appear in the prompt variables 'PS1' to 'PS4': +which can appear in the prompt variables 'PS0', 'PS1', 'PS2', and 'PS4': '\a' A bell character. @@ -6315,7 +6512,8 @@ of commands executed during the current shell session. After the string is decoded, it is expanded via parameter expansion, command substitution, arithmetic expansion, and quote removal, subject -to the value of the 'promptvars' shell option (*note Bash Builtins::). +to the value of the 'promptvars' shell option (*note The Shopt +Builtin::).  File: bashref.info, Node: The Restricted Shell, Next: Bash POSIX Mode, Prev: Controlling the Prompt, Up: Bash Features @@ -6373,212 +6571,224 @@ startup files. The following list is what's changed when 'POSIX mode' is in effect: - 1. When a command in the hash table no longer exists, Bash will + 1. Bash ensures that the 'POSIXLY_CORRECT' variable is set. + + 2. When a command in the hash table no longer exists, Bash will re-search '$PATH' to find the new location. This is also available with 'shopt -s checkhash'. - 2. The message printed by the job control code and builtins when a job + 3. The message printed by the job control code and builtins when a job exits with a non-zero status is 'Done(status)'. - 3. The message printed by the job control code and builtins when a job + 4. The message printed by the job control code and builtins when a job is stopped is 'Stopped(SIGNAME)', where SIGNAME is, for example, 'SIGTSTP'. - 4. Alias expansion is always enabled, even in non-interactive shells. + 5. Alias expansion is always enabled, even in non-interactive shells. - 5. Reserved words appearing in a context where reserved words are + 6. Reserved words appearing in a context where reserved words are recognized do not undergo alias expansion. - 6. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number + 7. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number and '!!' to '!' are enabled, and parameter expansion is performed on the values of 'PS1' and 'PS2' regardless of the setting of the 'promptvars' option. - 7. The POSIX startup files are executed ('$ENV') rather than the + 8. The POSIX startup files are executed ('$ENV') rather than the normal Bash files. - 8. Tilde expansion is only performed on assignments preceding a + 9. Tilde expansion is only performed on assignments preceding a command name, rather than on all assignment statements on the line. - 9. The default history file is '~/.sh_history' (this is the default + 10. The default history file is '~/.sh_history' (this is the default value of '$HISTFILE'). - 10. Redirection operators do not perform filename expansion on the + 11. Redirection operators do not perform filename expansion on the word in the redirection unless the shell is interactive. - 11. Redirection operators do not perform word splitting on the word in + 12. Redirection operators do not perform word splitting on the word in the redirection. - 12. Function names must be valid shell 'name's. That is, they may not + 13. Function names must be valid shell 'name's. That is, they may not contain characters other than letters, digits, and underscores, and may not start with a digit. Declaring a function with an invalid name causes a fatal syntax error in non-interactive shells. - 13. Function names may not be the same as one of the POSIX special + 14. Function names may not be the same as one of the POSIX special builtins. - 14. POSIX special builtins are found before shell functions during + 15. POSIX special builtins are found before shell functions during command lookup. - 15. When printing shell function definitions (e.g., by 'type'), Bash + 16. When printing shell function definitions (e.g., by 'type'), Bash does not print the 'function' keyword. - 16. Literal tildes that appear as the first character in elements of + 17. Literal tildes that appear as the first character in elements of the 'PATH' variable are not expanded as described above under *note Tilde Expansion::. - 17. The 'time' reserved word may be used by itself as a command. When + 18. The 'time' reserved word may be used by itself as a command. When used in this way, it displays timing statistics for the shell and its completed children. The 'TIMEFORMAT' variable controls the format of the timing information. - 18. When parsing and expanding a ${...} expansion that appears within + 19. When parsing and expanding a ${...} expansion that appears within double quotes, single quotes are no longer special and cannot be used to quote a closing brace or other special character, unless the operator is one of those defined to perform pattern removal. In this case, they do not have to appear as matched pairs. - 19. The parser does not recognize 'time' as a reserved word if the + 20. The parser does not recognize 'time' as a reserved word if the next token begins with a '-'. - 20. The '!' character does not introduce history expansion within a + 21. The '!' character does not introduce history expansion within a double-quoted string, even if the 'histexpand' option is enabled. - 21. If a POSIX special builtin returns an error status, a + 22. If a POSIX special builtin returns an error status, a non-interactive shell exits. The fatal errors are those listed in the POSIX standard, and include things like passing incorrect options, redirection errors, variable assignment errors for assignments preceding the command name, and so on. - 22. A non-interactive shell exits with an error status if a variable + 23. A non-interactive shell exits with an error status if a variable assignment error occurs when no command name follows the assignment statements. A variable assignment error occurs, for example, when trying to assign a value to a readonly variable. - 23. A non-interactive shell exits with an error status if a variable + 24. A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a special builtin, but not with any other simple command. - 24. A non-interactive shell exits with an error status if the + 25. A non-interactive shell exits with an error status if the iteration variable in a 'for' statement or the selection variable in a 'select' statement is a readonly variable. - 25. Non-interactive shells exit if FILENAME in '.' FILENAME is not + 26. Non-interactive shells exit if FILENAME in '.' FILENAME is not found. - 26. Non-interactive shells exit if a syntax error in an arithmetic + 27. Non-interactive shells exit if a syntax error in an arithmetic expansion results in an invalid expression. - 27. Non-interactive shells exit if a parameter expansion error occurs. + 28. Non-interactive shells exit if a parameter expansion error occurs. - 28. Non-interactive shells exit if there is a syntax error in a script + 29. Non-interactive shells exit if there is a syntax error in a script read with the '.' or 'source' builtins, or in a string processed by the 'eval' builtin. - 29. Process substitution is not available. + 30. Process substitution is not available. - 30. While variable indirection is available, it may not be applied to + 31. While variable indirection is available, it may not be applied to the '#' and '?' special parameters. - 31. When expanding the '*' special parameter in a pattern context + 32. When expanding the '*' special parameter in a pattern context where the expansion is double-quoted does not treat the '$*' as if it were double-quoted. - 32. Assignment statements preceding POSIX special builtins persist in + 33. Assignment statements preceding POSIX special builtins persist in the shell environment after the builtin completes. - 33. Assignment statements preceding shell function calls persist in + 34. Assignment statements preceding shell function calls persist in the shell environment after the function returns, as if a POSIX special builtin command had been executed. - 34. The 'command' builtin does not prevent builtins that take + 35. The 'command' builtin does not prevent builtins that take assignment statements as arguments from expanding them as assignment statements; when not in POSIX mode, assignment builtins lose their assignment statement expansion properties when preceded by 'command'. - 35. The 'bg' builtin uses the required format to describe each job + 36. The 'bg' builtin uses the required format to describe each job placed in the background, which does not include an indication of whether the job is the current or previous job. - 36. The output of 'kill -l' prints all the signal names on a single + 37. The output of 'kill -l' prints all the signal names on a single line, separated by spaces, without the 'SIG' prefix. - 37. The 'kill' builtin does not accept signal names with a 'SIG' + 38. The 'kill' builtin does not accept signal names with a 'SIG' prefix. - 38. The 'export' and 'readonly' builtin commands display their output + 39. The 'export' and 'readonly' builtin commands display their output in the format required by POSIX. - 39. The 'trap' builtin displays signal names without the leading + 40. The 'trap' builtin displays signal names without the leading 'SIG'. - 40. The 'trap' builtin doesn't check the first argument for a possible + 41. The 'trap' builtin doesn't check the first argument for a possible signal specification and revert the signal handling to the original disposition if it is, unless that argument consists solely of digits and is a valid signal number. If users want to reset the handler for a given signal to the original disposition, they should use '-' as the first argument. - 41. The '.' and 'source' builtins do not search the current directory + 42. The '.' and 'source' builtins do not search the current directory for the filename argument if it is not found by searching 'PATH'. - 42. Enabling POSIX mode has the effect of setting the + 43. Enabling POSIX mode has the effect of setting the 'inherit_errexit' option, so subshells spawned to execute command substitutions inherit the value of the '-e' option from the parent shell. When the 'inherit_errexit' option is not enabled, Bash clears the '-e' option in such subshells. - 43. When the 'alias' builtin displays alias definitions, it does not + 44. Enabling POSIX mode has the effect of setting the 'shift_verbose' + option, so numeric arguments to 'shift' that exceed the number of + positional parameters will result in an error message. + + 45. When the 'alias' builtin displays alias definitions, it does not display them with a leading 'alias ' unless the '-p' option is supplied. - 44. When the 'set' builtin is invoked without options, it does not + 46. When the 'set' builtin is invoked without options, it does not display shell function names and definitions. - 45. When the 'set' builtin is invoked without options, it displays + 47. When the 'set' builtin is invoked without options, it displays variable values without quotes, unless they contain shell metacharacters, even if the result contains nonprinting characters. - 46. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname + 48. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname constructed from '$PWD' and the directory name supplied as an argument does not refer to an existing directory, 'cd' will fail instead of falling back to PHYSICAL mode. - 47. The 'pwd' builtin verifies that the value it prints is the same as + 49. When the 'cd' builtin cannot change a directory because the length + of the pathname constructed from '$PWD' and the directory name + supplied as an argument exceeds PATH_MAX when all symbolic links + are expanded, 'cd' will fail instead of attempting to use only the + supplied directory name. + + 50. The 'pwd' builtin verifies that the value it prints is the same as the current directory, even if it is not asked to check the file system with the '-P' option. - 48. When listing the history, the 'fc' builtin does not include an + 51. When listing the history, the 'fc' builtin does not include an indication of whether or not a history entry has been modified. - 49. The default editor used by 'fc' is 'ed'. + 52. The default editor used by 'fc' is 'ed'. - 50. The 'type' and 'command' builtins will not report a non-executable + 53. The 'type' and 'command' builtins will not report a non-executable file as having been found, though the shell will attempt to execute such a file if it is the only so-named file found in '$PATH'. - 51. The 'vi' editing mode will invoke the 'vi' editor directly when + 54. The 'vi' editing mode will invoke the 'vi' editor directly when the 'v' command is run, instead of checking '$VISUAL' and '$EDITOR'. - 52. When the 'xpg_echo' option is enabled, Bash does not attempt to + 55. When the 'xpg_echo' option is enabled, Bash does not attempt to interpret any arguments to 'echo' as options. Each argument is displayed, after escape characters are converted. - 53. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' + 56. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' and '-f' options. - 54. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not + 57. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not interrupt the 'wait' builtin and cause it to return immediately. The trap command is run once for each child that exits. - 55. The 'read' builtin may be interrupted by a signal for which a trap + 58. The 'read' builtin may be interrupted by a signal for which a trap has been set. If Bash receives a trapped signal while executing 'read', the trap handler executes and 'read' returns an exit status greater than 128. - 56. Bash removes an exited background process's status from the list + 59. Bash removes an exited background process's status from the list of such statuses after the 'wait' builtin is used to obtain it. There is other POSIX behavior that Bash does not implement by default @@ -6699,6 +6909,11 @@ command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, Bash does not print another warning, and any stopped jobs are terminated. + When the shell is waiting for a job or process using the 'wait' +builtin, and job control is enabled, 'wait' will return when the job +changes state. The '-f' option will force 'wait' to wait until the job +or process terminates before returning. +  File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables, Prev: Job Control Basics, Up: Job Control @@ -6775,7 +6990,7 @@ File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables, option is encountered. 'wait' - wait [-n] [JOBSPEC or PID ...] + wait [-fn] [JOBSPEC or PID ...] Wait until the child process specified by each process ID PID or job specification JOBSPEC exits and return the exit status of the @@ -6783,7 +6998,10 @@ File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables, the job are waited for. If no arguments are given, all currently active child processes are waited for, and the return status is zero. If the '-n' option is supplied, 'wait' waits for any job to - terminate and returns its exit status. If neither JOBSPEC nor PID + terminate and returns its exit status. If the '-f' option is + supplied, and job control is enabled, 'wait' forces each PID or + JOBSPEC to terminate before returning its status, intead of + returning when it changes status. If neither JOBSPEC nor PID specifies an active child process of the shell, the return status is 127. @@ -7228,7 +7446,7 @@ Variable Settings If set to 'on', and COMPLETION-IGNORE-CASE is enabled, Readline treats hyphens ('-') and underscores ('_') as equivalent when performing case-insensitive filename matching - and completion. + and completion. The default value is 'off'. 'completion-prefix-display-length' The length in characters of the common prefix of a list of @@ -7272,14 +7490,14 @@ Variable Settings This variable can be set to either 'emacs' or 'vi'. 'emacs-mode-string' - This string is displayed immediately before the last line of - the primary prompt when emacs editing mode is active. The - value is expanded like a key binding, so the standard set of - meta- and control prefixes and backslash escape sequences is - available. Use the '\1' and '\2' escapes to begin and end - sequences of non-printing characters, which can be used to - embed a terminal control sequence into the mode string. The - default is '@'. + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when emacs editing mode is active. The value is + expanded like a key binding, so the standard set of meta- and + control prefixes and backslash escape sequences is available. + Use the '\1' and '\2' escapes to begin and end sequences of + non-printing characters, which can be used to embed a terminal + control sequence into the mode string. The default is '@'. 'enable-bracketed-paste' When set to 'On', Readline will configure the terminal in a @@ -7343,13 +7561,13 @@ Variable Settings 'keymap' Sets Readline's idea of the current keymap for key binding - commands. Acceptable 'keymap' names are 'emacs', + commands. Built-in 'keymap' names are 'emacs', 'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move', 'vi-command', and 'vi-insert'. 'vi' is equivalent to 'vi-command' ('vi-move' is also a synonym); 'emacs' is - equivalent to 'emacs-standard'. The default value is 'emacs'. - The value of the 'editing-mode' variable also affects the - default keymap. + equivalent to 'emacs-standard'. Applications may add + additional names. The default value is 'emacs'. The value of + the 'editing-mode' variable also affects the default keymap. 'keyseq-timeout' Specifies the duration Readline will wait for a character when @@ -7431,10 +7649,10 @@ Variable Settings default value is 'off'. 'show-mode-in-prompt' - If set to 'on', add a character to the beginning of the prompt + If set to 'on', add a string to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi - insertion. The mode strings are user-settable. The default - value is 'off'. + insertion. The mode strings are user-settable (e.g., + EMACS-MODE-STRING). The default value is 'off'. 'skip-completed-text' If set to 'on', this alters the default completion behavior @@ -7450,24 +7668,26 @@ Variable Settings 'off'. 'vi-cmd-mode-string' - This string is displayed immediately before the last line of - the primary prompt when vi editing mode is active and in - command mode. The value is expanded like a key binding, so - the standard set of meta- and control prefixes and backslash - escape sequences is available. Use the '\1' and '\2' escapes - to begin and end sequences of non-printing characters, which - can be used to embed a terminal control sequence into the mode - string. The default is '(cmd)'. + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when vi editing mode is active and in command mode. + The value is expanded like a key binding, so the standard set + of meta- and control prefixes and backslash escape sequences + is available. Use the '\1' and '\2' escapes to begin and end + sequences of non-printing characters, which can be used to + embed a terminal control sequence into the mode string. The + default is '(cmd)'. 'vi-ins-mode-string' - This string is displayed immediately before the last line of - the primary prompt when vi editing mode is active and in - insertion mode. The value is expanded like a key binding, so - the standard set of meta- and control prefixes and backslash - escape sequences is available. Use the '\1' and '\2' escapes - to begin and end sequences of non-printing characters, which - can be used to embed a terminal control sequence into the mode - string. The default is '(ins)'. + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when vi editing mode is active and in insertion mode. + The value is expanded like a key binding, so the standard set + of meta- and control prefixes and backslash escape sequences + is available. Use the '\1' and '\2' escapes to begin and end + sequences of non-printing characters, which can be used to + embed a terminal control sequence into the mode string. The + default is '(ins)'. 'visible-stats' If set to 'on', a character denoting a file's type is appended @@ -7502,7 +7722,7 @@ Key Bindings Meta-Rubout: backward-kill-word Control-o: "> output" - In the above example, 'C-u' is bound to the function + In the example above, 'C-u' is bound to the function 'universal-argument', 'M-DEL' is bound to the function 'backward-kill-word', and 'C-o' is bound to run the macro expressed on the right hand side (that is, to insert the text @@ -7594,8 +7814,9 @@ four parser directives used. '$if' The '$if' construct allows bindings to be made based on the editing mode, the terminal being used, or the application using Readline. - The text of the test extends to the end of the line; no characters - are required to isolate it. + The text of the test, after any comparison operator, extends to the + end of the line; unless otherwise noted, no characters are required + to isolate it. 'mode' The 'mode=' form of the '$if' directive is used to test @@ -7612,6 +7833,22 @@ four parser directives used. the portion of the terminal name before the first '-'. This allows 'sun' to match both 'sun' and 'sun-cmd', for instance. + 'version' + The 'version' test may be used to perform comparisons against + specific Readline versions. The 'version' expands to the + current Readline version. The set of comparison operators + includes '=' (and '=='), '!=', '<=', '>=', '<', and '>'. The + version number supplied on the right side of the operator + consists of a major version number, an optional decimal point, + and an optional minor version (e.g., '7.1'). If the minor + version is omitted, it is assumed to be '0'. The operator may + be separated from the string 'version' and from the version + number argument by whitespace. The following example sets a + variable if the Readline version being used is 7.0 or newer: + $if version >= 7.0 + set show-mode-in-prompt on + $endif + 'application' The APPLICATION construct is used to include application-specific settings. Each program using the @@ -7625,6 +7862,20 @@ four parser directives used. "\C-xq": "\eb\"\ef\"" $endif + 'variable' + The VARIABLE construct provides simple equality tests for + Readline variables and values. The permitted comparison + operators are '=', '==', and '!='. The variable name must be + separated from the comparison operator by whitespace; the + operator may be separated from the value on the right hand + side by whitespace. Both string and boolean variables may be + tested. Boolean variables must be tested against the values + ON and OFF. The following example is equivalent to the + 'mode=emacs' test described above: + $if editing-mode == emacs + set show-mode-in-prompt on + $endif + '$endif' This command, as seen in the previous example, terminates an '$if' command. @@ -7810,6 +8061,20 @@ File: bashref.info, Node: Commands For Moving, Next: Commands For History, Up Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. +'previous-screen-line ()' + Attempt to move point to the same physical screen column on the + previous physical screen line. This will not have the desired + effect if the current Readline line does not take up more than one + physical line or if point is not greater than the length of the + prompt plus the screen width. + +'next-screen-line ()' + Attempt to move point to the same physical screen column on the + next physical screen line. This will not have the desired effect + if the current Readline line does not take up more than one + physical line or if the length of the current Readline line is not + greater than the length of the prompt plus the screen width. + 'clear-screen (C-l)' Clear the screen and redraw the current line, leaving the current line at the top of the screen. @@ -7876,13 +8141,13 @@ File: bashref.info, Node: Commands For History, Next: Commands For Text, Prev string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. -'history-substr-search-forward ()' +'history-substring-search-forward ()' Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. -'history-substr-search-backward ()' +'history-substring-search-backward ()' Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a @@ -7948,7 +8213,7 @@ File: bashref.info, Node: Commands For Text, Next: Commands For Killing, Prev assigned by default. It allows Readline to insert the pasted text as a single unit without treating each character as if it had been read from the keyboard. The characters are inserted as if each one - was bound to 'self-insert') instead of executing any editing + was bound to 'self-insert' instead of executing any editing commands. 'transpose-chars (C-t)' @@ -8226,9 +8491,10 @@ File: bashref.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Abort the current editing command and ring the terminal's bell (subject to the setting of 'bell-style'). -'do-uppercase-version (M-a, M-b, M-X, ...)' - If the metafied character X is lowercase, run the command that is - bound to the corresponding uppercase character. +'do-lowercase-version (M-A, M-B, M-X, ...)' + If the metafied character X is upper case, run the command that is + bound to the corresponding metafied lower case character. The + behavior is undefined if X is already lower case. 'prefix-meta ()' Metafy the next character typed. This is for keyboards without a @@ -8347,10 +8613,11 @@ File: bashref.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: 'operate-and-get-next (C-o)' Accept the current line for execution and fetch the next line - relative to the current line from the history for editing. Any - argument is ignored. + relative to the current line from the history for editing. A + numeric argument, if supplied, specifies the history entry to use + instead of the current line. -'edit-and-execute-command (C-xC-e)' +'edit-and-execute-command (C-x C-e)' Invoke an editor on the current command line, and execute the result as shell commands. Bash attempts to invoke '$VISUAL', '$EDITOR', and 'emacs' as the editor, in that order. @@ -8395,7 +8662,10 @@ command word is a full pathname, a compspec for the full pathname is searched for first. If no compspec is found for the full pathname, an attempt is made to find a compspec for the portion following the final slash. If those searches do not result in a compspec, any compspec -defined with the '-D' option to 'complete' is used as the default. +defined with the '-D' option to 'complete' is used as the default. If +there is no default compspec, Bash attempts alias expansion on the +command word as a final resort, and attempts to find a compspec for the +command word from any successful expansion Once a compspec has been found, it is used to generate the list of matching words. If a compspec is not found, the default Bash completion @@ -8414,13 +8684,15 @@ used to filter the matches, but the 'FIGNORE' shell variable is used. Next, the string specified as the argument to the '-W' option is considered. The string is first split using the characters in the 'IFS' -special variable as delimiters. Shell quoting is honored. Each word is -then expanded using brace expansion, tilde expansion, parameter and -variable expansion, command substitution, and arithmetic expansion, as -described above (*note Shell Expansions::). The results are split using -the rules described above (*note Word Splitting::). The results of the -expansion are prefix-matched against the word being completed, and the -matching words become the possible completions. +special variable as delimiters. Shell quoting is honored within the +string, in order to provide a mechanism for the words to contain shell +metacharacters or characters in the value of 'IFS'. Each word is then +expanded using brace expansion, tilde expansion, parameter and variable +expansion, command substitution, and arithmetic expansion, as described +above (*note Shell Expansions::). The results are split using the rules +described above (*note Word Splitting::). The results of the expansion +are prefix-matched against the word being completed, and the matching +words become the possible completions. After these matches have been generated, any shell function or command specified with the '-F' and '-C' options is invoked. When the @@ -8540,26 +8812,34 @@ happening. no matches were generated. 'complete' - complete [-abcdefgjksuv] [-o COMP-OPTION] [-DE] [-A ACTION] [-G GLOBPAT] [-W WORDLIST] - [-F FUNCTION] [-C COMMAND] [-X FILTERPAT] + complete [-abcdefgjksuv] [-o COMP-OPTION] [-DEI] [-A ACTION] [-G GLOBPAT] + [-W WORDLIST] [-F FUNCTION] [-C COMMAND] [-X FILTERPAT] [-P PREFIX] [-S SUFFIX] NAME [NAME ...] - complete -pr [-DE] [NAME ...] + complete -pr [-DEI] [NAME ...] Specify how arguments to each NAME should be completed. If the '-p' option is supplied, or if no options are supplied, existing completion specifications are printed in a way that allows them to be reused as input. The '-r' option removes a completion specification for each NAME, or, if no NAMEs are supplied, all - completion specifications. The '-D' option indicates that the - remaining options and actions should apply to the "default" command + completion specifications. The '-D' option indicates that other + supplied options and actions should apply to the "default" command completion; that is, completion attempted on a command for which no completion has previously been defined. The '-E' option indicates - that the remaining options and actions should apply to "empty" + that other supplied options and actions should apply to "empty" command completion; that is, completion attempted on a blank line. + The '-I' option indicates that other supplied options and actions + should apply to completion on the inital non-assignment word on the + line, or after a command delimiter such as ';' or '|', which is + usually command name completion. If multiple options are supplied, + the '-D' option takes precedence over '-E', and both take + precedence over '-I'. If any of '-D', '-E', or '-I' are supplied, + any other NAME arguments are ignored; these completions only apply + to the case specified by the option. The process of applying these completion specifications when word completion is attempted is described above (*note Programmable - Completion::). The '-D' option takes precedence over '-E'. + Completion::). Other options, if specified, have the following meanings. The arguments to the '-G', '-W', and '-X' options (and, if necessary, @@ -8586,7 +8866,7 @@ happening. 'filenames' Tell Readline that the compspec generates filenames, so it can perform any filename-specific processing (like - adding a slash to directory names quoting special + adding a slash to directory names, quoting special characters, or suppressing trailing spaces). This option is intended to be used with shell functions specified with '-F'. @@ -8739,20 +9019,24 @@ happening. completion specification. 'compopt' - compopt [-o OPTION] [-DE] [+o OPTION] [NAME] + compopt [-o OPTION] [-DEI] [+o OPTION] [NAME] Modify completion options for each NAME according to the OPTIONs, or for the currently-executing completion if no NAMEs are supplied. If no OPTIONs are given, display the completion options for each NAME or the current completion. The possible values of OPTION are those valid for the 'complete' builtin described above. The '-D' - option indicates that the remaining options should apply to the + option indicates that other supplied options should apply to the "default" command completion; that is, completion attempted on a command for which no completion has previously been defined. The - '-E' option indicates that the remaining options should apply to + '-E' option indicates that other supplied options should apply to "empty" command completion; that is, completion attempted on a - blank line. + blank line. The '-I' option indicates that other supplied options + should apply to completion on the inital non-assignment word on the + line, or after a command delimiter such as ';' or '|', which is + usually command name completion. - The '-D' option takes precedence over '-E'. + If multiple options are supplied, the '-D' option takes precedence + over '-E', and both take precedence over '-I' The return value is true unless an invalid option is supplied, an attempt is made to modify the options for a NAME for which no @@ -8770,10 +9054,9 @@ function and bind it to a particular command using 'complete -F'. The following function provides completions for the 'cd' builtin. It is a reasonably good example of what shell functions must do when used -for completion. This function uses the word passsed as '$2' to -determine the directory name to complete. You can also use the -'COMP_WORDS' array variable; the current word is indexed by the -'COMP_CWORD' variable. +for completion. This function uses the word passed as '$2' to determine +the directory name to complete. You can also use the 'COMP_WORDS' array +variable; the current word is indexed by the 'COMP_CWORD' variable. The function relies on the 'complete' and 'compgen' builtins to do much of the work, adding only the things that the Bash 'cd' does beyond @@ -8797,7 +9080,7 @@ retrieves the completions from there when the function returns. local cur _skipdot _cdpath local i j k - # Tilde expansion, with side effect of expanding tilde to full pathname + # Tilde expansion, which also expands tilde to full pathname case "$2" in \~*) eval cur="$2" ;; *) cur=$2 ;; @@ -8942,7 +9225,7 @@ of a multi-line command in the same history entry, adding semicolons where necessary to preserve syntactic correctness. The 'lithist' shell option causes the shell to save the command with embedded newlines instead of semicolons. The 'shopt' builtin is used to set these -options. *Note Bash Builtins::, for a description of 'shopt'. +options. *Note The Shopt Builtin::, for a description of 'shopt'.  File: bashref.info, Node: Bash History Builtins, Next: History Interaction, Prev: Bash History Facilities, Up: Using History Interactively @@ -8962,8 +9245,8 @@ history file. FIRST and LAST may be specified as a string (to locate the most recent command beginning with that string) or as a number (an index into the history list, where a negative number is used as an offset - from the current command number). If LAST is not specified it is - set to FIRST. If FIRST is not specified it is set to the previous + from the current command number). If LAST is not specified, it is + set to FIRST. If FIRST is not specified, it is set to the previous command for editing and -16 for listing. If the '-l' flag is given, the commands are listed on standard output. The '-n' flag suppresses the command numbers when listing. The '-r' flag @@ -8987,6 +9270,7 @@ history file. history [N] history -c history -d OFFSET + history -d START-END history [-anrw] [FILENAME] history -ps ARG @@ -9005,8 +9289,18 @@ history file. options to replace the history list completely. '-d OFFSET' - Delete the history entry at position OFFSET. OFFSET should be - specified as it appears when the history is displayed. + Delete the history entry at position OFFSET. If OFFSET is + positive, it should be specified as it appears when the + history is displayed. If OFFSET is negative, it is + interpreted as relative to one greater than the last history + position, so negative indices count back from the end of the + history, and an index of '-1' refers to the current 'history + -d' command. + + '-d START-END' + Delete the history entries between positions START and END, + inclusive. Positive and negative values for START and END are + interpreted as described above. '-a' Append the new history lines to the history file. These are @@ -9055,7 +9349,9 @@ a previous command into the current input line, or fix errors in previous commands quickly. History expansion is performed immediately after a complete line is -read, before the shell breaks it into words. +read, before the shell breaks it into words, and is performed on each +line individually. Bash attempts to inform the history expansion +functions about quoting still in effect from previous lines. History expansion takes place in two parts. The first is to determine which line from the history list should be used during @@ -9066,20 +9362,30 @@ are called "words". Various "modifiers" are available to manipulate the selected words. The line is broken into words in the same fashion that Bash does, so that several words surrounded by quotes are considered one word. History expansions are introduced by the appearance of the -history expansion character, which is '!' by default. Only '\' and ''' -may be used to escape the history expansion character, but the history -expansion character is also treated as quoted if it immediately precedes -the closing double quote in a double-quoted string. - - Several shell options settable with the 'shopt' builtin (*note Bash -Builtins::) may be used to tailor the behavior of history expansion. If -the 'histverify' shell option is enabled, and Readline is being used, -history substitutions are not immediately passed to the shell parser. -Instead, the expanded line is reloaded into the Readline editing buffer -for further modification. If Readline is being used, and the -'histreedit' shell option is enabled, a failed history expansion will be -reloaded into the Readline editing buffer for correction. The '-p' -option to the 'history' builtin command may be used to see what a +history expansion character, which is '!' by default. + + History expansion implements shell-like quoting conventions: a +backslash can be used to remove the special handling for the next +character; single quotes enclose verbatim sequences of characters, and +can be used to inhibit history expansion; and characters enclosed within +double quotes may be subject to history expansion, since backslash can +escape the history expansion character, but single quotes may not, since +they are not treated specially within double quotes. + + When using the shell, only '\' and ''' may be used to escape the +history expansion character, but the history expansion character is also +treated as quoted if it immediately precedes the closing double quote in +a double-quoted string. + + Several shell options settable with the 'shopt' builtin (*note The +Shopt Builtin::) may be used to tailor the behavior of history +expansion. If the 'histverify' shell option is enabled, and Readline is +being used, history substitutions are not immediately passed to the +shell parser. Instead, the expanded line is reloaded into the Readline +editing buffer for further modification. If Readline is being used, and +the 'histreedit' shell option is enabled, a failed history expansion +will be reloaded into the Readline editing buffer for correction. The +'-p' option to the 'history' builtin command may be used to see what a history expansion will do before using it. The '-s' option to the 'history' builtin may be used to add commands to the end of the history list without actually executing them, so that they are available for @@ -9319,10 +9625,24 @@ don't want to keep, you may remove or edit it. To find out more about the options and arguments that the 'configure' script understands, type - bash-2.04$ ./configure --help + bash-4.2$ ./configure --help at the Bash prompt in your Bash source directory. + If you want to build Bash in a directory separate from the source +directory - to build for multiple architectures, for example - just use +the full path to the configure script. The following commands will +build bash in a directory under '/usr/local/build' from the source code +in '/usr/local/src/bash-4.4': + + mkdir /usr/local/build/bash-4.4 + cd /usr/local/build/bash-4.4 + bash /usr/local/src/bash-4.4/configure + make + + See *note Compiling For Multiple Architectures:: for more information +about building in a directory separate from the source. + If you need to do unusual things to compile Bash, please try to figure out how 'configure' could check whether or not to do them, and mail diffs or instructions to so they can be @@ -9369,10 +9689,10 @@ time, by placing the object files for each architecture in their own directory. To do this, you must use a version of 'make' that supports the 'VPATH' variable, such as GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run the 'configure' -script from the source directory. You may need to supply the -'--srcdir=PATH' argument to tell 'configure' where the source files are. -'configure' automatically checks for the source code in the directory -that 'configure' is in and in '..'. +script from the source directory (*note Basic Installation::). You may +need to supply the '--srcdir=PATH' argument to tell 'configure' where +the source files are. 'configure' automatically checks for the source +code in the directory that 'configure' is in and in '..'. If you have to use a 'make' that does not supports the 'VPATH' variable, you can compile Bash for one architecture at a time in the @@ -9538,8 +9858,8 @@ and linked, rather than changing run-time features. '--enable-largefile' Enable support for large files - (http://www.sas.com/standards/large_file/x_open.20Mar96.html) if - the operating system requires special compiler options to build + (http://www.unix.org/version2/whatsnew/lfs20mar.html) if the + operating system requires special compiler options to build programs which can access large files. This is enabled by default, if the operating system provides large file support. @@ -9611,6 +9931,12 @@ unless the operating system does not provide the necessary support. '--enable-debugger' Include support for the bash debugger (distributed separately). +'--enable-dev-fd-stat-broken' + If calling 'stat' on /dev/fd/N returns different results than + calling 'fstat' on file descriptor N, supply this option to enable + a workaround. This has implications for conditional commands that + test file attributes. + '--enable-direxpand-default' Cause the 'direxpand' shell option (*note The Shopt Builtin::) to be enabled by default when the shell starts. It is normally @@ -9681,7 +10007,7 @@ unless the operating system does not provide the necessary support. '--enable-prompt-string-decoding' Turn on the interpretation of a number of backslash-escaped - characters in the '$PS1', '$PS2', '$PS3', and '$PS4' prompt + characters in the '$PS0', '$PS1', '$PS2', and '$PS4' prompt strings. See *note Controlling the Prompt::, for a complete list of prompt string escape sequences. @@ -10636,7 +10962,7 @@ D.1 Index of Shell Builtin Commands * :: Bourne Shell Builtins. (line 11) * [: Bourne Shell Builtins. - (line 268) + (line 269) * alias: Bash Builtins. (line 11) * bg: Job Control Builtins. (line 7) @@ -10653,77 +10979,77 @@ D.1 Index of Shell Builtin Commands * complete: Programmable Completion Builtins. (line 30) * compopt: Programmable Completion Builtins. - (line 229) + (line 237) * continue: Bourne Shell Builtins. (line 85) * declare: Bash Builtins. (line 148) * dirs: Directory Stack Builtins. (line 7) * disown: Job Control Builtins. - (line 89) -* echo: Bash Builtins. (line 245) -* enable: Bash Builtins. (line 294) + (line 92) +* echo: Bash Builtins. (line 246) +* enable: Bash Builtins. (line 295) * eval: Bourne Shell Builtins. (line 94) * exec: Bourne Shell Builtins. (line 102) * exit: Bourne Shell Builtins. - (line 119) + (line 120) * export: Bourne Shell Builtins. - (line 126) + (line 127) * fc: Bash History Builtins. (line 10) * fg: Job Control Builtins. (line 17) * getopts: Bourne Shell Builtins. - (line 142) + (line 143) * hash: Bourne Shell Builtins. - (line 185) -* help: Bash Builtins. (line 323) + (line 186) +* help: Bash Builtins. (line 324) * history: Bash History Builtins. (line 40) * jobs: Job Control Builtins. (line 27) * kill: Job Control Builtins. (line 58) -* let: Bash Builtins. (line 342) -* local: Bash Builtins. (line 350) -* logout: Bash Builtins. (line 364) -* mapfile: Bash Builtins. (line 369) +* let: Bash Builtins. (line 343) +* local: Bash Builtins. (line 351) +* logout: Bash Builtins. (line 365) +* mapfile: Bash Builtins. (line 370) * popd: Directory Stack Builtins. (line 35) -* printf: Bash Builtins. (line 414) +* printf: Bash Builtins. (line 416) * pushd: Directory Stack Builtins. (line 53) * pwd: Bourne Shell Builtins. - (line 205) -* read: Bash Builtins. (line 458) -* readarray: Bash Builtins. (line 550) + (line 206) +* read: Bash Builtins. (line 460) +* readarray: Bash Builtins. (line 554) * readonly: Bourne Shell Builtins. - (line 215) + (line 216) * return: Bourne Shell Builtins. - (line 234) + (line 235) * set: The Set Builtin. (line 11) * shift: Bourne Shell Builtins. - (line 255) + (line 256) * shopt: The Shopt Builtin. (line 9) -* source: Bash Builtins. (line 559) +* source: Bash Builtins. (line 563) * suspend: Job Control Builtins. - (line 101) + (line 104) * test: Bourne Shell Builtins. - (line 268) + (line 269) * times: Bourne Shell Builtins. - (line 343) + (line 348) * trap: Bourne Shell Builtins. - (line 349) -* type: Bash Builtins. (line 564) -* typeset: Bash Builtins. (line 596) -* ulimit: Bash Builtins. (line 602) + (line 354) +* type: Bash Builtins. (line 568) +* typeset: Bash Builtins. (line 600) +* ulimit: Bash Builtins. (line 606) * umask: Bourne Shell Builtins. - (line 398) -* unalias: Bash Builtins. (line 701) + (line 403) +* unalias: Bash Builtins. (line 705) * unset: Bourne Shell Builtins. - (line 416) + (line 421) * wait: Job Control Builtins. (line 76) @@ -10738,9 +11064,9 @@ D.2 Index of Shell Reserved Words * !: Pipelines. (line 9) * [[: Conditional Constructs. - (line 121) + (line 124) * ]]: Conditional Constructs. - (line 121) + (line 124) * {: Command Grouping. (line 21) * }: Command Grouping. (line 21) * case: Conditional Constructs. @@ -10762,7 +11088,7 @@ D.2 Index of Shell Reserved Words * in: Conditional Constructs. (line 28) * select: Conditional Constructs. - (line 79) + (line 82) * then: Conditional Constructs. (line 7) * time: Pipelines. (line 9) @@ -10778,45 +11104,46 @@ D.3 Parameter and Variable Index [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) * BASHOPTS: Bash Variables. (line 16) * BASHPID: Bash Variables. (line 25) -* BASH_ALIASES: Bash Variables. (line 30) -* BASH_ARGC: Bash Variables. (line 39) -* BASH_ARGV: Bash Variables. (line 49) -* BASH_CMDS: Bash Variables. (line 59) -* BASH_COMMAND: Bash Variables. (line 68) -* BASH_COMPAT: Bash Variables. (line 73) -* BASH_ENV: Bash Variables. (line 88) -* BASH_EXECUTION_STRING: Bash Variables. (line 94) -* BASH_LINENO: Bash Variables. (line 97) -* BASH_LOADABLES_PATH: Bash Variables. (line 105) -* BASH_REMATCH: Bash Variables. (line 109) -* BASH_SOURCE: Bash Variables. (line 117) -* BASH_SUBSHELL: Bash Variables. (line 124) -* BASH_VERSINFO: Bash Variables. (line 129) -* BASH_VERSION: Bash Variables. (line 152) -* BASH_XTRACEFD: Bash Variables. (line 155) +* BASH_ALIASES: Bash Variables. (line 32) +* BASH_ARGC: Bash Variables. (line 41) +* BASH_ARGV: Bash Variables. (line 54) +* BASH_ARGV0: Bash Variables. (line 66) +* BASH_CMDS: Bash Variables. (line 74) +* BASH_COMMAND: Bash Variables. (line 83) +* BASH_COMPAT: Bash Variables. (line 88) +* BASH_ENV: Bash Variables. (line 103) +* BASH_EXECUTION_STRING: Bash Variables. (line 109) +* BASH_LINENO: Bash Variables. (line 112) +* BASH_LOADABLES_PATH: Bash Variables. (line 120) +* BASH_REMATCH: Bash Variables. (line 124) +* BASH_SOURCE: Bash Variables. (line 132) +* BASH_SUBSHELL: Bash Variables. (line 139) +* BASH_VERSINFO: Bash Variables. (line 144) +* BASH_VERSION: Bash Variables. (line 167) +* BASH_XTRACEFD: Bash Variables. (line 170) * bell-style: Readline Init File Syntax. (line 38) * bind-tty-special-chars: Readline Init File Syntax. @@ -10825,12 +11152,12 @@ D.3 Parameter and Variable Index (line 50) * CDPATH: Bourne Shell Variables. (line 9) -* CHILD_MAX: Bash Variables. (line 166) +* CHILD_MAX: Bash Variables. (line 181) * colored-completion-prefix: Readline Init File Syntax. (line 55) * colored-stats: Readline Init File Syntax. (line 62) -* COLUMNS: Bash Variables. (line 173) +* COLUMNS: Bash Variables. (line 188) * comment-begin: Readline Init File Syntax. (line 68) * completion-display-width: Readline Init File Syntax. @@ -10843,88 +11170,91 @@ D.3 Parameter and Variable Index (line 91) * completion-query-items: Readline Init File Syntax. (line 98) -* COMPREPLY: Bash Variables. (line 225) -* COMP_CWORD: Bash Variables. (line 179) -* COMP_KEY: Bash Variables. (line 208) -* COMP_LINE: Bash Variables. (line 185) -* COMP_POINT: Bash Variables. (line 190) -* COMP_TYPE: Bash Variables. (line 198) -* COMP_WORDBREAKS: Bash Variables. (line 212) -* COMP_WORDS: Bash Variables. (line 218) +* COMPREPLY: Bash Variables. (line 240) +* COMP_CWORD: Bash Variables. (line 194) +* COMP_KEY: Bash Variables. (line 223) +* COMP_LINE: Bash Variables. (line 200) +* COMP_POINT: Bash Variables. (line 205) +* COMP_TYPE: Bash Variables. (line 213) +* COMP_WORDBREAKS: Bash Variables. (line 227) +* COMP_WORDS: Bash Variables. (line 233) * convert-meta: Readline Init File Syntax. (line 108) -* COPROC: Bash Variables. (line 231) -* DIRSTACK: Bash Variables. (line 235) +* COPROC: Bash Variables. (line 246) +* DIRSTACK: Bash Variables. (line 250) * disable-completion: Readline Init File Syntax. (line 116) * echo-control-characters: Readline Init File Syntax. (line 121) * editing-mode: Readline Init File Syntax. (line 126) -* EMACS: Bash Variables. (line 245) +* EMACS: Bash Variables. (line 260) * emacs-mode-string: Readline Init File Syntax. (line 132) * enable-bracketed-paste: Readline Init File Syntax. (line 142) * enable-keypad: Readline Init File Syntax. (line 150) -* ENV: Bash Variables. (line 250) -* EUID: Bash Variables. (line 254) -* EXECIGNORE: Bash Variables. (line 258) +* ENV: Bash Variables. (line 265) +* EPOCHREALTIME: Bash Variables. (line 269) +* EPOCHSECONDS: Bash Variables. (line 277) +* EUID: Bash Variables. (line 284) +* EXECIGNORE: Bash Variables. (line 288) * expand-tilde: Readline Init File Syntax. (line 161) -* FCEDIT: Bash Variables. (line 271) -* FIGNORE: Bash Variables. (line 275) -* FUNCNAME: Bash Variables. (line 281) -* FUNCNEST: Bash Variables. (line 298) -* GLOBIGNORE: Bash Variables. (line 303) -* GROUPS: Bash Variables. (line 310) -* histchars: Bash Variables. (line 316) -* HISTCMD: Bash Variables. (line 331) -* HISTCONTROL: Bash Variables. (line 336) -* HISTFILE: Bash Variables. (line 352) -* HISTFILESIZE: Bash Variables. (line 356) -* HISTIGNORE: Bash Variables. (line 367) +* FCEDIT: Bash Variables. (line 301) +* FIGNORE: Bash Variables. (line 305) +* FUNCNAME: Bash Variables. (line 311) +* FUNCNEST: Bash Variables. (line 328) +* GLOBIGNORE: Bash Variables. (line 333) +* GROUPS: Bash Variables. (line 340) +* histchars: Bash Variables. (line 346) +* HISTCMD: Bash Variables. (line 361) +* HISTCONTROL: Bash Variables. (line 366) +* HISTFILE: Bash Variables. (line 382) +* HISTFILESIZE: Bash Variables. (line 386) +* HISTIGNORE: Bash Variables. (line 397) * history-preserve-point: Readline Init File Syntax. (line 165) * history-size: Readline Init File Syntax. (line 171) -* HISTSIZE: Bash Variables. (line 387) -* HISTTIMEFORMAT: Bash Variables. (line 394) +* HISTSIZE: Bash Variables. (line 417) +* HISTTIMEFORMAT: Bash Variables. (line 424) * HOME: Bourne Shell Variables. (line 13) * horizontal-scroll-mode: Readline Init File Syntax. (line 180) -* HOSTFILE: Bash Variables. (line 402) -* HOSTNAME: Bash Variables. (line 413) -* HOSTTYPE: Bash Variables. (line 416) +* HOSTFILE: Bash Variables. (line 432) +* HOSTNAME: Bash Variables. (line 443) +* HOSTTYPE: Bash Variables. (line 446) * IFS: Bourne Shell Variables. (line 18) -* IGNOREEOF: Bash Variables. (line 419) +* IGNOREEOF: Bash Variables. (line 449) * input-meta: Readline Init File Syntax. (line 187) -* INPUTRC: Bash Variables. (line 429) +* INPUTRC: Bash Variables. (line 459) +* INSIDE_EMACS: Bash Variables. (line 463) * isearch-terminators: Readline Init File Syntax. (line 195) * keymap: Readline Init File Syntax. (line 202) -* LANG: Bash Variables. (line 433) -* LC_ALL: Bash Variables. (line 437) -* LC_COLLATE: Bash Variables. (line 441) -* LC_CTYPE: Bash Variables. (line 448) +* LANG: Bash Variables. (line 469) +* LC_ALL: Bash Variables. (line 473) +* LC_COLLATE: Bash Variables. (line 477) +* LC_CTYPE: Bash Variables. (line 484) * LC_MESSAGES: Locale Translation. (line 11) -* LC_MESSAGES <1>: Bash Variables. (line 453) -* LC_NUMERIC: Bash Variables. (line 457) -* LC_TIME: Bash Variables. (line 461) -* LINENO: Bash Variables. (line 465) -* LINES: Bash Variables. (line 469) -* MACHTYPE: Bash Variables. (line 475) +* LC_MESSAGES <1>: Bash Variables. (line 489) +* LC_NUMERIC: Bash Variables. (line 493) +* LC_TIME: Bash Variables. (line 497) +* LINENO: Bash Variables. (line 501) +* LINES: Bash Variables. (line 505) +* MACHTYPE: Bash Variables. (line 511) * MAIL: Bourne Shell Variables. (line 22) -* MAILCHECK: Bash Variables. (line 479) +* MAILCHECK: Bash Variables. (line 515) * MAILPATH: Bourne Shell Variables. (line 27) -* MAPFILE: Bash Variables. (line 487) +* MAPFILE: Bash Variables. (line 523) * mark-modified-lines: Readline Init File Syntax. (line 232) * mark-symlinked-directories: Readline Init File Syntax. @@ -10935,42 +11265,42 @@ D.3 Parameter and Variable Index (line 249) * meta-flag: Readline Init File Syntax. (line 187) -* OLDPWD: Bash Variables. (line 491) +* OLDPWD: Bash Variables. (line 527) * OPTARG: Bourne Shell Variables. (line 34) -* OPTERR: Bash Variables. (line 494) +* OPTERR: Bash Variables. (line 530) * OPTIND: Bourne Shell Variables. (line 38) -* OSTYPE: Bash Variables. (line 498) +* OSTYPE: Bash Variables. (line 534) * output-meta: Readline Init File Syntax. (line 254) * page-completions: Readline Init File Syntax. (line 260) * PATH: Bourne Shell Variables. (line 42) -* PIPESTATUS: Bash Variables. (line 501) -* POSIXLY_CORRECT: Bash Variables. (line 506) -* PPID: Bash Variables. (line 515) -* PROMPT_COMMAND: Bash Variables. (line 519) -* PROMPT_DIRTRIM: Bash Variables. (line 523) -* PS0: Bash Variables. (line 529) +* PIPESTATUS: Bash Variables. (line 537) +* POSIXLY_CORRECT: Bash Variables. (line 542) +* PPID: Bash Variables. (line 552) +* PROMPT_COMMAND: Bash Variables. (line 556) +* PROMPT_DIRTRIM: Bash Variables. (line 560) +* PS0: Bash Variables. (line 566) * PS1: Bourne Shell Variables. (line 48) * PS2: Bourne Shell Variables. (line 53) -* PS3: Bash Variables. (line 534) -* PS4: Bash Variables. (line 539) -* PWD: Bash Variables. (line 545) -* RANDOM: Bash Variables. (line 548) -* READLINE_LINE: Bash Variables. (line 553) -* READLINE_POINT: Bash Variables. (line 557) -* REPLY: Bash Variables. (line 561) +* PS3: Bash Variables. (line 571) +* PS4: Bash Variables. (line 576) +* PWD: Bash Variables. (line 584) +* RANDOM: Bash Variables. (line 587) +* READLINE_LINE: Bash Variables. (line 592) +* READLINE_POINT: Bash Variables. (line 596) +* REPLY: Bash Variables. (line 600) * revert-all-at-newline: Readline Init File Syntax. (line 270) -* SECONDS: Bash Variables. (line 564) -* SHELL: Bash Variables. (line 570) -* SHELLOPTS: Bash Variables. (line 575) -* SHLVL: Bash Variables. (line 584) +* SECONDS: Bash Variables. (line 603) +* SHELL: Bash Variables. (line 609) +* SHELLOPTS: Bash Variables. (line 614) +* SHLVL: Bash Variables. (line 623) * show-all-if-ambiguous: Readline Init File Syntax. (line 276) * show-all-if-unmodified: Readline Init File Syntax. @@ -10981,16 +11311,16 @@ D.3 Parameter and Variable Index (line 297) * TEXTDOMAIN: Locale Translation. (line 11) * TEXTDOMAINDIR: Locale Translation. (line 11) -* TIMEFORMAT: Bash Variables. (line 589) -* TMOUT: Bash Variables. (line 627) -* TMPDIR: Bash Variables. (line 639) -* UID: Bash Variables. (line 643) +* TIMEFORMAT: Bash Variables. (line 628) +* TMOUT: Bash Variables. (line 666) +* TMPDIR: Bash Variables. (line 678) +* UID: Bash Variables. (line 682) * vi-cmd-mode-string: Readline Init File Syntax. (line 310) * vi-ins-mode-string: Readline Init File Syntax. - (line 320) + (line 321) * visible-stats: Readline Init File Syntax. - (line 330) + (line 332)  File: bashref.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes @@ -11006,7 +11336,7 @@ D.4 Function Index * accept-line (Newline or Return): Commands For History. (line 6) * alias-expand-line (): Miscellaneous Commands. - (line 124) + (line 125) * backward-char (C-b): Commands For Moving. (line 15) * backward-delete-char (Rubout): Commands For Text. (line 17) * backward-kill-line (C-x Rubout): Commands For Killing. @@ -11021,10 +11351,10 @@ D.4 Function Index * call-last-kbd-macro (C-x e): Keyboard Macros. (line 13) * capitalize-word (M-c): Commands For Text. (line 61) * character-search (C-]): Miscellaneous Commands. - (line 41) + (line 42) * character-search-backward (M-C-]): Miscellaneous Commands. - (line 46) -* clear-screen (C-l): Commands For Moving. (line 34) + (line 47) +* clear-screen (C-l): Commands For Moving. (line 48) * complete (): Commands For Completion. (line 6) * complete-command (M-!): Commands For Completion. @@ -11054,56 +11384,56 @@ D.4 Function Index (line 46) * digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6) * display-shell-version (C-x C-v): Miscellaneous Commands. - (line 109) -* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands. + (line 110) +* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands. (line 14) * downcase-word (M-l): Commands For Text. (line 57) * dump-functions (): Miscellaneous Commands. - (line 73) + (line 74) * dump-macros (): Miscellaneous Commands. - (line 85) + (line 86) * dump-variables (): Miscellaneous Commands. - (line 79) + (line 80) * dynamic-complete-history (M-): Commands For Completion. (line 90) -* edit-and-execute-command (C-xC-e): Miscellaneous Commands. - (line 138) +* edit-and-execute-command (C-x C-e): Miscellaneous Commands. + (line 140) * end-kbd-macro (C-x )): Keyboard Macros. (line 9) * end-of-file (usually C-d): Commands For Text. (line 6) * end-of-history (M->): Commands For History. (line 23) * end-of-line (C-e): Commands For Moving. (line 9) * exchange-point-and-mark (C-x C-x): Miscellaneous Commands. - (line 36) + (line 37) * forward-backward-delete-char (): Commands For Text. (line 21) * forward-char (C-f): Commands For Moving. (line 12) * forward-search-history (C-s): Commands For History. (line 31) * forward-word (M-f): Commands For Moving. (line 18) * glob-complete-word (M-g): Miscellaneous Commands. - (line 91) + (line 92) * glob-expand-word (C-x *): Miscellaneous Commands. - (line 97) + (line 98) * glob-list-expansions (C-x g): Miscellaneous Commands. - (line 103) + (line 104) * history-and-alias-expand-line (): Miscellaneous Commands. - (line 127) + (line 128) * history-expand-line (M-^): Miscellaneous Commands. - (line 117) + (line 118) * history-search-backward (): Commands For History. (line 53) * history-search-forward (): Commands For History. (line 47) -* history-substr-search-backward (): Commands For History. +* history-substring-search-backward (): Commands For History. (line 65) -* history-substr-search-forward (): Commands For History. +* history-substring-search-forward (): Commands For History. (line 59) * insert-comment (M-#): Miscellaneous Commands. - (line 60) + (line 61) * insert-completions (M-*): Commands For Completion. (line 22) * insert-last-argument (M-. or M-_): Miscellaneous Commands. - (line 130) + (line 131) * kill-line (C-k): Commands For Killing. (line 6) * kill-region (): Commands For Killing. @@ -11113,19 +11443,20 @@ D.4 Function Index * kill-word (M-d): Commands For Killing. (line 19) * magic-space (): Miscellaneous Commands. - (line 120) + (line 121) * menu-complete (): Commands For Completion. (line 26) * menu-complete-backward (): Commands For Completion. (line 38) * next-history (C-n): Commands For History. (line 17) +* next-screen-line (): Commands For Moving. (line 41) * non-incremental-forward-search-history (M-n): Commands For History. (line 41) * non-incremental-reverse-search-history (M-p): Commands For History. (line 35) * operate-and-get-next (C-o): Miscellaneous Commands. - (line 133) + (line 134) * overwrite-mode (): Commands For Text. (line 65) * possible-command-completions (C-x !): Commands For Completion. (line 86) @@ -11140,38 +11471,39 @@ D.4 Function Index * possible-variable-completions (C-x $): Commands For Completion. (line 68) * prefix-meta (): Miscellaneous Commands. - (line 18) + (line 19) * previous-history (C-p): Commands For History. (line 13) +* previous-screen-line (): Commands For Moving. (line 34) * print-last-kbd-macro (): Keyboard Macros. (line 17) * quoted-insert (C-q or C-v): Commands For Text. (line 26) * re-read-init-file (C-x C-r): Miscellaneous Commands. (line 6) -* redraw-current-line (): Commands For Moving. (line 38) +* redraw-current-line (): Commands For Moving. (line 52) * reverse-search-history (C-r): Commands For History. (line 27) * revert-line (M-r): Miscellaneous Commands. - (line 25) + (line 26) * self-insert (a, b, A, 1, !, ...): Commands For Text. (line 30) * set-mark (C-@): Miscellaneous Commands. - (line 32) + (line 33) * shell-backward-kill-word (): Commands For Killing. (line 33) * shell-backward-word (): Commands For Moving. (line 30) * shell-expand-line (M-C-e): Miscellaneous Commands. - (line 112) + (line 113) * shell-forward-word (): Commands For Moving. (line 26) * shell-kill-word (): Commands For Killing. (line 28) * skip-csi-sequence (): Miscellaneous Commands. - (line 51) + (line 52) * start-kbd-macro (C-x (): Keyboard Macros. (line 6) * tilde-expand (M-&): Miscellaneous Commands. - (line 29) + (line 30) * transpose-chars (C-t): Commands For Text. (line 42) * transpose-words (M-t): Commands For Text. (line 48) * undo (C-_ or C-x C-u): Miscellaneous Commands. - (line 22) + (line 23) * universal-argument (): Numeric Arguments. (line 10) * unix-filename-rubout (): Commands For Killing. (line 41) @@ -11273,13 +11605,13 @@ D.5 Concept Index * history list: Bash History Facilities. (line 6) * History, how to use: A Programmable Completion Example. - (line 114) + (line 113) * identifier: Definitions. (line 51) * initialization file, readline: Readline Init File. (line 6) * installation: Basic Installation. (line 6) * interaction, readline: Readline Interaction. (line 6) -* interactive shell: Invoking Bash. (line 128) +* interactive shell: Invoking Bash. (line 131) * interactive shell <1>: Interactive Shells. (line 6) * internationalization: Locale Translation. (line 6) * job: Definitions. (line 38) @@ -11290,7 +11622,7 @@ D.5 Concept Index * killing text: Readline Killing Commands. (line 6) * localization: Locale Translation. (line 6) -* login shell: Invoking Bash. (line 125) +* login shell: Invoking Bash. (line 128) * matching, pattern: Pattern Matching. (line 6) * metacharacter: Definitions. (line 46) * name: Definitions. (line 51) @@ -11351,134 +11683,134 @@ D.5 Concept Index  Tag Table: -Node: Top897 -Node: Introduction2817 -Node: What is Bash?3033 -Node: What is a shell?4147 -Node: Definitions6685 -Node: Basic Shell Features9636 -Node: Shell Syntax10855 -Node: Shell Operation11881 -Node: Quoting13174 -Node: Escape Character14474 -Node: Single Quotes14959 -Node: Double Quotes15307 -Node: ANSI-C Quoting16585 -Node: Locale Translation17838 -Node: Comments18734 -Node: Shell Commands19352 -Node: Simple Commands20224 -Node: Pipelines20855 -Node: Lists23598 -Node: Compound Commands25327 -Node: Looping Constructs26330 -Node: Conditional Constructs28793 -Node: Command Grouping39715 -Node: Coprocesses41194 -Node: GNU Parallel43026 -Node: Shell Functions46999 -Node: Shell Parameters52205 -Node: Positional Parameters56618 -Node: Special Parameters57518 -Node: Shell Expansions60855 -Node: Brace Expansion62949 -Node: Tilde Expansion65730 -Node: Shell Parameter Expansion68078 -Node: Command Substitution82210 -Node: Arithmetic Expansion83565 -Node: Process Substitution84497 -Node: Word Splitting85617 -Node: Filename Expansion87561 -Node: Pattern Matching89845 -Node: Quote Removal93543 -Node: Redirections93838 -Node: Executing Commands103258 -Node: Simple Command Expansion103928 -Node: Command Search and Execution105858 -Node: Command Execution Environment108194 -Node: Environment111178 -Node: Exit Status112837 -Node: Signals114507 -Node: Shell Scripts116474 -Node: Shell Builtin Commands118989 -Node: Bourne Shell Builtins121023 -Node: Bash Builtins141623 -Node: Modifying Shell Behavior170268 -Node: The Set Builtin170613 -Node: The Shopt Builtin181026 -Node: Special Builtins196825 -Node: Shell Variables197804 -Node: Bourne Shell Variables198241 -Node: Bash Variables200272 -Node: Bash Features228652 -Node: Invoking Bash229551 -Node: Bash Startup Files235500 -Node: Interactive Shells240603 -Node: What is an Interactive Shell?241013 -Node: Is this Shell Interactive?241662 -Node: Interactive Shell Behavior242477 -Node: Bash Conditional Expressions245852 -Node: Shell Arithmetic250092 -Node: Aliases252909 -Node: Arrays255457 -Node: The Directory Stack260541 -Node: Directory Stack Builtins261325 -Node: Controlling the Prompt264293 -Node: The Restricted Shell267039 -Node: Bash POSIX Mode268864 -Node: Job Control279215 -Node: Job Control Basics279675 -Node: Job Control Builtins284394 -Node: Job Control Variables288924 -Node: Command Line Editing290080 -Node: Introduction and Notation291751 -Node: Readline Interaction293374 -Node: Readline Bare Essentials294565 -Node: Readline Movement Commands296348 -Node: Readline Killing Commands297308 -Node: Readline Arguments299226 -Node: Searching300270 -Node: Readline Init File302456 -Node: Readline Init File Syntax303603 -Node: Conditional Init Constructs323790 -Node: Sample Init File326315 -Node: Bindable Readline Commands329432 -Node: Commands For Moving330636 -Node: Commands For History331779 -Node: Commands For Text336068 -Node: Commands For Killing339457 -Node: Numeric Arguments341938 -Node: Commands For Completion343077 -Node: Keyboard Macros347268 -Node: Miscellaneous Commands347955 -Node: Readline vi Mode353759 -Node: Programmable Completion354666 -Node: Programmable Completion Builtins362127 -Node: A Programmable Completion Example372013 -Node: Using History Interactively377265 -Node: Bash History Facilities377949 -Node: Bash History Builtins380950 -Node: History Interaction384947 -Node: Event Designators387911 -Node: Word Designators389130 -Node: Modifiers390767 -Node: Installing Bash392169 -Node: Basic Installation393306 -Node: Compilers and Options395997 -Node: Compiling For Multiple Architectures396738 -Node: Installation Names398401 -Node: Specifying the System Type399219 -Node: Sharing Defaults399935 -Node: Operation Controls400608 -Node: Optional Features401566 -Node: Reporting Bugs411823 -Node: Major Differences From The Bourne Shell413017 -Node: GNU Free Documentation License429869 -Node: Indexes455046 -Node: Builtin Index455500 -Node: Reserved Word Index462327 -Node: Variable Index464775 -Node: Function Index480234 -Node: Concept Index493391 +Node: Top895 +Node: Introduction2813 +Node: What is Bash?3029 +Node: What is a shell?4143 +Node: Definitions6681 +Node: Basic Shell Features9632 +Node: Shell Syntax10851 +Node: Shell Operation11877 +Node: Quoting13170 +Node: Escape Character14470 +Node: Single Quotes14955 +Node: Double Quotes15303 +Node: ANSI-C Quoting16581 +Node: Locale Translation17840 +Node: Comments18736 +Node: Shell Commands19354 +Node: Simple Commands20226 +Node: Pipelines20857 +Node: Lists23789 +Node: Compound Commands25580 +Node: Looping Constructs26592 +Node: Conditional Constructs29087 +Node: Command Grouping40170 +Node: Coprocesses41649 +Node: GNU Parallel43552 +Node: Shell Functions47610 +Node: Shell Parameters54693 +Node: Positional Parameters59106 +Node: Special Parameters60006 +Node: Shell Expansions63760 +Node: Brace Expansion65883 +Node: Tilde Expansion68607 +Node: Shell Parameter Expansion71224 +Node: Command Substitution85680 +Node: Arithmetic Expansion87035 +Node: Process Substitution87967 +Node: Word Splitting89087 +Node: Filename Expansion91031 +Node: Pattern Matching93561 +Node: Quote Removal97547 +Node: Redirections97842 +Node: Executing Commands107400 +Node: Simple Command Expansion108070 +Node: Command Search and Execution110000 +Node: Command Execution Environment112376 +Node: Environment115360 +Node: Exit Status117019 +Node: Signals118689 +Node: Shell Scripts120656 +Node: Shell Builtin Commands123171 +Node: Bourne Shell Builtins125209 +Node: Bash Builtins145959 +Node: Modifying Shell Behavior174884 +Node: The Set Builtin175229 +Node: The Shopt Builtin185642 +Node: Special Builtins203284 +Node: Shell Variables204263 +Node: Bourne Shell Variables204700 +Node: Bash Variables206804 +Node: Bash Features237264 +Node: Invoking Bash238163 +Node: Bash Startup Files244176 +Node: Interactive Shells249279 +Node: What is an Interactive Shell?249689 +Node: Is this Shell Interactive?250338 +Node: Interactive Shell Behavior251153 +Node: Bash Conditional Expressions254640 +Node: Shell Arithmetic259217 +Node: Aliases262034 +Node: Arrays264654 +Node: The Directory Stack270020 +Node: Directory Stack Builtins270804 +Node: Controlling the Prompt273772 +Node: The Restricted Shell276538 +Node: Bash POSIX Mode278363 +Node: Job Control289296 +Node: Job Control Basics289756 +Node: Job Control Builtins294724 +Node: Job Control Variables299451 +Node: Command Line Editing300607 +Node: Introduction and Notation302278 +Node: Readline Interaction303901 +Node: Readline Bare Essentials305092 +Node: Readline Movement Commands306875 +Node: Readline Killing Commands307835 +Node: Readline Arguments309753 +Node: Searching310797 +Node: Readline Init File312983 +Node: Readline Init File Syntax314130 +Node: Conditional Init Constructs334569 +Node: Sample Init File338765 +Node: Bindable Readline Commands341882 +Node: Commands For Moving343086 +Node: Commands For History344935 +Node: Commands For Text349230 +Node: Commands For Killing352618 +Node: Numeric Arguments355099 +Node: Commands For Completion356238 +Node: Keyboard Macros360429 +Node: Miscellaneous Commands361116 +Node: Readline vi Mode367069 +Node: Programmable Completion367976 +Node: Programmable Completion Builtins375756 +Node: A Programmable Completion Example386449 +Node: Using History Interactively391689 +Node: Bash History Facilities392373 +Node: Bash History Builtins395378 +Node: History Interaction399909 +Node: Event Designators403529 +Node: Word Designators404748 +Node: Modifiers406385 +Node: Installing Bash407787 +Node: Basic Installation408924 +Node: Compilers and Options412182 +Node: Compiling For Multiple Architectures412923 +Node: Installation Names414616 +Node: Specifying the System Type415434 +Node: Sharing Defaults416150 +Node: Operation Controls416823 +Node: Optional Features417781 +Node: Reporting Bugs428299 +Node: Major Differences From The Bourne Shell429493 +Node: GNU Free Documentation License446345 +Node: Indexes471522 +Node: Builtin Index471976 +Node: Reserved Word Index478803 +Node: Variable Index481251 +Node: Function Index497002 +Node: Concept Index510305  End Tag Table diff --git a/doc/bashref.pdf b/doc/bashref.pdf index fff99af93..0864d8bbd 100644 Binary files a/doc/bashref.pdf and b/doc/bashref.pdf differ diff --git a/doc/bashref.ps b/doc/bashref.ps index a7c58bd71..d98176532 100644 --- a/doc/bashref.ps +++ b/doc/bashref.ps @@ -1,8 +1,8 @@ %!PS-Adobe-2.0 -%%Creator: dvips(k) 5.996 Copyright 2016 Radical Eye Software +%%Creator: dvips(k) 5.998 Copyright 2018 Radical Eye Software %%Title: bashref.dvi -%%CreationDate: Wed Sep 7 17:14:23 2016 -%%Pages: 178 +%%CreationDate: Wed Jan 2 14:14:45 2019 +%%Pages: 184 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: CMBX12 CMR10 CMTT10 CMSL10 CMSY10 CMMI12 CMMI10 CMCSC10 @@ -12,7 +12,7 @@ %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2016.09.07:1714 +%DVIPSSource: TeX output 2019.01.02:0914 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -3453,6 +3453,11 @@ end readonly def dup 45 /hyphen put dup 47 /slash put dup 50 /two put +dup 73 /I put +dup 79 /O put +dup 80 /P put +dup 83 /S put +dup 88 /X put dup 97 /a put dup 98 /b put dup 99 /c put @@ -3655,125 +3660,157 @@ BBBDDBCC34B65A7D17B8BE932148C39084A9C71516582BCE25EBF7C1E0D84314 095B1E04CC60718A2DC2BCD99B34202878786A58AE7C2F43D985874AB8A3F204 4DBD4B9240EE96F0487CB687830972BF302F262C6381B2C79773EEB152B712E9 34E8229E0B59788EB9B9FC1AC1E123751D1FF032610410F0847E6B9B9A575306 -53FC00ED82D0BDA8EB008F2380FDBA06D2F8C0210A261508BA95DD600436E0BF -5E8A00CE3C92859961557763D413E79CDD37FDB07131FDC420EF525CC0B5377F -9772D3876DBFDB57FE6275D187832F2B7A635967B201E70B532E85838ED3874B -82B36AB9EAB7DD4D2B5C4140419CA04E87316E802CC93DE6336C22FEBE80C3A5 -D43A0F808E5E6A17F7BCF812FF5EE5AC1959E07F36B24C9192E375FCA3C0A84C -1D1DD2093D4F151B9FEFBA90DB4E94A1D68E49DF5A715A5BE04E7B7D8C384D61 -5DDD71F057FEF51DE7D002AB3BFE0096C47EB3AAC7B89EEEB9E2F9CFC6BCDFD9 -A438C1097D5253E49DC0DE5B6E8F976AE8894914BF8CAB5236C8A3BB2A437CE6 -374D96AFC592F1238357817E1F2836EA763A3C0DEA2DD3F7D758BA61307C21F4 -796A18638504797DD9A5131EC48DB0D23FC9A3E069B2FECA5B36A2260C6FED2E -6EBDE3AED119EDFA96B837C56202ADF7F7747291A43CDDED6EB7DB5B9373CB78 -F6FA0B92BB2C17AD8DA549E878D8DEA681028539E5E2A223E2F9BA4CA09A6FF4 -EA195F1EAE62CC33F2282888962B9032D1C83EC4EDD832866A472426EBA6080A -75E02F39CE0421C5C06B9D593022C23D675D7BE879FCE0B20A9CBB394F9D3815 -9C847518BB8DDBF3A89D699C1FA84E704B02BC85D61ADA5E548CD8DBE269A3E7 -03626A0FEE75E116F95B5D31C73BC852C5FDCF524542BFD9D05D8EB4B2A114E0 -C2FFCE282CBD87D82C1D4E64772B0492068B139B1795E287899CED7791EF5C8F -E77391C51552FF08DAA85BC8B9896CB5C792C3E1C4D44E3CAC1EAEC02E4B986F -E5059463613DD3643F8DCE2264FA66D712A0DACCF86DDAB315393219F5EBD18E -E220AD61CE3C67664615A5F9734421152382E8EA9CBED8269ACFFC37873BA329 -20649A6F684D31BF37194952496E8B962B75B83CEDE72F0DAAB761120B710677 -F3AECF2A67F512F7C423B1DA012D0D0D44F009346C4953447950F514731830D1 -59D01BFF4511CD0257D5ECC2CC4A859E0ED92627F659547C8F137DC0F49F06D6 -02F624EEBDBC779FBECB1816A88F02B3565A9C3D42E919F755F3D80F6FAB681B -585B5A49F62581EDE1D1DF1906007A8926932FE74FA2A94B92026DE9D678EA3B -ABC3C2EE5A3757317AD5F5CD361A511F4019CAF77C46C8FFE4615CD6CFDF7F8C -8CD06F1A2DDBD3BBA03FBBF8DCC898EE71E7D19CDE66971150359310D0BB68B8 -65F3E41D34C8D063A71C27B6C0F27753A9E35D291477858E5B734D72C40C4573 -203C5529340CB56BC00EA0E02B3DB54173E6480D29D957E6735146163980F0A8 -CA4086192E6095F411939DD3FF19854F8F58B39A23D3ABA22BEAE05C4B6B6845 -98968C08559A037DE955F77359FC39249C1149BC4634D10DAABB086A23D9A37A -73A61EAB63BE3B1A8D8E76ED94E731169E892B469056757EC885D8AC4FF50E5C -1D80EFE20E40E26006953C53D765B3BCB4C5396646DB3AEF01F939BD163ADD87 -FEB1E55A73722A0866DEC922EFF8B06AFDF2FC742EB1CA422822BB378310A994 -794062BE62D5BC4D44C25655C902F4FB4FA63CE21E095E4DF3723CFE7D2D961F -10A715B194ED855942588BDA460A28F1B5D849A34D85756CC8CE874E2384AD9F -3A1C348996EA94927BCE9715A8B229C0D7FCC2C07592052796D7BAE23DF895DA -1CF991E912EAC97601FD79F35616A1F23D82647BCB49C360740CF010CA4E8ADF -97A9CAC032D12919CC167CA4C2E6C60EBB4AB87C8F2BDF71E28E91A9BC96056F -5D905902AE964E5336CFDACC8C5CFC5607D75CA5F364AB8E9A65FD372BF15FA9 -0CE1519CD7DBF31F92D2A078754E4BF90F3121F6F698DEC238404EDDD4EEA153 -0335941E4EB8F08DE0104FD8633BE277E9ED26FC65D28FC1D604D8504B2F788A -11E2206ACE8AB33D14CE9D4CFC917008D44AFA2B1877C3D42455593889867784 -7CE696EABDEF95872F065DAFEFAC253F367D47127CE76FCB85BBF0684DD1663C -876E68EC35B21593A10EA5553311880B8EF744014CD1ACFC067FDFD46978BA23 -C86FBA05CEB66E67621680BEE0ABF82364D4E3235A20033437C6B84A71FB34E6 -F8A160AC477A1302B4F98D00FDDB2A35ED9B315700669D9D8A3D254F786316AF -882CAC6555A766281A0836CD45D8CD8245CA69729260D54C11DB43032A0FAC0B -05869ED0A432CEF854FE665BACB0F780C9123B4DA1E1895F8717DDE4A58BD3FD -D214195066D4587463E839EDF667E475BC04EEDAEC41422AC9BC27C238E88318 -7DFFED5D04AAFB1F63AC651B1A4113B7CE9838ABAF75632EDA8B5EE0C8474678 -58898AD595ACD99029DC34EB4BADE834C04444941C3D8280B93951A9E8554EF9 -5F0FAA218DD8224B94807CE2D8DF7E4A5E2B28C44A551DB0708B5D6D5F000B96 -0422A8E953233296B6E5EA698921F1EEEBDF0C5CC72263663895940B4C1EA28E -E0E3AF21698D5430D6495E32E0D5F5E538EF835FBCF4A96DAD8F011B145584EF -1C33809372DF602D1FB3D80A4EAB65897F672642E4317926DF178BAB6F9851C7 -63613B3DB11FF07F9C7582592B620C7767D005D7B0C28AF2D309E6CAC222055F -2C20A58AC1B407641B483D571B9E959A3AE0DEF316EFF7A4514D5313C47AAFBE -82CC583BEB32F20E4C3A5650B58812EF357B68F26882D30A6BBEBDE64E2FD910 -AB8D974CE5C968C7D34390529F4714A9F1D2373DB1D912D418225932541FB250 -9C74346749DE9C5662B1C40437E783A78A283AD6EF43B2C111DEFBEECEB17ED7 -3630AE404B310F1148C82F4969A794D945CA5E1C18F39BB6F9C46EDC8BC3C88B -FAC2116B2338E1AF9C975ECC8474BCA351E3FDF89ED4352FF6A3D6C7EF7A7BDC -DD4B2DA9E7C77F8A6623B670963D2B9B9A80F8445E17B85194AD45E02FF10484 -85E0A700BDE9F574487F9494B424646D48999EA67D469A22B9CB72123F31EA5E -51C07370BFB1C5EDB4ADE75E7111A0116C212920F1362353BF58F33D7E8EE680 -DBF8085B46AFC40ED9FFD7AE756CB267D0F321FDB71F2DD35FBD3003E91E2758 -3DED65748BE5CD0D2D244E8FA187749FED44ED0C71056AD954FCF656DE28E70B -93A79EB4D7BD59E92911EC64EA794732A79B9908B7C6DD42C99BDF07AAA06E07 -5CD6497C489BC56B09E44D22D0FE69521A9BA20ACBFDAB8EE718625711BF479E -512FEC4A8F9EC7CF66D4CC44E2D0EA1235BF17C3D0AD6859385CECA3D4A640B0 -762D325D3A449BF7115CE8469A493C494721D6636BCB9C55ACF1D0F3489E5534 -4A76A8F3E3AD6252D8CBD3EDFDAC890A7B497286241AFE35B2261B66018A1523 -4B9FD31AE07A6CCA6B91A176BC38BC03F97D71F80270E14B83B012FA5270B7B4 -73F889DED2D4BFB24536E495F96BDF408E3840AF1567E9960A4F22F0B749749B -C156336BD7F349F2F82CE54B459462CB7C9846CC090E752DCDC871FF0873076E -8885B0AEF490DB0C9FA98A8FDF84EDFD52AB0F992EEB236A79FB8FB52718EBA6 -E0D586512F81079D468A75336540163B966670B437304F3272CF6E49252662C6 -419E8B2B14D240A1DB0CF6EF14E024F9D8C6882F865D7E007B46DB65E2E6AB1A -22C5F096B255E91CABA7C441A3149FFB4E19BA97E5D43779C2A80208E279A91E -8B8A281C079B819BBB6A5B1A62F34D59B7223D9FBB5F5E96F0D9AFEBD3CE3D57 -A4C4D2345776FCA140EA95242C8AF1EE7B93D2676209B750ABFCFC8CAF50F578 -4C364CF8BC46839A4379624D56B7B917743E9D6A284E7B315D461ED66B262413 -A9AE1741C633A92061DF92AAF78A18586CDCA41248C586F7D272378F9CA76980 -202A391CC9FD46794140F06CC75AF2F4986D690939E083CDF9B96D066B1EC8F3 -DE3B68AC8FAB84970B1A199B3F3AA5BE27ED8119F306CC5F26230C16E9D9FB31 -1EE9D3F5175E4D4D7A8A2945000C37BC73816AEDE6F2AC0F09B788C9988BA69B -82CF336482F490F05725696EB080E460FC03B3E28C1B3613C8E5FE3DEA048D97 -4AC72C9955FDE282FA8C8385B30E3A7EFE247B48B370DCB439FA721BED19AF4C -FDC3D3543A25A4E0273419B6CDD7209FB336C1542BA56257E5D31B70529C12D7 -524617868F4F3B49799322EDF504750D1BAAE307ABC4843704B64ED8AD4996B7 -5193CEA660390527734BF1448AC09998E70FF15BD70F8B6388B0A987CBC783FC -990F7A5EA016EBC024F12BC9812C7C4DD6E991DB89415A49D0B265E453732F4D -2B6BB50E995E719B00DEBE74E7D1E291A739C4EAB39B5A61763DDB65BDA6E1C9 -17C49BF1A76546BE0EDAAA17310AB2D01BDF059B066263C8FFBDA53281C882DA -E2DA35ECE5B4454C8031DBECD8675B60E54261A7D1F70560C6D8CBAB436EF058 -5A0189426AF00AD7EB43FBD13976D8D769ED2639ACBF613A308C941CDB5A632F -F76E14224909A8E7E45B9B5A47BDC9B7B3E3616AEC4DEEAF2899A59B6E144802 -534109EB0E3ECD270E417B2E9CD8D27DE637AC798ED5CCF791061297A0B218A6 -1188C03BAC8DD8DD783BBBF8C4C9AE98E8F1EFC4684CA4BEE6D533458BB229ED -4E31392DC4591DF2D2D07632EBEC0A5FA2C4508C1FD48D56EE871EAF4A84AC07 -A1E34CA2CD81ED369043998A23DD01301D41C582963F07EC3417F09ABF45844E -A74F386BA813F0AC462FE268407B9D2A8813FFCA604C342CE82493DAF631B2B3 -B6D3E9F3398761C4B958569F0D833D27973B07F9DA9D84AC512C284844C04866 -74A325E4ED894F640B8F802097B7C6C4F04BBBC8A7BC6EAECC60EBBF4E676A30 -4A5D0DE4AB45D0C913CCEEB8032D1946A35928BFB0FD76AE324E7E3CEB5B99C9 -0A0A6EBAA6F6D8E4292F9C5408D3859CFDEBFC9413032FA1A6E194C5F616A3D6 -FB0FEB8966534CCC9E6D67DFCA105E8994810D8EE414DAFC80B8A95CAFA254CA -CCAA72B84130B5E485529013A35040074072A8A63B2F4384D976BBFA0A743C5A -0A079A2CD15E598801AD121303CC37A2FD3942776FD1AA0805BED2B646D4D1CD -9DE65CB859735EDC177C5A4D1A54C3E8BE7A91BCA91AB93A9DACAC90204CC207 -8432E95B2C47654DA02EC1664566E2137860F16F798E0A1EFFC819F4304B0FE2 -AA54AFE0AF6CC26D417B0CC9E3F5F6B9BD6DDDE6A2D7FC4C840E4AEF73452D16 -241FF01413DF2125BA3563B3A49EECC8EC4D0BF06283B3C8242F362A546E71B6 -21F3C6DA63882992A14E295926387D66EA6D9F296455276D4FEF0CDC706FBC25 -57169AAF546A1BC72114A3A6DC3A1A76CE001962D771C267864A987188BF6087 -183573E3E9DED10D7023965D29F19C8950B6B9B83E680010995360E54911AAAB -44D07524518EE59F58E49485E885F56FF2CF8D30FC5779770685C305AEC4262C -B8C0C194C26F5E122DF5E4153316C971460C3B3B336C1B72 +53FC00ED82D0BDA8EB008F2380FDBA06D2F8C0210A261508BBB19DFBEC179B30 +7096FFA89BF7951FBACEF0966A91BD315A7E26E57749072B3F38583C06A5F183 +08BFF3CDCD59AC365E3B4C4F34AC30366CF2BD15F19CBCE5F93259A6C4A8CAD5 +0B9186BF146124C758FAEDA8362FE97F209BA5C9FCC5C2A7FC3981F26D28B3A6 +7F1D6C440909613246CF1D25767D45EDC8FE21582D6C4C2C678BB9E98974E303 +402F0394B17CF3F4CCF6940D3ED7668AB6C9DAD83D75B11DD3BBF2619239BED9 +A82B053CDB66086058524A379BA308D5043498471B6B043923A40F6C1BB0B71B +20D261D529E3FCCE19871D097C7A434CE18673A6BE20C67AFA21F48213B6342E +4E069367C51173364B697E890FB9E4FA1E8FE0EE6A8E8176F6ECC5DE736D4272 +3B640EBD341D5DA2B2F64F46339F7612D1CD04D5598F2286A87F83220DB31878 +F7E83F90D003AFE46B3B9103BE3E344FA1025DA3F45D309641C3FDFCB8815C36 +A563F017E5EFE9E9F15262C5F676C8602EF3F7AF6F4EFD60CA78847679729FD1 +C3837760E538338DA5F0EB8B24758E4FCDC922904A2740D145935233DDE03DFD +17610BEE7050CAEEE6C705A22C3BA7FA1EB44D82ECCE837422363147ACE218F2 +DE186AA197D71524186FEB923E2AD093B00AF017AED4BBF997093F5ED44FF286 +124A6256DAB404B36D596739F883F7465E6C0DDDD8970909777818CD73650C3D +8CE623AD60CF2CDAEEEF25B6FE0C7ACA99C3AEC768A4544E0FC120821BA349C1 +986ECB6F6D69ED8B6B3F77465665BA74AD091397F6BBF6F48A1E0974377D4586 +5C3DA4BE5F33CB86CDFDBF253C4D08382BD6D9D92945136DD376CF76ECA37560 +67729573F060DE73497A3B48229E45E17852459096FE82AAEBCF5DDBE92A7F9D +8D1B7F8813106BEB2DEDD4E220717F25FCEA468F8E5B975813C48B30734139D7 +F7D65F4ABF157C7E13C16BF304CECBE2367511BF14030602BFDED6D2D0F40AB9 +5FD1EADCB2FF72F2BA0BA7E726E7C21FB9B4E0B094FDD6FD7912BC389C9C3C62 +57616605E5B8064E1DB19FF9805D872840C9B3F7873FD61951E87BB298B525A7 +30F4E7883EFC51B92A60AA1E5D6565E4F2D349E6083500BB8867977E2BBB0CD5 +7FB86FB5FE38E8A066E102E5326502EF581C9CA461E6A75170AD698EC27839F0 +ECA5AC6ACEB4AA6EF4DD71A0FE4154A1043E38D1923036D998A064082C293B41 +3D2440FB88F1CC166DA6BEE7B0BE62441F3D21BAB31CD80788DD1713D4F7D87F +F130A1DF211A3795A903FEE48EDD3E34F6AB66413AF77418D222B3DC62EC4E9F +B53937B944ADC8E5A90176FBC7EA949E02FE996A8B2F6879F0B4193A47B6FA15 +6A23805F40ACB43D778A4ECA2529054A2EE6D95495F280DE27D04505A5F3ED46 +3F9B87B8F8F4EBE0FB5A36F3038E16F5773181E6FFDF3230B26B41279BC3E29E +02B0A4C6671381E680629DD54FA396BEB597E90CC554F3715D599185F787683A +0C1C1BC30F40205C90398240DF656D5E8E79A4FB9E53ED69E6CCE72A43D675C5 +86EA8939F02CC6359A78314B3662A30F8F48DF1823CD44CB569D3CB9E8F0924B +15B682E9787827EB92F340E548961011152520DF15CEE47994555961414D80FD +6FF51E7F4AD38A7FA670CE31210F1D57FC3B06953D2E098B711B0D354793A804 +61D7ABDD46872F370D14F8EEDE07E9DA2F2F6F5A0B6017FC62D6AE57A5C61D2C +EE55183B80853D1D4D8C08572E9A15F753DBC75A000CFBA6D7B1C04A2FC07E69 +EBF9833C6C76E8DF9345B1C7FB73DA67CF85757621D36EF0D33F392103DE58F3 +C0D7ED8003E2EFDC8383FA42FD054AF7E3025B6CE9A21D7FF94D9E2653498186 +81621CCCF53F7D922007692CFC3E88AADFF7CDDFD85B3A3DF27721B89D0F26CB +34F987919D2B3F1FDF2400528A426010FD67481F336BFED8C546104CFE0DA536 +7E2056AB878E59CEB3D7B836AA794E98F7DC6B3F00B8B803F1D62E8837A27A9F +CDEBB3D8C50E71E146FD39D15071674D0D4A1CC2F7D8E050DDEAA9CDE1A60CC8 +BA54B64C6AB7760439573412C781F04CB5E4C143AD7440819B35AD3872E8A07E +687F96086AB326022E120AE62242CC62982612AF4C7E99C991AF793A24A36E3A +21D30A9E9C475E97645A9141417FB632EE51258A3F7C52C12A5656C7B3BF2D64 +E6887418B020A6FCEA184FE311DD77F8CAAC3E1E8BCA9473E52236582A3AD1EB +6DC2725757EB9E348AF2E31AE4035D0B3A17852673C97EA8E105D2426A28D367 +1BFB95DD775FA2E70E571BDDE80AFC982D9AD1F5E6E2671087262D565C0E3BC0 +EE89D0FF1CBFF7095238CB4A031FCEAE085F0BD31CD2B90DED17D8CBCE81FFF4 +4E77C1848E10BBE71B25B5D323139308D7499C0532F956866B8F056C3BF893E3 +9F029CA58F0B7A029FE944F791C0D644FDA80F1497E9FC7319ABBBDE8B47E9DB +CF6F71E7AB2C8C0AAB6140A5F165F462DB2CF40060DDFF908A52760C9EE72286 +09161743C5F8C342C97CF14F67ED86F2D723FB605BCFC43760B3ABE9C88A549A +8BB4B01D73821FA191D028E44FB2938417485BF4037170D45D2ED840A3838D6A +4C514FD4BFC2818EC64C4725E4F1C7D72CC8D3982BC50C5A4ED5995E17DB6E20 +9350D86CC8FAF93F854ADBCC42E26B85CB15343CEA1AA2DC43E40AA823418D1D +92DD7EBBF041EC62DA9764840D46A414B7EB95B5505147BDC31D40A157FE2B7B +4C641B398A6039F9EFE1E929301E38805C26D1FB0E32212505B1B954C9CAF259 +E440C327D8239B1FE0BD976DE222C38AF2F3FDFB5DEA74954199CBEAC621D611 +30C13591B9C183BAF93DE896C497E461F4CA33455D4B41FD4C77BE7E7A8968B9 +7602BD7B2989667EB31D56C3169BAD6D48D1CC5DBA8819E88A7339CC92D3DD26 +EC81ED5155345321B9DD8BBC25B3A53D95531098CCAEA8617EED83815AE6DB19 +A2E97160B2226B11665020D19F419A851AF73C19785433AE958B68D48D3EAFA3 +77DD833E47592E39F6C5C159595C32CD08DF326BDEAA4BEBA3587F017AFEA9A3 +A3473BD086862E87B5AFEBF06A4419878BDEC99686D125EE11E76AD881E10D0A +F5C18041C26CF62F07B89E7DE6D6691127CCF83F7BC7E7AB501324C2D44C05CB +D0B2754F2AA37FE707C3D2979648BE7FB3C85813E0389FBAB87810BECB5438E2 +9082705FB9BCCC4CC31DACAA5CC95B4876601D8617BC0B0E8F006638DA8545AF +DA33E5D59C056AACE716466544DC0CFDAD5E5EE60F2A68723FB9DD7C107E6C2F +4DD97E89BE2EC827052011B1042C724CEB4968ED5DFA9EAAAF88A4C4160143E9 +0EFADC700B31D030E52609ACCD3F5BF346F642B702C298E11DD837B5FF0615E0 +F5E1239C6A6C8964A575533F9B939C17FC99EB384DC725B2CE842C9331A90D31 +3344936CEEFAD1CF2281FFA21110457F21705DAB57B28C24995C73542396D5C3 +927D082DD0B4C220E0680B547A5E3220A6F506A2A94267B32B26004FEFB5AD1D +7519969EFFDD0540D5BB3F499CBA8ACF8BA23BF054D51271F958CCB03A3E5B46 +E8CA77CE6835B84071916CA149B8BADD510C8226825F3915BE719F1BF30D7640 +4B86BCA2ED6E43CF3DC32861A475B5C555DA7C34B1ACBB71DA16F1D9AC1AC459 +C0A217197561A827F2E625FDE90BE83B718583CB018BAD5A49DFC6FBC573129D +28B466BF5A889FDCE2F5DE2B413BED566E49CA2374BF587F9B6C87F79A286B0C +A13A7770DEF8E0CBDB53F20731E870162E3913581AD2F2893D8D4BD1C3AC473F +66C20BCF90DE4C711D051B6A2D3A5A57C0DE38BC0ABC739E4ACD1E91E156246E +6776B3EA66C3418144EA76297793E67D7C4A75605F612F832CBDCCBE60279236 +7E5E8D59A9C390D31764FBD10A8671BE3628DD9FA203C90B000D8867D56C13D0 +5123366778DFD71829A064EA9CC3CBE9C7E0493307129F99702BC522211BE363 +F9A19038EC98672E3B467BFCCEDCFE7C89865C832E4A0939CD1701D6B2E7D88E +0211CB61AF49A4A7142F3C4142489D11CAC418AEC20A706080B7B81425783794 +A68040FD847CC21F70D67A07867AD6384380DB4021AE764EDD2CB3F963399A4A +81DCBB3488D16096631DC2CB4F419E9049D9A79B4ABD73A8E774A7255B69885E +47D0CE20B65E837CF0EEAD9D373058A6B2569C55BB949C4C566D4607F01D8428 +FFE577130A2F9D401898847307E445D60B8BD6AEB7ED7385108036FF1F4EAE5D +52CDA197065FBD2F70749E38E5A90E313F059B24776F9A749F846788C2AD1439 +CACDC874C20C9BF9A6615C7C897600F2E3BF821E1799E40445E29AA9BD63B91F +61B9AFF3B82634D1454696315961BC8E2D7AE1BE4E5080E721E8DEA53F44B690 +5704CF886FCFC26E2838BE675D1014723E4D56189B5A7E65A3C20A0AC3A0134A +A44CE1A7441BE18660C783BE5813723D0AACD76CF8F076B58CA069FFB73AD779 +47ED97053C750072022CCA6655BD40FD8C55299505F4185CFB01C7C31761A75C +3CDC009FDD666D82C15897007321F13C88D316CC39A262A30DF71F417035A0A6 +691BB4CC99ABA64602D8175999CF835AD999550F90699BC6B8195E5C5DFBF12E +CA83FB05CACA501A66F49E65F5283883EC4827914CB72B9FEF723B010CD58192 +5528BDAA88B52B362B02FB31F32AECF4CBBBD6719187339F8F5A199663F56A26 +A90574A586FEA95BF0A3ED3B4DAA223F5D5FEC7B4782E6DBE7ED76E2575CEE2A +49FFD60D976E6069F98F933F6CCB517220D05C9343AD7E6153EBFB31FC84D40D +582274C484B16742CC4EC64E63A8B8D6E9372FC62976456B78F16184086BD180 +08FBCBCFDF94C777F3905BAE198090AB09C85130C07160FD111DCDA5E095247D +A647ED88D7B75A2265F819D82FDA474FB08C08DB58B6B6B821382BC9A6D5FDF6 +1EFF0CA350A463EF9B651CBF84EDBFE2AC986AF8636D1D9A9963D401CEEEFEBE +BFEBAD3B9DFE073BDC21933323E704182AC95D3D5C85E6E47800AF01B244267F +2B5BC626B5CB796D2EC7A0A9C8878C1FE14ECC924D1E791561073DED0F14F7C3 +B64AC2D28F396A4C9B93DACF026619D3F8BDB54FD04BD9CC183FE4CC7474976A +60320C568E9F3850C21FD2240914E4262B370E6D47367E2B15EC09F377FF2F4C +D46518B529835A89A8FE1A70E24DB827D7BBBD756A50603099BE248B318E8D32 +96CFD61B9710B3A2D60B5027020807951138ECC206C626C3691589935F681851 +779ACB632AC58641E5B59ED49B72A5B3B3CDB2E5D88FBB113C6C4807AA344EA5 +F1B3AB548C7DEFC57DA52F4BCD41CCB04ABA2570DF9758CD55A622C533826EB3 +43F42A28A5A348FC056E974D1BBB4D7213FED3D8C2F862130F299481091D46E2 +2DAABFA91A9F8115DE79D2CABBB7686CC7571251CE6876D8EBE71C9EB45BEDA6 +1F845F7AAB768498557F45F5B94DE6E59BFF0B336D901D4503A0064F64169DD3 +6BF1D67C73C1365924B876F94C7484C8909D567300AC73AA4246D043A301E80E +5E38A79B2090D5548B633FBB39509B346D2E7510FF6F70E54EA642BF2765DBE0 +3495C66A2E9F3DBCBBA5851F0D3764780499D416E002237702C32E492EA02909 +5ADDA6E8FC7314ECE22F586A05FBEA7F35D96CB2D1892AC9A78656C2AAD47182 +9029C3145F208608B4508AFF111EAFBCD37690D07E31ED18AA94C10D62A12844 +C3808AC8DA5CA8F2D99394693E190F6C02AEFC60A637AD8ED2DFEBCEF08EC3D8 +86725D3F852A90FA74F9CAFBC12DD0146EF2A741B9491A43BCA08B9D68765233 +247B74F12712204D2E66AD91F44B392002B57E691D541EC46B0692A963C07496 +1B8BE15305139D77C92580FA06D9C809B263029117B82A0A78ABE9C6DC0F61C3 +A8ECD12138927031B9D1CCF9A7BFCB7F37873249A7CEE6E49998420B4466B06A +448EDC2F4B00C73FEF997171AA4364DC49DD5E3D59F31C9DC29064CBC0503FA4 +0188BAE53D62C5BFAA13835C14536C07547DECFD8DB00B7B9590B69D29733E4C +27B3D020EC1843ECBFD4F1C74D210F7E886407874F52893D5E4D960C311056E5 +AAB46CE02CDB2D14F5BA22AA8AAC05CAF62CA950D6CC279AD6FB80BA1194EA2C +B380CE9D6F03613542860AD8A21D35C300FF5881885B73745A87228642D981B9 +A19DBD36CFDA547468F0259715F564807E1BF59FC29D4ED8F8A394AAC4609C24 +FBE3F169EB8BC230B5788BE64846AA1E4A92EF1DBF768AEEB465025CA94DAB15 +5068385CE16A9995FA5B117AE9B7BC9A21A40EDFECB2CF53E48FDBAAC9B73C73 +D1129088EEB0C16CED9F042A1375A6E28586C7CCF7A7798CC4F14FD6AEBE9341 +DA1222BA55114253A32A7DE2FD81A269D801E61694A7A5549FDF6555F064AE3B +DE3B689D8A89840976988D9AB4E9FA38F6F1F563AD72E769CE32AD3764F86226 +327CF11586E8711493731FCBD0F88A02BDA98D73EBD6AD50BD2E1416E01ED0E4 +618A830F6CA2DA58CA47680F705E026B53063D0DF143C59C06066F4A4F0B4707 +C28414153F1001B54E7C470938B972C249EB2B65782FCD0FE61ECAE1B7459F23 +FD9637BD0DAFBFEC2F1E0C715A21F13B6EAAD1017938169122C459F1BB9B56A9 +6D93C017E2FFCB4F81DBA0933A2F37C42C0673336124F0A696F24A58021D9D77 +AC5E73816149EDD6EA75AC1E485CE60E08B84059CAD12A6D9D4C969F0C9153F7 +DCDDF6DC1D409A14539FF828799AC16339106C783DD589E71274B5CB35A5EA3B +ACEE350AFF93B457C0659CE844783EC57C26BFB35CD43EF81190B9773280878F +6AA50BD9833F4D7DB73A8BE384A08C9A45401E6FC9E1E3ADF70FC5A0BBBA001A +2A5ED51A820ACEF131B5EF9E21EA84945F9D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -7549,37 +7586,38 @@ TeXDict begin 40258431 52099146 1000 600 600 (bashref.dvi) /CMBX12 rf /Fl 135[42 1[42 1[30 37 38 1[46 46 51 74 23 2[28 1[42 1[42 46 42 1[46 51[33 32[51 12[{}18 90.9091 /CMTI10 rf /Fm 135[56 2[56 1[42 55 1[51 58 56 68 47 2[27 -1[58 49 51 57 54 53 56 46[50 2[50 1[34 45[{}20 90.9091 -/CMCSC10 rf /Fn 197[25 58[{}1 90.9091 /CMMI10 rf /Fo -197[33 58[{}1 119.552 /CMMI12 rf /Fp 134[85 85 1[85 90 -63 64 66 1[90 81 90 134 45 1[49 45 90 81 49 74 90 72 -90 78 10[122 124 112 90 120 3[126 153 97 1[83 60 126 -127 101 106 124 117 115 122 7[81 81 81 81 81 81 81 81 -81 81 35[90 94 11[{}52 143.462 /CMBX12 rf /Fq 200[0 21[91 -17[45 1[91 12[71{}5 90.9091 /CMSY10 rf /Fr 133[40 48 -48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 -28 40 51 40 51 45 7[68 68 93 1[68 66 51 67 1[62 71 68 -83 57 71 1[33 68 71 59 62 69 66 64 68 12[45 45 45 45 -3[30 8[45 21[76 1[51 53 11[{}57 90.9091 /CMSL10 rf /Fs -132[67 1[71 71 97 71 75 52 53 55 1[75 67 75 112 37 71 -41 37 75 67 41 61 75 60 75 65 3[37 1[37 1[102 102 139 -102 103 94 75 100 101 92 101 105 128 81 105 69 50 105 -106 85 88 103 97 96 102 105 64 4[37 67 67 67 67 67 67 -67 67 67 67 1[37 1[37 1[67 5[67 112 1[41 20[75 78 11[{}73 -119.552 /CMBX12 rf /Ft 129[48 48 48 48 48 48 48 48 48 +1[58 49 51 57 54 53 56 8[74 4[56 2[67 77 5[37 22[50 2[50 +1[34 45[{}25 90.9091 /CMCSC10 rf /Fn 197[25 58[{}1 90.9091 +/CMMI10 rf /Fo 197[33 58[{}1 119.552 /CMMI12 rf /Fp 134[85 +85 1[85 90 63 64 66 1[90 81 90 134 45 1[49 45 90 81 49 +74 90 72 90 78 10[122 124 112 90 120 3[126 153 97 1[83 +60 126 127 101 106 124 117 115 122 7[81 81 81 81 81 81 +81 81 81 81 35[90 94 11[{}52 143.462 /CMBX12 rf /Fq 200[0 +21[91 17[45 1[91 12[71{}5 90.9091 /CMSY10 rf /Fr 133[40 +48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 +45 28 40 51 40 51 45 7[68 68 93 1[68 66 51 67 1[62 71 +68 83 57 71 1[33 68 71 59 62 69 66 64 68 12[45 45 45 +45 3[30 8[45 21[76 1[51 53 11[{}57 90.9091 /CMSL10 rf +/Fs 132[67 1[71 71 97 71 75 52 53 55 1[75 67 75 112 37 +71 41 37 75 67 41 61 75 60 75 65 3[37 1[37 1[102 102 +139 102 103 94 75 100 101 92 101 105 128 81 105 69 50 +105 106 85 88 103 97 96 102 105 64 4[37 67 67 67 67 67 +67 67 67 67 67 1[37 1[37 1[67 5[67 112 1[41 20[75 78 +11[{}73 119.552 /CMBX12 rf /Ft 129[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 48 48 48 48 48 48 33[{}93 90.9091 -/CMTT10 rf /Fu 131[91 45 40 48 48 66 48 51 35 36 36 48 -51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 -45 25 56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 -47 33 68 71 59 62 69 66 64 68 71 43 1[71 1[25 25 45 45 -45 45 45 45 45 45 45 45 45 25 30 25 1[45 35 35 25 71 -76 45 76 45 25 18[76 51 51 53 11[{}91 90.9091 /CMR10 -rf /Fv 138[108 1[76 79 3[108 1[54 3[108 1[59 88 1[86 -1[94 14[144 4[184 10[138 66[{}13 172.154 /CMBX12 rf end +48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 33[{}93 +90.9091 /CMTT10 rf /Fu 131[91 45 40 48 48 66 48 51 35 +36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 +45 25 2[25 45 25 56 68 68 93 68 68 66 51 67 71 62 71 +68 83 57 71 47 33 68 71 59 62 69 66 64 68 71 43 1[71 +1[25 25 45 45 45 45 45 45 45 45 45 45 45 25 30 25 1[45 +35 35 25 71 76 45 76 45 25 18[76 51 51 53 11[{}91 90.9091 +/CMR10 rf /Fv 138[108 1[76 79 3[108 1[54 3[108 1[59 88 +1[86 1[94 14[144 4[184 10[138 66[{}13 172.154 /CMBX12 +rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi @@ -7595,21 +7633,21 @@ ifelse %%Page: 1 1 TeXDict begin 1 0 bop 150 1318 a Fv(Bash)64 b(Reference)j(Man)-5 b(ual)p 150 1385 3600 34 v 2361 1481 a Fu(Reference)31 -b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(4.4,)g(for)f -Ft(Bash)g Fu(V)-8 b(ersion)31 b(4.4.)3118 1697 y(Septem)m(b)s(er)f -(2016)150 4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 +b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(5.0,)g(for)f +Ft(Bash)g Fu(V)-8 b(ersion)31 b(5.0.)3145 1697 y(Decem)m(b)s(er)g(2018) +150 4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 b(oundation)p 150 5141 3600 17 v eop end %%Page: 2 2 TeXDict begin 2 1 bop 150 4279 a Fu(This)35 b(text)h(is)g(a)g(brief)f (description)h(of)f(the)h(features)g(that)g(are)g(presen)m(t)g(in)f -(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(4.4,)c(7)e(Septem)m(b)s -(er)g(2016\).)150 4523 y(This)h(is)h(Edition)g(4.4,)i(last)f(up)s -(dated)d(7)i(Septem)m(b)s(er)g(2016,)i(of)e Fr(The)f(GNU)i(Bash)f -(Reference)h(Man)m(ual)p Fu(,)150 4633 y(for)d Ft(Bash)p -Fu(,)g(V)-8 b(ersion)31 b(4.4.)150 4767 y(Cop)m(yrigh)m(t)602 -4764 y(c)577 4767 y Fq(\015)f Fu(1988{2016)35 b(F)-8 +(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(5.0,)c(7)e(Decem)m(b)s +(er)i(2018\).)150 4523 y(This)h(is)h(Edition)g(5.0,)i(last)e(up)s +(dated)f(7)h(Decem)m(b)s(er)g(2018,)j(of)d Fr(The)f(GNU)h(Bash)g +(Reference)h(Man)m(ual)p Fu(,)150 4633 y(for)30 b Ft(Bash)p +Fu(,)g(V)-8 b(ersion)31 b(5.0.)150 4767 y(Cop)m(yrigh)m(t)602 +4764 y(c)577 4767 y Fq(\015)f Fu(1988{2018)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f @@ -7697,7 +7735,7 @@ h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)29 b Fu(10)524 3205 y(3.2.4.2)93 b(Conditional)31 b(Constructs)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -39 b Fu(10)524 3315 y(3.2.4.3)93 b(Grouping)30 b(Commands)22 +39 b Fu(11)524 3315 y(3.2.4.3)93 b(Grouping)30 b(Commands)22 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)36 b Fu(14)399 3425 y(3.2.5)93 b(Copro)s(cesses)26 b Fn(:)15 @@ -7707,7 +7745,7 @@ g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(15)399 3534 y(3.2.6)93 b(GNU)31 b(P)m(arallel)13 b Fn(:)k(:)f(:)f(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)26 b Fu(15)275 3644 y(3.3)92 b(Shell)30 +(:)f(:)g(:)h(:)26 b Fu(16)275 3644 y(3.3)92 b(Shell)30 b(F)-8 b(unctions)16 b Fn(:)g(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g @@ -7715,385 +7753,385 @@ g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38 b -Fu(18)399 3863 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)8 +Fu(19)399 3863 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)8 b Fn(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)21 b Fu(19)399 3973 y(3.4.2)93 b(Sp)s(ecial)30 +h(:)f(:)h(:)21 b Fu(21)399 3973 y(3.4.2)93 b(Sp)s(ecial)30 b(P)m(arameters)c Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 b Fu(20)275 4082 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 b Fu(21)275 4082 y(3.5)92 b(Shell)30 b(Expansions)24 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)38 b Fu(21)399 4192 y(3.5.1)93 b(Brace)31 +(:)g(:)h(:)f(:)38 b Fu(22)399 4192 y(3.5.1)93 b(Brace)31 b(Expansion)9 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b -Fu(21)399 4301 y(3.5.2)93 b(Tilde)30 b(Expansion)18 b +Fu(23)399 4301 y(3.5.2)93 b(Tilde)30 b(Expansion)18 b Fn(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)31 b Fu(22)399 4411 y(3.5.3)93 +f(:)h(:)f(:)g(:)h(:)f(:)h(:)31 b Fu(23)399 4411 y(3.5.3)93 b(Shell)30 b(P)m(arameter)i(Expansion)26 b Fn(:)15 b(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fu(23)399 4521 y(3.5.4)93 +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fu(24)399 4521 y(3.5.4)93 b(Command)29 b(Substitution)20 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(29)399 4630 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(30)399 4630 y(3.5.5)93 b(Arithmetic)31 b(Expansion)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)40 b -Fu(29)399 4740 y(3.5.6)93 b(Pro)s(cess)30 b(Substitution)15 +Fu(31)399 4740 y(3.5.6)93 b(Pro)s(cess)30 b(Substitution)15 b Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)28 b Fu(30)399 4849 y(3.5.7)93 b(W)-8 +(:)f(:)g(:)h(:)28 b Fu(31)399 4849 y(3.5.7)93 b(W)-8 b(ord)31 b(Splitting)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 -b Fu(30)399 4959 y(3.5.8)93 b(Filename)32 b(Expansion)22 +b Fu(31)399 4959 y(3.5.8)93 b(Filename)32 b(Expansion)22 b Fn(:)14 b(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)35 b Fu(30)524 5068 y(3.5.8.1)93 b(P)m(attern)31 +f(:)h(:)f(:)g(:)35 b Fu(32)524 5068 y(3.5.8.1)93 b(P)m(attern)31 b(Matc)m(hing)14 b Fn(:)k(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)27 b Fu(31)399 5178 y(3.5.9)93 +h(:)f(:)g(:)h(:)f(:)h(:)27 b Fu(33)399 5178 y(3.5.9)93 b(Quote)31 b(Remo)m(v)-5 b(al)17 b Fn(:)g(:)e(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)30 -b Fu(32)275 5288 y(3.6)92 b(Redirections)14 b Fn(:)i(:)f(:)g(:)h(:)f(:) +b Fu(34)275 5288 y(3.6)92 b(Redirections)14 b Fn(:)i(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)27 b Fu(32)p +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)27 b Fu(34)p eop end %%Page: -2 4 TeXDict begin -2 3 bop 3699 -116 a Fu(ii)399 83 y(3.6.1)93 b(Redirecting)31 b(Input)11 b Fn(:)j(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 -b Fu(34)399 193 y(3.6.2)93 b(Redirecting)31 b(Output)15 +b Fu(35)399 193 y(3.6.2)93 b(Redirecting)31 b(Output)15 b Fn(:)f(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)28 b Fu(34)399 302 y(3.6.3)93 b(App)s(ending)28 +(:)f(:)g(:)h(:)f(:)28 b Fu(35)399 302 y(3.6.3)93 b(App)s(ending)28 b(Redirected)k(Output)20 b Fn(:)14 b(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)33 b Fu(34)399 412 y(3.6.4)93 b(Redirecting)31 b(Standard)e(Output)h +(:)33 b Fu(36)399 412 y(3.6.4)93 b(Redirecting)31 b(Standard)e(Output)h (and)f(Standard)h(Error)16 b Fn(:)e(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)29 -b Fu(34)399 521 y(3.6.5)93 b(App)s(ending)28 b(Standard)i(Output)f(and) +b Fu(36)399 521 y(3.6.5)93 b(App)s(ending)28 b(Standard)i(Output)f(and) h(Standard)f(Error)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40 -b Fu(34)399 631 y(3.6.6)93 b(Here)31 b(Do)s(cumen)m(ts)15 +b Fu(36)399 631 y(3.6.6)93 b(Here)31 b(Do)s(cumen)m(ts)15 b Fn(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)27 b Fu(35)399 741 y(3.6.7)93 +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)27 b Fu(36)399 741 y(3.6.7)93 b(Here)31 b(Strings)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 -b Fu(35)399 850 y(3.6.8)93 b(Duplicating)32 b(File)f(Descriptors)25 +b Fu(37)399 850 y(3.6.8)93 b(Duplicating)32 b(File)f(Descriptors)25 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 -b Fu(35)399 960 y(3.6.9)93 b(Mo)m(ving)32 b(File)f(Descriptors)d +b Fu(37)399 960 y(3.6.9)93 b(Mo)m(ving)32 b(File)f(Descriptors)d Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -40 b Fu(36)399 1069 y(3.6.10)93 b(Op)s(ening)29 b(File)j(Descriptors)f +40 b Fu(37)399 1069 y(3.6.10)93 b(Op)s(ening)29 b(File)j(Descriptors)f (for)f(Reading)h(and)f(W)-8 b(riting)29 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f -(:)41 b Fu(36)275 1179 y(3.7)92 b(Executing)31 b(Commands)24 +(:)41 b Fu(37)275 1179 y(3.7)92 b(Executing)31 b(Commands)24 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fu(36)399 1289 y(3.7.1)93 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fu(38)399 1289 y(3.7.1)93 b(Simple)30 b(Command)f(Expansion)11 b Fn(:)k(:)g(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)24 b Fu(36)399 1398 y(3.7.2)93 b(Command)29 +h(:)f(:)g(:)h(:)f(:)24 b Fu(38)399 1398 y(3.7.2)93 b(Command)29 b(Searc)m(h)i(and)f(Execution)15 b Fn(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -28 b Fu(37)399 1508 y(3.7.3)93 b(Command)29 b(Execution)i(En)m +28 b Fu(38)399 1508 y(3.7.3)93 b(Command)29 b(Execution)i(En)m (vironmen)m(t)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fu(37)399 +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fu(39)399 1617 y(3.7.4)93 b(En)m(vironmen)m(t)26 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)39 b Fu(38)399 1727 y(3.7.5)93 b(Exit)31 +(:)f(:)g(:)h(:)39 b Fu(40)399 1727 y(3.7.5)93 b(Exit)31 b(Status)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29 -b Fu(39)399 1836 y(3.7.6)93 b(Signals)23 b Fn(:)15 b(:)h(:)f(:)h(:)f(:) +b Fu(40)399 1836 y(3.7.6)93 b(Signals)23 b Fn(:)15 b(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fu(39)275 +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fu(41)275 1946 y(3.8)92 b(Shell)30 b(Scripts)12 b Fn(:)i(:)i(:)f(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Fu(40)150 2197 +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Fu(41)150 2197 y Fs(4)135 b(Shell)45 b(Builtin)g(Commands)14 b Fo(:)20 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)27 b Fs(42)275 2334 y Fu(4.1)92 b(Bourne)30 +(:)h(:)f(:)h(:)f(:)27 b Fs(43)275 2334 y Fu(4.1)92 b(Bourne)30 b(Shell)g(Builtins)16 b Fn(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)29 -b Fu(42)275 2443 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)13 +b Fu(43)275 2443 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)13 b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)26 b Fu(49)275 2553 y(4.3)92 b(Mo)s(difying)30 +(:)f(:)g(:)h(:)f(:)26 b Fu(50)275 2553 y(4.3)92 b(Mo)s(difying)30 b(Shell)g(Beha)m(vior)18 b Fn(:)f(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b Fu(60)399 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b Fu(61)399 2663 y(4.3.1)93 b(The)30 b(Set)g(Builtin)14 b Fn(:)i(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)27 b Fu(60)399 2772 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)21 +f(:)g(:)27 b Fu(61)399 2772 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)21 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)34 b Fu(64)275 2882 y(4.4)92 +h(:)f(:)h(:)f(:)g(:)h(:)34 b Fu(65)275 2882 y(4.4)92 b(Sp)s(ecial)30 b(Builtins)9 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)22 b Fu(70)150 3132 y Fs(5)135 b(Shell)45 +f(:)g(:)h(:)f(:)22 b Fu(71)150 3132 y Fs(5)135 b(Shell)45 b(V)-11 b(ariables)11 b Fo(:)20 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)24 b Fs(71)275 3269 y Fu(5.1)92 +f(:)h(:)f(:)g(:)h(:)f(:)24 b Fs(73)275 3269 y Fu(5.1)92 b(Bourne)30 b(Shell)g(V)-8 b(ariables)10 b Fn(:)17 b(:)e(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -23 b Fu(71)275 3379 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)26 +23 b Fu(73)275 3379 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)26 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38 -b Fu(71)150 3630 y Fs(6)135 b(Bash)44 b(F)-11 b(eatures)32 +b Fu(73)150 3630 y Fs(6)135 b(Bash)44 b(F)-11 b(eatures)32 b Fo(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -44 b Fs(82)275 3767 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)16 +44 b Fs(85)275 3767 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)16 b Fn(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)29 -b Fu(82)275 3876 y(6.2)92 b(Bash)30 b(Startup)g(Files)f +b Fu(85)275 3876 y(6.2)92 b(Bash)30 b(Startup)g(Files)f Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(84)275 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(87)275 3986 y(6.3)92 b(In)m(teractiv)m(e)32 b(Shells)19 b Fn(:)d(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Fu(85)399 4095 y(6.3.1)93 +(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Fu(88)399 4095 y(6.3.1)93 b(What)31 b(is)f(an)h(In)m(teractiv)m(e)h(Shell?)25 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 -b Fu(86)399 4205 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m +b Fu(89)399 4205 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m (e?)22 b Fn(:)d(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)35 b Fu(86)399 4315 y(6.3.3)93 b(In)m(teractiv)m(e)33 +h(:)35 b Fu(89)399 4315 y(6.3.3)93 b(In)m(teractiv)m(e)33 b(Shell)d(Beha)m(vior)11 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)24 b Fu(86)275 4424 y(6.4)92 b(Bash)30 +(:)h(:)f(:)g(:)h(:)f(:)24 b Fu(89)275 4424 y(6.4)92 b(Bash)30 b(Conditional)h(Expressions)10 b Fn(:)k(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)23 b Fu(87)275 4534 y(6.5)92 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)23 b Fu(90)275 4534 y(6.5)92 b(Shell)30 b(Arithmetic)13 b Fn(:)k(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)26 b Fu(89)275 4643 y(6.6)92 b(Aliases)20 b Fn(:)d(:)e(:)h(:)f +(:)h(:)26 b Fu(92)275 4643 y(6.6)92 b(Aliases)20 b Fn(:)d(:)e(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 -b Fu(90)275 4753 y(6.7)92 b(Arra)m(ys)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:) +b Fu(93)275 4753 y(6.7)92 b(Arra)m(ys)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)38 -b Fu(91)275 4863 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)16 +b Fu(94)275 4863 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)16 b Fn(:)h(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(93)399 4972 +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(96)399 4972 y(6.8.1)93 b(Directory)32 b(Stac)m(k)f(Builtins)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -36 b Fu(93)275 5082 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)13 +36 b Fu(96)275 5082 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)13 b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(94)275 5191 y(6.10)92 +(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(97)275 5191 y(6.10)92 b(The)30 b(Restricted)h(Shell)11 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)24 -b Fu(95)275 5301 y(6.11)92 b(Bash)31 b(POSIX)e(Mo)s(de)17 +b Fu(99)275 5301 y(6.11)92 b(Bash)31 b(POSIX)e(Mo)s(de)17 b Fn(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)30 b Fu(96)p eop end +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)30 b Fu(99)p eop end %%Page: -3 5 TeXDict begin -3 4 bop 3674 -116 a Fu(iii)150 83 y Fs(7)135 b(Job)45 b(Con)l(trol)35 b Fo(:)20 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)48 b Fs(100)275 220 y +(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)48 b Fs(103)275 220 y Fu(7.1)92 b(Job)30 b(Con)m(trol)h(Basics)23 b Fn(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)36 b Fu(100)275 330 y(7.2)92 +f(:)h(:)f(:)g(:)h(:)f(:)h(:)36 b Fu(103)275 330 y(7.2)92 b(Job)30 b(Con)m(trol)h(Builtins)11 b Fn(:)k(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 -b Fu(101)275 439 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8 +b Fu(104)275 439 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8 b(ariables)26 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Fu(103)150 +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Fu(106)150 690 y Fs(8)135 b(Command)45 b(Line)g(Editing)11 b Fo(:)20 b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)k Fs(104)275 827 y Fu(8.1)92 b(In)m(tro)s(duction)30 +(:)g(:)h(:)f(:)h(:)k Fs(107)275 827 y Fu(8.1)92 b(In)m(tro)s(duction)30 b(to)h(Line)f(Editing)12 b Fn(:)k(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(104)275 936 y(8.2)92 +h(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(107)275 936 y(8.2)92 b(Readline)31 b(In)m(teraction)14 b Fn(:)j(:)e(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)27 -b Fu(104)399 1046 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)13 +b Fu(107)399 1046 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)13 b Fn(:)j(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)26 -b Fu(105)399 1156 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i +b Fu(108)399 1156 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i (Commands)13 b Fn(:)i(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)27 -b Fu(105)399 1265 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)24 +b Fu(108)399 1265 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)24 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 -b Fu(106)399 1375 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)17 +b Fu(109)399 1375 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)30 b Fu(106)399 1484 y(8.2.5)93 b(Searc)m(hing)31 +(:)f(:)h(:)30 b Fu(109)399 1484 y(8.2.5)93 b(Searc)m(hing)31 b(for)f(Commands)f(in)h(the)h(History)15 b Fn(:)g(:)h(:)f(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28 b Fu(106)275 +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28 b Fu(109)275 1594 y(8.3)92 b(Readline)31 b(Init)f(File)8 b Fn(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b Fu(107)399 1704 +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b Fu(110)399 1704 y(8.3.1)93 b(Readline)31 b(Init)f(File)i(Syn)m(tax)21 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)34 -b Fu(107)399 1813 y(8.3.2)93 b(Conditional)31 b(Init)f(Constructs)14 +b Fu(110)399 1813 y(8.3.2)93 b(Conditional)31 b(Init)f(Constructs)14 b Fn(:)h(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)27 -b Fu(115)399 1923 y(8.3.3)93 b(Sample)30 b(Init)g(File)20 +b Fu(118)399 1923 y(8.3.3)93 b(Sample)30 b(Init)g(File)20 b Fn(:)d(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(116)275 2032 y(8.4)92 +(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(119)275 2032 y(8.4)92 b(Bindable)30 b(Readline)h(Commands)19 b Fn(:)c(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(119)399 2142 y(8.4.1)93 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(122)399 2142 y(8.4.1)93 b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)16 b Fn(:)h(:)e(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(119)399 +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(122)399 2252 y(8.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f (History)c Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)39 b Fu(120)399 2361 y(8.4.3)93 b(Commands)29 b(F)-8 +f(:)39 b Fu(123)399 2361 y(8.4.3)93 b(Commands)29 b(F)-8 b(or)31 b(Changing)f(T)-8 b(ext)9 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)23 b Fu(121)399 2471 y(8.4.4)93 b(Killing)31 +h(:)f(:)23 b Fu(124)399 2471 y(8.4.4)93 b(Killing)31 b(And)e(Y)-8 b(anking)10 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(122)399 +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(126)399 2580 y(8.4.5)93 b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39 b Fu(124)399 +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39 b Fu(127)399 2690 y(8.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8 b(or)31 b(Y)-8 b(ou)20 b Fn(:)c(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)33 -b Fu(124)399 2800 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)9 +b Fu(127)399 2800 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)9 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(126)399 2909 y(8.4.8)93 +h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(129)399 2909 y(8.4.8)93 b(Some)30 b(Miscellaneous)j(Commands)14 b Fn(:)f(:)j(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)27 b Fu(126)275 3019 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)e +(:)f(:)27 b Fu(129)275 3019 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)e Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)41 b Fu(128)275 +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)41 b Fu(131)275 3128 y(8.6)92 b(Programmable)30 b(Completion)25 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 -b Fu(129)275 3238 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)14 +b Fu(132)275 3238 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)14 b Fn(:)i(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(131)275 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(134)275 3347 y(8.8)92 b(A)30 b(Programmable)h(Completion)g(Example)8 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)22 b Fu(134)150 3598 y +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)22 b Fu(138)150 3598 y Fs(9)135 b(Using)45 b(History)h(In)l(teractiv)l(ely)28 b Fo(:)22 b(:)d(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g -(:)h(:)41 b Fs(137)275 3735 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8 +(:)h(:)41 b Fs(141)275 3735 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8 b(acilities)9 b Fn(:)19 b(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(137)275 +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(141)275 3845 y(9.2)92 b(Bash)30 b(History)h(Builtins)d Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)h(:)f(:)41 b Fu(137)275 3954 y(9.3)92 b(History)31 +h(:)f(:)h(:)f(:)41 b Fu(141)275 3954 y(9.3)92 b(History)31 b(Expansion)10 b Fn(:)k(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)23 -b Fu(139)399 4064 y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)19 +b Fu(143)399 4064 y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)19 b Fn(:)e(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)32 b Fu(140)399 4174 y(9.3.2)93 b(W)-8 +(:)h(:)f(:)g(:)h(:)32 b Fu(144)399 4174 y(9.3.2)93 b(W)-8 b(ord)31 b(Designators)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(140)399 +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(144)399 4283 y(9.3.3)93 b(Mo)s(di\014ers)15 b Fn(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)29 b Fu(141)p eop end +h(:)f(:)h(:)f(:)g(:)29 b Fu(145)p eop end %%Page: -4 6 TeXDict begin -4 5 bop 3677 -116 a Fu(iv)150 83 y Fs(10)135 b(Installing)46 b(Bash)16 b Fo(:)j(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)h(:)f(:)29 b Fs(142)275 220 y Fu(10.1)92 b(Basic)32 +f(:)h(:)f(:)29 b Fs(147)275 220 y Fu(10.1)92 b(Basic)32 b(Installation)8 b Fn(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22 -b Fu(142)275 330 y(10.2)92 b(Compilers)30 b(and)g(Options)17 +b Fu(147)275 330 y(10.2)92 b(Compilers)30 b(and)g(Options)17 b Fn(:)d(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)30 b Fu(143)275 439 y(10.3)92 b(Compiling)30 +(:)f(:)h(:)f(:)30 b Fu(148)275 439 y(10.3)92 b(Compiling)30 b(F)-8 b(or)32 b(Multiple)f(Arc)m(hitectures)10 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)23 b Fu(143)275 549 y(10.4)92 +(:)g(:)h(:)f(:)h(:)f(:)23 b Fu(148)275 549 y(10.4)92 b(Installation)32 b(Names)22 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)35 -b Fu(143)275 658 y(10.5)92 b(Sp)s(ecifying)30 b(the)g(System)h(T)m(yp)s +b Fu(148)275 658 y(10.5)92 b(Sp)s(ecifying)30 b(the)g(System)h(T)m(yp)s (e)21 b Fn(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)34 b Fu(143)275 768 y(10.6)92 b(Sharing)30 b(Defaults)24 +h(:)34 b Fu(149)275 768 y(10.6)92 b(Sharing)30 b(Defaults)24 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 b Fu(144)275 +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 b Fu(149)275 878 y(10.7)92 b(Op)s(eration)30 b(Con)m(trols)12 b Fn(:)k(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)25 b Fu(144)275 987 y(10.8)92 b(Optional)31 +(:)h(:)f(:)25 b Fu(149)275 987 y(10.8)92 b(Optional)31 b(F)-8 b(eatures)19 b Fn(:)d(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)32 -b Fu(144)150 1238 y Fs(App)t(endix)44 b(A)119 b(Rep)t(orting)46 +b Fu(150)150 1238 y Fs(App)t(endix)44 b(A)119 b(Rep)t(orting)46 b(Bugs)21 b Fo(:)f(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)35 b Fs(149)150 1498 y(App)t(endix)44 +(:)f(:)g(:)h(:)f(:)35 b Fs(155)150 1498 y(App)t(endix)44 b(B)125 b(Ma)7 b(jor)46 b(Di\013erences)g(F)-11 b(rom)284 1639 y(The)45 b(Bourne)f(Shell)35 b Fo(:)19 b(:)h(:)f(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)47 b Fs(150)275 1776 y Fu(B.1)92 +f(:)g(:)h(:)f(:)h(:)47 b Fs(156)275 1776 y Fu(B.1)92 b(Implemen)m(tation)31 b(Di\013erences)h(F)-8 b(rom)31 b(The)e(SVR4.2)j(Shell)22 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)35 b Fu(154)150 2027 y Fs(App)t(endix)44 b(C)124 b(GNU)36 +(:)35 b Fu(160)150 2027 y Fs(App)t(endix)44 b(C)124 b(GNU)36 b(F)-11 b(ree)35 b(Do)t(cumen)l(tation)i(License)25 b -Fo(:)20 b(:)29 b Fs(156)150 2305 y(App)t(endix)44 b(D)118 +Fo(:)20 b(:)29 b Fs(162)150 2305 y(App)t(endix)44 b(D)118 b(Indexes)27 b Fo(:)20 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)40 -b Fs(164)275 2442 y Fu(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h +b Fs(170)275 2442 y Fu(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h (Commands)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)38 -b Fu(164)275 2552 y(D.2)92 b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8 +b Fu(170)275 2552 y(D.2)92 b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8 b(ords)20 b Fn(:)c(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)34 -b Fu(165)275 2661 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8 +b Fu(171)275 2661 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8 b(ariable)32 b(Index)27 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)42 b Fu(166)275 2771 y(D.4)92 b(F)-8 b(unction)31 +h(:)f(:)g(:)42 b Fu(172)275 2771 y(D.4)92 b(F)-8 b(unction)31 b(Index)24 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 -b Fu(168)275 2880 y(D.5)92 b(Concept)30 b(Index)15 b +b Fu(174)275 2880 y(D.5)92 b(Concept)30 b(Index)15 b Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29 b -Fu(170)p eop end +Fu(176)p eop end %%Page: 1 7 TeXDict begin 1 6 bop 3705 -116 a Fu(1)150 299 y Fp(1)80 b(In)l(tro)t(duction)150 604 y Fs(1.1)68 b(What)45 b(is)g(Bash?)150 @@ -8242,7 +8280,7 @@ b(and)e(function)h(names.)630 4020 y(Also)31 b(referred)f(to)h(as)f(an) h Ft(identifier)p Fu(.)150 4186 y Ft(operator)96 b Fu(A)38 b Ft(control)28 b(operator)36 b Fu(or)h(a)i Ft(redirection)27 b(operator)p Fu(.)61 b(See)38 b(Section)g(3.6)h([Redirec-)630 -4295 y(tions],)f(page)f(32,)i(for)d(a)g(list)h(of)f(redirection)h(op)s +4295 y(tions],)f(page)f(34,)i(for)d(a)g(list)h(of)f(redirection)h(op)s (erators.)58 b(Op)s(erators)35 b(con)m(tain)j(at)f(least)630 4405 y(one)31 b(unquoted)e Ft(metacharacter)p Fu(.)150 4570 y Ft(process)f(group)630 4680 y Fu(A)i(collection)k(of)c(related)h @@ -8314,34 +8352,34 @@ y Fu(The)c(follo)m(wing)h(is)f(a)h(brief)e(description)i(of)f(the)g (shell's)h(op)s(eration)f(when)f(it)i(reads)f(and)f(executes)j(a)150 3299 y(command.)h(Basically)-8 b(,)34 b(the)c(shell)h(do)s(es)f(the)h (follo)m(wing:)199 3456 y(1.)61 b(Reads)42 b(its)h(input)e(from)h(a)g -(\014le)h(\(see)g(Section)g(3.8)g([Shell)f(Scripts],)j(page)e(40\),)k +(\014le)h(\(see)g(Section)g(3.8)g([Shell)f(Scripts],)j(page)e(41\),)k (from)41 b(a)i(string)330 3566 y(supplied)30 b(as)h(an)g(argumen)m(t)h (to)g(the)f Ft(-c)g Fu(in)m(v)m(o)s(cation)i(option)f(\(see)g(Section)g -(6.1)g([In)m(v)m(oking)g(Bash],)330 3675 y(page)f(82\),)h(or)e(from)g +(6.1)g([In)m(v)m(oking)g(Bash],)330 3675 y(page)f(85\),)h(or)e(from)g (the)h(user's)f(terminal.)199 3821 y(2.)61 b(Breaks)43 b(the)g(input)f(in)m(to)h(w)m(ords)f(and)g(op)s(erators,)k(ob)s(eying)d (the)g(quoting)g(rules)f(describ)s(ed)f(in)330 3931 y(Section)27 b(3.1.2)i([Quoting],)f(page)f(6.)40 b(These)26 b(tok)m(ens)i(are)f (separated)g(b)m(y)f Ft(metacharacters)p Fu(.)36 b(Alias)330 4040 y(expansion)30 b(is)h(p)s(erformed)d(b)m(y)j(this)f(step)g(\(see)i -(Section)f(6.6)g([Aliases],)i(page)e(90\).)199 4186 y(3.)61 +(Section)f(6.6)g([Aliases],)i(page)e(93\).)199 4186 y(3.)61 b(P)m(arses)35 b(the)g(tok)m(ens)g(in)m(to)h(simple)e(and)g(comp)s (ound)f(commands)h(\(see)h(Section)h(3.2)f([Shell)g(Com-)330 4296 y(mands],)30 b(page)h(8\).)199 4442 y(4.)61 b(P)m(erforms)40 b(the)h(v)-5 b(arious)40 b(shell)h(expansions)f(\(see)h(Section)g(3.5)g -([Shell)g(Expansions],)h(page)f(21\),)330 4551 y(breaking)35 +([Shell)g(Expansions],)h(page)f(22\),)330 4551 y(breaking)35 b(the)g(expanded)g(tok)m(ens)h(in)m(to)g(lists)f(of)g(\014lenames)h (\(see)g(Section)f(3.5.8)i([Filename)g(Ex-)330 4661 y(pansion],)30 -b(page)h(30\))h(and)e(commands)g(and)g(argumen)m(ts.)199 +b(page)h(32\))h(and)e(commands)g(and)g(argumen)m(ts.)199 4807 y(5.)61 b(P)m(erforms)36 b(an)m(y)i(necessary)f(redirections)g -(\(see)h(Section)f(3.6)h([Redirections],)i(page)e(32\))g(and)e(re-)330 +(\(see)h(Section)f(3.6)h([Redirections],)i(page)e(34\))g(and)e(re-)330 4916 y(mo)m(v)m(es)c(the)e(redirection)h(op)s(erators)g(and)f(their)g (op)s(erands)f(from)h(the)h(argumen)m(t)f(list.)199 5062 y(6.)61 b(Executes)31 b(the)g(command)f(\(see)h(Section)g(3.7)h -([Executing)f(Commands],)f(page)h(36\).)199 5208 y(7.)61 +([Executing)f(Commands],)f(page)h(38\).)199 5208 y(7.)61 b(Optionally)40 b(w)m(aits)g(for)f(the)g(command)g(to)h(complete)g(and) f(collects)i(its)f(exit)g(status)f(\(see)h(Sec-)330 5317 -y(tion)31 b(3.7.5)h([Exit)f(Status],)g(page)g(39\).)p +y(tion)31 b(3.7.5)h([Exit)f(Status],)g(page)g(40\).)p eop end %%Page: 6 12 TeXDict begin 6 11 bop 150 -116 a Fu(Chapter)30 b(3:)41 @@ -8359,11 +8397,11 @@ y(Quoting)c(can)f(b)s(e)g(used)f(to)j(disable)e(sp)s(ecial)h(treatmen)m (quoted)g(if)h(it)g(is)f(to)h(represen)m(t)g(itself.)68 b(When)39 b(the)h(command)f(history)150 1015 y(expansion)i(facilities)j (are)e(b)s(eing)f(used)g(\(see)h(Section)h(9.3)f([History)h(In)m -(teraction],)j(page)c(139\),)47 b(the)150 1124 y Fr(history)30 +(teraction],)j(page)c(143\),)47 b(the)150 1124 y Fr(history)30 b(expansion)h Fu(c)m(haracter,)h(usually)f(`)p Ft(!)p Fu(',)g(m)m(ust)f(b)s(e)g(quoted)h(to)g(prev)m(en)m(t)g(history)g (expansion.)41 b(See)150 1234 y(Section)22 b(9.1)g([Bash)f(History)h(F) --8 b(acilities],)26 b(page)c(137,)j(for)20 b(more)h(details)h +-8 b(acilities],)26 b(page)c(141,)j(for)20 b(more)h(details)h (concerning)g(history)f(expansion.)275 1364 y(There)37 b(are)h(three)f(quoting)h(mec)m(hanisms:)56 b(the)38 b Fr(escap)s(e)g(c)m(haracter)p Fu(,)j(single)d(quotes,)i(and)d(double) @@ -8392,13 +8430,13 @@ b(quotes,)h(with)f(the)g(exception)h(of)f(`)p Ft($)p Fu(',)h(`)p Ft(`)p Fu(',)g(`)p Ft(\\)p Fu(',)g(and,)f(when)f(history)g (expansion)h(is)g(enabled,)h(`)p Ft(!)p Fu('.)150 3254 y(When)e(the)h(shell)g(is)g(in)f Fm(posix)g Fu(mo)s(de)g(\(see)i -(Section)f(6.11)i([Bash)e(POSIX)e(Mo)s(de],)k(page)e(96\),)i(the)e(`)p +(Section)f(6.11)i([Bash)e(POSIX)e(Mo)s(de],)k(page)e(99\),)i(the)e(`)p Ft(!)p Fu(')150 3364 y(has)28 b(no)g(sp)s(ecial)h(meaning)g(within)f (double)g(quotes,)h(ev)m(en)g(when)f(history)g(expansion)g(is)g (enabled.)40 b(The)150 3474 y(c)m(haracters)h(`)p Ft($)p Fu(')e(and)g(`)p Ft(`)p Fu(')g(retain)h(their)f(sp)s(ecial)h(meaning)f (within)g(double)g(quotes)h(\(see)g(Section)g(3.5)150 -3583 y([Shell)29 b(Expansions],)g(page)h(21\).)41 b(The)28 +3583 y([Shell)29 b(Expansions],)g(page)h(22\).)41 b(The)28 b(bac)m(kslash)i(retains)f(its)h(sp)s(ecial)f(meaning)g(only)g(when)f (follo)m(w)m(ed)150 3693 y(b)m(y)41 b(one)f(of)h(the)g(follo)m(wing)h (c)m(haracters:)63 b(`)p Ft($)p Fu(',)43 b(`)p Ft(`)p @@ -8418,7 +8456,7 @@ Ft(!)p Fu(')f(is)h(not)g(remo)m(v)m(ed.)275 4371 y(The)41 b(sp)s(ecial)h(parameters)f(`)p Ft(*)p Fu(')h(and)f(`)p Ft(@)p Fu(')h(ha)m(v)m(e)g(sp)s(ecial)g(meaning)g(when)f(in)g(double)g (quotes)h(\(see)150 4481 y(Section)31 b(3.5.3)h([Shell)f(P)m(arameter)h -(Expansion],)e(page)h(23\).)150 4672 y Fk(3.1.2.4)63 +(Expansion],)e(page)h(24\).)150 4672 y Fk(3.1.2.4)63 b(ANSI-C)40 b(Quoting)150 4819 y Fu(W)-8 b(ords)43 b(of)f(the)h(form)f Ft($')p Fj(string)p Ft(')e Fu(are)j(treated)g(sp)s(ecially)-8 b(.)79 b(The)42 b(w)m(ord)g(expands)f(to)j Fr(string)p @@ -8432,57 +8470,57 @@ eop end TeXDict begin 7 12 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(7)150 299 y Ft(\\e)150 408 y(\\E)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)h -(\(not)f(ANSI)f(C\))150 572 y Ft(\\f)384 b Fu(form)30 -b(feed)150 735 y Ft(\\n)384 b Fu(newline)150 898 y Ft(\\r)g -Fu(carriage)32 b(return)150 1061 y Ft(\\t)384 b Fu(horizon)m(tal)32 -b(tab)150 1224 y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)150 -1387 y Ft(\\\\)384 b Fu(bac)m(kslash)150 1551 y Ft(\\')g -Fu(single)31 b(quote)150 1714 y Ft(\\")384 b Fu(double)30 -b(quote)150 1877 y Ft(\\?)384 b Fu(question)31 b(mark)150 -2040 y Ft(\\)p Fj(nnn)288 b Fu(the)31 b(eigh)m(t-bit)h(c)m(haracter)g -(whose)e(v)-5 b(alue)31 b(is)f(the)h(o)s(ctal)g(v)-5 -b(alue)31 b Fr(nnn)e Fu(\(one)i(to)g(three)g(digits\))150 -2203 y Ft(\\x)p Fj(HH)288 b Fu(the)36 b(eigh)m(t-bit)i(c)m(haracter)f -(whose)f(v)-5 b(alue)36 b(is)g(the)g(hexadecimal)h(v)-5 -b(alue)36 b Fr(HH)46 b Fu(\(one)37 b(or)f(t)m(w)m(o)630 -2313 y(hex)30 b(digits\))150 2476 y Ft(\\u)p Fj(HHHH)192 -b Fu(the)33 b(Unico)s(de)f(\(ISO/IEC)g(10646\))j(c)m(haracter)f(whose)e -(v)-5 b(alue)33 b(is)g(the)g(hexadecimal)g(v)-5 b(alue)630 -2586 y Fr(HHHH)41 b Fu(\(one)31 b(to)g(four)f(hex)g(digits\))150 -2749 y Ft(\\U)p Fj(HHHHHHHH)630 2858 y Fu(the)j(Unico)s(de)f(\(ISO/IEC) -g(10646\))j(c)m(haracter)f(whose)e(v)-5 b(alue)33 b(is)g(the)g -(hexadecimal)g(v)-5 b(alue)630 2968 y Fr(HHHHHHHH)42 -b Fu(\(one)31 b(to)g(eigh)m(t)g(hex)g(digits\))150 3131 -y Ft(\\c)p Fj(x)336 b Fu(a)31 b(con)m(trol-)p Fr(x)38 -b Fu(c)m(haracter)150 3296 y(The)30 b(expanded)f(result)i(is)f +(\(not)f(ANSI)f(C\))150 566 y Ft(\\f)384 b Fu(form)30 +b(feed)150 723 y Ft(\\n)384 b Fu(newline)150 880 y Ft(\\r)g +Fu(carriage)32 b(return)150 1037 y Ft(\\t)384 b Fu(horizon)m(tal)32 +b(tab)150 1194 y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)150 +1351 y Ft(\\\\)384 b Fu(bac)m(kslash)150 1508 y Ft(\\')g +Fu(single)31 b(quote)150 1665 y Ft(\\")384 b Fu(double)30 +b(quote)150 1823 y Ft(\\?)384 b Fu(question)31 b(mark)150 +1980 y Ft(\\)p Fj(nnn)288 b Fu(the)36 b(eigh)m(t-bit)h(c)m(haracter)g +(whose)f(v)-5 b(alue)36 b(is)f(the)h(o)s(ctal)h(v)-5 +b(alue)36 b Fr(nnn)e Fu(\(one)i(to)h(three)f(o)s(ctal)630 +2089 y(digits\))150 2246 y Ft(\\x)p Fj(HH)288 b Fu(the)36 +b(eigh)m(t-bit)i(c)m(haracter)f(whose)f(v)-5 b(alue)36 +b(is)g(the)g(hexadecimal)h(v)-5 b(alue)36 b Fr(HH)46 +b Fu(\(one)37 b(or)f(t)m(w)m(o)630 2356 y(hex)30 b(digits\))150 +2513 y Ft(\\u)p Fj(HHHH)192 b Fu(the)33 b(Unico)s(de)f(\(ISO/IEC)g +(10646\))j(c)m(haracter)f(whose)e(v)-5 b(alue)33 b(is)g(the)g +(hexadecimal)g(v)-5 b(alue)630 2623 y Fr(HHHH)41 b Fu(\(one)31 +b(to)g(four)f(hex)g(digits\))150 2780 y Ft(\\U)p Fj(HHHHHHHH)630 +2889 y Fu(the)j(Unico)s(de)f(\(ISO/IEC)g(10646\))j(c)m(haracter)f +(whose)e(v)-5 b(alue)33 b(is)g(the)g(hexadecimal)g(v)-5 +b(alue)630 2999 y Fr(HHHHHHHH)42 b Fu(\(one)31 b(to)g(eigh)m(t)g(hex)g +(digits\))150 3156 y Ft(\\c)p Fj(x)336 b Fu(a)31 b(con)m(trol-)p +Fr(x)38 b Fu(c)m(haracter)150 3313 y(The)30 b(expanded)f(result)i(is)f (single-quoted,)i(as)f(if)f(the)g(dollar)h(sign)g(had)e(not)i(b)s(een)f -(presen)m(t.)150 3499 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41 -b(T)-10 b(ranslation)150 3646 y Fu(A)28 b(double-quoted)g(string)f +(presen)m(t.)150 3510 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41 +b(T)-10 b(ranslation)150 3657 y Fu(A)28 b(double-quoted)g(string)f (preceded)h(b)m(y)f(a)h(dollar)h(sign)e(\(`)p Ft($)p Fu('\))i(will)f(cause)g(the)g(string)g(to)g(b)s(e)f(translated)150 -3756 y(according)f(to)f(the)g(curren)m(t)g(lo)s(cale.)41 +3767 y(according)f(to)f(the)g(curren)m(t)g(lo)s(cale.)41 b(If)24 b(the)h(curren)m(t)g(lo)s(cale)h(is)f Ft(C)g Fu(or)g Ft(POSIX)p Fu(,)f(the)h(dollar)h(sign)f(is)g(ignored.)150 -3865 y(If)30 b(the)g(string)h(is)f(translated)h(and)f(replaced,)h(the)g -(replacemen)m(t)h(is)e(double-quoted.)275 4004 y(Some)20 +3876 y(If)30 b(the)g(string)h(is)f(translated)h(and)f(replaced,)h(the)g +(replacemen)m(t)h(is)e(double-quoted.)275 4010 y(Some)20 b(systems)h(use)f(the)h(message)h(catalog)h(selected)f(b)m(y)f(the)g Ft(LC_MESSAGES)c Fu(shell)k(v)-5 b(ariable.)39 b(Others)150 -4113 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog)i(from)d(the) +4119 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog)i(from)d(the) g(v)-5 b(alue)37 b(of)g(the)h Ft(TEXTDOMAIN)c Fu(shell)j(v)-5 -b(ariable,)150 4223 y(p)s(ossibly)31 b(adding)g(a)g(su\016x)g(of)h(`)p +b(ariable,)150 4229 y(p)s(ossibly)31 b(adding)g(a)g(su\016x)g(of)h(`)p Ft(.mo)p Fu('.)43 b(If)31 b(y)m(ou)h(use)f(the)h Ft(TEXTDOMAIN)c Fu(v)-5 b(ariable,)33 b(y)m(ou)f(ma)m(y)g(need)f(to)h(set)150 -4332 y(the)22 b Ft(TEXTDOMAINDIR)d Fu(v)-5 b(ariable)23 +4339 y(the)22 b Ft(TEXTDOMAINDIR)d Fu(v)-5 b(ariable)23 b(to)g(the)f(lo)s(cation)i(of)e(the)h(message)g(catalog)i(\014les.)38 -b(Still)23 b(others)f(use)g(b)s(oth)150 4442 y(v)-5 b(ariables)31 +b(Still)23 b(others)f(use)g(b)s(oth)150 4448 y(v)-5 b(ariables)31 b(in)f(this)g(fashion:)41 b Ft(TEXTDOMAINDIR)p Fu(/)p -Ft(LC_MESSAGES)p Fu(/LC)p 2528 4442 28 4 v 34 w(MESSA)m(GES/)p +Ft(LC_MESSAGES)p Fu(/LC)p 2528 4448 28 4 v 34 w(MESSA)m(GES/)p Ft(TEXTDOMAIN)p Fu(.mo.)150 4645 y Fk(3.1.3)63 b(Commen)m(ts)150 4792 y Fu(In)21 b(a)i(non-in)m(teractiv)m(e)h(shell,)g(or)e(an)g(in)m (teractiv)m(e)j(shell)d(in)g(whic)m(h)g(the)g Ft(interactive_comments) 16 b Fu(option)150 4902 y(to)40 b(the)f Ft(shopt)e Fu(builtin)h(is)h (enabled)g(\(see)h(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)k(page)e -(64\),)i(a)d(w)m(ord)150 5011 y(b)s(eginning)26 b(with)g(`)p +(65\),)i(a)d(w)m(ord)150 5011 y(b)s(eginning)26 b(with)g(`)p Ft(#)p Fu(')g(causes)h(that)f(w)m(ord)g(and)g(all)h(remaining)g(c)m (haracters)g(on)f(that)h(line)g(to)g(b)s(e)f(ignored.)150 5121 y(An)43 b(in)m(teractiv)m(e)j(shell)e(without)f(the)g @@ -8490,7 +8528,7 @@ Ft(interactive_comments)38 b Fu(option)44 b(enabled)f(do)s(es)g(not)g (allo)m(w)150 5230 y(commen)m(ts.)56 b(The)34 b Ft (interactive_comments)c Fu(option)35 b(is)g(on)g(b)m(y)g(default)g(in)g (in)m(teractiv)m(e)j(shells.)55 b(See)150 5340 y(Section)30 -b(6.3)f([In)m(teractiv)m(e)j(Shells],)d(page)h(85,)g(for)e(a)i +b(6.3)f([In)m(teractiv)m(e)j(Shells],)d(page)h(88,)g(for)e(a)i (description)e(of)h(what)g(mak)m(es)h(a)f(shell)g(in)m(teractiv)m(e.)p eop end %%Page: 8 14 @@ -8516,7 +8554,7 @@ b(page)e(3\).)54 b(The)35 b(\014rst)e(w)m(ord)i(generally)g(sp)s (eci\014es)g(a)g(command)f(to)h(b)s(e)f(executed,)j(with)150 1600 y(the)31 b(rest)f(of)h(the)f(w)m(ords)g(b)s(eing)g(that)h (command's)f(argumen)m(ts.)275 1736 y(The)h(return)h(status)g(\(see)i -(Section)f(3.7.5)h([Exit)f(Status],)h(page)f(39\))g(of)g(a)g(simple)f +(Section)f(3.7.5)h([Exit)f(Status],)h(page)f(40\))g(of)g(a)g(simple)f (command)g(is)h(its)150 1846 y(exit)38 b(status)f(as)g(pro)m(vided)f(b) m(y)h(the)g Fm(posix)f Fu(1003.1)j Ft(waitpid)c Fu(function,)j(or)f (128)p Ft(+)p Fr(n)g Fu(if)g(the)g(command)150 1956 y(w)m(as)31 @@ -8551,21 +8589,21 @@ h(it)150 3752 y(\014nishes.)51 b(The)34 b(statistics)i(curren)m(tly)e (output)g(format)g(to)150 3971 y(that)j(sp)s(eci\014ed)e(b)m(y)h Fm(posix)p Fu(.)49 b(When)33 b(the)g(shell)g(is)h(in)e Fm(posix)h Fu(mo)s(de)g(\(see)h(Section)g(6.11)g([Bash)g(POSIX)150 -4081 y(Mo)s(de],)40 b(page)f(96\),)i(it)d(do)s(es)f(not)h(recognize)i +4081 y(Mo)s(de],)40 b(page)f(99\),)i(it)d(do)s(es)f(not)h(recognize)i Ft(time)c Fu(as)i(a)g(reserv)m(ed)g(w)m(ord)f(if)h(the)g(next)g(tok)m (en)g(b)s(egins)150 4191 y(with)33 b(a)g(`)p Ft(-)p Fu('.)49 b(The)33 b Ft(TIMEFORMAT)d Fu(v)-5 b(ariable)34 b(ma)m(y)g(b)s(e)f(set) g(to)h(a)g(format)f(string)g(that)h(sp)s(eci\014es)f(ho)m(w)g(the)150 4300 y(timing)38 b(information)g(should)e(b)s(e)h(displa)m(y)m(ed.)62 b(See)38 b(Section)g(5.2)g([Bash)g(V)-8 b(ariables],)41 -b(page)d(71,)i(for)e(a)150 4410 y(description)27 b(of)g(the)h(a)m(v)-5 +b(page)d(73,)i(for)e(a)150 4410 y(description)27 b(of)g(the)h(a)m(v)-5 b(ailable)29 b(formats.)40 b(The)26 b(use)h(of)g Ft(time)f Fu(as)i(a)f(reserv)m(ed)g(w)m(ord)g(p)s(ermits)f(the)h(timing)150 4519 y(of)38 b(shell)g(builtins,)i(shell)e(functions,)i(and)d(pip)s (elines.)63 b(An)38 b(external)h Ft(time)e Fu(command)h(cannot)g(time) 150 4629 y(these)31 b(easily)-8 b(.)275 4765 y(When)29 b(the)h(shell)h(is)f(in)f Fm(posix)g Fu(mo)s(de)h(\(see)h(Section)f -(6.11)i([Bash)e(POSIX)f(Mo)s(de],)i(page)g(96\),)g Ft(time)150 +(6.11)i([Bash)e(POSIX)f(Mo)s(de],)i(page)g(99\),)g Ft(time)150 4875 y Fu(ma)m(y)26 b(b)s(e)f(follo)m(w)m(ed)j(b)m(y)d(a)h(newline.)39 b(In)25 b(this)h(case,)i(the)d(shell)h(displa)m(ys)g(the)g(total)h (user)e(and)g(system)h(time)150 4984 y(consumed)33 b(b)m(y)h(the)h @@ -8579,2528 +8617,2647 @@ Fu(v)-5 b(ariable)35 b(ma)m(y)g(b)s(e)e(used)g(to)i(sp)s(ecify)150 %%Page: 9 15 TeXDict begin 9 14 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(9)275 299 -y(Eac)m(h)25 b(command)g(in)g(a)g(pip)s(eline)g(is)g(executed)h(in)f -(its)g(o)m(wn)h(subshell)e(\(see)i(Section)g(3.7.3)h([Command)150 -408 y(Execution)36 b(En)m(vironmen)m(t],)i(page)e(37\).)58 -b(The)36 b(exit)g(status)g(of)g(a)g(pip)s(eline)g(is)f(the)h(exit)h -(status)f(of)g(the)150 518 y(last)27 b(command)f(in)f(the)i(pip)s -(eline,)f(unless)g(the)g Ft(pipefail)e Fu(option)i(is)g(enabled)g -(\(see)h(Section)g(4.3.1)h([The)150 628 y(Set)34 b(Builtin],)j(page)e -(60\).)53 b(If)34 b Ft(pipefail)e Fu(is)i(enabled,)h(the)g(pip)s -(eline's)f(return)f(status)h(is)h(the)f(v)-5 b(alue)35 -b(of)150 737 y(the)d(last)h(\(righ)m(tmost\))h(command)e(to)h(exit)g -(with)e(a)i(non-zero)f(status,)h(or)f(zero)h(if)f(all)h(commands)f -(exit)150 847 y(successfully)-8 b(.)67 b(If)38 b(the)h(reserv)m(ed)g(w) -m(ord)g(`)p Ft(!)p Fu(')g(precedes)g(the)g(pip)s(eline,)h(the)g(exit)f -(status)g(is)g(the)g(logical)150 956 y(negation)h(of)f(the)f(exit)i -(status)f(as)f(describ)s(ed)g(ab)s(o)m(v)m(e.)66 b(The)38 -b(shell)h(w)m(aits)h(for)e(all)h(commands)g(in)f(the)150 -1066 y(pip)s(eline)30 b(to)h(terminate)g(b)s(efore)f(returning)g(a)h(v) --5 b(alue.)150 1262 y Fk(3.2.3)63 b(Lists)41 b(of)h(Commands)150 -1409 y Fu(A)37 b Ft(list)e Fu(is)i(a)g(sequence)g(of)g(one)g(or)f(more) +y(Eac)m(h)29 b(command)g(in)g(a)g(pip)s(eline)g(is)g(executed)h(in)e +(its)i(o)m(wn)f(subshell,)f(whic)m(h)h(is)g(a)g(separate)h(pro)s(cess) +150 408 y(\(see)g(Section)g(3.7.3)h([Command)e(Execution)h(En)m +(vironmen)m(t],)g(page)g(39\).)41 b(If)29 b(the)g Ft(lastpipe)e +Fu(option)j(is)150 518 y(enabled)35 b(using)g(the)g Ft(shopt)f +Fu(builtin)g(\(see)i(Section)g(4.3.2)h([The)e(Shopt)f(Builtin],)j(page) +f(65\),)i(the)d(last)150 628 y(elemen)m(t)d(of)e(a)h(pip)s(eline)f(ma)m +(y)h(b)s(e)f(run)f(b)m(y)h(the)h(shell)f(pro)s(cess.)275 +760 y(The)24 b(exit)i(status)f(of)h(a)f(pip)s(eline)g(is)g(the)g(exit)h +(status)f(of)h(the)f(last)h(command)f(in)f(the)i(pip)s(eline,)g(unless) +150 870 y(the)31 b Ft(pipefail)d Fu(option)j(is)g(enabled)f(\(see)i +(Section)f(4.3.1)i([The)d(Set)h(Builtin],)g(page)h(61\).)42 +b(If)30 b Ft(pipefail)150 980 y Fu(is)f(enabled,)g(the)f(pip)s(eline's) +g(return)g(status)h(is)f(the)h(v)-5 b(alue)29 b(of)f(the)h(last)g +(\(righ)m(tmost\))i(command)d(to)h(exit)150 1089 y(with)34 +b(a)h(non-zero)g(status,)i(or)d(zero)i(if)e(all)i(commands)e(exit)h +(successfully)-8 b(.)54 b(If)34 b(the)h(reserv)m(ed)g(w)m(ord)f(`)p +Ft(!)p Fu(')150 1199 y(precedes)e(the)f(pip)s(eline,)h(the)f(exit)i +(status)f(is)f(the)h(logical)i(negation)f(of)e(the)h(exit)g(status)g +(as)g(describ)s(ed)150 1308 y(ab)s(o)m(v)m(e.)63 b(The)38 +b(shell)f(w)m(aits)i(for)e(all)i(commands)e(in)g(the)h(pip)s(eline)f +(to)h(terminate)h(b)s(efore)e(returning)g(a)150 1418 +y(v)-5 b(alue.)150 1614 y Fk(3.2.3)63 b(Lists)41 b(of)h(Commands)150 +1761 y Fu(A)37 b Ft(list)e Fu(is)i(a)g(sequence)g(of)g(one)g(or)f(more) h(pip)s(elines)f(separated)h(b)m(y)g(one)g(of)f(the)h(op)s(erators)g(`) -p Ft(;)p Fu(',)i(`)p Ft(&)p Fu(',)150 1518 y(`)p Ft(&&)p +p Ft(;)p Fu(',)i(`)p Ft(&)p Fu(',)150 1870 y(`)p Ft(&&)p Fu(',)31 b(or)f(`)p Ft(||)p Fu(',)g(and)g(optionally)i(terminated)f(b)m (y)f(one)h(of)f(`)p Ft(;)p Fu(',)h(`)p Ft(&)p Fu(',)g(or)f(a)h -Ft(newline)p Fu(.)275 1651 y(Of)23 b(these)h(list)g(op)s(erators,)i(`)p +Ft(newline)p Fu(.)275 2003 y(Of)23 b(these)h(list)g(op)s(erators,)i(`)p Ft(&&)p Fu(')d(and)g(`)p Ft(||)p Fu(')h(ha)m(v)m(e)h(equal)f (precedence,)i(follo)m(w)m(ed)f(b)m(y)f(`)p Ft(;)p Fu(')g(and)f(`)p -Ft(&)p Fu(',)i(whic)m(h)150 1761 y(ha)m(v)m(e)32 b(equal)e(precedence.) -275 1893 y(A)f(sequence)h(of)g(one)g(or)g(more)g(newlines)f(ma)m(y)h +Ft(&)p Fu(',)i(whic)m(h)150 2113 y(ha)m(v)m(e)32 b(equal)e(precedence.) +275 2245 y(A)f(sequence)h(of)g(one)g(or)g(more)g(newlines)f(ma)m(y)h (app)s(ear)f(in)h(a)g Ft(list)e Fu(to)j(delimit)f(commands,)g(equiv-) -150 2003 y(alen)m(t)i(to)f(a)g(semicolon.)275 2136 y(If)c(a)h(command)f +150 2355 y(alen)m(t)i(to)f(a)g(semicolon.)275 2488 y(If)c(a)h(command)f (is)h(terminated)g(b)m(y)g(the)g(con)m(trol)h(op)s(erator)f(`)p Ft(&)p Fu(',)h(the)e(shell)h(executes)h(the)f(command)150 -2245 y(async)m(hronously)g(in)h(a)g(subshell.)39 b(This)28 +2597 y(async)m(hronously)g(in)h(a)g(subshell.)39 b(This)28 b(is)h(kno)m(wn)f(as)h(executing)h(the)f(command)g(in)f(the)h -Fr(bac)m(kground)p Fu(.)150 2355 y(The)f(shell)h(do)s(es)f(not)h(w)m -(ait)g(for)f(the)h(command)f(to)i(\014nish,)d(and)h(the)h(return)e -(status)i(is)g(0)g(\(true\).)40 b(When)150 2464 y(job)d(con)m(trol)i -(is)e(not)g(activ)m(e)j(\(see)e(Chapter)f(7)g([Job)g(Con)m(trol],)j -(page)e(100\),)j(the)d(standard)e(input)g(for)150 2574 -y(async)m(hronous)43 b(commands,)k(in)d(the)f(absence)i(of)f(an)m(y)g -(explicit)h(redirections,)j(is)43 b(redirected)h(from)150 -2684 y Ft(/dev/null)p Fu(.)275 2816 y(Commands)19 b(separated)j(b)m(y)f -(a)g(`)p Ft(;)p Fu(')g(are)h(executed)g(sequen)m(tially;)k(the)21 -b(shell)g(w)m(aits)h(for)f(eac)m(h)h(command)150 2926 -y(to)31 b(terminate)h(in)e(turn.)39 b(The)30 b(return)f(status)i(is)f -(the)h(exit)g(status)g(of)g(the)f(last)h(command)f(executed.)275 -3059 y Fm(and)g Fu(and)h Fm(or)g Fu(lists)h(are)g(sequences)f(of)h(one) +Fr(bac)m(kground)p Fu(,)150 2707 y(and)42 b(these)i(are)f(referred)g +(to)g(as)h Fr(async)m(hronous)i Fu(commands.)78 b(The)43 +b(shell)g(do)s(es)g(not)g(w)m(ait)h(for)f(the)150 2816 +y(command)34 b(to)h(\014nish,)f(and)f(the)h(return)f(status)i(is)f(0)g +(\(true\).)53 b(When)34 b(job)g(con)m(trol)h(is)f(not)h(activ)m(e)h +(\(see)150 2926 y(Chapter)27 b(7)h([Job)f(Con)m(trol],)i(page)g(103\),) +h(the)d(standard)g(input)f(for)i(async)m(hronous)f(commands,)h(in)f +(the)150 3036 y(absence)k(of)f(an)m(y)h(explicit)h(redirections,)f(is)f +(redirected)h(from)f Ft(/dev/null)p Fu(.)275 3168 y(Commands)19 +b(separated)j(b)m(y)f(a)g(`)p Ft(;)p Fu(')g(are)h(executed)g(sequen)m +(tially;)k(the)21 b(shell)g(w)m(aits)h(for)f(eac)m(h)h(command)150 +3278 y(to)31 b(terminate)h(in)e(turn.)39 b(The)30 b(return)f(status)i +(is)f(the)h(exit)g(status)g(of)g(the)f(last)h(command)f(executed.)275 +3411 y Fm(and)g Fu(and)h Fm(or)g Fu(lists)h(are)g(sequences)f(of)h(one) g(or)f(more)h(pip)s(elines)e(separated)i(b)m(y)g(the)f(con)m(trol)i(op) -s(er-)150 3168 y(ators)e(`)p Ft(&&)p Fu(')f(and)g(`)p +s(er-)150 3520 y(ators)e(`)p Ft(&&)p Fu(')f(and)g(`)p Ft(||)p Fu(',)h(resp)s(ectiv)m(ely)-8 b(.)42 b Fm(and)30 b Fu(and)f Fm(or)h Fu(lists)h(are)g(executed)g(with)f(left)h(asso)s -(ciativit)m(y)-8 b(.)275 3301 y(An)30 b Fm(and)f Fu(list)i(has)f(the)h -(form)390 3434 y Fj(command1)46 b Ft(&&)h Fj(command2)150 -3566 y Fr(command2)38 b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h -Fr(command1)38 b Fu(returns)29 b(an)h(exit)h(status)g(of)g(zero.)275 -3699 y(An)f Fm(or)f Fu(list)i(has)f(the)h(form)390 3832 -y Fj(command1)46 b Ft(||)h Fj(command2)150 3965 y Fr(command2)38 -b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h Fr(command1)38 -b Fu(returns)29 b(a)i(non-zero)g(exit)g(status.)275 4097 -y(The)h(return)g(status)i(of)f Fm(and)f Fu(and)h Fm(or)f -Fu(lists)i(is)f(the)g(exit)h(status)g(of)f(the)g(last)h(command)f -(executed)150 4207 y(in)d(the)h(list.)150 4403 y Fk(3.2.4)63 -b(Comp)s(ound)42 b(Commands)150 4550 y Fu(Comp)s(ound)32 -b(commands)j(are)g(the)g(shell)g(programming)f(constructs.)54 -b(Eac)m(h)35 b(construct)g(b)s(egins)f(with)150 4659 -y(a)k(reserv)m(ed)f(w)m(ord)h(or)f(con)m(trol)i(op)s(erator)f(and)f(is) -g(terminated)h(b)m(y)f(a)h(corresp)s(onding)f(reserv)m(ed)g(w)m(ord)150 -4769 y(or)44 b(op)s(erator.)81 b(An)m(y)44 b(redirections)g(\(see)h -(Section)g(3.6)g([Redirections],)j(page)d(32\))g(asso)s(ciated)g(with) -150 4878 y(a)g(comp)s(ound)e(command)i(apply)f(to)h(all)h(commands)e -(within)g(that)h(comp)s(ound)e(command)i(unless)150 4988 -y(explicitly)32 b(o)m(v)m(erridden.)275 5121 y(In)20 -b(most)h(cases)g(a)g(list)h(of)f(commands)f(in)g(a)h(comp)s(ound)f -(command's)g(description)h(ma)m(y)g(b)s(e)f(separated)150 -5230 y(from)30 b(the)h(rest)g(of)g(the)g(command)g(b)m(y)f(one)h(or)g -(more)g(newlines,)g(and)f(ma)m(y)i(b)s(e)e(follo)m(w)m(ed)i(b)m(y)f(a)g -(newline)150 5340 y(in)f(place)h(of)g(a)g(semicolon.)p +(ciativit)m(y)-8 b(.)275 3653 y(An)30 b Fm(and)f Fu(list)i(has)f(the)h +(form)390 3786 y Fj(command1)46 b Ft(&&)h Fj(command2)150 +3918 y Fr(command2)38 b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h +Fr(command1)38 b Fu(returns)29 b(an)h(exit)h(status)g(of)g(zero)g +(\(success\).)275 4051 y(An)f Fm(or)f Fu(list)i(has)f(the)h(form)390 +4184 y Fj(command1)46 b Ft(||)h Fj(command2)150 4317 +y Fr(command2)38 b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h +Fr(command1)38 b Fu(returns)29 b(a)i(non-zero)g(exit)g(status.)275 +4449 y(The)h(return)g(status)i(of)f Fm(and)f Fu(and)h +Fm(or)f Fu(lists)i(is)f(the)g(exit)h(status)g(of)f(the)g(last)h +(command)f(executed)150 4559 y(in)d(the)h(list.)150 4755 +y Fk(3.2.4)63 b(Comp)s(ound)42 b(Commands)150 4902 y +Fu(Comp)s(ound)29 b(commands)h(are)i(the)f(shell)g(programming)f +(language)j(constructs.)42 b(Eac)m(h)32 b(construct)f(b)s(e-)150 +5011 y(gins)25 b(with)f(a)i(reserv)m(ed)f(w)m(ord)f(or)h(con)m(trol)h +(op)s(erator)f(and)g(is)g(terminated)g(b)m(y)g(a)g(corresp)s(onding)f +(reserv)m(ed)150 5121 y(w)m(ord)i(or)g(op)s(erator.)40 +b(An)m(y)26 b(redirections)g(\(see)i(Section)f(3.6)g([Redirections],)h +(page)f(34\))h(asso)s(ciated)f(with)150 5230 y(a)k(comp)s(ound)f +(command)h(apply)f(to)i(all)g(commands)f(within)f(that)i(comp)s(ound)d +(command)i(unless)f(ex-)150 5340 y(plicitly)i(o)m(v)m(erridden.)p eop end %%Page: 10 16 TeXDict begin 10 15 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(10)275 299 -y(Bash)45 b(pro)m(vides)h(lo)s(oping)g(constructs,)j(conditional)e +y(In)20 b(most)h(cases)g(a)g(list)h(of)f(commands)f(in)g(a)h(comp)s +(ound)f(command's)g(description)h(ma)m(y)g(b)s(e)f(separated)150 +408 y(from)30 b(the)h(rest)g(of)g(the)g(command)g(b)m(y)f(one)h(or)g +(more)g(newlines,)g(and)f(ma)m(y)i(b)s(e)e(follo)m(w)m(ed)i(b)m(y)f(a)g +(newline)150 518 y(in)f(place)h(of)g(a)g(semicolon.)275 +663 y(Bash)45 b(pro)m(vides)h(lo)s(oping)g(constructs,)j(conditional)e (commands,)j(and)44 b(mec)m(hanisms)i(to)g(group)150 -408 y(commands)30 b(and)g(execute)i(them)e(as)g(a)h(unit.)150 -609 y Fk(3.2.4.1)63 b(Lo)s(oping)43 b(Constructs)150 -756 y Fu(Bash)31 b(supp)s(orts)d(the)j(follo)m(wing)g(lo)s(oping)g -(constructs.)275 891 y(Note)k(that)f(wherev)m(er)g(a)g(`)p +773 y(commands)30 b(and)g(execute)i(them)e(as)g(a)h(unit.)150 +983 y Fk(3.2.4.1)63 b(Lo)s(oping)43 b(Constructs)150 +1130 y Fu(Bash)31 b(supp)s(orts)d(the)j(follo)m(wing)g(lo)s(oping)g +(constructs.)275 1276 y(Note)k(that)f(wherev)m(er)g(a)g(`)p Ft(;)p Fu(')g(app)s(ears)f(in)h(the)g(description)g(of)g(a)g(command's) -g(syn)m(tax,)i(it)e(ma)m(y)h(b)s(e)150 1001 y(replaced)c(with)f(one)h -(or)f(more)g(newlines.)150 1162 y Ft(until)240 b Fu(The)30 +g(syn)m(tax,)i(it)e(ma)m(y)h(b)s(e)150 1385 y(replaced)c(with)f(one)h +(or)f(more)g(newlines.)150 1561 y Ft(until)240 b Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(until)e Fu(command)h(is:)870 -1297 y Ft(until)46 b Fj(test-commands)p Ft(;)e(do)j Fj -(consequent-commands)p Ft(;)c(done)630 1432 y Fu(Execute)f +1701 y Ft(until)46 b Fj(test-commands)p Ft(;)e(do)j Fj +(consequent-commands)p Ft(;)c(done)630 1841 y Fu(Execute)f Fr(consequen)m(t-commands)k Fu(as)41 b(long)h(as)f Fr(test-commands)46 -b Fu(has)41 b(an)g(exit)h(status)630 1542 y(whic)m(h)c(is)h(not)g +b Fu(has)41 b(an)g(exit)h(status)630 1950 y(whic)m(h)c(is)h(not)g (zero.)67 b(The)38 b(return)g(status)h(is)f(the)h(exit)h(status)f(of)g -(the)g(last)g(command)630 1651 y(executed)31 b(in)f Fr(consequen)m +(the)g(last)g(command)630 2060 y(executed)31 b(in)f Fr(consequen)m (t-commands)p Fu(,)i(or)e(zero)h(if)g(none)f(w)m(as)h(executed.)150 -1812 y Ft(while)240 b Fu(The)30 b(syn)m(tax)h(of)f(the)h -Ft(while)e Fu(command)h(is:)870 1947 y Ft(while)46 b +2230 y Ft(while)240 b Fu(The)30 b(syn)m(tax)h(of)f(the)h +Ft(while)e Fu(command)h(is:)870 2370 y Ft(while)46 b Fj(test-commands)p Ft(;)e(do)j Fj(consequent-commands)p -Ft(;)c(done)630 2082 y Fu(Execute)f Fr(consequen)m(t-commands)k +Ft(;)c(done)630 2510 y Fu(Execute)f Fr(consequen)m(t-commands)k Fu(as)41 b(long)h(as)f Fr(test-commands)46 b Fu(has)41 -b(an)g(exit)h(status)630 2192 y(of)34 b(zero.)53 b(The)34 +b(an)g(exit)h(status)630 2620 y(of)34 b(zero.)53 b(The)34 b(return)f(status)h(is)h(the)f(exit)h(status)g(of)f(the)g(last)h -(command)f(executed)h(in)630 2301 y Fr(consequen)m(t-commands)p +(command)f(executed)h(in)630 2729 y Fr(consequen)m(t-commands)p Fu(,)c(or)g(zero)g(if)f(none)g(w)m(as)h(executed.)150 -2462 y Ft(for)336 b Fu(The)30 b(syn)m(tax)h(of)f(the)h -Ft(for)e Fu(command)i(is:)870 2597 y Ft(for)47 b Fj(name)g +2900 y Ft(for)336 b Fu(The)30 b(syn)m(tax)h(of)f(the)h +Ft(for)e Fu(command)i(is:)870 3040 y Ft(for)47 b Fj(name)g Ft([)g([in)g([)p Fj(words)f Ft(...)o(])i(])f(;)h(])f(do)g -Fj(commands)p Ft(;)e(done)630 2732 y Fu(Expand)31 b Fr(w)m(ords)p -Fu(,)j(and)e(execute)i Fr(commands)i Fu(once)d(for)g(eac)m(h)h(mem)m(b) -s(er)e(in)g(the)h(resultan)m(t)630 2841 y(list,)d(with)f -Fr(name)34 b Fu(b)s(ound)27 b(to)i(the)h(curren)m(t)e(mem)m(b)s(er.)40 -b(If)28 b(`)p Ft(in)i Fj(words)p Fu(')e(is)h(not)g(presen)m(t,)h(the) -630 2951 y Ft(for)f Fu(command)g(executes)i(the)e Fr(commands)k -Fu(once)d(for)f(eac)m(h)i(p)s(ositional)f(parameter)g(that)630 -3060 y(is)d(set,)h(as)f(if)g(`)p Ft(in)j("$@")p Fu(')c(had)g(b)s(een)g -(sp)s(eci\014ed)g(\(see)i(Section)f(3.4.2)i([Sp)s(ecial)e(P)m -(arameters],)630 3170 y(page)c(20\).)39 b(The)21 b(return)g(status)h -(is)g(the)g(exit)h(status)f(of)g(the)g(last)g(command)g(that)g -(executes.)630 3280 y(If)i(there)h(are)h(no)e(items)i(in)e(the)h -(expansion)g(of)g Fr(w)m(ords)p Fu(,)h(no)f(commands)f(are)h(executed,) -j(and)630 3389 y(the)j(return)e(status)i(is)f(zero.)630 -3524 y(An)g(alternate)i(form)e(of)h(the)f Ft(for)g Fu(command)g(is)g -(also)h(supp)s(orted:)870 3659 y Ft(for)47 b(\(\()g Fj(expr1)f -Ft(;)i Fj(expr2)e Ft(;)i Fj(expr3)e Ft(\)\))h(;)h(do)f -Fj(commands)e Ft(;)j(done)630 3794 y Fu(First,)38 b(the)f(arithmetic)h -(expression)e Fr(expr1)43 b Fu(is)36 b(ev)-5 b(aluated)38 -b(according)f(to)g(the)g(rules)f(de-)630 3904 y(scrib)s(ed)41 -b(b)s(elo)m(w)h(\(see)h(Section)g(6.5)g([Shell)g(Arithmetic],)j(page)d -(89\).)77 b(The)42 b(arithmetic)630 4014 y(expression)33 -b Fr(expr2)41 b Fu(is)34 b(then)f(ev)-5 b(aluated)35 -b(rep)s(eatedly)f(un)m(til)g(it)g(ev)-5 b(aluates)35 -b(to)g(zero.)51 b(Eac)m(h)630 4123 y(time)23 b Fr(expr2)30 -b Fu(ev)-5 b(aluates)25 b(to)e(a)g(non-zero)h(v)-5 b(alue,)25 -b Fr(commands)h Fu(are)d(executed)g(and)g(the)g(arith-)630 -4233 y(metic)29 b(expression)f Fr(expr3)36 b Fu(is)28 -b(ev)-5 b(aluated.)41 b(If)28 b(an)m(y)h(expression)f(is)g(omitted,)i -(it)f(b)s(eha)m(v)m(es)g(as)630 4342 y(if)i(it)h(ev)-5 +Fj(commands)p Ft(;)e(done)630 3180 y Fu(Expand)30 b Fr(w)m(ords)k +Fu(\(see)d(Section)h(3.5)g([Shell)f(Expansions],)g(page)g(22\),)i(and)d +(execute)i Fr(com-)630 3289 y(mands)43 b Fu(once)e(for)g(eac)m(h)g(mem) +m(b)s(er)f(in)g(the)h(resultan)m(t)g(list,)j(with)c Fr(name)46 +b Fu(b)s(ound)39 b(to)i(the)630 3399 y(curren)m(t)34 +b(mem)m(b)s(er.)53 b(If)35 b(`)p Ft(in)30 b Fj(words)p +Fu(')j(is)i(not)g(presen)m(t,)h(the)f Ft(for)e Fu(command)i(executes)h +(the)630 3508 y Fr(commands)j Fu(once)e(for)f(eac)m(h)h(p)s(ositional)g +(parameter)f(that)h(is)f(set,)i(as)e(if)g(`)p Ft(in)30 +b("$@")p Fu(')36 b(had)630 3618 y(b)s(een)30 b(sp)s(eci\014ed)f(\(see)j +(Section)f(3.4.2)h([Sp)s(ecial)f(P)m(arameters],)h(page)f(21\).)630 +3758 y(The)c(return)f(status)h(is)g(the)h(exit)g(status)f(of)g(the)h +(last)g(command)e(that)i(executes.)41 b(If)27 b(there)630 +3868 y(are)38 b(no)f(items)g(in)g(the)h(expansion)f(of)g +Fr(w)m(ords)p Fu(,)i(no)e(commands)g(are)g(executed,)j(and)d(the)630 +3977 y(return)29 b(status)i(is)f(zero.)630 4117 y(An)g(alternate)i +(form)e(of)h(the)f Ft(for)g Fu(command)g(is)g(also)h(supp)s(orted:)870 +4257 y Ft(for)47 b(\(\()g Fj(expr1)f Ft(;)i Fj(expr2)e +Ft(;)i Fj(expr3)e Ft(\)\))h(;)h(do)f Fj(commands)e Ft(;)j(done)630 +4397 y Fu(First,)38 b(the)f(arithmetic)h(expression)e +Fr(expr1)43 b Fu(is)36 b(ev)-5 b(aluated)38 b(according)f(to)g(the)g +(rules)f(de-)630 4507 y(scrib)s(ed)41 b(b)s(elo)m(w)h(\(see)h(Section)g +(6.5)g([Shell)g(Arithmetic],)j(page)d(92\).)77 b(The)42 +b(arithmetic)630 4616 y(expression)33 b Fr(expr2)41 b +Fu(is)34 b(then)f(ev)-5 b(aluated)35 b(rep)s(eatedly)f(un)m(til)g(it)g +(ev)-5 b(aluates)35 b(to)g(zero.)51 b(Eac)m(h)630 4726 +y(time)23 b Fr(expr2)30 b Fu(ev)-5 b(aluates)25 b(to)e(a)g(non-zero)h +(v)-5 b(alue,)25 b Fr(commands)h Fu(are)d(executed)g(and)g(the)g +(arith-)630 4835 y(metic)29 b(expression)f Fr(expr3)36 +b Fu(is)28 b(ev)-5 b(aluated.)41 b(If)28 b(an)m(y)h(expression)f(is)g +(omitted,)i(it)f(b)s(eha)m(v)m(es)g(as)630 4945 y(if)i(it)h(ev)-5 b(aluates)32 b(to)g(1.)44 b(The)30 b(return)g(v)-5 b(alue)32 b(is)f(the)g(exit)h(status)g(of)f(the)g(last)h(command)f(in)630 -4452 y Fr(commands)j Fu(that)d(is)f(executed,)i(or)e(false)h(if)f(an)m +5055 y Fr(commands)j Fu(that)d(is)f(executed,)i(or)e(false)h(if)f(an)m (y)h(of)g(the)f(expressions)g(is)h(in)m(v)-5 b(alid.)275 -4613 y(The)26 b Ft(break)g Fu(and)h Ft(continue)e Fu(builtins)i(\(see)h -(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(42\))g(ma)m(y) -150 4723 y(b)s(e)i(used)f(to)i(con)m(trol)h(lo)s(op)f(execution.)150 -4923 y Fk(3.2.4.2)63 b(Conditional)42 b(Constructs)150 -5095 y Ft(if)384 b Fu(The)30 b(syn)m(tax)h(of)f(the)h -Ft(if)f Fu(command)g(is:)870 5230 y Ft(if)47 b Fj(test-commands)p -Ft(;)d(then)965 5340 y Fj(consequent-commands)p Ft(;)p +5230 y(The)26 b Ft(break)g Fu(and)h Ft(continue)e Fu(builtins)i(\(see)h +(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(43\))g(ma)m(y) +150 5340 y(b)s(e)i(used)f(to)i(con)m(trol)h(lo)s(op)f(execution.)p eop end %%Page: 11 17 TeXDict begin 11 16 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(11)870 299 -y Ft([elif)46 b Fj(more-test-commands)p Ft(;)d(then)965 -408 y Fj(more-consequents)p Ft(;])870 518 y([else)j Fj -(alternate-consequents)p Ft(;])870 628 y(fi)630 757 y -Fu(The)53 b Fr(test-commands)58 b Fu(list)c(is)g(executed,)60 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(11)150 299 +y Fk(3.2.4.2)63 b(Conditional)42 b(Constructs)150 472 +y Ft(if)384 b Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(if)f +Fu(command)g(is:)870 608 y Ft(if)47 b Fj(test-commands)p +Ft(;)d(then)965 718 y Fj(consequent-commands)p Ft(;)870 +828 y([elif)i Fj(more-test-commands)p Ft(;)d(then)965 +937 y Fj(more-consequents)p Ft(;])870 1047 y([else)j +Fj(alternate-consequents)p Ft(;])870 1156 y(fi)630 1292 +y Fu(The)53 b Fr(test-commands)58 b Fu(list)c(is)g(executed,)60 b(and)53 b(if)g(its)h(return)e(status)i(is)f(zero,)61 -b(the)630 867 y Fr(consequen)m(t-commands)44 b Fu(list)d(is)f +b(the)630 1402 y Fr(consequen)m(t-commands)44 b Fu(list)d(is)f (executed.)70 b(If)40 b Fr(test-commands)k Fu(returns)39 -b(a)h(non-zero)630 976 y(status,)45 b(eac)m(h)e Ft(elif)d +b(a)h(non-zero)630 1512 y(status,)45 b(eac)m(h)e Ft(elif)d Fu(list)i(is)g(executed)h(in)e(turn,)j(and)d(if)g(its)h(exit)h(status)f -(is)f(zero,)46 b(the)630 1086 y(corresp)s(onding)37 b +(is)f(zero,)46 b(the)630 1621 y(corresp)s(onding)37 b Fr(more-consequen)m(ts)42 b Fu(is)c(executed)g(and)f(the)h(command)g -(completes.)63 b(If)630 1196 y(`)p Ft(else)29 b Fj +(completes.)63 b(If)630 1731 y(`)p Ft(else)29 b Fj (alternate-consequents)p Fu(')c(is)30 b(presen)m(t,)h(and)f(the)g -(\014nal)g(command)g(in)g(the)g(\014nal)630 1305 y Ft(if)44 +(\014nal)g(command)g(in)g(the)g(\014nal)630 1840 y Ft(if)44 b Fu(or)g Ft(elif)f Fu(clause)i(has)f(a)h(non-zero)g(exit)g(status,)j -(then)c Fr(alternate-consequen)m(ts)51 b Fu(is)630 1415 +(then)c Fr(alternate-consequen)m(ts)51 b Fu(is)630 1950 y(executed.)k(The)34 b(return)g(status)h(is)f(the)h(exit)h(status)f(of) -g(the)g(last)g(command)g(executed,)630 1524 y(or)30 b(zero)i(if)e(no)g -(condition)h(tested)g(true.)150 1674 y Ft(case)288 b +g(the)g(last)g(command)g(executed,)630 2060 y(or)30 b(zero)i(if)e(no)g +(condition)h(tested)g(true.)150 2222 y Ft(case)288 b Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(case)e Fu(command)h(is:)870 -1803 y Ft(case)47 b Fj(word)f Ft(in)h([)h([\(])f Fj(pattern)f -Ft([|)h Fj(pattern)p Ft(]...)m(\))g Fj(command-list)e -Ft(;;]...)h(esac)630 1933 y(case)20 b Fu(will)i(selectiv)m(ely)j -(execute)e(the)e Fr(command-list)k Fu(corresp)s(onding)20 -b(to)i(the)g(\014rst)f Fr(pattern)630 2042 y Fu(that)42 -b(matc)m(hes)g Fr(w)m(ord)p Fu(.)73 b(If)41 b(the)g Ft(nocasematch)d -Fu(shell)j(option)h(\(see)g(the)g(description)f(of)630 -2152 y Ft(shopt)34 b Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)f -(Builtin],)k(page)e(64\))g(is)g(enabled,)g(the)g(matc)m(h)g(is)630 -2262 y(p)s(erformed)29 b(without)i(regard)g(to)g(the)g(case)h(of)f -(alphab)s(etic)g(c)m(haracters.)44 b(The)30 b(`)p Ft(|)p -Fu(')h(is)g(used)630 2371 y(to)e(separate)g(m)m(ultiple)g(patterns,)g -(and)e(the)i(`)p Ft(\))p Fu(')f(op)s(erator)g(terminates)h(a)g(pattern) -f(list.)41 b(A)630 2481 y(list)31 b(of)g(patterns)f(and)g(an)g(asso)s -(ciated)i(command-list)f(is)f(kno)m(wn)g(as)h(a)g Fr(clause)p -Fu(.)630 2610 y(Eac)m(h)42 b(clause)g(m)m(ust)f(b)s(e)g(terminated)h +2358 y Ft(case)47 b Fj(word)f Ft(in)1061 2468 y([)h([\(])g +Fj(pattern)f Ft([|)h Fj(pattern)p Ft(]...)m(\))h Fj(command-list)c +Ft(;;]...)870 2577 y(esac)630 2713 y(case)20 b Fu(will)i(selectiv)m +(ely)j(execute)e(the)e Fr(command-list)k Fu(corresp)s(onding)20 +b(to)i(the)g(\014rst)f Fr(pattern)630 2823 y Fu(that)h(matc)m(hes)h +Fr(w)m(ord)p Fu(.)38 b(The)21 b(matc)m(h)h(is)g(p)s(erformed)e +(according)j(to)f(the)g(rules)g(describ)s(ed)e(b)s(e-)630 +2933 y(lo)m(w)25 b(in)e(Section)i(3.5.8.1)h([P)m(attern)f(Matc)m +(hing],)i(page)e(33.)39 b(If)23 b(the)h Ft(nocasematch)d +Fu(shell)j(op-)630 3042 y(tion)j(\(see)g(the)f(description)g(of)g +Ft(shopt)f Fu(in)g(Section)i(4.3.2)h([The)e(Shopt)f(Builtin],)j(page)f +(65\))630 3152 y(is)40 b(enabled,)i(the)e(matc)m(h)h(is)e(p)s(erformed) +g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630 +3261 y(c)m(haracters.)48 b(The)32 b(`)p Ft(|)p Fu(')g(is)h(used)e(to)i +(separate)h(m)m(ultiple)f(patterns,)g(and)f(the)g(`)p +Ft(\))p Fu(')h(op)s(erator)630 3371 y(terminates)f(a)f(pattern)g(list.) +43 b(A)31 b(list)g(of)g(patterns)g(and)f(an)h(asso)s(ciated)h +(command-list)g(is)630 3481 y(kno)m(wn)e(as)g(a)h Fr(clause)p +Fu(.)630 3617 y(Eac)m(h)42 b(clause)g(m)m(ust)f(b)s(e)g(terminated)h (with)e(`)p Ft(;;)p Fu(',)45 b(`)p Ft(;&)p Fu(',)f(or)d(`)p Ft(;;&)p Fu('.)73 b(The)41 b Fr(w)m(ord)j Fu(under-)630 -2720 y(go)s(es)35 b(tilde)f(expansion,)h(parameter)g(expansion,)g -(command)f(substitution,)h(arithmetic)630 2829 y(expansion,)47 -b(and)d(quote)g(remo)m(v)-5 b(al)45 b(b)s(efore)f(matc)m(hing)h(is)f -(attempted.)82 b(Eac)m(h)45 b Fr(pattern)630 2939 y Fu(undergo)s(es)38 -b(tilde)h(expansion,)i(parameter)e(expansion,)i(command)d -(substitution,)j(and)630 3049 y(arithmetic)32 b(expansion.)630 -3178 y(There)e(ma)m(y)g(b)s(e)f(an)h(arbitrary)g(n)m(um)m(b)s(er)f(of)h -Ft(case)f Fu(clauses,)i(eac)m(h)g(terminated)g(b)m(y)e(a)i(`)p -Ft(;;)p Fu(',)630 3288 y(`)p Ft(;&)p Fu(',)c(or)e(`)p +3726 y(go)s(es)35 b(tilde)f(expansion,)h(parameter)g(expansion,)g +(command)f(substitution,)h(arithmetic)630 3836 y(expansion,)g(and)f +(quote)g(remo)m(v)-5 b(al)36 b(\(see)f(Section)g(3.5.3)h([Shell)e(P)m +(arameter)h(Expansion],)630 3945 y(page)22 b(24\))g(b)s(efore)f(matc)m +(hing)h(is)g(attempted.)38 b(Eac)m(h)22 b Fr(pattern)g +Fu(undergo)s(es)e(tilde)i(expansion,)630 4055 y(parameter)31 +b(expansion,)f(command)g(substitution,)h(and)f(arithmetic)h(expansion.) +630 4191 y(There)f(ma)m(y)g(b)s(e)f(an)h(arbitrary)g(n)m(um)m(b)s(er)f +(of)h Ft(case)f Fu(clauses,)i(eac)m(h)g(terminated)g(b)m(y)e(a)i(`)p +Ft(;;)p Fu(',)630 4301 y(`)p Ft(;&)p Fu(',)c(or)e(`)p Ft(;;&)p Fu('.)39 b(The)25 b(\014rst)g(pattern)h(that)g(matc)m(hes)h -(determines)e(the)h(command-list)g(that)630 3397 y(is)35 +(determines)e(the)h(command-list)g(that)630 4410 y(is)35 b(executed.)55 b(It's)35 b(a)g(common)g(idiom)g(to)g(use)g(`)p Ft(*)p Fu(')g(as)g(the)g(\014nal)f(pattern)h(to)h(de\014ne)e(the)630 -3507 y(default)d(case,)g(since)g(that)g(pattern)f(will)h(alw)m(a)m(ys)h -(matc)m(h.)630 3636 y(Here)j(is)g(an)g(example)h(using)e +4520 y(default)d(case,)g(since)g(that)g(pattern)f(will)h(alw)m(a)m(ys)h +(matc)m(h.)630 4656 y(Here)j(is)g(an)g(example)h(using)e Ft(case)g Fu(in)g(a)h(script)g(that)h(could)f(b)s(e)f(used)g(to)h -(describ)s(e)g(one)630 3746 y(in)m(teresting)d(feature)f(of)f(an)g -(animal:)870 3875 y Ft(echo)47 b(-n)g("Enter)f(the)h(name)f(of)i(an)f -(animal:)f(")870 3985 y(read)h(ANIMAL)870 4095 y(echo)g(-n)g("The)f -($ANIMAL)g(has)h(")870 4204 y(case)g($ANIMAL)e(in)965 -4314 y(horse)i(|)g(dog)g(|)h(cat\))e(echo)h(-n)g("four";;)965 -4423 y(man)g(|)h(kangaroo)d(\))j(echo)e(-n)i("two";;)965 -4533 y(*\))g(echo)e(-n)h("an)g(unknown)f(number)g(of";;)870 -4643 y(esac)870 4752 y(echo)h(")g(legs.")630 4902 y Fu(If)25 +(describ)s(e)g(one)630 4766 y(in)m(teresting)d(feature)f(of)f(an)g +(animal:)870 4902 y Ft(echo)47 b(-n)g("Enter)f(the)h(name)f(of)i(an)f +(animal:)f(")870 5011 y(read)h(ANIMAL)870 5121 y(echo)g(-n)g("The)f +($ANIMAL)g(has)h(")870 5230 y(case)g($ANIMAL)e(in)965 +5340 y(horse)i(|)g(dog)g(|)h(cat\))e(echo)h(-n)g("four";;)p +eop end +%%Page: 12 18 +TeXDict begin 12 17 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(12)965 299 +y Ft(man)47 b(|)h(kangaroo)d(\))j(echo)e(-n)i("two";;)965 +408 y(*\))g(echo)e(-n)h("an)g(unknown)f(number)g(of";;)870 +518 y(esac)870 628 y(echo)h(")g(legs.")630 781 y Fu(If)25 b(the)h(`)p Ft(;;)p Fu(')g(op)s(erator)g(is)g(used,)g(no)g(subsequen)m (t)f(matc)m(hes)i(are)f(attempted)h(after)g(the)f(\014rst)630 -5011 y(pattern)g(matc)m(h.)40 b(Using)26 b(`)p Ft(;&)p +891 y(pattern)g(matc)m(h.)40 b(Using)26 b(`)p Ft(;&)p Fu(')f(in)h(place)g(of)g(`)p Ft(;;)p Fu(')g(causes)g(execution)h(to)f -(con)m(tin)m(ue)h(with)f(the)630 5121 y Fr(command-list)39 +(con)m(tin)m(ue)h(with)f(the)630 1000 y Fr(command-list)39 b Fu(asso)s(ciated)f(with)e(the)g(next)g(clause,)j(if)d(an)m(y)-8 b(.)59 b(Using)37 b(`)p Ft(;;&)p Fu(')f(in)g(place)h(of)630 -5230 y(`)p Ft(;;)p Fu(')30 b(causes)g(the)g(shell)g(to)g(test)h(the)f +1110 y(`)p Ft(;;)p Fu(')30 b(causes)g(the)g(shell)g(to)g(test)h(the)f (patterns)g(in)f(the)h(next)g(clause,)h(if)e(an)m(y)-8 -b(,)31 b(and)f(execute)630 5340 y(an)m(y)h(asso)s(ciated)h -Fr(command-list)h Fu(on)d(a)h(successful)f(matc)m(h.)p -eop end -%%Page: 12 18 -TeXDict begin 12 17 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(12)630 299 -y(The)26 b(return)f(status)h(is)g(zero)h(if)f(no)g Fr(pattern)g -Fu(is)g(matc)m(hed.)40 b(Otherwise,)27 b(the)g(return)e(status)630 -408 y(is)30 b(the)h(exit)g(status)g(of)f(the)h Fr(command-list)i -Fu(executed.)150 564 y Ft(select)630 697 y Fu(The)g Ft(select)f -Fu(construct)i(allo)m(ws)h(the)f(easy)g(generation)h(of)e(men)m(us.)50 -b(It)34 b(has)f(almost)i(the)630 806 y(same)c(syn)m(tax)g(as)f(the)h -Ft(for)e Fu(command:)870 939 y Ft(select)46 b Fj(name)h -Ft([in)g Fj(words)f Ft(...)o(];)h(do)h Fj(commands)p -Ft(;)d(done)630 1072 y Fu(The)25 b(list)h(of)f(w)m(ords)g(follo)m(wing) -i Ft(in)d Fu(is)h(expanded,)h(generating)h(a)e(list)h(of)g(items.)39 -b(The)25 b(set)h(of)630 1181 y(expanded)i(w)m(ords)h(is)g(prin)m(ted)f -(on)h(the)g(standard)f(error)h(output)f(stream,)i(eac)m(h)g(preceded) -630 1291 y(b)m(y)21 b(a)g(n)m(um)m(b)s(er.)37 b(If)20 -b(the)i(`)p Ft(in)30 b Fj(words)p Fu(')20 b(is)h(omitted,)j(the)d(p)s -(ositional)h(parameters)g(are)f(prin)m(ted,)630 1401 -y(as)28 b(if)f(`)p Ft(in)j("$@")p Fu(')d(had)f(b)s(een)h(sp)s +b(,)31 b(and)f(execute)630 1219 y(an)m(y)h(asso)s(ciated)h +Fr(command-list)h Fu(on)d(a)h(successful)f(matc)m(h.)630 +1351 y(The)c(return)f(status)h(is)g(zero)h(if)f(no)g +Fr(pattern)g Fu(is)g(matc)m(hed.)40 b(Otherwise,)27 b(the)g(return)e +(status)630 1461 y(is)30 b(the)h(exit)g(status)g(of)f(the)h +Fr(command-list)i Fu(executed.)150 1614 y Ft(select)630 +1745 y Fu(The)g Ft(select)f Fu(construct)i(allo)m(ws)h(the)f(easy)g +(generation)h(of)e(men)m(us.)50 b(It)34 b(has)f(almost)i(the)630 +1855 y(same)c(syn)m(tax)g(as)f(the)h Ft(for)e Fu(command:)870 +1987 y Ft(select)46 b Fj(name)h Ft([in)g Fj(words)f Ft(...)o(];)h(do)h +Fj(commands)p Ft(;)d(done)630 2118 y Fu(The)25 b(list)h(of)f(w)m(ords)g +(follo)m(wing)i Ft(in)d Fu(is)h(expanded,)h(generating)h(a)e(list)h(of) +g(items.)39 b(The)25 b(set)h(of)630 2228 y(expanded)i(w)m(ords)h(is)g +(prin)m(ted)f(on)h(the)g(standard)f(error)h(output)f(stream,)i(eac)m(h) +g(preceded)630 2337 y(b)m(y)21 b(a)g(n)m(um)m(b)s(er.)37 +b(If)20 b(the)i(`)p Ft(in)30 b Fj(words)p Fu(')20 b(is)h(omitted,)j +(the)d(p)s(ositional)h(parameters)g(are)f(prin)m(ted,)630 +2447 y(as)28 b(if)f(`)p Ft(in)j("$@")p Fu(')d(had)f(b)s(een)h(sp)s (eci\014ed.)39 b(The)27 b Ft(PS3)g Fu(prompt)f(is)i(then)f(displa)m(y)m -(ed)h(and)f(a)h(line)630 1510 y(is)h(read)f(from)h(the)f(standard)g +(ed)h(and)f(a)h(line)630 2556 y(is)h(read)f(from)h(the)f(standard)g (input.)39 b(If)29 b(the)g(line)g(consists)g(of)g(a)g(n)m(um)m(b)s(er)e -(corresp)s(onding)630 1620 y(to)36 b(one)f(of)h(the)f(displa)m(y)m(ed)h +(corresp)s(onding)630 2666 y(to)36 b(one)f(of)h(the)f(displa)m(y)m(ed)h (w)m(ords,)g(then)f(the)g(v)-5 b(alue)36 b(of)f Fr(name)40 -b Fu(is)35 b(set)h(to)g(that)g(w)m(ord.)54 b(If)630 1729 +b Fu(is)35 b(set)h(to)g(that)g(w)m(ord.)54 b(If)630 2776 y(the)37 b(line)h(is)f(empt)m(y)-8 b(,)39 b(the)e(w)m(ords)g(and)f (prompt)g(are)i(displa)m(y)m(ed)f(again.)62 b(If)37 b -Ft(EOF)f Fu(is)h(read,)630 1839 y(the)c Ft(select)e Fu(command)i +Ft(EOF)f Fu(is)h(read,)630 2885 y(the)c Ft(select)e Fu(command)i (completes.)50 b(An)m(y)33 b(other)g(v)-5 b(alue)33 b(read)g(causes)g -Fr(name)38 b Fu(to)c(b)s(e)e(set)630 1948 y(to)f(n)m(ull.)41 +Fr(name)38 b Fu(to)c(b)s(e)e(set)630 2995 y(to)f(n)m(ull.)41 b(The)30 b(line)g(read)h(is)f(sa)m(v)m(ed)h(in)g(the)f(v)-5 -b(ariable)31 b Ft(REPLY)p Fu(.)630 2081 y(The)42 b Fr(commands)j +b(ariable)31 b Ft(REPLY)p Fu(.)630 3126 y(The)42 b Fr(commands)j Fu(are)d(executed)h(after)g(eac)m(h)g(selection)h(un)m(til)e(a)h -Ft(break)d Fu(command)i(is)630 2191 y(executed,)32 b(at)f(whic)m(h)f(p) +Ft(break)d Fu(command)i(is)630 3236 y(executed,)32 b(at)f(whic)m(h)f(p) s(oin)m(t)g(the)h Ft(select)d Fu(command)i(completes.)630 -2323 y(Here)39 b(is)g(an)g(example)h(that)f(allo)m(ws)i(the)e(user)f +3367 y(Here)39 b(is)g(an)g(example)h(that)f(allo)m(ws)i(the)e(user)f (to)i(pic)m(k)f(a)g(\014lename)h(from)e(the)h(curren)m(t)630 -2433 y(directory)-8 b(,)32 b(and)d(displa)m(ys)i(the)f(name)h(and)f -(index)f(of)i(the)g(\014le)f(selected.)870 2566 y Ft(select)46 -b(fname)g(in)i(*;)870 2675 y(do)870 2785 y(echo)f(you)g(picked)f -($fname)g(\\\($REPLY\\\))870 2894 y(break;)870 3004 y(done)150 -3160 y(\(\(...)o(\)\))870 3292 y(\(\()h Fj(expression)e -Ft(\)\))630 3425 y Fu(The)33 b(arithmetic)i Fr(expression)f +3477 y(directory)-8 b(,)32 b(and)d(displa)m(ys)i(the)f(name)h(and)f +(index)f(of)i(the)g(\014le)f(selected.)870 3608 y Ft(select)46 +b(fname)g(in)i(*;)870 3718 y(do)870 3828 y(echo)f(you)g(picked)f +($fname)g(\\\($REPLY\\\))870 3937 y(break;)870 4047 y(done)150 +4200 y(\(\(...)o(\)\))870 4332 y(\(\()h Fj(expression)e +Ft(\)\))630 4463 y Fu(The)33 b(arithmetic)i Fr(expression)f Fu(is)f(ev)-5 b(aluated)35 b(according)g(to)f(the)g(rules)f(describ)s -(ed)g(b)s(elo)m(w)630 3535 y(\(see)j(Section)f(6.5)h([Shell)f -(Arithmetic],)i(page)f(89\).)55 b(If)34 b(the)h(v)-5 -b(alue)35 b(of)g(the)g(expression)g(is)630 3644 y(non-zero,)27 +(ed)g(b)s(elo)m(w)630 4573 y(\(see)j(Section)f(6.5)h([Shell)f +(Arithmetic],)i(page)f(92\).)55 b(If)34 b(the)h(v)-5 +b(alue)35 b(of)g(the)g(expression)g(is)630 4682 y(non-zero,)27 b(the)f(return)e(status)i(is)g(0;)h(otherwise)f(the)g(return)e(status)i -(is)g(1.)39 b(This)25 b(is)g(exactly)630 3754 y(equiv)-5 -b(alen)m(t)32 b(to)870 3886 y Ft(let)47 b(")p Fj(expression)p -Ft(")630 4019 y Fu(See)25 b(Section)h(4.2)h([Bash)e(Builtins],)i(page)f -(49,)i(for)c(a)i(full)f(description)g(of)g(the)h Ft(let)e -Fu(builtin.)150 4175 y Ft([[...)o(]])870 4308 y([[)47 -b Fj(expression)e Ft(]])630 4440 y Fu(Return)25 b(a)h(status)f(of)h(0)g -(or)g(1)g(dep)s(ending)e(on)h(the)h(ev)-5 b(aluation)27 -b(of)e(the)h(conditional)h(expres-)630 4550 y(sion)j -Fr(expression)p Fu(.)41 b(Expressions)29 b(are)i(comp)s(osed)f(of)g -(the)h(primaries)f(describ)s(ed)f(b)s(elo)m(w)h(in)630 -4659 y(Section)36 b(6.4)h([Bash)f(Conditional)g(Expressions],)h(page)f -(87.)57 b(W)-8 b(ord)36 b(splitting)h(and)e(\014le-)630 -4769 y(name)d(expansion)g(are)h(not)g(p)s(erformed)d(on)j(the)f(w)m -(ords)g(b)s(et)m(w)m(een)h(the)f Ft([[)g Fu(and)f Ft(]])p -Fu(;)i(tilde)630 4879 y(expansion,)e(parameter)g(and)f(v)-5 -b(ariable)31 b(expansion,)g(arithmetic)g(expansion,)g(command)630 -4988 y(substitution,)40 b(pro)s(cess)f(substitution,)h(and)e(quote)h -(remo)m(v)-5 b(al)40 b(are)f(p)s(erformed.)63 b(Condi-)630 -5098 y(tional)32 b(op)s(erators)e(suc)m(h)g(as)h(`)p -Ft(-f)p Fu(')f(m)m(ust)g(b)s(e)g(unquoted)g(to)h(b)s(e)e(recognized)j -(as)f(primaries.)630 5230 y(When)k(used)f(with)h Ft([[)p -Fu(,)h(the)f(`)p Ft(<)p Fu(')g(and)g(`)p Ft(>)p Fu(')g(op)s(erators)g -(sort)g(lexicographically)j(using)d(the)630 5340 y(curren)m(t)30 -b(lo)s(cale.)p eop end +(is)g(1.)39 b(This)25 b(is)g(exactly)630 4792 y(equiv)-5 +b(alen)m(t)32 b(to)870 4924 y Ft(let)47 b(")p Fj(expression)p +Ft(")630 5055 y Fu(See)25 b(Section)h(4.2)h([Bash)e(Builtins],)i(page)f +(50,)i(for)c(a)i(full)f(description)g(of)g(the)h Ft(let)e +Fu(builtin.)150 5208 y Ft([[...)o(]])870 5340 y([[)47 +b Fj(expression)e Ft(]])p eop end %%Page: 13 19 TeXDict begin 13 18 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(13)630 299 -y(When)22 b(the)h(`)p Ft(==)p Fu(')f(and)g(`)p Ft(!=)p -Fu(')g(op)s(erators)h(are)g(used,)g(the)g(string)f(to)i(the)e(righ)m(t) -h(of)g(the)g(op)s(erator)630 408 y(is)31 b(considered)g(a)h(pattern)f -(and)g(matc)m(hed)h(according)g(to)g(the)g(rules)f(describ)s(ed)f(b)s -(elo)m(w)h(in)630 518 y(Section)d(3.5.8.1)h([P)m(attern)f(Matc)m -(hing],)h(page)f(31,)g(as)f(if)g(the)g Ft(extglob)d Fu(shell)j(option)g -(w)m(ere)630 628 y(enabled.)46 b(The)31 b(`)p Ft(=)p -Fu(')h(op)s(erator)h(is)f(iden)m(tical)h(to)g(`)p Ft(==)p -Fu('.)46 b(If)31 b(the)h Ft(nocasematch)d Fu(shell)j(option)630 -737 y(\(see)42 b(the)f(description)g(of)h Ft(shopt)d +y(Return)25 b(a)h(status)f(of)h(0)g(or)g(1)g(dep)s(ending)e(on)h(the)h +(ev)-5 b(aluation)27 b(of)e(the)h(conditional)h(expres-)630 +408 y(sion)j Fr(expression)p Fu(.)41 b(Expressions)29 +b(are)i(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s(elo)m +(w)h(in)630 518 y(Section)36 b(6.4)h([Bash)f(Conditional)g +(Expressions],)h(page)f(90.)57 b(W)-8 b(ord)36 b(splitting)h(and)e +(\014le-)630 628 y(name)d(expansion)g(are)h(not)g(p)s(erformed)d(on)j +(the)f(w)m(ords)g(b)s(et)m(w)m(een)h(the)f Ft([[)g Fu(and)f +Ft(]])p Fu(;)i(tilde)630 737 y(expansion,)e(parameter)g(and)f(v)-5 +b(ariable)31 b(expansion,)g(arithmetic)g(expansion,)g(command)630 +847 y(substitution,)40 b(pro)s(cess)f(substitution,)h(and)e(quote)h +(remo)m(v)-5 b(al)40 b(are)f(p)s(erformed.)63 b(Condi-)630 +956 y(tional)32 b(op)s(erators)e(suc)m(h)g(as)h(`)p Ft(-f)p +Fu(')f(m)m(ust)g(b)s(e)g(unquoted)g(to)h(b)s(e)e(recognized)j(as)f +(primaries.)630 1097 y(When)k(used)f(with)h Ft([[)p Fu(,)h(the)f(`)p +Ft(<)p Fu(')g(and)g(`)p Ft(>)p Fu(')g(op)s(erators)g(sort)g +(lexicographically)j(using)d(the)630 1207 y(curren)m(t)30 +b(lo)s(cale.)630 1348 y(When)22 b(the)h(`)p Ft(==)p Fu(')f(and)g(`)p +Ft(!=)p Fu(')g(op)s(erators)h(are)g(used,)g(the)g(string)f(to)i(the)e +(righ)m(t)h(of)g(the)g(op)s(erator)630 1457 y(is)31 b(considered)g(a)h +(pattern)f(and)g(matc)m(hed)h(according)g(to)g(the)g(rules)f(describ)s +(ed)f(b)s(elo)m(w)h(in)630 1567 y(Section)d(3.5.8.1)h([P)m(attern)f +(Matc)m(hing],)h(page)f(33,)g(as)f(if)g(the)g Ft(extglob)d +Fu(shell)j(option)g(w)m(ere)630 1677 y(enabled.)46 b(The)31 +b(`)p Ft(=)p Fu(')h(op)s(erator)h(is)f(iden)m(tical)h(to)g(`)p +Ft(==)p Fu('.)46 b(If)31 b(the)h Ft(nocasematch)d Fu(shell)j(option)630 +1786 y(\(see)42 b(the)f(description)g(of)h Ft(shopt)d Fu(in)i(Section)h(4.3.2)h([The)e(Shopt)f(Builtin],)45 -b(page)d(64\))630 847 y(is)e(enabled,)i(the)e(matc)m(h)h(is)e(p)s +b(page)d(65\))630 1896 y(is)e(enabled,)i(the)e(matc)m(h)h(is)e(p)s (erformed)g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630 -956 y(c)m(haracters.)h(The)28 b(return)e(v)-5 b(alue)28 +2005 y(c)m(haracters.)h(The)28 b(return)e(v)-5 b(alue)28 b(is)g(0)g(if)g(the)g(string)g(matc)m(hes)h(\(`)p Ft(==)p -Fu('\))f(or)g(do)s(es)f(not)h(matc)m(h)630 1066 y(\(`)p -Ft(!=)p Fu('\)the)33 b(pattern,)g(and)f(1)g(otherwise.)47 -b(An)m(y)32 b(part)g(of)h(the)f(pattern)g(ma)m(y)h(b)s(e)f(quoted)g(to) -630 1176 y(force)f(the)g(quoted)f(p)s(ortion)g(to)h(b)s(e)f(matc)m(hed) -h(as)g(a)f(string.)630 1316 y(An)j(additional)i(binary)e(op)s(erator,)i +Fu('\))f(or)g(do)s(es)f(not)h(matc)m(h)630 2115 y(\(`)p +Ft(!=)p Fu('\))j(the)f(pattern,)h(and)e(1)i(otherwise.)41 +b(An)m(y)30 b(part)g(of)h(the)f(pattern)g(ma)m(y)h(b)s(e)f(quoted)g(to) +630 2225 y(force)h(the)g(quoted)f(p)s(ortion)g(to)h(b)s(e)f(matc)m(hed) +h(as)g(a)f(string.)630 2365 y(An)j(additional)i(binary)e(op)s(erator,)i (`)p Ft(=~)p Fu(',)g(is)f(a)m(v)-5 b(ailable,)37 b(with)c(the)h(same)g -(precedence)h(as)630 1426 y(`)p Ft(==)p Fu(')29 b(and)f(`)p -Ft(!=)p Fu('.)40 b(When)29 b(it)g(is)g(used,)f(the)h(string)g(to)h(the) -e(righ)m(t)i(of)f(the)g(op)s(erator)g(is)g(consid-)630 -1536 y(ered)34 b(an)g(extended)g(regular)g(expression)g(and)f(matc)m -(hed)i(accordingly)g(\(as)f(in)g Fl(r)-5 b(e)g(gex)11 -b Fu(3\)\).)630 1645 y(The)29 b(return)f(v)-5 b(alue)30 -b(is)g(0)g(if)f(the)h(string)g(matc)m(hes)g(the)g(pattern,)g(and)f(1)h -(otherwise.)41 b(If)29 b(the)630 1755 y(regular)e(expression)g(is)h -(syn)m(tactically)i(incorrect,)f(the)e(conditional)i(expression's)e -(return)630 1864 y(v)-5 b(alue)40 b(is)g(2.)68 b(If)39 -b(the)h Ft(nocasematch)c Fu(shell)k(option)g(\(see)g(the)g(description) -g(of)f Ft(shopt)f Fu(in)630 1974 y(Section)32 b(4.3.2)g([The)f(Shopt)f -(Builtin],)i(page)g(64\))g(is)f(enabled,)g(the)g(matc)m(h)h(is)e(p)s -(erformed)630 2084 y(without)36 b(regard)g(to)h(the)f(case)h(of)f -(alphab)s(etic)h(c)m(haracters.)59 b(An)m(y)36 b(part)g(of)h(the)f -(pattern)630 2193 y(ma)m(y)31 b(b)s(e)f(quoted)h(to)g(force)g(the)g -(quoted)g(p)s(ortion)f(to)h(b)s(e)f(matc)m(hed)h(as)g(a)g(string.)41 -b(Brac)m(k)m(et)630 2303 y(expressions)27 b(in)f(regular)i(expressions) -e(m)m(ust)h(b)s(e)g(treated)h(carefully)-8 b(,)29 b(since)e(normal)g -(quot-)630 2412 y(ing)38 b(c)m(haracters)h(lose)f(their)g(meanings)f(b) -s(et)m(w)m(een)h(brac)m(k)m(ets.)64 b(If)37 b(the)h(pattern)f(is)h -(stored)630 2522 y(in)33 b(a)i(shell)f(v)-5 b(ariable,)35 -b(quoting)f(the)g(v)-5 b(ariable)35 b(expansion)e(forces)i(the)f(en)m -(tire)g(pattern)g(to)630 2632 y(b)s(e)h(matc)m(hed)i(as)f(a)g(string.) -56 b(Substrings)34 b(matc)m(hed)j(b)m(y)f(paren)m(thesized)g(sub)s -(expressions)630 2741 y(within)k(the)g(regular)g(expression)g(are)g(sa) -m(v)m(ed)i(in)d(the)i(arra)m(y)f(v)-5 b(ariable)41 b -Ft(BASH_REMATCH)p Fu(.)630 2851 y(The)30 b(elemen)m(t)i(of)e -Ft(BASH_REMATCH)d Fu(with)j(index)g(0)h(is)g(the)f(p)s(ortion)g(of)h -(the)f(string)h(matc)m(h-)630 2960 y(ing)j(the)g(en)m(tire)g(regular)g -(expression.)50 b(The)34 b(elemen)m(t)h(of)f Ft(BASH_REMATCH)c -Fu(with)j(index)g Fr(n)630 3070 y Fu(is)d(the)h(p)s(ortion)f(of)g(the)h -(string)f(matc)m(hing)i(the)e Fr(n)p Fu(th)g(paren)m(thesized)h(sub)s -(expression.)630 3211 y(F)-8 b(or)28 b(example,)h(the)e(follo)m(wing)i +(precedence)h(as)630 2475 y(`)p Ft(==)p Fu(')g(and)g(`)p +Ft(!=)p Fu('.)55 b(When)35 b(it)g(is)h(used,)f(the)h(string)f(to)h(the) +f(righ)m(t)h(of)f(the)h(op)s(erator)f(is)g(con-)630 2585 +y(sidered)43 b(a)h Fm(POSIX)f Fu(extended)h(regular)g(expression)f(and) +g(matc)m(hed)i(accordingly)f(\(as)630 2694 y(in)d Fl(r)-5 +b(e)g(gex)11 b Fu(3\)\).)76 b(The)41 b(return)f(v)-5 +b(alue)42 b(is)g(0)f(if)h(the)f(string)h(matc)m(hes)g(the)g(pattern,)j +(and)c(1)630 2804 y(otherwise.)59 b(If)35 b(the)i(regular)f(expression) +g(is)g(syn)m(tactically)j(incorrect,)g(the)e(conditional)630 +2913 y(expression's)27 b(return)f(v)-5 b(alue)28 b(is)f(2.)40 +b(If)27 b(the)g Ft(nocasematch)e Fu(shell)i(option)h(\(see)g(the)f +(descrip-)630 3023 y(tion)41 b(of)g Ft(shopt)f Fu(in)h(Section)g(4.3.2) +i([The)e(Shopt)f(Builtin],)k(page)e(65\))g(is)f(enabled,)j(the)630 +3133 y(matc)m(h)36 b(is)f(p)s(erformed)e(without)i(regard)g(to)h(the)f +(case)h(of)f(alphab)s(etic)g(c)m(haracters.)56 b(An)m(y)630 +3242 y(part)25 b(of)h(the)g(pattern)f(ma)m(y)h(b)s(e)f(quoted)h(to)g +(force)g(the)g(quoted)f(p)s(ortion)g(to)i(b)s(e)d(matc)m(hed)j(as)630 +3352 y(a)34 b(string.)49 b(Brac)m(k)m(et)36 b(expressions)c(in)h +(regular)h(expressions)f(m)m(ust)g(b)s(e)f(treated)j(carefully)-8 +b(,)630 3461 y(since)37 b(normal)f(quoting)h(c)m(haracters)g(lose)g +(their)g(meanings)f(b)s(et)m(w)m(een)h(brac)m(k)m(ets.)60 +b(If)36 b(the)630 3571 y(pattern)e(is)g(stored)g(in)f(a)i(shell)f(v)-5 +b(ariable,)36 b(quoting)e(the)g(v)-5 b(ariable)35 b(expansion)e(forces) +i(the)630 3680 y(en)m(tire)30 b(pattern)e(to)i(b)s(e)e(matc)m(hed)h(as) +g(a)g(string.)40 b(Substrings)27 b(matc)m(hed)j(b)m(y)e(paren)m +(thesized)630 3790 y(sub)s(expressions)40 b(within)h(the)g(regular)h +(expression)f(are)h(sa)m(v)m(ed)h(in)e(the)h(arra)m(y)g(v)-5 +b(ariable)630 3900 y Ft(BASH_REMATCH)p Fu(.)56 b(The)37 +b(elemen)m(t)h(of)f Ft(BASH_REMATCH)c Fu(with)j(index)h(0)g(is)g(the)f +(p)s(ortion)h(of)630 4009 y(the)22 b(string)f(matc)m(hing)h(the)g(en)m +(tire)g(regular)g(expression.)37 b(The)21 b(elemen)m(t)i(of)e +Ft(BASH_REMATCH)630 4119 y Fu(with)26 b(index)h Fr(n)f +Fu(is)h(the)g(p)s(ortion)f(of)h(the)g(string)g(matc)m(hing)h(the)f +Fr(n)p Fu(th)f(paren)m(thesized)h(sub)s(ex-)630 4228 +y(pression.)630 4369 y(F)-8 b(or)28 b(example,)h(the)e(follo)m(wing)i (will)e(matc)m(h)h(a)g(line)f(\(stored)h(in)e(the)i(shell)f(v)-5 -b(ariable)28 b Fr(line)5 b Fu(\))28 b(if)630 3320 y(there)22 +b(ariable)28 b Fr(line)5 b Fu(\))28 b(if)630 4479 y(there)22 b(is)g(a)h(sequence)f(of)h(c)m(haracters)g(in)f(the)g(v)-5 b(alue)23 b(consisting)g(of)f(an)m(y)h(n)m(um)m(b)s(er,)f(including)630 -3430 y(zero,)31 b(of)g(space)g(c)m(haracters,)h(zero)f(or)g(one)f +4589 y(zero,)31 b(of)g(space)g(c)m(haracters,)h(zero)f(or)g(one)f (instances)h(of)g(`)p Ft(a)p Fu(',)f(then)g(a)h(`)p Ft(b)p -Fu(':)870 3571 y Ft([[)47 b($line)g(=~)g([[:space:]]*\(a\)?b)c(]])630 -3712 y Fu(That)24 b(means)g(v)-5 b(alues)24 b(lik)m(e)h(`)p +Fu(':)870 4729 y Ft([[)47 b($line)g(=~)g([[:space:]]*?\(a\)b)c(]])630 +4870 y Fu(That)24 b(means)g(v)-5 b(alues)24 b(lik)m(e)h(`)p Ft(aab)p Fu(')e(and)h(`)30 b Ft(aaaaaab)p Fu(')22 b(will)i(matc)m(h,)j -(as)d(will)g(a)g(line)g(con)m(taining)630 3821 y(a)31 +(as)d(will)g(a)g(line)g(con)m(taining)630 4980 y(a)31 b(`)p Ft(b)p Fu(')f(an)m(ywhere)h(in)f(its)g(v)-5 b(alue.)630 -3962 y(Storing)31 b(the)g(regular)g(expression)f(in)h(a)g(shell)g(v)-5 +5121 y(Storing)31 b(the)g(regular)g(expression)f(in)h(a)g(shell)g(v)-5 b(ariable)31 b(is)g(often)g(a)g(useful)f(w)m(a)m(y)i(to)f(a)m(v)m(oid) -630 4072 y(problems)f(with)g(quoting)h(c)m(haracters)i(that)e(are)g(sp) +630 5230 y(problems)f(with)g(quoting)h(c)m(haracters)i(that)e(are)g(sp) s(ecial)g(to)h(the)f(shell.)41 b(It)31 b(is)g(sometimes)630 -4181 y(di\016cult)24 b(to)h(sp)s(ecify)f(a)h(regular)g(expression)f -(literally)i(without)f(using)e(quotes,)k(or)d(to)h(k)m(eep)630 -4291 y(trac)m(k)33 b(of)g(the)f(quoting)g(used)g(b)m(y)g(regular)g +5340 y(di\016cult)24 b(to)h(sp)s(ecify)f(a)h(regular)g(expression)f +(literally)i(without)f(using)e(quotes,)k(or)d(to)h(k)m(eep)p +eop end +%%Page: 14 20 +TeXDict begin 14 19 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(14)630 299 +y(trac)m(k)33 b(of)g(the)f(quoting)g(used)g(b)m(y)g(regular)g (expressions)g(while)g(pa)m(ying)h(atten)m(tion)h(to)f(the)630 -4401 y(shell's)25 b(quote)g(remo)m(v)-5 b(al.)40 b(Using)25 +408 y(shell's)25 b(quote)g(remo)m(v)-5 b(al.)40 b(Using)25 b(a)g(shell)g(v)-5 b(ariable)26 b(to)f(store)g(the)g(pattern)g -(decreases)g(these)630 4510 y(problems.)40 b(F)-8 b(or)31 +(decreases)g(these)630 518 y(problems.)40 b(F)-8 b(or)31 b(example,)g(the)g(follo)m(wing)h(is)e(equiv)-5 b(alen)m(t)32 -b(to)f(the)g(ab)s(o)m(v)m(e:)870 4651 y Ft(pattern='[[:space:]]*\(a\))o -(?b')870 4761 y([[)47 b($line)g(=~)g($pattern)e(]])630 -4902 y Fu(If)28 b(y)m(ou)h(w)m(an)m(t)g(to)g(matc)m(h)h(a)e(c)m +b(to)f(the)g(ab)s(o)m(v)m(e:)870 649 y Ft(pattern='[[:space:]]*?\(a)o +(\)b')870 758 y([[)47 b($line)g(=~)g($pattern)e(]])630 +889 y Fu(If)28 b(y)m(ou)h(w)m(an)m(t)g(to)g(matc)m(h)h(a)e(c)m (haracter)j(that's)e(sp)s(ecial)g(to)g(the)g(regular)f(expression)g -(gram-)630 5011 y(mar,)g(it)g(has)g(to)g(b)s(e)f(quoted)h(to)g(remo)m -(v)m(e)h(its)f(sp)s(ecial)g(meaning.)40 b(This)27 b(means)g(that)h(in)g -(the)630 5121 y(pattern)e(`)p Ft(xxx.txt)p Fu(',)g(the)h(`)p +(gram-)630 999 y(mar,)g(it)g(has)g(to)g(b)s(e)f(quoted)h(to)g(remo)m(v) +m(e)h(its)f(sp)s(ecial)g(meaning.)40 b(This)27 b(means)g(that)h(in)g +(the)630 1108 y(pattern)e(`)p Ft(xxx.txt)p Fu(',)g(the)h(`)p Ft(.)p Fu(')f(matc)m(hes)i(an)m(y)e(c)m(haracter)i(in)e(the)h(string)f -(\(its)h(usual)f(regular)630 5230 y(expression)g(meaning\),)i(but)e(in) +(\(its)h(usual)f(regular)630 1218 y(expression)g(meaning\),)i(but)e(in) g(the)h(pattern)f(`)p Ft("xxx.txt")p Fu(')f(it)i(can)g(only)f(matc)m(h) -i(a)e(literal)630 5340 y(`)p Ft(.)p Fu('.)56 b(Shell)35 +i(a)e(literal)630 1328 y(`)p Ft(.)p Fu('.)56 b(Shell)35 b(programmers)f(should)h(tak)m(e)i(sp)s(ecial)e(care)i(with)e(bac)m -(kslashes,)i(since)f(bac)m(k-)p eop end -%%Page: 14 20 -TeXDict begin 14 19 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(14)630 299 -y(slashes)27 b(are)g(used)f(b)s(oth)g(b)m(y)h(the)f(shell)h(and)f -(regular)h(expressions)g(to)g(remo)m(v)m(e)h(the)f(sp)s(ecial)630 -408 y(meaning)h(from)f(the)h(follo)m(wing)i(c)m(haracter.)41 -b(The)27 b(follo)m(wing)j(t)m(w)m(o)f(sets)f(of)g(commands)g(are)630 -518 y Fl(not)40 b Fu(equiv)-5 b(alen)m(t:)870 649 y Ft(pattern='\\.') -870 868 y([[)47 b(.)h(=~)f($pattern)e(]])870 978 y([[)i(.)h(=~)f(\\.)g -(]])870 1197 y([[)g(.)h(=~)f("$pattern")e(]])870 1307 -y([[)i(.)h(=~)f('\\.')f(]])630 1438 y Fu(The)28 b(\014rst)h(t)m(w)m(o)h -(matc)m(hes)g(will)f(succeed,)h(but)f(the)g(second)g(t)m(w)m(o)h(will)f -(not,)h(b)s(ecause)f(in)g(the)630 1547 y(second)39 b(t)m(w)m(o)i(the)e -(bac)m(kslash)h(will)f(b)s(e)g(part)g(of)g(the)h(pattern)f(to)h(b)s(e)e -(matc)m(hed.)68 b(In)39 b(the)630 1657 y(\014rst)31 b(t)m(w)m(o)h -(examples,)h(the)e(bac)m(kslash)h(remo)m(v)m(es)h(the)f(sp)s(ecial)g -(meaning)f(from)g(`)p Ft(.)p Fu(',)h(so)g(the)630 1766 -y(literal)f(`)p Ft(.)p Fu(')e(matc)m(hes.)42 b(If)28 -b(the)i(string)f(in)g(the)g(\014rst)g(examples)g(w)m(ere)h(an)m(ything) -g(other)f(than)630 1876 y(`)p Ft(.)p Fu(',)g(sa)m(y)g(`)p -Ft(a)p Fu(',)g(the)f(pattern)g(w)m(ould)g(not)h(matc)m(h,)h(b)s(ecause) -e(the)g(quoted)g(`)p Ft(.)p Fu(')h(in)e(the)i(pattern)630 -1986 y(loses)i(its)g(sp)s(ecial)g(meaning)f(of)h(matc)m(hing)g(an)m(y)g -(single)g(c)m(haracter.)630 2116 y(Expressions)23 b(ma)m(y)h(b)s(e)e -(com)m(bined)i(using)f(the)h(follo)m(wing)h(op)s(erators,)g(listed)f -(in)f(decreasing)630 2226 y(order)30 b(of)g(precedence:)630 -2378 y Ft(\()g Fj(expression)e Ft(\))1110 2488 y Fu(Returns)i(the)h(v) --5 b(alue)31 b(of)g Fr(expression)p Fu(.)42 b(This)30 -b(ma)m(y)i(b)s(e)e(used)g(to)i(o)m(v)m(erride)g(the)1110 -2598 y(normal)e(precedence)h(of)g(op)s(erators.)630 2750 -y Ft(!)f Fj(expression)1110 2860 y Fu(T)-8 b(rue)30 b(if)g -Fr(expression)g Fu(is)h(false.)630 3012 y Fj(expression1)c -Ft(&&)j Fj(expression2)1110 3122 y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g -Fr(expression1)38 b Fu(and)29 b Fr(expression2)38 b Fu(are)31 -b(true.)630 3274 y Fj(expression1)c Ft(||)j Fj(expression2)1110 -3384 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expression1)38 +(kslashes,)i(since)f(bac)m(k-)630 1437 y(slashes)27 b(are)g(used)f(b)s +(oth)g(b)m(y)h(the)f(shell)h(and)f(regular)h(expressions)g(to)g(remo)m +(v)m(e)h(the)f(sp)s(ecial)630 1547 y(meaning)h(from)f(the)h(follo)m +(wing)i(c)m(haracter.)41 b(The)27 b(follo)m(wing)j(t)m(w)m(o)f(sets)f +(of)g(commands)g(are)630 1656 y Fl(not)40 b Fu(equiv)-5 +b(alen)m(t:)870 1787 y Ft(pattern='\\.')870 2006 y([[)47 +b(.)h(=~)f($pattern)e(]])870 2116 y([[)i(.)h(=~)f(\\.)g(]])870 +2335 y([[)g(.)h(=~)f("$pattern")e(]])870 2445 y([[)i(.)h(=~)f('\\.')f +(]])630 2576 y Fu(The)28 b(\014rst)h(t)m(w)m(o)h(matc)m(hes)g(will)f +(succeed,)h(but)f(the)g(second)g(t)m(w)m(o)h(will)f(not,)h(b)s(ecause)f +(in)g(the)630 2685 y(second)39 b(t)m(w)m(o)i(the)e(bac)m(kslash)h(will) +f(b)s(e)g(part)g(of)g(the)h(pattern)f(to)h(b)s(e)e(matc)m(hed.)68 +b(In)39 b(the)630 2795 y(\014rst)31 b(t)m(w)m(o)h(examples,)h(the)e +(bac)m(kslash)h(remo)m(v)m(es)h(the)f(sp)s(ecial)g(meaning)f(from)g(`)p +Ft(.)p Fu(',)h(so)g(the)630 2904 y(literal)f(`)p Ft(.)p +Fu(')e(matc)m(hes.)42 b(If)28 b(the)i(string)f(in)g(the)g(\014rst)g +(examples)g(w)m(ere)h(an)m(ything)g(other)f(than)630 +3014 y(`)p Ft(.)p Fu(',)g(sa)m(y)g(`)p Ft(a)p Fu(',)g(the)f(pattern)g +(w)m(ould)g(not)h(matc)m(h,)h(b)s(ecause)e(the)g(quoted)g(`)p +Ft(.)p Fu(')h(in)e(the)i(pattern)630 3124 y(loses)i(its)g(sp)s(ecial)g +(meaning)f(of)h(matc)m(hing)g(an)m(y)g(single)g(c)m(haracter.)630 +3254 y(Expressions)23 b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h +(follo)m(wing)h(op)s(erators,)g(listed)f(in)f(decreasing)630 +3364 y(order)30 b(of)g(precedence:)630 3516 y Ft(\()g +Fj(expression)e Ft(\))1110 3626 y Fu(Returns)i(the)h(v)-5 +b(alue)31 b(of)g Fr(expression)p Fu(.)42 b(This)30 b(ma)m(y)i(b)s(e)e +(used)g(to)i(o)m(v)m(erride)g(the)1110 3735 y(normal)e(precedence)h(of) +g(op)s(erators.)630 3887 y Ft(!)f Fj(expression)1110 +3997 y Fu(T)-8 b(rue)30 b(if)g Fr(expression)g Fu(is)h(false.)630 +4149 y Fj(expression1)c Ft(&&)j Fj(expression2)1110 4259 +y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g Fr(expression1)38 +b Fu(and)29 b Fr(expression2)38 b Fu(are)31 b(true.)630 +4411 y Fj(expression1)c Ft(||)j Fj(expression2)1110 4520 +y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expression1)38 b Fu(or)30 b Fr(expression2)38 b Fu(is)30 b(true.)630 -3536 y(The)24 b Ft(&&)h Fu(and)f Ft(||)g Fu(op)s(erators)h(do)g(not)g +4672 y(The)24 b Ft(&&)h Fu(and)f Ft(||)g Fu(op)s(erators)h(do)g(not)g (ev)-5 b(aluate)27 b Fr(expression2)32 b Fu(if)25 b(the)g(v)-5 -b(alue)25 b(of)g Fr(expression1)630 3646 y Fu(is)30 b(su\016cien)m(t)h +b(alue)25 b(of)g Fr(expression1)630 4782 y Fu(is)30 b(su\016cien)m(t)h (to)g(determine)g(the)f(return)g(v)-5 b(alue)31 b(of)f(the)h(en)m(tire) -g(conditional)h(expression.)150 3838 y Fk(3.2.4.3)63 -b(Grouping)43 b(Commands)150 3985 y Fu(Bash)30 b(pro)m(vides)g(t)m(w)m +g(conditional)h(expression.)150 4974 y Fk(3.2.4.3)63 +b(Grouping)43 b(Commands)150 5121 y Fu(Bash)30 b(pro)m(vides)g(t)m(w)m (o)h(w)m(a)m(ys)f(to)h(group)e(a)h(list)g(of)g(commands)f(to)i(b)s(e)e -(executed)h(as)g(a)h(unit.)40 b(When)29 b(com-)150 4094 +(executed)h(as)g(a)h(unit.)40 b(When)29 b(com-)150 5230 y(mands)h(are)i(group)s(ed,)f(redirections)h(ma)m(y)g(b)s(e)e(applied)i (to)g(the)f(en)m(tire)h(command)g(list.)44 b(F)-8 b(or)32 -b(example,)150 4204 y(the)f(output)f(of)g(all)h(the)g(commands)f(in)g -(the)h(list)g(ma)m(y)g(b)s(e)e(redirected)i(to)g(a)g(single)g(stream.) -150 4356 y Ft(\(\))870 4487 y(\()47 b Fj(list)g Ft(\))630 -4618 y Fu(Placing)30 b(a)f(list)g(of)g(commands)f(b)s(et)m(w)m(een)i -(paren)m(theses)e(causes)i(a)f(subshell)e(en)m(vironmen)m(t)630 -4728 y(to)k(b)s(e)e(created)j(\(see)f(Section)g(3.7.3)h([Command)d -(Execution)i(En)m(vironmen)m(t],)g(page)f(37\),)630 4837 +b(example,)150 5340 y(the)f(output)f(of)g(all)h(the)g(commands)f(in)g +(the)h(list)g(ma)m(y)g(b)s(e)e(redirected)i(to)g(a)g(single)g(stream.)p +eop end +%%Page: 15 21 +TeXDict begin 15 20 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(15)150 299 +y Ft(\(\))870 437 y(\()47 b Fj(list)g Ft(\))630 574 y +Fu(Placing)30 b(a)f(list)g(of)g(commands)f(b)s(et)m(w)m(een)i(paren)m +(theses)e(causes)i(a)f(subshell)e(en)m(vironmen)m(t)630 +684 y(to)k(b)s(e)e(created)j(\(see)f(Section)g(3.7.3)h([Command)d +(Execution)i(En)m(vironmen)m(t],)g(page)f(39\),)630 793 y(and)d(eac)m(h)h(of)g(the)f(commands)g(in)g Fr(list)j Fu(to)f(b)s(e)d(executed)j(in)e(that)h(subshell.)38 b(Since)28 -b(the)f Fr(list)630 4947 y Fu(is)i(executed)g(in)f(a)h(subshell,)g(v)-5 +b(the)f Fr(list)630 903 y Fu(is)i(executed)g(in)f(a)h(subshell,)g(v)-5 b(ariable)29 b(assignmen)m(ts)g(do)g(not)g(remain)f(in)g(e\013ect)j -(after)e(the)630 5057 y(subshell)g(completes.)150 5209 -y Ft({})870 5340 y({)47 b Fj(list)p Ft(;)g(})p eop end -%%Page: 15 21 -TeXDict begin 15 20 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(15)630 299 -y(Placing)30 b(a)g(list)g(of)g(commands)f(b)s(et)m(w)m(een)h(curly)f +(after)e(the)630 1013 y(subshell)g(completes.)150 1178 +y Ft({})870 1316 y({)47 b Fj(list)p Ft(;)g(})630 1453 +y Fu(Placing)30 b(a)g(list)g(of)g(commands)f(b)s(et)m(w)m(een)h(curly)f (braces)g(causes)h(the)f(list)h(to)g(b)s(e)f(executed)630 -408 y(in)d(the)h(curren)m(t)g(shell)f(con)m(text.)42 +1563 y(in)d(the)h(curren)m(t)g(shell)f(con)m(text.)42 b(No)27 b(subshell)f(is)g(created.)41 b(The)26 b(semicolon)i(\(or)f -(newline\))630 518 y(follo)m(wing)32 b Fr(list)h Fu(is)d(required.)275 -668 y(In)44 b(addition)h(to)h(the)f(creation)i(of)e(a)g(subshell,)j +(newline\))630 1673 y(follo)m(wing)32 b Fr(list)h Fu(is)d(required.)275 +1841 y(In)44 b(addition)h(to)h(the)f(creation)i(of)e(a)g(subshell,)j (there)e(is)f(a)g(subtle)g(di\013erence)h(b)s(et)m(w)m(een)f(these)150 -778 y(t)m(w)m(o)c(constructs)e(due)g(to)g(historical)i(reasons.)67 +1951 y(t)m(w)m(o)c(constructs)e(due)g(to)g(historical)i(reasons.)67 b(The)39 b(braces)g(are)h Ft(reserved)28 b(words)p Fu(,)40 -b(so)g(they)f(m)m(ust)150 887 y(b)s(e)d(separated)h(from)f(the)g +b(so)g(they)f(m)m(ust)150 2061 y(b)s(e)d(separated)h(from)f(the)g Fr(list)j Fu(b)m(y)e Ft(blank)p Fu(s)e(or)h(other)h(shell)f(metac)m -(haracters.)62 b(The)36 b(paren)m(theses)h(are)150 997 +(haracters.)62 b(The)36 b(paren)m(theses)h(are)150 2170 y Ft(operators)p Fu(,)23 b(and)h(are)g(recognized)i(as)e(separate)i (tok)m(ens)f(b)m(y)f(the)g(shell)h(ev)m(en)g(if)f(they)g(are)h(not)f -(separated)150 1107 y(from)30 b(the)g Fr(list)j Fu(b)m(y)e(whitespace.) -275 1236 y(The)e(exit)j(status)e(of)h(b)s(oth)f(of)g(these)h +(separated)150 2280 y(from)30 b(the)g Fr(list)j Fu(b)m(y)e(whitespace.) +275 2421 y(The)e(exit)j(status)e(of)h(b)s(oth)f(of)g(these)h (constructs)g(is)f(the)h(exit)g(status)f(of)h Fr(list)p -Fu(.)150 1426 y Fk(3.2.5)63 b(Copro)s(cesses)150 1573 +Fu(.)150 2626 y Fk(3.2.5)63 b(Copro)s(cesses)150 2773 y Fu(A)37 b Ft(coprocess)c Fu(is)k(a)g(shell)f(command)h(preceded)f(b)m (y)g(the)h Ft(coproc)d Fu(reserv)m(ed)j(w)m(ord.)59 b(A)36 -b(copro)s(cess)h(is)150 1683 y(executed)g(async)m(hronously)g(in)f(a)h +b(copro)s(cess)h(is)150 2883 y(executed)g(async)m(hronously)g(in)f(a)h (subshell,)g(as)g(if)g(the)f(command)h(had)f(b)s(een)f(terminated)i -(with)g(the)150 1793 y(`)p Ft(&)p Fu(')d(con)m(trol)h(op)s(erator,)g +(with)g(the)150 2992 y(`)p Ft(&)p Fu(')d(con)m(trol)h(op)s(erator,)g (with)f(a)g(t)m(w)m(o-w)m(a)m(y)i(pip)s(e)d(established)h(b)s(et)m(w)m -(een)h(the)f(executing)h(shell)f(and)f(the)150 1902 y(copro)s(cess.)275 -2032 y(The)c(format)i(for)f(a)h(copro)s(cess)g(is:)390 -2162 y Ft(coproc)46 b([)p Fj(NAME)p Ft(])g Fj(command)g -Ft([)p Fj(redirections)p Ft(])150 2292 y Fu(This)39 b(creates)j(a)e +(een)h(the)f(executing)h(shell)f(and)f(the)150 3102 y(copro)s(cess.)275 +3243 y(The)c(format)i(for)f(a)h(copro)s(cess)g(is:)390 +3383 y Ft(coproc)46 b([)p Fj(NAME)p Ft(])g Fj(command)g +Ft([)p Fj(redirections)p Ft(])150 3524 y Fu(This)39 b(creates)j(a)e (copro)s(cess)h(named)f Fr(NAME)p Fu(.)70 b(If)40 b Fr(NAME)46 b Fu(is)40 b(not)g(supplied,)i(the)e(default)h(name)f(is)150 -2401 y Fr(COPR)m(OC)p Fu(.)d Fr(NAME)28 b Fu(m)m(ust)23 +3634 y Fr(COPR)m(OC)p Fu(.)d Fr(NAME)28 b Fu(m)m(ust)23 b(not)g(b)s(e)e(supplied)h(if)g Fr(command)k Fu(is)d(a)g(simple)f -(command)g(\(see)i(Section)f(3.2.1)150 2511 y([Simple)39 +(command)g(\(see)i(Section)f(3.2.1)150 3743 y([Simple)39 b(Commands],)h(page)g(8\);)k(otherwise,)e(it)d(is)g(in)m(terpreted)h (as)f(the)g(\014rst)f(w)m(ord)h(of)g(the)g(simple)150 -2621 y(command.)275 2750 y(When)j(the)i(copro)s(cess)f(is)g(executed,) +3853 y(command.)275 3994 y(When)j(the)i(copro)s(cess)f(is)g(executed,) 48 b(the)43 b(shell)g(creates)i(an)e(arra)m(y)g(v)-5 -b(ariable)44 b(\(see)g(Section)g(6.7)150 2860 y([Arra)m(ys],)32 -b(page)g(91\))h(named)e Ft(NAME)f Fu(in)h(the)h(con)m(text)h(of)e(the)h +b(ariable)44 b(\(see)g(Section)g(6.7)150 4103 y([Arra)m(ys],)32 +b(page)g(94\))h(named)e Ft(NAME)f Fu(in)h(the)h(con)m(text)h(of)e(the)h (executing)g(shell.)44 b(The)31 b(standard)f(output)150 -2970 y(of)g Fr(command)j Fu(is)d(connected)g(via)g(a)g(pip)s(e)f(to)i -(a)f(\014le)g(descriptor)f(in)g(the)h(executing)h(shell,)f(and)g(that)g -(\014le)150 3079 y(descriptor)i(is)f(assigned)h(to)g -Ft(NAME)p Fu([0].)45 b(The)31 b(standard)g(input)f(of)i -Fr(command)j Fu(is)d(connected)h(via)f(a)g(pip)s(e)150 -3189 y(to)39 b(a)g(\014le)f(descriptor)g(in)g(the)g(executing)i(shell,) -g(and)e(that)h(\014le)f(descriptor)g(is)g(assigned)h(to)g -Ft(NAME)p Fu([1].)150 3298 y(This)31 b(pip)s(e)g(is)h(established)g(b)s -(efore)g(an)m(y)g(redirections)g(sp)s(eci\014ed)g(b)m(y)f(the)i -(command)e(\(see)i(Section)g(3.6)150 3408 y([Redirections],)25 -b(page)e(32\).)39 b(The)21 b(\014le)h(descriptors)g(can)g(b)s(e)f -(utilized)i(as)f(argumen)m(ts)h(to)f(shell)g(commands)150 -3518 y(and)33 b(redirections)g(using)g(standard)f(w)m(ord)h -(expansions.)49 b(The)33 b(\014le)g(descriptors)g(are)g(not)h(a)m(v)-5 -b(ailable)35 b(in)150 3627 y(subshells.)275 3757 y(The)27 -b(pro)s(cess)h(ID)h(of)f(the)h(shell)f(spa)m(wned)g(to)h(execute)h(the) -e(copro)s(cess)h(is)f(a)m(v)-5 b(ailable)31 b(as)d(the)h(v)-5 -b(alue)29 b(of)150 3867 y(the)k(v)-5 b(ariable)33 b Ft(NAME)p -850 3867 28 4 v 39 w Fu(PID.)g(The)f Ft(wait)f Fu(builtin)h(command)g -(ma)m(y)h(b)s(e)f(used)g(to)h(w)m(ait)h(for)e(the)h(copro)s(cess)150 -3976 y(to)e(terminate.)275 4106 y(Since)20 b(the)g(copro)s(cess)h(is)g -(created)g(as)g(an)f(async)m(hronous)g(command,)i(the)f -Ft(coproc)d Fu(command)i(alw)m(a)m(ys)150 4216 y(returns)29 -b(success.)41 b(The)30 b(return)f(status)i(of)f(a)h(copro)s(cess)g(is)f -(the)h(exit)g(status)g(of)f Fr(command)p Fu(.)150 4406 -y Fk(3.2.6)63 b(GNU)41 b(P)m(arallel)150 4553 y Fu(There)30 -b(are)h(w)m(a)m(ys)g(to)g(run)f(commands)g(in)g(parallel)h(that)h(are)e -(not)h(built)g(in)m(to)g(Bash.)41 b(GNU)31 b(P)m(arallel)i(is)150 -4662 y(a)e(to)s(ol)g(to)g(do)f(just)g(that.)275 4792 -y(GNU)e(P)m(arallel,)i(as)e(its)g(name)f(suggests,)j(can)d(b)s(e)g -(used)g(to)h(build)f(and)g(run)f(commands)h(in)h(parallel.)150 -4902 y(Y)-8 b(ou)41 b(ma)m(y)g(run)e(the)h(same)h(command)f(with)g -(di\013eren)m(t)h(argumen)m(ts,)j(whether)39 b(they)i(are)g -(\014lenames,)150 5011 y(usernames,)27 b(hostnames,)h(or)e(lines)h -(read)f(from)h(\014les.)39 b(GNU)27 b(P)m(arallel)i(pro)m(vides)d -(shorthand)g(references)150 5121 y(to)38 b(man)m(y)g(of)g(the)g(most)g -(common)g(op)s(erations)g(\(input)f(lines,)j(v)-5 b(arious)38 -b(p)s(ortions)f(of)h(the)g(input)e(line,)150 5230 y(di\013eren)m(t)f(w) -m(a)m(ys)h(to)f(sp)s(ecify)f(the)h(input)f(source,)i(and)e(so)h(on\).) -54 b(P)m(arallel)36 b(can)f(replace)h Ft(xargs)d Fu(or)i(feed)150 -5340 y(commands)30 b(from)g(its)h(input)e(sources)h(to)i(sev)m(eral)f -(di\013eren)m(t)g(instances)g(of)g(Bash.)p eop end +4213 y(of)39 b Fr(command)j Fu(is)d(connected)g(via)g(a)g(pip)s(e)f(to) +i(a)f(\014le)f(descriptor)h(in)f(the)h(executing)h(shell,)h(and)d(that) +150 4322 y(\014le)i(descriptor)h(is)f(assigned)h(to)g +Ft(NAME)p Fu([0].)70 b(The)40 b(standard)f(input)h(of)g +Fr(command)k Fu(is)c(connected)h(via)150 4432 y(a)h(pip)s(e)f(to)i(a)f +(\014le)g(descriptor)g(in)f(the)h(executing)i(shell,)h(and)c(that)h +(\014le)g(descriptor)g(is)g(assigned)g(to)150 4542 y +Ft(NAME)p Fu([1].)69 b(This)39 b(pip)s(e)g(is)h(established)g(b)s +(efore)f(an)m(y)h(redirections)h(sp)s(eci\014ed)e(b)m(y)g(the)h +(command)g(\(see)150 4651 y(Section)45 b(3.6)h([Redirections],)k(page) +45 b(34\).)84 b(The)44 b(\014le)h(descriptors)f(can)h(b)s(e)f(utilized) +h(as)g(argumen)m(ts)150 4761 y(to)d(shell)g(commands)f(and)g +(redirections)h(using)f(standard)g(w)m(ord)g(expansions.)74 +b(Other)41 b(than)g(those)150 4870 y(created)27 b(to)g(execute)g +(command)f(and)f(pro)s(cess)h(substitutions,)h(the)f(\014le)g +(descriptors)g(are)g(not)h(a)m(v)-5 b(ailable)150 4980 +y(in)30 b(subshells.)275 5121 y(The)d(pro)s(cess)h(ID)h(of)f(the)h +(shell)f(spa)m(wned)g(to)h(execute)h(the)e(copro)s(cess)h(is)f(a)m(v)-5 +b(ailable)31 b(as)d(the)h(v)-5 b(alue)29 b(of)150 5230 +y(the)k(v)-5 b(ariable)33 b Ft(NAME)p 850 5230 28 4 v +39 w Fu(PID.)g(The)f Ft(wait)f Fu(builtin)h(command)g(ma)m(y)h(b)s(e)f +(used)g(to)h(w)m(ait)h(for)e(the)h(copro)s(cess)150 5340 +y(to)e(terminate.)p eop end %%Page: 16 22 TeXDict begin 16 21 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(16)275 299 -y(F)-8 b(or)33 b(a)g(complete)h(description,)g(refer)e(to)i(the)f(GNU)g -(P)m(arallel)i(do)s(cumen)m(tation.)48 b(A)33 b(few)f(examples)150 -408 y(should)d(pro)m(vide)i(a)g(brief)e(in)m(tro)s(duction)i(to)g(its)g -(use.)275 541 y(F)-8 b(or)37 b(example,)i(it)e(is)f(easy)h(to)g -(replace)h Ft(xargs)d Fu(to)i(gzip)g(all)g(h)m(tml)g(\014les)f(in)h -(the)f(curren)m(t)g(directory)150 650 y(and)30 b(its)h(sub)s -(directories:)390 783 y Ft(find)47 b(.)g(-type)f(f)i(-name)e('*.html')g -(-print)g(|)h(parallel)f(gzip)150 915 y Fu(If)30 b(y)m(ou)h(need)f(to)h -(protect)h(sp)s(ecial)f(c)m(haracters)g(suc)m(h)g(as)f(newlines)h(in)f -(\014le)g(names,)h(use)f(\014nd's)f Ft(-print0)150 1025 -y Fu(option)i(and)f(parallel's)h Ft(-0)f Fu(option.)275 -1157 y(Y)-8 b(ou)34 b(can)g(use)f(P)m(arallel)j(to)e(mo)m(v)m(e)h -(\014les)f(from)f(the)h(curren)m(t)f(directory)h(when)f(the)h(n)m(um)m -(b)s(er)e(of)i(\014les)150 1267 y(is)c(to)s(o)i(large)f(to)g(pro)s -(cess)f(with)g(one)h Ft(mv)f Fu(in)m(v)m(o)s(cation:)390 -1399 y Ft(ls)47 b(|)h(parallel)d(mv)i({})h(destdir)275 -1532 y Fu(As)28 b(y)m(ou)h(can)g(see,)g(the)g Fi({})g -Fu(is)g(replaced)g(with)f(eac)m(h)i(line)f(read)f(from)g(standard)g -(input.)39 b(While)29 b(using)150 1641 y Ft(ls)g Fu(will)h(w)m(ork)g -(in)f(most)h(instances,)h(it)f(is)g(not)g(su\016cien)m(t)g(to)h(deal)f -(with)f(all)i(\014lenames.)40 b(If)30 b(y)m(ou)g(need)f(to)150 -1751 y(accommo)s(date)j(sp)s(ecial)f(c)m(haracters)h(in)e(\014lenames,) -h(y)m(ou)f(can)h(use)390 1883 y Ft(find)47 b(.)g(-depth)f(1)i(\\!)f -(-name)f('.*')h(-print0)f(|)h(parallel)f(-0)h(mv)g({})g(destdir)150 -2016 y Fu(as)31 b(alluded)f(to)h(ab)s(o)m(v)m(e.)275 -2148 y(This)e(will)i(run)e(as)h(man)m(y)h Ft(mv)e Fu(commands)h(as)h -(there)f(are)h(\014les)f(in)h(the)f(curren)m(t)g(directory)-8 -b(.)42 b(Y)-8 b(ou)31 b(can)150 2258 y(em)m(ulate)h(a)f(parallel)g -Ft(xargs)e Fu(b)m(y)h(adding)g(the)h Ft(-X)f Fu(option:)390 -2390 y Ft(find)47 b(.)g(-depth)f(1)i(\\!)f(-name)f('.*')h(-print0)f(|)h -(parallel)f(-0)h(-X)g(mv)g({})g(destdir)275 2523 y Fu(GNU)31 -b(P)m(arallel)i(can)e(replace)h(certain)g(common)g(idioms)f(that)g(op)s -(erate)h(on)f(lines)g(read)g(from)f(a)i(\014le)150 2632 -y(\(in)e(this)h(case,)g(\014lenames)g(listed)g(one)f(p)s(er)g(line\):) -390 2765 y Ft(while)46 b(IFS=)h(read)g(-r)g(x;)g(do)390 -2874 y(do-something1)d("$x")j("config-$x")390 2984 y(do-something2)d(<) -k("$x")390 3093 y(done)f(<)g(file)g(|)g(process-output)150 -3226 y Fu(with)30 b(a)h(more)f(compact)i(syn)m(tax)f(reminiscen)m(t)g -(of)g(lam)m(b)s(das:)390 3358 y Ft(cat)47 b(list)g(|)g(parallel)f -("do-something1)d({})48 b(config-{})d(;)i(do-something2)e(<)i({}")g(|)g -(process-output)275 3491 y Fu(P)m(arallel)31 b(pro)m(vides)e(a)h -(built-in)g(mec)m(hanism)g(to)g(remo)m(v)m(e)h(\014lename)e -(extensions,)i(whic)m(h)e(lends)g(itself)150 3600 y(to)i(batc)m(h)g -(\014le)g(transformations)f(or)g(renaming:)390 3733 y -Ft(ls)47 b(*.gz)g(|)g(parallel)f(-j+0)g("zcat)h({})g(|)g(bzip2)g -(>{.}.bz2)e(&&)j(rm)f({}")150 3865 y Fu(This)28 b(will)i(recompress)e -(all)i(\014les)f(in)g(the)g(curren)m(t)g(directory)g(with)g(names)g -(ending)f(in)h(.gz)h(using)f(bzip2,)150 3975 y(running)37 -b(one)i(job)f(p)s(er)f(CPU)h(\(-j)p Ft(+)p Fu(0\))i(in)e(parallel.)66 -b(\(W)-8 b(e)40 b(use)e Ft(ls)g Fu(for)h(brevit)m(y)g(here;)j(using)c -Ft(find)g Fu(as)150 4084 y(ab)s(o)m(v)m(e)e(is)g(more)f(robust)f(in)h -(the)h(face)g(of)f(\014lenames)h(con)m(taining)g(unexp)s(ected)f(c)m -(haracters.\))57 b(P)m(arallel)150 4194 y(can)31 b(tak)m(e)h(argumen)m -(ts)e(from)g(the)h(command)f(line;)h(the)f(ab)s(o)m(v)m(e)i(can)f(also) -g(b)s(e)f(written)g(as)390 4326 y Ft(parallel)46 b("zcat)g({})h(|)h -(bzip2)e(>{.}.bz2)f(&&)j(rm)f({}")g(:::)g(*.gz)275 4459 -y Fu(If)24 b(a)i(command)f(generates)h(output,)g(y)m(ou)g(ma)m(y)f(w)m -(an)m(t)h(to)g(preserv)m(e)g(the)f(input)f(order)h(in)g(the)g(output.) -150 4568 y(F)-8 b(or)31 b(instance,)g(the)g(follo)m(wing)h(command)390 -4701 y Ft({)47 b(echo)g(foss.org.my)e(;)i(echo)g(debian.org;)e(echo)h -(freenetproject.org;)d(})k(|)h(parallel)d(traceroute)150 -4833 y Fu(will)31 b(displa)m(y)f(as)h(output)f(the)g(traceroute)i(in)m -(v)m(o)s(cation)h(that)e(\014nishes)e(\014rst.)40 b(Adding)30 -b(the)g Ft(-k)g Fu(option)390 4966 y Ft({)47 b(echo)g(foss.org.my)e(;)i -(echo)g(debian.org;)e(echo)h(freenetproject.org;)d(})k(|)h(parallel)d -(-k)i(traceroute)150 5098 y Fu(will)31 b(ensure)e(that)i(the)g(output)f -(of)g Ft(traceroute)e(foss.org.my)f Fu(is)k(displa)m(y)m(ed)g(\014rst.) -275 5230 y(Finally)-8 b(,)31 b(P)m(arallel)h(can)e(b)s(e)f(used)g(to)i -(run)d(a)i(sequence)h(of)f(shell)g(commands)f(in)h(parallel,)h(similar) -f(to)150 5340 y(`)p Ft(cat)g(file)f(|)h(bash)p Fu('.)53 -b(It)35 b(is)g(not)g(uncommon)f(to)i(tak)m(e)g(a)f(list)h(of)f -(\014lenames,)h(create)g(a)g(series)f(of)g(shell)p eop -end +y(Since)20 b(the)g(copro)s(cess)h(is)g(created)g(as)g(an)f(async)m +(hronous)g(command,)i(the)f Ft(coproc)d Fu(command)i(alw)m(a)m(ys)150 +408 y(returns)29 b(success.)41 b(The)30 b(return)f(status)i(of)f(a)h +(copro)s(cess)g(is)f(the)h(exit)g(status)g(of)f Fr(command)p +Fu(.)150 612 y Fk(3.2.6)63 b(GNU)41 b(P)m(arallel)150 +759 y Fu(There)30 b(are)h(w)m(a)m(ys)g(to)g(run)f(commands)g(in)g +(parallel)h(that)h(are)e(not)h(built)g(in)m(to)g(Bash.)41 +b(GNU)31 b(P)m(arallel)i(is)150 869 y(a)e(to)s(ol)g(to)g(do)f(just)g +(that.)275 1007 y(GNU)e(P)m(arallel,)i(as)e(its)g(name)f(suggests,)j +(can)d(b)s(e)g(used)g(to)h(build)f(and)g(run)f(commands)h(in)h +(parallel.)150 1117 y(Y)-8 b(ou)41 b(ma)m(y)g(run)e(the)h(same)h +(command)f(with)g(di\013eren)m(t)h(argumen)m(ts,)j(whether)39 +b(they)i(are)g(\014lenames,)150 1227 y(usernames,)27 +b(hostnames,)h(or)e(lines)h(read)f(from)h(\014les.)39 +b(GNU)27 b(P)m(arallel)i(pro)m(vides)d(shorthand)g(references)150 +1336 y(to)38 b(man)m(y)g(of)g(the)g(most)g(common)g(op)s(erations)g +(\(input)f(lines,)j(v)-5 b(arious)38 b(p)s(ortions)f(of)h(the)g(input)e +(line,)150 1446 y(di\013eren)m(t)f(w)m(a)m(ys)h(to)f(sp)s(ecify)f(the)h +(input)f(source,)i(and)e(so)h(on\).)54 b(P)m(arallel)36 +b(can)f(replace)h Ft(xargs)d Fu(or)i(feed)150 1555 y(commands)30 +b(from)g(its)h(input)e(sources)h(to)i(sev)m(eral)f(di\013eren)m(t)g +(instances)g(of)g(Bash.)275 1694 y(F)-8 b(or)33 b(a)g(complete)h +(description,)g(refer)e(to)i(the)f(GNU)g(P)m(arallel)i(do)s(cumen)m +(tation.)48 b(A)33 b(few)f(examples)150 1804 y(should)d(pro)m(vide)i(a) +g(brief)e(in)m(tro)s(duction)i(to)g(its)g(use.)275 1943 +y(F)-8 b(or)37 b(example,)i(it)e(is)f(easy)h(to)g(replace)h +Ft(xargs)d Fu(to)i(gzip)g(all)g(h)m(tml)g(\014les)f(in)h(the)f(curren)m +(t)g(directory)150 2052 y(and)30 b(its)h(sub)s(directories:)390 +2191 y Ft(find)47 b(.)g(-type)f(f)i(-name)e('*.html')g(-print)g(|)h +(parallel)f(gzip)150 2330 y Fu(If)30 b(y)m(ou)h(need)f(to)h(protect)h +(sp)s(ecial)f(c)m(haracters)g(suc)m(h)g(as)f(newlines)h(in)f(\014le)g +(names,)h(use)f(\014nd's)f Ft(-print0)150 2439 y Fu(option)i(and)f +(parallel's)h Ft(-0)f Fu(option.)275 2578 y(Y)-8 b(ou)34 +b(can)g(use)f(P)m(arallel)j(to)e(mo)m(v)m(e)h(\014les)f(from)f(the)h +(curren)m(t)f(directory)h(when)f(the)h(n)m(um)m(b)s(er)e(of)i(\014les) +150 2688 y(is)c(to)s(o)i(large)f(to)g(pro)s(cess)f(with)g(one)h +Ft(mv)f Fu(in)m(v)m(o)s(cation:)390 2827 y Ft(ls)47 b(|)h(parallel)d +(mv)i({})h(destdir)275 2965 y Fu(As)28 b(y)m(ou)h(can)g(see,)g(the)g +Fi({})g Fu(is)g(replaced)g(with)f(eac)m(h)i(line)f(read)f(from)g +(standard)g(input.)39 b(While)29 b(using)150 3075 y Ft(ls)g +Fu(will)h(w)m(ork)g(in)f(most)h(instances,)h(it)f(is)g(not)g +(su\016cien)m(t)g(to)h(deal)f(with)f(all)i(\014lenames.)40 +b(If)30 b(y)m(ou)g(need)f(to)150 3185 y(accommo)s(date)j(sp)s(ecial)f +(c)m(haracters)h(in)e(\014lenames,)h(y)m(ou)f(can)h(use)390 +3323 y Ft(find)47 b(.)g(-depth)f(1)i(\\!)f(-name)f('.*')h(-print0)f(|)h +(parallel)f(-0)h(mv)g({})g(destdir)150 3462 y Fu(as)31 +b(alluded)f(to)h(ab)s(o)m(v)m(e.)275 3601 y(This)e(will)i(run)e(as)h +(man)m(y)h Ft(mv)e Fu(commands)h(as)h(there)f(are)h(\014les)f(in)h(the) +f(curren)m(t)g(directory)-8 b(.)42 b(Y)-8 b(ou)31 b(can)150 +3711 y(em)m(ulate)h(a)f(parallel)g Ft(xargs)e Fu(b)m(y)h(adding)g(the)h +Ft(-X)f Fu(option:)390 3850 y Ft(find)47 b(.)g(-depth)f(1)i(\\!)f +(-name)f('.*')h(-print0)f(|)h(parallel)f(-0)h(-X)g(mv)g({})g(destdir) +275 3988 y Fu(GNU)31 b(P)m(arallel)i(can)e(replace)h(certain)g(common)g +(idioms)f(that)g(op)s(erate)h(on)f(lines)g(read)g(from)f(a)i(\014le)150 +4098 y(\(in)e(this)h(case,)g(\014lenames)g(listed)g(one)f(p)s(er)g +(line\):)390 4237 y Ft(while)46 b(IFS=)h(read)g(-r)g(x;)g(do)390 +4346 y(do-something1)d("$x")j("config-$x")390 4456 y(do-something2)d(<) +k("$x")390 4566 y(done)f(<)g(file)g(|)g(process-output)150 +4704 y Fu(with)30 b(a)h(more)f(compact)i(syn)m(tax)f(reminiscen)m(t)g +(of)g(lam)m(b)s(das:)390 4843 y Ft(cat)47 b(list)g(|)g(parallel)f +("do-something1)d({})48 b(config-{})d(;)i(do-something2)e(<)i({}")g(|) +915 4953 y(process-output)275 5092 y Fu(P)m(arallel)31 +b(pro)m(vides)e(a)h(built-in)g(mec)m(hanism)g(to)g(remo)m(v)m(e)h +(\014lename)e(extensions,)i(whic)m(h)e(lends)g(itself)150 +5201 y(to)i(batc)m(h)g(\014le)g(transformations)f(or)g(renaming:)390 +5340 y Ft(ls)47 b(*.gz)g(|)g(parallel)f(-j+0)g("zcat)h({})g(|)g(bzip2)g +(>{.}.bz2)e(&&)j(rm)f({}")p eop end %%Page: 17 23 TeXDict begin 17 22 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)150 299 -y(commands)27 b(to)h(op)s(erate)h(on)e(them,)h(and)f(feed)h(that)g -(list)g(of)g(commnds)e(to)j(a)f(shell.)40 b(P)m(arallel)29 -b(can)f(sp)s(eed)150 408 y(this)i(up.)40 b(Assuming)30 -b(that)h Ft(file)e Fu(con)m(tains)i(a)g(list)g(of)g(shell)f(commands,)h -(one)f(p)s(er)g(line,)390 540 y Ft(parallel)46 b(-j)h(10)g(<)g(file)150 -672 y Fu(will)37 b(ev)-5 b(aluate)38 b(the)f(commands)f(using)g(the)h +y(This)28 b(will)i(recompress)e(all)i(\014les)f(in)g(the)g(curren)m(t)g +(directory)g(with)g(names)g(ending)f(in)h(.gz)h(using)f(bzip2,)150 +408 y(running)37 b(one)i(job)f(p)s(er)f(CPU)h(\(-j)p +Ft(+)p Fu(0\))i(in)e(parallel.)66 b(\(W)-8 b(e)40 b(use)e +Ft(ls)g Fu(for)h(brevit)m(y)g(here;)j(using)c Ft(find)g +Fu(as)150 518 y(ab)s(o)m(v)m(e)e(is)g(more)f(robust)f(in)h(the)h(face)g +(of)f(\014lenames)h(con)m(taining)g(unexp)s(ected)f(c)m(haracters.\))57 +b(P)m(arallel)150 628 y(can)31 b(tak)m(e)h(argumen)m(ts)e(from)g(the)h +(command)f(line;)h(the)f(ab)s(o)m(v)m(e)i(can)f(also)g(b)s(e)f(written) +g(as)390 770 y Ft(parallel)46 b("zcat)g({})h(|)h(bzip2)e(>{.}.bz2)f(&&) +j(rm)f({}")g(:::)g(*.gz)275 913 y Fu(If)24 b(a)i(command)f(generates)h +(output,)g(y)m(ou)g(ma)m(y)f(w)m(an)m(t)h(to)g(preserv)m(e)g(the)f +(input)f(order)h(in)g(the)g(output.)150 1023 y(F)-8 b(or)31 +b(instance,)g(the)g(follo)m(wing)h(command)390 1165 y +Ft({)581 1275 y(echo)47 b(foss.org.my)d(;)581 1385 y(echo)j(debian.org) +e(;)581 1494 y(echo)i(freenetproject.org)42 b(;)390 1604 +y(})47 b(|)h(parallel)d(traceroute)150 1747 y Fu(will)31 +b(displa)m(y)f(as)h(output)f(the)g(traceroute)i(in)m(v)m(o)s(cation)h +(that)e(\014nishes)e(\014rst.)40 b(Adding)30 b(the)g +Ft(-k)g Fu(option)390 1889 y Ft({)581 1999 y(echo)47 +b(foss.org.my)d(;)581 2108 y(echo)j(debian.org)e(;)581 +2218 y(echo)i(freenetproject.org)42 b(;)390 2328 y(})47 +b(|)h(parallel)d(-k)j(traceroute)150 2470 y Fu(will)31 +b(ensure)e(that)i(the)g(output)f(of)g Ft(traceroute)e(foss.org.my)f +Fu(is)k(displa)m(y)m(ed)g(\014rst.)275 2613 y(Finally)-8 +b(,)31 b(P)m(arallel)h(can)e(b)s(e)f(used)g(to)i(run)d(a)i(sequence)h +(of)f(shell)g(commands)f(in)h(parallel,)h(similar)f(to)150 +2723 y(`)p Ft(cat)g(file)f(|)h(bash)p Fu('.)53 b(It)35 +b(is)g(not)g(uncommon)f(to)i(tak)m(e)g(a)f(list)h(of)f(\014lenames,)h +(create)g(a)g(series)f(of)g(shell)150 2832 y(commands)24 +b(to)h(op)s(erate)h(on)e(them,)i(and)e(feed)g(that)h(list)h(of)e +(commands)g(to)i(a)f(shell.)39 b(P)m(arallel)26 b(can)f(sp)s(eed)150 +2942 y(this)30 b(up.)40 b(Assuming)30 b(that)h Ft(file)e +Fu(con)m(tains)i(a)g(list)g(of)g(shell)f(commands,)h(one)f(p)s(er)g +(line,)390 3085 y Ft(parallel)46 b(-j)h(10)g(<)g(file)150 +3227 y Fu(will)37 b(ev)-5 b(aluate)38 b(the)f(commands)f(using)g(the)h (shell)g(\(since)g(no)f(explicit)i(command)e(is)h(supplied)e(as)i(an) -150 781 y(argumen)m(t\),)31 b(in)f(blo)s(c)m(ks)h(of)g(ten)f(shell)h -(jobs)f(at)h(a)g(time.)150 1016 y Fs(3.3)68 b(Shell)45 -b(F)-11 b(unctions)150 1175 y Fu(Shell)35 b(functions)h(are)g(a)g(w)m +150 3337 y(argumen)m(t\),)31 b(in)f(blo)s(c)m(ks)h(of)g(ten)f(shell)h +(jobs)f(at)h(a)g(time.)150 3590 y Fs(3.3)68 b(Shell)45 +b(F)-11 b(unctions)150 3750 y Fu(Shell)35 b(functions)h(are)g(a)g(w)m (a)m(y)g(to)h(group)e(commands)g(for)h(later)g(execution)h(using)e(a)h -(single)g(name)g(for)150 1285 y(the)f(group.)55 b(They)35 +(single)g(name)g(for)150 3859 y(the)f(group.)55 b(They)35 b(are)g(executed)h(just)f(lik)m(e)h(a)g Ft(")p Fu(regular)p Ft(")f Fu(command.)54 b(When)35 b(the)h(name)f(of)g(a)h(shell)150 -1395 y(function)j(is)g(used)f(as)h(a)h(simple)f(command)g(name,)i(the)e +3969 y(function)j(is)g(used)f(as)h(a)h(simple)f(command)g(name,)i(the)e (list)h(of)f(commands)g(asso)s(ciated)i(with)d(that)150 -1504 y(function)25 b(name)h(is)g(executed.)40 b(Shell)25 +4078 y(function)25 b(name)h(is)g(executed.)40 b(Shell)25 b(functions)g(are)i(executed)f(in)f(the)h(curren)m(t)g(shell)g(con)m -(text;)j(no)c(new)150 1614 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m -(terpret)g(them.)275 1745 y(F)-8 b(unctions)30 b(are)h(declared)g -(using)f(this)g(syn)m(tax:)390 1877 y Fj(name)47 b Ft(\(\))g +(text;)j(no)c(new)150 4188 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m +(terpret)g(them.)275 4331 y(F)-8 b(unctions)30 b(are)h(declared)g +(using)f(this)g(syn)m(tax:)390 4473 y Fj(name)47 b Ft(\(\))g Fj(compound-command)c Ft([)48 b Fj(redirections)c Ft(])275 -2008 y Fu(or)390 2140 y Ft(function)i Fj(name)g Ft([\(\)])h +4616 y Fu(or)390 4759 y Ft(function)i Fj(name)g Ft([\(\)])h Fj(compound-command)c Ft([)48 b Fj(redirections)c Ft(])275 -2271 y Fu(This)31 b(de\014nes)h(a)h(shell)g(function)g(named)f +4902 y Fu(This)31 b(de\014nes)h(a)h(shell)g(function)g(named)f Fr(name)p Fu(.)48 b(The)32 b(reserv)m(ed)h(w)m(ord)f -Ft(function)f Fu(is)h(optional.)49 b(If)150 2381 y(the)39 +Ft(function)f Fu(is)h(optional.)49 b(If)150 5011 y(the)39 b Ft(function)f Fu(reserv)m(ed)h(w)m(ord)g(is)g(supplied,)i(the)e (paren)m(theses)h(are)f(optional.)69 b(The)39 b Fr(b)s(o)s(dy)45 -b Fu(of)40 b(the)150 2491 y(function)h(is)h(the)g(comp)s(ound)e +b Fu(of)40 b(the)150 5121 y(function)h(is)h(the)g(comp)s(ound)e (command)h Fr(comp)s(ound-command)j Fu(\(see)e(Section)h(3.2.4)g([Comp) -s(ound)150 2600 y(Commands],)33 b(page)h(9\).)49 b(That)33 +s(ound)150 5230 y(Commands],)33 b(page)h(9\).)49 b(That)33 b(command)f(is)h(usually)g(a)g Fr(list)j Fu(enclosed)e(b)s(et)m(w)m (een)f Fi({)h Fu(and)e Fi(})p Fu(,)i(but)e(ma)m(y)150 -2710 y(b)s(e)39 b(an)m(y)h(comp)s(ound)e(command)i(listed)g(ab)s(o)m(v) +5340 y(b)s(e)39 b(an)m(y)h(comp)s(ound)e(command)i(listed)g(ab)s(o)m(v) m(e,)j(with)d(one)g(exception:)60 b(If)39 b(the)h Ft(function)e -Fu(reserv)m(ed)150 2819 y(w)m(ord)g(is)g(used,)h(but)f(the)g(paren)m -(theses)h(are)f(not)h(supplied,)g(the)f(braces)g(are)h(required.)63 -b Fr(comp)s(ound-)150 2929 y(command)39 b Fu(is)c(executed)h(whenev)m -(er)f Fr(name)41 b Fu(is)35 b(sp)s(eci\014ed)g(as)g(the)h(name)f(of)h -(a)f(command.)56 b(When)35 b(the)150 3038 y(shell)d(is)h(in)f -Fm(posix)f Fu(mo)s(de)h(\(see)h(Section)g(6.11)h([Bash)f(POSIX)e(Mo)s -(de],)j(page)f(96\),)h Fr(name)j Fu(ma)m(y)c(not)g(b)s(e)150 -3148 y(the)k(same)g(as)g(one)g(of)g(the)f(sp)s(ecial)i(builtins)e -(\(see)h(Section)h(4.4)g([Sp)s(ecial)f(Builtins],)i(page)e(70\).)61 -b(An)m(y)150 3258 y(redirections)32 b(\(see)g(Section)h(3.6)f -([Redirections],)i(page)e(32\))h(asso)s(ciated)g(with)e(the)h(shell)f -(function)h(are)150 3367 y(p)s(erformed)d(when)g(the)i(function)f(is)g -(executed.)275 3499 y(A)44 b(function)g(de\014nition)h(ma)m(y)g(b)s(e)f -(deleted)h(using)f(the)h Ft(-f)f Fu(option)h(to)g(the)g -Ft(unset)e Fu(builtin)h(\(see)150 3608 y(Section)31 b(4.1)h([Bourne)e -(Shell)g(Builtins],)h(page)h(42\).)275 3740 y(The)26 -b(exit)i(status)g(of)f(a)h(function)f(de\014nition)g(is)g(zero)h -(unless)f(a)g(syn)m(tax)h(error)f(o)s(ccurs)g(or)g(a)h(readonly)150 -3849 y(function)k(with)f(the)i(same)f(name)g(already)h(exists.)46 -b(When)32 b(executed,)h(the)f(exit)h(status)g(of)f(a)g(function)150 -3959 y(is)e(the)h(exit)g(status)g(of)f(the)h(last)g(command)f(executed) -i(in)e(the)g(b)s(o)s(dy)-8 b(.)275 4091 y(Note)22 b(that)f(for)f -(historical)i(reasons,)h(in)e(the)g(most)g(common)g(usage)g(the)g -(curly)f(braces)h(that)g(surround)150 4200 y(the)38 b(b)s(o)s(dy)d(of)j -(the)f(function)g(m)m(ust)g(b)s(e)g(separated)h(from)f(the)g(b)s(o)s -(dy)f(b)m(y)h Ft(blank)p Fu(s)f(or)h(newlines.)62 b(This)150 -4310 y(is)38 b(b)s(ecause)g(the)h(braces)f(are)h(reserv)m(ed)f(w)m -(ords)g(and)f(are)i(only)f(recognized)i(as)e(suc)m(h)g(when)f(they)i -(are)150 4419 y(separated)26 b(from)f(the)h(command)f(list)i(b)m(y)e -(whitespace)h(or)g(another)g(shell)g(metac)m(haracter.)41 -b(Also,)28 b(when)150 4529 y(using)i(the)g(braces,)h(the)g -Fr(list)i Fu(m)m(ust)d(b)s(e)g(terminated)h(b)m(y)f(a)h(semicolon,)h(a) -e(`)p Ft(&)p Fu(',)h(or)g(a)f(newline.)275 4660 y(When)i(a)i(function)f -(is)g(executed,)i(the)e(argumen)m(ts)h(to)g(the)f(function)g(b)s(ecome) -g(the)h(p)s(ositional)g(pa-)150 4770 y(rameters)42 b(during)e(its)i +Fu(reserv)m(ed)p eop end +%%Page: 18 24 +TeXDict begin 18 23 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(18)150 299 +y(w)m(ord)38 b(is)g(used,)h(but)f(the)g(paren)m(theses)h(are)f(not)h +(supplied,)g(the)f(braces)g(are)h(required.)63 b Fr(comp)s(ound-)150 +408 y(command)39 b Fu(is)c(executed)h(whenev)m(er)f Fr(name)41 +b Fu(is)35 b(sp)s(eci\014ed)g(as)g(the)h(name)f(of)h(a)f(command.)56 +b(When)35 b(the)150 518 y(shell)d(is)h(in)f Fm(posix)f +Fu(mo)s(de)h(\(see)h(Section)g(6.11)h([Bash)f(POSIX)e(Mo)s(de],)j(page) +f(99\),)h Fr(name)j Fu(ma)m(y)c(not)g(b)s(e)150 628 y(the)k(same)g(as)g +(one)g(of)g(the)f(sp)s(ecial)i(builtins)e(\(see)h(Section)h(4.4)g([Sp)s +(ecial)f(Builtins],)i(page)e(71\).)61 b(An)m(y)150 737 +y(redirections)32 b(\(see)g(Section)h(3.6)f([Redirections],)i(page)e +(34\))h(asso)s(ciated)g(with)e(the)h(shell)f(function)h(are)150 +847 y(p)s(erformed)d(when)g(the)i(function)f(is)g(executed.)275 +981 y(A)44 b(function)g(de\014nition)h(ma)m(y)g(b)s(e)f(deleted)h +(using)f(the)h Ft(-f)f Fu(option)h(to)g(the)g Ft(unset)e +Fu(builtin)h(\(see)150 1090 y(Section)31 b(4.1)h([Bourne)e(Shell)g +(Builtins],)h(page)h(43\).)275 1224 y(The)26 b(exit)i(status)g(of)f(a)h +(function)f(de\014nition)g(is)g(zero)h(unless)f(a)g(syn)m(tax)h(error)f +(o)s(ccurs)g(or)g(a)h(readonly)150 1334 y(function)k(with)f(the)i(same) +f(name)g(already)h(exists.)46 b(When)32 b(executed,)h(the)f(exit)h +(status)g(of)f(a)g(function)150 1443 y(is)e(the)h(exit)g(status)g(of)f +(the)h(last)g(command)f(executed)i(in)e(the)g(b)s(o)s(dy)-8 +b(.)275 1577 y(Note)22 b(that)f(for)f(historical)i(reasons,)h(in)e(the) +g(most)g(common)g(usage)g(the)g(curly)f(braces)h(that)g(surround)150 +1687 y(the)38 b(b)s(o)s(dy)d(of)j(the)f(function)g(m)m(ust)g(b)s(e)g +(separated)h(from)f(the)g(b)s(o)s(dy)f(b)m(y)h Ft(blank)p +Fu(s)f(or)h(newlines.)62 b(This)150 1797 y(is)38 b(b)s(ecause)g(the)h +(braces)f(are)h(reserv)m(ed)f(w)m(ords)g(and)f(are)i(only)f(recognized) +i(as)e(suc)m(h)g(when)f(they)i(are)150 1906 y(separated)26 +b(from)f(the)h(command)f(list)i(b)m(y)e(whitespace)h(or)g(another)g +(shell)g(metac)m(haracter.)41 b(Also,)28 b(when)150 2016 +y(using)i(the)g(braces,)h(the)g Fr(list)i Fu(m)m(ust)d(b)s(e)g +(terminated)h(b)m(y)f(a)h(semicolon,)h(a)e(`)p Ft(&)p +Fu(',)h(or)g(a)f(newline.)275 2150 y(When)i(a)i(function)f(is)g +(executed,)i(the)e(argumen)m(ts)h(to)g(the)f(function)g(b)s(ecome)g +(the)h(p)s(ositional)g(pa-)150 2259 y(rameters)42 b(during)e(its)i (execution)h(\(see)f(Section)g(3.4.1)h([P)m(ositional)h(P)m -(arameters],)i(page)c(19\).)75 b(The)150 4880 y(sp)s(ecial)37 +(arameters],)i(page)c(21\).)75 b(The)150 2369 y(sp)s(ecial)37 b(parameter)f(`)p Ft(#)p Fu(')g(that)h(expands)e(to)i(the)f(n)m(um)m(b) s(er)f(of)h(p)s(ositional)h(parameters)f(is)g(up)s(dated)f(to)150 -4989 y(re\015ect)h(the)f(c)m(hange.)56 b(Sp)s(ecial)35 +2478 y(re\015ect)h(the)f(c)m(hange.)56 b(Sp)s(ecial)35 b(parameter)h Ft(0)f Fu(is)g(unc)m(hanged.)54 b(The)35 -b(\014rst)f(elemen)m(t)j(of)e(the)g Ft(FUNCNAME)150 5099 +b(\014rst)f(elemen)m(t)j(of)e(the)g Ft(FUNCNAME)150 2588 y Fu(v)-5 b(ariable)31 b(is)g(set)f(to)i(the)e(name)h(of)f(the)h (function)f(while)g(the)h(function)f(is)g(executing.)275 -5230 y(All)25 b(other)g(asp)s(ects)g(of)g(the)g(shell)g(execution)h(en) +2722 y(All)25 b(other)g(asp)s(ects)g(of)g(the)g(shell)g(execution)h(en) m(vironmen)m(t)g(are)f(iden)m(tical)h(b)s(et)m(w)m(een)g(a)f(function)g -(and)150 5340 y(its)35 b(caller)i(with)d(these)i(exceptions:)50 +(and)150 2832 y(its)35 b(caller)i(with)d(these)i(exceptions:)50 b(the)36 b Ft(DEBUG)d Fu(and)h Ft(RETURN)g Fu(traps)g(are)i(not)f -(inherited)f(unless)h(the)p eop end -%%Page: 18 24 -TeXDict begin 18 23 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(18)150 299 -y(function)26 b(has)g(b)s(een)f(giv)m(en)i(the)g Ft(trace)d -Fu(attribute)j(using)f(the)g Ft(declare)e Fu(builtin)i(or)g(the)h -Ft(-o)i(functrace)150 408 y Fu(option)f(has)e(b)s(een)h(enabled)g(with) -g(the)g Ft(set)f Fu(builtin,)i(\(in)f(whic)m(h)f(case)j(all)f -(functions)e(inherit)h(the)g Ft(DEBUG)150 518 y Fu(and)33 -b Ft(RETURN)f Fu(traps\),)j(and)e(the)h Ft(ERR)f Fu(trap)h(is)g(not)g -(inherited)f(unless)g(the)h Ft(-o)c(errtrace)h Fu(shell)j(option)150 -628 y(has)h(b)s(een)f(enabled.)55 b(See)35 b(Section)h(4.1)g([Bourne)f -(Shell)g(Builtins],)i(page)f(42,)i(for)c(the)i(description)f(of)150 -737 y(the)c Ft(trap)e Fu(builtin.)275 885 y(The)38 b -Ft(FUNCNEST)f Fu(v)-5 b(ariable,)42 b(if)d(set)h(to)g(a)g(n)m(umeric)f -(v)-5 b(alue)39 b(greater)h(than)f(0,)j(de\014nes)d(a)g(maxim)m(um)150 -995 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25 +(inherited)f(unless)h(the)150 2941 y(function)26 b(has)g(b)s(een)f(giv) +m(en)i(the)g Ft(trace)d Fu(attribute)j(using)f(the)g +Ft(declare)e Fu(builtin)i(or)g(the)h Ft(-o)i(functrace)150 +3051 y Fu(option)f(has)e(b)s(een)h(enabled)g(with)g(the)g +Ft(set)f Fu(builtin,)i(\(in)f(whic)m(h)f(case)j(all)f(functions)e +(inherit)h(the)g Ft(DEBUG)150 3160 y Fu(and)33 b Ft(RETURN)f +Fu(traps\),)j(and)e(the)h Ft(ERR)f Fu(trap)h(is)g(not)g(inherited)f +(unless)g(the)h Ft(-o)c(errtrace)h Fu(shell)j(option)150 +3270 y(has)h(b)s(een)f(enabled.)55 b(See)35 b(Section)h(4.1)g([Bourne)f +(Shell)g(Builtins],)i(page)f(43,)i(for)c(the)i(description)f(of)150 +3380 y(the)c Ft(trap)e Fu(builtin.)275 3513 y(The)38 +b Ft(FUNCNEST)f Fu(v)-5 b(ariable,)42 b(if)d(set)h(to)g(a)g(n)m(umeric) +f(v)-5 b(alue)39 b(greater)h(than)f(0,)j(de\014nes)d(a)g(maxim)m(um)150 +3623 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25 b(in)m(v)m(o)s(cations)i(that)e(exceed)g(the)g(limit)g(cause)g(the)g -(en)m(tire)g(command)150 1105 y(to)31 b(ab)s(ort.)275 -1253 y(If)37 b(the)g(builtin)g(command)h Ft(return)d +(en)m(tire)g(command)150 3733 y(to)31 b(ab)s(ort.)275 +3867 y(If)37 b(the)g(builtin)g(command)h Ft(return)d Fu(is)j(executed)g(in)g(a)g(function,)h(the)e(function)h(completes)h -(and)150 1362 y(execution)25 b(resumes)e(with)h(the)g(next)g(command)f +(and)150 3976 y(execution)25 b(resumes)e(with)h(the)g(next)g(command)f (after)i(the)f(function)f(call.)40 b(An)m(y)24 b(command)f(asso)s -(ciated)150 1472 y(with)36 b(the)h Ft(RETURN)d Fu(trap)i(is)h(executed) +(ciated)150 4086 y(with)36 b(the)h Ft(RETURN)d Fu(trap)i(is)h(executed) g(b)s(efore)f(execution)i(resumes.)57 b(When)37 b(a)f(function)g -(completes,)150 1581 y(the)h(v)-5 b(alues)38 b(of)f(the)g(p)s +(completes,)150 4195 y(the)h(v)-5 b(alues)38 b(of)f(the)g(p)s (ositional)h(parameters)f(and)g(the)g(sp)s(ecial)h(parameter)f(`)p -Ft(#)p Fu(')g(are)h(restored)f(to)h(the)150 1691 y(v)-5 +Ft(#)p Fu(')g(are)h(restored)f(to)h(the)150 4305 y(v)-5 b(alues)26 b(they)f(had)g(prior)f(to)i(the)g(function's)f(execution.)40 b(If)25 b(a)h(n)m(umeric)f(argumen)m(t)h(is)f(giv)m(en)h(to)g -Ft(return)p Fu(,)150 1801 y(that)j(is)g(the)f(function's)h(return)e +Ft(return)p Fu(,)150 4415 y(that)j(is)g(the)f(function's)h(return)e (status;)j(otherwise)f(the)f(function's)h(return)e(status)i(is)f(the)h -(exit)h(status)150 1910 y(of)h(the)f(last)h(command)f(executed)i(b)s -(efore)e(the)g Ft(return)p Fu(.)275 2058 y(V)-8 b(ariables)31 +(exit)h(status)150 4524 y(of)h(the)f(last)h(command)f(executed)i(b)s +(efore)e(the)g Ft(return)p Fu(.)275 4658 y(V)-8 b(ariables)31 b(lo)s(cal)g(to)f(the)g(function)f(ma)m(y)i(b)s(e)e(declared)h(with)f (the)h Ft(local)f Fu(builtin.)40 b(These)29 b(v)-5 b(ariables)150 -2168 y(are)31 b(visible)g(only)f(to)h(the)g(function)f(and)g(the)g -(commands)g(it)h(in)m(v)m(ok)m(es.)275 2316 y(F)-8 b(unction)51 -b(names)f(and)g(de\014nitions)g(ma)m(y)i(b)s(e)e(listed)h(with)f(the)h -Ft(-f)f Fu(option)h(to)g(the)g Ft(declare)150 2426 y -Fu(\()p Ft(typeset)p Fu(\))35 b(builtin)g(command)h(\(see)h(Section)g -(4.2)g([Bash)f(Builtins],)i(page)f(49\).)59 b(The)35 -b Ft(-F)h Fu(option)g(to)150 2535 y Ft(declare)e Fu(or)i -Ft(typeset)e Fu(will)i(list)h(the)f(function)g(names)g(only)g(\(and)g -(optionally)h(the)f(source)g(\014le)h(and)150 2645 y(line)c(n)m(um)m(b) -s(er,)g(if)f(the)h Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled\).)49 -b(F)-8 b(unctions)33 b(ma)m(y)h(b)s(e)e(exp)s(orted)g(so)h(that)150 -2754 y(subshells)j(automatically)k(ha)m(v)m(e)f(them)e(de\014ned)f -(with)h(the)h Ft(-f)e Fu(option)i(to)g(the)g Ft(export)d -Fu(builtin)i(\(see)150 2864 y(Section)c(4.1)g([Bourne)f(Shell)g -(Builtins],)i(page)f(42\).)47 b(Note)33 b(that)g(shell)f(functions)g -(and)f(v)-5 b(ariables)33 b(with)150 2973 y(the)d(same)g(name)g(ma)m(y) -g(result)g(in)g(m)m(ultiple)g(iden)m(tically-named)i(en)m(tries)f(in)e -(the)h(en)m(vironmen)m(t)g(passed)150 3083 y(to)h(the)g(shell's)f(c)m -(hildren.)41 b(Care)30 b(should)g(b)s(e)f(tak)m(en)j(in)e(cases)h -(where)f(this)g(ma)m(y)h(cause)g(a)g(problem.)275 3231 -y(F)-8 b(unctions)33 b(ma)m(y)g(b)s(e)g(recursiv)m(e.)48 +4768 y(are)25 b(visible)h(only)f(to)g(the)g(function)g(and)f(the)i +(commands)e(it)i(in)m(v)m(ok)m(es.)40 b(This)24 b(is)h(particularly)h +(imp)s(ortan)m(t)150 4877 y(when)j(a)i(shell)g(function)f(calls)h +(other)g(functions.)275 5011 y(Lo)s(cal)41 b(v)-5 b(ariables)42 +b Ft(")p Fu(shado)m(w)p Ft(")e Fu(v)-5 b(ariables)42 +b(with)f(the)g(same)g(name)g(declared)h(at)f(previous)g(scop)s(es.)150 +5121 y(F)-8 b(or)41 b(instance,)j(a)d(lo)s(cal)h(v)-5 +b(ariable)41 b(declared)g(in)f(a)h(function)f(hides)g(a)h(global)h(v)-5 +b(ariable)41 b(of)g(the)g(same)150 5230 y(name:)59 b(references)40 +b(and)f(assignmen)m(ts)h(refer)f(to)i(the)f(lo)s(cal)g(v)-5 +b(ariable,)43 b(lea)m(ving)f(the)d(global)i(v)-5 b(ariable)150 +5340 y(unmo)s(di\014ed.)39 b(When)30 b(the)g(function)g(returns,)g(the) +g(global)i(v)-5 b(ariable)31 b(is)g(once)g(again)g(visible.)p +eop end +%%Page: 19 25 +TeXDict begin 19 24 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(19)275 299 +y(The)30 b(shell)h(uses)g Fr(dynamic)g(scoping)39 b Fu(to)32 +b(con)m(trol)g(a)f(v)-5 b(ariable's)32 b(visibilit)m(y)h(within)d +(functions.)42 b(With)150 408 y(dynamic)31 b(scoping,)i(visible)e(v)-5 +b(ariables)32 b(and)f(their)h(v)-5 b(alues)32 b(are)f(a)h(result)g(of)f +(the)h(sequence)g(of)f(function)150 518 y(calls)37 b(that)g(caused)g +(execution)g(to)g(reac)m(h)g(the)g(curren)m(t)f(function.)58 +b(The)36 b(v)-5 b(alue)36 b(of)h(a)g(v)-5 b(ariable)37 +b(that)g(a)150 628 y(function)24 b(sees)g(dep)s(ends)f(on)h(its)g(v)-5 +b(alue)25 b(within)e(its)i(caller,)i(if)d(an)m(y)-8 b(,)26 +b(whether)e(that)g(caller)i(is)e(the)g Ft(")p Fu(global)p +Ft(")150 737 y Fu(scop)s(e)41 b(or)g(another)g(shell)g(function.)73 +b(This)40 b(is)h(also)h(the)f(v)-5 b(alue)41 b(that)h(a)f(lo)s(cal)i(v) +-5 b(ariable)41 b(declaration)150 847 y Ft(")p Fu(shado)m(ws)p +Ft(")p Fu(,)30 b(and)g(the)g(v)-5 b(alue)31 b(that)g(is)f(restored)h +(when)e(the)i(function)f(returns.)275 991 y(F)-8 b(or)41 +b(example,)j(if)d(a)g(v)-5 b(ariable)41 b Fr(v)-5 b(ar)48 +b Fu(is)40 b(declared)h(as)g(lo)s(cal)h(in)f(function)f +Fr(func1)p Fu(,)j(and)d Fr(func1)48 b Fu(calls)150 1101 +y(another)33 b(function)g Fr(func2)p Fu(,)g(references)g(to)h +Fr(v)-5 b(ar)39 b Fu(made)33 b(from)f(within)h Fr(func2)39 +b Fu(will)34 b(resolv)m(e)g(to)g(the)f(lo)s(cal)150 1210 +y(v)-5 b(ariable)31 b Fr(v)-5 b(ar)37 b Fu(from)30 b +Fr(func1)p Fu(,)g(shado)m(wing)h(an)m(y)f(global)i(v)-5 +b(ariable)31 b(named)f Fr(v)-5 b(ar)p Fu(.)275 1355 y(The)29 +b(follo)m(wing)j(script)f(demonstrates)f(this)h(b)s(eha)m(vior.)40 +b(When)31 b(executed,)g(the)g(script)f(displa)m(ys)390 +1499 y Ft(In)47 b(func2,)f(var)h(=)h(func1)e(local)390 +1643 y(func1\(\))390 1753 y({)581 1862 y(local)g(var='func1)f(local') +581 1972 y(func2)390 2081 y(})390 2301 y(func2\(\))390 +2410 y({)581 2520 y(echo)i("In)f(func2,)h(var)f(=)i($var")390 +2629 y(})390 2849 y(var=global)390 2958 y(func1)275 3102 +y Fu(The)32 b Ft(unset)g Fu(builtin)g(also)i(acts)g(using)e(the)i(same) +f(dynamic)g(scop)s(e:)46 b(if)33 b(a)g(v)-5 b(ariable)34 +b(is)f(lo)s(cal)h(to)g(the)150 3212 y(curren)m(t)i(scop)s(e,)h +Ft(unset)e Fu(will)h(unset)g(it;)j(otherwise)e(the)f(unset)f(will)h +(refer)g(to)h(the)f(v)-5 b(ariable)37 b(found)d(in)150 +3322 y(an)m(y)j(calling)h(scop)s(e)f(as)g(describ)s(ed)f(ab)s(o)m(v)m +(e.)61 b(If)36 b(a)h(v)-5 b(ariable)38 b(at)f(the)g(curren)m(t)g(lo)s +(cal)h(scop)s(e)e(is)h(unset,)h(it)150 3431 y(will)27 +b(remain)h(so)f(un)m(til)g(it)h(is)f(reset)h(in)f(that)g(scop)s(e)h(or) +f(un)m(til)g(the)h(function)e(returns.)39 b(Once)27 b(the)g(function) +150 3541 y(returns,)34 b(an)m(y)h(instance)g(of)f(the)g(v)-5 +b(ariable)35 b(at)g(a)g(previous)e(scop)s(e)i(will)f(b)s(ecome)h +(visible.)52 b(If)34 b(the)g(unset)150 3650 y(acts)e(on)f(a)h(v)-5 +b(ariable)32 b(at)g(a)f(previous)g(scop)s(e,)h(an)m(y)f(instance)h(of)f +(a)h(v)-5 b(ariable)32 b(with)f(that)h(name)f(that)h(had)150 +3760 y(b)s(een)e(shado)m(w)m(ed)g(will)h(b)s(ecome)g(visible.)275 +3904 y(F)-8 b(unction)51 b(names)f(and)g(de\014nitions)g(ma)m(y)i(b)s +(e)e(listed)h(with)f(the)h Ft(-f)f Fu(option)h(to)g(the)g +Ft(declare)150 4014 y Fu(\()p Ft(typeset)p Fu(\))35 b(builtin)g +(command)h(\(see)h(Section)g(4.2)g([Bash)f(Builtins],)i(page)f(50\).)59 +b(The)35 b Ft(-F)h Fu(option)g(to)150 4123 y Ft(declare)e +Fu(or)i Ft(typeset)e Fu(will)i(list)h(the)f(function)g(names)g(only)g +(\(and)g(optionally)h(the)f(source)g(\014le)h(and)150 +4233 y(line)c(n)m(um)m(b)s(er,)g(if)f(the)h Ft(extdebug)e +Fu(shell)i(option)g(is)g(enabled\).)49 b(F)-8 b(unctions)33 +b(ma)m(y)h(b)s(e)e(exp)s(orted)g(so)h(that)150 4343 y(subshells)j +(automatically)k(ha)m(v)m(e)f(them)e(de\014ned)f(with)h(the)h +Ft(-f)e Fu(option)i(to)g(the)g Ft(export)d Fu(builtin)i(\(see)150 +4452 y(Section)31 b(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(43\).) +275 4596 y(F)-8 b(unctions)33 b(ma)m(y)g(b)s(e)g(recursiv)m(e.)48 b(The)32 b Ft(FUNCNEST)f Fu(v)-5 b(ariable)34 b(ma)m(y)f(b)s(e)f(used)g -(to)i(limit)g(the)f(depth)f(of)150 3341 y(the)27 b(function)f(call)i +(to)i(limit)g(the)f(depth)f(of)150 4706 y(the)27 b(function)f(call)i (stac)m(k)h(and)d(restrict)h(the)g(n)m(um)m(b)s(er)f(of)h(function)f (in)m(v)m(o)s(cations.)42 b(By)27 b(default,)g(no)g(limit)150 -3450 y(is)j(placed)h(on)g(the)f(n)m(um)m(b)s(er)f(of)i(recursiv)m(e)f -(calls.)150 3711 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150 -3871 y Fu(A)23 b Fr(parameter)31 b Fu(is)23 b(an)g(en)m(tit)m(y)i(that) +4816 y(is)j(placed)h(on)g(the)f(n)m(um)m(b)s(er)f(of)i(recursiv)m(e)f +(calls.)150 5071 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150 +5230 y Fu(A)23 b Fr(parameter)31 b Fu(is)23 b(an)g(en)m(tit)m(y)i(that) f(stores)g(v)-5 b(alues.)39 b(It)23 b(can)h(b)s(e)f(a)g Ft(name)p Fu(,)h(a)g(n)m(um)m(b)s(er,)f(or)h(one)f(of)h(the)f(sp)s -(ecial)150 3980 y(c)m(haracters)i(listed)e(b)s(elo)m(w.)39 +(ecial)150 5340 y(c)m(haracters)i(listed)e(b)s(elo)m(w.)39 b(A)23 b Fr(v)-5 b(ariable)30 b Fu(is)23 b(a)g(parameter)h(denoted)f(b) m(y)h(a)f Ft(name)p Fu(.)37 b(A)24 b(v)-5 b(ariable)24 -b(has)f(a)g Fr(v)-5 b(alue)150 4090 y Fu(and)33 b(zero)i(or)f(more)g -Fr(attributes)p Fu(.)52 b(A)m(ttributes)35 b(are)f(assigned)g(using)g -(the)g Ft(declare)e Fu(builtin)h(command)150 4200 y(\(see)e(the)g -(description)f(of)h(the)f Ft(declare)f Fu(builtin)h(in)g(Section)h(4.2) -g([Bash)g(Builtins],)g(page)g(49\).)275 4348 y(A)d(parameter)h(is)g -(set)g(if)f(it)h(has)f(b)s(een)g(assigned)h(a)g(v)-5 -b(alue.)40 b(The)28 b(n)m(ull)h(string)f(is)h(a)g(v)-5 -b(alid)28 b(v)-5 b(alue.)41 b(Once)150 4457 y(a)31 b(v)-5 -b(ariable)31 b(is)f(set,)i(it)e(ma)m(y)h(b)s(e)f(unset)g(only)h(b)m(y)f -(using)g(the)g Ft(unset)f Fu(builtin)h(command.)275 4605 -y(A)g(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)f(assigned)g(to)i(b)m(y)e(a)h -(statemen)m(t)h(of)e(the)h(form)390 4754 y Fj(name)p -Ft(=[)p Fj(value)p Ft(])150 4902 y Fu(If)j Fr(v)-5 b(alue)40 +b(has)f(a)g Fr(v)-5 b(alue)p eop end +%%Page: 20 26 +TeXDict begin 20 25 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(20)150 299 +y(and)33 b(zero)i(or)f(more)g Fr(attributes)p Fu(.)52 +b(A)m(ttributes)35 b(are)f(assigned)g(using)g(the)g Ft(declare)e +Fu(builtin)h(command)150 408 y(\(see)e(the)g(description)f(of)h(the)f +Ft(declare)f Fu(builtin)h(in)g(Section)h(4.2)g([Bash)g(Builtins],)g +(page)g(50\).)275 542 y(A)d(parameter)h(is)g(set)g(if)f(it)h(has)f(b)s +(een)g(assigned)h(a)g(v)-5 b(alue.)40 b(The)28 b(n)m(ull)h(string)f(is) +h(a)g(v)-5 b(alid)28 b(v)-5 b(alue.)41 b(Once)150 652 +y(a)31 b(v)-5 b(ariable)31 b(is)f(set,)i(it)e(ma)m(y)h(b)s(e)f(unset)g +(only)h(b)m(y)f(using)g(the)g Ft(unset)f Fu(builtin)h(command.)275 +786 y(A)g(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)f(assigned)g(to)i(b)m(y)e +(a)h(statemen)m(t)h(of)e(the)h(form)390 920 y Fj(name)p +Ft(=[)p Fj(value)p Ft(])150 1054 y Fu(If)j Fr(v)-5 b(alue)40 b Fu(is)35 b(not)g(giv)m(en,)h(the)f(v)-5 b(ariable)35 b(is)g(assigned)g(the)f(n)m(ull)h(string.)53 b(All)35 b Fr(v)-5 b(alue)5 b Fu(s)35 b(undergo)f(tilde)h(ex-)150 -5011 y(pansion,)h(parameter)f(and)f(v)-5 b(ariable)36 +1163 y(pansion,)h(parameter)f(and)f(v)-5 b(ariable)36 b(expansion,)f(command)g(substitution,)h(arithmetic)g(expansion,)150 -5121 y(and)k(quote)h(remo)m(v)-5 b(al)42 b(\(detailed)h(b)s(elo)m(w\).) +1273 y(and)k(quote)h(remo)m(v)-5 b(al)42 b(\(detailed)h(b)s(elo)m(w\).) 72 b(If)40 b(the)h(v)-5 b(ariable)41 b(has)g(its)g Ft(integer)e -Fu(attribute)i(set,)j(then)150 5230 y Fr(v)-5 b(alue)38 +Fu(attribute)i(set,)j(then)150 1383 y Fr(v)-5 b(alue)38 b Fu(is)33 b(ev)-5 b(aluated)34 b(as)f(an)g(arithmetic)h(expression)f (ev)m(en)h(if)e(the)h Ft($\(\(...)o(\)\))f Fu(expansion)h(is)g(not)g -(used)150 5340 y(\(see)e(Section)g(3.5.5)i([Arithmetic)e(Expansion],)f -(page)h(29\).)42 b(W)-8 b(ord)31 b(splitting)g(is)g(not)f(p)s -(erformed,)f(with)p eop end -%%Page: 19 25 -TeXDict begin 19 24 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(19)150 299 -y(the)35 b(exception)h(of)f Ft("$@")f Fu(as)h(explained)g(b)s(elo)m(w.) -54 b(Filename)36 b(expansion)f(is)g(not)g(p)s(erformed.)53 -b(Assign-)150 408 y(men)m(t)33 b(statemen)m(ts)h(ma)m(y)f(also)g(app)s -(ear)f(as)g(argumen)m(ts)h(to)g(the)g Ft(alias)p Fu(,)e -Ft(declare)p Fu(,)g Ft(typeset)p Fu(,)g Ft(export)p Fu(,)150 -518 y Ft(readonly)p Fu(,)38 b(and)g Ft(local)f Fu(builtin)h(commands)g -(\()p Fr(declaration)j Fu(commands\).)64 b(When)39 b(in)f -Fm(posix)f Fu(mo)s(de)150 628 y(\(see)c(Section)f(6.11)h([Bash)g(POSIX) -d(Mo)s(de],)j(page)f(96\),)i(these)e(builtins)f(ma)m(y)i(app)s(ear)e -(in)g(a)h(command)150 737 y(after)i(one)g(or)f(more)h(instances)g(of)f -(the)h Ft(command)d Fu(builtin)i(and)g(retain)h(these)g(assignmen)m(t)g -(statemen)m(t)150 847 y(prop)s(erties.)275 994 y(In)29 +(used)150 1492 y(\(see)e(Section)g(3.5.5)i([Arithmetic)e(Expansion],)f +(page)h(31\).)42 b(W)-8 b(ord)31 b(splitting)g(is)g(not)f(p)s +(erformed,)f(with)150 1602 y(the)35 b(exception)h(of)f +Ft("$@")f Fu(as)h(explained)g(b)s(elo)m(w.)54 b(Filename)36 +b(expansion)f(is)g(not)g(p)s(erformed.)53 b(Assign-)150 +1711 y(men)m(t)33 b(statemen)m(ts)h(ma)m(y)f(also)g(app)s(ear)f(as)g +(argumen)m(ts)h(to)g(the)g Ft(alias)p Fu(,)e Ft(declare)p +Fu(,)g Ft(typeset)p Fu(,)g Ft(export)p Fu(,)150 1821 +y Ft(readonly)p Fu(,)38 b(and)g Ft(local)f Fu(builtin)h(commands)g(\()p +Fr(declaration)j Fu(commands\).)64 b(When)39 b(in)f Fm(posix)f +Fu(mo)s(de)150 1931 y(\(see)c(Section)f(6.11)h([Bash)g(POSIX)d(Mo)s +(de],)j(page)f(99\),)i(these)e(builtins)f(ma)m(y)i(app)s(ear)e(in)g(a)h +(command)150 2040 y(after)i(one)g(or)f(more)h(instances)g(of)f(the)h +Ft(command)d Fu(builtin)i(and)g(retain)h(these)g(assignmen)m(t)g +(statemen)m(t)150 2150 y(prop)s(erties.)275 2284 y(In)29 b(the)h(con)m(text)i(where)d(an)h(assignmen)m(t)h(statemen)m(t)h(is)e (assigning)g(a)h(v)-5 b(alue)30 b(to)h(a)f(shell)g(v)-5 -b(ariable)31 b(or)150 1104 y(arra)m(y)24 b(index)f(\(see)h(Section)g -(6.7)g([Arra)m(ys],)i(page)e(91\),)i(the)e(`)p Ft(+=)p +b(ariable)31 b(or)150 2393 y(arra)m(y)24 b(index)f(\(see)h(Section)g +(6.7)g([Arra)m(ys],)i(page)e(94\),)i(the)e(`)p Ft(+=)p Fu(')f(op)s(erator)g(can)h(b)s(e)f(used)f(to)i(app)s(end)e(to)i(or)150 -1213 y(add)k(to)i(the)f(v)-5 b(ariable's)30 b(previous)e(v)-5 +2503 y(add)k(to)i(the)f(v)-5 b(ariable's)30 b(previous)e(v)-5 b(alue.)41 b(This)28 b(includes)g(argumen)m(ts)i(to)f(builtin)g -(commands)f(suc)m(h)h(as)150 1323 y Ft(declare)e Fu(that)i(accept)h +(commands)f(suc)m(h)h(as)150 2612 y Ft(declare)e Fu(that)i(accept)h (assignmen)m(t)f(statemen)m(ts)h(\()p Fr(declaration)h Fu(commands\).)40 b(When)28 b(`)p Ft(+=)p Fu(')h(is)f(applied)150 -1433 y(to)d(a)f(v)-5 b(ariable)24 b(for)g(whic)m(h)f(the)h +2722 y(to)d(a)f(v)-5 b(ariable)24 b(for)g(whic)m(h)f(the)h Fr(in)m(teger)32 b Fu(attribute)24 b(has)g(b)s(een)f(set,)j Fr(v)-5 b(alue)29 b Fu(is)24 b(ev)-5 b(aluated)25 b(as)f(an)g -(arithmetic)150 1542 y(expression)30 b(and)f(added)g(to)i(the)f(v)-5 +(arithmetic)150 2832 y(expression)30 b(and)f(added)g(to)i(the)f(v)-5 b(ariable's)30 b(curren)m(t)g(v)-5 b(alue,)31 b(whic)m(h)e(is)h(also)h (ev)-5 b(aluated.)42 b(When)29 b(`)p Ft(+=)p Fu(')h(is)150 -1652 y(applied)25 b(to)h(an)f(arra)m(y)h(v)-5 b(ariable)26 +2941 y(applied)25 b(to)h(an)f(arra)m(y)h(v)-5 b(ariable)26 b(using)f(comp)s(ound)f(assignmen)m(t)i(\(see)g(Section)g(6.7)g([Arra)m -(ys],)h(page)f(91\),)150 1761 y(the)33 b(v)-5 b(ariable's)33 +(ys],)h(page)f(94\),)150 3051 y(the)33 b(v)-5 b(ariable's)33 b(v)-5 b(alue)33 b(is)g(not)g(unset)f(\(as)h(it)g(is)g(when)e(using)i (`)p Ft(=)p Fu('\),)g(and)f(new)g(v)-5 b(alues)33 b(are)g(app)s(ended)e -(to)150 1871 y(the)26 b(arra)m(y)h(b)s(eginning)e(at)i(one)f(greater)h +(to)150 3160 y(the)26 b(arra)m(y)h(b)s(eginning)e(at)i(one)f(greater)h (than)f(the)g(arra)m(y's)h(maxim)m(um)f(index)f(\(for)i(indexed)e(arra) -m(ys\),)j(or)150 1980 y(added)c(as)i(additional)g(k)m(ey-v)-5 +m(ys\),)j(or)150 3270 y(added)c(as)i(additional)g(k)m(ey-v)-5 b(alue)26 b(pairs)f(in)g(an)g(asso)s(ciativ)m(e)j(arra)m(y)-8 b(.)40 b(When)24 b(applied)h(to)h(a)g(string-v)-5 b(alued)150 -2090 y(v)g(ariable,)31 b Fr(v)-5 b(alue)36 b Fu(is)31 +3380 y(v)g(ariable,)31 b Fr(v)-5 b(alue)36 b Fu(is)31 b(expanded)e(and)h(app)s(ended)f(to)i(the)f(v)-5 b(ariable's)32 -b(v)-5 b(alue.)275 2237 y(A)28 b(v)-5 b(ariable)29 b(can)f(b)s(e)f +b(v)-5 b(alue.)275 3513 y(A)28 b(v)-5 b(ariable)29 b(can)f(b)s(e)f (assigned)i(the)f Fr(nameref)45 b Fu(attribute)29 b(using)f(the)g Ft(-n)f Fu(option)i(to)g(the)f Ft(declare)e Fu(or)150 -2347 y Ft(local)f Fu(builtin)h(commands)g(\(see)i(Section)f(4.2)h -([Bash)f(Builtins],)h(page)f(49\))h(to)f(create)i(a)e -Fr(nameref)p Fu(,)g(or)g(a)150 2457 y(reference)f(to)g(another)f(v)-5 +3623 y Ft(local)f Fu(builtin)h(commands)g(\(see)i(Section)f(4.2)h +([Bash)f(Builtins],)h(page)f(50\))h(to)f(create)i(a)e +Fr(nameref)p Fu(,)g(or)g(a)150 3733 y(reference)f(to)g(another)f(v)-5 b(ariable.)40 b(This)24 b(allo)m(ws)j(v)-5 b(ariables)26 b(to)g(b)s(e)e(manipulated)h(indirectly)-8 b(.)40 b(Whenev)m(er)150 -2566 y(the)31 b(nameref)g(v)-5 b(ariable)32 b(is)f(referenced,)g +3842 y(the)31 b(nameref)g(v)-5 b(ariable)32 b(is)f(referenced,)g (assigned)h(to,)g(unset,)f(or)g(has)f(its)i(attributes)f(mo)s(di\014ed) -f(\(other)150 2676 y(than)c(using)g(or)h(c)m(hanging)g(the)g(nameref)f +f(\(other)150 3952 y(than)c(using)g(or)h(c)m(hanging)g(the)g(nameref)f (attribute)i(itself)7 b(\),)29 b(the)d(op)s(eration)h(is)g(actually)h -(p)s(erformed)d(on)150 2785 y(the)31 b(v)-5 b(ariable)31 +(p)s(erformed)d(on)150 4061 y(the)31 b(v)-5 b(ariable)31 b(sp)s(eci\014ed)f(b)m(y)g(the)h(nameref)f(v)-5 b(ariable's)31 b(v)-5 b(alue.)42 b(A)30 b(nameref)g(is)h(commonly)g(used)e(within)150 -2895 y(shell)h(functions)g(to)h(refer)f(to)h(a)f(v)-5 +4171 y(shell)h(functions)g(to)h(refer)f(to)h(a)f(v)-5 b(ariable)31 b(whose)f(name)h(is)f(passed)g(as)g(an)g(argumen)m(t)h(to) -g(the)f(function.)150 3005 y(F)-8 b(or)31 b(instance,)g(if)g(a)g(v)-5 +g(the)f(function.)150 4281 y(F)-8 b(or)31 b(instance,)g(if)g(a)g(v)-5 b(ariable)31 b(name)f(is)h(passed)e(to)j(a)e(shell)h(function)f(as)h -(its)f(\014rst)g(argumen)m(t,)h(running)390 3152 y Ft(declare)46 -b(-n)h(ref=$1)150 3299 y Fu(inside)31 b(the)h(function)f(creates)i(a)g +(its)f(\014rst)g(argumen)m(t,)h(running)390 4415 y Ft(declare)46 +b(-n)h(ref=$1)150 4548 y Fu(inside)31 b(the)h(function)f(creates)i(a)g (nameref)e(v)-5 b(ariable)32 b Fr(ref)49 b Fu(whose)32 b(v)-5 b(alue)32 b(is)g(the)f(v)-5 b(ariable)33 b(name)e(passed)150 -3409 y(as)e(the)h(\014rst)e(argumen)m(t.)41 b(References)30 +4658 y(as)e(the)h(\014rst)e(argumen)m(t.)41 b(References)30 b(and)e(assignmen)m(ts)i(to)g Fr(ref)p Fu(,)f(and)g(c)m(hanges)h(to)g -(its)f(attributes,)i(are)150 3518 y(treated)g(as)f(references,)g +(its)f(attributes,)i(are)150 4768 y(treated)g(as)f(references,)g (assignmen)m(ts,)h(and)e(attribute)i(mo)s(di\014cations)f(to)h(the)f(v) --5 b(ariable)30 b(whose)g(name)150 3628 y(w)m(as)h(passed)f(as)g -Ft($1)p Fu(.)275 3775 y(If)h(the)g(con)m(trol)i(v)-5 +-5 b(ariable)30 b(whose)g(name)150 4877 y(w)m(as)h(passed)f(as)g +Ft($1)p Fu(.)275 5011 y(If)h(the)g(con)m(trol)i(v)-5 b(ariable)32 b(in)g(a)f Ft(for)g Fu(lo)s(op)h(has)f(the)g(nameref)h (attribute,)g(the)g(list)g(of)g(w)m(ords)f(can)h(b)s(e)150 -3885 y(a)h(list)h(of)f(shell)g(v)-5 b(ariables,)34 b(and)e(a)i(name)f +5121 y(a)h(list)h(of)f(shell)g(v)-5 b(ariables,)34 b(and)e(a)i(name)f (reference)g(will)g(b)s(e)f(established)h(for)g(eac)m(h)h(w)m(ord)e(in) -h(the)g(list,)150 3995 y(in)c(turn,)g(when)g(the)h(lo)s(op)g(is)g +h(the)g(list,)150 5230 y(in)c(turn,)g(when)g(the)h(lo)s(op)g(is)g (executed.)41 b(Arra)m(y)30 b(v)-5 b(ariables)30 b(cannot)h(b)s(e)e -(giv)m(en)h(the)g(nameref)g(attribute.)150 4104 y(Ho)m(w)m(ev)m(er,)39 +(giv)m(en)h(the)g(nameref)g(attribute.)150 5340 y(Ho)m(w)m(ev)m(er,)39 b(nameref)d(v)-5 b(ariables)36 b(can)g(reference)g(arra)m(y)g(v)-5 -b(ariables)37 b(and)e(subscripted)f(arra)m(y)i(v)-5 b(ariables.)150 -4214 y(Namerefs)36 b(can)f(b)s(e)g(unset)g(using)g(the)h -Ft(-n)e Fu(option)i(to)g(the)g Ft(unset)e Fu(builtin)h(\(see)h(Section) -g(4.1)h([Bourne)150 4323 y(Shell)43 b(Builtins],)j(page)e(42\).)79 +b(ariables)37 b(and)e(subscripted)f(arra)m(y)i(v)-5 b(ariables.)p +eop end +%%Page: 21 27 +TeXDict begin 21 26 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)150 299 +y(Namerefs)36 b(can)f(b)s(e)g(unset)g(using)g(the)h Ft(-n)e +Fu(option)i(to)g(the)g Ft(unset)e Fu(builtin)h(\(see)h(Section)g(4.1)h +([Bourne)150 408 y(Shell)43 b(Builtins],)j(page)e(43\).)79 b(Otherwise,)45 b(if)e Ft(unset)e Fu(is)i(executed)h(with)e(the)h(name) -g(of)g(a)g(nameref)150 4433 y(v)-5 b(ariable)31 b(as)g(an)f(argumen)m +g(of)g(a)g(nameref)150 518 y(v)-5 b(ariable)31 b(as)g(an)f(argumen)m (t,)h(the)g(v)-5 b(ariable)31 b(referenced)f(b)m(y)g(the)h(nameref)f(v) --5 b(ariable)31 b(will)g(b)s(e)f(unset.)150 4645 y Fk(3.4.1)63 -b(P)m(ositional)41 b(P)m(arameters)150 4792 y Fu(A)28 +-5 b(ariable)31 b(will)g(b)s(e)f(unset.)150 741 y Fk(3.4.1)63 +b(P)m(ositional)41 b(P)m(arameters)150 888 y Fu(A)28 b Fr(p)s(ositional)h(parameter)35 b Fu(is)28 b(a)g(parameter)g(denoted) g(b)m(y)g(one)g(or)g(more)g(digits,)h(other)g(than)e(the)h(single)150 -4902 y(digit)34 b Ft(0)p Fu(.)48 b(P)m(ositional)36 b(parameters)d(are) -g(assigned)h(from)e(the)i(shell's)f(argumen)m(ts)g(when)f(it)i(is)f(in) -m(v)m(ok)m(ed,)150 5011 y(and)38 b(ma)m(y)i(b)s(e)e(reassigned)i(using) -e(the)h Ft(set)g Fu(builtin)f(command.)67 b(P)m(ositional)41 -b(parameter)e Ft(N)g Fu(ma)m(y)h(b)s(e)150 5121 y(referenced)34 +998 y(digit)34 b Ft(0)p Fu(.)48 b(P)m(ositional)36 b(parameters)d(are)g +(assigned)h(from)e(the)i(shell's)f(argumen)m(ts)g(when)f(it)i(is)f(in)m +(v)m(ok)m(ed,)150 1107 y(and)38 b(ma)m(y)i(b)s(e)e(reassigned)i(using)e +(the)h Ft(set)g Fu(builtin)f(command.)67 b(P)m(ositional)41 +b(parameter)e Ft(N)g Fu(ma)m(y)h(b)s(e)150 1217 y(referenced)34 b(as)h Ft(${N})p Fu(,)g(or)f(as)h Ft($N)e Fu(when)h Ft(N)g Fu(consists)h(of)f(a)h(single)g(digit.)54 b(P)m(ositional)37 -b(parameters)d(ma)m(y)150 5230 y(not)j(b)s(e)f(assigned)h(to)g(with)f +b(parameters)d(ma)m(y)150 1327 y(not)j(b)s(e)f(assigned)h(to)g(with)f (assignmen)m(t)i(statemen)m(ts.)61 b(The)36 b Ft(set)g Fu(and)g Ft(shift)f Fu(builtins)h(are)h(used)f(to)150 -5340 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h -(Builtin)g(Commands],)h(page)f(42\).)68 b(The)39 b(p)s(ositional)p -eop end -%%Page: 20 26 -TeXDict begin 20 25 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(20)150 299 -y(parameters)44 b(are)g(temp)s(orarily)g(replaced)h(when)e(a)h(shell)g -(function)g(is)g(executed)g(\(see)h(Section)g(3.3)150 -408 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(17\).)275 -540 y(When)c(a)i(p)s(ositional)g(parameter)g(consisting)f(of)h(more)f +1436 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h +(Builtin)g(Commands],)h(page)f(43\).)68 b(The)39 b(p)s(ositional)150 +1546 y(parameters)44 b(are)g(temp)s(orarily)g(replaced)h(when)e(a)h +(shell)g(function)g(is)g(executed)g(\(see)h(Section)g(3.3)150 +1655 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(17\).)275 +1814 y(When)c(a)i(p)s(ositional)g(parameter)g(consisting)f(of)h(more)f (than)g(a)g(single)h(digit)g(is)f(expanded,)g(it)h(m)m(ust)150 -650 y(b)s(e)h(enclosed)h(in)f(braces.)150 844 y Fk(3.4.2)63 -b(Sp)s(ecial)41 b(P)m(arameters)150 991 y Fu(The)d(shell)g(treats)h +1923 y(b)s(e)h(enclosed)h(in)f(braces.)150 2146 y Fk(3.4.2)63 +b(Sp)s(ecial)41 b(P)m(arameters)150 2293 y Fu(The)d(shell)g(treats)h (sev)m(eral)g(parameters)f(sp)s(ecially)-8 b(.)65 b(These)38 b(parameters)h(ma)m(y)f(only)g(b)s(e)g(referenced;)150 -1101 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)150 -1255 y Ft(*)432 b Fu(\($*\))38 b(Expands)d(to)i(the)f(p)s(ositional)h +2403 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)150 +2598 y Ft(*)432 b Fu(\($*\))38 b(Expands)d(to)i(the)f(p)s(ositional)h (parameters,)h(starting)f(from)f(one.)59 b(When)36 b(the)g(ex-)630 -1365 y(pansion)h(is)h(not)g(within)f(double)g(quotes,)j(eac)m(h)f(p)s -(ositional)f(parameter)g(expands)f(to)i(a)630 1474 y(separate)e(w)m +2708 y(pansion)h(is)h(not)g(within)f(double)g(quotes,)j(eac)m(h)f(p)s +(ositional)f(parameter)g(expands)f(to)i(a)630 2817 y(separate)e(w)m (ord.)56 b(In)35 b(con)m(texts)i(where)e(it)h(is)g(p)s(erformed,)g -(those)g(w)m(ords)f(are)h(sub)5 b(ject)35 b(to)630 1584 +(those)g(w)m(ords)f(are)h(sub)5 b(ject)35 b(to)630 2927 y(further)h(w)m(ord)h(splitting)h(and)f(pathname)g(expansion.)61 -b(When)38 b(the)f(expansion)g(o)s(ccurs)630 1694 y(within)25 +b(When)38 b(the)f(expansion)g(o)s(ccurs)630 3037 y(within)25 b(double)h(quotes,)h(it)f(expands)f(to)i(a)f(single)g(w)m(ord)f(with)h -(the)g(v)-5 b(alue)26 b(of)g(eac)m(h)h(param-)630 1803 +(the)g(v)-5 b(alue)26 b(of)g(eac)m(h)h(param-)630 3146 y(eter)32 b(separated)h(b)m(y)e(the)h(\014rst)f(c)m(haracter)i(of)f (the)g Ft(IFS)f Fu(sp)s(ecial)h(v)-5 b(ariable.)45 b(That)32 -b(is,)g Ft("$*")630 1913 y Fu(is)f(equiv)-5 b(alen)m(t)32 +b(is,)g Ft("$*")630 3256 y Fu(is)f(equiv)-5 b(alen)m(t)32 b(to)g Ft("$1)p Fj(c)p Ft($2)p Fj(c)p Ft(...)m(")p Fu(,)f(where)g Fr(c)37 b Fu(is)31 b(the)g(\014rst)f(c)m(haracter)j(of)e(the)g(v)-5 -b(alue)32 b(of)f(the)630 2022 y Ft(IFS)e Fu(v)-5 b(ariable.)41 +b(alue)32 b(of)f(the)630 3365 y Ft(IFS)e Fu(v)-5 b(ariable.)41 b(If)29 b Ft(IFS)g Fu(is)h(unset,)f(the)h(parameters)g(are)g(separated) -g(b)m(y)g(spaces.)41 b(If)29 b Ft(IFS)g Fu(is)630 2132 +g(b)m(y)g(spaces.)41 b(If)29 b Ft(IFS)g Fu(is)630 3475 y(n)m(ull,)i(the)f(parameters)h(are)g(joined)f(without)g(in)m(terv)m -(ening)i(separators.)150 2286 y Ft(@)432 b Fu(\($@\))35 -b(Expands)e(to)i(the)g(p)s(ositional)g(parameters,)h(starting)f(from)f -(one.)53 b(When)34 b(the)g(ex-)630 2396 y(pansion)41 -b(o)s(ccurs)g(within)f(double)h(quotes,)k(eac)m(h)d(parameter)g -(expands)e(to)i(a)g(separate)630 2506 y(w)m(ord.)50 b(That)34 -b(is,)g Ft("$@")f Fu(is)g(equiv)-5 b(alen)m(t)35 b(to)g -Ft("$1")29 b("$2")g(...)o Fu(.)51 b(If)33 b(the)h(double-quoted)f(ex-) -630 2615 y(pansion)38 b(o)s(ccurs)h(within)f(a)h(w)m(ord,)i(the)e -(expansion)g(of)g(the)g(\014rst)f(parameter)h(is)g(joined)630 -2725 y(with)i(the)h(b)s(eginning)e(part)i(of)f(the)h(original)g(w)m -(ord,)i(and)d(the)h(expansion)f(of)g(the)h(last)630 2834 -y(parameter)31 b(is)f(joined)g(with)f(the)i(last)g(part)e(of)i(the)f -(original)h(w)m(ord.)40 b(When)30 b(there)h(are)f(no)630 -2944 y(p)s(ositional)e(parameters,)h Ft("$@")d Fu(and)h -Ft($@)f Fu(expand)h(to)h(nothing)f(\(i.e.,)j(they)e(are)f(remo)m(v)m -(ed\).)150 3098 y Ft(#)432 b Fu(\($#\))31 b(Expands)e(to)i(the)g(n)m +(ening)i(separators.)150 3658 y Ft(@)432 b Fu(\($@\))43 +b(Expands)f(to)h(the)g(p)s(ositional)g(parameters,)k(starting)c(from)f +(one.)78 b(In)42 b(con)m(texts)630 3768 y(where)35 b(w)m(ord)h +(splitting)g(is)g(p)s(erformed,)g(this)g(expands)e(eac)m(h)j(p)s +(ositional)g(parameter)f(to)630 3877 y(a)d(separate)h(w)m(ord;)g(if)f +(not)g(within)g(double)f(quotes,)j(these)e(w)m(ords)g(are)g(sub)5 +b(ject)33 b(to)g(w)m(ord)630 3987 y(splitting.)60 b(In)36 +b(con)m(texts)j(where)d(w)m(ord)g(splitting)h(is)g(not)g(p)s(erformed,) +g(this)f(expands)g(to)630 4097 y(a)c(single)h(w)m(ord)e(with)h(eac)m(h) +h(p)s(ositional)g(parameter)f(separated)g(b)m(y)g(a)g(space.)46 +b(When)32 b(the)630 4206 y(expansion)i(o)s(ccurs)h(within)e(double)i +(quotes,)h(and)e(w)m(ord)g(splitting)h(is)g(p)s(erformed,)f(eac)m(h)630 +4316 y(parameter)23 b(expands)f(to)i(a)f(separate)h(w)m(ord.)37 +b(That)23 b(is,)i Ft("$@")c Fu(is)i(equiv)-5 b(alen)m(t)24 +b(to)g Ft("$1")29 b("$2")630 4425 y(...)o Fu(.)39 b(If)26 +b(the)g(double-quoted)g(expansion)f(o)s(ccurs)h(within)f(a)h(w)m(ord,)h +(the)f(expansion)g(of)g(the)630 4535 y(\014rst)31 b(parameter)h(is)g +(joined)f(with)g(the)h(b)s(eginning)f(part)h(of)f(the)h(original)h(w)m +(ord,)f(and)f(the)630 4645 y(expansion)25 b(of)g(the)h(last)g +(parameter)f(is)h(joined)f(with)g(the)g(last)h(part)f(of)g(the)h +(original)g(w)m(ord.)630 4754 y(When)i(there)g(are)g(no)g(p)s +(ositional)g(parameters,)h Ft("$@")e Fu(and)g Ft($@)h +Fu(expand)f(to)h(nothing)g(\(i.e.,)630 4864 y(they)j(are)f(remo)m(v)m +(ed\).)150 5047 y Ft(#)432 b Fu(\($#\))31 b(Expands)e(to)i(the)g(n)m (um)m(b)s(er)e(of)h(p)s(ositional)i(parameters)e(in)g(decimal.)150 -3253 y Ft(?)432 b Fu(\($?\))88 b(Expands)45 b(to)h(the)g(exit)h(status) +5230 y Ft(?)432 b Fu(\($?\))88 b(Expands)45 b(to)h(the)g(exit)h(status) f(of)g(the)g(most)h(recen)m(tly)g(executed)g(foreground)630 -3362 y(pip)s(eline.)150 3517 y Ft(-)432 b Fu(\($-,)24 -b(a)e(h)m(yphen.\))37 b(Expands)20 b(to)i(the)f(curren)m(t)h(option)f -(\015ags)h(as)f(sp)s(eci\014ed)g(up)s(on)f(in)m(v)m(o)s(cation,)630 -3626 y(b)m(y)38 b(the)h Ft(set)f Fu(builtin)g(command,)j(or)d(those)i -(set)f(b)m(y)f(the)h(shell)g(itself)g(\(suc)m(h)g(as)g(the)g -Ft(-i)630 3736 y Fu(option\).)150 3890 y Ft($)432 b Fu(\($$\))31 -b(Expands)d(to)j(the)e(pro)s(cess)h Fm(id)f Fu(of)h(the)g(shell.)41 -b(In)28 b(a)i Ft(\(\))f Fu(subshell,)h(it)g(expands)e(to)j(the)630 -4000 y(pro)s(cess)f Fm(id)g Fu(of)h(the)g(in)m(v)m(oking)g(shell,)g -(not)g(the)f(subshell.)150 4154 y Ft(!)432 b Fu(\($!\))51 -b(Expands)32 b(to)i(the)g(pro)s(cess)f Fm(id)h Fu(of)f(the)h(job)f -(most)h(recen)m(tly)h(placed)f(in)m(to)g(the)g(bac)m(k-)630 -4264 y(ground,)26 b(whether)g(executed)g(as)h(an)f(async)m(hronous)f -(command)h(or)g(using)g(the)g Ft(bg)f Fu(builtin)630 -4374 y(\(see)31 b(Section)h(7.2)f([Job)f(Con)m(trol)h(Builtins],)g -(page)h(101\).)150 4528 y Ft(0)432 b Fu(\($0\))46 b(Expands)d(to)i(the) -g(name)g(of)f(the)h(shell)g(or)f(shell)h(script.)83 b(This)44 -b(is)g(set)h(at)h(shell)630 4638 y(initialization.)d(If)27 -b(Bash)h(is)g(in)m(v)m(ok)m(ed)h(with)e(a)i(\014le)e(of)h(commands)g -(\(see)g(Section)h(3.8)g([Shell)630 4747 y(Scripts],)g(page)g(40\),)h -Ft($0)e Fu(is)h(set)g(to)g(the)f(name)h(of)f(that)h(\014le.)41 -b(If)28 b(Bash)g(is)h(started)g(with)f(the)630 4857 y -Ft(-c)i Fu(option)h(\(see)h(Section)g(6.1)f([In)m(v)m(oking)h(Bash],)g -(page)f(82\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the)f(\014rst)630 -4966 y(argumen)m(t)g(after)g(the)g(string)g(to)g(b)s(e)f(executed,)i -(if)f(one)g(is)f(presen)m(t.)42 b(Otherwise,)31 b(it)g(is)f(set)630 -5076 y(to)h(the)g(\014lename)f(used)g(to)h(in)m(v)m(ok)m(e)h(Bash,)f -(as)g(giv)m(en)g(b)m(y)f(argumen)m(t)h(zero.)150 5230 -y Ft(_)432 b Fu(\($)p 716 5230 28 4 v 41 w(,)41 b(an)e(underscore.\))67 -b(A)m(t)40 b(shell)f(startup,)i(set)f(to)g(the)f(absolute)h(pathname)f -(used)f(to)630 5340 y(in)m(v)m(ok)m(e)43 b(the)e(shell)g(or)g(shell)g -(script)g(b)s(eing)f(executed)i(as)f(passed)g(in)f(the)h(en)m(vironmen) -m(t)p eop end -%%Page: 21 27 -TeXDict begin 21 26 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)630 299 -y(or)34 b(argumen)m(t)g(list.)52 b(Subsequen)m(tly)-8 -b(,)34 b(expands)f(to)i(the)f(last)h(argumen)m(t)f(to)g(the)g(previous) -630 408 y(command,)g(after)f(expansion.)48 b(Also)34 -b(set)g(to)f(the)g(full)g(pathname)g(used)f(to)i(in)m(v)m(ok)m(e)h(eac) -m(h)630 518 y(command)29 b(executed)h(and)f(placed)g(in)g(the)h(en)m -(vironmen)m(t)f(exp)s(orted)g(to)h(that)g(command.)630 -628 y(When)g(c)m(hec)m(king)i(mail,)g(this)e(parameter)h(holds)f(the)g -(name)h(of)f(the)h(mail)g(\014le.)150 878 y Fs(3.5)68 -b(Shell)45 b(Expansions)150 1037 y Fu(Expansion)27 b(is)i(p)s(erformed) -d(on)i(the)g(command)g(line)h(after)f(it)h(has)f(b)s(een)f(split)h(in)m -(to)i Ft(token)p Fu(s.)38 b(There)28 b(are)150 1147 y(sev)m(en)j(kinds) -e(of)i(expansion)f(p)s(erformed:)225 1287 y Fq(\017)60 -b Fu(brace)31 b(expansion)225 1425 y Fq(\017)60 b Fu(tilde)31 -b(expansion)225 1562 y Fq(\017)60 b Fu(parameter)31 b(and)f(v)-5 -b(ariable)31 b(expansion)225 1700 y Fq(\017)60 b Fu(command)30 -b(substitution)225 1837 y Fq(\017)60 b Fu(arithmetic)32 -b(expansion)225 1975 y Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 -2112 y Fq(\017)60 b Fu(\014lename)31 b(expansion)275 -2281 y(The)24 b(order)h(of)h(expansions)f(is:)39 b(brace)25 +5340 y(pip)s(eline.)p eop end +%%Page: 22 28 +TeXDict begin 22 27 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(22)150 299 +y Ft(-)432 b Fu(\($-,)24 b(a)e(h)m(yphen.\))37 b(Expands)20 +b(to)i(the)f(curren)m(t)h(option)f(\015ags)h(as)f(sp)s(eci\014ed)g(up)s +(on)f(in)m(v)m(o)s(cation,)630 408 y(b)m(y)38 b(the)h +Ft(set)f Fu(builtin)g(command,)j(or)d(those)i(set)f(b)m(y)f(the)h +(shell)g(itself)g(\(suc)m(h)g(as)g(the)g Ft(-i)630 518 +y Fu(option\).)150 675 y Ft($)432 b Fu(\($$\))31 b(Expands)d(to)j(the)e +(pro)s(cess)h Fm(id)f Fu(of)h(the)g(shell.)41 b(In)28 +b(a)i Ft(\(\))f Fu(subshell,)h(it)g(expands)e(to)j(the)630 +785 y(pro)s(cess)f Fm(id)g Fu(of)h(the)g(in)m(v)m(oking)g(shell,)g(not) +g(the)f(subshell.)150 943 y Ft(!)432 b Fu(\($!\))51 b(Expands)32 +b(to)i(the)g(pro)s(cess)f Fm(id)h Fu(of)f(the)h(job)f(most)h(recen)m +(tly)h(placed)f(in)m(to)g(the)g(bac)m(k-)630 1052 y(ground,)26 +b(whether)g(executed)g(as)h(an)f(async)m(hronous)f(command)h(or)g +(using)g(the)g Ft(bg)f Fu(builtin)630 1162 y(\(see)31 +b(Section)h(7.2)f([Job)f(Con)m(trol)h(Builtins],)g(page)h(104\).)150 +1319 y Ft(0)432 b Fu(\($0\))46 b(Expands)d(to)i(the)g(name)g(of)f(the)h +(shell)g(or)f(shell)h(script.)83 b(This)44 b(is)g(set)h(at)h(shell)630 +1429 y(initialization.)d(If)27 b(Bash)h(is)g(in)m(v)m(ok)m(ed)h(with)e +(a)i(\014le)e(of)h(commands)g(\(see)g(Section)h(3.8)g([Shell)630 +1538 y(Scripts],)g(page)g(41\),)h Ft($0)e Fu(is)h(set)g(to)g(the)f +(name)h(of)f(that)h(\014le.)41 b(If)28 b(Bash)g(is)h(started)g(with)f +(the)630 1648 y Ft(-c)i Fu(option)h(\(see)h(Section)g(6.1)f([In)m(v)m +(oking)h(Bash],)g(page)f(85\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the) +f(\014rst)630 1758 y(argumen)m(t)g(after)g(the)g(string)g(to)g(b)s(e)f +(executed,)i(if)f(one)g(is)f(presen)m(t.)42 b(Otherwise,)31 +b(it)g(is)f(set)630 1867 y(to)h(the)g(\014lename)f(used)g(to)h(in)m(v)m +(ok)m(e)h(Bash,)f(as)g(giv)m(en)g(b)m(y)f(argumen)m(t)h(zero.)150 +2025 y Ft(_)432 b Fu(\($)p 716 2025 28 4 v 41 w(,)41 +b(an)e(underscore.\))67 b(A)m(t)40 b(shell)f(startup,)i(set)f(to)g(the) +f(absolute)h(pathname)f(used)f(to)630 2134 y(in)m(v)m(ok)m(e)43 +b(the)e(shell)g(or)g(shell)g(script)g(b)s(eing)f(executed)i(as)f +(passed)g(in)f(the)h(en)m(vironmen)m(t)630 2244 y(or)34 +b(argumen)m(t)g(list.)52 b(Subsequen)m(tly)-8 b(,)34 +b(expands)f(to)i(the)f(last)h(argumen)m(t)f(to)g(the)g(previous)630 +2353 y(simple)g(command)f(executed)i(in)e(the)h(foreground,)g(after)g +(expansion.)51 b(Also)34 b(set)g(to)h(the)630 2463 y(full)d(pathname)h +(used)f(to)i(in)m(v)m(ok)m(e)g(eac)m(h)g(command)f(executed)g(and)f +(placed)i(in)e(the)h(en)m(vi-)630 2572 y(ronmen)m(t)24 +b(exp)s(orted)g(to)h(that)g(command.)38 b(When)24 b(c)m(hec)m(king)i +(mail,)h(this)d(parameter)g(holds)630 2682 y(the)31 b(name)f(of)h(the)f +(mail)h(\014le.)150 2921 y Fs(3.5)68 b(Shell)45 b(Expansions)150 +3080 y Fu(Expansion)27 b(is)i(p)s(erformed)d(on)i(the)g(command)g(line) +h(after)f(it)h(has)f(b)s(een)f(split)h(in)m(to)i Ft(token)p +Fu(s.)38 b(There)28 b(are)150 3190 y(sev)m(en)j(kinds)e(of)i(expansion) +f(p)s(erformed:)225 3323 y Fq(\017)60 b Fu(brace)31 b(expansion)225 +3457 y Fq(\017)60 b Fu(tilde)31 b(expansion)225 3590 +y Fq(\017)60 b Fu(parameter)31 b(and)f(v)-5 b(ariable)31 +b(expansion)225 3724 y Fq(\017)60 b Fu(command)30 b(substitution)225 +3857 y Fq(\017)60 b Fu(arithmetic)32 b(expansion)225 +3991 y Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 4124 +y Fq(\017)60 b Fu(\014lename)31 b(expansion)275 4282 +y(The)24 b(order)h(of)h(expansions)f(is:)39 b(brace)25 b(expansion;)j(tilde)e(expansion,)g(parameter)g(and)f(v)-5 -b(ariable)26 b(ex-)150 2391 y(pansion,)j(arithmetic)i(expansion,)f(and) +b(ariable)26 b(ex-)150 4391 y(pansion,)j(arithmetic)i(expansion,)f(and) f(command)g(substitution)g(\(done)g(in)h(a)f(left-to-righ)m(t)k -(fashion\);)150 2500 y(w)m(ord)d(splitting;)h(and)f(\014lename)h -(expansion.)275 2641 y(On)42 b(systems)h(that)h(can)g(supp)s(ort)e(it,) +(fashion\);)150 4501 y(w)m(ord)d(splitting;)h(and)f(\014lename)h +(expansion.)275 4635 y(On)42 b(systems)h(that)h(can)g(supp)s(ort)e(it,) 47 b(there)d(is)f(an)h(additional)g(expansion)f(a)m(v)-5 -b(ailable:)69 b Fr(pro)s(cess)150 2750 y(substitution)p +b(ailable:)69 b Fr(pro)s(cess)150 4744 y(substitution)p Fu(.)50 b(This)33 b(is)h(p)s(erformed)e(at)j(the)f(same)g(time)g(as)g (tilde,)i(parameter,)f(v)-5 b(ariable,)35 b(and)f(arith-)150 -2860 y(metic)d(expansion)g(and)e(command)i(substitution.)275 -3001 y(After)f(these)h(expansions)f(are)g(p)s(erformed,)f(quote)i(c)m +4854 y(metic)d(expansion)g(and)e(command)i(substitution.)275 +4987 y(After)f(these)h(expansions)f(are)g(p)s(erformed,)f(quote)i(c)m (haracters)h(presen)m(t)e(in)g(the)g(original)i(w)m(ord)e(are)150 -3110 y(remo)m(v)m(ed)h(unless)f(they)h(ha)m(v)m(e)g(b)s(een)f(quoted)g +5097 y(remo)m(v)m(ed)h(unless)f(they)h(ha)m(v)m(e)g(b)s(een)f(quoted)g (themselv)m(es)i(\()p Fr(quote)f(remo)m(v)-5 b(al)t Fu(\).)275 -3251 y(Only)35 b(brace)i(expansion,)h(w)m(ord)e(splitting,)j(and)d -(\014lename)g(expansion)g(can)h(c)m(hange)h(the)e(n)m(um)m(b)s(er)150 -3360 y(of)h(w)m(ords)f(of)g(the)h(expansion;)i(other)e(expansions)f -(expand)g(a)h(single)g(w)m(ord)f(to)h(a)g(single)g(w)m(ord.)58 -b(The)150 3470 y(only)32 b(exceptions)i(to)f(this)f(are)h(the)f -(expansions)g(of)h Ft("$@")e Fu(\(see)i(Section)g(3.4.2)h([Sp)s(ecial)f -(P)m(arameters],)150 3580 y(page)e(20\))h(and)d Ft("${)p -Fj(name)p Ft([@]}")e Fu(\(see)32 b(Section)f(6.7)g([Arra)m(ys],)h(page) -f(91\).)275 3720 y(After)41 b(all)i(expansions,)h Ft(quote)29 -b(removal)40 b Fu(\(see)i(Section)h(3.5.9)g([Quote)f(Remo)m(v)-5 -b(al],)47 b(page)42 b(32\))h(is)150 3830 y(p)s(erformed.)150 -4035 y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 4182 y -Fu(Brace)32 b(expansion)f(is)f(a)i(mec)m(hanism)f(b)m(y)f(whic)m(h)h -(arbitrary)f(strings)h(ma)m(y)g(b)s(e)f(generated.)43 -b(This)30 b(mec)m(h-)150 4292 y(anism)35 b(is)h(similar)f(to)h -Fr(\014lename)g(expansion)f Fu(\(see)i(Section)f(3.5.8)h([Filename)g -(Expansion],)f(page)g(30\),)150 4401 y(but)26 b(the)h(\014lenames)g -(generated)h(need)f(not)g(exist.)40 b(P)m(atterns)28 -b(to)f(b)s(e)g(brace)g(expanded)f(tak)m(e)i(the)f(form)g(of)150 -4511 y(an)j(optional)h Fr(pream)m(ble)p Fu(,)g(follo)m(w)m(ed)g(b)m(y)f -(either)g(a)h(series)f(of)g(comma-separated)i(strings)d(or)h(a)h -(sequence)150 4620 y(expression)36 b(b)s(et)m(w)m(een)g(a)h(pair)e(of)i -(braces,)g(follo)m(w)m(ed)h(b)m(y)e(an)g(optional)h Fr(p)s(ostscript)p -Fu(.)57 b(The)36 b(pream)m(ble)g(is)150 4730 y(pre\014xed)28 +5230 y(Only)31 b(brace)i(expansion,)h(w)m(ord)e(splitting,)i(and)e +(\014lename)h(expansion)f(can)h(increase)g(the)g(n)m(um)m(b)s(er)150 +5340 y(of)24 b(w)m(ords)g(of)g(the)h(expansion;)h(other)e(expansions)g +(expand)g(a)g(single)h(w)m(ord)f(to)h(a)f(single)h(w)m(ord.)38 +b(The)24 b(only)p eop end +%%Page: 23 29 +TeXDict begin 23 28 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)150 299 +y(exceptions)26 b(to)f(this)g(are)g(the)g(expansions)g(of)g +Ft("$@")f Fu(and)g Ft($*)g Fu(\(see)i(Section)f(3.4.2)i([Sp)s(ecial)e +(P)m(arameters],)150 408 y(page)31 b(21\),)h(and)e Ft("${)p +Fj(name)p Ft([@]}")d Fu(and)i Ft(${)p Fj(name)p Ft([*]})f +Fu(\(see)j(Section)h(6.7)f([Arra)m(ys],)g(page)g(94\).)275 +537 y(After)41 b(all)i(expansions,)h Ft(quote)29 b(removal)40 +b Fu(\(see)i(Section)h(3.5.9)g([Quote)f(Remo)m(v)-5 b(al],)47 +b(page)42 b(34\))h(is)150 647 y(p)s(erformed.)150 834 +y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 981 y Fu(Brace)32 +b(expansion)f(is)f(a)i(mec)m(hanism)f(b)m(y)f(whic)m(h)h(arbitrary)f +(strings)h(ma)m(y)g(b)s(e)f(generated.)43 b(This)30 b(mec)m(h-)150 +1090 y(anism)35 b(is)h(similar)f(to)h Fr(\014lename)g(expansion)f +Fu(\(see)i(Section)f(3.5.8)h([Filename)g(Expansion],)f(page)g(32\),)150 +1200 y(but)26 b(the)h(\014lenames)g(generated)h(need)f(not)g(exist.)40 +b(P)m(atterns)28 b(to)f(b)s(e)g(brace)g(expanded)f(tak)m(e)i(the)f +(form)g(of)150 1310 y(an)j(optional)h Fr(pream)m(ble)p +Fu(,)g(follo)m(w)m(ed)g(b)m(y)f(either)g(a)h(series)f(of)g +(comma-separated)i(strings)d(or)h(a)h(sequence)150 1419 +y(expression)36 b(b)s(et)m(w)m(een)g(a)h(pair)e(of)i(braces,)g(follo)m +(w)m(ed)h(b)m(y)e(an)g(optional)h Fr(p)s(ostscript)p +Fu(.)57 b(The)36 b(pream)m(ble)g(is)150 1529 y(pre\014xed)28 b(to)h(eac)m(h)h(string)f(con)m(tained)h(within)e(the)h(braces,)g(and)g (the)g(p)s(ostscript)f(is)h(then)f(app)s(ended)f(to)150 -4840 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ) -m(t.)275 4980 y(Brace)37 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)59 +1638 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ) +m(t.)275 1767 y(Brace)37 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)59 b(The)36 b(results)g(of)h(eac)m(h)g(expanded)f(string)g(are)h(not)g -(sorted;)150 5090 y(left)31 b(to)g(righ)m(t)g(order)f(is)g(preserv)m -(ed.)41 b(F)-8 b(or)31 b(example,)390 5230 y Ft(bash$)46 -b(echo)h(a{d,c,b}e)390 5340 y(ade)g(ace)g(abe)p eop end -%%Page: 22 28 -TeXDict begin 22 27 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(22)275 299 -y(A)23 b(sequence)g(expression)g(tak)m(es)i(the)e(form)g +(sorted;)150 1876 y(left)31 b(to)g(righ)m(t)g(order)f(is)g(preserv)m +(ed.)41 b(F)-8 b(or)31 b(example,)390 2005 y Ft(bash$)46 +b(echo)h(a{d,c,b}e)390 2115 y(ade)g(ace)g(abe)275 2243 +y Fu(A)23 b(sequence)g(expression)g(tak)m(es)i(the)e(form)g Ft({)p Fj(x)p Ft(..)p Fj(y)p Ft([..)p Fj(incr)p Ft(]})p Fu(,)e(where)i Fr(x)29 b Fu(and)23 b Fr(y)30 b Fu(are)24 -b(either)g(in)m(tegers)150 408 y(or)42 b(single)h(c)m(haracters,)48 +b(either)g(in)m(tegers)150 2353 y(or)42 b(single)h(c)m(haracters,)48 b(and)41 b Fr(incr)p Fu(,)46 b(an)c(optional)i(incremen)m(t,)i(is)c(an) -h(in)m(teger.)78 b(When)42 b(in)m(tegers)i(are)150 518 +h(in)m(teger.)78 b(When)42 b(in)m(tegers)i(are)150 2462 y(supplied,)f(the)f(expression)f(expands)f(to)i(eac)m(h)h(n)m(um)m(b)s (er)d(b)s(et)m(w)m(een)i Fr(x)47 b Fu(and)41 b Fr(y)p -Fu(,)j(inclusiv)m(e.)75 b(Supplied)150 628 y(in)m(tegers)33 +Fu(,)j(inclusiv)m(e.)75 b(Supplied)150 2572 y(in)m(tegers)33 b(ma)m(y)e(b)s(e)g(pre\014xed)f(with)h(`)p Ft(0)p Fu(')h(to)g(force)g (eac)m(h)g(term)g(to)g(ha)m(v)m(e)g(the)g(same)g(width.)42 -b(When)31 b(either)150 737 y Fr(x)43 b Fu(or)36 b Fr(y)44 +b(When)31 b(either)150 2681 y Fr(x)43 b Fu(or)36 b Fr(y)44 b Fu(b)s(egins)36 b(with)g(a)h(zero,)i(the)e(shell)g(attempts)g(to)g (force)g(all)h(generated)f(terms)g(to)g(con)m(tain)h(the)150 -847 y(same)e(n)m(um)m(b)s(er)e(of)i(digits,)i(zero-padding)d(where)h +2791 y(same)e(n)m(um)m(b)s(er)e(of)i(digits,)i(zero-padding)d(where)h (necessary)-8 b(.)57 b(When)35 b(c)m(haracters)i(are)f(supplied,)g(the) -150 956 y(expression)24 b(expands)g(to)h(eac)m(h)h(c)m(haracter)g +150 2901 y(expression)24 b(expands)g(to)h(eac)m(h)h(c)m(haracter)g (lexicographically)h(b)s(et)m(w)m(een)e Fr(x)30 b Fu(and)24 -b Fr(y)p Fu(,)i(inclusiv)m(e,)h(using)d(the)150 1066 +b Fr(y)p Fu(,)i(inclusiv)m(e,)h(using)d(the)150 3010 y(default)32 b(C)g(lo)s(cale.)48 b(Note)34 b(that)f(b)s(oth)e Fr(x)39 b Fu(and)31 b Fr(y)40 b Fu(m)m(ust)32 b(b)s(e)g(of)g(the)h (same)f(t)m(yp)s(e.)47 b(When)32 b(the)g(incremen)m(t)150 -1176 y(is)d(supplied,)g(it)h(is)f(used)f(as)i(the)f(di\013erence)h(b)s +3120 y(is)d(supplied,)g(it)h(is)f(used)f(as)i(the)f(di\013erence)h(b)s (et)m(w)m(een)g(eac)m(h)g(term.)41 b(The)29 b(default)g(incremen)m(t)h -(is)f(1)h(or)f(-1)150 1285 y(as)i(appropriate.)275 1425 +(is)f(1)h(or)f(-1)150 3229 y(as)i(appropriate.)275 3358 y(Brace)36 b(expansion)g(is)f(p)s(erformed)f(b)s(efore)h(an)m(y)h (other)g(expansions,)h(and)e(an)m(y)g(c)m(haracters)i(sp)s(ecial)150 -1535 y(to)32 b(other)g(expansions)g(are)g(preserv)m(ed)f(in)h(the)f +3467 y(to)32 b(other)g(expansions)g(are)g(preserv)m(ed)f(in)h(the)f (result.)45 b(It)32 b(is)g(strictly)g(textual.)46 b(Bash)32 -b(do)s(es)f(not)h(apply)150 1645 y(an)m(y)27 b(syn)m(tactic)i(in)m +b(do)s(es)f(not)h(apply)150 3577 y(an)m(y)27 b(syn)m(tactic)i(in)m (terpretation)g(to)f(the)f(con)m(text)i(of)e(the)g(expansion)g(or)g -(the)h(text)g(b)s(et)m(w)m(een)f(the)h(braces.)150 1754 -y(T)-8 b(o)37 b(a)m(v)m(oid)g(con\015icts)g(with)f(parameter)h -(expansion,)g(the)g(string)f(`)p Ft(${)p Fu(')g(is)g(not)g(considered)g -(eligible)i(for)150 1864 y(brace)31 b(expansion.)275 -2004 y(A)e(correctly-formed)i(brace)f(expansion)f(m)m(ust)h(con)m(tain) -h(unquoted)e(op)s(ening)g(and)g(closing)i(braces,)150 -2113 y(and)h(at)i(least)g(one)f(unquoted)g(comma)g(or)g(a)h(v)-5 +(the)h(text)g(b)s(et)m(w)m(een)f(the)h(braces.)275 3706 +y(A)h(correctly-formed)i(brace)f(expansion)f(m)m(ust)h(con)m(tain)h +(unquoted)e(op)s(ening)g(and)g(closing)i(braces,)150 +3815 y(and)h(at)i(least)g(one)f(unquoted)g(comma)g(or)g(a)h(v)-5 b(alid)33 b(sequence)g(expression.)48 b(An)m(y)33 b(incorrectly)h -(formed)150 2223 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275 -2363 y(A)25 b Fi({)h Fu(or)f(`)p Ft(,)p Fu(')g(ma)m(y)h(b)s(e)f(quoted) +(formed)150 3925 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275 +4053 y(A)25 b Fi({)h Fu(or)f(`)p Ft(,)p Fu(')g(ma)m(y)h(b)s(e)f(quoted) h(with)f(a)g(bac)m(kslash)h(to)g(prev)m(en)m(t)g(its)g(b)s(eing)f -(considered)g(part)g(of)h(a)g(brace)150 2473 y(expression.)51 +(considered)g(part)g(of)h(a)g(brace)150 4163 y(expression.)51 b(T)-8 b(o)34 b(a)m(v)m(oid)i(con\015icts)e(with)g(parameter)g (expansion,)h(the)f(string)g(`)p Ft(${)p Fu(')g(is)g(not)g(considered) -150 2582 y(eligible)e(for)e(brace)h(expansion.)275 2723 -y(This)f(construct)h(is)g(t)m(ypically)i(used)d(as)h(shorthand)f(when)g -(the)h(common)g(pre\014x)f(of)h(the)g(strings)g(to)150 -2832 y(b)s(e)f(generated)h(is)g(longer)g(than)f(in)g(the)g(ab)s(o)m(v)m -(e)i(example:)390 2972 y Ft(mkdir)46 b(/usr/local/src/bash/{old,n)o -(ew,)o(dist)o(,bug)o(s})275 3112 y Fu(or)390 3253 y Ft(chown)g(root)h +150 4272 y(eligible)e(for)e(brace)h(expansion,)f(and)g(inhibits)g +(brace)h(expansion)f(un)m(til)g(the)h(closing)h(`)p Ft(})p +Fu('..)275 4401 y(This)e(construct)h(is)g(t)m(ypically)i(used)d(as)h +(shorthand)f(when)g(the)h(common)g(pre\014x)f(of)h(the)g(strings)g(to) +150 4511 y(b)s(e)f(generated)h(is)g(longer)g(than)f(in)g(the)g(ab)s(o)m +(v)m(e)i(example:)390 4639 y Ft(mkdir)46 b(/usr/local/src/bash/{old,n)o +(ew,)o(dist)o(,bug)o(s})275 4768 y Fu(or)390 4896 y Ft(chown)g(root)h (/usr/{ucb/{ex,edit},lib/)o({ex?)o(.?*,)o(how)o(_ex})o(})150 -3457 y Fk(3.5.2)63 b(Tilde)41 b(Expansion)150 3604 y +5083 y Fk(3.5.2)63 b(Tilde)41 b(Expansion)150 5230 y Fu(If)29 b(a)h(w)m(ord)g(b)s(egins)f(with)g(an)h(unquoted)f(tilde)h(c)m (haracter)h(\(`)p Ft(~)p Fu('\),)g(all)g(of)f(the)g(c)m(haracters)h(up) -d(to)j(the)f(\014rst)150 3714 y(unquoted)24 b(slash)g(\(or)h(all)h(c)m +d(to)j(the)f(\014rst)150 5340 y(unquoted)24 b(slash)g(\(or)h(all)h(c)m (haracters,)h(if)e(there)g(is)f(no)h(unquoted)e(slash\))i(are)g -(considered)g(a)g Fr(tilde-pre\014x)p Fu(.)150 3824 y(If)38 -b(none)g(of)g(the)h(c)m(haracters)g(in)f(the)h(tilde-pre\014x)f(are)h -(quoted,)h(the)f(c)m(haracters)h(in)d(the)i(tilde-pre\014x)150 -3933 y(follo)m(wing)28 b(the)g(tilde)f(are)h(treated)g(as)f(a)g(p)s +(considered)g(a)g Fr(tilde-pre\014x)p Fu(.)p eop end +%%Page: 24 30 +TeXDict begin 24 29 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(24)150 299 +y(If)38 b(none)g(of)g(the)h(c)m(haracters)g(in)f(the)h(tilde-pre\014x)f +(are)h(quoted,)h(the)f(c)m(haracters)h(in)d(the)i(tilde-pre\014x)150 +408 y(follo)m(wing)28 b(the)g(tilde)f(are)h(treated)g(as)f(a)g(p)s (ossible)g Fr(login)h(name)p Fu(.)39 b(If)27 b(this)g(login)h(name)f -(is)g(the)g(n)m(ull)g(string,)150 4043 y(the)35 b(tilde)g(is)g -(replaced)g(with)f(the)h(v)-5 b(alue)35 b(of)g(the)g -Ft(HOME)e Fu(shell)i(v)-5 b(ariable.)54 b(If)34 b Ft(HOME)g -Fu(is)h(unset,)g(the)g(home)150 4152 y(directory)e(of)g(the)f(user)g -(executing)i(the)e(shell)h(is)f(substituted)g(instead.)47 -b(Otherwise,)33 b(the)g(tilde-pre\014x)150 4262 y(is)d(replaced)h(with) -f(the)h(home)f(directory)h(asso)s(ciated)h(with)e(the)h(sp)s(eci\014ed) -e(login)j(name.)275 4402 y(If)g(the)h(tilde-pre\014x)f(is)h(`)p +(is)g(the)g(n)m(ull)g(string,)150 518 y(the)35 b(tilde)g(is)g(replaced) +g(with)f(the)h(v)-5 b(alue)35 b(of)g(the)g Ft(HOME)e +Fu(shell)i(v)-5 b(ariable.)54 b(If)34 b Ft(HOME)g Fu(is)h(unset,)g(the) +g(home)150 628 y(directory)e(of)g(the)f(user)g(executing)i(the)e(shell) +h(is)f(substituted)g(instead.)47 b(Otherwise,)33 b(the)g +(tilde-pre\014x)150 737 y(is)d(replaced)h(with)f(the)h(home)f +(directory)h(asso)s(ciated)h(with)e(the)h(sp)s(eci\014ed)e(login)j +(name.)275 874 y(If)g(the)h(tilde-pre\014x)f(is)h(`)p Ft(~+)p Fu(',)g(the)g(v)-5 b(alue)33 b(of)g(the)g(shell)g(v)-5 b(ariable)34 b Ft(PWD)d Fu(replaces)j(the)f(tilde-pre\014x.)47 -b(If)150 4512 y(the)31 b(tilde-pre\014x)f(is)g(`)p Ft(~-)p +b(If)150 984 y(the)31 b(tilde-pre\014x)f(is)g(`)p Ft(~-)p Fu(',)h(the)f(v)-5 b(alue)31 b(of)g(the)f(shell)h(v)-5 b(ariable)31 b Ft(OLDPWD)p Fu(,)e(if)h(it)h(is)g(set,)g(is)f -(substituted.)275 4652 y(If)f(the)h(c)m(haracters)h(follo)m(wing)h(the) +(substituted.)275 1121 y(If)f(the)h(c)m(haracters)h(follo)m(wing)h(the) e(tilde)g(in)g(the)g(tilde-pre\014x)g(consist)g(of)g(a)h(n)m(um)m(b)s -(er)d Fr(N)p Fu(,)j(optionally)150 4761 y(pre\014xed)22 +(er)d Fr(N)p Fu(,)j(optionally)150 1230 y(pre\014xed)22 b(b)m(y)h(a)h(`)p Ft(+)p Fu(')f(or)h(a)f(`)p Ft(-)p Fu(',)j(the)d (tilde-pre\014x)g(is)h(replaced)f(with)g(the)h(corresp)s(onding)e -(elemen)m(t)j(from)e(the)150 4871 y(directory)36 b(stac)m(k,)i(as)e(it) +(elemen)m(t)j(from)e(the)150 1340 y(directory)36 b(stac)m(k,)i(as)e(it) g(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m(y)g(the)f Ft(dirs)g Fu(builtin)g(in)m(v)m(ok)m(ed)i(with)e(the)g(c)m(haracters) -150 4981 y(follo)m(wing)40 b(tilde)f(in)g(the)f(tilde-pre\014x)h(as)g +150 1450 y(follo)m(wing)40 b(tilde)f(in)g(the)f(tilde-pre\014x)h(as)g (an)f(argumen)m(t)h(\(see)h(Section)f(6.8)h([The)e(Directory)i(Stac)m -(k],)150 5090 y(page)c(93\).)57 b(If)35 b(the)g(tilde-pre\014x,)i(sans) +(k],)150 1559 y(page)c(96\).)57 b(If)35 b(the)g(tilde-pre\014x,)i(sans) e(the)h(tilde,)h(consists)f(of)g(a)f(n)m(um)m(b)s(er)f(without)i(a)f -(leading)h(`)p Ft(+)p Fu(')g(or)150 5200 y(`)p Ft(-)p -Fu(',)31 b(`)p Ft(+)p Fu(')f(is)h(assumed.)275 5340 y(If)e(the)i(login) +(leading)h(`)p Ft(+)p Fu(')g(or)150 1669 y(`)p Ft(-)p +Fu(',)31 b(`)p Ft(+)p Fu(')f(is)h(assumed.)275 1806 y(If)e(the)i(login) g(name)g(is)f(in)m(v)-5 b(alid,)31 b(or)g(the)f(tilde)h(expansion)f -(fails,)i(the)e(w)m(ord)g(is)h(left)g(unc)m(hanged.)p -eop end -%%Page: 23 29 -TeXDict begin 23 28 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)275 299 -y(Eac)m(h)38 b(v)-5 b(ariable)38 b(assignmen)m(t)h(is)e(c)m(hec)m(k)m -(ed)j(for)d(unquoted)g(tilde-pre\014xes)h(immediately)g(follo)m(wing) -150 408 y(a)d(`)p Ft(:)p Fu(')g(or)g(the)g(\014rst)f(`)p +(fails,)i(the)e(w)m(ord)g(is)h(left)g(unc)m(hanged.)275 +1943 y(Eac)m(h)38 b(v)-5 b(ariable)38 b(assignmen)m(t)h(is)e(c)m(hec)m +(k)m(ed)j(for)d(unquoted)g(tilde-pre\014xes)h(immediately)g(follo)m +(wing)150 2052 y(a)d(`)p Ft(:)p Fu(')g(or)g(the)g(\014rst)f(`)p Ft(=)p Fu('.)54 b(In)34 b(these)h(cases,)i(tilde)e(expansion)g(is)g (also)h(p)s(erformed.)52 b(Consequen)m(tly)-8 b(,)37 -b(one)150 518 y(ma)m(y)29 b(use)e(\014lenames)h(with)g(tildes)g(in)g +b(one)150 2162 y(ma)m(y)29 b(use)e(\014lenames)h(with)g(tildes)g(in)g (assignmen)m(ts)g(to)h Ft(PATH)p Fu(,)f Ft(MAILPATH)p Fu(,)e(and)h Ft(CDPATH)p Fu(,)g(and)h(the)g(shell)150 -628 y(assigns)j(the)f(expanded)g(v)-5 b(alue.)275 761 +2271 y(assigns)j(the)f(expanded)g(v)-5 b(alue.)275 2408 y(The)29 b(follo)m(wing)j(table)g(sho)m(ws)e(ho)m(w)g(Bash)h(treats)g -(unquoted)e(tilde-pre\014xes:)150 919 y Ft(~)432 b Fu(The)30 -b(v)-5 b(alue)31 b(of)f Ft($HOME)150 1077 y(~/foo)240 -b($HOME/foo)150 1235 y(~fred/foo)630 1345 y Fu(The)30 +(unquoted)e(tilde-pre\014xes:)150 2572 y Ft(~)432 b Fu(The)30 +b(v)-5 b(alue)31 b(of)f Ft($HOME)150 2733 y(~/foo)240 +b($HOME/foo)150 2895 y(~fred/foo)630 3005 y Fu(The)30 b(sub)s(directory)f Ft(foo)h Fu(of)g(the)h(home)f(directory)h(of)g(the) -f(user)g Ft(fred)150 1503 y(~+/foo)192 b($PWD/foo)150 -1661 y(~-/foo)g(${OLDPWD-'~-'}/foo)150 1819 y(~)p Fj(N)384 +f(user)g Ft(fred)150 3167 y(~+/foo)192 b($PWD/foo)150 +3329 y(~-/foo)g(${OLDPWD-'~-'}/foo)150 3491 y(~)p Fj(N)384 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m -(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 1977 y Ft(~+)p +(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 3653 y Ft(~+)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m -(ed)h(b)m(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 2135 +(ed)h(b)m(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 3814 y Ft(~-)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g -(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(-)p Fj(N)p Fu(')150 -2332 y Fk(3.5.3)63 b(Shell)41 b(P)m(arameter)f(Expansion)150 -2479 y Fu(The)g(`)p Ft($)p Fu(')h(c)m(haracter)i(in)m(tro)s(duces)d -(parameter)h(expansion,)j(command)d(substitution,)i(or)e(arithmetic)150 -2589 y(expansion.)d(The)22 b(parameter)h(name)f(or)g(sym)m(b)s(ol)h(to) -g(b)s(e)e(expanded)h(ma)m(y)h(b)s(e)f(enclosed)h(in)f(braces,)i(whic)m -(h)150 2699 y(are)31 b(optional)g(but)f(serv)m(e)h(to)h(protect)f(the)g -(v)-5 b(ariable)31 b(to)g(b)s(e)f(expanded)g(from)g(c)m(haracters)i -(immediately)150 2808 y(follo)m(wing)g(it)f(whic)m(h)f(could)g(b)s(e)g -(in)m(terpreted)h(as)f(part)h(of)f(the)h(name.)275 2942 -y(When)44 b(braces)i(are)f(used,)j(the)e(matc)m(hing)g(ending)f(brace)g -(is)g(the)g(\014rst)g(`)p Ft(})p Fu(')g(not)g(escap)s(ed)h(b)m(y)f(a) -150 3051 y(bac)m(kslash)40 b(or)f(within)g(a)g(quoted)g(string,)j(and)c -(not)i(within)e(an)h(em)m(b)s(edded)f(arithmetic)j(expansion,)150 -3161 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)275 -3295 y(The)40 b(basic)i(form)f(of)g(parameter)h(expansion)f(is)h($)p +(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(-)p Fj(N)p Fu(')275 +3978 y(Bash)40 b(also)h(p)s(erforms)e(tilde)h(expansion)g(on)h(w)m +(ords)e(satisfying)i(the)f(conditions)h(of)f(v)-5 b(ariable)41 +b(as-)150 4087 y(signmen)m(ts)f(\(see)h(Section)g(3.4)g([Shell)f(P)m +(arameters],)k(page)d(19\))g(when)e(they)h(app)s(ear)f(as)i(argumen)m +(ts)150 4197 y(to)c(simple)f(commands.)57 b(Bash)36 b(do)s(es)f(not)h +(do)g(this,)i(except)f(for)e(the)h Fr(declaration)i Fu(commands)d +(listed)150 4306 y(ab)s(o)m(v)m(e,)d(when)d(in)h Fm(posix)g +Fu(mo)s(de.)150 4508 y Fk(3.5.3)63 b(Shell)41 b(P)m(arameter)f +(Expansion)150 4655 y Fu(The)g(`)p Ft($)p Fu(')h(c)m(haracter)i(in)m +(tro)s(duces)d(parameter)h(expansion,)j(command)d(substitution,)i(or)e +(arithmetic)150 4765 y(expansion.)d(The)22 b(parameter)h(name)f(or)g +(sym)m(b)s(ol)h(to)g(b)s(e)e(expanded)h(ma)m(y)h(b)s(e)f(enclosed)h(in) +f(braces,)i(whic)m(h)150 4874 y(are)31 b(optional)g(but)f(serv)m(e)h +(to)h(protect)f(the)g(v)-5 b(ariable)31 b(to)g(b)s(e)f(expanded)g(from) +g(c)m(haracters)i(immediately)150 4984 y(follo)m(wing)g(it)f(whic)m(h)f +(could)g(b)s(e)g(in)m(terpreted)h(as)f(part)h(of)f(the)h(name.)275 +5121 y(When)44 b(braces)i(are)f(used,)j(the)e(matc)m(hing)g(ending)f +(brace)g(is)g(the)g(\014rst)g(`)p Ft(})p Fu(')g(not)g(escap)s(ed)h(b)m +(y)f(a)150 5230 y(bac)m(kslash)40 b(or)f(within)g(a)g(quoted)g(string,) +j(and)c(not)i(within)e(an)h(em)m(b)s(edded)f(arithmetic)j(expansion,) +150 5340 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)p +eop end +%%Page: 25 31 +TeXDict begin 25 30 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)275 299 +y(The)40 b(basic)i(form)f(of)g(parameter)h(expansion)f(is)h($)p Fi({)p Fr(parameter)7 b Fi(})p Fu(.)74 b(The)41 b(v)-5 -b(alue)42 b(of)g Fr(parameter)48 b Fu(is)150 3404 y(substituted.)43 +b(alue)42 b(of)g Fr(parameter)48 b Fu(is)150 408 y(substituted.)43 b(The)31 b Fr(parameter)39 b Fu(is)31 b(a)h(shell)f(parameter)h(as)g (describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)g(3.4)h([Shell)150 -3514 y(P)m(arameters],)e(page)f(18\))h(or)e(an)g(arra)m(y)h(reference)f -(\(see)i(Section)f(6.7)g([Arra)m(ys],)g(page)g(91\).)42 -b(The)29 b(braces)150 3624 y(are)j(required)g(when)f -Fr(parameter)39 b Fu(is)32 b(a)h(p)s(ositional)f(parameter)h(with)f -(more)g(than)g(one)g(digit,)i(or)e(when)150 3733 y Fr(parameter)37 -b Fu(is)31 b(follo)m(w)m(ed)h(b)m(y)e(a)h(c)m(haracter)h(that)f(is)f -(not)h(to)g(b)s(e)f(in)m(terpreted)g(as)h(part)f(of)h(its)f(name.)275 -3867 y(If)k(the)h(\014rst)f(c)m(haracter)i(of)f Fr(parameter)42 +518 y(P)m(arameters],)e(page)f(19\))h(or)e(an)g(arra)m(y)h(reference)f +(\(see)i(Section)f(6.7)g([Arra)m(ys],)g(page)g(94\).)42 +b(The)29 b(braces)150 628 y(are)j(required)g(when)f Fr(parameter)39 +b Fu(is)32 b(a)h(p)s(ositional)f(parameter)h(with)f(more)g(than)g(one)g +(digit,)i(or)e(when)150 737 y Fr(parameter)37 b Fu(is)31 +b(follo)m(w)m(ed)h(b)m(y)e(a)h(c)m(haracter)h(that)f(is)f(not)h(to)g(b) +s(e)f(in)m(terpreted)g(as)h(part)f(of)h(its)f(name.)275 +885 y(If)k(the)h(\014rst)f(c)m(haracter)i(of)f Fr(parameter)42 b Fu(is)35 b(an)g(exclamation)i(p)s(oin)m(t)e(\(!\),)i(and)d -Fr(parameter)42 b Fu(is)34 b(not)i(a)150 3977 y Fr(nameref)p -Fu(,)i(it)f(in)m(tro)s(duces)f(a)h(lev)m(el)h(of)f(v)-5 -b(ariable)37 b(indirection.)59 b(Bash)37 b(uses)f(the)g(v)-5 -b(alue)37 b(of)g(the)f(v)-5 b(ariable)150 4086 y(formed)22 -b(from)f(the)h(rest)h(of)f Fr(parameter)29 b Fu(as)22 -b(the)g(name)h(of)f(the)g(v)-5 b(ariable;)26 b(this)c(v)-5 -b(ariable)23 b(is)f(then)g(expanded)150 4196 y(and)34 -b(that)h(v)-5 b(alue)35 b(is)g(used)f(in)g(the)h(rest)g(of)g(the)g -(substitution,)g(rather)g(than)f(the)h(v)-5 b(alue)35 -b(of)g Fr(parameter)150 4305 y Fu(itself.)52 b(This)33 -b(is)g(kno)m(wn)h(as)g Ft(indirect)28 b(expansion)p Fu(.)48 -b(If)33 b Fr(parameter)41 b Fu(is)34 b(a)g(nameref,)h(this)e(expands)g -(to)150 4415 y(the)d(name)g(of)g(the)h(v)-5 b(ariable)30 -b(referenced)g(b)m(y)g Fr(parameter)37 b Fu(instead)31 -b(of)f(p)s(erforming)f(the)h(complete)h(indi-)150 4524 -y(rect)i(expansion.)46 b(The)32 b(exceptions)i(to)f(this)f(are)h(the)f -(expansions)g(of)h($)p Fi({)p Fu(!)p Fr(pre\014x)6 b -Fu(*)p Fi(})33 b Fu(and)f($)p Fi({)p Fu(!)p Fr(name)5 -b Fu([@])p Fi(})150 4634 y Fu(describ)s(ed)28 b(b)s(elo)m(w.)41 +Fr(parameter)42 b Fu(is)34 b(not)i(a)150 995 y Fr(nameref)p +Fu(,)c(it)f(in)m(tro)s(duces)h(a)f(lev)m(el)i(of)f(indirection.)44 +b(Bash)31 b(uses)g(the)g(v)-5 b(alue)32 b(formed)f(b)m(y)g(expanding)g +(the)150 1104 y(rest)c(of)f Fr(parameter)33 b Fu(as)27 +b(the)g(new)f Fr(parameter)7 b Fu(;)28 b(this)e(is)g(then)g(expanded)g +(and)g(that)h(v)-5 b(alue)27 b(is)f(used)g(in)g(the)150 +1214 y(rest)33 b(of)f(the)h(expansion,)g(rather)g(than)f(the)h +(expansion)f(of)h(the)g(original)g Fr(parameter)p Fu(.)48 +b(This)32 b(is)g(kno)m(wn)150 1324 y(as)42 b Ft(indirect)28 +b(expansion)p Fu(.)71 b(The)41 b(v)-5 b(alue)41 b(is)h(sub)5 +b(ject)41 b(to)h(tilde)g(expansion,)i(parameter)e(expansion,)150 +1433 y(command)31 b(substitution,)g(and)g(arithmetic)h(expansion.)43 +b(If)31 b Fr(parameter)38 b Fu(is)32 b(a)f(nameref,)h(this)f(expands) +150 1543 y(to)d(the)g(name)g(of)f(the)h(v)-5 b(ariable)28 +b(referenced)g(b)m(y)f Fr(parameter)35 b Fu(instead)27 +b(of)h(p)s(erforming)e(the)i(complete)h(in-)150 1652 +y(direct)e(expansion.)39 b(The)25 b(exceptions)i(to)g(this)f(are)h(the) +f(expansions)g(of)g($)p Fi({)p Fu(!)p Fr(pre\014x)6 b +Fu(*)p Fi(})28 b Fu(and)d($)p Fi({)p Fu(!)p Fr(name)5 +b Fu([@])p Fi(})150 1762 y Fu(describ)s(ed)28 b(b)s(elo)m(w.)41 b(The)28 b(exclamation)j(p)s(oin)m(t)f(m)m(ust)f(immediately)h(follo)m -(w)g(the)g(left)f(brace)h(in)f(order)f(to)150 4744 y(in)m(tro)s(duce)i -(indirection.)275 4877 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m +(w)g(the)g(left)f(brace)h(in)f(order)f(to)150 1872 y(in)m(tro)s(duce)i +(indirection.)275 2019 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m (w,)i Fr(w)m(ord)h Fu(is)c(sub)5 b(ject)40 b(to)h(tilde)f(expansion,)j -(parameter)e(expansion,)150 4987 y(command)30 b(substitution,)g(and)g -(arithmetic)i(expansion.)275 5121 y(When)h(not)h(p)s(erforming)e +(parameter)e(expansion,)150 2129 y(command)30 b(substitution,)g(and)g +(arithmetic)i(expansion.)275 2277 y(When)h(not)h(p)s(erforming)e (substring)h(expansion,)h(using)g(the)f(form)h(describ)s(ed)e(b)s(elo)m -(w)i(\(e.g.,)i(`)p Ft(:-)p Fu('\),)150 5230 y(Bash)d(tests)h(for)e(a)i +(w)i(\(e.g.,)i(`)p Ft(:-)p Fu('\),)150 2387 y(Bash)d(tests)h(for)e(a)i (parameter)f(that)h(is)e(unset)h(or)g(n)m(ull.)48 b(Omitting)33 -b(the)h(colon)f(results)g(in)g(a)g(test)h(only)150 5340 +b(the)h(colon)f(results)g(in)g(a)g(test)h(only)150 2496 y(for)c(a)i(parameter)f(that)g(is)g(unset.)41 b(Put)31 b(another)f(w)m(a)m(y)-8 b(,)33 b(if)e(the)f(colon)i(is)f(included,)f -(the)h(op)s(erator)g(tests)p eop end -%%Page: 24 30 -TeXDict begin 24 29 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(24)150 299 -y(for)36 b(b)s(oth)g Fr(parameter)7 b Fu('s)37 b(existence)h(and)e -(that)i(its)f(v)-5 b(alue)37 b(is)g(not)f(n)m(ull;)k(if)d(the)g(colon)h -(is)e(omitted,)k(the)150 408 y(op)s(erator)31 b(tests)g(only)f(for)g -(existence.)150 569 y Ft(${)p Fj(parameter)p Ft(:)p Fq(\000)p -Fj(word)p Ft(})630 679 y Fu(If)g Fr(parameter)37 b Fu(is)30 -b(unset)g(or)h(n)m(ull,)f(the)h(expansion)f(of)g Fr(w)m(ord)k -Fu(is)c(substituted.)40 b(Otherwise,)630 788 y(the)31 -b(v)-5 b(alue)30 b(of)h Fr(parameter)37 b Fu(is)31 b(substituted.)150 -948 y Ft(${)p Fj(parameter)p Ft(:=)p Fj(word)p Ft(})630 -1058 y Fu(If)i Fr(parameter)40 b Fu(is)33 b(unset)f(or)h(n)m(ull,)h -(the)f(expansion)g(of)g Fr(w)m(ord)j Fu(is)d(assigned)g(to)h -Fr(parameter)p Fu(.)630 1167 y(The)c(v)-5 b(alue)32 b(of)f +(the)h(op)s(erator)g(tests)150 2606 y(for)36 b(b)s(oth)g +Fr(parameter)7 b Fu('s)37 b(existence)h(and)e(that)i(its)f(v)-5 +b(alue)37 b(is)g(not)f(n)m(ull;)k(if)d(the)g(colon)h(is)e(omitted,)k +(the)150 2715 y(op)s(erator)31 b(tests)g(only)f(for)g(existence.)150 +2895 y Ft(${)p Fj(parameter)p Ft(:)p Fq(\000)p Fj(word)p +Ft(})630 3005 y Fu(If)g Fr(parameter)37 b Fu(is)30 b(unset)g(or)h(n)m +(ull,)f(the)h(expansion)f(of)g Fr(w)m(ord)k Fu(is)c(substituted.)40 +b(Otherwise,)630 3114 y(the)31 b(v)-5 b(alue)30 b(of)h +Fr(parameter)37 b Fu(is)31 b(substituted.)150 3287 y +Ft(${)p Fj(parameter)p Ft(:=)p Fj(word)p Ft(})630 3397 +y Fu(If)i Fr(parameter)40 b Fu(is)33 b(unset)f(or)h(n)m(ull,)h(the)f +(expansion)g(of)g Fr(w)m(ord)j Fu(is)d(assigned)g(to)h +Fr(parameter)p Fu(.)630 3506 y(The)c(v)-5 b(alue)32 b(of)f Fr(parameter)38 b Fu(is)31 b(then)g(substituted.)42 b(P)m(ositional)33 -b(parameters)e(and)f(sp)s(ecial)630 1277 y(parameters)h(ma)m(y)g(not)f +b(parameters)e(and)f(sp)s(ecial)630 3616 y(parameters)h(ma)m(y)g(not)f (b)s(e)g(assigned)h(to)g(in)f(this)g(w)m(a)m(y)-8 b(.)150 -1437 y Ft(${)p Fj(parameter)p Ft(:?)p Fj(word)p Ft(})630 -1547 y Fu(If)26 b Fr(parameter)33 b Fu(is)26 b(n)m(ull)g(or)g(unset,)h +3789 y Ft(${)p Fj(parameter)p Ft(:?)p Fj(word)p Ft(})630 +3898 y Fu(If)26 b Fr(parameter)33 b Fu(is)26 b(n)m(ull)g(or)g(unset,)h (the)f(expansion)g(of)g Fr(w)m(ord)k Fu(\(or)c(a)h(message)g(to)g(that) -f(e\013ect)630 1656 y(if)i Fr(w)m(ord)j Fu(is)d(not)g(presen)m(t\))h +f(e\013ect)630 4008 y(if)i Fr(w)m(ord)j Fu(is)d(not)g(presen)m(t\))h (is)f(written)g(to)h(the)f(standard)f(error)h(and)f(the)h(shell,)h(if)f -(it)h(is)f(not)630 1766 y(in)m(teractiv)m(e,)33 b(exits.)42 +(it)h(is)f(not)630 4118 y(in)m(teractiv)m(e,)33 b(exits.)42 b(Otherwise,)30 b(the)h(v)-5 b(alue)31 b(of)f Fr(parameter)38 -b Fu(is)30 b(substituted.)150 1926 y Ft(${)p Fj(parameter)p -Ft(:+)p Fj(word)p Ft(})630 2036 y Fu(If)35 b Fr(parameter)42 +b Fu(is)30 b(substituted.)150 4290 y Ft(${)p Fj(parameter)p +Ft(:+)p Fj(word)p Ft(})630 4400 y Fu(If)35 b Fr(parameter)42 b Fu(is)36 b(n)m(ull)f(or)h(unset,)g(nothing)g(is)f(substituted,)i -(otherwise)e(the)h(expansion)630 2145 y(of)31 b Fr(w)m(ord)i -Fu(is)e(substituted.)150 2305 y Ft(${)p Fj(parameter)p -Ft(:)p Fj(offset)p Ft(})150 2415 y(${)p Fj(parameter)p -Ft(:)p Fj(offset)p Ft(:)p Fj(lengt)o(h)p Ft(})630 2524 +(otherwise)e(the)h(expansion)630 4510 y(of)31 b Fr(w)m(ord)i +Fu(is)e(substituted.)150 4682 y Ft(${)p Fj(parameter)p +Ft(:)p Fj(offset)p Ft(})150 4792 y(${)p Fj(parameter)p +Ft(:)p Fj(offset)p Ft(:)p Fj(lengt)o(h)p Ft(})630 4902 y Fu(This)f(is)h(referred)f(to)h(as)g(Substring)f(Expansion.)41 b(It)31 b(expands)f(to)h(up)f(to)h Fr(length)g Fu(c)m(harac-)630 -2634 y(ters)k(of)g(the)h(v)-5 b(alue)35 b(of)g Fr(parameter)42 +5011 y(ters)k(of)g(the)h(v)-5 b(alue)35 b(of)g Fr(parameter)42 b Fu(starting)36 b(at)g(the)f(c)m(haracter)i(sp)s(eci\014ed)d(b)m(y)h -Fr(o\013set)p Fu(.)55 b(If)630 2744 y Fr(parameter)32 +Fr(o\013set)p Fu(.)55 b(If)630 5121 y Fr(parameter)32 b Fu(is)26 b(`)p Ft(@)p Fu(',)g(an)f(indexed)g(arra)m(y)h(subscripted)e (b)m(y)h(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(or)g(an)f(asso)s -(ciativ)m(e)j(ar-)630 2853 y(ra)m(y)g(name,)h(the)f(results)g(di\013er) +(ciativ)m(e)j(ar-)630 5230 y(ra)m(y)g(name,)h(the)f(results)g(di\013er) g(as)g(describ)s(ed)f(b)s(elo)m(w.)40 b(If)28 b Fr(length)g -Fu(is)g(omitted,)i(it)f(expands)630 2963 y(to)e(the)g(substring)f(of)g +Fu(is)g(omitted,)i(it)f(expands)630 5340 y(to)e(the)g(substring)f(of)g (the)h(v)-5 b(alue)27 b(of)g Fr(parameter)33 b Fu(starting)28 -b(at)f(the)g(c)m(haracter)h(sp)s(eci\014ed)e(b)m(y)630 -3072 y Fr(o\013set)37 b Fu(and)d(extending)g(to)h(the)f(end)g(of)g(the) -g(v)-5 b(alue.)53 b Fr(length)34 b Fu(and)g Fr(o\013set)j -Fu(are)e(arithmetic)630 3182 y(expressions)30 b(\(see)h(Section)g(6.5)h -([Shell)e(Arithmetic],)i(page)f(89\).)630 3317 y(If)39 +b(at)f(the)g(c)m(haracter)h(sp)s(eci\014ed)e(b)m(y)p +eop end +%%Page: 26 32 +TeXDict begin 26 31 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(26)630 299 +y Fr(o\013set)37 b Fu(and)d(extending)g(to)h(the)f(end)g(of)g(the)g(v) +-5 b(alue.)53 b Fr(length)34 b Fu(and)g Fr(o\013set)j +Fu(are)e(arithmetic)630 408 y(expressions)30 b(\(see)h(Section)g(6.5)h +([Shell)e(Arithmetic],)i(page)f(92\).)630 555 y(If)39 b Fr(o\013set)k Fu(ev)-5 b(aluates)41 b(to)f(a)g(n)m(um)m(b)s(er)f (less)h(than)f(zero,)k(the)d(v)-5 b(alue)40 b(is)g(used)e(as)i(an)g -(o\013set)630 3426 y(in)33 b(c)m(haracters)i(from)f(the)f(end)g(of)h +(o\013set)630 664 y(in)33 b(c)m(haracters)i(from)f(the)f(end)g(of)h (the)g(v)-5 b(alue)34 b(of)g Fr(parameter)p Fu(.)51 b(If)33 -b Fr(length)h Fu(ev)-5 b(aluates)35 b(to)g(a)630 3536 +b Fr(length)h Fu(ev)-5 b(aluates)35 b(to)g(a)630 774 y(n)m(um)m(b)s(er)23 b(less)h(than)g(zero,)j(it)d(is)h(in)m(terpreted)f (as)g(an)h(o\013set)g(in)f(c)m(haracters)h(from)f(the)g(end)g(of)630 -3646 y(the)31 b(v)-5 b(alue)31 b(of)g Fr(parameter)38 +883 y(the)31 b(v)-5 b(alue)31 b(of)g Fr(parameter)38 b Fu(rather)30 b(than)h(a)g(n)m(um)m(b)s(er)f(of)g(c)m(haracters,)j -(and)d(the)h(expansion)630 3755 y(is)39 b(the)g(c)m(haracters)i(b)s(et) -m(w)m(een)f Fr(o\013set)i Fu(and)c(that)i(result.)67 -b(Note)40 b(that)g(a)g(negativ)m(e)h(o\013set)630 3865 -y(m)m(ust)27 b(b)s(e)g(separated)g(from)g(the)g(colon)i(b)m(y)e(at)h -(least)g(one)f(space)h(to)g(a)m(v)m(oid)h(b)s(eing)e(confused)630 -3974 y(with)j(the)h(`)p Ft(:-)p Fu(')f(expansion.)630 -4109 y(Here)43 b(are)g(some)f(examples)h(illustrating)g(substring)f -(expansion)g(on)g(parameters)h(and)630 4219 y(subscripted)29 -b(arra)m(ys:)630 4354 y Ft($)47 b(string=01234567890abcdefgh)630 -4463 y($)g(echo)g(${string:7})630 4573 y(7890abcdefgh)630 -4682 y($)g(echo)g(${string:7:0})630 4902 y($)g(echo)g(${string:7:2})630 -5011 y(78)630 5121 y($)g(echo)g(${string:7:-2})630 5230 -y(7890abcdef)630 5340 y($)g(echo)g(${string:)e(-7})p -eop end -%%Page: 25 31 -TeXDict begin 25 30 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)630 299 -y Ft(bcdefgh)630 408 y($)47 b(echo)g(${string:)e(-7:0})630 -628 y($)i(echo)g(${string:)e(-7:2})630 737 y(bc)630 847 -y($)i(echo)g(${string:)e(-7:-2})630 956 y(bcdef)630 1066 -y($)i(set)g(--)h(01234567890abcdefgh)630 1176 y($)f(echo)g(${1:7})630 -1285 y(7890abcdefgh)630 1395 y($)g(echo)g(${1:7:0})630 -1614 y($)g(echo)g(${1:7:2})630 1724 y(78)630 1833 y($)g(echo)g -(${1:7:-2})630 1943 y(7890abcdef)630 2052 y($)g(echo)g(${1:)g(-7})630 -2162 y(bcdefgh)630 2271 y($)g(echo)g(${1:)g(-7:0})630 -2491 y($)g(echo)g(${1:)g(-7:2})630 2600 y(bc)630 2710 -y($)g(echo)g(${1:)g(-7:-2})630 2819 y(bcdef)630 2929 -y($)g(array[0]=01234567890abcdef)o(gh)630 3039 y($)g(echo)g -(${array[0]:7})630 3148 y(7890abcdefgh)630 3258 y($)g(echo)g -(${array[0]:7:0})630 3477 y($)g(echo)g(${array[0]:7:2})630 -3587 y(78)630 3696 y($)g(echo)g(${array[0]:7:-2})630 -3806 y(7890abcdef)630 3915 y($)g(echo)g(${array[0]:)e(-7})630 -4025 y(bcdefgh)630 4134 y($)i(echo)g(${array[0]:)e(-7:0})630 -4354 y($)i(echo)g(${array[0]:)e(-7:2})630 4463 y(bc)630 -4573 y($)i(echo)g(${array[0]:)e(-7:-2})630 4682 y(bcdef)630 -5011 y Fu(If)22 b Fr(parameter)30 b Fu(is)23 b(`)p Ft(@)p +(and)d(the)h(expansion)630 993 y(is)39 b(the)g(c)m(haracters)i(b)s(et)m +(w)m(een)f Fr(o\013set)i Fu(and)c(that)i(result.)67 b(Note)40 +b(that)g(a)g(negativ)m(e)h(o\013set)630 1103 y(m)m(ust)27 +b(b)s(e)g(separated)g(from)g(the)g(colon)i(b)m(y)e(at)h(least)g(one)f +(space)h(to)g(a)m(v)m(oid)h(b)s(eing)e(confused)630 1212 +y(with)j(the)h(`)p Ft(:-)p Fu(')f(expansion.)630 1358 +y(Here)43 b(are)g(some)f(examples)h(illustrating)g(substring)f +(expansion)g(on)g(parameters)h(and)630 1468 y(subscripted)29 +b(arra)m(ys:)630 1614 y Ft($)47 b(string=01234567890abcdefgh)630 +1724 y($)g(echo)g(${string:7})630 1833 y(7890abcdefgh)630 +1943 y($)g(echo)g(${string:7:0})630 2162 y($)g(echo)g(${string:7:2})630 +2271 y(78)630 2381 y($)g(echo)g(${string:7:-2})630 2491 +y(7890abcdef)630 2600 y($)g(echo)g(${string:)e(-7})630 +2710 y(bcdefgh)630 2819 y($)i(echo)g(${string:)e(-7:0})630 +3039 y($)i(echo)g(${string:)e(-7:2})630 3148 y(bc)630 +3258 y($)i(echo)g(${string:)e(-7:-2})630 3367 y(bcdef)630 +3477 y($)i(set)g(--)h(01234567890abcdefgh)630 3587 y($)f(echo)g(${1:7}) +630 3696 y(7890abcdefgh)630 3806 y($)g(echo)g(${1:7:0})630 +4025 y($)g(echo)g(${1:7:2})630 4134 y(78)630 4244 y($)g(echo)g +(${1:7:-2})630 4354 y(7890abcdef)630 4463 y($)g(echo)g(${1:)g(-7})630 +4573 y(bcdefgh)630 4682 y($)g(echo)g(${1:)g(-7:0})630 +4902 y($)g(echo)g(${1:)g(-7:2})630 5011 y(bc)630 5121 +y($)g(echo)g(${1:)g(-7:-2})630 5230 y(bcdef)630 5340 +y($)g(array[0]=01234567890abcdef)o(gh)p eop end +%%Page: 27 33 +TeXDict begin 27 32 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)630 299 +y Ft($)47 b(echo)g(${array[0]:7})630 408 y(7890abcdefgh)630 +518 y($)g(echo)g(${array[0]:7:0})630 737 y($)g(echo)g(${array[0]:7:2}) +630 847 y(78)630 956 y($)g(echo)g(${array[0]:7:-2})630 +1066 y(7890abcdef)630 1176 y($)g(echo)g(${array[0]:)e(-7})630 +1285 y(bcdefgh)630 1395 y($)i(echo)g(${array[0]:)e(-7:0})630 +1614 y($)i(echo)g(${array[0]:)e(-7:2})630 1724 y(bc)630 +1833 y($)i(echo)g(${array[0]:)e(-7:-2})630 1943 y(bcdef)630 +2071 y Fu(If)22 b Fr(parameter)30 b Fu(is)23 b(`)p Ft(@)p Fu(',)i(the)e(result)g(is)g Fr(length)h Fu(p)s(ositional)f(parameters)h -(b)s(eginning)e(at)i Fr(o\013set)p Fu(.)630 5121 y(A)36 +(b)s(eginning)e(at)i Fr(o\013set)p Fu(.)630 2180 y(A)36 b(negativ)m(e)j Fr(o\013set)g Fu(is)e(tak)m(en)g(relativ)m(e)i(to)e (one)g(greater)g(than)f(the)h(greatest)h(p)s(ositional)630 -5230 y(parameter,)29 b(so)f(an)g(o\013set)h(of)f(-1)g(ev)-5 +2290 y(parameter,)29 b(so)f(an)g(o\013set)h(of)f(-1)g(ev)-5 b(aluates)30 b(to)e(the)g(last)h(p)s(ositional)g(parameter.)40 -b(It)28 b(is)g(an)630 5340 y(expansion)i(error)g(if)h +b(It)28 b(is)g(an)630 2399 y(expansion)i(error)g(if)h Fr(length)f Fu(ev)-5 b(aluates)32 b(to)f(a)g(n)m(um)m(b)s(er)e(less)i -(than)f(zero.)p eop end -%%Page: 26 32 -TeXDict begin 26 31 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(26)630 299 -y(The)32 b(follo)m(wing)i(examples)f(illustrate)h(substring)d -(expansion)i(using)f(p)s(ositional)h(param-)630 408 y(eters:)630 -573 y Ft($)47 b(set)g(--)h(1)f(2)g(3)h(4)f(5)h(6)f(7)h(8)f(9)h(0)f(a)h -(b)f(c)g(d)h(e)f(f)h(g)f(h)630 682 y($)g(echo)g(${@:7})630 -792 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h(e)f(f)h(g)f(h)630 -902 y($)g(echo)g(${@:7:0})630 1121 y($)g(echo)g(${@:7:2})630 -1230 y(7)g(8)630 1340 y($)g(echo)g(${@:7:-2})630 1450 -y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630 1559 -y($)g(echo)g(${@:)g(-7:2})630 1669 y(b)g(c)630 1778 y($)g(echo)g -(${@:0})630 1888 y(./bash)f(1)i(2)f(3)g(4)h(5)f(6)h(7)f(8)h(9)f(0)h(a)f -(b)h(c)f(d)g(e)h(f)f(g)h(h)630 1998 y($)f(echo)g(${@:0:2})630 -2107 y(./bash)f(1)630 2217 y($)h(echo)g(${@:)g(-7:0})630 -2491 y Fu(If)36 b Fr(parameter)43 b Fu(is)36 b(an)g(indexed)g(arra)m(y) +(than)f(zero.)630 2527 y(The)i(follo)m(wing)i(examples)f(illustrate)h +(substring)d(expansion)i(using)f(p)s(ositional)h(param-)630 +2637 y(eters:)630 2765 y Ft($)47 b(set)g(--)h(1)f(2)g(3)h(4)f(5)h(6)f +(7)h(8)f(9)h(0)f(a)h(b)f(c)g(d)h(e)f(f)h(g)f(h)630 2874 +y($)g(echo)g(${@:7})630 2984 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h(e)f(f)h +(g)f(h)630 3093 y($)g(echo)g(${@:7:0})630 3313 y($)g(echo)g(${@:7:2}) +630 3422 y(7)g(8)630 3532 y($)g(echo)g(${@:7:-2})630 +3641 y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630 +3751 y($)g(echo)g(${@:)g(-7:2})630 3861 y(b)g(c)630 3970 +y($)g(echo)g(${@:0})630 4080 y(./bash)f(1)i(2)f(3)g(4)h(5)f(6)h(7)f(8)h +(9)f(0)h(a)f(b)h(c)f(d)g(e)h(f)f(g)h(h)630 4189 y($)f(echo)g(${@:0:2}) +630 4299 y(./bash)f(1)630 4408 y($)h(echo)g(${@:)g(-7:0})630 +4646 y Fu(If)36 b Fr(parameter)43 b Fu(is)36 b(an)g(indexed)g(arra)m(y) g(name)g(subscripted)f(b)m(y)h(`)p Ft(@)p Fu(')g(or)h(`)p -Ft(*)p Fu(',)h(the)e(result)g(is)630 2600 y(the)j Fr(length)g +Ft(*)p Fu(',)h(the)e(result)g(is)630 4755 y(the)j Fr(length)g Fu(mem)m(b)s(ers)f(of)h(the)f(arra)m(y)i(b)s(eginning)d(with)i Ft(${)p Fj(parameter)p Ft([)p Fj(offset)p Ft(]})p Fu(.)60 -b(A)630 2710 y(negativ)m(e)33 b Fr(o\013set)g Fu(is)e(tak)m(en)h +b(A)630 4865 y(negativ)m(e)33 b Fr(o\013set)g Fu(is)e(tak)m(en)h (relativ)m(e)g(to)g(one)f(greater)g(than)g(the)f(maxim)m(um)h(index)f -(of)h(the)630 2819 y(sp)s(eci\014ed)38 b(arra)m(y)-8 +(of)h(the)630 4975 y(sp)s(eci\014ed)38 b(arra)m(y)-8 b(.)65 b(It)38 b(is)g(an)h(expansion)f(error)f(if)i Fr(length)f Fu(ev)-5 b(aluates)40 b(to)f(a)g(n)m(um)m(b)s(er)e(less)630 -2929 y(than)30 b(zero.)630 3093 y(These)23 b(examples)i(sho)m(w)e(ho)m +5084 y(than)30 b(zero.)630 5212 y(These)23 b(examples)i(sho)m(w)e(ho)m (w)h(y)m(ou)g(can)g(use)f(substring)f(expansion)i(with)f(indexed)g -(arra)m(ys:)630 3258 y Ft($)47 b(array=\(0)f(1)h(2)h(3)f(4)h(5)f(6)h(7) -f(8)h(9)f(0)h(a)f(b)g(c)h(d)f(e)h(f)f(g)h(h\))630 3367 -y($)f(echo)g(${array[@]:7})630 3477 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h -(e)f(f)h(g)f(h)630 3587 y($)g(echo)g(${array[@]:7:2})630 -3696 y(7)g(8)630 3806 y($)g(echo)g(${array[@]:)e(-7:2})630 -3915 y(b)i(c)630 4025 y($)g(echo)g(${array[@]:)e(-7:-2})630 -4134 y(bash:)h(-2:)h(substring)f(expression)f(<)i(0)630 -4244 y($)g(echo)g(${array[@]:0})630 4354 y(0)g(1)h(2)f(3)h(4)f(5)h(6)f -(7)h(8)f(9)h(0)f(a)g(b)h(c)f(d)h(e)f(f)h(g)f(h)630 4463 -y($)g(echo)g(${array[@]:0:2})630 4573 y(0)g(1)630 4682 -y($)g(echo)g(${array[@]:)e(-7:0})630 4956 y Fu(Substring)25 +(arra)m(ys:)630 5340 y Ft($)47 b(array=\(0)f(1)h(2)h(3)f(4)h(5)f(6)h(7) +f(8)h(9)f(0)h(a)f(b)g(c)h(d)f(e)h(f)f(g)h(h\))p eop end +%%Page: 28 34 +TeXDict begin 28 33 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(28)630 299 +y Ft($)47 b(echo)g(${array[@]:7})630 408 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f +(d)h(e)f(f)h(g)f(h)630 518 y($)g(echo)g(${array[@]:7:2})630 +628 y(7)g(8)630 737 y($)g(echo)g(${array[@]:)e(-7:2})630 +847 y(b)i(c)630 956 y($)g(echo)g(${array[@]:)e(-7:-2})630 +1066 y(bash:)h(-2:)h(substring)f(expression)f(<)i(0)630 +1176 y($)g(echo)g(${array[@]:0})630 1285 y(0)g(1)h(2)f(3)h(4)f(5)h(6)f +(7)h(8)f(9)h(0)f(a)g(b)h(c)f(d)h(e)f(f)h(g)f(h)630 1395 +y($)g(echo)g(${array[@]:0:2})630 1504 y(0)g(1)630 1614 +y($)g(echo)g(${array[@]:)e(-7:0})630 1855 y Fu(Substring)25 b(expansion)g(applied)h(to)h(an)f(asso)s(ciativ)m(e)j(arra)m(y)d(pro)s -(duces)f(unde\014ned)f(results.)630 5121 y(Substring)32 +(duces)f(unde\014ned)f(results.)630 1987 y(Substring)32 b(indexing)i(is)f(zero-based)i(unless)e(the)h(p)s(ositional)g -(parameters)g(are)g(used,)g(in)630 5230 y(whic)m(h)29 +(parameters)g(are)g(used,)g(in)630 2096 y(whic)m(h)29 b(case)i(the)f(indexing)g(starts)g(at)g(1)g(b)m(y)g(default.)41 b(If)29 b Fr(o\013set)k Fu(is)d(0,)g(and)f(the)h(p)s(ositional)630 -5340 y(parameters)h(are)f(used,)g Ft($@)g Fu(is)g(pre\014xed)g(to)h -(the)f(list.)p eop end -%%Page: 27 33 -TeXDict begin 27 32 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)150 299 -y Ft(${!)p Fj(prefix)p Ft(*})150 408 y(${!)p Fj(prefix)p -Ft(@})630 518 y Fu(Expands)24 b(to)h(the)g(names)g(of)g(v)-5 -b(ariables)26 b(whose)f(names)f(b)s(egin)h(with)f Fr(pre\014x)p -Fu(,)i(separated)f(b)m(y)630 628 y(the)k(\014rst)f(c)m(haracter)j(of)e -(the)g Ft(IFS)f Fu(sp)s(ecial)i(v)-5 b(ariable.)41 b(When)29 -b(`)p Ft(@)p Fu(')g(is)g(used)f(and)h(the)g(expan-)630 -737 y(sion)35 b(app)s(ears)g(within)f(double)h(quotes,)i(eac)m(h)f(v)-5 +2206 y(parameters)h(are)f(used,)g Ft($@)g Fu(is)g(pre\014xed)g(to)h +(the)f(list.)150 2359 y Ft(${!)p Fj(prefix)p Ft(*})150 +2469 y(${!)p Fj(prefix)p Ft(@})630 2578 y Fu(Expands)24 +b(to)h(the)g(names)g(of)g(v)-5 b(ariables)26 b(whose)f(names)f(b)s +(egin)h(with)f Fr(pre\014x)p Fu(,)i(separated)f(b)m(y)630 +2688 y(the)k(\014rst)f(c)m(haracter)j(of)e(the)g Ft(IFS)f +Fu(sp)s(ecial)i(v)-5 b(ariable.)41 b(When)29 b(`)p Ft(@)p +Fu(')g(is)g(used)f(and)h(the)g(expan-)630 2798 y(sion)35 +b(app)s(ears)g(within)f(double)h(quotes,)i(eac)m(h)f(v)-5 b(ariable)36 b(name)f(expands)g(to)g(a)h(separate)630 -847 y(w)m(ord.)150 1066 y Ft(${!)p Fj(name)p Ft([@]})150 -1176 y(${!)p Fj(name)p Ft([*]})630 1285 y Fu(If)26 b +2907 y(w)m(ord.)150 3061 y Ft(${!)p Fj(name)p Ft([@]})150 +3170 y(${!)p Fj(name)p Ft([*]})630 3280 y Fu(If)26 b Fr(name)32 b Fu(is)27 b(an)f(arra)m(y)h(v)-5 b(ariable,)29 b(expands)d(to)h(the)g(list)g(of)g(arra)m(y)g(indices)g(\(k)m(eys\))h -(assigned)630 1395 y(in)c Fr(name)p Fu(.)39 b(If)24 b +(assigned)630 3389 y(in)c Fr(name)p Fu(.)39 b(If)24 b Fr(name)30 b Fu(is)24 b(not)h(an)f(arra)m(y)-8 b(,)27 b(expands)c(to)j(0)f(if)f Fr(name)30 b Fu(is)24 b(set)h(and)f(n)m(ull)g -(otherwise.)630 1504 y(When)39 b(`)p Ft(@)p Fu(')h(is)f(used)g(and)f +(otherwise.)630 3499 y(When)39 b(`)p Ft(@)p Fu(')h(is)f(used)g(and)f (the)i(expansion)f(app)s(ears)g(within)f(double)h(quotes,)k(eac)m(h)d -(k)m(ey)630 1614 y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150 -1833 y Ft(${#)p Fj(parameter)p Ft(})630 1943 y Fu(The)40 +(k)m(ey)630 3608 y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150 +3762 y Ft(${#)p Fj(parameter)p Ft(})630 3871 y Fu(The)40 b(length)g(in)g(c)m(haracters)i(of)e(the)h(expanded)e(v)-5 b(alue)41 b(of)f Fr(parameter)47 b Fu(is)40 b(substituted.)630 -2052 y(If)i Fr(parameter)50 b Fu(is)43 b(`)p Ft(*)p Fu(')g(or)g(`)p +3981 y(If)i Fr(parameter)50 b Fu(is)43 b(`)p Ft(*)p Fu(')g(or)g(`)p Ft(@)p Fu(',)k(the)c(v)-5 b(alue)43 b(substituted)f(is)h(the)g(n)m(um)m -(b)s(er)f(of)h(p)s(ositional)630 2162 y(parameters.)i(If)32 +(b)s(er)f(of)h(p)s(ositional)630 4091 y(parameters.)i(If)32 b Fr(parameter)38 b Fu(is)32 b(an)g(arra)m(y)g(name)g(subscripted)f(b)m (y)g(`)p Ft(*)p Fu(')h(or)g(`)p Ft(@)p Fu(',)g(the)g(v)-5 -b(alue)630 2271 y(substituted)30 b(is)h(the)g(n)m(um)m(b)s(er)e(of)i +b(alue)630 4200 y(substituted)30 b(is)h(the)g(n)m(um)m(b)s(er)e(of)i (elemen)m(ts)i(in)d(the)h(arra)m(y)-8 b(.)43 b(If)30 -b Fr(parameter)38 b Fu(is)31 b(an)f(indexed)630 2381 +b Fr(parameter)38 b Fu(is)31 b(an)f(indexed)630 4310 y(arra)m(y)37 b(name)g(subscripted)f(b)m(y)h(a)g(negativ)m(e)i(n)m(um)m (b)s(er,)f(that)f(n)m(um)m(b)s(er)f(is)g(in)m(terpreted)i(as)630 -2491 y(relativ)m(e)47 b(to)g(one)e(greater)i(than)e(the)h(maxim)m(um)f +4419 y(relativ)m(e)47 b(to)g(one)e(greater)i(than)e(the)h(maxim)m(um)f (index)g(of)g Fr(parameter)p Fu(,)50 b(so)c(negativ)m(e)630 -2600 y(indices)30 b(coun)m(t)h(bac)m(k)g(from)f(the)h(end)e(of)i(the)f +4529 y(indices)30 b(coun)m(t)h(bac)m(k)g(from)f(the)h(end)e(of)i(the)f (arra)m(y)-8 b(,)32 b(and)e(an)g(index)g(of)g(-1)h(references)g(the)630 -2710 y(last)g(elemen)m(t.)150 2929 y Ft(${)p Fj(parameter)p -Ft(#)p Fj(word)p Ft(})150 3039 y(${)p Fj(parameter)p -Ft(##)p Fj(word)p Ft(})630 3148 y Fu(The)g Fr(w)m(ord)k -Fu(is)d(expanded)f(to)i(pro)s(duce)e(a)h(pattern)g(just)f(as)i(in)e -(\014lename)h(expansion)g(\(see)630 3258 y(Section)k(3.5.8)h([Filename) -g(Expansion],)g(page)f(30\).)56 b(If)35 b(the)h(pattern)f(matc)m(hes)i -(the)e(b)s(e-)630 3367 y(ginning)28 b(of)g(the)h(expanded)e(v)-5 -b(alue)29 b(of)f Fr(parameter)p Fu(,)h(then)f(the)g(result)g(of)h(the)f -(expansion)g(is)630 3477 y(the)36 b(expanded)f(v)-5 b(alue)36 -b(of)g Fr(parameter)43 b Fu(with)35 b(the)h(shortest)g(matc)m(hing)h -(pattern)f(\(the)g(`)p Ft(#)p Fu(')630 3587 y(case\))26 -b(or)f(the)g(longest)g(matc)m(hing)h(pattern)f(\(the)g(`)p -Ft(##)p Fu(')g(case\))h(deleted.)39 b(If)24 b Fr(parameter)32 -b Fu(is)25 b(`)p Ft(@)p Fu(')630 3696 y(or)j(`)p Ft(*)p -Fu(',)i(the)e(pattern)h(remo)m(v)-5 b(al)29 b(op)s(eration)g(is)f -(applied)h(to)g(eac)m(h)g(p)s(ositional)g(parameter)g(in)630 -3806 y(turn,)i(and)g(the)h(expansion)g(is)g(the)g(resultan)m(t)g(list.) -45 b(If)32 b Fr(parameter)38 b Fu(is)32 b(an)g(arra)m(y)g(v)-5 -b(ariable)630 3915 y(subscripted)39 b(with)g(`)p Ft(@)p -Fu(')h(or)g(`)p Ft(*)p Fu(',)j(the)d(pattern)h(remo)m(v)-5 -b(al)41 b(op)s(eration)f(is)g(applied)g(to)h(eac)m(h)630 -4025 y(mem)m(b)s(er)30 b(of)g(the)h(arra)m(y)g(in)f(turn,)f(and)h(the)h -(expansion)f(is)g(the)h(resultan)m(t)g(list.)150 4244 -y Ft(${)p Fj(parameter)p Ft(\045)p Fj(word)p Ft(})150 -4354 y(${)p Fj(parameter)p Ft(\045\045)p Fj(word)p Ft(})630 -4463 y Fu(The)k Fr(w)m(ord)k Fu(is)c(expanded)g(to)h(pro)s(duce)e(a)i -(pattern)f(just)g(as)h(in)f(\014lename)h(expansion.)55 -b(If)630 4573 y(the)43 b(pattern)g(matc)m(hes)h(a)g(trailing)g(p)s -(ortion)e(of)h(the)g(expanded)g(v)-5 b(alue)43 b(of)g -Fr(parameter)p Fu(,)630 4682 y(then)c(the)g(result)g(of)h(the)f -(expansion)g(is)h(the)f(v)-5 b(alue)40 b(of)f Fr(parameter)46 -b Fu(with)39 b(the)h(shortest)630 4792 y(matc)m(hing)31 -b(pattern)e(\(the)h(`)p Ft(\045)p Fu(')g(case\))h(or)e(the)h(longest)h -(matc)m(hing)f(pattern)g(\(the)g(`)p Ft(\045\045)p Fu(')g(case\))630 -4902 y(deleted.)49 b(If)32 b Fr(parameter)40 b Fu(is)33 -b(`)p Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)h(the)f(pattern)g(remo)m(v)-5 -b(al)34 b(op)s(eration)g(is)f(applied)f(to)630 5011 y(eac)m(h)38 -b(p)s(ositional)g(parameter)g(in)f(turn,)h(and)e(the)h(expansion)g(is)h -(the)f(resultan)m(t)h(list.)61 b(If)630 5121 y Fr(parameter)38 -b Fu(is)32 b(an)f(arra)m(y)h(v)-5 b(ariable)32 b(subscripted)e(with)h -(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5 -b(al)630 5230 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m -(b)s(er)e(of)h(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g -(is)630 5340 y(the)h(resultan)m(t)g(list.)p eop end -%%Page: 28 34 -TeXDict begin 28 33 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(28)150 299 -y Ft(${)p Fj(parameter)p Ft(/)p Fj(pattern)p Ft(/)p Fj(stri)o(ng)p -Ft(})630 408 y Fu(The)37 b Fr(pattern)g Fu(is)g(expanded)g(to)h(pro)s -(duce)e(a)h(pattern)g(just)g(as)h(in)e(\014lename)i(expansion.)630 -518 y Fr(P)m(arameter)46 b Fu(is)38 b(expanded)f(and)g(the)i(longest)g -(matc)m(h)g(of)f Fr(pattern)g Fu(against)h(its)f(v)-5 -b(alue)39 b(is)630 628 y(replaced)34 b(with)e Fr(string)p -Fu(.)49 b(If)33 b Fr(pattern)g Fu(b)s(egins)g(with)f(`)p -Ft(/)p Fu(',)j(all)f(matc)m(hes)g(of)f Fr(pattern)g Fu(are)h(re-)630 -737 y(placed)28 b(with)f Fr(string)p Fu(.)40 b(Normally)28 -b(only)f(the)h(\014rst)e(matc)m(h)j(is)e(replaced.)40 -b(If)27 b Fr(pattern)g Fu(b)s(egins)630 847 y(with)34 -b(`)p Ft(#)p Fu(',)h(it)g(m)m(ust)f(matc)m(h)h(at)f(the)h(b)s(eginning) -e(of)h(the)g(expanded)f(v)-5 b(alue)35 b(of)f Fr(parameter)p -Fu(.)630 956 y(If)g Fr(pattern)g Fu(b)s(egins)g(with)g(`)p -Ft(\045)p Fu(',)h(it)g(m)m(ust)f(matc)m(h)h(at)g(the)f(end)g(of)g(the)h -(expanded)e(v)-5 b(alue)35 b(of)630 1066 y Fr(parameter)p -Fu(.)41 b(If)29 b Fr(string)37 b Fu(is)29 b(n)m(ull,)h(matc)m(hes)h(of) -e Fr(pattern)h Fu(are)g(deleted)g(and)f(the)g Ft(/)g -Fu(follo)m(wing)630 1176 y Fr(pattern)k Fu(ma)m(y)h(b)s(e)e(omitted.)50 -b(If)33 b(the)g Ft(nocasematch)d Fu(shell)j(option)h(\(see)g(the)f -(description)630 1285 y(of)28 b Ft(shopt)e Fu(in)h(Section)i(4.3.2)g -([The)e(Shopt)g(Builtin],)i(page)g(64\))g(is)e(enabled,)i(the)e(matc)m -(h)i(is)630 1395 y(p)s(erformed)f(without)j(regard)e(to)i(the)f(case)i -(of)e(alphab)s(etic)g(c)m(haracters.)42 b(If)30 b Fr(parameter)37 -b Fu(is)630 1504 y(`)p Ft(@)p Fu(')31 b(or)g(`)p Ft(*)p -Fu(',)g(the)g(substitution)f(op)s(eration)h(is)g(applied)f(to)i(eac)m -(h)g(p)s(ositional)f(parameter)g(in)630 1614 y(turn,)g(and)g(the)h -(expansion)g(is)g(the)g(resultan)m(t)g(list.)45 b(If)32 -b Fr(parameter)38 b Fu(is)32 b(an)g(arra)m(y)g(v)-5 b(ariable)630 -1724 y(subscripted)23 b(with)g(`)p Ft(@)p Fu(')i(or)f(`)p -Ft(*)p Fu(',)h(the)g(substitution)e(op)s(eration)i(is)f(applied)g(to)g -(eac)m(h)i(mem)m(b)s(er)630 1833 y(of)31 b(the)f(arra)m(y)h(in)f(turn,) -g(and)f(the)i(expansion)f(is)h(the)f(resultan)m(t)h(list.)150 -1987 y Ft(${)p Fj(parameter)p Ft(^)p Fj(pattern)p Ft(})150 -2096 y(${)p Fj(parameter)p Ft(^^)p Fj(pattern)p Ft(})150 -2206 y(${)p Fj(parameter)p Ft(,)p Fj(pattern)p Ft(})150 -2315 y(${)p Fj(parameter)p Ft(,,)p Fj(pattern)p Ft(})630 -2425 y Fu(This)36 b(expansion)g(mo)s(di\014es)g(the)g(case)i(of)f -(alphab)s(etic)g(c)m(haracters)h(in)e Fr(parameter)p -Fu(.)59 b(The)630 2534 y Fr(pattern)33 b Fu(is)g(expanded)e(to)j(pro)s -(duce)d(a)j(pattern)e(just)g(as)h(in)g(\014lename)g(expansion.)47 -b(Eac)m(h)630 2644 y(c)m(haracter)32 b(in)e(the)g(expanded)f(v)-5 -b(alue)31 b(of)f Fr(parameter)37 b Fu(is)30 b(tested)h(against)h -Fr(pattern)p Fu(,)e(and,)g(if)630 2754 y(it)j(matc)m(hes)h(the)g +4639 y(last)g(elemen)m(t.)150 4792 y Ft(${)p Fj(parameter)p +Ft(#)p Fj(word)p Ft(})150 4902 y(${)p Fj(parameter)p +Ft(##)p Fj(word)p Ft(})630 5011 y Fu(The)43 b Fr(w)m(ord)k +Fu(is)d(expanded)f(to)h(pro)s(duce)f(a)h(pattern)g(and)f(matc)m(hed)i +(according)f(to)h(the)630 5121 y(rules)31 b(describ)s(ed)g(b)s(elo)m(w) +h(\(see)h(Section)g(3.5.8.1)h([P)m(attern)g(Matc)m(hing],)g(page)f +(33\).)46 b(If)32 b(the)630 5230 y(pattern)37 b(matc)m(hes)h(the)f(b)s +(eginning)f(of)h(the)g(expanded)f(v)-5 b(alue)38 b(of)f +Fr(parameter)p Fu(,)i(then)e(the)630 5340 y(result)f(of)h(the)f +(expansion)h(is)f(the)h(expanded)e(v)-5 b(alue)37 b(of)g +Fr(parameter)43 b Fu(with)36 b(the)h(shortest)p eop end +%%Page: 29 35 +TeXDict begin 29 34 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)630 299 +y(matc)m(hing)31 b(pattern)e(\(the)h(`)p Ft(#)p Fu(')g(case\))h(or)e +(the)h(longest)h(matc)m(hing)f(pattern)g(\(the)g(`)p +Ft(##)p Fu(')g(case\))630 408 y(deleted.)49 b(If)32 b +Fr(parameter)40 b Fu(is)33 b(`)p Ft(@)p Fu(')g(or)g(`)p +Ft(*)p Fu(',)h(the)f(pattern)g(remo)m(v)-5 b(al)34 b(op)s(eration)g(is) +f(applied)f(to)630 518 y(eac)m(h)38 b(p)s(ositional)g(parameter)g(in)f +(turn,)h(and)e(the)h(expansion)g(is)h(the)f(resultan)m(t)h(list.)61 +b(If)630 628 y Fr(parameter)38 b Fu(is)32 b(an)f(arra)m(y)h(v)-5 +b(ariable)32 b(subscripted)e(with)h(`)p Ft(@)p Fu(')g(or)h(`)p +Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5 b(al)630 737 +y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m(b)s(er)e(of)h +(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g(is)630 +847 y(the)h(resultan)m(t)g(list.)150 993 y Ft(${)p Fj(parameter)p +Ft(\045)p Fj(word)p Ft(})150 1103 y(${)p Fj(parameter)p +Ft(\045\045)p Fj(word)p Ft(})630 1212 y Fu(The)43 b Fr(w)m(ord)k +Fu(is)d(expanded)f(to)h(pro)s(duce)f(a)h(pattern)g(and)f(matc)m(hed)i +(according)f(to)h(the)630 1322 y(rules)31 b(describ)s(ed)g(b)s(elo)m(w) +h(\(see)h(Section)g(3.5.8.1)h([P)m(attern)g(Matc)m(hing],)g(page)f +(33\).)46 b(If)32 b(the)630 1431 y(pattern)25 b(matc)m(hes)h(If)f(the)g +(pattern)g(matc)m(hes)i(a)e(trailing)h(p)s(ortion)f(of)g(the)g +(expanded)f(v)-5 b(alue)630 1541 y(of)23 b Fr(parameter)p +Fu(,)i(then)e(the)g(result)f(of)h(the)g(expansion)g(is)g(the)g(v)-5 +b(alue)23 b(of)g Fr(parameter)30 b Fu(with)23 b(the)630 +1650 y(shortest)35 b(matc)m(hing)h(pattern)f(\(the)g(`)p +Ft(\045)p Fu(')g(case\))i(or)d(the)h(longest)i(matc)m(hing)e(pattern)g +(\(the)630 1760 y(`)p Ft(\045\045)p Fu(')f(case\))i(deleted.)54 +b(If)34 b Fr(parameter)42 b Fu(is)35 b(`)p Ft(@)p Fu(')f(or)h(`)p +Ft(*)p Fu(',)h(the)e(pattern)h(remo)m(v)-5 b(al)36 b(op)s(eration)f(is) +630 1870 y(applied)26 b(to)g(eac)m(h)h(p)s(ositional)f(parameter)h(in)e +(turn,)h(and)f(the)h(expansion)g(is)f(the)h(resultan)m(t)630 +1979 y(list.)56 b(If)34 b Fr(parameter)42 b Fu(is)35 +b(an)g(arra)m(y)h(v)-5 b(ariable)36 b(subscripted)e(with)g(`)p +Ft(@)p Fu(')i(or)f(`)p Ft(*)p Fu(',)i(the)e(pattern)630 +2089 y(remo)m(v)-5 b(al)44 b(op)s(eration)g(is)e(applied)h(to)h(eac)m +(h)g(mem)m(b)s(er)e(of)h(the)g(arra)m(y)h(in)e(turn,)j(and)e(the)630 +2198 y(expansion)30 b(is)h(the)f(resultan)m(t)h(list.)150 +2345 y Ft(${)p Fj(parameter)p Ft(/)p Fj(pattern)p Ft(/)p +Fj(stri)o(ng)p Ft(})630 2454 y Fu(The)37 b Fr(pattern)g +Fu(is)g(expanded)g(to)h(pro)s(duce)e(a)h(pattern)g(just)g(as)h(in)e +(\014lename)i(expansion.)630 2564 y Fr(P)m(arameter)46 +b Fu(is)38 b(expanded)f(and)g(the)i(longest)g(matc)m(h)g(of)f +Fr(pattern)g Fu(against)h(its)f(v)-5 b(alue)39 b(is)630 +2673 y(replaced)31 b(with)g Fr(string)p Fu(.)42 b(The)30 +b(matc)m(h)h(is)g(p)s(erformed)f(according)h(to)h(the)f(rules)f +(describ)s(ed)630 2783 y(b)s(elo)m(w)f(\(see)h(Section)g(3.5.8.1)h([P)m +(attern)g(Matc)m(hing],)g(page)f(33\).)41 b(If)29 b Fr(pattern)g +Fu(b)s(egins)f(with)630 2892 y(`)p Ft(/)p Fu(',)43 b(all)e(matc)m(hes)g +(of)f Fr(pattern)g Fu(are)h(replaced)f(with)g Fr(string)p +Fu(.)69 b(Normally)41 b(only)f(the)h(\014rst)630 3002 +y(matc)m(h)28 b(is)f(replaced.)40 b(If)26 b Fr(pattern)h +Fu(b)s(egins)f(with)h(`)p Ft(#)p Fu(',)h(it)f(m)m(ust)g(matc)m(h)h(at)g +(the)f(b)s(eginning)f(of)630 3112 y(the)32 b(expanded)f(v)-5 +b(alue)32 b(of)g Fr(parameter)p Fu(.)45 b(If)31 b Fr(pattern)h +Fu(b)s(egins)f(with)g(`)p Ft(\045)p Fu(',)i(it)f(m)m(ust)g(matc)m(h)g +(at)630 3221 y(the)24 b(end)f(of)h(the)h(expanded)e(v)-5 +b(alue)24 b(of)g Fr(parameter)p Fu(.)39 b(If)24 b Fr(string)31 +b Fu(is)24 b(n)m(ull,)i(matc)m(hes)f(of)f Fr(pattern)630 +3331 y Fu(are)36 b(deleted)g(and)f(the)g Ft(/)g Fu(follo)m(wing)i +Fr(pattern)e Fu(ma)m(y)h(b)s(e)f(omitted.)57 b(If)34 +b(the)i Ft(nocasematch)630 3440 y Fu(shell)31 b(option)h(\(see)g(the)g +(description)f(of)g Ft(shopt)f Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)f +(Builtin],)630 3550 y(page)45 b(65\))h(is)f(enabled,)j(the)d(matc)m(h)g +(is)g(p)s(erformed)e(without)i(regard)f(to)h(the)g(case)h(of)630 +3660 y(alphab)s(etic)36 b(c)m(haracters.)56 b(If)34 b +Fr(parameter)42 b Fu(is)36 b(`)p Ft(@)p Fu(')f(or)g(`)p +Ft(*)p Fu(',)h(the)g(substitution)e(op)s(eration)i(is)630 +3769 y(applied)26 b(to)g(eac)m(h)h(p)s(ositional)f(parameter)h(in)e +(turn,)h(and)f(the)h(expansion)g(is)f(the)h(resultan)m(t)630 +3879 y(list.)38 b(If)21 b Fr(parameter)28 b Fu(is)22 +b(an)f(arra)m(y)h(v)-5 b(ariable)22 b(subscripted)e(with)h(`)p +Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)j(the)d(substitution)630 +3988 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m(b)s(er)e +(of)h(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g(is)630 +4098 y(the)h(resultan)m(t)g(list.)150 4244 y Ft(${)p +Fj(parameter)p Ft(^)p Fj(pattern)p Ft(})150 4354 y(${)p +Fj(parameter)p Ft(^^)p Fj(pattern)p Ft(})150 4463 y(${)p +Fj(parameter)p Ft(,)p Fj(pattern)p Ft(})150 4573 y(${)p +Fj(parameter)p Ft(,,)p Fj(pattern)p Ft(})630 4682 y Fu(This)36 +b(expansion)g(mo)s(di\014es)g(the)g(case)i(of)f(alphab)s(etic)g(c)m +(haracters)h(in)e Fr(parameter)p Fu(.)59 b(The)630 4792 +y Fr(pattern)33 b Fu(is)g(expanded)e(to)j(pro)s(duce)d(a)j(pattern)e +(just)g(as)h(in)g(\014lename)g(expansion.)47 b(Eac)m(h)630 +4902 y(c)m(haracter)32 b(in)e(the)g(expanded)f(v)-5 b(alue)31 +b(of)f Fr(parameter)37 b Fu(is)30 b(tested)h(against)h +Fr(pattern)p Fu(,)e(and,)g(if)630 5011 y(it)j(matc)m(hes)h(the)g (pattern,)f(its)h(case)g(is)f(con)m(v)m(erted.)49 b(The)33 -b(pattern)g(should)f(not)h(attempt)630 2863 y(to)f(matc)m(h)g(more)f +b(pattern)g(should)f(not)h(attempt)630 5121 y(to)f(matc)m(h)g(more)f (than)g(one)g(c)m(haracter.)44 b(The)30 b(`)p Ft(^)p Fu(')i(op)s(erator)f(con)m(v)m(erts)h(lo)m(w)m(ercase)i(letters)630 -2973 y(matc)m(hing)i Fr(pattern)f Fu(to)h(upp)s(ercase;)h(the)e(`)p +5230 y(matc)m(hing)i Fr(pattern)f Fu(to)h(upp)s(ercase;)h(the)e(`)p Ft(,)p Fu(')g(op)s(erator)g(con)m(v)m(erts)i(matc)m(hing)f(upp)s -(ercase)630 3082 y(letters)e(to)f(lo)m(w)m(ercase.)50 +(ercase)630 5340 y(letters)e(to)f(lo)m(w)m(ercase.)50 b(The)32 b(`)p Ft(^^)p Fu(')h(and)f(`)p Ft(,,)p Fu(')g(expansions)h -(con)m(v)m(ert)h(eac)m(h)g(matc)m(hed)f(c)m(har-)630 -3192 y(acter)c(in)f(the)h(expanded)e(v)-5 b(alue;)30 -b(the)e(`)p Ft(^)p Fu(')g(and)g(`)p Ft(,)p Fu(')g(expansions)g(matc)m -(h)h(and)f(con)m(v)m(ert)i(only)630 3302 y(the)37 b(\014rst)g(c)m -(haracter)i(in)e(the)g(expanded)g(v)-5 b(alue.)61 b(If)37 -b Fr(pattern)g Fu(is)h(omitted,)i(it)e(is)f(treated)630 -3411 y(lik)m(e)h(a)f(`)p Ft(?)p Fu(',)i(whic)m(h)d(matc)m(hes)i(ev)m -(ery)f(c)m(haracter.)61 b(If)37 b Fr(parameter)43 b Fu(is)37 -b(`)p Ft(@)p Fu(')g(or)f(`)p Ft(*)p Fu(',)j(the)e(case)630 -3521 y(mo)s(di\014cation)29 b(op)s(eration)f(is)g(applied)g(to)h(eac)m -(h)h(p)s(ositional)f(parameter)f(in)g(turn,)g(and)g(the)630 -3630 y(expansion)38 b(is)g(the)g(resultan)m(t)h(list.)65 -b(If)37 b Fr(parameter)46 b Fu(is)38 b(an)g(arra)m(y)g(v)-5 -b(ariable)39 b(subscripted)630 3740 y(with)26 b(`)p Ft(@)p -Fu(')f(or)h(`)p Ft(*)p Fu(',)h(the)f(case)h(mo)s(di\014cation)f(op)s -(eration)h(is)e(applied)h(to)h(eac)m(h)g(mem)m(b)s(er)e(of)h(the)630 -3850 y(arra)m(y)31 b(in)f(turn,)f(and)h(the)h(expansion)f(is)g(the)h -(resultan)m(t)g(list.)150 4003 y Ft(${)p Fj(parameter)p -Ft(@)p Fj(operator)p Ft(})630 4113 y Fu(The)d(expansion)h(is)f(either)h -(a)g(transformation)g(of)g(the)g(v)-5 b(alue)29 b(of)g -Fr(parameter)35 b Fu(or)29 b(informa-)630 4222 y(tion)e(ab)s(out)f -Fr(parameter)33 b Fu(itself,)28 b(dep)s(ending)c(on)i(the)h(v)-5 -b(alue)26 b(of)h Fr(op)s(erator)p Fu(.)39 b(Eac)m(h)27 -b Fr(op)s(erator)630 4332 y Fu(is)j(a)h(single)g(letter:)630 -4485 y Ft(Q)432 b Fu(The)30 b(expansion)h(is)g(a)g(string)f(that)i(is)f -(the)g(v)-5 b(alue)31 b(of)g Fr(parameter)37 b Fu(quoted)31 -b(in)1110 4595 y(a)g(format)f(that)h(can)g(b)s(e)f(reused)f(as)i -(input.)630 4748 y Ft(E)432 b Fu(The)48 b(expansion)h(is)g(a)g(string)g -(that)h(is)f(the)g(v)-5 b(alue)49 b(of)g Fr(parameter)56 -b Fu(with)1110 4858 y(bac)m(kslash)36 b(escap)s(e)f(sequences)h -(expanded)e(as)h(with)g(the)g Ft($'...)o(')f Fu(quoting)1110 -4967 y(mec)m(hansim.)630 5121 y Ft(P)432 b Fu(The)22 -b(expansion)h(is)g(a)g(string)g(that)g(is)g(the)g(result)g(of)g -(expanding)f(the)h(v)-5 b(alue)24 b(of)1110 5230 y Fr(parameter)31 -b Fu(as)24 b(if)f(it)h(w)m(ere)g(a)g(prompt)f(string)h(\(see)g(Section) -h(6.9)g([Con)m(trolling)1110 5340 y(the)31 b(Prompt],)f(page)h(94\).)p -eop end -%%Page: 29 35 -TeXDict begin 29 34 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)630 299 -y Ft(A)432 b Fu(The)24 b(expansion)g(is)g(a)h(string)f(in)g(the)g(form) -g(of)h(an)f(assignmen)m(t)h(statemen)m(t)h(or)1110 408 -y Ft(declare)h Fu(command)i(that,)h(if)f(ev)-5 b(aluated,)31 -b(will)e(recreate)i Fr(parameter)36 b Fu(with)1110 518 -y(its)31 b(attributes)g(and)e(v)-5 b(alue.)630 680 y +(con)m(v)m(ert)h(eac)m(h)g(matc)m(hed)f(c)m(har-)p eop +end +%%Page: 30 36 +TeXDict begin 30 35 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(30)630 299 +y(acter)29 b(in)f(the)h(expanded)e(v)-5 b(alue;)30 b(the)e(`)p +Ft(^)p Fu(')g(and)g(`)p Ft(,)p Fu(')g(expansions)g(matc)m(h)h(and)f +(con)m(v)m(ert)i(only)630 408 y(the)37 b(\014rst)g(c)m(haracter)i(in)e +(the)g(expanded)g(v)-5 b(alue.)61 b(If)37 b Fr(pattern)g +Fu(is)h(omitted,)i(it)e(is)f(treated)630 518 y(lik)m(e)h(a)f(`)p +Ft(?)p Fu(',)i(whic)m(h)d(matc)m(hes)i(ev)m(ery)f(c)m(haracter.)61 +b(If)37 b Fr(parameter)43 b Fu(is)37 b(`)p Ft(@)p Fu(')g(or)f(`)p +Ft(*)p Fu(',)j(the)e(case)630 628 y(mo)s(di\014cation)29 +b(op)s(eration)f(is)g(applied)g(to)h(eac)m(h)h(p)s(ositional)f +(parameter)f(in)g(turn,)g(and)g(the)630 737 y(expansion)38 +b(is)g(the)g(resultan)m(t)h(list.)65 b(If)37 b Fr(parameter)46 +b Fu(is)38 b(an)g(arra)m(y)g(v)-5 b(ariable)39 b(subscripted)630 +847 y(with)26 b(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)h(the)f(case)h +(mo)s(di\014cation)f(op)s(eration)h(is)e(applied)h(to)h(eac)m(h)g(mem)m +(b)s(er)e(of)h(the)630 956 y(arra)m(y)31 b(in)f(turn,)f(and)h(the)h +(expansion)f(is)g(the)h(resultan)m(t)g(list.)150 1120 +y Ft(${)p Fj(parameter)p Ft(@)p Fj(operator)p Ft(})630 +1230 y Fu(The)d(expansion)h(is)f(either)h(a)g(transformation)g(of)g +(the)g(v)-5 b(alue)29 b(of)g Fr(parameter)35 b Fu(or)29 +b(informa-)630 1340 y(tion)e(ab)s(out)f Fr(parameter)33 +b Fu(itself,)28 b(dep)s(ending)c(on)i(the)h(v)-5 b(alue)26 +b(of)h Fr(op)s(erator)p Fu(.)39 b(Eac)m(h)27 b Fr(op)s(erator)630 +1449 y Fu(is)j(a)h(single)g(letter:)630 1613 y Ft(Q)432 +b Fu(The)30 b(expansion)h(is)g(a)g(string)f(that)i(is)f(the)g(v)-5 +b(alue)31 b(of)g Fr(parameter)37 b Fu(quoted)31 b(in)1110 +1723 y(a)g(format)f(that)h(can)g(b)s(e)f(reused)f(as)i(input.)630 +1887 y Ft(E)432 b Fu(The)27 b(expansion)g(is)g(a)g(string)h(that)f(is)h +(the)f(v)-5 b(alue)28 b(of)f Fr(parameter)34 b Fu(with)27 +b(bac)m(k-)1110 1996 y(slash)e(escap)s(e)h(sequences)f(expanded)g(as)g +(with)g(the)h Ft($'...)o(')e Fu(quoting)i(mec)m(h-)1110 +2106 y(anism.)630 2270 y Ft(P)432 b Fu(The)22 b(expansion)h(is)g(a)g +(string)g(that)g(is)g(the)g(result)g(of)g(expanding)f(the)h(v)-5 +b(alue)24 b(of)1110 2379 y Fr(parameter)31 b Fu(as)24 +b(if)f(it)h(w)m(ere)g(a)g(prompt)f(string)h(\(see)g(Section)h(6.9)g +([Con)m(trolling)1110 2489 y(the)31 b(Prompt],)f(page)h(97\).)630 +2653 y Ft(A)432 b Fu(The)24 b(expansion)g(is)g(a)h(string)f(in)g(the)g +(form)g(of)h(an)f(assignmen)m(t)h(statemen)m(t)h(or)1110 +2763 y Ft(declare)h Fu(command)i(that,)h(if)f(ev)-5 b(aluated,)31 +b(will)e(recreate)i Fr(parameter)36 b Fu(with)1110 2872 +y(its)31 b(attributes)g(and)e(v)-5 b(alue.)630 3036 y Ft(a)432 b Fu(The)30 b(expansion)g(is)g(a)h(string)f(consisting)h(of)g (\015ag)g(v)-5 b(alues)30 b(represen)m(ting)h Fr(pa-)1110 -789 y(rameter)7 b Fu('s)31 b(attributes.)630 951 y(If)e +3146 y(rameter)7 b Fu('s)31 b(attributes.)630 3310 y(If)e Fr(parameter)37 b Fu(is)30 b(`)p Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)g(the)g(op)s(eration)g(is)g(applied)f(to)i(eac)m(h)g(p)s -(ositional)f(parameter)630 1060 y(in)24 b(turn,)g(and)f(the)h +(ositional)f(parameter)630 3419 y(in)24 b(turn,)g(and)f(the)h (expansion)g(is)g(the)g(resultan)m(t)h(list.)39 b(If)23 b Fr(parameter)31 b Fu(is)24 b(an)g(arra)m(y)g(v)-5 b(ariable)630 -1170 y(subscripted)24 b(with)h(`)p Ft(@)p Fu(')h(or)g(`)p +3529 y(subscripted)24 b(with)h(`)p Ft(@)p Fu(')h(or)g(`)p Ft(*)p Fu(',)h(the)e(op)s(eration)h(is)g(applied)f(to)h(eac)m(h)h(mem)m -(b)s(er)e(of)h(the)f(arra)m(y)630 1279 y(in)30 b(turn,)g(and)f(the)i -(expansion)f(is)h(the)f(resultan)m(t)h(list.)630 1415 +(b)s(er)e(of)h(the)f(arra)m(y)630 3639 y(in)30 b(turn,)g(and)f(the)i +(expansion)f(is)h(the)f(resultan)m(t)h(list.)630 3775 y(The)22 b(result)g(of)g(the)h(expansion)f(is)g(sub)5 b(ject)22 b(to)h(w)m(ord)f(splitting)g(and)g(pathname)g(expansion)630 -1524 y(as)31 b(describ)s(ed)e(b)s(elo)m(w.)150 1726 y -Fk(3.5.4)63 b(Command)41 b(Substitution)150 1873 y Fu(Command)f +3885 y(as)31 b(describ)s(ed)e(b)s(elo)m(w.)150 4089 y +Fk(3.5.4)63 b(Command)41 b(Substitution)150 4236 y Fu(Command)f (substitution)h(allo)m(ws)i(the)e(output)g(of)h(a)f(command)g(to)h -(replace)g(the)g(command)f(itself.)150 1982 y(Command)29 +(replace)g(the)g(command)f(itself.)150 4345 y(Command)29 b(substitution)h(o)s(ccurs)h(when)e(a)i(command)f(is)g(enclosed)h(as)g -(follo)m(ws:)390 2119 y Ft($\()p Fj(command)p Ft(\))150 -2255 y Fu(or)390 2392 y Ft(`)p Fj(command)p Ft(`)150 -2529 y Fu(Bash)20 b(p)s(erforms)f(the)i(expansion)f(b)m(y)g(executing)i +(follo)m(ws:)390 4484 y Ft($\()p Fj(command)p Ft(\))150 +4623 y Fu(or)390 4763 y Ft(`)p Fj(command)p Ft(`)150 +4902 y Fu(Bash)20 b(p)s(erforms)f(the)i(expansion)f(b)m(y)g(executing)i Fr(command)h Fu(in)d(a)h(subshell)e(en)m(vironmen)m(t)i(and)f -(replacing)150 2638 y(the)40 b(command)g(substitution)f(with)h(the)g +(replacing)150 5011 y(the)40 b(command)g(substitution)f(with)h(the)g (standard)f(output)g(of)h(the)g(command,)i(with)e(an)m(y)g(trailing)150 -2748 y(newlines)e(deleted.)64 b(Em)m(b)s(edded)37 b(newlines)h(are)g +5121 y(newlines)e(deleted.)64 b(Em)m(b)s(edded)37 b(newlines)h(are)g (not)g(deleted,)j(but)d(they)g(ma)m(y)h(b)s(e)e(remo)m(v)m(ed)i(during) -150 2857 y(w)m(ord)30 b(splitting.)42 b(The)30 b(command)g +150 5230 y(w)m(ord)30 b(splitting.)42 b(The)30 b(command)g (substitution)h Ft($\(cat)e Fj(file)p Ft(\))g Fu(can)h(b)s(e)g -(replaced)h(b)m(y)g(the)f(equiv)-5 b(alen)m(t)150 2967 -y(but)30 b(faster)g Ft($\(<)g Fj(file)p Ft(\))p Fu(.)275 -3103 y(When)j(the)i(old-st)m(yle)h(bac)m(kquote)f(form)f(of)g +(replaced)h(b)m(y)g(the)f(equiv)-5 b(alen)m(t)150 5340 +y(but)30 b(faster)g Ft($\(<)g Fj(file)p Ft(\))p Fu(.)p +eop end +%%Page: 31 37 +TeXDict begin 31 36 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)275 299 +y(When)33 b(the)i(old-st)m(yle)h(bac)m(kquote)f(form)f(of)g (substitution)g(is)g(used,)h(bac)m(kslash)f(retains)h(its)f(literal)150 -3213 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e(`)p +408 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e(`)p Ft($)p Fu(',)j(`)p Ft(`)p Fu(',)f(or)e(`)p Ft(\\)p Fu('.)64 b(The)38 b(\014rst)f(bac)m(kquote)j(not)e(preceded)g(b)m(y)g(a)150 -3323 y(bac)m(kslash)k(terminates)f(the)h(command)e(substitution.)72 +518 y(bac)m(kslash)k(terminates)f(the)h(command)e(substitution.)72 b(When)41 b(using)f(the)i Ft($\()p Fj(command)p Ft(\))c -Fu(form,)43 b(all)150 3432 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the) -f(paren)m(theses)h(mak)m(e)g(up)f(the)g(command;)h(none)f(are)h -(treated)g(sp)s(ecially)-8 b(.)275 3569 y(Command)22 -b(substitutions)g(ma)m(y)i(b)s(e)e(nested.)39 b(T)-8 -b(o)23 b(nest)g(when)f(using)h(the)g(bac)m(kquoted)h(form,)g(escap)s(e) -150 3678 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m(kslashes.)275 -3815 y(If)e(the)i(substitution)e(app)s(ears)h(within)g(double)f -(quotes,)i(w)m(ord)f(splitting)h(and)f(\014lename)g(expansion)150 -3925 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150 -4126 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150 4273 -y Fu(Arithmetic)25 b(expansion)g(allo)m(ws)g(the)g(ev)-5 +Fu(form,)43 b(all)150 628 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the)f +(paren)m(theses)h(mak)m(e)g(up)f(the)g(command;)h(none)f(are)h(treated) +g(sp)s(ecially)-8 b(.)275 762 y(Command)22 b(substitutions)g(ma)m(y)i +(b)s(e)e(nested.)39 b(T)-8 b(o)23 b(nest)g(when)f(using)h(the)g(bac)m +(kquoted)h(form,)g(escap)s(e)150 872 y(the)31 b(inner)e(bac)m(kquotes)j +(with)e(bac)m(kslashes.)275 1007 y(If)e(the)i(substitution)e(app)s +(ears)h(within)g(double)f(quotes,)i(w)m(ord)f(splitting)h(and)f +(\014lename)g(expansion)150 1116 y(are)i(not)f(p)s(erformed)f(on)h(the) +h(results.)150 1316 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150 +1463 y Fu(Arithmetic)25 b(expansion)g(allo)m(ws)g(the)g(ev)-5 b(aluation)26 b(of)f(an)f(arithmetic)i(expression)e(and)g(the)g -(substitution)150 4382 y(of)31 b(the)f(result.)41 b(The)30 -b(format)g(for)g(arithmetic)i(expansion)e(is:)390 4519 -y Ft($\(\()47 b Fj(expression)e Ft(\)\))275 4655 y Fu(The)33 +(substitution)150 1572 y(of)31 b(the)f(result.)41 b(The)30 +b(format)g(for)g(arithmetic)i(expansion)e(is:)390 1707 +y Ft($\(\()47 b Fj(expression)e Ft(\)\))275 1841 y Fu(The)33 b(expression)g(is)h(treated)g(as)g(if)g(it)g(w)m(ere)g(within)f(double) -h(quotes,)h(but)e(a)h(double)f(quote)h(inside)150 4765 +h(quotes,)h(but)e(a)h(double)f(quote)h(inside)150 1951 y(the)k(paren)m(theses)g(is)g(not)g(treated)h(sp)s(ecially)-8 b(.)65 b(All)38 b(tok)m(ens)h(in)f(the)g(expression)f(undergo)g -(parameter)150 4875 y(and)26 b(v)-5 b(ariable)28 b(expansion,)g +(parameter)150 2061 y(and)26 b(v)-5 b(ariable)28 b(expansion,)g (command)e(substitution,)i(and)e(quote)i(remo)m(v)-5 -b(al.)41 b(The)26 b(result)h(is)g(treated)h(as)150 4984 +b(al.)41 b(The)26 b(result)h(is)g(treated)h(as)150 2170 y(the)j(arithmetic)g(expression)f(to)h(b)s(e)f(ev)-5 b(aluated.)42 b(Arithmetic)31 b(expansions)g(ma)m(y)g(b)s(e)e(nested.) -275 5121 y(The)34 b(ev)-5 b(aluation)37 b(is)f(p)s(erformed)e +275 2305 y(The)34 b(ev)-5 b(aluation)37 b(is)f(p)s(erformed)e (according)i(to)g(the)g(rules)f(listed)h(b)s(elo)m(w)g(\(see)g(Section) -g(6.5)h([Shell)150 5230 y(Arithmetic],)32 b(page)f(89\).)42 +g(6.5)h([Shell)150 2415 y(Arithmetic],)32 b(page)f(92\).)42 b(If)30 b(the)h(expression)f(is)g(in)m(v)-5 b(alid,)32 b(Bash)e(prin)m(ts)g(a)h(message)g(indicating)h(failure)150 -5340 y(to)f(the)g(standard)e(error)h(and)g(no)g(substitution)g(o)s -(ccurs.)p eop end -%%Page: 30 36 -TeXDict begin 30 35 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(30)150 299 -y Fk(3.5.6)63 b(Pro)s(cess)42 b(Substitution)150 446 -y Fu(Pro)s(cess)33 b(substitution)g(allo)m(ws)i(a)e(pro)s(cess's)g +2524 y(to)f(the)g(standard)e(error)h(and)g(no)g(substitution)g(o)s +(ccurs.)150 2724 y Fk(3.5.6)63 b(Pro)s(cess)42 b(Substitution)150 +2870 y Fu(Pro)s(cess)33 b(substitution)g(allo)m(ws)i(a)e(pro)s(cess's)g (input)f(or)h(output)g(to)h(b)s(e)f(referred)f(to)i(using)f(a)g -(\014lename.)150 555 y(It)d(tak)m(es)i(the)f(form)f(of)390 -696 y Ft(<\()p Fj(list)p Ft(\))150 836 y Fu(or)390 976 -y Ft(>\()p Fj(list)p Ft(\))150 1116 y Fu(The)e(pro)s(cess)h +(\014lename.)150 2980 y(It)d(tak)m(es)i(the)f(form)f(of)390 +3115 y Ft(<\()p Fj(list)p Ft(\))150 3249 y Fu(or)390 +3384 y Ft(>\()p Fj(list)p Ft(\))150 3519 y Fu(The)e(pro)s(cess)h Fr(list)j Fu(is)d(run)e(async)m(hronously)-8 b(,)30 b(and)e(its)i (input)e(or)h(output)f(app)s(ears)h(as)g(a)g(\014lename.)41 -b(This)150 1226 y(\014lename)25 b(is)g(passed)g(as)g(an)g(argumen)m(t)h +b(This)150 3628 y(\014lename)25 b(is)g(passed)g(as)g(an)g(argumen)m(t)h (to)g(the)f(curren)m(t)g(command)g(as)g(the)g(result)g(of)g(the)h -(expansion.)38 b(If)150 1335 y(the)28 b Ft(>\()p Fj(list)p +(expansion.)38 b(If)150 3738 y(the)28 b Ft(>\()p Fj(list)p Ft(\))d Fu(form)i(is)g(used,)h(writing)f(to)h(the)g(\014le)f(will)h (pro)m(vide)g(input)e(for)h Fr(list)p Fu(.)41 b(If)26 -b(the)i Ft(<\()p Fj(list)p Ft(\))d Fu(form)150 1445 y(is)g(used,)g(the) +b(the)i Ft(<\()p Fj(list)p Ft(\))d Fu(form)150 3848 y(is)g(used,)g(the) f(\014le)h(passed)f(as)h(an)f(argumen)m(t)h(should)e(b)s(e)h(read)h(to) g(obtain)g(the)f(output)g(of)h Fr(list)p Fu(.)40 b(Note)25 -b(that)150 1555 y(no)33 b(space)g(ma)m(y)g(app)s(ear)f(b)s(et)m(w)m +b(that)150 3957 y(no)33 b(space)g(ma)m(y)g(app)s(ear)f(b)s(et)m(w)m (een)i(the)f Ft(<)f Fu(or)h Ft(>)f Fu(and)g(the)h(left)h(paren)m -(thesis,)f(otherwise)h(the)f(construct)150 1664 y(w)m(ould)j(b)s(e)g +(thesis,)f(otherwise)h(the)f(construct)150 4067 y(w)m(ould)j(b)s(e)g (in)m(terpreted)g(as)h(a)f(redirection.)59 b(Pro)s(cess)36 b(substitution)g(is)h(supp)s(orted)d(on)i(systems)g(that)150 -1774 y(supp)s(ort)29 b(named)h(pip)s(es)f(\()p Fm(fif)n(o)p +4176 y(supp)s(ort)29 b(named)h(pip)s(es)f(\()p Fm(fif)n(o)p Fu(s\))h(or)h(the)f Ft(/dev/fd)f Fu(metho)s(d)h(of)g(naming)g(op)s(en)g -(\014les.)275 1914 y(When)36 b(a)m(v)-5 b(ailable,)40 +(\014les.)275 4311 y(When)36 b(a)m(v)-5 b(ailable,)40 b(pro)s(cess)c(substitution)h(is)f(p)s(erformed)f(sim)m(ultaneously)i -(with)g(parameter)g(and)150 2024 y(v)-5 b(ariable)31 +(with)g(parameter)g(and)150 4421 y(v)-5 b(ariable)31 b(expansion,)g(command)f(substitution,)g(and)g(arithmetic)i(expansion.) -150 2229 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150 -2376 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h(parameter)g +150 4620 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150 +4767 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h(parameter)g (expansion,)g(command)g(substitution,)g(and)f(arithmetic)150 -2485 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h -(quotes)h(for)f(w)m(ord)g(splitting.)275 2625 y(The)e(shell)g(treats)i +4877 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h +(quotes)h(for)f(w)m(ord)g(splitting.)275 5011 y(The)e(shell)g(treats)i (eac)m(h)g(c)m(haracter)g(of)f Ft($IFS)e Fu(as)i(a)g(delimiter,)h(and)e -(splits)g(the)h(results)f(of)h(the)g(other)150 2735 y(expansions)22 +(splits)g(the)h(results)f(of)h(the)g(other)150 5121 y(expansions)22 b(in)m(to)i(w)m(ords)e(using)h(these)g(c)m(haracters)h(as)f(\014eld)f (terminators.)39 b(If)22 b Ft(IFS)g Fu(is)h(unset,)h(or)e(its)h(v)-5 -b(alue)150 2845 y(is)36 b(exactly)j Ft()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 2954 +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 -3064 y(and)k(an)m(y)h(sequence)h(of)f Ft(IFS)f Fu(c)m(haracters)i(not)f +(results)g(of)g(the)g(previous)g(expansions)f(are)i(ignored,)p +eop end +%%Page: 32 38 +TeXDict begin 32 37 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(32)150 299 +y(and)36 b(an)m(y)h(sequence)h(of)f Ft(IFS)f Fu(c)m(haracters)i(not)f (at)h(the)f(b)s(eginning)f(or)h(end)f(serv)m(es)h(to)h(delimit)f(w)m -(ords.)150 3173 y(If)43 b Ft(IFS)f Fu(has)h(a)h(v)-5 -b(alue)43 b(other)h(than)f(the)g(default,)k(then)c(sequences)h(of)f -(the)h(whitespace)f(c)m(haracters)150 3283 y Ft(space)p -Fu(,)29 b Ft(tab)p Fu(,)h(and)g Ft(newline)e Fu(are)j(ignored)g(at)g -(the)f(b)s(eginning)g(and)g(end)g(of)g(the)h(w)m(ord,)f(as)h(long)g(as) -g(the)150 3393 y(whitespace)c(c)m(haracter)h(is)f(in)f(the)g(v)-5 +(ords.)150 408 y(If)43 b Ft(IFS)f Fu(has)h(a)h(v)-5 b(alue)43 +b(other)h(than)f(the)g(default,)k(then)c(sequences)h(of)f(the)h +(whitespace)f(c)m(haracters)150 518 y Ft(space)p Fu(,)29 +b Ft(tab)p Fu(,)h(and)g Ft(newline)e Fu(are)j(ignored)g(at)g(the)f(b)s +(eginning)g(and)g(end)g(of)g(the)h(w)m(ord,)f(as)h(long)g(as)g(the)150 +628 y(whitespace)c(c)m(haracter)h(is)f(in)f(the)g(v)-5 b(alue)27 b(of)g Ft(IFS)e Fu(\(an)i Ft(IFS)e Fu(whitespace)i(c)m -(haracter\).)42 b(An)m(y)26 b(c)m(haracter)i(in)150 3502 +(haracter\).)42 b(An)m(y)26 b(c)m(haracter)i(in)150 737 y Ft(IFS)c Fu(that)h(is)g(not)f Ft(IFS)g Fu(whitespace,)j(along)f(with) e(an)m(y)h(adjacen)m(t)h Ft(IFS)e Fu(whitespace)h(c)m(haracters,)i -(delimits)150 3612 y(a)k(\014eld.)40 b(A)31 b(sequence)g(of)f +(delimits)150 847 y(a)k(\014eld.)40 b(A)31 b(sequence)g(of)f Ft(IFS)g Fu(whitespace)h(c)m(haracters)h(is)e(also)h(treated)h(as)f(a)f -(delimiter.)42 b(If)30 b(the)g(v)-5 b(alue)150 3721 y(of)31 +(delimiter.)42 b(If)30 b(the)g(v)-5 b(alue)150 956 y(of)31 b Ft(IFS)e Fu(is)h(n)m(ull,)h(no)f(w)m(ord)g(splitting)h(o)s(ccurs.)275 -3862 y(Explicit)21 b(n)m(ull)g(argumen)m(ts)g(\()p Ft("")g +1114 y(Explicit)21 b(n)m(ull)g(argumen)m(ts)g(\()p Ft("")g Fu(or)g Ft('')p Fu(\))f(are)h(retained)h(and)e(passed)g(to)i(commands)e -(as)i(empt)m(y)f(strings.)150 3971 y(Unquoted)37 b(implicit)i(n)m(ull)f +(as)i(empt)m(y)f(strings.)150 1224 y(Unquoted)37 b(implicit)i(n)m(ull)f (argumen)m(ts,)i(resulting)d(from)g(the)h(expansion)g(of)g(parameters)f -(that)i(ha)m(v)m(e)150 4081 y(no)32 b(v)-5 b(alues,)33 +(that)i(ha)m(v)m(e)150 1333 y(no)32 b(v)-5 b(alues,)33 b(are)f(remo)m(v)m(ed.)47 b(If)32 b(a)g(parameter)h(with)e(no)h(v)-5 b(alue)33 b(is)f(expanded)f(within)h(double)f(quotes,)j(a)150 -4190 y(n)m(ull)c(argumen)m(t)g(results)g(and)f(is)h(retained)g(and)f +1443 y(n)m(ull)c(argumen)m(t)g(results)g(and)f(is)h(retained)g(and)f (passed)g(to)i(a)f(command)g(as)g(an)f(empt)m(y)i(string.)40 -b(When)150 4300 y(a)f(quoted)f(n)m(ull)g(argumen)m(t)h(app)s(ears)e(as) +b(When)150 1552 y(a)f(quoted)f(n)m(ull)g(argumen)m(t)h(app)s(ears)e(as) i(part)f(of)g(a)g(w)m(ord)g(whose)g(expansion)g(is)h(non-n)m(ull,)h -(the)e(n)m(ull)150 4409 y(argumen)m(t)i(is)f(remo)m(v)m(ed.)69 +(the)e(n)m(ull)150 1662 y(argumen)m(t)i(is)f(remo)m(v)m(ed.)69 b(That)39 b(is,)j(the)e(w)m(ord)f Ft(-d'')f Fu(b)s(ecomes)i Ft(-d)e Fu(after)i(w)m(ord)f(splitting)h(and)f(n)m(ull)150 -4519 y(argumen)m(t)31 b(remo)m(v)-5 b(al.)275 4659 y(Note)31 +1772 y(argumen)m(t)31 b(remo)m(v)-5 b(al.)275 1929 y(Note)31 b(that)g(if)g(no)f(expansion)g(o)s(ccurs,)g(no)h(splitting)g(is)f(p)s -(erformed.)150 4864 y Fk(3.5.8)63 b(Filename)41 b(Expansion)150 -5011 y Fu(After)30 b(w)m(ord)f(splitting,)i(unless)d(the)i +(erformed.)150 2152 y Fk(3.5.8)63 b(Filename)41 b(Expansion)150 +2299 y Fu(After)30 b(w)m(ord)f(splitting,)i(unless)d(the)i Ft(-f)f Fu(option)h(has)f(b)s(een)g(set)h(\(see)g(Section)h(4.3.1)g -([The)e(Set)h(Builtin],)150 5121 y(page)d(60\),)i(Bash)d(scans)h(eac)m +([The)e(Set)h(Builtin],)150 2408 y(page)d(61\),)i(Bash)d(scans)h(eac)m (h)h(w)m(ord)e(for)g(the)h(c)m(haracters)g(`)p Ft(*)p Fu(',)h(`)p Ft(?)p Fu(',)g(and)e(`)p Ft([)p Fu('.)39 -b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 5230 y(app)s(ears,)h +b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 2518 y(app)s(ears,)h (then)f(the)h(w)m(ord)f(is)h(regarded)g(as)g(a)g Fr(pattern)p Fu(,)g(and)g(replaced)g(with)f(an)h(alphab)s(etically)h(sorted)150 -5340 y(list)k(of)f(\014lenames)g(matc)m(hing)h(the)f(pattern)g(\(see)h -(Section)f(3.5.8.1)j([P)m(attern)e(Matc)m(hing],)h(page)f(31\).)43 -b(If)p eop end -%%Page: 31 37 -TeXDict begin 31 36 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)150 299 -y(no)26 b(matc)m(hing)i(\014lenames)e(are)h(found,)f(and)g(the)h(shell) -f(option)h Ft(nullglob)d Fu(is)j(disabled,)g(the)g(w)m(ord)f(is)g(left) -150 408 y(unc)m(hanged.)40 b(If)30 b(the)g Ft(nullglob)e -Fu(option)i(is)h(set,)f(and)g(no)g(matc)m(hes)h(are)g(found,)e(the)h(w) -m(ord)g(is)g(remo)m(v)m(ed.)150 518 y(If)i(the)g Ft(failglob)e -Fu(shell)i(option)h(is)f(set,)h(and)f(no)g(matc)m(hes)h(are)g(found,)e -(an)h(error)g(message)h(is)f(prin)m(ted)150 628 y(and)e(the)g(command)g -(is)h(not)f(executed.)42 b(If)30 b(the)g(shell)h(option)g -Ft(nocaseglob)c Fu(is)k(enabled,)f(the)h(matc)m(h)g(is)150 -737 y(p)s(erformed)e(without)h(regard)h(to)g(the)f(case)i(of)e(alphab)s -(etic)h(c)m(haracters.)275 876 y(When)23 b(a)h(pattern)f(is)h(used)f -(for)g(\014lename)h(expansion,)h(the)e(c)m(haracter)i(`)p -Ft(.)p Fu(')f(at)g(the)g(start)g(of)g(a)g(\014lename)150 -985 y(or)f(immediately)i(follo)m(wing)g(a)f(slash)f(m)m(ust)h(b)s(e)f -(matc)m(hed)h(explicitly)-8 b(,)27 b(unless)c(the)g(shell)h(option)g -Ft(dotglob)150 1095 y Fu(is)33 b(set.)51 b(When)33 b(matc)m(hing)h(a)g -(\014lename,)h(the)e(slash)h(c)m(haracter)h(m)m(ust)e(alw)m(a)m(ys)i(b) -s(e)e(matc)m(hed)h(explicitly)-8 b(.)150 1205 y(In)30 -b(other)g(cases,)i(the)e(`)p Ft(.)p Fu(')h(c)m(haracter)h(is)e(not)h -(treated)g(sp)s(ecially)-8 b(.)275 1343 y(See)28 b(the)g(description)g -(of)g Ft(shopt)e Fu(in)i(Section)g(4.3.2)i([The)e(Shopt)f(Builtin],)i -(page)g(64,)g(for)f(a)g(descrip-)150 1453 y(tion)j(of)f(the)h +2627 y(list)k(of)f(\014lenames)g(matc)m(hing)h(the)f(pattern)g(\(see)h +(Section)f(3.5.8.1)j([P)m(attern)e(Matc)m(hing],)h(page)f(33\).)43 +b(If)150 2737 y(no)26 b(matc)m(hing)i(\014lenames)e(are)h(found,)f(and) +g(the)h(shell)f(option)h Ft(nullglob)d Fu(is)j(disabled,)g(the)g(w)m +(ord)f(is)g(left)150 2846 y(unc)m(hanged.)40 b(If)30 +b(the)g Ft(nullglob)e Fu(option)i(is)h(set,)f(and)g(no)g(matc)m(hes)h +(are)g(found,)e(the)h(w)m(ord)g(is)g(remo)m(v)m(ed.)150 +2956 y(If)i(the)g Ft(failglob)e Fu(shell)i(option)h(is)f(set,)h(and)f +(no)g(matc)m(hes)h(are)g(found,)e(an)h(error)g(message)h(is)f(prin)m +(ted)150 3066 y(and)e(the)g(command)g(is)h(not)f(executed.)42 +b(If)30 b(the)g(shell)h(option)g Ft(nocaseglob)c Fu(is)k(enabled,)f +(the)h(matc)m(h)g(is)150 3175 y(p)s(erformed)e(without)h(regard)h(to)g +(the)f(case)i(of)e(alphab)s(etic)h(c)m(haracters.)275 +3333 y(When)23 b(a)h(pattern)f(is)h(used)f(for)g(\014lename)h +(expansion,)h(the)e(c)m(haracter)i(`)p Ft(.)p Fu(')f(at)g(the)g(start)g +(of)g(a)g(\014lename)150 3442 y(or)f(immediately)i(follo)m(wing)g(a)f +(slash)f(m)m(ust)h(b)s(e)f(matc)m(hed)h(explicitly)-8 +b(,)27 b(unless)c(the)g(shell)h(option)g Ft(dotglob)150 +3552 y Fu(is)k(set.)41 b(The)28 b(\014lenames)g(`)p Ft(.)p +Fu(')g(and)g(`)p Ft(..)p Fu(')g(m)m(ust)g(alw)m(a)m(ys)i(b)s(e)e(matc)m +(hed)h(explicitly)-8 b(,)30 b(ev)m(en)f(if)g Ft(dotglob)d +Fu(is)i(set.)150 3662 y(In)i(other)g(cases,)i(the)e(`)p +Ft(.)p Fu(')h(c)m(haracter)h(is)e(not)h(treated)g(sp)s(ecially)-8 +b(.)275 3819 y(When)30 b(matc)m(hing)i(a)f(\014lename,)h(the)f(slash)f +(c)m(haracter)j(m)m(ust)d(alw)m(a)m(ys)j(b)s(e)d(matc)m(hed)h +(explicitly)i(b)m(y)e(a)150 3929 y(slash)d(in)f(the)h(pattern,)h(but)e +(in)h(other)g(matc)m(hing)h(con)m(texts)h(it)e(can)g(b)s(e)g(matc)m +(hed)g(b)m(y)g(a)g(sp)s(ecial)h(pattern)150 4038 y(c)m(haracter)j(as)f +(describ)s(ed)e(b)s(elo)m(w)h(\(see)i(Section)f(3.5.8.1)i([P)m(attern)e +(Matc)m(hing],)i(page)e(33\).)275 4196 y(See)d(the)g(description)g(of)g +Ft(shopt)e Fu(in)i(Section)g(4.3.2)i([The)e(Shopt)f(Builtin],)i(page)g +(65,)g(for)f(a)g(descrip-)150 4306 y(tion)j(of)f(the)h Ft(nocaseglob)p Fu(,)d Ft(nullglob)p Fu(,)g Ft(failglob)p -Fu(,)h(and)g Ft(dotglob)g Fu(options.)275 1592 y(The)j -Ft(GLOBIGNORE)f Fu(shell)i(v)-5 b(ariable)34 b(ma)m(y)g(b)s(e)f(used)f -(to)i(restrict)g(the)g(set)f(of)h(\014lenames)f(matc)m(hing)i(a)150 -1701 y(pattern.)k(If)25 b Ft(GLOBIGNORE)e Fu(is)j(set,)h(eac)m(h)g -(matc)m(hing)g(\014lename)f(that)g(also)h(matc)m(hes)f(one)g(of)g(the)g -(patterns)150 1811 y(in)36 b Ft(GLOBIGNORE)d Fu(is)j(remo)m(v)m(ed)h -(from)e(the)i(list)f(of)g(matc)m(hes.)59 b(If)36 b(the)g -Ft(nocaseglob)d Fu(option)k(is)f(set,)i(the)150 1920 -y(matc)m(hing)i(against)g(the)f(patterns)f(in)h Ft(GLOBIGNORE)d -Fu(is)j(p)s(erformed)e(without)h(regard)h(to)h(case.)66 -b(The)150 2030 y(\014lenames)41 b Ft(.)f Fu(and)g Ft(..)h -Fu(are)g(alw)m(a)m(ys)h(ignored)f(when)f Ft(GLOBIGNORE)e -Fu(is)i(set)i(and)e(not)h(n)m(ull.)72 b(Ho)m(w)m(ev)m(er,)150 -2139 y(setting)30 b Ft(GLOBIGNORE)d Fu(to)j(a)f(non-n)m(ull)g(v)-5 +Fu(,)h(and)g Ft(dotglob)g Fu(options.)275 4463 y(The)36 +b Ft(GLOBIGNORE)d Fu(shell)k(v)-5 b(ariable)37 b(ma)m(y)g(b)s(e)f(used) +g(to)h(restrict)g(the)g(set)g(of)g(\014le)f(names)h(matc)m(hing)150 +4573 y(a)42 b(pattern.)74 b(If)41 b Ft(GLOBIGNORE)e Fu(is)i(set,)k(eac) +m(h)e(matc)m(hing)f(\014le)g(name)f(that)h(also)h(matc)m(hes)f(one)g +(of)g(the)150 4682 y(patterns)34 b(in)g Ft(GLOBIGNORE)d +Fu(is)k(remo)m(v)m(ed)g(from)f(the)g(list)h(of)f(matc)m(hes.)54 +b(If)33 b(the)i Ft(nocaseglob)c Fu(option)k(is)150 4792 +y(set,)c(the)e(matc)m(hing)i(against)g(the)f(patterns)f(in)h +Ft(GLOBIGNORE)c Fu(is)k(p)s(erformed)e(without)i(regard)f(to)i(case.) +150 4902 y(The)d(\014lenames)h Ft(.)g Fu(and)f Ft(..)h +Fu(are)g(alw)m(a)m(ys)h(ignored)f(when)f Ft(GLOBIGNORE)f +Fu(is)i(set)g(and)f(not)h(n)m(ull.)41 b(Ho)m(w)m(ev)m(er,)150 +5011 y(setting)30 b Ft(GLOBIGNORE)d Fu(to)j(a)f(non-n)m(ull)g(v)-5 b(alue)30 b(has)f(the)g(e\013ect)i(of)f(enabling)f(the)h -Ft(dotglob)d Fu(shell)i(option,)150 2249 y(so)j(all)h(other)f +Ft(dotglob)d Fu(shell)i(option,)150 5121 y(so)j(all)h(other)f (\014lenames)g(b)s(eginning)f(with)h(a)g(`)p Ft(.)p Fu(')g(will)h(matc) m(h.)46 b(T)-8 b(o)32 b(get)h(the)f(old)g(b)s(eha)m(vior)g(of)h -(ignoring)150 2359 y(\014lenames)c(b)s(eginning)f(with)h(a)h(`)p +(ignoring)150 5230 y(\014lenames)c(b)s(eginning)f(with)h(a)h(`)p Ft(.)p Fu(',)f(mak)m(e)h(`)p Ft(.*)p Fu(')f(one)h(of)f(the)g(patterns)g (in)g Ft(GLOBIGNORE)p Fu(.)37 b(The)29 b Ft(dotglob)150 -2468 y Fu(option)i(is)f(disabled)g(when)g Ft(GLOBIGNORE)d -Fu(is)k(unset.)150 2672 y Fk(3.5.8.1)63 b(P)m(attern)40 -b(Matc)m(hing)150 2819 y Fu(An)m(y)24 b(c)m(haracter)h(that)f(app)s -(ears)f(in)g(a)h(pattern,)i(other)e(than)f(the)h(sp)s(ecial)g(pattern)g -(c)m(haracters)h(describ)s(ed)150 2928 y(b)s(elo)m(w,)31 -b(matc)m(hes)g(itself.)42 b(The)29 b Fm(nul)h Fu(c)m(haracter)i(ma)m(y) -e(not)h(o)s(ccur)f(in)g(a)h(pattern.)40 b(A)31 b(bac)m(kslash)g(escap)s -(es)150 3038 y(the)38 b(follo)m(wing)g(c)m(haracter;)43 -b(the)37 b(escaping)i(bac)m(kslash)e(is)h(discarded)f(when)f(matc)m -(hing.)63 b(The)36 b(sp)s(ecial)150 3147 y(pattern)30 -b(c)m(haracters)i(m)m(ust)f(b)s(e)e(quoted)i(if)f(they)h(are)f(to)i(b)s -(e)d(matc)m(hed)i(literally)-8 b(.)275 3286 y(The)29 -b(sp)s(ecial)i(pattern)g(c)m(haracters)h(ha)m(v)m(e)f(the)g(follo)m -(wing)h(meanings:)150 3452 y Ft(*)432 b Fu(Matc)m(hes)31 -b(an)m(y)e(string,)h(including)f(the)g(n)m(ull)g(string.)41 -b(When)29 b(the)g Ft(globstar)e Fu(shell)i(option)630 -3561 y(is)37 b(enabled,)h(and)e(`)p Ft(*)p Fu(')h(is)g(used)f(in)g(a)h -(\014lename)g(expansion)g(con)m(text,)j(t)m(w)m(o)e(adjacen)m(t)g(`)p -Ft(*)p Fu('s)630 3671 y(used)f(as)g(a)h(single)g(pattern)g(will)f(matc) -m(h)i(all)f(\014les)f(and)g(zero)h(or)g(more)f(directories)i(and)630 -3780 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p +5340 y Fu(option)i(is)f(disabled)g(when)g Ft(GLOBIGNORE)d +Fu(is)k(unset.)p eop end +%%Page: 33 39 +TeXDict begin 33 38 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(33)150 299 +y Fk(3.5.8.1)63 b(P)m(attern)40 b(Matc)m(hing)150 446 +y Fu(An)m(y)24 b(c)m(haracter)h(that)f(app)s(ears)f(in)g(a)h(pattern,)i +(other)e(than)f(the)h(sp)s(ecial)g(pattern)g(c)m(haracters)h(describ)s +(ed)150 555 y(b)s(elo)m(w,)31 b(matc)m(hes)g(itself.)42 +b(The)29 b Fm(nul)h Fu(c)m(haracter)i(ma)m(y)e(not)h(o)s(ccur)f(in)g(a) +h(pattern.)40 b(A)31 b(bac)m(kslash)g(escap)s(es)150 +665 y(the)38 b(follo)m(wing)g(c)m(haracter;)43 b(the)37 +b(escaping)i(bac)m(kslash)e(is)h(discarded)f(when)f(matc)m(hing.)63 +b(The)36 b(sp)s(ecial)150 775 y(pattern)30 b(c)m(haracters)i(m)m(ust)f +(b)s(e)e(quoted)i(if)f(they)h(are)f(to)i(b)s(e)d(matc)m(hed)i +(literally)-8 b(.)275 901 y(The)29 b(sp)s(ecial)i(pattern)g(c)m +(haracters)h(ha)m(v)m(e)f(the)g(follo)m(wing)h(meanings:)150 +1045 y Ft(*)432 b Fu(Matc)m(hes)31 b(an)m(y)e(string,)h(including)f +(the)g(n)m(ull)g(string.)41 b(When)29 b(the)g Ft(globstar)e +Fu(shell)i(option)630 1155 y(is)37 b(enabled,)h(and)e(`)p +Ft(*)p Fu(')h(is)g(used)f(in)g(a)h(\014lename)g(expansion)g(con)m +(text,)j(t)m(w)m(o)e(adjacen)m(t)g(`)p Ft(*)p Fu('s)630 +1264 y(used)f(as)g(a)h(single)g(pattern)g(will)f(matc)m(h)i(all)f +(\014les)f(and)g(zero)h(or)g(more)f(directories)i(and)630 +1374 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p Ft(/)p Fu(',)h(t)m(w)m(o)g(adjacen)m(t)h(`)p Ft(*)p Fu('s)e(will)g -(matc)m(h)h(only)f(directories)630 3890 y(and)k(sub)s(directories.)150 -4054 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.) -150 4217 y Ft([...)o(])241 b Fu(Matc)m(hes)27 b(an)m(y)e(one)g(of)g +(matc)m(h)h(only)f(directories)630 1484 y(and)k(sub)s(directories.)150 +1627 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.) +150 1771 y Ft([...)o(])241 b Fu(Matc)m(hes)27 b(an)m(y)e(one)g(of)g (the)g(enclosed)g(c)m(haracters.)41 b(A)25 b(pair)f(of)h(c)m(haracters) -i(separated)e(b)m(y)g(a)630 4327 y(h)m(yphen)k(denotes)i(a)g +i(separated)e(b)m(y)g(a)630 1881 y(h)m(yphen)k(denotes)i(a)g Fr(range)g(expression)p Fu(;)f(an)m(y)h(c)m(haracter)h(that)f(falls)g -(b)s(et)m(w)m(een)g(those)g(t)m(w)m(o)630 4436 y(c)m(haracters,)d +(b)s(et)m(w)m(een)g(those)g(t)m(w)m(o)630 1990 y(c)m(haracters,)d (inclusiv)m(e,)f(using)d(the)h(curren)m(t)f(lo)s(cale's)j(collating)g -(sequence)e(and)f(c)m(haracter)630 4546 y(set,)31 b(is)f(matc)m(hed.)42 +(sequence)e(and)f(c)m(haracter)630 2100 y(set,)31 b(is)f(matc)m(hed.)42 b(If)30 b(the)g(\014rst)g(c)m(haracter)i(follo)m(wing)g(the)e(`)p Ft([)p Fu(')h(is)f(a)h(`)p Ft(!)p Fu(')f(or)g(a)h(`)p -Ft(^)p Fu(')g(then)f(an)m(y)630 4655 y(c)m(haracter)c(not)f(enclosed)g +Ft(^)p Fu(')g(then)f(an)m(y)630 2210 y(c)m(haracter)c(not)f(enclosed)g (is)g(matc)m(hed.)40 b(A)25 b(`)p Fq(\000)p Fu(')f(ma)m(y)i(b)s(e)e -(matc)m(hed)h(b)m(y)f(including)h(it)g(as)g(the)630 4765 +(matc)m(hed)h(b)m(y)f(including)h(it)g(as)g(the)630 2319 y(\014rst)32 b(or)h(last)h(c)m(haracter)h(in)e(the)g(set.)50 b(A)33 b(`)p Ft(])p Fu(')g(ma)m(y)h(b)s(e)e(matc)m(hed)i(b)m(y)f -(including)g(it)g(as)h(the)630 4875 y(\014rst)25 b(c)m(haracter)i(in)e +(including)g(it)g(as)h(the)630 2429 y(\014rst)25 b(c)m(haracter)i(in)e (the)h(set.)40 b(The)25 b(sorting)h(order)f(of)h(c)m(haracters)h(in)f -(range)g(expressions)f(is)630 4984 y(determined)h(b)m(y)h(the)g(curren) +(range)g(expressions)f(is)630 2538 y(determined)h(b)m(y)h(the)g(curren) m(t)f(lo)s(cale)j(and)d(the)h(v)-5 b(alues)27 b(of)g(the)g -Ft(LC_COLLATE)d Fu(and)i Ft(LC_ALL)630 5094 y Fu(shell)31 -b(v)-5 b(ariables,)31 b(if)f(set.)630 5230 y(F)-8 b(or)34 +Ft(LC_COLLATE)d Fu(and)i Ft(LC_ALL)630 2648 y Fu(shell)31 +b(v)-5 b(ariables,)31 b(if)f(set.)630 2775 y(F)-8 b(or)34 b(example,)g(in)f(the)g(default)g(C)f(lo)s(cale,)k(`)p Ft([a-dx-z])p Fu(')31 b(is)i(equiv)-5 b(alen)m(t)34 b(to)g(`)p -Ft([abcdxyz])p Fu('.)630 5340 y(Man)m(y)68 b(lo)s(cales)h(sort)f(c)m +Ft([abcdxyz])p Fu('.)630 2884 y(Man)m(y)68 b(lo)s(cales)h(sort)f(c)m (haracters)h(in)e(dictionary)i(order,)76 b(and)67 b(in)g(these)h(lo)s -(cales)p eop end -%%Page: 32 38 -TeXDict begin 32 37 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(32)630 299 -y(`)p Ft([a-dx-z])p Fu(')36 b(is)i(t)m(ypically)i(not)e(equiv)-5 -b(alen)m(t)39 b(to)g(`)p Ft([abcdxyz])p Fu(';)g(it)g(migh)m(t)f(b)s(e)f -(equiv)-5 b(alen)m(t)630 408 y(to)34 b(`)p Ft([aBbCcDdxXyYz])p -Fu(',)c(for)j(example.)49 b(T)-8 b(o)33 b(obtain)h(the)f(traditional)h -(in)m(terpretation)h(of)630 518 y(ranges)e(in)f(brac)m(k)m(et)i -(expressions,)g(y)m(ou)f(can)g(force)g(the)g(use)f(of)h(the)g(C)f(lo)s -(cale)i(b)m(y)f(setting)630 628 y(the)c Ft(LC_COLLATE)e -Fu(or)i Ft(LC_ALL)f Fu(en)m(vironmen)m(t)i(v)-5 b(ariable)30 -b(to)g(the)f(v)-5 b(alue)30 b(`)p Ft(C)p Fu(',)g(or)f(enable)h(the)630 -737 y Ft(globasciiranges)c Fu(shell)31 b(option.)630 -873 y(Within)23 b(`)p Ft([)p Fu(')h(and)e(`)p Ft(])p -Fu(',)j Fr(c)m(haracter)g(classes)j Fu(can)c(b)s(e)e(sp)s(eci\014ed)h -(using)f(the)i(syn)m(tax)f Ft([:)p Fr(class)t Ft(:])p -Fu(,)630 983 y(where)30 b Fr(class)35 b Fu(is)30 b(one)h(of)f(the)h -(follo)m(wing)h(classes)f(de\014ned)e(in)h(the)h Fm(posix)f -Fu(standard:)870 1119 y Ft(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g -(digit)g(graph)g(lower)870 1228 y(print)g(punct)g(space)f(upper)h(word) -190 b(xdigit)630 1364 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h -(an)m(y)f(c)m(haracter)h(b)s(elonging)f(to)g(that)g(class.)75 -b(The)41 b Ft(word)630 1474 y Fu(c)m(haracter)32 b(class)f(matc)m(hes)h +(cales)630 2994 y(`)p Ft([a-dx-z])p Fu(')36 b(is)i(t)m(ypically)i(not)e +(equiv)-5 b(alen)m(t)39 b(to)g(`)p Ft([abcdxyz])p Fu(';)g(it)g(migh)m +(t)f(b)s(e)f(equiv)-5 b(alen)m(t)630 3104 y(to)34 b(`)p +Ft([aBbCcDdxXyYz])p Fu(',)c(for)j(example.)49 b(T)-8 +b(o)33 b(obtain)h(the)f(traditional)h(in)m(terpretation)h(of)630 +3213 y(ranges)e(in)f(brac)m(k)m(et)i(expressions,)g(y)m(ou)f(can)g +(force)g(the)g(use)f(of)h(the)g(C)f(lo)s(cale)i(b)m(y)f(setting)630 +3323 y(the)c Ft(LC_COLLATE)e Fu(or)i Ft(LC_ALL)f Fu(en)m(vironmen)m(t)i +(v)-5 b(ariable)30 b(to)g(the)f(v)-5 b(alue)30 b(`)p +Ft(C)p Fu(',)g(or)f(enable)h(the)630 3432 y Ft(globasciiranges)c +Fu(shell)31 b(option.)630 3559 y(Within)23 b(`)p Ft([)p +Fu(')h(and)e(`)p Ft(])p Fu(',)j Fr(c)m(haracter)g(classes)j +Fu(can)c(b)s(e)e(sp)s(eci\014ed)h(using)f(the)i(syn)m(tax)f +Ft([:)p Fr(class)t Ft(:])p Fu(,)630 3669 y(where)30 b +Fr(class)35 b Fu(is)30 b(one)h(of)f(the)h(follo)m(wing)h(classes)f +(de\014ned)e(in)h(the)h Fm(posix)f Fu(standard:)870 3795 +y Ft(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g(digit)g(graph)g(lower) +870 3905 y(print)g(punct)g(space)f(upper)h(word)190 b(xdigit)630 +4032 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h(an)m(y)f(c)m +(haracter)h(b)s(elonging)f(to)g(that)g(class.)75 b(The)41 +b Ft(word)630 4141 y Fu(c)m(haracter)32 b(class)f(matc)m(hes)h (letters,)f(digits,)h(and)d(the)i(c)m(haracter)h(`)p -Ft(_)p Fu('.)630 1610 y(Within)25 b(`)p Ft([)p Fu(')f(and)g(`)p +Ft(_)p Fu('.)630 4268 y(Within)25 b(`)p Ft([)p Fu(')f(and)g(`)p Ft(])p Fu(',)i(an)e Fr(equiv)-5 b(alence)26 b(class)j Fu(can)24 b(b)s(e)g(sp)s(eci\014ed)g(using)g(the)g(syn)m(tax)h -Ft([=)p Fr(c)6 b Ft(=])p Fu(,)630 1720 y(whic)m(h)29 +Ft([=)p Fr(c)6 b Ft(=])p Fu(,)630 4378 y(whic)m(h)29 b(matc)m(hes)i(all)f(c)m(haracters)h(with)e(the)h(same)g(collation)h(w) -m(eigh)m(t)g(\(as)f(de\014ned)e(b)m(y)i(the)630 1829 +m(eigh)m(t)g(\(as)f(de\014ned)e(b)m(y)i(the)630 4487 y(curren)m(t)g(lo)s(cale\))j(as)d(the)h(c)m(haracter)h -Fr(c)p Fu(.)630 1965 y(Within)22 b(`)p Ft([)p Fu(')f(and)g(`)p +Fr(c)p Fu(.)630 4614 y(Within)22 b(`)p Ft([)p Fu(')f(and)g(`)p Ft(])p Fu(',)j(the)d(syn)m(tax)h Ft([.)p Fr(sym)m(b)s(ol)t Ft(.])e Fu(matc)m(hes)i(the)g(collating)i(sym)m(b)s(ol)d -Fr(sym)m(b)s(ol)p Fu(.)275 2129 y(If)29 b(the)g Ft(extglob)f +Fr(sym)m(b)s(ol)p Fu(.)275 4758 y(If)29 b(the)g Ft(extglob)f Fu(shell)h(option)h(is)g(enabled)f(using)g(the)h Ft(shopt)e -Fu(builtin,)h(sev)m(eral)i(extended)f(pattern)150 2239 +Fu(builtin,)h(sev)m(eral)i(extended)f(pattern)150 4867 y(matc)m(hing)37 b(op)s(erators)e(are)h(recognized.)58 b(In)35 b(the)g(follo)m(wing)i(description,)g(a)f Fr(pattern-list)j -Fu(is)d(a)g(list)g(of)150 2348 y(one)d(or)f(more)h(patterns)f +Fu(is)d(a)g(list)g(of)150 4977 y(one)d(or)f(more)h(patterns)f (separated)h(b)m(y)f(a)h(`)p Ft(|)p Fu('.)47 b(Comp)s(osite)33 b(patterns)f(ma)m(y)i(b)s(e)d(formed)h(using)g(one)h(or)150 -2458 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150 -2622 y Ft(?\()p Fj(pattern-list)p Ft(\))630 2731 y Fu(Matc)m(hes)h -(zero)f(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m(en)g(patterns.)150 -2894 y Ft(*\()p Fj(pattern-list)p Ft(\))630 3003 y Fu(Matc)m(hes)h -(zero)f(or)g(more)f(o)s(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.) -150 3166 y Ft(+\()p Fj(pattern-list)p Ft(\))630 3275 -y Fu(Matc)m(hes)h(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m -(en)i(patterns.)150 3437 y Ft(@\()p Fj(pattern-list)p -Ft(\))630 3547 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.) -150 3709 y Ft(!\()p Fj(pattern-list)p Ft(\))630 3819 -y Fu(Matc)m(hes)h(an)m(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g -(patterns.)150 4021 y Fk(3.5.9)63 b(Quote)41 b(Remo)m(v)-7 -b(al)150 4168 y Fu(After)32 b(the)g(preceding)g(expansions,)h(all)f -(unquoted)f(o)s(ccurrences)h(of)g(the)h(c)m(haracters)g(`)p -Ft(\\)p Fu(',)g(`)p Ft(')p Fu(',)f(and)g(`)p Ft(")p Fu(')150 -4278 y(that)f(did)f(not)g(result)g(from)g(one)h(of)g(the)f(ab)s(o)m(v)m -(e)i(expansions)e(are)h(remo)m(v)m(ed.)150 4523 y Fs(3.6)68 -b(Redirections)150 4682 y Fu(Before)32 b(a)f(command)f(is)h(executed,)h +5087 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150 +5230 y Ft(?\()p Fj(pattern-list)p Ft(\))630 5340 y Fu(Matc)m(hes)h +(zero)f(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m(en)g(patterns.)p +eop end +%%Page: 34 40 +TeXDict begin 34 39 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(34)150 299 +y Ft(*\()p Fj(pattern-list)p Ft(\))630 408 y Fu(Matc)m(hes)32 +b(zero)f(or)g(more)f(o)s(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.) +150 554 y Ft(+\()p Fj(pattern-list)p Ft(\))630 663 y +Fu(Matc)m(hes)h(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m(en) +i(patterns.)150 809 y Ft(@\()p Fj(pattern-list)p Ft(\))630 +918 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.)150 +1064 y Ft(!\()p Fj(pattern-list)p Ft(\))630 1173 y Fu(Matc)m(hes)h(an)m +(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g(patterns.)275 +1319 y(Complicated)41 b(extended)f(pattern)g(matc)m(hing)h(against)h +(long)f(strings)f(is)g(slo)m(w,)k(esp)s(ecially)d(when)150 +1428 y(the)29 b(patterns)g(con)m(tain)i(alternations)f(and)f(the)g +(strings)g(con)m(tain)h(m)m(ultiple)g(matc)m(hes.)42 +b(Using)29 b(separate)150 1538 y(matc)m(hes)38 b(against)g(shorter)e +(strings,)i(or)f(using)f(arra)m(ys)h(of)g(strings)f(instead)h(of)g(a)g +(single)g(long)h(string,)150 1647 y(ma)m(y)31 b(b)s(e)f(faster.)150 +1833 y Fk(3.5.9)63 b(Quote)41 b(Remo)m(v)-7 b(al)150 +1979 y Fu(After)32 b(the)g(preceding)g(expansions,)h(all)f(unquoted)f +(o)s(ccurrences)h(of)g(the)h(c)m(haracters)g(`)p Ft(\\)p +Fu(',)g(`)p Ft(')p Fu(',)f(and)g(`)p Ft(")p Fu(')150 +2089 y(that)f(did)f(not)g(result)g(from)g(one)h(of)g(the)f(ab)s(o)m(v)m +(e)i(expansions)e(are)h(remo)m(v)m(ed.)150 2316 y Fs(3.6)68 +b(Redirections)150 2475 y Fu(Before)32 b(a)f(command)f(is)h(executed,)h (its)f(input)e(and)h(output)h(ma)m(y)g(b)s(e)f Fr(redirected)k -Fu(using)c(a)i(sp)s(ecial)f(no-)150 4792 y(tation)d(in)m(terpreted)f(b) +Fu(using)c(a)i(sp)s(ecial)f(no-)150 2585 y(tation)d(in)m(terpreted)f(b) m(y)f(the)h(shell.)40 b(Redirection)27 b(allo)m(ws)h(commands')f -(\014le)f(handles)g(to)i(b)s(e)e(duplicated,)150 4902 +(\014le)f(handles)g(to)i(b)s(e)e(duplicated,)150 2694 y(op)s(ened,)i(closed,)i(made)e(to)h(refer)f(to)h(di\013eren)m(t)f (\014les,)h(and)f(can)g(c)m(hange)h(the)g(\014les)f(the)g(command)g -(reads)150 5011 y(from)39 b(and)g(writes)h(to.)69 b(Redirection)40 +(reads)150 2804 y(from)39 b(and)g(writes)h(to.)69 b(Redirection)40 b(ma)m(y)g(also)h(b)s(e)e(used)g(to)h(mo)s(dify)f(\014le)g(handles)g -(in)g(the)h(curren)m(t)150 5121 y(shell)e(execution)h(en)m(vironmen)m +(in)g(the)h(curren)m(t)150 2914 y(shell)e(execution)h(en)m(vironmen)m (t.)65 b(The)37 b(follo)m(wing)j(redirection)f(op)s(erators)f(ma)m(y)g -(precede)h(or)f(app)s(ear)150 5230 y(an)m(ywhere)30 b(within)f(a)h +(precede)h(or)f(app)s(ear)150 3023 y(an)m(ywhere)30 b(within)f(a)h (simple)f(command)h(or)f(ma)m(y)i(follo)m(w)g(a)f(command.)40 -b(Redirections)30 b(are)g(pro)s(cessed)150 5340 y(in)g(the)h(order)f -(they)g(app)s(ear,)g(from)g(left)h(to)g(righ)m(t.)p eop -end -%%Page: 33 39 -TeXDict begin 33 38 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(33)275 299 -y(Eac)m(h)45 b(redirection)h(that)f(ma)m(y)h(b)s(e)e(preceded)g(b)m(y)h -(a)h(\014le)f(descriptor)f(n)m(um)m(b)s(er)g(ma)m(y)h(instead)h(b)s(e) -150 408 y(preceded)41 b(b)m(y)g(a)h(w)m(ord)f(of)g(the)h(form)f +b(Redirections)30 b(are)g(pro)s(cessed)150 3133 y(in)g(the)h(order)f +(they)g(app)s(ear,)g(from)g(left)h(to)g(righ)m(t.)275 +3260 y(Eac)m(h)45 b(redirection)h(that)f(ma)m(y)h(b)s(e)e(preceded)g(b) +m(y)h(a)h(\014le)f(descriptor)f(n)m(um)m(b)s(er)g(ma)m(y)h(instead)h(b) +s(e)150 3370 y(preceded)41 b(b)m(y)g(a)h(w)m(ord)f(of)g(the)h(form)f Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(.)74 b(In)41 b(this)g(case,)k -(for)c(eac)m(h)i(redirection)f(op)s(erator)150 518 y(except)30 +(for)c(eac)m(h)i(redirection)f(op)s(erator)150 3479 y(except)30 b Ft(>)p Fu(&-)f(and)f Ft(<)p Fu(&-,)h(the)g(shell)g(will)h(allo)s (cate)h(a)e(\014le)h(descriptor)e(greater)j(than)d(10)i(and)e(assign)i -(it)f(to)150 628 y Fi({)p Fr(v)-5 b(arname)5 b Fi(})p +(it)f(to)150 3589 y Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(.)45 b(If)31 b Ft(>)p Fu(&-)g(or)h Ft(<)p Fu(&-)f(is)h(preceded)f(b) m(y)g Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(,)33 b(the)f(v)-5 b(alue)32 b(of)g Fr(v)-5 b(arname)36 b Fu(de\014nes)31 -b(the)h(\014le)150 737 y(descriptor)e(to)h(close.)275 -877 y(In)c(the)i(follo)m(wing)h(descriptions,)g(if)e(the)h(\014le)g +b(the)h(\014le)150 3698 y(descriptor)i(to)g(close.)52 +b(If)34 b Fi({)p Fr(v)-5 b(arname)5 b Fi(})34 b Fu(is)g(supplied,)g +(the)g(redirection)g(p)s(ersists)f(b)s(ey)m(ond)g(the)h(scop)s(e)g(of) +150 3808 y(the)d(command,)f(allo)m(wing)i(the)f(shell)f(programmer)g +(to)h(manage)h(the)e(\014le)h(descriptor)f(himself.)275 +3936 y(In)d(the)i(follo)m(wing)h(descriptions,)g(if)e(the)h(\014le)g (descriptor)f(n)m(um)m(b)s(er)g(is)g(omitted,)i(and)f(the)f(\014rst)g -(c)m(har-)150 986 y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g +(c)m(har-)150 4045 y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g (is)g(`)p Ft(<)p Fu(',)i(the)e(redirection)g(refers)g(to)g(the)g -(standard)f(input)f(\(\014le)150 1096 y(descriptor)33 +(standard)f(input)f(\(\014le)150 4155 y(descriptor)33 b(0\).)49 b(If)33 b(the)g(\014rst)f(c)m(haracter)i(of)g(the)f (redirection)g(op)s(erator)h(is)f(`)p Ft(>)p Fu(',)h(the)f(redirection) -g(refers)150 1205 y(to)e(the)g(standard)e(output)h(\(\014le)h -(descriptor)f(1\).)275 1345 y(The)h(w)m(ord)h(follo)m(wing)i(the)f +g(refers)150 4264 y(to)e(the)g(standard)e(output)h(\(\014le)h +(descriptor)f(1\).)275 4392 y(The)h(w)m(ord)h(follo)m(wing)i(the)f (redirection)g(op)s(erator)f(in)g(the)h(follo)m(wing)h(descriptions,)f -(unless)e(other-)150 1455 y(wise)21 b(noted,)i(is)e(sub)5 +(unless)e(other-)150 4501 y(wise)21 b(noted,)i(is)e(sub)5 b(jected)21 b(to)h(brace)f(expansion,)i(tilde)f(expansion,)h(parameter) -e(expansion,)i(command)150 1564 y(substitution,)31 b(arithmetic)h +e(expansion,)i(command)150 4611 y(substitution,)31 b(arithmetic)h (expansion,)f(quote)h(remo)m(v)-5 b(al,)33 b(\014lename)e(expansion,)g -(and)f(w)m(ord)h(splitting.)150 1674 y(If)f(it)h(expands)e(to)i(more)g +(and)f(w)m(ord)h(splitting.)150 4721 y(If)f(it)h(expands)e(to)i(more)g (than)f(one)h(w)m(ord,)f(Bash)h(rep)s(orts)e(an)h(error.)275 -1813 y(Note)h(that)g(the)g(order)f(of)g(redirections)h(is)g +4848 y(Note)h(that)g(the)g(order)f(of)g(redirections)h(is)g (signi\014can)m(t.)41 b(F)-8 b(or)31 b(example,)h(the)e(command)390 -1953 y Ft(ls)47 b(>)h Fj(dirlist)d Ft(2>&1)150 2092 y +4975 y Ft(ls)47 b(>)h Fj(dirlist)d Ft(2>&1)150 5103 y Fu(directs)28 b(b)s(oth)f(standard)g(output)g(\(\014le)h(descriptor)f (1\))i(and)e(standard)f(error)i(\(\014le)g(descriptor)f(2\))h(to)h(the) -150 2202 y(\014le)h Fr(dirlist)p Fu(,)h(while)f(the)h(command)390 -2341 y Ft(ls)47 b(2>&1)g(>)g Fj(dirlist)150 2481 y Fu(directs)28 -b(only)f(the)h(standard)e(output)i(to)g(\014le)f Fr(dirlist)p -Fu(,)h(b)s(ecause)g(the)f(standard)g(error)g(w)m(as)h(made)f(a)h(cop)m -(y)150 2590 y(of)j(the)f(standard)g(output)g(b)s(efore)g(the)g -(standard)g(output)g(w)m(as)g(redirected)h(to)g Fr(dirlist)p -Fu(.)275 2730 y(Bash)26 b(handles)f(sev)m(eral)j(\014lenames)e(sp)s -(ecially)h(when)f(they)g(are)g(used)g(in)g(redirections,)i(as)e -(describ)s(ed)150 2839 y(in)38 b(the)h(follo)m(wing)h(table.)66 -b(If)38 b(the)h(op)s(erating)g(system)f(on)h(whic)m(h)f(Bash)h(is)f -(running)f(pro)m(vides)h(these)150 2949 y(sp)s(ecial)27 -b(\014les,)g(bash)e(will)i(use)f(them;)h(otherwise)g(it)f(will)h(em)m -(ulate)h(them)e(in)m(ternally)h(with)f(the)g(b)s(eha)m(vior)150 -3059 y(describ)s(ed)j(b)s(elo)m(w.)150 3225 y Ft(/dev/fd/)p -Fj(fd)630 3335 y Fu(If)h Fr(fd)j Fu(is)d(a)h(v)-5 b(alid)31 -b(in)m(teger,)h(\014le)e(descriptor)h Fr(fd)i Fu(is)d(duplicated.)150 -3499 y Ft(/dev/stdin)630 3609 y Fu(File)i(descriptor)e(0)h(is)f -(duplicated.)150 3773 y Ft(/dev/stdout)630 3883 y Fu(File)i(descriptor) -e(1)h(is)f(duplicated.)150 4047 y Ft(/dev/stderr)630 -4157 y Fu(File)i(descriptor)e(2)h(is)f(duplicated.)150 -4321 y Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 4431 +150 5213 y(\014le)h Fr(dirlist)p Fu(,)h(while)f(the)h(command)390 +5340 y Ft(ls)47 b(2>&1)g(>)g Fj(dirlist)p eop end +%%Page: 35 41 +TeXDict begin 35 40 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(35)150 299 +y(directs)28 b(only)f(the)h(standard)e(output)i(to)g(\014le)f +Fr(dirlist)p Fu(,)h(b)s(ecause)g(the)f(standard)g(error)g(w)m(as)h +(made)f(a)h(cop)m(y)150 408 y(of)j(the)f(standard)g(output)g(b)s(efore) +g(the)g(standard)g(output)g(w)m(as)g(redirected)h(to)g +Fr(dirlist)p Fu(.)275 543 y(Bash)26 b(handles)f(sev)m(eral)j +(\014lenames)e(sp)s(ecially)h(when)f(they)g(are)g(used)g(in)g +(redirections,)i(as)e(describ)s(ed)150 652 y(in)38 b(the)h(follo)m +(wing)h(table.)66 b(If)38 b(the)h(op)s(erating)g(system)f(on)h(whic)m +(h)f(Bash)h(is)f(running)f(pro)m(vides)h(these)150 762 +y(sp)s(ecial)27 b(\014les,)g(bash)e(will)i(use)f(them;)h(otherwise)g +(it)f(will)h(em)m(ulate)h(them)e(in)m(ternally)h(with)f(the)g(b)s(eha)m +(vior)150 871 y(describ)s(ed)j(b)s(elo)m(w.)150 1030 +y Ft(/dev/fd/)p Fj(fd)630 1140 y Fu(If)h Fr(fd)j Fu(is)d(a)h(v)-5 +b(alid)31 b(in)m(teger,)h(\014le)e(descriptor)h Fr(fd)i +Fu(is)d(duplicated.)150 1298 y Ft(/dev/stdin)630 1408 +y Fu(File)i(descriptor)e(0)h(is)f(duplicated.)150 1566 +y Ft(/dev/stdout)630 1676 y Fu(File)i(descriptor)e(1)h(is)f +(duplicated.)150 1835 y Ft(/dev/stderr)630 1944 y Fu(File)i(descriptor) +e(2)h(is)f(duplicated.)150 2103 y Ft(/dev/tcp/)p Fj(host)p +Ft(/)p Fj(port)630 2212 y Fu(If)41 b Fr(host)i Fu(is)f(a)g(v)-5 +b(alid)41 b(hostname)h(or)f(In)m(ternet)h(address,)i(and)c +Fr(p)s(ort)j Fu(is)f(an)f(in)m(teger)i(p)s(ort)630 2322 +y(n)m(um)m(b)s(er)23 b(or)i(service)h(name,)g(Bash)f(attempts)h(to)f +(op)s(en)f(the)h(corresp)s(onding)f(TCP)g(so)s(c)m(k)m(et.)150 +2480 y Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)630 2590 y Fu(If)41 b Fr(host)i Fu(is)f(a)g(v)-5 b(alid)41 b(hostname)h(or)f(In) m(ternet)h(address,)i(and)c Fr(p)s(ort)j Fu(is)f(an)f(in)m(teger)i(p)s -(ort)630 4540 y(n)m(um)m(b)s(er)23 b(or)i(service)h(name,)g(Bash)f -(attempts)h(to)f(op)s(en)f(the)h(corresp)s(onding)f(TCP)g(so)s(c)m(k)m -(et.)150 4705 y Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)630 -4814 y Fu(If)41 b Fr(host)i Fu(is)f(a)g(v)-5 b(alid)41 -b(hostname)h(or)f(In)m(ternet)h(address,)i(and)c Fr(p)s(ort)j -Fu(is)f(an)f(in)m(teger)i(p)s(ort)630 4924 y(n)m(um)m(b)s(er)23 -b(or)h(service)h(name,)h(Bash)e(attempts)h(to)g(op)s(en)f(the)g -(corresp)s(onding)f(UDP)i(so)s(c)m(k)m(et.)275 5091 y(A)30 -b(failure)h(to)g(op)s(en)e(or)i(create)h(a)e(\014le)h(causes)g(the)f -(redirection)h(to)g(fail.)275 5230 y(Redirections)f(using)e(\014le)i -(descriptors)f(greater)h(than)f(9)h(should)e(b)s(e)h(used)f(with)h -(care,)h(as)g(they)f(ma)m(y)150 5340 y(con\015ict)i(with)f(\014le)h -(descriptors)f(the)g(shell)h(uses)f(in)m(ternally)-8 -b(.)p eop end -%%Page: 34 40 -TeXDict begin 34 39 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(34)150 299 -y Fk(3.6.1)63 b(Redirecting)40 b(Input)150 446 y Fu(Redirection)35 -b(of)f(input)f(causes)i(the)f(\014le)g(whose)g(name)g(results)g(from)g -(the)g(expansion)g(of)g Fr(w)m(ord)k Fu(to)d(b)s(e)150 -555 y(op)s(ened)d(for)g(reading)g(on)g(\014le)h(descriptor)f -Ft(n)p Fu(,)h(or)f(the)g(standard)g(input)f(\(\014le)i(descriptor)f -(0\))h(if)f Ft(n)g Fu(is)h(not)150 665 y(sp)s(eci\014ed.)275 -805 y(The)c(general)j(format)e(for)h(redirecting)g(input)e(is:)390 -944 y Ft([)p Fj(n)p Ft(]<)p Fj(word)150 1149 y Fk(3.6.2)63 -b(Redirecting)40 b(Output)150 1296 y Fu(Redirection)31 -b(of)g(output)f(causes)h(the)f(\014le)h(whose)f(name)g(results)h(from)e -(the)i(expansion)f(of)h Fr(w)m(ord)i Fu(to)f(b)s(e)150 -1405 y(op)s(ened)d(for)g(writing)g(on)g(\014le)h(descriptor)f -Fr(n)p Fu(,)g(or)g(the)h(standard)e(output)h(\(\014le)h(descriptor)f -(1\))h(if)g Fr(n)e Fu(is)i(not)150 1515 y(sp)s(eci\014ed.)40 -b(If)30 b(the)g(\014le)h(do)s(es)f(not)h(exist)g(it)g(is)f(created;)i -(if)e(it)h(do)s(es)f(exist)h(it)g(is)g(truncated)f(to)h(zero)g(size.) -275 1654 y(The)e(general)j(format)e(for)h(redirecting)g(output)f(is:) -390 1794 y Ft([)p Fj(n)p Ft(]>[|])p Fj(word)275 1934 -y Fu(If)g(the)h(redirection)g(op)s(erator)g(is)g(`)p -Ft(>)p Fu(',)g(and)f(the)h Ft(noclobber)d Fu(option)j(to)g(the)g -Ft(set)f Fu(builtin)g(has)h(b)s(een)150 2043 y(enabled,)h(the)g +(ort)630 2700 y(n)m(um)m(b)s(er)23 b(or)h(service)h(name,)h(Bash)e +(attempts)h(to)g(op)s(en)f(the)g(corresp)s(onding)f(UDP)i(so)s(c)m(k)m +(et.)275 2858 y(A)30 b(failure)h(to)g(op)s(en)e(or)i(create)h(a)e +(\014le)h(causes)g(the)f(redirection)h(to)g(fail.)275 +2992 y(Redirections)f(using)e(\014le)i(descriptors)f(greater)h(than)f +(9)h(should)e(b)s(e)h(used)f(with)h(care,)h(as)g(they)f(ma)m(y)150 +3102 y(con\015ict)i(with)f(\014le)h(descriptors)f(the)g(shell)h(uses)f +(in)m(ternally)-8 b(.)150 3300 y Fk(3.6.1)63 b(Redirecting)40 +b(Input)150 3447 y Fu(Redirection)35 b(of)f(input)f(causes)i(the)f +(\014le)g(whose)g(name)g(results)g(from)g(the)g(expansion)g(of)g +Fr(w)m(ord)k Fu(to)d(b)s(e)150 3557 y(op)s(ened)d(for)g(reading)g(on)g +(\014le)h(descriptor)f Ft(n)p Fu(,)h(or)f(the)g(standard)g(input)f +(\(\014le)i(descriptor)f(0\))h(if)f Ft(n)g Fu(is)h(not)150 +3667 y(sp)s(eci\014ed.)275 3801 y(The)c(general)j(format)e(for)h +(redirecting)g(input)e(is:)390 3935 y Ft([)p Fj(n)p Ft(]<)p +Fj(word)150 4133 y Fk(3.6.2)63 b(Redirecting)40 b(Output)150 +4280 y Fu(Redirection)31 b(of)g(output)f(causes)h(the)f(\014le)h(whose) +f(name)g(results)h(from)e(the)i(expansion)f(of)h Fr(w)m(ord)i +Fu(to)f(b)s(e)150 4390 y(op)s(ened)d(for)g(writing)g(on)g(\014le)h +(descriptor)f Fr(n)p Fu(,)g(or)g(the)h(standard)e(output)h(\(\014le)h +(descriptor)f(1\))h(if)g Fr(n)e Fu(is)i(not)150 4499 +y(sp)s(eci\014ed.)40 b(If)30 b(the)g(\014le)h(do)s(es)f(not)h(exist)g +(it)g(is)f(created;)i(if)e(it)h(do)s(es)f(exist)h(it)g(is)g(truncated)f +(to)h(zero)g(size.)275 4633 y(The)e(general)j(format)e(for)h +(redirecting)g(output)f(is:)390 4768 y Ft([)p Fj(n)p +Ft(]>[|])p Fj(word)275 4902 y Fu(If)g(the)h(redirection)g(op)s(erator)g +(is)g(`)p Ft(>)p Fu(',)g(and)f(the)h Ft(noclobber)d Fu(option)j(to)g +(the)g Ft(set)f Fu(builtin)g(has)h(b)s(een)150 5011 y(enabled,)h(the)g (redirection)h(will)f(fail)h(if)e(the)i(\014le)e(whose)h(name)g (results)g(from)f(the)h(expansion)g(of)g Fr(w)m(ord)150 -2153 y Fu(exists)f(and)f(is)g(a)h(regular)g(\014le.)41 +5121 y Fu(exists)f(and)f(is)g(a)h(regular)g(\014le.)41 b(If)30 b(the)h(redirection)g(op)s(erator)g(is)f(`)p Ft(>|)p Fu(',)h(or)f(the)h(redirection)g(op)s(erator)g(is)150 -2262 y(`)p Ft(>)p Fu(')36 b(and)f(the)g Ft(noclobber)e +5230 y(`)p Ft(>)p Fu(')36 b(and)f(the)g Ft(noclobber)e Fu(option)j(is)g(not)g(enabled,)h(the)e(redirection)h(is)g(attempted)g -(ev)m(en)h(if)e(the)h(\014le)150 2372 y(named)30 b(b)m(y)g -Fr(w)m(ord)k Fu(exists.)150 2576 y Fk(3.6.3)63 b(App)s(ending)42 -b(Redirected)e(Output)150 2723 y Fu(Redirection)23 b(of)e(output)h(in)f -(this)h(fashion)f(causes)h(the)g(\014le)g(whose)f(name)h(results)f -(from)g(the)h(expansion)g(of)150 2833 y Fr(w)m(ord)28 -b Fu(to)e(b)s(e)e(op)s(ened)g(for)h(app)s(ending)e(on)i(\014le)g -(descriptor)g Fr(n)p Fu(,)g(or)g(the)g(standard)f(output)h(\(\014le)g -(descriptor)150 2942 y(1\))31 b(if)f Fr(n)g Fu(is)h(not)f(sp)s -(eci\014ed.)40 b(If)30 b(the)h(\014le)f(do)s(es)g(not)h(exist)g(it)g -(is)f(created.)275 3082 y(The)f(general)j(format)e(for)h(app)s(ending)e -(output)h(is:)390 3222 y Ft([)p Fj(n)p Ft(]>>)p Fj(word)150 -3426 y Fk(3.6.4)63 b(Redirecting)40 b(Standard)h(Output)g(and)g -(Standard)g(Error)150 3573 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s -(oth)f(the)g(standard)g(output)f(\(\014le)i(descriptor)f(1\))h(and)f -(the)g(standard)f(error)150 3683 y(output)d(\(\014le)h(descriptor)f -(2\))h(to)g(b)s(e)f(redirected)h(to)g(the)f(\014le)h(whose)f(name)h(is) -f(the)g(expansion)h(of)f Fr(w)m(ord)p Fu(.)275 3822 y(There)f(are)i(t)m -(w)m(o)h(formats)e(for)h(redirecting)g(standard)e(output)h(and)g -(standard)f(error:)390 3962 y Ft(&>)p Fj(word)150 4101 -y Fu(and)390 4241 y Ft(>&)p Fj(word)150 4381 y Fu(Of)h(the)g(t)m(w)m(o) -i(forms,)e(the)h(\014rst)e(is)i(preferred.)39 b(This)30 -b(is)g(seman)m(tically)j(equiv)-5 b(alen)m(t)32 b(to)390 -4520 y Ft(>)p Fj(word)46 b Ft(2>&1)275 4660 y Fu(When)41 -b(using)g(the)h(second)f(form,)k Fr(w)m(ord)f Fu(ma)m(y)e(not)g(expand) -f(to)h(a)g(n)m(um)m(b)s(er)f(or)g(`)p Ft(-)p Fu('.)75 -b(If)41 b(it)h(do)s(es,)150 4769 y(other)27 b(redirection)g(op)s -(erators)f(apply)h(\(see)g(Duplicating)h(File)f(Descriptors)h(b)s(elo)m -(w\))f(for)f(compatibilit)m(y)150 4879 y(reasons.)150 -5083 y Fk(3.6.5)63 b(App)s(ending)42 b(Standard)f(Output)g(and)g -(Standard)g(Error)150 5230 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s -(oth)f(the)g(standard)g(output)f(\(\014le)i(descriptor)f(1\))h(and)f -(the)g(standard)f(error)150 5340 y(output)d(\(\014le)h(descriptor)f -(2\))h(to)g(b)s(e)f(app)s(ended)f(to)i(the)f(\014le)h(whose)f(name)g -(is)h(the)f(expansion)h(of)f Fr(w)m(ord)p Fu(.)p eop -end -%%Page: 35 41 -TeXDict begin 35 40 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(35)275 299 -y(The)29 b(format)i(for)f(app)s(ending)f(standard)h(output)g(and)f -(standard)h(error)g(is:)390 442 y Ft(&>>)p Fj(word)150 -585 y Fu(This)g(is)g(seman)m(tically)j(equiv)-5 b(alen)m(t)32 -b(to)390 728 y Ft(>>)p Fj(word)46 b Ft(2>&1)275 871 y -Fu(\(see)31 b(Duplicating)h(File)f(Descriptors)g(b)s(elo)m(w\).)150 -1079 y Fk(3.6.6)63 b(Here)41 b(Do)s(cumen)m(ts)150 1226 -y Fu(This)26 b(t)m(yp)s(e)g(of)h(redirection)g(instructs)f(the)g(shell) -h(to)g(read)f(input)g(from)g(the)g(curren)m(t)h(source)f(un)m(til)h(a)g -(line)150 1336 y(con)m(taining)h(only)e Fr(w)m(ord)k +(ev)m(en)h(if)e(the)h(\014le)150 5340 y(named)30 b(b)m(y)g +Fr(w)m(ord)k Fu(exists.)p eop end +%%Page: 36 42 +TeXDict begin 36 41 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(36)150 299 +y Fk(3.6.3)63 b(App)s(ending)42 b(Redirected)e(Output)150 +446 y Fu(Redirection)23 b(of)e(output)h(in)f(this)h(fashion)f(causes)h +(the)g(\014le)g(whose)f(name)h(results)f(from)g(the)h(expansion)g(of) +150 555 y Fr(w)m(ord)28 b Fu(to)e(b)s(e)e(op)s(ened)g(for)h(app)s +(ending)e(on)i(\014le)g(descriptor)g Fr(n)p Fu(,)g(or)g(the)g(standard) +f(output)h(\(\014le)g(descriptor)150 665 y(1\))31 b(if)f +Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)40 b(If)30 b(the)h(\014le)f(do)s +(es)g(not)h(exist)g(it)g(is)f(created.)275 796 y(The)f(general)j +(format)e(for)h(app)s(ending)e(output)h(is:)390 928 y +Ft([)p Fj(n)p Ft(]>>)p Fj(word)150 1120 y Fk(3.6.4)63 +b(Redirecting)40 b(Standard)h(Output)g(and)g(Standard)g(Error)150 +1267 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s(oth)f(the)g(standard)g +(output)f(\(\014le)i(descriptor)f(1\))h(and)f(the)g(standard)f(error) +150 1377 y(output)d(\(\014le)h(descriptor)f(2\))h(to)g(b)s(e)f +(redirected)h(to)g(the)f(\014le)h(whose)f(name)h(is)f(the)g(expansion)h +(of)f Fr(w)m(ord)p Fu(.)275 1508 y(There)f(are)i(t)m(w)m(o)h(formats)e +(for)h(redirecting)g(standard)e(output)h(and)g(standard)f(error:)390 +1639 y Ft(&>)p Fj(word)150 1771 y Fu(and)390 1902 y Ft(>&)p +Fj(word)150 2033 y Fu(Of)h(the)g(t)m(w)m(o)i(forms,)e(the)h(\014rst)e +(is)i(preferred.)39 b(This)30 b(is)g(seman)m(tically)j(equiv)-5 +b(alen)m(t)32 b(to)390 2164 y Ft(>)p Fj(word)46 b Ft(2>&1)275 +2296 y Fu(When)41 b(using)g(the)h(second)f(form,)k Fr(w)m(ord)f +Fu(ma)m(y)e(not)g(expand)f(to)h(a)g(n)m(um)m(b)s(er)f(or)g(`)p +Ft(-)p Fu('.)75 b(If)41 b(it)h(do)s(es,)150 2405 y(other)27 +b(redirection)g(op)s(erators)f(apply)h(\(see)g(Duplicating)h(File)f +(Descriptors)h(b)s(elo)m(w\))f(for)f(compatibilit)m(y)150 +2515 y(reasons.)150 2707 y Fk(3.6.5)63 b(App)s(ending)42 +b(Standard)f(Output)g(and)g(Standard)g(Error)150 2854 +y Fu(This)33 b(construct)i(allo)m(ws)g(b)s(oth)f(the)g(standard)g +(output)f(\(\014le)i(descriptor)f(1\))h(and)f(the)g(standard)f(error) +150 2964 y(output)d(\(\014le)h(descriptor)f(2\))h(to)g(b)s(e)f(app)s +(ended)f(to)i(the)f(\014le)h(whose)f(name)g(is)h(the)f(expansion)h(of)f +Fr(w)m(ord)p Fu(.)275 3095 y(The)f(format)i(for)f(app)s(ending)f +(standard)h(output)g(and)f(standard)h(error)g(is:)390 +3226 y Ft(&>>)p Fj(word)150 3358 y Fu(This)g(is)g(seman)m(tically)j +(equiv)-5 b(alen)m(t)32 b(to)390 3489 y Ft(>>)p Fj(word)46 +b Ft(2>&1)275 3620 y Fu(\(see)31 b(Duplicating)h(File)f(Descriptors)g +(b)s(elo)m(w\).)150 3813 y Fk(3.6.6)63 b(Here)41 b(Do)s(cumen)m(ts)150 +3960 y Fu(This)26 b(t)m(yp)s(e)g(of)h(redirection)g(instructs)f(the)g +(shell)h(to)g(read)f(input)g(from)g(the)g(curren)m(t)h(source)f(un)m +(til)h(a)g(line)150 4070 y(con)m(taining)h(only)e Fr(w)m(ord)k Fu(\(with)c(no)g(trailing)h(blanks\))f(is)g(seen.)40 b(All)27 b(of)f(the)g(lines)h(read)f(up)f(to)i(that)g(p)s(oin)m(t)150 -1445 y(are)k(then)f(used)f(as)i(the)g(standard)e(input)h(\(or)g(\014le) +4179 y(are)k(then)f(used)f(as)i(the)g(standard)e(input)h(\(or)g(\014le) h(descriptor)f Fr(n)g Fu(if)g Fr(n)g Fu(is)g(sp)s(eci\014ed\))g(for)h -(a)f(command.)275 1589 y(The)f(format)i(of)g(here-do)s(cumen)m(ts)f -(is:)390 1732 y Ft([)p Fj(n)p Ft(]<<[)p Fq(\000)p Ft(])p -Fj(word)772 1841 y(here-document)390 1951 y(delimiter)275 -2094 y Fu(No)i(parameter)h(and)f(v)-5 b(ariable)32 b(expansion,)h +(a)f(command.)275 4310 y(The)f(format)i(of)g(here-do)s(cumen)m(ts)f +(is:)390 4442 y Ft([)p Fj(n)p Ft(]<<[)p Fq(\000)p Ft(])p +Fj(word)772 4551 y(here-document)390 4661 y(delimiter)275 +4792 y Fu(No)i(parameter)h(and)f(v)-5 b(ariable)32 b(expansion,)h (command)f(substitution,)h(arithmetic)g(expansion,)g(or)150 -2204 y(\014lename)26 b(expansion)g(is)g(p)s(erformed)e(on)i +4902 y(\014lename)26 b(expansion)g(is)g(p)s(erformed)e(on)i Fr(w)m(ord)p Fu(.)39 b(If)25 b(an)m(y)i(part)e(of)h Fr(w)m(ord)j Fu(is)d(quoted,)i(the)e Fr(delimiter)33 b Fu(is)26 b(the)150 -2313 y(result)33 b(of)g(quote)g(remo)m(v)-5 b(al)34 b(on)f +5011 y(result)33 b(of)g(quote)g(remo)m(v)-5 b(al)34 b(on)f Fr(w)m(ord)p Fu(,)g(and)f(the)h(lines)g(in)g(the)g(here-do)s(cumen)m(t) -g(are)g(not)g(expanded.)47 b(If)150 2423 y Fr(w)m(ord)26 +g(are)g(not)g(expanded.)47 b(If)150 5121 y Fr(w)m(ord)26 b Fu(is)c(unquoted,)h(all)g(lines)g(of)g(the)f(here-do)s(cumen)m(t)g (are)h(sub)5 b(jected)22 b(to)h(parameter)g(expansion,)h(com-)150 -2532 y(mand)30 b(substitution,)g(and)g(arithmetic)h(expansion,)g(the)f +5230 y(mand)30 b(substitution,)g(and)g(arithmetic)h(expansion,)g(the)f (c)m(haracter)i(sequence)f Ft(\\newline)d Fu(is)j(ignored,)150 -2642 y(and)f(`)p Ft(\\)p Fu(')g(m)m(ust)h(b)s(e)e(used)h(to)h(quote)g +5340 y(and)f(`)p Ft(\\)p Fu(')g(m)m(ust)h(b)s(e)e(used)h(to)h(quote)g (the)g(c)m(haracters)g(`)p Ft(\\)p Fu(',)g(`)p Ft($)p -Fu(',)g(and)f(`)p Ft(`)p Fu('.)275 2785 y(If)21 b(the)i(redirection)g -(op)s(erator)g(is)f(`)p Ft(<<-)p Fu(',)i(then)e(all)h(leading)g(tab)g -(c)m(haracters)h(are)e(stripp)s(ed)f(from)h(input)150 -2895 y(lines)33 b(and)f(the)h(line)h(con)m(taining)g -Fr(delimiter)p Fu(.)49 b(This)32 b(allo)m(ws)i(here-do)s(cumen)m(ts)f -(within)f(shell)i(scripts)e(to)150 3004 y(b)s(e)e(inden)m(ted)g(in)g(a) -h(natural)f(fashion.)150 3212 y Fk(3.6.7)63 b(Here)41 -b(Strings)150 3359 y Fu(A)30 b(v)-5 b(arian)m(t)32 b(of)e(here)h(do)s -(cumen)m(ts,)f(the)g(format)h(is:)390 3502 y Ft([)p Fj(n)p -Ft(]<<<)46 b Fj(word)275 3645 y Fu(The)21 b Fr(w)m(ord)k -Fu(undergo)s(es)c(brace)h(expansion,)i(tilde)e(expansion,)i(parameter)e -(and)f(v)-5 b(ariable)23 b(expansion,)150 3755 y(command)j -(substitution,)g(arithmetic)i(expansion,)f(and)e(quote)i(remo)m(v)-5 -b(al.)40 b(P)m(athname)27 b(expansion)f(and)150 3865 -y(w)m(ord)32 b(splitting)h(are)g(not)g(p)s(erformed.)46 -b(The)32 b(result)g(is)h(supplied)e(as)i(a)f(single)i(string,)f(with)f -(a)h(newline)150 3974 y(app)s(ended,)c(to)i(the)g(command)f(on)g(its)h +Fu(',)g(and)f(`)p Ft(`)p Fu('.)p eop end +%%Page: 37 43 +TeXDict begin 37 42 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(37)275 299 +y(If)21 b(the)i(redirection)g(op)s(erator)g(is)f(`)p +Ft(<<-)p Fu(',)i(then)e(all)h(leading)g(tab)g(c)m(haracters)h(are)e +(stripp)s(ed)f(from)h(input)150 408 y(lines)33 b(and)f(the)h(line)h +(con)m(taining)g Fr(delimiter)p Fu(.)49 b(This)32 b(allo)m(ws)i +(here-do)s(cumen)m(ts)f(within)f(shell)i(scripts)e(to)150 +518 y(b)s(e)e(inden)m(ted)g(in)g(a)h(natural)f(fashion.)150 +709 y Fk(3.6.7)63 b(Here)41 b(Strings)150 856 y Fu(A)30 +b(v)-5 b(arian)m(t)32 b(of)e(here)h(do)s(cumen)m(ts,)f(the)g(format)h +(is:)390 987 y Ft([)p Fj(n)p Ft(]<<<)46 b Fj(word)275 +1117 y Fu(The)29 b Fr(w)m(ord)k Fu(undergo)s(es)c(tilde)i(expansion,)f +(parameter)h(and)e(v)-5 b(ariable)31 b(expansion,)f(command)g(sub-)150 +1227 y(stitution,)25 b(arithmetic)f(expansion,)h(and)d(quote)h(remo)m +(v)-5 b(al.)40 b(P)m(athname)23 b(expansion)g(and)f(w)m(ord)g +(splitting)150 1336 y(are)35 b(not)g(p)s(erformed.)51 +b(The)34 b(result)h(is)g(supplied)e(as)i(a)f(single)i(string,)f(with)g +(a)g(newline)f(app)s(ended,)g(to)150 1446 y(the)d(command)f(on)g(its)h (standard)e(input)h(\(or)g(\014le)h(descriptor)f Fr(n)g -Fu(if)g Fr(n)g Fu(is)g(sp)s(eci\014ed\).)150 4182 y Fk(3.6.8)63 -b(Duplicating)41 b(File)g(Descriptors)150 4329 y Fu(The)30 -b(redirection)h(op)s(erator)390 4472 y Ft([)p Fj(n)p -Ft(]<&)p Fj(word)150 4615 y Fu(is)k(used)e(to)j(duplicate)f(input)f +Fu(if)g Fr(n)g Fu(is)h(sp)s(eci\014ed\).)150 1637 y Fk(3.6.8)63 +b(Duplicating)41 b(File)g(Descriptors)150 1784 y Fu(The)30 +b(redirection)h(op)s(erator)390 1914 y Ft([)p Fj(n)p +Ft(]<&)p Fj(word)150 2045 y Fu(is)k(used)e(to)j(duplicate)f(input)f (\014le)g(descriptors.)53 b(If)34 b Fr(w)m(ord)k Fu(expands)c(to)h(one) -g(or)g(more)g(digits,)h(the)f(\014le)150 4725 y(descriptor)e(denoted)h +g(or)g(more)g(digits,)h(the)f(\014le)150 2154 y(descriptor)e(denoted)h (b)m(y)f Fr(n)g Fu(is)g(made)h(to)g(b)s(e)f(a)g(cop)m(y)h(of)g(that)g (\014le)f(descriptor.)50 b(If)33 b(the)h(digits)g(in)f -Fr(w)m(ord)150 4835 y Fu(do)c(not)h(sp)s(ecify)f(a)h(\014le)f +Fr(w)m(ord)150 2264 y Fu(do)c(not)h(sp)s(ecify)f(a)h(\014le)f (descriptor)g(op)s(en)g(for)g(input,)g(a)h(redirection)g(error)f(o)s (ccurs.)40 b(If)29 b Fr(w)m(ord)j Fu(ev)-5 b(aluates)150 -4944 y(to)31 b(`)p Ft(-)p Fu(',)g(\014le)g(descriptor)g +2373 y(to)31 b(`)p Ft(-)p Fu(',)g(\014le)g(descriptor)g Fr(n)f Fu(is)g(closed.)43 b(If)30 b Fr(n)g Fu(is)g(not)h(sp)s (eci\014ed,)f(the)h(standard)f(input)g(\(\014le)h(descriptor)f(0\))150 -5054 y(is)g(used.)275 5197 y(The)f(op)s(erator)390 5340 -y Ft([)p Fj(n)p Ft(]>&)p Fj(word)p eop end -%%Page: 36 42 -TeXDict begin 36 41 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(36)150 299 -y(is)40 b(used)g(similarly)h(to)g(duplicate)f(output)g(\014le)h -(descriptors.)70 b(If)40 b Fr(n)f Fu(is)i(not)f(sp)s(eci\014ed,)i(the)f -(standard)150 408 y(output)30 b(\(\014le)g(descriptor)g(1\))h(is)f -(used.)39 b(If)30 b(the)g(digits)h(in)e Fr(w)m(ord)34 -b Fu(do)29 b(not)i(sp)s(ecify)e(a)i(\014le)f(descriptor)g(op)s(en)150 -518 y(for)35 b(output,)h(a)g(redirection)g(error)e(o)s(ccurs.)55 +2483 y(is)g(used.)275 2613 y(The)f(op)s(erator)390 2744 +y Ft([)p Fj(n)p Ft(]>&)p Fj(word)150 2874 y Fu(is)40 +b(used)g(similarly)h(to)g(duplicate)f(output)g(\014le)h(descriptors.)70 +b(If)40 b Fr(n)f Fu(is)i(not)f(sp)s(eci\014ed,)i(the)f(standard)150 +2984 y(output)30 b(\(\014le)g(descriptor)g(1\))h(is)f(used.)39 +b(If)30 b(the)g(digits)h(in)e Fr(w)m(ord)34 b Fu(do)29 +b(not)i(sp)s(ecify)e(a)i(\014le)f(descriptor)g(op)s(en)150 +3093 y(for)35 b(output,)h(a)g(redirection)g(error)e(o)s(ccurs.)55 b(If)35 b Fr(w)m(ord)j Fu(ev)-5 b(aluates)37 b(to)f(`)p Ft(-)p Fu(',)h(\014le)e(descriptor)g Fr(n)g Fu(is)g(closed.)150 -628 y(As)f(a)g(sp)s(ecial)h(case,)h(if)e Fr(n)f Fu(is)h(omitted,)i(and) -e Fr(w)m(ord)j Fu(do)s(es)d(not)g(expand)f(to)i(one)f(or)g(more)g -(digits)h(or)f(`)p Ft(-)p Fu(',)150 737 y(the)d(standard)e(output)h +3203 y(As)f(a)g(sp)s(ecial)h(case,)h(if)e Fr(n)f Fu(is)h(omitted,)i +(and)e Fr(w)m(ord)j Fu(do)s(es)d(not)g(expand)f(to)i(one)f(or)g(more)g +(digits)h(or)f(`)p Ft(-)p Fu(',)150 3313 y(the)d(standard)e(output)h (and)g(standard)f(error)h(are)h(redirected)g(as)g(describ)s(ed)e -(previously)-8 b(.)150 938 y Fk(3.6.9)63 b(Mo)m(ving)41 -b(File)h(Descriptors)150 1085 y Fu(The)30 b(redirection)h(op)s(erator) -390 1220 y Ft([)p Fj(n)p Ft(]<&)p Fj(digit)p Ft(-)150 -1356 y Fu(mo)m(v)m(es)i(the)f(\014le)g(descriptor)f Fr(digit)k +(previously)-8 b(.)150 3504 y Fk(3.6.9)63 b(Mo)m(ving)41 +b(File)h(Descriptors)150 3651 y Fu(The)30 b(redirection)h(op)s(erator) +390 3781 y Ft([)p Fj(n)p Ft(]<&)p Fj(digit)p Ft(-)150 +3911 y Fu(mo)m(v)m(es)i(the)f(\014le)g(descriptor)f Fr(digit)k Fu(to)d(\014le)g(descriptor)g Fr(n)p Fu(,)f(or)h(the)g(standard)f -(input)f(\(\014le)j(descriptor)e(0\))150 1465 y(if)f +(input)f(\(\014le)j(descriptor)e(0\))150 4021 y(if)f Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)40 b Fr(digit)33 b Fu(is)e(closed)g(after)g(b)s(eing)f(duplicated)g(to)h -Fr(n)p Fu(.)275 1601 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s -(erator)390 1736 y Ft([)p Fj(n)p Ft(]>&)p Fj(digit)p -Ft(-)150 1872 y Fu(mo)m(v)m(es)e(the)g(\014le)f(descriptor)f +Fr(n)p Fu(.)275 4151 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s +(erator)390 4282 y Ft([)p Fj(n)p Ft(]>&)p Fj(digit)p +Ft(-)150 4412 y Fu(mo)m(v)m(es)e(the)g(\014le)f(descriptor)f Fr(digit)k Fu(to)e(\014le)f(descriptor)g Fr(n)p Fu(,)g(or)g(the)g (standard)f(output)h(\(\014le)g(descriptor)g(1\))150 -1982 y(if)i Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)150 -2182 y Fk(3.6.10)63 b(Op)s(ening)42 b(File)g(Descriptors)g(for)g -(Reading)e(and)h(W)-10 b(riting)150 2329 y Fu(The)30 -b(redirection)h(op)s(erator)390 2464 y Ft([)p Fj(n)p -Ft(]<>)p Fj(word)150 2600 y Fu(causes)39 b(the)g(\014le)g(whose)g(name) +4522 y(if)i Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)150 +4713 y Fk(3.6.10)63 b(Op)s(ening)42 b(File)g(Descriptors)g(for)g +(Reading)e(and)h(W)-10 b(riting)150 4860 y Fu(The)30 +b(redirection)h(op)s(erator)390 4990 y Ft([)p Fj(n)p +Ft(]<>)p Fj(word)150 5121 y Fu(causes)39 b(the)g(\014le)g(whose)g(name) g(is)g(the)g(expansion)g(of)g Fr(w)m(ord)j Fu(to)d(b)s(e)g(op)s(ened)f -(for)g(b)s(oth)h(reading)g(and)150 2710 y(writing)33 +(for)g(b)s(oth)h(reading)g(and)150 5230 y(writing)33 b(on)f(\014le)h(descriptor)f Fr(n)p Fu(,)h(or)g(on)f(\014le)h (descriptor)g(0)g(if)f Fr(n)g Fu(is)h(not)g(sp)s(eci\014ed.)47 -b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 2819 y(exist,)e(it)g(is)g -(created.)150 3062 y Fs(3.7)68 b(Executing)46 b(Commands)150 -3286 y Fk(3.7.1)63 b(Simple)41 b(Command)h(Expansion)150 -3433 y Fu(When)33 b(a)g(simple)g(command)g(is)g(executed,)h(the)g -(shell)f(p)s(erforms)e(the)i(follo)m(wing)i(expansions,)e(assign-)150 -3542 y(men)m(ts,)e(and)f(redirections,)h(from)f(left)h(to)g(righ)m(t.) -199 3678 y(1.)61 b(The)38 b(w)m(ords)f(that)i(the)g(parser)e(has)h -(mark)m(ed)g(as)h(v)-5 b(ariable)39 b(assignmen)m(ts)g(\(those)g -(preceding)f(the)330 3788 y(command)30 b(name\))h(and)f(redirections)h -(are)f(sa)m(v)m(ed)i(for)e(later)h(pro)s(cessing.)199 -3923 y(2.)61 b(The)39 b(w)m(ords)g(that)i(are)f(not)g(v)-5 -b(ariable)40 b(assignmen)m(ts)h(or)e(redirections)i(are)f(expanded)f -(\(see)h(Sec-)330 4032 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g -(21\).)61 b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h -(the)e(\014rst)330 4142 y(w)m(ord)31 b(is)g(tak)m(en)h(to)g(b)s(e)f -(the)g(name)h(of)f(the)h(command)f(and)f(the)i(remaining)f(w)m(ords)g -(are)g(the)h(argu-)330 4251 y(men)m(ts.)199 4386 y(3.)61 -b(Redirections)25 b(are)f(p)s(erformed)f(as)h(describ)s(ed)f(ab)s(o)m -(v)m(e)i(\(see)g(Section)g(3.6)g([Redirections],)i(page)d(32\).)199 -4521 y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Ft(=)p -Fu(')h(in)e(eac)m(h)j(v)-5 b(ariable)25 b(assignmen)m(t)h(undergo)s(es) -e(tilde)i(expansion,)g(parameter)330 4631 y(expansion,)49 -b(command)d(substitution,)j(arithmetic)d(expansion,)k(and)45 -b(quote)h(remo)m(v)-5 b(al)46 b(b)s(efore)330 4741 y(b)s(eing)30 -b(assigned)h(to)g(the)f(v)-5 b(ariable.)275 4902 y(If)32 -b(no)i(command)f(name)g(results,)h(the)g(v)-5 b(ariable)34 -b(assignmen)m(ts)g(a\013ect)h(the)f(curren)m(t)f(shell)h(en)m(viron-) -150 5011 y(men)m(t.)39 b(Otherwise,)27 b(the)e(v)-5 b(ariables)26 -b(are)g(added)f(to)h(the)f(en)m(vironmen)m(t)h(of)g(the)f(executed)h -(command)g(and)150 5121 y(do)35 b(not)f(a\013ect)j(the)d(curren)m(t)h -(shell)g(en)m(vironmen)m(t.)54 b(If)34 b(an)m(y)h(of)g(the)f(assignmen) -m(ts)i(attempts)f(to)h(assign)150 5230 y(a)j(v)-5 b(alue)39 -b(to)g(a)g(readonly)f(v)-5 b(ariable,)42 b(an)c(error)g(o)s(ccurs,)j -(and)c(the)i(command)f(exits)h(with)g(a)f(non-zero)150 -5340 y(status.)p eop end -%%Page: 37 43 -TeXDict begin 37 42 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(37)275 299 -y(If)33 b(no)g(command)g(name)h(results,)g(redirections)g(are)g(p)s -(erformed,)f(but)g(do)h(not)f(a\013ect)i(the)f(curren)m(t)150 -408 y(shell)d(en)m(vironmen)m(t.)41 b(A)30 b(redirection)h(error)f -(causes)h(the)g(command)f(to)h(exit)g(with)f(a)h(non-zero)g(status.)275 -548 y(If)26 b(there)i(is)f(a)h(command)f(name)h(left)g(after)g +b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 5340 y(exist,)e(it)g(is)g +(created.)p eop end +%%Page: 38 44 +TeXDict begin 38 43 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(38)150 299 +y Fs(3.7)68 b(Executing)46 b(Commands)150 523 y Fk(3.7.1)63 +b(Simple)41 b(Command)h(Expansion)150 670 y Fu(When)33 +b(a)g(simple)g(command)g(is)g(executed,)h(the)g(shell)f(p)s(erforms)e +(the)i(follo)m(wing)i(expansions,)e(assign-)150 779 y(men)m(ts,)e(and)f +(redirections,)h(from)f(left)h(to)g(righ)m(t.)199 913 +y(1.)61 b(The)38 b(w)m(ords)f(that)i(the)g(parser)e(has)h(mark)m(ed)g +(as)h(v)-5 b(ariable)39 b(assignmen)m(ts)g(\(those)g(preceding)f(the) +330 1023 y(command)30 b(name\))h(and)f(redirections)h(are)f(sa)m(v)m +(ed)i(for)e(later)h(pro)s(cessing.)199 1157 y(2.)61 b(The)39 +b(w)m(ords)g(that)i(are)f(not)g(v)-5 b(ariable)40 b(assignmen)m(ts)h +(or)e(redirections)i(are)f(expanded)f(\(see)h(Sec-)330 +1267 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g(22\).)61 +b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h(the)e +(\014rst)330 1376 y(w)m(ord)31 b(is)g(tak)m(en)h(to)g(b)s(e)f(the)g +(name)h(of)f(the)h(command)f(and)f(the)i(remaining)f(w)m(ords)g(are)g +(the)h(argu-)330 1486 y(men)m(ts.)199 1620 y(3.)61 b(Redirections)25 +b(are)f(p)s(erformed)f(as)h(describ)s(ed)f(ab)s(o)m(v)m(e)i(\(see)g +(Section)g(3.6)g([Redirections],)i(page)d(34\).)199 1754 +y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Ft(=)p Fu(')h(in)e(eac)m(h) +j(v)-5 b(ariable)25 b(assignmen)m(t)h(undergo)s(es)e(tilde)i +(expansion,)g(parameter)330 1864 y(expansion,)49 b(command)d +(substitution,)j(arithmetic)d(expansion,)k(and)45 b(quote)h(remo)m(v)-5 +b(al)46 b(b)s(efore)330 1973 y(b)s(eing)30 b(assigned)h(to)g(the)f(v)-5 +b(ariable.)275 2132 y(If)32 b(no)i(command)f(name)g(results,)h(the)g(v) +-5 b(ariable)34 b(assignmen)m(ts)g(a\013ect)h(the)f(curren)m(t)f(shell) +h(en)m(viron-)150 2242 y(men)m(t.)39 b(Otherwise,)27 +b(the)e(v)-5 b(ariables)26 b(are)g(added)f(to)h(the)f(en)m(vironmen)m +(t)h(of)g(the)f(executed)h(command)g(and)150 2351 y(do)35 +b(not)f(a\013ect)j(the)d(curren)m(t)h(shell)g(en)m(vironmen)m(t.)54 +b(If)34 b(an)m(y)h(of)g(the)f(assignmen)m(ts)i(attempts)f(to)h(assign) +150 2461 y(a)j(v)-5 b(alue)39 b(to)g(a)g(readonly)f(v)-5 +b(ariable,)42 b(an)c(error)g(o)s(ccurs,)j(and)c(the)i(command)f(exits)h +(with)g(a)f(non-zero)150 2570 y(status.)275 2705 y(If)33 +b(no)g(command)g(name)h(results,)g(redirections)g(are)g(p)s(erformed,)f +(but)g(do)h(not)f(a\013ect)i(the)f(curren)m(t)150 2814 +y(shell)d(en)m(vironmen)m(t.)41 b(A)30 b(redirection)h(error)f(causes)h +(the)g(command)f(to)h(exit)g(with)f(a)h(non-zero)g(status.)275 +2948 y(If)26 b(there)i(is)f(a)h(command)f(name)h(left)g(after)g (expansion,)g(execution)h(pro)s(ceeds)e(as)g(describ)s(ed)f(b)s(elo)m -(w.)150 658 y(Otherwise,)39 b(the)e(command)g(exits.)62 +(w.)150 3058 y(Otherwise,)39 b(the)e(command)g(exits.)62 b(If)37 b(one)g(of)g(the)h(expansions)f(con)m(tained)h(a)g(command)f -(substitu-)150 767 y(tion,)i(the)d(exit)h(status)g(of)f(the)h(command)f -(is)h(the)f(exit)h(status)g(of)f(the)h(last)g(command)f(substitution) -150 877 y(p)s(erformed.)55 b(If)35 b(there)g(w)m(ere)h(no)g(command)f +(substitu-)150 3167 y(tion,)i(the)d(exit)h(status)g(of)f(the)h(command) +f(is)h(the)f(exit)h(status)g(of)f(the)h(last)g(command)f(substitution) +150 3277 y(p)s(erformed.)55 b(If)35 b(there)g(w)m(ere)h(no)g(command)f (substitutions,)i(the)e(command)h(exits)g(with)f(a)h(status)g(of)150 -987 y(zero.)150 1191 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h -(Execution)150 1338 y Fu(After)i(a)h(command)f(has)g(b)s(een)f(split)h +3387 y(zero.)150 3585 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h +(Execution)150 3732 y Fu(After)i(a)h(command)f(has)g(b)s(een)f(split)h (in)m(to)h(w)m(ords,)j(if)c(it)g(results)g(in)g(a)h(simple)f(command)g -(and)f(an)150 1448 y(optional)32 b(list)f(of)f(argumen)m(ts,)h(the)g -(follo)m(wing)g(actions)h(are)f(tak)m(en.)199 1587 y(1.)61 +(and)f(an)150 3842 y(optional)32 b(list)f(of)f(argumen)m(ts,)h(the)g +(follo)m(wing)g(actions)h(are)f(tak)m(en.)199 3976 y(1.)61 b(If)24 b(the)g(command)g(name)g(con)m(tains)i(no)e(slashes,)i(the)e (shell)h(attempts)g(to)g(lo)s(cate)h(it.)39 b(If)24 b(there)g(exists) -330 1697 y(a)h(shell)g(function)f(b)m(y)g(that)h(name,)h(that)f +330 4085 y(a)h(shell)g(function)f(b)m(y)g(that)h(name,)h(that)f (function)f(is)h(in)m(v)m(ok)m(ed)h(as)e(describ)s(ed)g(in)g(Section)h -(3.3)h([Shell)330 1807 y(F)-8 b(unctions],)31 b(page)h(17.)199 -1944 y(2.)61 b(If)41 b(the)g(name)h(do)s(es)f(not)g(matc)m(h)i(a)e +(3.3)h([Shell)330 4195 y(F)-8 b(unctions],)31 b(page)h(17.)199 +4329 y(2.)61 b(If)41 b(the)g(name)h(do)s(es)f(not)g(matc)m(h)i(a)e (function,)j(the)e(shell)f(searc)m(hes)i(for)e(it)h(in)f(the)g(list)h -(of)g(shell)330 2053 y(builtins.)e(If)30 b(a)h(matc)m(h)g(is)f(found,)g -(that)h(builtin)f(is)g(in)m(v)m(ok)m(ed.)199 2190 y(3.)61 +(of)g(shell)330 4439 y(builtins.)e(If)30 b(a)h(matc)m(h)g(is)f(found,)g +(that)h(builtin)f(is)g(in)m(v)m(ok)m(ed.)199 4573 y(3.)61 b(If)40 b(the)g(name)h(is)f(neither)h(a)f(shell)h(function)f(nor)g(a)g (builtin,)j(and)d(con)m(tains)h(no)g(slashes,)i(Bash)330 -2300 y(searc)m(hes)c(eac)m(h)g(elemen)m(t)g(of)g Ft($PATH)d +4682 y(searc)m(hes)c(eac)m(h)g(elemen)m(t)g(of)g Ft($PATH)d Fu(for)i(a)g(directory)h(con)m(taining)g(an)f(executable)h(\014le)f(b)m -(y)g(that)330 2410 y(name.)56 b(Bash)36 b(uses)f(a)h(hash)e(table)j(to) +(y)g(that)330 4792 y(name.)56 b(Bash)36 b(uses)f(a)h(hash)e(table)j(to) f(remem)m(b)s(er)f(the)h(full)f(pathnames)g(of)h(executable)h(\014les)e -(to)330 2519 y(a)m(v)m(oid)e(m)m(ultiple)f Ft(PATH)f +(to)330 4902 y(a)m(v)m(oid)e(m)m(ultiple)f Ft(PATH)f Fu(searc)m(hes)i(\(see)f(the)g(description)g(of)f Ft(hash)g -Fu(in)g(Section)i(4.1)f([Bourne)g(Shell)330 2629 y(Builtins],)37 -b(page)f(42\).)55 b(A)35 b(full)g(searc)m(h)g(of)g(the)g(directories)h +Fu(in)g(Section)i(4.1)f([Bourne)g(Shell)330 5011 y(Builtins],)37 +b(page)f(43\).)55 b(A)35 b(full)g(searc)m(h)g(of)g(the)g(directories)h (in)f Ft($PATH)e Fu(is)i(p)s(erformed)f(only)h(if)g(the)330 -2738 y(command)24 b(is)h(not)g(found)e(in)i(the)g(hash)f(table.)39 +5121 y(command)24 b(is)h(not)g(found)e(in)i(the)g(hash)f(table.)39 b(If)25 b(the)f(searc)m(h)i(is)e(unsuccessful,)h(the)g(shell)g(searc)m -(hes)330 2848 y(for)e(a)h(de\014ned)e(shell)h(function)h(named)e +(hes)330 5230 y(for)e(a)h(de\014ned)e(shell)h(function)h(named)e Ft(command_not_found_handle)p Fu(.)32 b(If)23 b(that)h(function)f -(exists,)330 2958 y(it)32 b(is)f(in)m(v)m(ok)m(ed)i(with)e(the)h -(original)g(command)f(and)g(the)h(original)g(command's)f(argumen)m(ts)h -(as)g(its)330 3067 y(argumen)m(ts,)h(and)e(the)i(function's)e(exit)i -(status)g(b)s(ecomes)f(the)g(exit)h(status)f(of)h(the)f(shell.)46 -b(If)31 b(that)330 3177 y(function)g(is)g(not)g(de\014ned,)f(the)i -(shell)f(prin)m(ts)f(an)h(error)g(message)h(and)f(returns)e(an)i(exit)h -(status)g(of)330 3286 y(127.)199 3423 y(4.)61 b(If)33 -b(the)g(searc)m(h)h(is)g(successful,)g(or)f(if)g(the)h(command)f(name)g -(con)m(tains)i(one)f(or)f(more)g(slashes,)i(the)330 3533 -y(shell)g(executes)h(the)f(named)f(program)g(in)h(a)g(separate)h -(execution)f(en)m(vironmen)m(t.)55 b(Argumen)m(t)35 b(0)330 -3643 y(is)30 b(set)h(to)h(the)e(name)h(giv)m(en,)g(and)f(the)h -(remaining)f(argumen)m(ts)h(to)g(the)g(command)f(are)h(set)g(to)g(the) -330 3752 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8 -b(.)199 3889 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g +(exists,)330 5340 y(it)33 b(is)f(in)m(v)m(ok)m(ed)i(in)e(a)h(separate)h +(execution)f(en)m(vironmen)m(t)g(with)f(the)h(original)h(command)e(and) +g(the)p eop end +%%Page: 39 45 +TeXDict begin 39 44 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(39)330 299 +y(original)26 b(command's)e(argumen)m(ts)h(as)g(its)g(argumen)m(ts,)h +(and)e(the)h(function's)f(exit)i(status)f(b)s(ecomes)330 +408 y(the)j(exit)g(status)g(of)f(that)h(subshell.)39 +b(If)27 b(that)h(function)f(is)h(not)g(de\014ned,)f(the)g(shell)h(prin) +m(ts)f(an)g(error)330 518 y(message)k(and)f(returns)f(an)i(exit)g +(status)g(of)f(127.)199 654 y(4.)61 b(If)33 b(the)g(searc)m(h)h(is)g +(successful,)g(or)f(if)g(the)h(command)f(name)g(con)m(tains)i(one)f(or) +f(more)g(slashes,)i(the)330 763 y(shell)g(executes)h(the)f(named)f +(program)g(in)h(a)g(separate)h(execution)f(en)m(vironmen)m(t.)55 +b(Argumen)m(t)35 b(0)330 873 y(is)30 b(set)h(to)h(the)e(name)h(giv)m +(en,)g(and)f(the)h(remaining)f(argumen)m(ts)h(to)g(the)g(command)f(are) +h(set)g(to)g(the)330 983 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8 +b(.)199 1118 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g (the)f(\014le)h(is)g(not)g(in)f(executable)j(format,)f(and)e(the)h -(\014le)g(is)g(not)330 3999 y(a)d(directory)-8 b(,)34 +(\014le)g(is)g(not)330 1228 y(a)d(directory)-8 b(,)34 b(it)f(is)g(assumed)e(to)j(b)s(e)d(a)i Fr(shell)g(script)h Fu(and)e(the)h(shell)f(executes)i(it)f(as)g(describ)s(ed)e(in)330 -4109 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(40.)199 -4246 y(6.)61 b(If)38 b(the)h(command)f(w)m(as)h(not)g(b)s(egun)e(async) +1338 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(41.)199 +1473 y(6.)61 b(If)38 b(the)h(command)f(w)m(as)h(not)g(b)s(egun)e(async) m(hronously)-8 b(,)42 b(the)c(shell)h(w)m(aits)h(for)e(the)h(command)f -(to)330 4355 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150 -4560 y Fk(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)150 -4707 y Fu(The)30 b(shell)g(has)h(an)f Fr(execution)h(en)m(vironmen)m(t) +(to)330 1583 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150 +1785 y Fk(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)150 +1932 y Fu(The)30 b(shell)g(has)h(an)f Fr(execution)h(en)m(vironmen)m(t) p Fu(,)h(whic)m(h)e(consists)h(of)f(the)h(follo)m(wing:)225 -4847 y Fq(\017)60 b Fu(op)s(en)32 b(\014les)g(inherited)g(b)m(y)h(the)f +2069 y Fq(\017)60 b Fu(op)s(en)32 b(\014les)g(inherited)g(b)m(y)h(the)f (shell)h(at)g(in)m(v)m(o)s(cation,)j(as)c(mo)s(di\014ed)g(b)m(y)g -(redirections)h(supplied)e(to)330 4956 y(the)g Ft(exec)e -Fu(builtin)225 5093 y Fq(\017)60 b Fu(the)28 b(curren)m(t)g(w)m(orking) +(redirections)h(supplied)e(to)330 2178 y(the)g Ft(exec)e +Fu(builtin)225 2314 y Fq(\017)60 b Fu(the)28 b(curren)m(t)g(w)m(orking) h(directory)g(as)f(set)h(b)m(y)f Ft(cd)p Fu(,)g Ft(pushd)p Fu(,)g(or)g Ft(popd)p Fu(,)g(or)g(inherited)g(b)m(y)g(the)h(shell)f(at) -330 5203 y(in)m(v)m(o)s(cation)225 5340 y Fq(\017)60 +330 2424 y(in)m(v)m(o)s(cation)225 2560 y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)g(as)h(set)g(b)m(y)f -Ft(umask)f Fu(or)h(inherited)g(from)g(the)h(shell's)f(paren)m(t)p -eop end -%%Page: 38 44 -TeXDict begin 38 43 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(38)225 299 -y Fq(\017)60 b Fu(curren)m(t)30 b(traps)g(set)h(b)m(y)f -Ft(trap)225 435 y Fq(\017)60 b Fu(shell)30 b(parameters)f(that)h(are)g +Ft(umask)f Fu(or)h(inherited)g(from)g(the)h(shell's)f(paren)m(t)225 +2695 y Fq(\017)60 b Fu(curren)m(t)30 b(traps)g(set)h(b)m(y)f +Ft(trap)225 2831 y Fq(\017)60 b Fu(shell)30 b(parameters)f(that)h(are)g (set)g(b)m(y)g(v)-5 b(ariable)30 b(assignmen)m(t)g(or)g(with)f -Ft(set)f Fu(or)i(inherited)f(from)g(the)330 545 y(shell's)i(paren)m(t)f -(in)g(the)h(en)m(vironmen)m(t)225 682 y Fq(\017)60 b -Fu(shell)44 b(functions)f(de\014ned)f(during)h(execution)i(or)e +Ft(set)f Fu(or)i(inherited)f(from)g(the)330 2941 y(shell's)i(paren)m(t) +f(in)g(the)h(en)m(vironmen)m(t)225 3077 y Fq(\017)60 +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 -791 y(en)m(vironmen)m(t)225 928 y Fq(\017)60 b Fu(options)33 +3186 y(en)m(vironmen)m(t)225 3322 y Fq(\017)60 b Fu(options)33 b(enabled)g(at)h(in)m(v)m(o)s(cation)h(\(either)f(b)m(y)f(default)g(or) -g(with)g(command-line)g(argumen)m(ts\))h(or)330 1037 -y(b)m(y)c Ft(set)225 1174 y Fq(\017)60 b Fu(options)31 +g(with)g(command-line)g(argumen)m(ts\))h(or)330 3432 +y(b)m(y)c Ft(set)225 3567 y Fq(\017)60 b Fu(options)31 b(enabled)f(b)m(y)g Ft(shopt)f Fu(\(see)j(Section)f(4.3.2)h([The)e -(Shopt)g(Builtin],)h(page)g(64\))225 1310 y Fq(\017)60 +(Shopt)g(Builtin],)h(page)g(65\))225 3703 y Fq(\017)60 b Fu(shell)31 b(aliases)g(de\014ned)f(with)g Ft(alias)f -Fu(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(90\))225 -1447 y Fq(\017)60 b Fu(v)-5 b(arious)50 b(pro)s(cess)f +Fu(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(93\))225 +3839 y Fq(\017)60 b Fu(v)-5 b(arious)50 b(pro)s(cess)f Fm(id)p Fu(s,)55 b(including)49 b(those)i(of)e(bac)m(kground)h(jobs)f -(\(see)i(Section)g(3.2.3)g([Lists],)330 1556 y(page)31 +(\(see)i(Section)g(3.2.3)g([Lists],)330 3948 y(page)31 b(9\),)g(the)g(v)-5 b(alue)31 b(of)f Ft($$)p Fu(,)g(and)g(the)h(v)-5 -b(alue)31 b(of)f Ft($PPID)275 1722 y Fu(When)k(a)g(simple)h(command)f +b(alue)31 b(of)f Ft($PPID)275 4112 y Fu(When)k(a)g(simple)h(command)f (other)g(than)g(a)h(builtin)f(or)g(shell)h(function)f(is)g(to)h(b)s(e)f -(executed,)i(it)f(is)150 1832 y(in)m(v)m(ok)m(ed)25 b(in)f(a)g +(executed,)i(it)f(is)150 4221 y(in)m(v)m(ok)m(ed)25 b(in)f(a)g (separate)h(execution)g(en)m(vironmen)m(t)g(that)f(consists)g(of)h(the) -f(follo)m(wing.)40 b(Unless)24 b(otherwise)150 1941 y(noted,)31 +f(follo)m(wing.)40 b(Unless)24 b(otherwise)150 4331 y(noted,)31 b(the)f(v)-5 b(alues)31 b(are)g(inherited)f(from)g(the)g(shell.)225 -2080 y Fq(\017)60 b Fu(the)31 b(shell's)h(op)s(en)e(\014les,)i(plus)e +4468 y Fq(\017)60 b Fu(the)31 b(shell's)h(op)s(en)e(\014les,)i(plus)e (an)m(y)h(mo)s(di\014cations)h(and)e(additions)h(sp)s(eci\014ed)g(b)m -(y)g(redirections)g(to)330 2189 y(the)g(command)225 2326 +(y)g(redirections)g(to)330 4578 y(the)g(command)225 4713 y Fq(\017)60 b Fu(the)31 b(curren)m(t)f(w)m(orking)g(directory)225 -2462 y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225 -2599 y Fq(\017)60 b Fu(shell)32 b(v)-5 b(ariables)33 +4849 y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225 +4985 y Fq(\017)60 b Fu(shell)32 b(v)-5 b(ariables)33 b(and)e(functions)h(mark)m(ed)g(for)g(exp)s(ort,)g(along)h(with)f(v)-5 -b(ariables)32 b(exp)s(orted)g(for)g(the)330 2709 y(command,)e(passed)g +b(ariables)32 b(exp)s(orted)g(for)g(the)330 5095 y(command,)e(passed)g (in)g(the)h(en)m(vironmen)m(t)g(\(see)g(Section)g(3.7.4)i([En)m -(vironmen)m(t],)e(page)g(38\))225 2845 y Fq(\017)60 b +(vironmen)m(t],)e(page)g(40\))225 5230 y Fq(\017)60 b Fu(traps)31 b(caugh)m(t)h(b)m(y)f(the)g(shell)h(are)f(reset)h(to)g(the) f(v)-5 b(alues)32 b(inherited)e(from)h(the)g(shell's)h(paren)m(t,)g -(and)330 2955 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored) -275 3120 y(A)41 b(command)g(in)m(v)m(ok)m(ed)i(in)e(this)h(separate)g -(en)m(vironmen)m(t)g(cannot)g(a\013ect)h(the)f(shell's)g(execution)150 -3230 y(en)m(vironmen)m(t.)275 3368 y(Command)35 b(substitution,)j +(and)330 5340 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored)p +eop end +%%Page: 40 46 +TeXDict begin 40 45 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(40)275 299 +y(A)41 b(command)g(in)m(v)m(ok)m(ed)i(in)e(this)h(separate)g(en)m +(vironmen)m(t)g(cannot)g(a\013ect)h(the)f(shell's)g(execution)150 +408 y(en)m(vironmen)m(t.)275 552 y(Command)35 b(substitution,)j (commands)e(group)s(ed)f(with)i(paren)m(theses,)h(and)e(async)m -(hronous)g(com-)150 3478 y(mands)c(are)h(in)m(v)m(ok)m(ed)i(in)d(a)i +(hronous)g(com-)150 662 y(mands)c(are)h(in)m(v)m(ok)m(ed)i(in)d(a)i (subshell)e(en)m(vironmen)m(t)h(that)h(is)f(a)g(duplicate)h(of)f(the)g -(shell)g(en)m(vironmen)m(t,)150 3588 y(except)i(that)g(traps)f(caugh)m +(shell)g(en)m(vironmen)m(t,)150 772 y(except)i(that)g(traps)f(caugh)m (t)h(b)m(y)f(the)h(shell)f(are)g(reset)h(to)g(the)f(v)-5 b(alues)35 b(that)g(the)f(shell)h(inherited)e(from)150 -3697 y(its)g(paren)m(t)f(at)h(in)m(v)m(o)s(cation.)49 +881 y(its)g(paren)m(t)f(at)h(in)m(v)m(o)s(cation.)49 b(Builtin)32 b(commands)g(that)h(are)g(in)m(v)m(ok)m(ed)h(as)e(part)g -(of)h(a)f(pip)s(eline)g(are)h(also)150 3807 y(executed)41 +(of)h(a)f(pip)s(eline)g(are)h(also)150 991 y(executed)41 b(in)f(a)h(subshell)e(en)m(vironmen)m(t.)72 b(Changes)40 b(made)g(to)h(the)g(subshell)e(en)m(vironmen)m(t)i(cannot)150 -3916 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275 -4055 y(Subshells)c(spa)m(wned)i(to)h(execute)g(command)f(substitutions) +1100 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275 +1244 y(Subshells)c(spa)m(wned)i(to)h(execute)g(command)f(substitutions) g(inherit)g(the)g(v)-5 b(alue)31 b(of)f(the)h Ft(-e)e -Fu(option)150 4165 y(from)23 b(the)i(paren)m(t)f(shell.)38 +Fu(option)150 1354 y(from)23 b(the)i(paren)m(t)f(shell.)38 b(When)24 b(not)g(in)g Fm(posix)f Fu(mo)s(de,)i(Bash)f(clears)h(the)f -Ft(-e)f Fu(option)i(in)e(suc)m(h)h(subshells.)275 4303 +Ft(-e)f Fu(option)i(in)e(suc)m(h)h(subshells.)275 1498 y(If)f(a)h(command)g(is)g(follo)m(w)m(ed)h(b)m(y)f(a)g(`)p Ft(&)p Fu(')g(and)f(job)h(con)m(trol)h(is)f(not)g(activ)m(e,)k(the)c -(default)g(standard)f(input)150 4413 y(for)35 b(the)g(command)g(is)g +(default)g(standard)f(input)150 1607 y(for)35 b(the)g(command)g(is)g (the)g(empt)m(y)h(\014le)f Ft(/dev/null)p Fu(.)52 b(Otherwise,)37 -b(the)e(in)m(v)m(ok)m(ed)h(command)f(inherits)150 4522 +b(the)e(in)m(v)m(ok)m(ed)h(command)f(inherits)150 1717 y(the)c(\014le)f(descriptors)g(of)h(the)f(calling)i(shell)f(as)f(mo)s -(di\014ed)g(b)m(y)g(redirections.)150 4726 y Fk(3.7.4)63 -b(En)m(vironmen)m(t)150 4873 y Fu(When)29 b(a)g(program)f(is)h(in)m(v)m +(di\014ed)g(b)m(y)g(redirections.)150 1926 y Fk(3.7.4)63 +b(En)m(vironmen)m(t)150 2073 y Fu(When)29 b(a)g(program)f(is)h(in)m(v)m (ok)m(ed)h(it)g(is)f(giv)m(en)g(an)g(arra)m(y)g(of)g(strings)g(called)h (the)f Fr(en)m(vironmen)m(t)p Fu(.)41 b(This)28 b(is)h(a)150 -4982 y(list)i(of)g(name-v)-5 b(alue)31 b(pairs,)f(of)h(the)f(form)g -Ft(name=value)p Fu(.)275 5121 y(Bash)39 b(pro)m(vides)g(sev)m(eral)i(w) +2182 y(list)i(of)g(name-v)-5 b(alue)31 b(pairs,)f(of)h(the)f(form)g +Ft(name=value)p Fu(.)275 2326 y(Bash)39 b(pro)m(vides)g(sev)m(eral)i(w) m(a)m(ys)g(to)f(manipulate)f(the)h(en)m(vironmen)m(t.)69 -b(On)38 b(in)m(v)m(o)s(cation,)44 b(the)c(shell)150 5230 +b(On)38 b(in)m(v)m(o)s(cation,)44 b(the)c(shell)150 2436 y(scans)g(its)h(o)m(wn)f(en)m(vironmen)m(t)h(and)f(creates)i(a)f (parameter)f(for)g(eac)m(h)i(name)e(found,)i(automatically)150 -5340 y(marking)26 b(it)g(for)g Fr(exp)s(ort)h Fu(to)g(c)m(hild)f(pro)s +2545 y(marking)26 b(it)g(for)g Fr(exp)s(ort)h Fu(to)g(c)m(hild)f(pro)s (cesses.)39 b(Executed)26 b(commands)g(inherit)g(the)g(en)m(vironmen)m -(t.)39 b(The)p eop end -%%Page: 39 45 -TeXDict begin 39 44 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(39)150 299 -y Ft(export)35 b Fu(and)i(`)p Ft(declare)29 b(-x)p Fu(')36 -b(commands)h(allo)m(w)i(parameters)e(and)g(functions)g(to)h(b)s(e)e -(added)h(to)h(and)150 408 y(deleted)21 b(from)f(the)h(en)m(vironmen)m -(t.)38 b(If)20 b(the)h(v)-5 b(alue)21 b(of)g(a)g(parameter)g(in)f(the)g -(en)m(vironmen)m(t)i(is)e(mo)s(di\014ed,)i(the)150 518 -y(new)31 b(v)-5 b(alue)32 b(b)s(ecomes)f(part)h(of)f(the)h(en)m -(vironmen)m(t,)g(replacing)h(the)e(old.)44 b(The)31 b(en)m(vironmen)m -(t)h(inherited)150 628 y(b)m(y)f(an)m(y)g(executed)h(command)f -(consists)g(of)g(the)g(shell's)h(initial)g(en)m(vironmen)m(t,)g(whose)f -(v)-5 b(alues)31 b(ma)m(y)h(b)s(e)150 737 y(mo)s(di\014ed)26 +(t.)39 b(The)150 2655 y Ft(export)c Fu(and)i(`)p Ft(declare)29 +b(-x)p Fu(')36 b(commands)h(allo)m(w)i(parameters)e(and)g(functions)g +(to)h(b)s(e)e(added)h(to)h(and)150 2765 y(deleted)21 +b(from)f(the)h(en)m(vironmen)m(t.)38 b(If)20 b(the)h(v)-5 +b(alue)21 b(of)g(a)g(parameter)g(in)f(the)g(en)m(vironmen)m(t)i(is)e +(mo)s(di\014ed,)i(the)150 2874 y(new)31 b(v)-5 b(alue)32 +b(b)s(ecomes)f(part)h(of)f(the)h(en)m(vironmen)m(t,)g(replacing)h(the)e +(old.)44 b(The)31 b(en)m(vironmen)m(t)h(inherited)150 +2984 y(b)m(y)f(an)m(y)g(executed)h(command)f(consists)g(of)g(the)g +(shell's)h(initial)g(en)m(vironmen)m(t,)g(whose)f(v)-5 +b(alues)31 b(ma)m(y)h(b)s(e)150 3093 y(mo)s(di\014ed)26 b(in)g(the)h(shell,)h(less)f(an)m(y)g(pairs)f(remo)m(v)m(ed)i(b)m(y)f (the)g Ft(unset)e Fu(and)h(`)p Ft(export)j(-n)p Fu(')e(commands,)g -(plus)150 847 y(an)m(y)k(additions)f(via)h(the)g Ft(export)d -Fu(and)i(`)p Ft(declare)f(-x)p Fu(')h(commands.)275 991 +(plus)150 3203 y(an)m(y)k(additions)f(via)h(the)g Ft(export)d +Fu(and)i(`)p Ft(declare)f(-x)p Fu(')h(commands.)275 3347 y(The)j(en)m(vironmen)m(t)i(for)f(an)m(y)g(simple)h(command)f(or)g (function)g(ma)m(y)g(b)s(e)g(augmen)m(ted)h(temp)s(orarily)150 -1100 y(b)m(y)c(pre\014xing)e(it)i(with)g(parameter)g(assignmen)m(ts,)h +3457 y(b)m(y)c(pre\014xing)e(it)i(with)g(parameter)g(assignmen)m(ts,)h (as)e(describ)s(ed)g(in)g(Section)i(3.4)g([Shell)e(P)m(arameters],)150 -1210 y(page)g(18.)41 b(These)29 b(assignmen)m(t)i(statemen)m(ts)g +3566 y(page)g(19.)41 b(These)29 b(assignmen)m(t)i(statemen)m(ts)g (a\013ect)f(only)g(the)f(en)m(vironmen)m(t)h(seen)g(b)m(y)f(that)h -(command.)275 1354 y(If)g(the)h Ft(-k)g Fu(option)g(is)g(set)h(\(see)g -(Section)g(4.3.1)g([The)f(Set)g(Builtin],)h(page)g(60\),)h(then)e(all)g -(parameter)150 1464 y(assignmen)m(ts)f(are)g(placed)h(in)e(the)h(en)m +(command.)275 3710 y(If)g(the)h Ft(-k)g Fu(option)g(is)g(set)h(\(see)g +(Section)g(4.3.1)g([The)f(Set)g(Builtin],)h(page)g(61\),)h(then)e(all)g +(parameter)150 3820 y(assignmen)m(ts)f(are)g(placed)h(in)e(the)h(en)m (vironmen)m(t)g(for)g(a)g(command,)f(not)h(just)f(those)i(that)f -(precede)g(the)150 1573 y(command)g(name.)275 1717 y(When)h(Bash)h(in)m +(precede)g(the)150 3929 y(command)g(name.)275 4073 y(When)h(Bash)h(in)m (v)m(ok)m(es)i(an)e(external)h(command,)f(the)g(v)-5 b(ariable)33 b(`)p Ft($_)p Fu(')f(is)g(set)h(to)f(the)g(full)g -(pathname)150 1827 y(of)f(the)f(command)g(and)g(passed)g(to)h(that)g -(command)f(in)g(its)h(en)m(vironmen)m(t.)150 2035 y Fk(3.7.5)63 -b(Exit)40 b(Status)150 2182 y Fu(The)26 b(exit)h(status)f(of)g(an)g +(pathname)150 4183 y(of)f(the)f(command)g(and)g(passed)g(to)h(that)g +(command)f(in)g(its)h(en)m(vironmen)m(t.)150 4392 y Fk(3.7.5)63 +b(Exit)40 b(Status)150 4538 y Fu(The)26 b(exit)h(status)f(of)g(an)g (executed)h(command)f(is)g(the)h(v)-5 b(alue)26 b(returned)f(b)m(y)h -(the)g Fr(w)m(aitpid)k Fu(system)d(call)g(or)150 2292 +(the)g Fr(w)m(aitpid)k Fu(system)d(call)g(or)150 4648 y(equiv)-5 b(alen)m(t)33 b(function.)45 b(Exit)32 b(statuses)g(fall)g (b)s(et)m(w)m(een)h(0)f(and)f(255,)i(though,)f(as)g(explained)g(b)s -(elo)m(w,)h(the)150 2401 y(shell)i(ma)m(y)g(use)f(v)-5 +(elo)m(w,)h(the)150 4758 y(shell)i(ma)m(y)g(use)f(v)-5 b(alues)35 b(ab)s(o)m(v)m(e)g(125)h(sp)s(ecially)-8 b(.)54 b(Exit)35 b(statuses)g(from)f(shell)h(builtins)f(and)f(comp)s(ound)150 -2511 y(commands)j(are)g(also)h(limited)g(to)g(this)f(range.)58 +4867 y(commands)j(are)g(also)h(limited)g(to)g(this)f(range.)58 b(Under)36 b(certain)h(circumstances,)h(the)e(shell)h(will)f(use)150 -2621 y(sp)s(ecial)31 b(v)-5 b(alues)31 b(to)g(indicate)g(sp)s(eci\014c) -f(failure)h(mo)s(des.)275 2765 y(F)-8 b(or)32 b(the)g(shell's)g(purp)s +4977 y(sp)s(ecial)31 b(v)-5 b(alues)31 b(to)g(indicate)g(sp)s(eci\014c) +f(failure)h(mo)s(des.)275 5121 y(F)-8 b(or)32 b(the)g(shell's)g(purp)s (oses,)e(a)j(command)e(whic)m(h)h(exits)g(with)g(a)g(zero)g(exit)h -(status)f(has)f(succeeded.)150 2874 y(A)e(non-zero)h(exit)g(status)g +(status)f(has)f(succeeded.)150 5230 y(A)e(non-zero)h(exit)g(status)g (indicates)g(failure.)40 b(This)28 b(seemingly)i(coun)m(ter-in)m -(tuitiv)m(e)i(sc)m(heme)e(is)f(used)g(so)150 2984 y(there)34 +(tuitiv)m(e)i(sc)m(heme)e(is)f(used)g(so)150 5340 y(there)34 b(is)g(one)g(w)m(ell-de\014ned)g(w)m(a)m(y)g(to)h(indicate)g(success)f (and)f(a)h(v)-5 b(ariet)m(y)35 b(of)f(w)m(a)m(ys)h(to)f(indicate)h(v)-5 -b(arious)150 3093 y(failure)38 b(mo)s(des.)62 b(When)37 -b(a)h(command)f(terminates)i(on)e(a)h(fatal)h(signal)g(whose)e(n)m(um)m -(b)s(er)f(is)i Fr(N)p Fu(,)i(Bash)150 3203 y(uses)30 -b(the)g(v)-5 b(alue)31 b(128)p Ft(+)p Fr(N)42 b Fu(as)30 -b(the)h(exit)g(status.)275 3347 y(If)k(a)h(command)g(is)g(not)g(found,) -g(the)g(c)m(hild)h(pro)s(cess)e(created)i(to)g(execute)g(it)g(returns)d -(a)j(status)f(of)150 3457 y(127.)42 b(If)30 b(a)h(command)f(is)g(found) -f(but)h(is)g(not)h(executable,)h(the)f(return)e(status)i(is)f(126.)275 -3600 y(If)i(a)i(command)f(fails)g(b)s(ecause)g(of)h(an)f(error)f -(during)g(expansion)h(or)g(redirection,)i(the)f(exit)g(status)150 -3710 y(is)c(greater)i(than)e(zero.)275 3854 y(The)38 -b(exit)h(status)g(is)g(used)f(b)m(y)g(the)h(Bash)g(conditional)h -(commands)e(\(see)h(Section)h(3.2.4.2)h([Con-)150 3964 -y(ditional)i(Constructs],)h(page)f(10\))g(and)e(some)i(of)f(the)g(list) -g(constructs)g(\(see)h(Section)f(3.2.3)i([Lists],)150 -4073 y(page)31 b(9\).)275 4217 y(All)40 b(of)g(the)h(Bash)f(builtins)f -(return)g(an)h(exit)h(status)g(of)f(zero)h(if)f(they)g(succeed)g(and)g -(a)g(non-zero)150 4327 y(status)34 b(on)f(failure,)i(so)f(they)g(ma)m -(y)g(b)s(e)f(used)g(b)m(y)g(the)h(conditional)h(and)e(list)h -(constructs.)50 b(All)35 b(builtins)150 4436 y(return)e(an)i(exit)g -(status)g(of)f(2)h(to)g(indicate)h(incorrect)f(usage,)h(generally)g(in) -m(v)-5 b(alid)35 b(options)g(or)f(missing)150 4546 y(argumen)m(ts.)150 -4755 y Fk(3.7.6)63 b(Signals)150 4902 y Fu(When)36 b(Bash)g(is)h(in)m +b(arious)p eop end +%%Page: 41 47 +TeXDict begin 41 46 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(41)150 299 +y(failure)38 b(mo)s(des.)62 b(When)37 b(a)h(command)f(terminates)i(on)e +(a)h(fatal)h(signal)g(whose)e(n)m(um)m(b)s(er)f(is)i +Fr(N)p Fu(,)i(Bash)150 408 y(uses)30 b(the)g(v)-5 b(alue)31 +b(128)p Ft(+)p Fr(N)42 b Fu(as)30 b(the)h(exit)g(status.)275 +537 y(If)k(a)h(command)g(is)g(not)g(found,)g(the)g(c)m(hild)h(pro)s +(cess)e(created)i(to)g(execute)g(it)g(returns)d(a)j(status)f(of)150 +647 y(127.)42 b(If)30 b(a)h(command)f(is)g(found)f(but)h(is)g(not)h +(executable,)h(the)f(return)e(status)i(is)f(126.)275 +776 y(If)i(a)i(command)f(fails)g(b)s(ecause)g(of)h(an)f(error)f(during) +g(expansion)h(or)g(redirection,)i(the)f(exit)g(status)150 +885 y(is)c(greater)i(than)e(zero.)275 1014 y(The)38 b(exit)h(status)g +(is)g(used)f(b)m(y)g(the)h(Bash)g(conditional)h(commands)e(\(see)h +(Section)h(3.2.4.2)h([Con-)150 1123 y(ditional)i(Constructs],)h(page)f +(11\))g(and)e(some)i(of)f(the)g(list)g(constructs)g(\(see)h(Section)f +(3.2.3)i([Lists],)150 1233 y(page)31 b(9\).)275 1362 +y(All)40 b(of)g(the)h(Bash)f(builtins)f(return)g(an)h(exit)h(status)g +(of)f(zero)h(if)f(they)g(succeed)g(and)g(a)g(non-zero)150 +1471 y(status)34 b(on)f(failure,)i(so)f(they)g(ma)m(y)g(b)s(e)f(used)g +(b)m(y)g(the)h(conditional)h(and)e(list)h(constructs.)50 +b(All)35 b(builtins)150 1581 y(return)e(an)i(exit)g(status)g(of)f(2)h +(to)g(indicate)h(incorrect)f(usage,)h(generally)g(in)m(v)-5 +b(alid)35 b(options)g(or)f(missing)150 1691 y(argumen)m(ts.)150 +1878 y Fk(3.7.6)63 b(Signals)150 2025 y Fu(When)36 b(Bash)g(is)h(in)m (teractiv)m(e,)j(in)c(the)h(absence)f(of)h(an)m(y)f(traps,)i(it)e (ignores)h Ft(SIGTERM)d Fu(\(so)j(that)g(`)p Ft(kill)150 -5011 y(0)p Fu(')c(do)s(es)g(not)g(kill)g(an)g(in)m(teractiv)m(e)j +2135 y(0)p Fu(')c(do)s(es)g(not)g(kill)g(an)g(in)m(teractiv)m(e)j (shell\),)f(and)d Ft(SIGINT)f Fu(is)i(caugh)m(t)h(and)f(handled)f(\(so) -h(that)h(the)f Ft(wait)150 5121 y Fu(builtin)24 b(is)h(in)m +h(that)h(the)f Ft(wait)150 2244 y Fu(builtin)24 b(is)h(in)m (terruptible\).)39 b(When)24 b(Bash)g(receiv)m(es)j(a)d Ft(SIGINT)p Fu(,)h(it)g(breaks)f(out)h(of)f(an)m(y)h(executing)h(lo)s -(ops.)150 5230 y(In)31 b(all)h(cases,)h(Bash)f(ignores)g +(ops.)150 2354 y(In)31 b(all)h(cases,)h(Bash)f(ignores)g Ft(SIGQUIT)p Fu(.)42 b(If)32 b(job)f(con)m(trol)i(is)e(in)h(e\013ect)h -(\(see)f(Chapter)f(7)h([Job)g(Con)m(trol],)150 5340 y(page)f(100\),)h +(\(see)f(Chapter)f(7)h([Job)g(Con)m(trol],)150 2464 y(page)f(103\),)h (Bash)f(ignores)g Ft(SIGTTIN)p Fu(,)d Ft(SIGTTOU)p Fu(,)h(and)h -Ft(SIGTSTP)p Fu(.)p eop end -%%Page: 40 46 -TeXDict begin 40 45 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(40)275 299 -y(Non-builtin)31 b(commands)g(started)g(b)m(y)g(Bash)h(ha)m(v)m(e)g -(signal)g(handlers)e(set)i(to)g(the)g(v)-5 b(alues)31 -b(inherited)150 408 y(b)m(y)37 b(the)h(shell)g(from)f(its)h(paren)m(t.) -62 b(When)38 b(job)f(con)m(trol)i(is)e(not)h(in)f(e\013ect,)k(async)m -(hronous)c(commands)150 518 y(ignore)f Ft(SIGINT)e Fu(and)h -Ft(SIGQUIT)e Fu(in)j(addition)f(to)i(these)f(inherited)f(handlers.)55 -b(Commands)35 b(run)f(as)i(a)150 628 y(result)27 b(of)h(command)f -(substitution)h(ignore)g(the)g(k)m(eyb)s(oard-generated)g(job)g(con)m -(trol)h(signals)f Ft(SIGTTIN)p Fu(,)150 737 y Ft(SIGTTOU)p -Fu(,)h(and)g Ft(SIGTSTP)p Fu(.)275 882 y(The)h(shell)i(exits)g(b)m(y)f -(default)g(up)s(on)f(receipt)i(of)f(a)h Ft(SIGHUP)p Fu(.)42 -b(Before)32 b(exiting,)h(an)e(in)m(teractiv)m(e)j(shell)150 -992 y(resends)41 b(the)i Ft(SIGHUP)e Fu(to)i(all)g(jobs,)i(running)c -(or)h(stopp)s(ed.)76 b(Stopp)s(ed)41 b(jobs)h(are)h(sen)m(t)g -Ft(SIGCONT)d Fu(to)150 1101 y(ensure)32 b(that)h(they)g(receiv)m(e)i +Ft(SIGTSTP)p Fu(.)275 2592 y(Non-builtin)h(commands)g(started)g(b)m(y)g +(Bash)h(ha)m(v)m(e)g(signal)g(handlers)e(set)i(to)g(the)g(v)-5 +b(alues)31 b(inherited)150 2702 y(b)m(y)37 b(the)h(shell)g(from)f(its)h +(paren)m(t.)62 b(When)38 b(job)f(con)m(trol)i(is)e(not)h(in)f +(e\013ect,)k(async)m(hronous)c(commands)150 2812 y(ignore)f +Ft(SIGINT)e Fu(and)h Ft(SIGQUIT)e Fu(in)j(addition)f(to)i(these)f +(inherited)f(handlers.)55 b(Commands)35 b(run)f(as)i(a)150 +2921 y(result)27 b(of)h(command)f(substitution)h(ignore)g(the)g(k)m +(eyb)s(oard-generated)g(job)g(con)m(trol)h(signals)f +Ft(SIGTTIN)p Fu(,)150 3031 y Ft(SIGTTOU)p Fu(,)h(and)g +Ft(SIGTSTP)p Fu(.)275 3160 y(The)h(shell)i(exits)g(b)m(y)f(default)g +(up)s(on)f(receipt)i(of)f(a)h Ft(SIGHUP)p Fu(.)42 b(Before)32 +b(exiting,)h(an)e(in)m(teractiv)m(e)j(shell)150 3269 +y(resends)41 b(the)i Ft(SIGHUP)e Fu(to)i(all)g(jobs,)i(running)c(or)h +(stopp)s(ed.)76 b(Stopp)s(ed)41 b(jobs)h(are)h(sen)m(t)g +Ft(SIGCONT)d Fu(to)150 3379 y(ensure)32 b(that)h(they)g(receiv)m(e)i (the)e Ft(SIGHUP)p Fu(.)47 b(T)-8 b(o)33 b(prev)m(en)m(t)g(the)g(shell) -g(from)g(sending)f(the)h Ft(SIGHUP)e Fu(signal)150 1211 +g(from)g(sending)f(the)h Ft(SIGHUP)e Fu(signal)150 3488 y(to)i(a)g(particular)g(job,)g(it)g(should)f(b)s(e)g(remo)m(v)m(ed)h (from)g(the)f(jobs)g(table)i(with)e(the)h Ft(disown)e -Fu(builtin)h(\(see)150 1320 y(Section)c(7.2)g([Job)e(Con)m(trol)i -(Builtins],)g(page)g(101\))h(or)e(mark)m(ed)g(to)g(not)g(receiv)m(e)i -Ft(SIGHUP)c Fu(using)i Ft(disown)150 1430 y(-h)p Fu(.)275 -1575 y(If)38 b(the)h Ft(huponexit)e Fu(shell)i(option)g(has)g(b)s(een)f +Fu(builtin)h(\(see)150 3598 y(Section)c(7.2)g([Job)e(Con)m(trol)i +(Builtins],)g(page)g(104\))h(or)e(mark)m(ed)g(to)g(not)g(receiv)m(e)i +Ft(SIGHUP)c Fu(using)i Ft(disown)150 3707 y(-h)p Fu(.)275 +3836 y(If)38 b(the)h Ft(huponexit)e Fu(shell)i(option)g(has)g(b)s(een)f (set)i(with)f Ft(shopt)e Fu(\(see)j(Section)g(4.3.2)h([The)e(Shopt)150 -1684 y(Builtin],)31 b(page)g(64\),)h(Bash)f(sends)e(a)i +3946 y(Builtin],)31 b(page)g(65\),)h(Bash)f(sends)e(a)i Ft(SIGHUP)e Fu(to)i(all)g(jobs)f(when)f(an)i(in)m(teractiv)m(e)i(login) -e(shell)g(exits.)275 1829 y(If)38 b(Bash)h(is)g(w)m(aiting)h(for)f(a)g +e(shell)g(exits.)275 4075 y(If)38 b(Bash)h(is)g(w)m(aiting)h(for)f(a)g (command)f(to)i(complete)g(and)e(receiv)m(es)j(a)e(signal)h(for)e(whic) -m(h)h(a)g(trap)150 1939 y(has)c(b)s(een)f(set,)i(the)f(trap)g(will)g +m(h)h(a)g(trap)150 4184 y(has)c(b)s(een)f(set,)i(the)f(trap)g(will)g (not)g(b)s(e)f(executed)i(un)m(til)f(the)g(command)f(completes.)55 -b(When)35 b(Bash)g(is)150 2048 y(w)m(aiting)j(for)f(an)g(async)m +b(When)35 b(Bash)g(is)150 4294 y(w)m(aiting)j(for)f(an)g(async)m (hronous)g(command)g(via)h(the)f Ft(wait)f Fu(builtin,)i(the)g -(reception)g(of)f(a)g(signal)h(for)150 2158 y(whic)m(h)d(a)g(trap)g +(reception)g(of)f(a)g(signal)h(for)150 4403 y(whic)m(h)d(a)g(trap)g (has)g(b)s(een)f(set)h(will)h(cause)f(the)g Ft(wait)f Fu(builtin)h(to)g(return)f(immediately)i(with)f(an)g(exit)150 -2267 y(status)c(greater)g(than)f(128,)i(immediately)g(after)f(whic)m(h) -f(the)h(trap)f(is)g(executed.)150 2524 y Fs(3.8)68 b(Shell)45 -b(Scripts)150 2683 y Fu(A)30 b(shell)f(script)h(is)f(a)h(text)h(\014le) +4513 y(status)c(greater)g(than)f(128,)i(immediately)g(after)f(whic)m(h) +f(the)h(trap)f(is)g(executed.)150 4742 y Fs(3.8)68 b(Shell)45 +b(Scripts)150 4902 y Fu(A)30 b(shell)f(script)h(is)f(a)h(text)h(\014le) f(con)m(taining)h(shell)f(commands.)40 b(When)29 b(suc)m(h)g(a)h -(\014le)g(is)f(used)g(as)h(the)g(\014rst)150 2792 y(non-option)c +(\014le)g(is)f(used)g(as)h(the)g(\014rst)150 5011 y(non-option)c (argumen)m(t)h(when)e(in)m(v)m(oking)i(Bash,)g(and)f(neither)g(the)g Ft(-c)g Fu(nor)f Ft(-s)h Fu(option)g(is)g(supplied)f(\(see)150 -2902 y(Section)39 b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(82\),)i +5121 y(Section)39 b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(85\),)i (Bash)d(reads)g(and)f(executes)i(commands)f(from)f(the)i(\014le,)150 -3012 y(then)32 b(exits.)46 b(This)32 b(mo)s(de)f(of)i(op)s(eration)f +5230 y(then)32 b(exits.)46 b(This)32 b(mo)s(de)f(of)i(op)s(eration)f (creates)i(a)e(non-in)m(teractiv)m(e)j(shell.)46 b(The)31 -b(shell)i(\014rst)e(searc)m(hes)150 3121 y(for)d(the)g(\014le)g(in)g +b(shell)i(\014rst)e(searc)m(hes)150 5340 y(for)d(the)g(\014le)g(in)g (the)g(curren)m(t)f(directory)-8 b(,)30 b(and)d(lo)s(oks)i(in)e(the)i -(directories)g(in)e Ft($PATH)g Fu(if)h(not)g(found)e(there.)275 -3266 y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f -(sp)s(ecial)i(parameter)f Ft(0)f Fu(to)h(the)g(name)g(of)g(the)g -(\014le,)150 3376 y(rather)k(than)g(the)h(name)f(of)h(the)f(shell,)j -(and)d(the)h(p)s(ositional)g(parameters)f(are)h(set)g(to)g(the)g -(remain-)150 3485 y(ing)f(argumen)m(ts,)j(if)d(an)m(y)g(are)g(giv)m -(en.)67 b(If)39 b(no)g(additional)g(argumen)m(ts)h(are)f(supplied,)h -(the)f(p)s(ositional)150 3595 y(parameters)31 b(are)f(unset.)275 -3740 y(A)39 b(shell)h(script)f(ma)m(y)h(b)s(e)f(made)h(executable)h(b)m +(directories)g(in)e Ft($PATH)g Fu(if)h(not)g(found)e(there.)p +eop end +%%Page: 42 48 +TeXDict begin 42 47 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(42)275 299 +y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f(sp)s +(ecial)i(parameter)f Ft(0)f Fu(to)h(the)g(name)g(of)g(the)g(\014le,)150 +408 y(rather)k(than)g(the)h(name)f(of)h(the)f(shell,)j(and)d(the)h(p)s +(ositional)g(parameters)f(are)h(set)g(to)g(the)g(remain-)150 +518 y(ing)f(argumen)m(ts,)j(if)d(an)m(y)g(are)g(giv)m(en.)67 +b(If)39 b(no)g(additional)g(argumen)m(ts)h(are)f(supplied,)h(the)f(p)s +(ositional)150 628 y(parameters)31 b(are)f(unset.)275 +762 y(A)39 b(shell)h(script)f(ma)m(y)h(b)s(e)f(made)h(executable)h(b)m (y)e(using)g(the)h Ft(chmod)e Fu(command)h(to)h(turn)e(on)i(the)150 -3849 y(execute)j(bit.)73 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h +872 y(execute)j(bit.)73 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h (\014le)f(while)g(searc)m(hing)h(the)f Ft($PATH)f Fu(for)h(a)h -(command,)h(it)150 3959 y(spa)m(wns)30 b(a)g(subshell)g(to)h(execute)h -(it.)41 b(In)30 b(other)g(w)m(ords,)g(executing)390 4103 -y Ft(filename)46 b Fj(arguments)150 4248 y Fu(is)30 b(equiv)-5 -b(alen)m(t)32 b(to)f(executing)390 4393 y Ft(bash)47 -b(filename)e Fj(arguments)150 4538 y Fu(if)30 b Ft(filename)d +(command,)h(it)150 981 y(spa)m(wns)30 b(a)g(subshell)g(to)h(execute)h +(it.)41 b(In)30 b(other)g(w)m(ords,)g(executing)390 1116 +y Ft(filename)46 b Fj(arguments)150 1250 y Fu(is)30 b(equiv)-5 +b(alen)m(t)32 b(to)f(executing)390 1385 y Ft(bash)47 +b(filename)e Fj(arguments)150 1519 y Fu(if)30 b Ft(filename)d Fu(is)j(an)f(executable)j(shell)e(script.)40 b(This)29 b(subshell)g(reinitializes)i(itself,)g(so)f(that)h(the)e(e\013ect)150 -4647 y(is)36 b(as)h(if)g(a)f(new)g(shell)h(had)f(b)s(een)g(in)m(v)m(ok) +1629 y(is)36 b(as)h(if)g(a)f(new)g(shell)h(had)f(b)s(een)g(in)m(v)m(ok) m(ed)h(to)h(in)m(terpret)e(the)h(script,)h(with)e(the)h(exception)h -(that)f(the)150 4757 y(lo)s(cations)25 b(of)g(commands)e(remem)m(b)s +(that)f(the)150 1738 y(lo)s(cations)25 b(of)g(commands)e(remem)m(b)s (ered)h(b)m(y)g(the)g(paren)m(t)g(\(see)h(the)f(description)g(of)g -Ft(hash)f Fu(in)h(Section)h(4.1)150 4866 y([Bourne)30 -b(Shell)h(Builtins],)g(page)g(42\))h(are)e(retained)h(b)m(y)f(the)h(c)m -(hild.)275 5011 y(Most)36 b(v)m(ersions)g(of)g(Unix)f(mak)m(e)h(this)g +Ft(hash)f Fu(in)h(Section)h(4.1)150 1848 y([Bourne)30 +b(Shell)h(Builtins],)g(page)g(43\))h(are)e(retained)h(b)m(y)f(the)h(c)m +(hild.)275 1983 y(Most)36 b(v)m(ersions)g(of)g(Unix)f(mak)m(e)h(this)g (a)g(part)f(of)h(the)g(op)s(erating)g(system's)f(command)h(execution) -150 5121 y(mec)m(hanism.)50 b(If)33 b(the)g(\014rst)g(line)h(of)f(a)h +150 2092 y(mec)m(hanism.)50 b(If)33 b(the)g(\014rst)g(line)h(of)f(a)h (script)f(b)s(egins)g(with)g(the)g(t)m(w)m(o)i(c)m(haracters)g(`)p -Ft(#!)p Fu(',)f(the)g(remainder)150 5230 y(of)d(the)g(line)h(sp)s +Ft(#!)p Fu(',)f(the)g(remainder)150 2202 y(of)d(the)g(line)h(sp)s (eci\014es)e(an)h(in)m(terpreter)g(for)g(the)g(program.)43 b(Th)m(us,)30 b(y)m(ou)h(can)h(sp)s(ecify)e(Bash,)i Ft(awk)p -Fu(,)e(P)m(erl,)150 5340 y(or)g(some)h(other)g(in)m(terpreter)g(and)e +Fu(,)e(P)m(erl,)150 2311 y(or)g(some)h(other)g(in)m(terpreter)g(and)e (write)i(the)f(rest)h(of)g(the)f(script)g(\014le)h(in)f(that)h -(language.)p eop end -%%Page: 41 47 -TeXDict begin 41 46 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(41)275 299 -y(The)40 b(argumen)m(ts)h(to)g(the)g(in)m(terpreter)g(consist)g(of)g(a) -g(single)h(optional)f(argumen)m(t)h(follo)m(wing)g(the)150 -408 y(in)m(terpreter)33 b(name)h(on)f(the)g(\014rst)f(line)i(of)f(the)g -(script)g(\014le,)h(follo)m(w)m(ed)h(b)m(y)e(the)g(name)g(of)g(the)h -(script)f(\014le,)150 518 y(follo)m(w)m(ed)g(b)m(y)f(the)f(rest)h(of)g -(the)f(argumen)m(ts.)45 b(Bash)31 b(will)h(p)s(erform)e(this)i(action)h -(on)e(op)s(erating)h(systems)150 628 y(that)24 b(do)g(not)f(handle)g -(it)h(themselv)m(es.)40 b(Note)25 b(that)f(some)g(older)g(v)m(ersions)f -(of)h(Unix)f(limit)i(the)f(in)m(terpreter)150 737 y(name)30 -b(and)g(argumen)m(t)h(to)g(a)g(maxim)m(um)f(of)h(32)g(c)m(haracters.) -275 872 y(Bash)h(scripts)g(often)g(b)s(egin)g(with)g -Ft(#!)e(/bin/bash)g Fu(\(assuming)i(that)h(Bash)f(has)g(b)s(een)f -(installed)i(in)150 981 y Ft(/bin)p Fu(\),)26 b(since)h(this)f(ensures) -f(that)i(Bash)f(will)h(b)s(e)f(used)f(to)i(in)m(terpret)f(the)h -(script,)g(ev)m(en)g(if)f(it)h(is)f(executed)150 1091 -y(under)j(another)h(shell.)p eop end -%%Page: 42 48 -TeXDict begin 42 47 bop 3659 -116 a Fu(42)150 299 y Fp(4)80 +(language.)275 2446 y(The)40 b(argumen)m(ts)h(to)g(the)g(in)m +(terpreter)g(consist)g(of)g(a)g(single)h(optional)f(argumen)m(t)h +(follo)m(wing)g(the)150 2555 y(in)m(terpreter)33 b(name)h(on)f(the)g +(\014rst)f(line)i(of)f(the)g(script)g(\014le,)h(follo)m(w)m(ed)h(b)m(y) +e(the)g(name)g(of)g(the)h(script)f(\014le,)150 2665 y(follo)m(w)m(ed)g +(b)m(y)f(the)f(rest)h(of)g(the)f(argumen)m(ts.)45 b(Bash)31 +b(will)h(p)s(erform)e(this)i(action)h(on)e(op)s(erating)h(systems)150 +2775 y(that)24 b(do)g(not)f(handle)g(it)h(themselv)m(es.)40 +b(Note)25 b(that)f(some)g(older)g(v)m(ersions)f(of)h(Unix)f(limit)i +(the)f(in)m(terpreter)150 2884 y(name)30 b(and)g(argumen)m(t)h(to)g(a)g +(maxim)m(um)f(of)h(32)g(c)m(haracters.)275 3019 y(Bash)h(scripts)g +(often)g(b)s(egin)g(with)g Ft(#!)e(/bin/bash)g Fu(\(assuming)i(that)h +(Bash)f(has)g(b)s(een)f(installed)i(in)150 3128 y Ft(/bin)p +Fu(\),)26 b(since)h(this)f(ensures)f(that)i(Bash)f(will)h(b)s(e)f(used) +f(to)i(in)m(terpret)f(the)h(script,)g(ev)m(en)g(if)f(it)h(is)f +(executed)150 3238 y(under)j(another)h(shell.)p eop end +%%Page: 43 49 +TeXDict begin 43 48 bop 3659 -116 a Fu(43)150 299 y Fp(4)80 b(Shell)53 b(Builtin)f(Commands)150 499 y Fu(Builtin)34 b(commands)f(are)h(con)m(tained)g(within)f(the)h(shell)g(itself.)50 b(When)34 b(the)f(name)h(of)f(a)h(builtin)f(com-)150 @@ -11119,39 +11276,40 @@ b(Builtin)150 828 y(commands)f(are)h(necessary)g(to)g(implemen)m(t)g (other)g(c)m(hapters:)69 b(builtin)43 b(commands)h(whic)m(h)150 1412 y(pro)m(vide)23 b(the)h(Bash)f(in)m(terface)i(to)f(the)g(job)f (con)m(trol)i(facilities)g(\(see)f(Section)h(7.2)f([Job)f(Con)m(trol)h -(Builtins],)150 1521 y(page)37 b(101\),)i(the)d(directory)g(stac)m(k)h +(Builtins],)150 1521 y(page)37 b(104\),)i(the)d(directory)g(stac)m(k)h (\(see)g(Section)g(6.8.1)g([Directory)h(Stac)m(k)f(Builtins],)h(page)e -(93\),)j(the)150 1631 y(command)23 b(history)h(\(see)g(Section)g(9.2)h -([Bash)f(History)g(Builtins],)h(page)g(137\),)h(and)d(the)h +(96\),)j(the)150 1631 y(command)23 b(history)h(\(see)g(Section)g(9.2)h +([Bash)f(History)g(Builtins],)h(page)g(141\),)h(and)d(the)h (programmable)150 1740 y(completion)32 b(facilities)g(\(see)g(Section)f -(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(131\).)275 +(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(134\).)275 1868 y(Man)m(y)f(of)f(the)h(builtins)e(ha)m(v)m(e)j(b)s(een)e(extended) g(b)m(y)g Fm(posix)g Fu(or)g(Bash.)275 1996 y(Unless)20 b(otherwise)h(noted,)h(eac)m(h)g(builtin)e(command)g(do)s(cumen)m(ted)g -(as)h(accepting)h(options)e(preceded)150 2105 y(b)m(y)29 -b(`)p Ft(-)p Fu(')g(accepts)i(`)p Ft(--)p Fu(')e(to)h(signify)f(the)g -(end)g(of)g(the)h(options.)40 b(The)29 b Ft(:)p Fu(,)g -Ft(true)p Fu(,)g Ft(false)p Fu(,)f(and)h Ft(test)f Fu(builtins)150 -2215 y(do)34 b(not)h(accept)h(options)f(and)f(do)g(not)h(treat)h(`)p -Ft(--)p Fu(')e(sp)s(ecially)-8 b(.)54 b(The)34 b Ft(exit)p -Fu(,)h Ft(logout)p Fu(,)f Ft(return)p Fu(,)g Ft(break)p -Fu(,)150 2325 y Ft(continue)p Fu(,)22 b Ft(let)p Fu(,)i(and)e -Ft(shift)f Fu(builtins)h(accept)i(and)e(pro)s(cess)g(argumen)m(ts)h(b)s -(eginning)f(with)g(`)p Ft(-)p Fu(')h(without)150 2434 -y(requiring)41 b(`)p Ft(--)p Fu('.)74 b(Other)41 b(builtins)g(that)h -(accept)h(argumen)m(ts)e(but)g(are)h(not)g(sp)s(eci\014ed)f(as)g -(accepting)150 2544 y(options)25 b(in)m(terpret)f(argumen)m(ts)h(b)s -(eginning)e(with)h(`)p Ft(-)p Fu(')h(as)f(in)m(v)-5 b(alid)25 -b(options)g(and)e(require)h(`)p Ft(--)p Fu(')g(to)h(prev)m(en)m(t)150 -2653 y(this)30 b(in)m(terpretation.)150 2880 y Fs(4.1)68 -b(Bourne)45 b(Shell)g(Builtins)150 3040 y Fu(The)22 b(follo)m(wing)j -(shell)d(builtin)h(commands)f(are)h(inherited)g(from)f(the)h(Bourne)g -(Shell.)38 b(These)22 b(commands)150 3149 y(are)31 b(implemen)m(ted)g -(as)f(sp)s(eci\014ed)g(b)m(y)g(the)h Fm(posix)e Fu(standard.)150 -3295 y Ft(:)h Fu(\(a)h(colon\))870 3405 y Ft(:)47 b([)p -Fj(arguments)p Ft(])630 3532 y Fu(Do)c(nothing)f(b)s(ey)m(ond)g -(expanding)f Fr(argumen)m(ts)46 b Fu(and)c(p)s(erforming)f -(redirections.)76 b(The)630 3642 y(return)29 b(status)i(is)f(zero.)150 +(as)h(accepting)h(options)e(preceded)150 2105 y(b)m(y)42 +b(`)p Ft(-)p Fu(')g(accepts)h(`)p Ft(--)p Fu(')f(to)h(signify)f(the)g +(end)f(of)h(the)g(options.)76 b(The)41 b Ft(:)p Fu(,)k +Ft(true)p Fu(,)f Ft(false)p Fu(,)g(and)d Ft(test)p Fu(/)p +Ft([)150 2215 y Fu(builtins)32 b(do)g(not)h(accept)h(options)f(and)f +(do)g(not)h(treat)g(`)p Ft(--)p Fu(')g(sp)s(ecially)-8 +b(.)48 b(The)32 b Ft(exit)p Fu(,)g Ft(logout)p Fu(,)f +Ft(return)p Fu(,)150 2325 y Ft(break)p Fu(,)38 b Ft(continue)p +Fu(,)f Ft(let)p Fu(,)i(and)d Ft(shift)g Fu(builtins)h(accept)i(and)e +(pro)s(cess)g(argumen)m(ts)h(b)s(eginning)e(with)150 +2434 y(`)p Ft(-)p Fu(')h(without)f(requiring)g(`)p Ft(--)p +Fu('.)59 b(Other)36 b(builtins)g(that)h(accept)h(argumen)m(ts)f(but)f +(are)h(not)g(sp)s(eci\014ed)f(as)150 2544 y(accepting)28 +b(options)f(in)m(terpret)g(argumen)m(ts)g(b)s(eginning)e(with)i(`)p +Ft(-)p Fu(')f(as)h(in)m(v)-5 b(alid)27 b(options)g(and)f(require)g(`)p +Ft(--)p Fu(')150 2653 y(to)31 b(prev)m(en)m(t)g(this)f(in)m +(terpretation.)150 2880 y Fs(4.1)68 b(Bourne)45 b(Shell)g(Builtins)150 +3040 y Fu(The)22 b(follo)m(wing)j(shell)d(builtin)h(commands)f(are)h +(inherited)g(from)f(the)h(Bourne)g(Shell.)38 b(These)22 +b(commands)150 3149 y(are)31 b(implemen)m(ted)g(as)f(sp)s(eci\014ed)g +(b)m(y)g(the)h Fm(posix)e Fu(standard.)150 3295 y Ft(:)h +Fu(\(a)h(colon\))870 3405 y Ft(:)47 b([)p Fj(arguments)p +Ft(])630 3532 y Fu(Do)c(nothing)f(b)s(ey)m(ond)g(expanding)f +Fr(argumen)m(ts)46 b Fu(and)c(p)s(erforming)f(redirections.)76 +b(The)630 3642 y(return)29 b(status)i(is)f(zero.)150 3788 y Ft(.)g Fu(\(a)h(p)s(erio)s(d\))870 3897 y Ft(.)47 b Fj(filename)f Ft([)p Fj(arguments)p Ft(])630 4025 y Fu(Read)34 b(and)f(execute)i(commands)e(from)g(the)h @@ -11182,9 +11340,9 @@ b Fr(\014lename)42 b Fu(is)630 5230 y(not)f(found,)h(or)e(cannot)h(b)s (e)f(read,)j(the)e(return)e(status)i(is)g(non-zero.)71 b(This)40 b(builtin)g(is)630 5340 y(equiv)-5 b(alen)m(t)32 b(to)f Ft(source)p Fu(.)p eop end -%%Page: 43 49 -TeXDict begin 43 48 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(43)150 299 y Ft(break)870 +%%Page: 44 50 +TeXDict begin 44 49 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(44)150 299 y Ft(break)870 428 y(break)46 b([)p Fj(n)p Ft(])630 558 y Fu(Exit)f(from)f(a)g Ft(for)p Fu(,)k Ft(while)p Fu(,)e Ft(until)p Fu(,)h(or)d Ft(select)f Fu(lo)s(op.)83 b(If)44 b Fr(n)g Fu(is)g(supplied,)j(the)e @@ -11257,9 +11415,9 @@ b(argumen)m(ts)h(are)g(concatenated)i(together)f(in)m(to)f(a)g(single)h Ft(eval)p Fu(.)54 b(If)630 5340 y(there)31 b(are)f(no)h(argumen)m(ts)f (or)h(only)f(empt)m(y)h(argumen)m(ts,)g(the)f(return)g(status)g(is)h (zero.)p eop end -%%Page: 44 50 -TeXDict begin 44 49 bop 150 -116 a Fu(Chapter)30 b(4:)h(Shell)f -(Builtin)h(Commands)2079 b(44)150 299 y Ft(exec)870 430 +%%Page: 45 51 +TeXDict begin 45 50 bop 150 -116 a Fu(Chapter)30 b(4:)h(Shell)f +(Builtin)h(Commands)2079 b(45)150 299 y Ft(exec)870 430 y(exec)47 b([-cl])f([-a)h Fj(name)p Ft(])f([)p Fj(command)g Ft([)p Fj(arguments)p Ft(]])630 562 y Fu(If)36 b Fr(command)k Fu(is)c(supplied,)h(it)g(replaces)h(the)e(shell)h(without)f(creating)i @@ -11275,24 +11433,26 @@ Fr(command)p Fu(.)630 1110 y(If)c Fr(command)j Fu(cannot)e(b)s(e)f (executed)h(for)f(some)g(reason,)h(a)g(non-in)m(teractiv)m(e)i(shell)d (exits,)630 1219 y(unless)27 b(the)g Ft(execfail)e Fu(shell)i(option)h (is)f(enabled.)40 b(In)27 b(that)g(case,)j(it)d(returns)f(failure.)40 -b(An)630 1329 y(in)m(teractiv)m(e)d(shell)c(returns)g(failure)h(if)f -(the)h(\014le)g(cannot)g(b)s(e)f(executed.)52 b(If)33 -b(no)h Fr(command)630 1439 y Fu(is)27 b(sp)s(eci\014ed,)g(redirections) -h(ma)m(y)f(b)s(e)g(used)f(to)i(a\013ect)g(the)f(curren)m(t)g(shell)g -(en)m(vironmen)m(t.)40 b(If)630 1548 y(there)34 b(are)h(no)f -(redirection)h(errors,)g(the)f(return)f(status)i(is)f(zero;)j -(otherwise)e(the)f(return)630 1658 y(status)d(is)f(non-zero.)150 -1811 y Ft(exit)870 1943 y(exit)47 b([)p Fj(n)p Ft(])630 -2074 y Fu(Exit)30 b(the)g(shell,)h(returning)d(a)j(status)f(of)g -Fr(n)f Fu(to)h(the)g(shell's)g(paren)m(t.)41 b(If)30 -b Fr(n)f Fu(is)h(omitted,)h(the)630 2184 y(exit)c(status)g(is)g(that)g -(of)g(the)g(last)g(command)f(executed.)41 b(An)m(y)26 -b(trap)h(on)f Ft(EXIT)f Fu(is)i(executed)630 2293 y(b)s(efore)j(the)h -(shell)f(terminates.)150 2447 y Ft(export)870 2578 y(export)46 -b([-fn])g([-p])h([)p Fj(name)p Ft([=)p Fj(value)p Ft(]])630 -2710 y Fu(Mark)40 b(eac)m(h)h Fr(name)k Fu(to)40 b(b)s(e)f(passed)g(to) -i(c)m(hild)f(pro)s(cesses)f(in)g(the)h(en)m(vironmen)m(t.)70 -b(If)39 b(the)630 2819 y Ft(-f)33 b Fu(option)h(is)g(supplied,)f(the)h +b(An)630 1329 y(in)m(teractiv)m(e)35 b(shell)d(returns)f(failure)h(if)g +(the)g(\014le)g(cannot)h(b)s(e)e(executed.)47 b(A)32 +b(subshell)f(exits)630 1439 y(unconditionally)j(if)g +Ft(exec)f Fu(fails.)52 b(If)33 b(no)h Fr(command)j Fu(is)d(sp)s +(eci\014ed,)h(redirections)f(ma)m(y)h(b)s(e)630 1548 +y(used)30 b(to)i(a\013ect)g(the)f(curren)m(t)g(shell)g(en)m(vironmen)m +(t.)43 b(If)30 b(there)i(are)f(no)g(redirection)g(errors,)630 +1658 y(the)g(return)e(status)i(is)f(zero;)h(otherwise)g(the)g(return)e +(status)i(is)f(non-zero.)150 1811 y Ft(exit)870 1943 +y(exit)47 b([)p Fj(n)p Ft(])630 2074 y Fu(Exit)30 b(the)g(shell,)h +(returning)d(a)j(status)f(of)g Fr(n)f Fu(to)h(the)g(shell's)g(paren)m +(t.)41 b(If)30 b Fr(n)f Fu(is)h(omitted,)h(the)630 2184 +y(exit)c(status)g(is)g(that)g(of)g(the)g(last)g(command)f(executed.)41 +b(An)m(y)26 b(trap)h(on)f Ft(EXIT)f Fu(is)i(executed)630 +2293 y(b)s(efore)j(the)h(shell)f(terminates.)150 2447 +y Ft(export)870 2578 y(export)46 b([-fn])g([-p])h([)p +Fj(name)p Ft([=)p Fj(value)p Ft(]])630 2710 y Fu(Mark)40 +b(eac)m(h)h Fr(name)k Fu(to)40 b(b)s(e)f(passed)g(to)i(c)m(hild)f(pro)s +(cesses)f(in)g(the)h(en)m(vironmen)m(t.)70 b(If)39 b(the)630 +2819 y Ft(-f)33 b Fu(option)h(is)g(supplied,)f(the)h Fr(name)5 b Fu(s)33 b(refer)g(to)i(shell)e(functions;)i(otherwise)f (the)g(names)630 2929 y(refer)c(to)h(shell)g(v)-5 b(ariables.)41 b(The)30 b Ft(-n)f Fu(option)i(means)f(to)h(no)f(longer)h(mark)f(eac)m @@ -11338,9 +11498,9 @@ b(it)36 b(m)m(ust)f(b)s(e)g(man)m(ually)630 5230 y(reset)i(b)s(et)m(w)m (shell)f(in)m(v)m(o)s(cation)j(if)e(a)630 5340 y(new)30 b(set)h(of)f(parameters)h(is)f(to)i(b)s(e)d(used.)p eop end -%%Page: 45 51 -TeXDict begin 45 50 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(45)630 299 y(When)41 +%%Page: 46 52 +TeXDict begin 46 51 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(46)630 299 y(When)41 b(the)h(end)e(of)i(options)g(is)f(encoun)m(tered,)k Ft(getopts)39 b Fu(exits)j(with)f(a)h(return)e(v)-5 b(alue)630 408 y(greater)32 b(than)e(zero.)41 b Ft(OPTIND)29 b Fu(is)h(set)h(to)g(the) @@ -11393,9 +11553,9 @@ b(The)42 b Ft(-d)630 3258 y Fu(option)31 b(causes)g(the)f(shell)h(to)g Fr(name)p Fu(.)41 b(If)30 b(the)630 3367 y Ft(-t)39 b Fu(option)h(is)g(supplied,)g(the)g(full)f(pathname)h(to)g(whic)m(h)f (eac)m(h)i Fr(name)k Fu(corresp)s(onds)38 b(is)630 3477 -y(prin)m(ted.)k(If)30 b(m)m(ultiple)i Fr(name)k Fu(argumen)m(ts)31 -b(are)g(supplied)f(with)g Ft(-t)g Fu(the)h Fr(name)36 -b Fu(is)31 b(prin)m(ted)630 3587 y(b)s(efore)e(the)i(hashed)e(full)g +y(prin)m(ted.)i(If)28 b(m)m(ultiple)h Fr(name)34 b Fu(argumen)m(ts)29 +b(are)g(supplied)f(with)g Ft(-t)p Fu(,)h(the)g Fr(name)34 +b Fu(is)28 b(prin)m(ted)630 3587 y(b)s(efore)h(the)i(hashed)e(full)g (pathname.)41 b(The)29 b Ft(-l)g Fu(option)i(causes)f(output)f(to)i(b)s (e)e(displa)m(y)m(ed)630 3696 y(in)23 b(a)h(format)g(that)g(ma)m(y)g(b) s(e)f(reused)f(as)i(input.)37 b(If)23 b(no)h(argumen)m(ts)f(are)h(giv)m @@ -11421,9 +11581,9 @@ b(alues)34 b(of)f(these)g(names)g(ma)m(y)h(not)f(b)s(e)f(c)m(hanged)630 5340 y(b)m(y)38 b(subsequen)m(t)g(assignmen)m(t.)65 b(If)38 b(the)h Ft(-f)f Fu(option)g(is)h(supplied,)g(eac)m(h)h Fr(name)j Fu(refers)38 b(to)p eop end -%%Page: 46 52 -TeXDict begin 46 51 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(46)630 299 y(a)37 +%%Page: 47 53 +TeXDict begin 47 52 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(47)630 299 y(a)37 b(shell)g(function.)59 b(The)36 b Ft(-a)g Fu(option)h(means)f(eac)m(h)i Fr(name)k Fu(refers)36 b(to)h(an)f(indexed)g(arra)m(y)630 408 y(v)-5 b(ariable;)28 b(the)f Ft(-A)e Fu(option)h(means)g(eac)m(h)h @@ -11455,9 +11615,9 @@ b(is)f(the)g(exit)g(status)g(of)g(the)g(last)h(command)630 1968 y(executed)i(in)f(the)g(function.)72 b(If)41 b Ft(return)e Fu(is)i(executed)h(b)m(y)f(a)h(trap)f(handler,)i(the)e(last)630 2078 y(command)d(used)f(to)i(determine)f(the)g(status)g(is)h(the)f -(last)h(command)e(executed)i(b)s(efore)630 2187 y(the)28 -b(trap)f(handler.)39 b(if)28 b Ft(return)e Fu(is)h(executed)i(during)d -(a)i Ft(DEBUG)f Fu(trap,)h(the)g(last)g(command)630 2297 +(last)h(command)e(executed)i(b)s(efore)630 2187 y(the)27 +b(trap)g(handler.)39 b(If)26 b Ft(return)g Fu(is)h(executed)h(during)d +(a)j Ft(DEBUG)d Fu(trap,)j(the)f(last)h(command)630 2297 y(used)f(to)h(determine)g(the)f(status)h(is)g(the)f(last)i(command)e (executed)h(b)m(y)g(the)f(trap)h(handler)630 2406 y(b)s(efore)e Ft(return)f Fu(w)m(as)i(in)m(v)m(ok)m(ed.)41 b Ft(return)25 @@ -11499,971 +11659,980 @@ Fr(expr)48 b Fu(and)41 b(return)g(a)h(status)g(of)g(0)g(\(true\))h(or)f g(m)m(ust)h(b)s(e)f(a)i(separate)g(argumen)m(t.)41 b(Expressions)630 4977 y(are)26 b(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s (elo)m(w)h(in)g(Section)h(6.4)h([Bash)e(Conditional)630 -5087 y(Expressions],)39 b(page)g(87.)64 b Ft(test)37 +5087 y(Expressions],)39 b(page)g(90.)64 b Ft(test)37 b Fu(do)s(es)g(not)h(accept)i(an)m(y)e(options,)i(nor)e(do)s(es)f(it)h (accept)630 5197 y(and)30 b(ignore)h(an)f(argumen)m(t)h(of)f Ft(--)g Fu(as)h(signifying)f(the)h(end)f(of)g(options.)630 5340 y(When)g(the)h Ft([)f Fu(form)g(is)g(used,)g(the)g(last)i(argumen) m(t)e(to)i(the)e(command)g(m)m(ust)h(b)s(e)e(a)i Ft(])p Fu(.)p eop end -%%Page: 47 53 -TeXDict begin 47 52 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(47)630 299 y(Expressions)23 +%%Page: 48 54 +TeXDict begin 48 53 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(48)630 299 y(Expressions)23 b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h(follo)m(wing)h(op)s (erators,)g(listed)f(in)f(decreasing)630 408 y(order)30 b(of)h(precedence.)43 b(The)30 b(ev)-5 b(aluation)33 b(dep)s(ends)28 b(on)j(the)g(n)m(um)m(b)s(er)f(of)h(argumen)m(ts;)g (see)630 518 y(b)s(elo)m(w.)41 b(Op)s(erator)30 b(precedence)h(is)f (used)g(when)f(there)i(are)f(\014v)m(e)h(or)f(more)h(argumen)m(ts.)630 -667 y Ft(!)f Fj(expr)210 b Fu(T)-8 b(rue)30 b(if)g Fr(expr)37 -b Fu(is)30 b(false.)630 817 y Ft(\()g Fj(expr)f Ft(\))133 +673 y Ft(!)f Fj(expr)210 b Fu(T)-8 b(rue)30 b(if)g Fr(expr)37 +b Fu(is)30 b(false.)630 829 y Ft(\()g Fj(expr)f Ft(\))133 b Fu(Returns)23 b(the)i(v)-5 b(alue)25 b(of)f Fr(expr)p Fu(.)38 b(This)24 b(ma)m(y)h(b)s(e)e(used)h(to)h(o)m(v)m(erride)g(the)g -(normal)1110 927 y(precedence)31 b(of)f(op)s(erators.)630 -1076 y Fj(expr1)f Ft(-a)h Fj(expr2)1110 1186 y Fu(T)-8 +(normal)1110 938 y(precedence)31 b(of)f(op)s(erators.)630 +1093 y Fj(expr1)f Ft(-a)h Fj(expr2)1110 1203 y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g Fr(expr1)37 b Fu(and)30 b Fr(expr2)38 -b Fu(are)30 b(true.)630 1335 y Fj(expr1)f Ft(-o)h Fj(expr2)1110 -1445 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expr1)38 b -Fu(or)30 b Fr(expr2)37 b Fu(is)31 b(true.)630 1594 y(The)37 +b Fu(are)30 b(true.)630 1358 y Fj(expr1)f Ft(-o)h Fj(expr2)1110 +1468 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expr1)38 b +Fu(or)30 b Fr(expr2)37 b Fu(is)31 b(true.)630 1623 y(The)37 b Ft(test)f Fu(and)g Ft([)h Fu(builtins)g(ev)-5 b(aluate)39 b(conditional)f(expressions)f(using)g(a)g(set)h(of)f(rules)630 -1704 y(based)30 b(on)g(the)h(n)m(um)m(b)s(er)e(of)h(argumen)m(ts.)630 -1853 y(0)h(argumen)m(ts)1110 1963 y(The)f(expression)g(is)g(false.)630 -2112 y(1)h(argumen)m(t)1110 2222 y(The)f(expression)g(is)g(true)h(if)f -(and)g(only)g(if)h(the)f(argumen)m(t)h(is)f(not)h(n)m(ull.)630 -2371 y(2)g(argumen)m(ts)1110 2481 y(If)f(the)h(\014rst)f(argumen)m(t)h +1733 y(based)30 b(on)g(the)h(n)m(um)m(b)s(er)e(of)h(argumen)m(ts.)630 +1888 y(0)h(argumen)m(ts)1110 1998 y(The)f(expression)g(is)g(false.)630 +2153 y(1)h(argumen)m(t)1110 2262 y(The)f(expression)g(is)g(true)h(if,)f +(and)g(only)g(if,)h(the)g(argumen)m(t)f(is)h(not)f(n)m(ull.)630 +2418 y(2)h(argumen)m(ts)1110 2527 y(If)f(the)h(\014rst)f(argumen)m(t)h (is)g(`)p Ft(!)p Fu(',)g(the)g(expression)g(is)g(true)f(if)h(and)f -(only)h(if)g(the)1110 2590 y(second)j(argumen)m(t)f(is)h(n)m(ull.)50 +(only)h(if)g(the)1110 2637 y(second)j(argumen)m(t)f(is)h(n)m(ull.)50 b(If)33 b(the)h(\014rst)e(argumen)m(t)i(is)g(one)g(of)f(the)h(unary) -1110 2700 y(conditional)42 b(op)s(erators)f(\(see)g(Section)h(6.4)f -([Bash)g(Conditional)g(Expres-)1110 2809 y(sions],)34 -b(page)f(87\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e -(test)j(is)f(true.)47 b(If)1110 2919 y(the)33 b(\014rst)g(argumen)m(t)h +1110 2746 y(conditional)42 b(op)s(erators)f(\(see)g(Section)h(6.4)f +([Bash)g(Conditional)g(Expres-)1110 2856 y(sions],)34 +b(page)f(90\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e +(test)j(is)f(true.)47 b(If)1110 2966 y(the)33 b(\014rst)g(argumen)m(t)h (is)f(not)g(a)h(v)-5 b(alid)34 b(unary)e(op)s(erator,)i(the)g -(expression)f(is)1110 3029 y(false.)630 3178 y(3)e(argumen)m(ts)1110 -3288 y(The)44 b(follo)m(wing)i(conditions)f(are)g(applied)f(in)g(the)g -(order)g(listed.)84 b(If)44 b(the)1110 3397 y(second)f(argumen)m(t)g -(is)g(one)g(of)g(the)g(binary)f(conditional)i(op)s(erators)f(\(see)1110 -3507 y(Section)h(6.4)g([Bash)g(Conditional)g(Expressions],)i(page)e -(87\),)k(the)43 b(result)1110 3616 y(of)h(the)h(expression)f(is)g(the)g -(result)g(of)h(the)f(binary)g(test)h(using)e(the)i(\014rst)1110 -3726 y(and)31 b(third)g(argumen)m(ts)i(as)f(op)s(erands.)44 -b(The)31 b(`)p Ft(-a)p Fu(')h(and)g(`)p Ft(-o)p Fu(')f(op)s(erators)i -(are)1110 3836 y(considered)25 b(binary)g(op)s(erators)g(when)f(there)i -(are)f(three)h(argumen)m(ts.)39 b(If)25 b(the)1110 3945 -y(\014rst)j(argumen)m(t)h(is)g(`)p Ft(!)p Fu(',)h(the)f(v)-5 -b(alue)29 b(is)g(the)g(negation)i(of)e(the)g(t)m(w)m(o-argumen)m(t)1110 -4055 y(test)38 b(using)f(the)g(second)g(and)g(third)f(argumen)m(ts.)61 -b(If)37 b(the)g(\014rst)f(argumen)m(t)1110 4164 y(is)j(exactly)i(`)p -Ft(\()p Fu(')f(and)f(the)g(third)g(argumen)m(t)h(is)f(exactly)i(`)p -Ft(\))p Fu(',)h(the)e(result)f(is)1110 4274 y(the)46 -b(one-argumen)m(t)g(test)h(of)f(the)f(second)h(argumen)m(t.)86 -b(Otherwise,)50 b(the)1110 4384 y(expression)30 b(is)h(false.)630 -4533 y(4)g(argumen)m(ts)1110 4643 y(If)h(the)i(\014rst)e(argumen)m(t)h +(expression)f(is)1110 3075 y(false.)630 3230 y(3)e(argumen)m(ts)1110 +3340 y(The)f(follo)m(wing)i(conditions)f(are)f(applied)h(in)f(the)g +(order)g(listed.)1159 3472 y(1.)61 b(If)29 b(the)g(second)g(argumen)m +(t)h(is)f(one)h(of)f(the)h(binary)e(conditional)j(op)s(era-)1290 +3582 y(tors)c(\(see)h(Section)g(6.4)g([Bash)g(Conditional)f +(Expressions],)h(page)f(90\),)1290 3692 y(the)d(result)g(of)f(the)h +(expression)g(is)g(the)f(result)h(of)g(the)g(binary)f(test)h(using)1290 +3801 y(the)35 b(\014rst)e(and)h(third)g(argumen)m(ts)h(as)f(op)s +(erands.)52 b(The)34 b(`)p Ft(-a)p Fu(')g(and)g(`)p Ft(-o)p +Fu(')1290 3911 y(op)s(erators)24 b(are)g(considered)g(binary)f(op)s +(erators)h(when)f(there)h(are)h(three)1290 4020 y(argumen)m(ts.)1159 +4153 y(2.)61 b(If)41 b(the)h(\014rst)e(argumen)m(t)i(is)f(`)p +Ft(!)p Fu(',)k(the)d(v)-5 b(alue)41 b(is)h(the)f(negation)i(of)f(the) +1290 4262 y(t)m(w)m(o-argumen)m(t)33 b(test)e(using)f(the)g(second)h +(and)e(third)h(argumen)m(ts.)1159 4395 y(3.)61 b(If)35 +b(the)h(\014rst)e(argumen)m(t)i(is)g(exactly)h(`)p Ft(\()p +Fu(')f(and)f(the)g(third)g(argumen)m(t)h(is)1290 4504 +y(exactly)i(`)p Ft(\))p Fu(',)g(the)f(result)f(is)h(the)f(one-argumen)m +(t)i(test)f(of)f(the)h(second)1290 4614 y(argumen)m(t.)1159 +4746 y(4.)61 b(Otherwise,)30 b(the)h(expression)f(is)g(false.)630 +4902 y(4)h(argumen)m(ts)1110 5011 y(If)h(the)i(\014rst)e(argumen)m(t)h (is)g(`)p Ft(!)p Fu(',)h(the)f(result)g(is)g(the)g(negation)h(of)f(the) -g(three-)1110 4752 y(argumen)m(t)h(expression)f(comp)s(osed)h(of)f(the) -h(remaining)g(argumen)m(ts.)50 b(Oth-)1110 4862 y(erwise,)34 +g(three-)1110 5121 y(argumen)m(t)h(expression)f(comp)s(osed)h(of)f(the) +h(remaining)g(argumen)m(ts.)50 b(Oth-)1110 5230 y(erwise,)34 b(the)f(expression)g(is)g(parsed)g(and)f(ev)-5 b(aluated)34 -b(according)h(to)e(prece-)1110 4971 y(dence)e(using)e(the)i(rules)f -(listed)h(ab)s(o)m(v)m(e.)630 5121 y(5)g(or)f(more)h(argumen)m(ts)1110 -5230 y(The)43 b(expression)f(is)i(parsed)e(and)g(ev)-5 -b(aluated)45 b(according)f(to)f(precedence)1110 5340 -y(using)30 b(the)g(rules)g(listed)h(ab)s(o)m(v)m(e.)p -eop end -%%Page: 48 54 -TeXDict begin 48 53 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(48)630 299 y(When)40 -b(used)f(with)g Ft(test)g Fu(or)h(`)p Ft([)p Fu(',)j(the)d(`)p -Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s(erators)g(sort)g -(lexicographically)630 408 y(using)30 b(ASCI)s(I)f(ordering.)150 -559 y Ft(times)870 689 y(times)630 819 y Fu(Prin)m(t)37 +b(according)h(to)e(prece-)1110 5340 y(dence)e(using)e(the)i(rules)f +(listed)h(ab)s(o)m(v)m(e.)p eop end +%%Page: 49 55 +TeXDict begin 49 54 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(49)630 299 y(5)31 +b(or)f(more)h(argumen)m(ts)1110 408 y(The)43 b(expression)f(is)i +(parsed)e(and)g(ev)-5 b(aluated)45 b(according)f(to)f(precedence)1110 +518 y(using)30 b(the)g(rules)g(listed)h(ab)s(o)m(v)m(e.)630 +690 y(When)40 b(used)f(with)g Ft(test)g Fu(or)h(`)p Ft([)p +Fu(',)j(the)d(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s(erators)g +(sort)g(lexicographically)630 800 y(using)30 b(ASCI)s(I)f(ordering.)150 +972 y Ft(times)870 1113 y(times)630 1254 y Fu(Prin)m(t)37 b(out)h(the)g(user)e(and)h(system)g(times)h(used)f(b)m(y)g(the)h(shell) -f(and)g(its)h(c)m(hildren.)61 b(The)630 929 y(return)29 -b(status)i(is)f(zero.)150 1080 y Ft(trap)870 1210 y(trap)47 +f(and)g(its)h(c)m(hildren.)61 b(The)630 1363 y(return)29 +b(status)i(is)f(zero.)150 1536 y Ft(trap)870 1677 y(trap)47 b([-lp])f([)p Fj(arg)p Ft(])g([)p Fj(sigspec)g Ft(...)o(])630 -1340 y Fu(The)d(commands)f(in)h Fr(arg)51 b Fu(are)44 +1817 y Fu(The)d(commands)f(in)h Fr(arg)51 b Fu(are)44 b(to)g(b)s(e)e(read)h(and)g(executed)h(when)e(the)h(shell)g(receiv)m -(es)630 1450 y(signal)36 b Fr(sigsp)s(ec)p Fu(.)57 b(If)35 +(es)630 1927 y(signal)36 b Fr(sigsp)s(ec)p Fu(.)57 b(If)35 b Fr(arg)44 b Fu(is)36 b(absen)m(t)g(\(and)f(there)h(is)g(a)f(single)i Fr(sigsp)s(ec)6 b Fu(\))35 b(or)h(equal)g(to)h(`)p Ft(-)p -Fu(',)630 1559 y(eac)m(h)k(sp)s(eci\014ed)e(signal's)h(disp)s(osition)g +Fu(',)630 2037 y(eac)m(h)k(sp)s(eci\014ed)e(signal's)h(disp)s(osition)g (is)f(reset)i(to)f(the)g(v)-5 b(alue)40 b(it)g(had)f(when)g(the)h -(shell)630 1669 y(w)m(as)33 b(started.)47 b(If)32 b Fr(arg)41 +(shell)630 2146 y(w)m(as)33 b(started.)47 b(If)32 b Fr(arg)41 b Fu(is)32 b(the)h(n)m(ull)f(string,)i(then)e(the)g(signal)i(sp)s -(eci\014ed)d(b)m(y)i(eac)m(h)g Fr(sigsp)s(ec)630 1778 +(eci\014ed)d(b)m(y)i(eac)m(h)g Fr(sigsp)s(ec)630 2256 y Fu(is)g(ignored)h(b)m(y)f(the)g(shell)h(and)e(commands)h(it)h(in)m(v) m(ok)m(es.)51 b(If)33 b Fr(arg)41 b Fu(is)33 b(not)h(presen)m(t)f(and)g -Ft(-p)630 1888 y Fu(has)g(b)s(een)g(supplied,)f(the)i(shell)f(displa)m +Ft(-p)630 2365 y Fu(has)g(b)s(een)g(supplied,)f(the)i(shell)f(displa)m (ys)h(the)f(trap)g(commands)g(asso)s(ciated)i(with)e(eac)m(h)630 -1998 y Fr(sigsp)s(ec)p Fu(.)47 b(If)31 b(no)i(argumen)m(ts)f(are)h +2475 y Fr(sigsp)s(ec)p Fu(.)47 b(If)31 b(no)i(argumen)m(ts)f(are)h (supplied,)e(or)i(only)f Ft(-p)g Fu(is)g(giv)m(en,)i -Ft(trap)d Fu(prin)m(ts)h(the)g(list)630 2107 y(of)c(commands)f(asso)s +Ft(trap)d Fu(prin)m(ts)h(the)g(list)630 2585 y(of)c(commands)f(asso)s (ciated)i(with)f(eac)m(h)h(signal)f(n)m(um)m(b)s(er)e(in)i(a)g(form)f -(that)h(ma)m(y)h(b)s(e)e(reused)630 2217 y(as)f(shell)h(input.)38 +(that)h(ma)m(y)h(b)s(e)e(reused)630 2694 y(as)f(shell)h(input.)38 b(The)26 b Ft(-l)f Fu(option)i(causes)f(the)g(shell)h(to)g(prin)m(t)e -(a)i(list)f(of)h(signal)g(names)f(and)630 2326 y(their)33 +(a)i(list)f(of)h(signal)g(names)f(and)630 2804 y(their)33 b(corresp)s(onding)f(n)m(um)m(b)s(ers.)47 b(Eac)m(h)34 b Fr(sigsp)s(ec)39 b Fu(is)33 b(either)g(a)h(signal)g(name)f(or)g(a)g -(signal)630 2436 y(n)m(um)m(b)s(er.)39 b(Signal)31 b(names)f(are)h +(signal)630 2913 y(n)m(um)m(b)s(er.)39 b(Signal)31 b(names)f(are)h (case)h(insensitiv)m(e)f(and)f(the)g Ft(SIG)g Fu(pre\014x)f(is)i -(optional.)630 2566 y(If)k(a)g Fr(sigsp)s(ec)41 b Fu(is)35 +(optional.)630 3054 y(If)k(a)g Fr(sigsp)s(ec)41 b Fu(is)35 b Ft(0)g Fu(or)g Ft(EXIT)p Fu(,)g Fr(arg)43 b Fu(is)35 b(executed)h(when)e(the)h(shell)h(exits.)55 b(If)35 b(a)g -Fr(sigsp)s(ec)41 b Fu(is)630 2676 y Ft(DEBUG)p Fu(,)32 +Fr(sigsp)s(ec)41 b Fu(is)630 3164 y Ft(DEBUG)p Fu(,)32 b(the)g(command)g Fr(arg)40 b Fu(is)33 b(executed)g(b)s(efore)f(ev)m -(ery)h(simple)f(command,)h Ft(for)e Fu(com-)630 2785 +(ery)h(simple)f(command,)h Ft(for)e Fu(com-)630 3273 y(mand,)d Ft(case)g Fu(command,)h Ft(select)e Fu(command,)i(ev)m(ery)h -(arithmetic)g Ft(for)d Fu(command,)j(and)630 2895 y(b)s(efore)22 +(arithmetic)g Ft(for)d Fu(command,)j(and)630 3383 y(b)s(efore)22 b(the)g(\014rst)f(command)h(executes)i(in)e(a)g(shell)h(function.)37 -b(Refer)22 b(to)h(the)g(description)f(of)630 3004 y(the)i +b(Refer)22 b(to)h(the)g(description)f(of)630 3493 y(the)i Ft(extdebug)d Fu(option)j(to)h(the)f Ft(shopt)e Fu(builtin)h(\(see)i -(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)630 3114 -y(page)33 b(64\))g(for)f(details)h(of)f(its)h(e\013ect)g(on)f(the)g +(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)630 3602 +y(page)33 b(65\))g(for)f(details)h(of)f(its)h(e\013ect)g(on)f(the)g Ft(DEBUG)f Fu(trap.)46 b(If)31 b(a)i Fr(sigsp)s(ec)38 -b Fu(is)32 b Ft(RETURN)p Fu(,)f(the)630 3224 y(command)h +b Fu(is)32 b Ft(RETURN)p Fu(,)f(the)630 3712 y(command)h Fr(arg)41 b Fu(is)33 b(executed)g(eac)m(h)h(time)f(a)g(shell)g -(function)g(or)f(a)h(script)g(executed)g(with)630 3333 +(function)g(or)f(a)h(script)g(executed)g(with)630 3821 y(the)e Ft(.)f Fu(or)g Ft(source)f Fu(builtins)g(\014nishes)h -(executing.)630 3463 y(If)20 b(a)i Fr(sigsp)s(ec)27 b +(executing.)630 3962 y(If)20 b(a)i Fr(sigsp)s(ec)27 b Fu(is)21 b Ft(ERR)p Fu(,)h(the)f(command)g Fr(arg)29 b Fu(is)21 b(executed)h(whenev)m(er)e(a)i(pip)s(eline)e(\(whic)m(h)h -(ma)m(y)630 3573 y(consist)35 b(of)g(a)f(single)h(simple)g(command\),)h +(ma)m(y)630 4072 y(consist)35 b(of)g(a)f(single)h(simple)g(command\),)h (a)e(list,)j(or)d(a)h(comp)s(ound)e(command)h(returns)630 -3682 y(a)41 b(non-zero)g(exit)h(status,)h(sub)5 b(ject)41 +4181 y(a)41 b(non-zero)g(exit)h(status,)h(sub)5 b(ject)41 b(to)g(the)g(follo)m(wing)h(conditions.)72 b(The)40 b -Ft(ERR)f Fu(trap)i(is)630 3792 y(not)c(executed)h(if)f(the)h(failed)f +Ft(ERR)f Fu(trap)i(is)630 4291 y(not)c(executed)h(if)f(the)h(failed)f (command)g(is)g(part)g(of)h(the)f(command)g(list)h(immediately)630 -3902 y(follo)m(wing)30 b(an)e Ft(until)f Fu(or)i Ft(while)e +4401 y(follo)m(wing)30 b(an)e Ft(until)f Fu(or)i Ft(while)e Fu(k)m(eyw)m(ord,)i(part)g(of)f(the)h(test)g(follo)m(wing)h(the)f -Ft(if)f Fu(or)g Ft(elif)630 4011 y Fu(reserv)m(ed)45 +Ft(if)f Fu(or)g Ft(elif)630 4510 y Fu(reserv)m(ed)45 b(w)m(ords,)j(part)c(of)h(a)g(command)g(executed)g(in)g(a)g -Ft(&&)f Fu(or)h Ft(||)f Fu(list)h(except)h(the)630 4121 +Ft(&&)f Fu(or)h Ft(||)f Fu(list)h(except)h(the)630 4620 y(command)28 b(follo)m(wing)j(the)d(\014nal)h Ft(&&)f Fu(or)g Ft(||)p Fu(,)h(an)m(y)g(command)f(in)h(a)g(pip)s(eline)f(but)g -(the)h(last,)630 4230 y(or)d(if)g(the)f(command's)h(return)f(status)h +(the)h(last,)630 4729 y(or)d(if)g(the)f(command's)h(return)f(status)h (is)g(b)s(eing)f(in)m(v)m(erted)i(using)e Ft(!)p Fu(.)39 -b(These)25 b(are)i(the)f(same)630 4340 y(conditions)31 +b(These)25 b(are)i(the)f(same)630 4839 y(conditions)31 b(ob)s(ey)m(ed)f(b)m(y)h(the)f Ft(errexit)f Fu(\()p Ft(-e)p -Fu(\))h(option.)630 4470 y(Signals)37 b(ignored)f(up)s(on)f(en)m(try)i +Fu(\))h(option.)630 4980 y(Signals)37 b(ignored)f(up)s(on)f(en)m(try)i (to)g(the)f(shell)h(cannot)g(b)s(e)f(trapp)s(ed)f(or)h(reset.)59 -b(T)-8 b(rapp)s(ed)630 4580 y(signals)28 b(that)f(are)h(not)f(b)s(eing) +b(T)-8 b(rapp)s(ed)630 5089 y(signals)28 b(that)f(are)h(not)f(b)s(eing) g(ignored)g(are)g(reset)h(to)g(their)f(original)h(v)-5 -b(alues)28 b(in)e(a)i(subshell)630 4689 y(or)i(subshell)g(en)m -(vironmen)m(t)h(when)e(one)i(is)f(created.)630 4819 y(The)g(return)f +b(alues)28 b(in)e(a)i(subshell)630 5199 y(or)i(subshell)g(en)m +(vironmen)m(t)h(when)e(one)i(is)f(created.)630 5340 y(The)g(return)f (status)i(is)f(zero)h(unless)f(a)h Fr(sigsp)s(ec)36 b Fu(do)s(es)30 b(not)h(sp)s(ecify)f(a)g(v)-5 b(alid)31 -b(signal.)150 4970 y Ft(umask)870 5100 y(umask)46 b([-p])h([-S])g([)p -Fj(mode)p Ft(])630 5230 y Fu(Set)30 b(the)f(shell)h(pro)s(cess's)f -(\014le)h(creation)g(mask)g(to)g Fr(mo)s(de)p Fu(.)40 -b(If)29 b Fr(mo)s(de)34 b Fu(b)s(egins)29 b(with)g(a)h(digit,)630 -5340 y(it)e(is)f(in)m(terpreted)g(as)g(an)g(o)s(ctal)i(n)m(um)m(b)s -(er;)e(if)g(not,)h(it)g(is)f(in)m(terpreted)g(as)g(a)h(sym)m(b)s(olic)f -(mo)s(de)p eop end -%%Page: 49 55 -TeXDict begin 49 54 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(49)630 299 y(mask)29 -b(similar)g(to)g(that)h(accepted)g(b)m(y)f(the)g Ft(chmod)e -Fu(command.)40 b(If)28 b Fr(mo)s(de)34 b Fu(is)28 b(omitted,)j(the)630 -408 y(curren)m(t)39 b(v)-5 b(alue)40 b(of)f(the)g(mask)g(is)h(prin)m -(ted.)66 b(If)39 b(the)g Ft(-S)g Fu(option)g(is)h(supplied)d(without)j -(a)630 518 y Fr(mo)s(de)d Fu(argumen)m(t,)d(the)e(mask)g(is)h(prin)m -(ted)f(in)g(a)g(sym)m(b)s(olic)h(format.)47 b(If)32 b(the)g -Ft(-p)g Fu(option)h(is)630 628 y(supplied,)f(and)f Fr(mo)s(de)37 +b(signal.)p eop end +%%Page: 50 56 +TeXDict begin 50 55 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(50)150 299 y Ft(umask)870 +427 y(umask)46 b([-p])h([-S])g([)p Fj(mode)p Ft(])630 +554 y Fu(Set)30 b(the)f(shell)h(pro)s(cess's)f(\014le)h(creation)g +(mask)g(to)g Fr(mo)s(de)p Fu(.)40 b(If)29 b Fr(mo)s(de)34 +b Fu(b)s(egins)29 b(with)g(a)h(digit,)630 664 y(it)e(is)f(in)m +(terpreted)g(as)g(an)g(o)s(ctal)i(n)m(um)m(b)s(er;)e(if)g(not,)h(it)g +(is)f(in)m(terpreted)g(as)g(a)h(sym)m(b)s(olic)f(mo)s(de)630 +773 y(mask)i(similar)g(to)g(that)h(accepted)g(b)m(y)f(the)g +Ft(chmod)e Fu(command.)40 b(If)28 b Fr(mo)s(de)34 b Fu(is)28 +b(omitted,)j(the)630 883 y(curren)m(t)39 b(v)-5 b(alue)40 +b(of)f(the)g(mask)g(is)h(prin)m(ted.)66 b(If)39 b(the)g +Ft(-S)g Fu(option)g(is)h(supplied)d(without)j(a)630 993 +y Fr(mo)s(de)d Fu(argumen)m(t,)d(the)e(mask)g(is)h(prin)m(ted)f(in)g(a) +g(sym)m(b)s(olic)h(format.)47 b(If)32 b(the)g Ft(-p)g +Fu(option)h(is)630 1102 y(supplied,)f(and)f Fr(mo)s(de)37 b Fu(is)32 b(omitted,)i(the)f(output)f(is)g(in)g(a)g(form)g(that)h(ma)m -(y)g(b)s(e)e(reused)h(as)630 737 y(input.)62 b(The)38 +(y)g(b)s(e)e(reused)h(as)630 1212 y(input.)62 b(The)38 b(return)f(status)h(is)g(zero)g(if)g(the)g(mo)s(de)g(is)g(successfully) -g(c)m(hanged)g(or)g(if)g(no)630 847 y Fr(mo)s(de)d Fu(argumen)m(t)c(is) -f(supplied,)g(and)f(non-zero)i(otherwise.)630 977 y(Note)38 -b(that)e(when)g(the)g(mo)s(de)g(is)g(in)m(terpreted)h(as)f(an)g(o)s -(ctal)i(n)m(um)m(b)s(er,)e(eac)m(h)i(n)m(um)m(b)s(er)d(of)630 -1086 y(the)f(umask)g(is)h(subtracted)f(from)f Ft(7)p +g(c)m(hanged)g(or)g(if)g(no)630 1321 y Fr(mo)s(de)d Fu(argumen)m(t)c +(is)f(supplied,)g(and)f(non-zero)i(otherwise.)630 1449 +y(Note)38 b(that)e(when)g(the)g(mo)s(de)g(is)g(in)m(terpreted)h(as)f +(an)g(o)s(ctal)i(n)m(um)m(b)s(er,)e(eac)m(h)i(n)m(um)m(b)s(er)d(of)630 +1559 y(the)f(umask)g(is)h(subtracted)f(from)f Ft(7)p Fu(.)53 b(Th)m(us,)34 b(a)h(umask)e(of)i Ft(022)e Fu(results)h(in)g(p)s -(ermissions)630 1196 y(of)d Ft(755)p Fu(.)150 1347 y -Ft(unset)870 1477 y(unset)46 b([-fnv])g([)p Fj(name)p -Ft(])630 1607 y Fu(Remo)m(v)m(e)36 b(eac)m(h)f(v)-5 b(ariable)35 +(ermissions)630 1668 y(of)d Ft(755)p Fu(.)150 1814 y +Ft(unset)870 1942 y(unset)46 b([-fnv])g([)p Fj(name)p +Ft(])630 2069 y Fu(Remo)m(v)m(e)36 b(eac)m(h)f(v)-5 b(ariable)35 b(or)f(function)f Fr(name)p Fu(.)52 b(If)33 b(the)i Ft(-v)e -Fu(option)h(is)g(giv)m(en,)j(eac)m(h)e Fr(name)630 1716 +Fu(option)h(is)g(giv)m(en,)j(eac)m(h)e Fr(name)630 2179 y Fu(refers)27 b(to)h(a)g(shell)f(v)-5 b(ariable)28 b(and)f(that)h(v)-5 b(ariable)28 b(is)f(remo)m(v)m(ed.)41 b(If)27 b(the)g -Ft(-f)g Fu(option)g(is)h(giv)m(en,)630 1826 y(the)37 +Ft(-f)g Fu(option)g(is)h(giv)m(en,)630 2288 y(the)37 b Fr(name)5 b Fu(s)37 b(refer)f(to)i(shell)f(functions,)h(and)e(the)h (function)g(de\014nition)f(is)h(remo)m(v)m(ed.)61 b(If)630 -1936 y(the)34 b Ft(-n)e Fu(option)i(is)g(supplied,)f(and)g +2398 y(the)34 b Ft(-n)e Fu(option)i(is)g(supplied,)f(and)g Fr(name)38 b Fu(is)c(a)f(v)-5 b(ariable)34 b(with)g(the)f -Fr(nameref)51 b Fu(attribute,)630 2045 y Fr(name)42 b +Fr(nameref)51 b Fu(attribute,)630 2508 y Fr(name)42 b Fu(will)37 b(b)s(e)f(unset)g(rather)g(than)h(the)g(v)-5 b(ariable)37 b(it)g(references.)60 b Ft(-n)36 b Fu(has)g(no)h(e\013ect) -h(if)630 2155 y(the)h Ft(-f)g Fu(option)g(is)h(supplied.)65 +h(if)630 2617 y(the)h Ft(-f)g Fu(option)g(is)h(supplied.)65 b(If)39 b(no)g(options)h(are)f(supplied,)h(eac)m(h)h -Fr(name)j Fu(refers)39 b(to)h(a)630 2264 y(v)-5 b(ariable;)37 +Fr(name)j Fu(refers)39 b(to)h(a)630 2727 y(v)-5 b(ariable;)37 b(if)d(there)g(is)g(no)g(v)-5 b(ariable)34 b(b)m(y)g(that)h(name,)g(an) -m(y)f(function)g(with)f(that)i(name)f(is)630 2374 y(unset.)46 +m(y)f(function)g(with)f(that)i(name)f(is)630 2836 y(unset.)46 b(Readonly)33 b(v)-5 b(ariables)33 b(and)e(functions)h(ma)m(y)h(not)g -(b)s(e)e(unset.)47 b(The)31 b(return)h(status)630 2483 +(b)s(e)e(unset.)47 b(The)31 b(return)h(status)630 2946 y(is)e(zero)i(unless)d(a)i Fr(name)36 b Fu(is)30 b(readonly)-8 -b(.)150 2715 y Fs(4.2)68 b(Bash)45 b(Builtin)g(Commands)150 -2875 y Fu(This)c(section)h(describ)s(es)f(builtin)f(commands)h(whic)m +b(.)150 3173 y Fs(4.2)68 b(Bash)45 b(Builtin)g(Commands)150 +3332 y Fu(This)c(section)h(describ)s(es)f(builtin)f(commands)h(whic)m (h)g(are)h(unique)e(to)j(or)e(ha)m(v)m(e)h(b)s(een)f(extended)g(in)150 -2984 y(Bash.)g(Some)30 b(of)h(these)g(commands)f(are)g(sp)s(eci\014ed)g -(in)g(the)h Fm(posix)e Fu(standard.)150 3135 y Ft(alias)870 -3265 y(alias)46 b([-p])h([)p Fj(name)p Ft([=)p Fj(value)p -Ft(])d(...)o(])630 3395 y Fu(Without)26 b(argumen)m(ts)f(or)g(with)f +3442 y(Bash.)g(Some)30 b(of)h(these)g(commands)f(are)g(sp)s(eci\014ed)g +(in)g(the)h Fm(posix)e Fu(standard.)150 3588 y Ft(alias)870 +3715 y(alias)46 b([-p])h([)p Fj(name)p Ft([=)p Fj(value)p +Ft(])d(...)o(])630 3843 y Fu(Without)26 b(argumen)m(ts)f(or)g(with)f (the)h Ft(-p)g Fu(option,)h Ft(alias)e Fu(prin)m(ts)g(the)h(list)h(of)f -(aliases)h(on)f(the)630 3505 y(standard)g(output)g(in)g(a)h(form)f +(aliases)h(on)f(the)630 3953 y(standard)g(output)g(in)g(a)h(form)f (that)h(allo)m(ws)h(them)e(to)h(b)s(e)f(reused)g(as)g(input.)39 -b(If)25 b(argumen)m(ts)630 3614 y(are)j(supplied,)e(an)i(alias)g(is)f +b(If)25 b(argumen)m(ts)630 4062 y(are)j(supplied,)e(an)i(alias)g(is)f (de\014ned)f(for)h(eac)m(h)h Fr(name)33 b Fu(whose)27 b Fr(v)-5 b(alue)33 b Fu(is)27 b(giv)m(en.)41 b(If)26 -b(no)h Fr(v)-5 b(alue)630 3724 y Fu(is)37 b(giv)m(en,)j(the)d(name)g +b(no)h Fr(v)-5 b(alue)630 4172 y Fu(is)37 b(giv)m(en,)j(the)d(name)g (and)g(v)-5 b(alue)37 b(of)h(the)f(alias)h(is)f(prin)m(ted.)61 -b(Aliases)38 b(are)f(describ)s(ed)f(in)630 3833 y(Section)31 -b(6.6)h([Aliases],)g(page)f(90.)150 3984 y Ft(bind)870 -4114 y(bind)47 b([-m)g Fj(keymap)p Ft(])e([-lpsvPSVX])870 -4224 y(bind)i([-m)g Fj(keymap)p Ft(])e([-q)i Fj(function)p +b(Aliases)38 b(are)f(describ)s(ed)f(in)630 4281 y(Section)31 +b(6.6)h([Aliases],)g(page)f(93.)150 4427 y Ft(bind)870 +4555 y(bind)47 b([-m)g Fj(keymap)p Ft(])e([-lpsvPSVX])870 +4664 y(bind)i([-m)g Fj(keymap)p Ft(])e([-q)i Fj(function)p Ft(])f([-u)g Fj(function)p Ft(])g([-r)h Fj(keyseq)p Ft(])870 -4333 y(bind)g([-m)g Fj(keymap)p Ft(])e(-f)j Fj(filename)870 -4443 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e(-x)j Fj(keyseq:shell-command) -870 4552 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e Fj(keyseq:function-name) -870 4662 y Ft(bind)i([-m)g Fj(keymap)p Ft(])e Fj -(keyseq:readline-command)630 4792 y Fu(Displa)m(y)22 +4774 y(bind)g([-m)g Fj(keymap)p Ft(])e(-f)j Fj(filename)870 +4884 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e(-x)j Fj(keyseq:shell-command) +870 4993 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e Fj(keyseq:function-name) +870 5103 y Ft(bind)i([-m)g Fj(keymap)p Ft(])e Fj +(keyseq:readline-command)630 5230 y Fu(Displa)m(y)22 b(curren)m(t)f(Readline)h(\(see)f(Chapter)g(8)g([Command)f(Line)h -(Editing],)j(page)e(104\))g(k)m(ey)630 4902 y(and)36 +(Editing],)j(page)e(107\))g(k)m(ey)630 5340 y(and)36 b(function)g(bindings,)i(bind)d(a)i(k)m(ey)g(sequence)g(to)h(a)f -(Readline)g(function)f(or)h(macro,)630 5011 y(or)44 b(set)h(a)g -(Readline)f(v)-5 b(ariable.)83 b(Eac)m(h)45 b(non-option)g(argumen)m(t) -f(is)g(a)h(command)f(as)g(it)630 5121 y(w)m(ould)e(app)s(ear)f(in)h(a)h -(Readline)g(initialization)i(\014le)d(\(see)h(Section)g(8.3)g -([Readline)g(Init)630 5230 y(File],)c(page)d(107\),)j(but)c(eac)m(h)h -(binding)f(or)g(command)h(m)m(ust)f(b)s(e)g(passed)g(as)h(a)g(separate) -630 5340 y(argumen)m(t;)31 b(e.g.,)h(`)p Ft -("\\C-x\\C-r":re-read-init-f)o(ile)p Fu('.)p eop end -%%Page: 50 56 -TeXDict begin 50 55 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(50)630 299 y(Options,)30 -b(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 -454 y Ft(-m)e Fj(keymap)66 b Fu(Use)54 b Fr(k)m(eymap)j -Fu(as)d(the)g(k)m(eymap)g(to)h(b)s(e)e(a\013ected)i(b)m(y)f(the)g -(subsequen)m(t)1110 563 y(bindings.)46 b(Acceptable)34 +(Readline)g(function)f(or)h(macro,)p eop end +%%Page: 51 57 +TeXDict begin 51 56 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(51)630 299 y(or)44 +b(set)h(a)g(Readline)f(v)-5 b(ariable.)83 b(Eac)m(h)45 +b(non-option)g(argumen)m(t)f(is)g(a)h(command)f(as)g(it)630 +408 y(w)m(ould)e(app)s(ear)f(in)h(a)h(Readline)g(initialization)i +(\014le)d(\(see)h(Section)g(8.3)g([Readline)g(Init)630 +518 y(File],)c(page)d(110\),)j(but)c(eac)m(h)h(binding)f(or)g(command)h +(m)m(ust)f(b)s(e)g(passed)g(as)h(a)g(separate)630 628 +y(argumen)m(t;)31 b(e.g.,)h(`)p Ft("\\C-x\\C-r":re-read-init-f)o(ile)p +Fu('.)630 762 y(Options,)e(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m +(wing)h(meanings:)630 921 y Ft(-m)e Fj(keymap)66 b Fu(Use)54 +b Fr(k)m(eymap)j Fu(as)d(the)g(k)m(eymap)g(to)h(b)s(e)e(a\013ected)i(b) +m(y)f(the)g(subsequen)m(t)1110 1031 y(bindings.)46 b(Acceptable)34 b Fr(k)m(eymap)i Fu(names)c(are)h Ft(emacs)p Fu(,)f Ft(emacs-standard)p -Fu(,)1110 673 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p +Fu(,)1110 1140 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p Fu(,)f Ft(vi)p Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p -Fu(,)f(and)1110 782 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44 +Fu(,)f(and)1110 1250 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44 b Fu(is)h(equiv)-5 b(alen)m(t)46 b(to)g Ft(vi-command)c -Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 892 y(synon)m(ym\);)30 +Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 1359 y(synon)m(ym\);)30 b Ft(emacs)f Fu(is)i(equiv)-5 b(alen)m(t)32 b(to)f Ft(emacs-standard)p -Fu(.)630 1047 y Ft(-l)384 b Fu(List)31 b(the)f(names)g(of)h(all)g -(Readline)g(functions.)630 1201 y Ft(-p)384 b Fu(Displa)m(y)34 +Fu(.)630 1518 y Ft(-l)384 b Fu(List)31 b(the)f(names)g(of)h(all)g +(Readline)g(functions.)630 1678 y Ft(-p)384 b Fu(Displa)m(y)34 b(Readline)f(function)g(names)g(and)f(bindings)f(in)i(suc)m(h)f(a)i(w)m -(a)m(y)f(that)1110 1311 y(they)e(can)f(b)s(e)g(used)g(as)g(input)g(or)g -(in)g(a)h(Readline)g(initialization)i(\014le.)630 1466 +(a)m(y)f(that)1110 1787 y(they)e(can)f(b)s(e)g(used)g(as)g(input)g(or)g +(in)g(a)h(Readline)g(initialization)i(\014le.)630 1946 y Ft(-P)384 b Fu(List)31 b(curren)m(t)f(Readline)h(function)f(names)g -(and)g(bindings.)630 1620 y Ft(-v)384 b Fu(Displa)m(y)25 +(and)g(bindings.)630 2105 y Ft(-v)384 b Fu(Displa)m(y)25 b(Readline)f(v)-5 b(ariable)25 b(names)f(and)f(v)-5 b(alues)24 -b(in)g(suc)m(h)f(a)i(w)m(a)m(y)f(that)h(they)1110 1730 +b(in)g(suc)m(h)f(a)i(w)m(a)m(y)f(that)h(they)1110 2215 y(can)31 b(b)s(e)e(used)h(as)h(input)e(or)h(in)g(a)h(Readline)g -(initialization)j(\014le.)630 1885 y Ft(-V)384 b Fu(List)31 +(initialization)j(\014le.)630 2374 y Ft(-V)384 b Fu(List)31 b(curren)m(t)f(Readline)h(v)-5 b(ariable)31 b(names)f(and)g(v)-5 -b(alues.)630 2039 y Ft(-s)384 b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g +b(alues.)630 2533 y Ft(-s)384 b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g (sequences)f(b)s(ound)f(to)i(macros)g(and)f(the)g(strings)1110 -2149 y(they)d(output)f(in)h(suc)m(h)f(a)h(w)m(a)m(y)h(that)f(they)g -(can)g(b)s(e)f(used)g(as)h(input)e(or)i(in)g(a)1110 2259 -y(Readline)d(initialization)i(\014le.)630 2413 y Ft(-S)384 +2643 y(they)d(output)f(in)h(suc)m(h)f(a)h(w)m(a)m(y)h(that)f(they)g +(can)g(b)s(e)f(used)g(as)h(input)e(or)i(in)g(a)1110 2752 +y(Readline)d(initialization)i(\014le.)630 2911 y Ft(-S)384 b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g(sequences)f(b)s(ound)f(to)i -(macros)g(and)f(the)g(strings)1110 2523 y(they)31 b(output.)630 -2678 y Ft(-f)f Fj(filename)1110 2787 y Fu(Read)h(k)m(ey)g(bindings)e -(from)h Fr(\014lename)p Fu(.)630 2942 y Ft(-q)g Fj(function)1110 -3051 y Fu(Query)g(ab)s(out)g(whic)m(h)g(k)m(eys)h(in)m(v)m(ok)m(e)h -(the)f(named)f Fr(function)p Fu(.)630 3206 y Ft(-u)g -Fj(function)1110 3316 y Fu(Un)m(bind)f(all)i(k)m(eys)g(b)s(ound)e(to)i -(the)f(named)g Fr(function)p Fu(.)630 3471 y Ft(-r)g +(macros)g(and)f(the)g(strings)1110 3021 y(they)31 b(output.)630 +3180 y Ft(-f)f Fj(filename)1110 3290 y Fu(Read)h(k)m(ey)g(bindings)e +(from)h Fr(\014lename)p Fu(.)630 3449 y Ft(-q)g Fj(function)1110 +3558 y Fu(Query)g(ab)s(out)g(whic)m(h)g(k)m(eys)h(in)m(v)m(ok)m(e)h +(the)f(named)f Fr(function)p Fu(.)630 3717 y Ft(-u)g +Fj(function)1110 3827 y Fu(Un)m(bind)f(all)i(k)m(eys)g(b)s(ound)e(to)i +(the)f(named)g Fr(function)p Fu(.)630 3986 y Ft(-r)g Fj(keyseq)66 b Fu(Remo)m(v)m(e)32 b(an)m(y)f(curren)m(t)f(binding)f -(for)h Fr(k)m(eyseq)p Fu(.)630 3625 y Ft(-x)g Fj(keyseq:shell-command) -1110 3735 y Fu(Cause)35 b Fr(shell-command)k Fu(to)d(b)s(e)f(executed)h +(for)h Fr(k)m(eyseq)p Fu(.)630 4145 y Ft(-x)g Fj(keyseq:shell-command) +1110 4255 y Fu(Cause)35 b Fr(shell-command)k Fu(to)d(b)s(e)f(executed)h (whenev)m(er)f Fr(k)m(eyseq)j Fu(is)d(en)m(tered.)1110 -3844 y(When)46 b Fr(shell-command)k Fu(is)c(executed,)51 -b(the)46 b(shell)g(sets)g(the)g Ft(READLINE_)1110 3954 +4364 y(When)46 b Fr(shell-command)k Fu(is)c(executed,)51 +b(the)46 b(shell)g(sets)g(the)g Ft(READLINE_)1110 4474 y(LINE)37 b Fu(v)-5 b(ariable)38 b(to)g(the)g(con)m(ten)m(ts)i(of)e -(the)g(Readline)g(line)g(bu\013er)f(and)g(the)1110 4064 +(the)g(Readline)g(line)g(bu\013er)f(and)g(the)1110 4583 y Ft(READLINE_POINT)e Fu(v)-5 b(ariable)39 b(to)h(the)e(curren)m(t)h -(lo)s(cation)h(of)f(the)g(insertion)1110 4173 y(p)s(oin)m(t.)59 +(lo)s(cation)h(of)f(the)g(insertion)1110 4693 y(p)s(oin)m(t.)59 b(If)37 b(the)f(executed)i(command)e(c)m(hanges)i(the)f(v)-5 -b(alue)37 b(of)f Ft(READLINE_)1110 4283 y(LINE)29 b Fu(or)h +b(alue)37 b(of)f Ft(READLINE_)1110 4803 y(LINE)29 b Fu(or)h Ft(READLINE_POINT)p Fu(,)c(those)31 b(new)e(v)-5 b(alues)31 -b(will)f(b)s(e)f(re\015ected)i(in)f(the)1110 4392 y(editing)h(state.) -630 4547 y Ft(-X)384 b Fu(List)27 b(all)i(k)m(ey)f(sequences)f(b)s +b(will)f(b)s(e)f(re\015ected)i(in)f(the)1110 4912 y(editing)h(state.) +630 5071 y Ft(-X)384 b Fu(List)27 b(all)i(k)m(ey)f(sequences)f(b)s (ound)e(to)j(shell)g(commands)e(and)h(the)g(asso)s(ciated)1110 -4657 y(commands)j(in)g(a)h(format)g(that)f(can)h(b)s(e)f(reused)f(as)i -(input.)630 4811 y(The)26 b(return)f(status)i(is)f(zero)i(unless)d(an)i +5181 y(commands)j(in)g(a)h(format)g(that)f(can)h(b)s(e)f(reused)f(as)i +(input.)630 5340 y(The)26 b(return)f(status)i(is)f(zero)i(unless)d(an)i (in)m(v)-5 b(alid)27 b(option)g(is)f(supplied)f(or)i(an)f(error)g(o)s -(ccurs.)150 4966 y Ft(builtin)870 5098 y(builtin)46 b([)p -Fj(shell-builtin)e Ft([)p Fj(args)p Ft(]])630 5230 y -Fu(Run)35 b(a)i(shell)f(builtin,)i(passing)e(it)h Fr(args)p -Fu(,)h(and)e(return)f(its)i(exit)g(status.)59 b(This)35 -b(is)i(useful)630 5340 y(when)29 b(de\014ning)h(a)g(shell)h(function)f -(with)g(the)g(same)h(name)f(as)h(a)g(shell)f(builtin,)g(retaining)p -eop end -%%Page: 51 57 -TeXDict begin 51 56 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(51)630 299 y(the)34 -b(functionalit)m(y)h(of)f(the)f(builtin)g(within)g(the)h(function.)50 -b(The)33 b(return)g(status)h(is)f(non-)630 408 y(zero)e(if)g -Fr(shell-builtin)f Fu(is)g(not)h(a)g(shell)f(builtin)g(command.)150 -579 y Ft(caller)870 719 y(caller)46 b([)p Fj(expr)p Ft(])630 -859 y Fu(Returns)34 b(the)g(con)m(text)j(of)e(an)m(y)g(activ)m(e)i -(subroutine)c(call)j(\(a)f(shell)g(function)f(or)h(a)g(script)630 -969 y(executed)c(with)f(the)h Ft(.)f Fu(or)g Ft(source)f -Fu(builtins\).)630 1109 y(Without)45 b Fr(expr)p Fu(,)j -Ft(caller)43 b Fu(displa)m(ys)i(the)f(line)h(n)m(um)m(b)s(er)f(and)g -(source)g(\014lename)h(of)g(the)630 1218 y(curren)m(t)35 -b(subroutine)g(call.)58 b(If)35 b(a)h(non-negativ)m(e)i(in)m(teger)f -(is)f(supplied)e(as)i Fr(expr)p Fu(,)h Ft(caller)630 -1328 y Fu(displa)m(ys)k(the)f(line)h(n)m(um)m(b)s(er,)h(subroutine)d +(ccurs.)p eop end +%%Page: 52 58 +TeXDict begin 52 57 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(52)150 299 y Ft(builtin)870 +437 y(builtin)46 b([)p Fj(shell-builtin)e Ft([)p Fj(args)p +Ft(]])630 576 y Fu(Run)35 b(a)i(shell)f(builtin,)i(passing)e(it)h +Fr(args)p Fu(,)h(and)e(return)f(its)i(exit)g(status.)59 +b(This)35 b(is)i(useful)630 685 y(when)29 b(de\014ning)h(a)g(shell)h +(function)f(with)g(the)g(same)h(name)f(as)h(a)g(shell)f(builtin,)g +(retaining)630 795 y(the)k(functionalit)m(y)h(of)f(the)f(builtin)g +(within)g(the)h(function.)50 b(The)33 b(return)g(status)h(is)f(non-)630 +905 y(zero)e(if)g Fr(shell-builtin)f Fu(is)g(not)h(a)g(shell)f(builtin) +g(command.)150 1072 y Ft(caller)870 1210 y(caller)46 +b([)p Fj(expr)p Ft(])630 1349 y Fu(Returns)34 b(the)g(con)m(text)j(of)e +(an)m(y)g(activ)m(e)i(subroutine)c(call)j(\(a)f(shell)g(function)f(or)h +(a)g(script)630 1458 y(executed)c(with)f(the)h Ft(.)f +Fu(or)g Ft(source)f Fu(builtins\).)630 1597 y(Without)45 +b Fr(expr)p Fu(,)j Ft(caller)43 b Fu(displa)m(ys)i(the)f(line)h(n)m(um) +m(b)s(er)f(and)g(source)g(\014lename)h(of)g(the)630 1706 +y(curren)m(t)35 b(subroutine)g(call.)58 b(If)35 b(a)h(non-negativ)m(e)i +(in)m(teger)f(is)f(supplied)e(as)i Fr(expr)p Fu(,)h Ft(caller)630 +1816 y Fu(displa)m(ys)k(the)f(line)h(n)m(um)m(b)s(er,)h(subroutine)d (name,)44 b(and)c(source)g(\014le)h(corresp)s(onding)e(to)630 -1437 y(that)c(p)s(osition)g(in)f(the)h(curren)m(t)f(execution)i(call)g +1925 y(that)c(p)s(osition)g(in)f(the)h(curren)m(t)f(execution)i(call)g (stac)m(k.)54 b(This)34 b(extra)h(information)g(ma)m(y)630 -1547 y(b)s(e)30 b(used,)g(for)g(example,)h(to)g(prin)m(t)f(a)h(stac)m +2035 y(b)s(e)30 b(used,)g(for)g(example,)h(to)g(prin)m(t)f(a)h(stac)m (k)h(trace.)42 b(The)29 b(curren)m(t)i(frame)f(is)g(frame)h(0.)630 -1687 y(The)d(return)g(v)-5 b(alue)29 b(is)g(0)g(unless)f(the)h(shell)g +2173 y(The)d(return)g(v)-5 b(alue)29 b(is)g(0)g(unless)f(the)h(shell)g (is)g(not)g(executing)h(a)f(subroutine)e(call)j(or)f -Fr(expr)630 1797 y Fu(do)s(es)h(not)h(corresp)s(ond)e(to)i(a)g(v)-5 +Fr(expr)630 2283 y Fu(do)s(es)h(not)h(corresp)s(ond)e(to)i(a)g(v)-5 b(alid)30 b(p)s(osition)h(in)f(the)g(call)i(stac)m(k.)150 -1967 y Ft(command)870 2107 y(command)46 b([-pVv])g Fj(command)g -Ft([)p Fj(arguments)f Ft(...)o(])630 2247 y Fu(Runs)32 +2450 y Ft(command)870 2589 y(command)46 b([-pVv])g Fj(command)g +Ft([)p Fj(arguments)f Ft(...)o(])630 2727 y Fu(Runs)32 b Fr(command)k Fu(with)d Fr(argumen)m(ts)k Fu(ignoring)c(an)m(y)g -(shell)h(function)e(named)h Fr(command)p Fu(.)630 2357 +(shell)h(function)e(named)h Fr(command)p Fu(.)630 2837 y(Only)39 b(shell)i(builtin)e(commands)h(or)g(commands)f(found)g(b)m(y) -h(searc)m(hing)h(the)f Ft(PATH)f Fu(are)630 2466 y(executed.)59 +h(searc)m(hing)h(the)f Ft(PATH)f Fu(are)630 2946 y(executed.)59 b(If)36 b(there)h(is)f(a)h(shell)f(function)g(named)g Ft(ls)p Fu(,)h(running)e(`)p Ft(command)29 b(ls)p Fu(')35 -b(within)630 2576 y(the)c(function)f(will)h(execute)g(the)g(external)g +b(within)630 3056 y(the)c(function)f(will)h(execute)g(the)g(external)g (command)g Ft(ls)f Fu(instead)g(of)h(calling)h(the)f(func-)630 -2685 y(tion)36 b(recursiv)m(ely)-8 b(.)56 b(The)34 b +3165 y(tion)36 b(recursiv)m(ely)-8 b(.)56 b(The)34 b Ft(-p)h Fu(option)g(means)g(to)h(use)f(a)g(default)h(v)-5 -b(alue)35 b(for)g Ft(PATH)f Fu(that)i(is)630 2795 y(guaran)m(teed)f(to) +b(alue)35 b(for)g Ft(PATH)f Fu(that)i(is)630 3275 y(guaran)m(teed)f(to) f(\014nd)e(all)j(of)f(the)g(standard)f(utilities.)52 -b(The)33 b(return)g(status)h(in)f(this)h(case)630 2905 +b(The)33 b(return)g(status)h(in)f(this)h(case)630 3385 y(is)29 b(127)g(if)g Fr(command)j Fu(cannot)d(b)s(e)e(found)h(or)g(an)g (error)h(o)s(ccurred,)f(and)g(the)h(exit)g(status)g(of)630 -3014 y Fr(command)34 b Fu(otherwise.)630 3154 y(If)e(either)h(the)f +3494 y Fr(command)34 b Fu(otherwise.)630 3633 y(If)e(either)h(the)f Ft(-V)g Fu(or)g Ft(-v)g Fu(option)h(is)f(supplied,)g(a)h(description)f -(of)h Fr(command)j Fu(is)c(prin)m(ted.)630 3264 y(The)f +(of)h Fr(command)j Fu(is)c(prin)m(ted.)630 3742 y(The)f Ft(-v)h Fu(option)g(causes)g(a)g(single)h(w)m(ord)f(indicating)g(the)g -(command)g(or)g(\014le)g(name)g(used)630 3373 y(to)40 +(command)g(or)g(\014le)g(name)g(used)630 3852 y(to)40 b(in)m(v)m(ok)m(e)h Fr(command)h Fu(to)e(b)s(e)e(displa)m(y)m(ed;)44 b(the)39 b Ft(-V)f Fu(option)i(pro)s(duces)d(a)j(more)f(v)m(erb)s(ose) -630 3483 y(description.)61 b(In)36 b(this)h(case,)j(the)e(return)e +630 3961 y(description.)61 b(In)36 b(this)h(case,)j(the)e(return)e (status)h(is)g(zero)h(if)f Fr(command)k Fu(is)c(found,)h(and)630 -3593 y(non-zero)31 b(if)f(not.)150 3763 y Ft(declare)870 -3903 y(declare)46 b([-aAfFgilnrtux])d([-p])k([)p Fj(name)p -Ft([=)p Fj(value)p Ft(])d(...)o(])630 4043 y Fu(Declare)29 +4071 y(non-zero)31 b(if)f(not.)150 4238 y Ft(declare)870 +4377 y(declare)46 b([-aAfFgilnrtux])d([-p])k([)p Fj(name)p +Ft([=)p Fj(value)p Ft(])d(...)o(])630 4515 y Fu(Declare)29 b(v)-5 b(ariables)28 b(and)e(giv)m(e)j(them)e(attributes.)40 b(If)27 b(no)g Fr(name)5 b Fu(s)27 b(are)h(giv)m(en,)h(then)e(displa)m -(y)630 4153 y(the)k(v)-5 b(alues)30 b(of)h(v)-5 b(ariables)31 -b(instead.)630 4293 y(The)k Ft(-p)f Fu(option)i(will)g(displa)m(y)f +(y)630 4625 y(the)k(v)-5 b(alues)30 b(of)h(v)-5 b(ariables)31 +b(instead.)630 4763 y(The)k Ft(-p)f Fu(option)i(will)g(displa)m(y)f (the)h(attributes)g(and)e(v)-5 b(alues)36 b(of)f(eac)m(h)i -Fr(name)p Fu(.)55 b(When)36 b Ft(-p)630 4402 y Fu(is)i(used)g(with)g +Fr(name)p Fu(.)55 b(When)36 b Ft(-p)630 4873 y Fu(is)i(used)g(with)g Fr(name)43 b Fu(argumen)m(ts,)e(additional)e(options,)i(other)d(than)g -Ft(-f)g Fu(and)g Ft(-F)p Fu(,)i(are)630 4512 y(ignored.)630 -4652 y(When)g Ft(-p)g Fu(is)g(supplied)f(without)i Fr(name)k +Ft(-f)g Fu(and)g Ft(-F)p Fu(,)i(are)630 4982 y(ignored.)630 +5121 y(When)g Ft(-p)g Fu(is)g(supplied)f(without)i Fr(name)k Fu(argumen)m(ts,)f Ft(declare)38 b Fu(will)j(displa)m(y)f(the)h(at-)630 -4762 y(tributes)31 b(and)f(v)-5 b(alues)31 b(of)g(all)h(v)-5 +5230 y(tributes)31 b(and)f(v)-5 b(alues)31 b(of)g(all)h(v)-5 b(ariables)31 b(ha)m(ving)h(the)f(attributes)g(sp)s(eci\014ed)f(b)m(y)h -(the)g(addi-)630 4871 y(tional)k(options.)52 b(If)34 +(the)g(addi-)630 5340 y(tional)k(options.)52 b(If)34 b(no)g(other)g(options)g(are)g(supplied)f(with)h Ft(-p)p -Fu(,)g Ft(declare)e Fu(will)j(displa)m(y)630 4981 y(the)e(attributes)h -(and)e(v)-5 b(alues)33 b(of)g(all)h(shell)f(v)-5 b(ariables.)50 -b(The)32 b Ft(-f)g Fu(option)i(will)f(restrict)h(the)630 -5090 y(displa)m(y)d(to)g(shell)f(functions.)630 5230 -y(The)41 b Ft(-F)f Fu(option)i(inhibits)e(the)i(displa)m(y)f(of)g -(function)g(de\014nitions;)47 b(only)41 b(the)g(function)630 -5340 y(name)30 b(and)f(attributes)i(are)f(prin)m(ted.)40 -b(If)30 b(the)g Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled)g(using) -p eop end -%%Page: 52 58 -TeXDict begin 52 57 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(52)630 299 y Ft(shopt)24 -b Fu(\(see)i(Section)g(4.3.2)i([The)d(Shopt)f(Builtin],)k(page)e(64\),) -i(the)d(source)h(\014le)f(name)h(and)630 408 y(line)31 -b(n)m(um)m(b)s(er)e(where)h(eac)m(h)h Fr(name)36 b Fu(is)30 -b(de\014ned)f(are)i(displa)m(y)m(ed)g(as)g(w)m(ell.)41 -b Ft(-F)30 b Fu(implies)h Ft(-f)p Fu(.)630 543 y(The)36 +Fu(,)g Ft(declare)e Fu(will)j(displa)m(y)p eop end +%%Page: 53 59 +TeXDict begin 53 58 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y(the)33 +b(attributes)h(and)e(v)-5 b(alues)33 b(of)g(all)h(shell)f(v)-5 +b(ariables.)50 b(The)32 b Ft(-f)g Fu(option)i(will)f(restrict)h(the)630 +408 y(displa)m(y)d(to)g(shell)f(functions.)630 544 y(The)41 +b Ft(-F)f Fu(option)i(inhibits)e(the)i(displa)m(y)f(of)g(function)g +(de\014nitions;)47 b(only)41 b(the)g(function)630 654 +y(name)30 b(and)f(attributes)i(are)f(prin)m(ted.)40 b(If)30 +b(the)g Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled)g(using)630 +764 y Ft(shopt)24 b Fu(\(see)i(Section)g(4.3.2)i([The)d(Shopt)f +(Builtin],)k(page)e(65\),)i(the)d(source)h(\014le)f(name)h(and)630 +873 y(line)31 b(n)m(um)m(b)s(er)e(where)h(eac)m(h)h Fr(name)36 +b Fu(is)30 b(de\014ned)f(are)i(displa)m(y)m(ed)g(as)g(w)m(ell.)41 +b Ft(-F)30 b Fu(implies)h Ft(-f)p Fu(.)630 1009 y(The)36 b Ft(-g)g Fu(option)h(forces)g(v)-5 b(ariables)37 b(to)g(b)s(e)f (created)i(or)e(mo)s(di\014ed)g(at)h(the)g(global)h(scop)s(e,)630 -653 y(ev)m(en)g(when)e Ft(declare)f Fu(is)j(executed)g(in)f(a)g(shell)h -(function.)61 b(It)37 b(is)g(ignored)h(in)f(all)h(other)630 -763 y(cases.)630 897 y(The)27 b(follo)m(wing)h(options)g(can)f(b)s(e)g -(used)f(to)i(restrict)g(output)e(to)i(v)-5 b(ariables)28 -b(with)f(the)g(sp)s(ec-)630 1007 y(i\014ed)j(attributes)h(or)f(to)h -(giv)m(e)h(v)-5 b(ariables)31 b(attributes:)630 1167 +1119 y(ev)m(en)g(when)e Ft(declare)f Fu(is)j(executed)g(in)f(a)g(shell) +h(function.)61 b(It)37 b(is)g(ignored)h(in)f(all)h(other)630 +1228 y(cases.)630 1364 y(The)27 b(follo)m(wing)h(options)g(can)f(b)s(e) +g(used)f(to)i(restrict)g(output)e(to)i(v)-5 b(ariables)28 +b(with)f(the)g(sp)s(ec-)630 1474 y(i\014ed)j(attributes)h(or)f(to)h +(giv)m(e)h(v)-5 b(ariables)31 b(attributes:)630 1636 y Ft(-a)384 b Fu(Eac)m(h)36 b Fr(name)k Fu(is)34 b(an)h(indexed)g(arra) m(y)g(v)-5 b(ariable)36 b(\(see)f(Section)h(6.7)g([Arra)m(ys],)1110 -1277 y(page)31 b(91\).)630 1437 y Ft(-A)384 b Fu(Eac)m(h)24 +1745 y(page)31 b(94\).)630 1908 y Ft(-A)384 b Fu(Eac)m(h)24 b Fr(name)k Fu(is)23 b(an)g(asso)s(ciativ)m(e)j(arra)m(y)e(v)-5 b(ariable)24 b(\(see)g(Section)g(6.7)g([Arra)m(ys],)1110 -1547 y(page)31 b(91\).)630 1707 y Ft(-f)384 b Fu(Use)31 -b(function)f(names)g(only)-8 b(.)630 1867 y Ft(-i)384 +2017 y(page)31 b(94\).)630 2179 y Ft(-f)384 b Fu(Use)31 +b(function)f(names)g(only)-8 b(.)630 2342 y Ft(-i)384 b Fu(The)36 b(v)-5 b(ariable)37 b(is)f(to)h(b)s(e)f(treated)h(as)g(an)f (in)m(teger;)41 b(arithmetic)c(ev)-5 b(aluation)1110 -1976 y(\(see)29 b(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)e(89\))h -(is)f(p)s(erformed)e(when)h(the)1110 2086 y(v)-5 b(ariable)31 -b(is)g(assigned)f(a)h(v)-5 b(alue.)630 2246 y Ft(-l)384 +2451 y(\(see)29 b(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)e(92\))h +(is)f(p)s(erformed)e(when)h(the)1110 2561 y(v)-5 b(ariable)31 +b(is)g(assigned)f(a)h(v)-5 b(alue.)630 2723 y Ft(-l)384 b Fu(When)26 b(the)g(v)-5 b(ariable)27 b(is)f(assigned)g(a)g(v)-5 b(alue,)28 b(all)f(upp)s(er-case)e(c)m(haracters)j(are)1110 -2356 y(con)m(v)m(erted)k(to)f(lo)m(w)m(er-case.)43 b(The)30 -b(upp)s(er-case)g(attribute)h(is)g(disabled.)630 2516 +2833 y(con)m(v)m(erted)k(to)f(lo)m(w)m(er-case.)43 b(The)30 +b(upp)s(er-case)g(attribute)h(is)g(disabled.)630 2995 y Ft(-n)384 b Fu(Giv)m(e)28 b(eac)m(h)g Fr(name)k Fu(the)27 b Fr(nameref)44 b Fu(attribute,)28 b(making)f(it)h(a)f(name)f -(reference)1110 2626 y(to)32 b(another)g(v)-5 b(ariable.)46 +(reference)1110 3104 y(to)32 b(another)g(v)-5 b(ariable.)46 b(That)31 b(other)h(v)-5 b(ariable)33 b(is)f(de\014ned)e(b)m(y)i(the)g -(v)-5 b(alue)32 b(of)1110 2735 y Fr(name)p Fu(.)54 b(All)35 +(v)-5 b(alue)32 b(of)1110 3214 y Fr(name)p Fu(.)54 b(All)35 b(references,)h(assignmen)m(ts,)h(and)d(attribute)h(mo)s(di\014cations) -g(to)1110 2845 y Fr(name)p Fu(,)27 b(except)f(for)f(those)h(using)f(or) +g(to)1110 3324 y Fr(name)p Fu(,)27 b(except)f(for)f(those)h(using)f(or) g(c)m(hanging)h(the)f Ft(-n)g Fu(attribute)h(itself,)i(are)1110 -2954 y(p)s(erformed)22 b(on)h(the)g(v)-5 b(ariable)25 +3433 y(p)s(erformed)22 b(on)h(the)g(v)-5 b(ariable)25 b(referenced)e(b)m(y)g Fr(name)5 b Fu('s)23 b(v)-5 b(alue.)39 -b(The)23 b(nameref)1110 3064 y(attribute)31 b(cannot)g(b)s(e)f(applied) -g(to)h(arra)m(y)g(v)-5 b(ariables.)630 3224 y Ft(-r)384 +b(The)23 b(nameref)1110 3543 y(attribute)31 b(cannot)g(b)s(e)f(applied) +g(to)h(arra)m(y)g(v)-5 b(ariables.)630 3705 y Ft(-r)384 b Fu(Mak)m(e)25 b Fr(name)5 b Fu(s)23 b(readonly)-8 b(.)39 b(These)24 b(names)f(cannot)h(then)f(b)s(e)g(assigned)h(v)-5 -b(alues)1110 3334 y(b)m(y)30 b(subsequen)m(t)g(assignmen)m(t)h -(statemen)m(ts)h(or)f(unset.)630 3494 y Ft(-t)384 b Fu(Giv)m(e)33 +b(alues)1110 3814 y(b)m(y)30 b(subsequen)m(t)g(assignmen)m(t)h +(statemen)m(ts)h(or)f(unset.)630 3977 y Ft(-t)384 b Fu(Giv)m(e)33 b(eac)m(h)h Fr(name)j Fu(the)32 b Ft(trace)f Fu(attribute.)46 -b(T)-8 b(raced)32 b(functions)g(inherit)g(the)1110 3603 +b(T)-8 b(raced)32 b(functions)g(inherit)g(the)1110 4086 y Ft(DEBUG)26 b Fu(and)h Ft(RETURN)f Fu(traps)h(from)g(the)h(calling)h -(shell.)40 b(The)27 b(trace)i(attribute)1110 3713 y(has)h(no)g(sp)s -(ecial)h(meaning)g(for)f(v)-5 b(ariables.)630 3873 y +(shell.)40 b(The)27 b(trace)i(attribute)1110 4196 y(has)h(no)g(sp)s +(ecial)h(meaning)g(for)f(v)-5 b(ariables.)630 4358 y Ft(-u)384 b Fu(When)28 b(the)h(v)-5 b(ariable)29 b(is)f(assigned)h(a)f (v)-5 b(alue,)30 b(all)f(lo)m(w)m(er-case)i(c)m(haracters)f(are)1110 -3983 y(con)m(v)m(erted)i(to)f(upp)s(er-case.)40 b(The)30 -b(lo)m(w)m(er-case)j(attribute)e(is)g(disabled.)630 4143 +4468 y(con)m(v)m(erted)i(to)f(upp)s(er-case.)40 b(The)30 +b(lo)m(w)m(er-case)j(attribute)e(is)g(disabled.)630 4630 y Ft(-x)384 b Fu(Mark)30 b(eac)m(h)h Fr(name)k Fu(for)29 b(exp)s(ort)h(to)g(subsequen)m(t)f(commands)h(via)g(the)g(en)m(vi-)1110 -4253 y(ronmen)m(t.)630 4413 y(Using)e(`)p Ft(+)p Fu(')h(instead)f(of)g +4739 y(ronmen)m(t.)630 4902 y(Using)e(`)p Ft(+)p Fu(')h(instead)f(of)g (`)p Ft(-)p Fu(')g(turns)f(o\013)i(the)f(attribute)h(instead,)g(with)f -(the)g(exceptions)h(that)630 4522 y(`)p Ft(+a)p Fu(')h(ma)m(y)h(not)f -(b)s(e)f(used)g(to)i(destro)m(y)g(an)f(arra)m(y)g(v)-5 -b(ariable)31 b(and)f(`)p Ft(+r)p Fu(')g(will)g(not)g(remo)m(v)m(e)i -(the)630 4632 y(readonly)e(attribute.)41 b(When)30 b(used)f(in)g(a)h -(function,)g Ft(declare)e Fu(mak)m(es)j(eac)m(h)f Fr(name)35 -b Fu(lo)s(cal,)630 4741 y(as)f(with)f(the)g Ft(local)f -Fu(command,)i(unless)f(the)g Ft(-g)g Fu(option)h(is)f(used.)49 -b(If)33 b(a)h(v)-5 b(ariable)34 b(name)630 4851 y(is)c(follo)m(w)m(ed)i -(b)m(y)f(=)p Fr(v)-5 b(alue)p Fu(,)30 b(the)h(v)-5 b(alue)31 -b(of)f(the)h(v)-5 b(ariable)31 b(is)g(set)g(to)g Fr(v)-5 -b(alue)p Fu(.)630 4986 y(When)41 b(using)g Ft(-a)g Fu(or)h -Ft(-A)e Fu(and)h(the)h(comp)s(ound)e(assignmen)m(t)i(syn)m(tax)g(to)g -(create)h(arra)m(y)630 5096 y(v)-5 b(ariables,)28 b(additional)f -(attributes)g(do)f(not)h(tak)m(e)h(e\013ect)g(un)m(til)e(subsequen)m(t) -g(assignmen)m(ts.)630 5230 y(The)35 b(return)f(status)i(is)g(zero)g -(unless)f(an)g(in)m(v)-5 b(alid)36 b(option)g(is)g(encoun)m(tered,)h -(an)f(attempt)630 5340 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g -(using)f(`)p Ft(-f)f(foo=bar)p Fu(',)h(an)h(attempt)g(is)g(made)g(to)h -(assign)p eop end -%%Page: 53 59 -TeXDict begin 53 58 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y(a)42 -b(v)-5 b(alue)43 b(to)g(a)f(readonly)g(v)-5 b(ariable,)47 -b(an)42 b(attempt)h(is)f(made)g(to)h(assign)f(a)h(v)-5 -b(alue)42 b(to)h(an)630 408 y(arra)m(y)30 b(v)-5 b(ariable)30 +(the)g(exceptions)h(that)630 5011 y(`)p Ft(+a)p Fu(')23 +b(and)f(`)p Ft(+A)p Fu(')h(ma)m(y)h(not)f(b)s(e)f(used)g(to)i(destro)m +(y)g(arra)m(y)f(v)-5 b(ariables)24 b(and)e(`)p Ft(+r)p +Fu(')h(will)g(not)g(remo)m(v)m(e)630 5121 y(the)36 b(readonly)h +(attribute.)59 b(When)36 b(used)f(in)h(a)h(function,)g +Ft(declare)d Fu(mak)m(es)j(eac)m(h)h Fr(name)630 5230 +y Fu(lo)s(cal,)e(as)d(with)h(the)f Ft(local)f Fu(command,)j(unless)d +(the)i Ft(-g)f Fu(option)h(is)f(used.)49 b(If)33 b(a)h(v)-5 +b(ariable)630 5340 y(name)30 b(is)h(follo)m(w)m(ed)h(b)m(y)e(=)p +Fr(v)-5 b(alue)p Fu(,)31 b(the)f(v)-5 b(alue)31 b(of)g(the)f(v)-5 +b(ariable)32 b(is)e(set)h(to)g Fr(v)-5 b(alue)p Fu(.)p +eop end +%%Page: 54 60 +TeXDict begin 54 59 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(54)630 299 y(When)41 +b(using)g Ft(-a)g Fu(or)h Ft(-A)e Fu(and)h(the)h(comp)s(ound)e +(assignmen)m(t)i(syn)m(tax)g(to)g(create)h(arra)m(y)630 +408 y(v)-5 b(ariables,)28 b(additional)f(attributes)g(do)f(not)h(tak)m +(e)h(e\013ect)g(un)m(til)e(subsequen)m(t)g(assignmen)m(ts.)630 +537 y(The)35 b(return)f(status)i(is)g(zero)g(unless)f(an)g(in)m(v)-5 +b(alid)36 b(option)g(is)g(encoun)m(tered,)h(an)f(attempt)630 +647 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g(using)f(`)p +Ft(-f)f(foo=bar)p Fu(',)h(an)h(attempt)g(is)g(made)g(to)h(assign)630 +757 y(a)42 b(v)-5 b(alue)43 b(to)g(a)f(readonly)g(v)-5 +b(ariable,)47 b(an)42 b(attempt)h(is)f(made)g(to)h(assign)f(a)h(v)-5 +b(alue)42 b(to)h(an)630 866 y(arra)m(y)30 b(v)-5 b(ariable)30 b(without)g(using)e(the)i(comp)s(ound)e(assignmen)m(t)i(syn)m(tax)g -(\(see)h(Section)f(6.7)630 518 y([Arra)m(ys],)47 b(page)c(91\),)48 +(\(see)h(Section)f(6.7)630 976 y([Arra)m(ys],)47 b(page)c(94\),)48 b(one)43 b(of)g(the)g Fr(names)k Fu(is)c(not)g(a)g(v)-5 b(alid)43 b(shell)g(v)-5 b(ariable)44 b(name,)i(an)630 -628 y(attempt)28 b(is)f(made)h(to)f(turn)f(o\013)i(readonly)f(status)g +1085 y(attempt)28 b(is)f(made)h(to)f(turn)f(o\013)i(readonly)f(status)g (for)g(a)h(readonly)f(v)-5 b(ariable,)29 b(an)e(attempt)630 -737 y(is)h(made)h(to)g(turn)e(o\013)i(arra)m(y)f(status)h(for)f(an)g +1195 y(is)h(made)h(to)g(turn)e(o\013)i(arra)m(y)f(status)h(for)f(an)g (arra)m(y)h(v)-5 b(ariable,)30 b(or)e(an)g(attempt)i(is)e(made)g(to)630 -847 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g -Ft(-f)p Fu(.)150 1005 y Ft(echo)870 1139 y(echo)47 b([-neE])f([)p -Fj(arg)g Ft(...])630 1273 y Fu(Output)31 b(the)i Fr(arg)8 +1305 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g +Ft(-f)p Fu(.)150 1453 y Ft(echo)870 1582 y(echo)47 b([-neE])f([)p +Fj(arg)g Ft(...])630 1711 y Fu(Output)31 b(the)i Fr(arg)8 b Fu(s,)33 b(separated)g(b)m(y)g(spaces,)g(terminated)g(with)f(a)h -(newline.)47 b(The)32 b(return)630 1383 y(status)f(is)f(0)h(unless)f(a) +(newline.)47 b(The)32 b(return)630 1820 y(status)f(is)f(0)h(unless)f(a) h(write)g(error)f(o)s(ccurs.)41 b(If)30 b Ft(-n)g Fu(is)h(sp)s -(eci\014ed,)f(the)h(trailing)g(newline)g(is)630 1492 +(eci\014ed,)f(the)h(trailing)g(newline)g(is)630 1930 y(suppressed.)38 b(If)29 b(the)h Ft(-e)f Fu(option)h(is)f(giv)m(en,)i (in)m(terpretation)g(of)e(the)h(follo)m(wing)h(bac)m(kslash-)630 -1602 y(escap)s(ed)43 b(c)m(haracters)h(is)e(enabled.)78 +2039 y(escap)s(ed)43 b(c)m(haracters)h(is)e(enabled.)78 b(The)42 b Ft(-E)g Fu(option)h(disables)g(the)g(in)m(terpretation)h(of) -630 1711 y(these)27 b(escap)s(e)g(c)m(haracters,)i(ev)m(en)e(on)g +630 2149 y(these)27 b(escap)s(e)g(c)m(haracters,)i(ev)m(en)e(on)g (systems)f(where)g(they)h(are)g(in)m(terpreted)g(b)m(y)f(default.)630 -1821 y(The)32 b Ft(xpg_echo)f Fu(shell)i(option)g(ma)m(y)h(b)s(e)e +2259 y(The)32 b Ft(xpg_echo)f Fu(shell)i(option)g(ma)m(y)h(b)s(e)e (used)g(to)h(dynamically)h(determine)f(whether)f(or)630 -1931 y(not)h Ft(echo)f Fu(expands)g(these)h(escap)s(e)h(c)m(haracters)g +2368 y(not)h Ft(echo)f Fu(expands)g(these)h(escap)s(e)h(c)m(haracters)g (b)m(y)f(default.)48 b Ft(echo)32 b Fu(do)s(es)g(not)i(in)m(terpret)630 -2040 y Ft(--)c Fu(to)h(mean)f(the)h(end)f(of)g(options.)630 -2174 y Ft(echo)f Fu(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e)f -(sequences:)630 2332 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 -2491 y Ft(\\b)384 b Fu(bac)m(kspace)630 2649 y Ft(\\c)g -Fu(suppress)28 b(further)h(output)630 2807 y Ft(\\e)630 -2917 y(\\E)384 b Fu(escap)s(e)630 3075 y Ft(\\f)g Fu(form)30 -b(feed)630 3233 y Ft(\\n)384 b Fu(new)30 b(line)630 3392 -y Ft(\\r)384 b Fu(carriage)32 b(return)630 3550 y Ft(\\t)384 -b Fu(horizon)m(tal)32 b(tab)630 3708 y Ft(\\v)384 b Fu(v)m(ertical)32 -b(tab)630 3867 y Ft(\\\\)384 b Fu(bac)m(kslash)630 4025 +2478 y Ft(--)c Fu(to)h(mean)f(the)h(end)f(of)g(options.)630 +2607 y Ft(echo)f Fu(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e)f +(sequences:)630 2755 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 +2903 y Ft(\\b)384 b Fu(bac)m(kspace)630 3051 y Ft(\\c)g +Fu(suppress)28 b(further)h(output)630 3200 y Ft(\\e)630 +3309 y(\\E)384 b Fu(escap)s(e)630 3458 y Ft(\\f)g Fu(form)30 +b(feed)630 3606 y Ft(\\n)384 b Fu(new)30 b(line)630 3754 +y Ft(\\r)384 b Fu(carriage)32 b(return)630 3902 y Ft(\\t)384 +b Fu(horizon)m(tal)32 b(tab)630 4051 y Ft(\\v)384 b Fu(v)m(ertical)32 +b(tab)630 4199 y Ft(\\\\)384 b Fu(bac)m(kslash)630 4347 y Ft(\\0)p Fj(nnn)240 b Fu(the)32 b(eigh)m(t-bit)i(c)m(haracter)g (whose)e(v)-5 b(alue)33 b(is)f(the)g(o)s(ctal)i(v)-5 -b(alue)32 b Fr(nnn)f Fu(\(zero)i(to)1110 4134 y(three)e(o)s(ctal)g -(digits\))630 4293 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c) +b(alue)32 b Fr(nnn)f Fu(\(zero)i(to)1110 4457 y(three)e(o)s(ctal)g +(digits\))630 4605 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c) m(haracter)g(whose)e(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 -b(alue)39 b Fr(HH)1110 4402 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e -(digits\))630 4561 y Ft(\\u)p Fj(HHHH)192 b Fu(the)41 +b(alue)39 b Fr(HH)1110 4715 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e +(digits\))630 4863 y Ft(\\u)p Fj(HHHH)192 b Fu(the)41 b(Unico)s(de)g(\(ISO/IEC)f(10646\))j(c)m(haracter)g(whose)e(v)-5 -b(alue)41 b(is)g(the)g(hex-)1110 4670 y(adecimal)32 b(v)-5 +b(alue)41 b(is)g(the)g(hex-)1110 4973 y(adecimal)32 b(v)-5 b(alue)31 b Fr(HHHH)41 b Fu(\(one)31 b(to)g(four)e(hex)h(digits\))630 -4829 y Ft(\\U)p Fj(HHHHHHHH)1110 4938 y Fu(the)41 b(Unico)s(de)g +5121 y Ft(\\U)p Fj(HHHHHHHH)1110 5230 y Fu(the)41 b(Unico)s(de)g (\(ISO/IEC)f(10646\))j(c)m(haracter)g(whose)e(v)-5 b(alue)41 -b(is)g(the)g(hex-)1110 5048 y(adecimal)32 b(v)-5 b(alue)31 -b Fr(HHHHHHHH)41 b Fu(\(one)31 b(to)g(eigh)m(t)h(hex)e(digits\))150 -5206 y Ft(enable)870 5340 y(enable)46 b([-a])h([-dnps])f([-f)g -Fj(filename)p Ft(])g([)p Fj(name)g Ft(...)o(])p eop end -%%Page: 54 60 -TeXDict begin 54 59 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(54)630 299 y(Enable)36 +b(is)g(the)g(hex-)1110 5340 y(adecimal)32 b(v)-5 b(alue)31 +b Fr(HHHHHHHH)41 b Fu(\(one)31 b(to)g(eigh)m(t)h(hex)e(digits\))p +eop end +%%Page: 55 61 +TeXDict begin 55 60 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(55)150 299 y Ft(enable)870 +433 y(enable)46 b([-a])h([-dnps])f([-f)g Fj(filename)p +Ft(])g([)p Fj(name)g Ft(...)o(])630 567 y Fu(Enable)36 b(and)f(disable)h(builtin)g(shell)g(commands.)56 b(Disabling)37 -b(a)g(builtin)e(allo)m(ws)i(a)f(disk)630 408 y(command)e(whic)m(h)g +b(a)g(builtin)e(allo)m(ws)i(a)f(disk)630 676 y(command)e(whic)m(h)g (has)g(the)g(same)h(name)f(as)h(a)f(shell)h(builtin)e(to)i(b)s(e)f -(executed)h(without)630 518 y(sp)s(ecifying)27 b(a)g(full)g(pathname,)g +(executed)h(without)630 786 y(sp)s(ecifying)27 b(a)g(full)g(pathname,)g (ev)m(en)h(though)f(the)g(shell)g(normally)g(searc)m(hes)h(for)f -(builtins)630 628 y(b)s(efore)35 b(disk)g(commands.)55 +(builtins)630 896 y(b)s(efore)35 b(disk)g(commands.)55 b(If)35 b Ft(-n)g Fu(is)g(used,)h(the)g Fr(name)5 b Fu(s)35 -b(b)s(ecome)h(disabled.)55 b(Otherwise)630 737 y Fr(name)5 +b(b)s(ecome)h(disabled.)55 b(Otherwise)630 1005 y Fr(name)5 b Fu(s)44 b(are)h(enabled.)82 b(F)-8 b(or)45 b(example,)k(to)c(use)f (the)g Ft(test)f Fu(binary)h(found)f(via)h Ft($PATH)630 -847 y Fu(instead)31 b(of)f(the)h(shell)f(builtin)g(v)m(ersion,)h(t)m -(yp)s(e)g(`)p Ft(enable)e(-n)h(test)p Fu('.)630 983 y(If)45 -b(the)i Ft(-p)e Fu(option)h(is)g(supplied,)j(or)d(no)g +1115 y Fu(instead)31 b(of)f(the)h(shell)f(builtin)g(v)m(ersion,)h(t)m +(yp)s(e)g(`)p Ft(enable)e(-n)h(test)p Fu('.)630 1249 +y(If)45 b(the)i Ft(-p)e Fu(option)h(is)g(supplied,)j(or)d(no)g Fr(name)51 b Fu(argumen)m(ts)46 b(app)s(ear,)k(a)c(list)h(of)f(shell) -630 1092 y(builtins)37 b(is)h(prin)m(ted.)63 b(With)38 +630 1358 y(builtins)37 b(is)h(prin)m(ted.)63 b(With)38 b(no)f(other)h(argumen)m(ts,)j(the)d(list)g(consists)g(of)g(all)h -(enabled)630 1202 y(shell)d(builtins.)57 b(The)35 b Ft(-a)h +(enabled)630 1468 y(shell)d(builtins.)57 b(The)35 b Ft(-a)h Fu(option)g(means)g(to)g(list)h(eac)m(h)g(builtin)f(with)f(an)h -(indication)h(of)630 1311 y(whether)30 b(or)g(not)h(it)g(is)f(enabled.) -630 1447 y(The)22 b Ft(-f)f Fu(option)h(means)g(to)h(load)g(the)f(new)g +(indication)h(of)630 1577 y(whether)30 b(or)g(not)h(it)g(is)f(enabled.) +630 1711 y(The)22 b Ft(-f)f Fu(option)h(means)g(to)h(load)g(the)f(new)g (builtin)f(command)h Fr(name)27 b Fu(from)22 b(shared)f(ob)5 -b(ject)630 1557 y Fr(\014lename)p Fu(,)33 b(on)e(systems)h(that)h(supp) +b(ject)630 1821 y Fr(\014lename)p Fu(,)33 b(on)e(systems)h(that)h(supp) s(ort)d(dynamic)i(loading.)46 b(The)31 b Ft(-d)g Fu(option)h(will)h -(delete)630 1667 y(a)e(builtin)f(loaded)h(with)f Ft(-f)p -Fu(.)630 1802 y(If)j(there)i(are)f(no)g(options,)h(a)f(list)h(of)f(the) +(delete)630 1931 y(a)e(builtin)f(loaded)h(with)f Ft(-f)p +Fu(.)630 2064 y(If)j(there)i(are)f(no)g(options,)h(a)f(list)h(of)f(the) g(shell)g(builtins)g(is)g(displa)m(y)m(ed.)52 b(The)33 -b Ft(-s)g Fu(option)630 1912 y(restricts)j Ft(enable)d +b Ft(-s)g Fu(option)630 2174 y(restricts)j Ft(enable)d Fu(to)j(the)f Fm(posix)f Fu(sp)s(ecial)i(builtins.)54 b(If)34 b Ft(-s)h Fu(is)g(used)f(with)g Ft(-f)p Fu(,)i(the)f(new)630 -2022 y(builtin)30 b(b)s(ecomes)h(a)f(sp)s(ecial)h(builtin)f(\(see)i -(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(70\).)630 -2158 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i +2284 y(builtin)30 b(b)s(ecomes)h(a)f(sp)s(ecial)h(builtin)f(\(see)i +(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(71\).)630 +2418 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i Fr(name)k Fu(is)26 b(not)g(a)h(shell)f(builtin)g(or)g(there)g(is)g(an)g -(error)630 2267 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g -(ob)5 b(ject.)150 2429 y Ft(help)870 2565 y(help)47 b([-dms])f([)p -Fj(pattern)p Ft(])630 2701 y Fu(Displa)m(y)40 b(helpful)e(information)h +(error)630 2527 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g +(ob)5 b(ject.)150 2685 y Ft(help)870 2819 y(help)47 b([-dms])f([)p +Fj(pattern)p Ft(])630 2953 y Fu(Displa)m(y)40 b(helpful)e(information)h (ab)s(out)g(builtin)f(commands.)66 b(If)38 b Fr(pattern)h -Fu(is)g(sp)s(eci\014ed,)630 2811 y Ft(help)28 b Fu(giv)m(es)i(detailed) +Fu(is)g(sp)s(eci\014ed,)630 3063 y Ft(help)28 b Fu(giv)m(es)i(detailed) g(help)e(on)h(all)h(commands)e(matc)m(hing)i Fr(pattern)p -Fu(,)g(otherwise)f(a)g(list)h(of)630 2920 y(the)h(builtins)e(is)i(prin) -m(ted.)630 3056 y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo) -m(wing)h(meanings:)630 3218 y Ft(-d)384 b Fu(Displa)m(y)32 +Fu(,)g(otherwise)f(a)g(list)h(of)630 3173 y(the)h(builtins)e(is)i(prin) +m(ted.)630 3306 y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo) +m(wing)h(meanings:)630 3465 y Ft(-d)384 b Fu(Displa)m(y)32 b(a)e(short)g(description)h(of)f(eac)m(h)i Fr(pattern)630 -3381 y Ft(-m)384 b Fu(Displa)m(y)32 b(the)e(description)g(of)h(eac)m(h) +3623 y Ft(-m)384 b Fu(Displa)m(y)32 b(the)e(description)g(of)h(eac)m(h) h Fr(pattern)e Fu(in)g(a)h(manpage-lik)m(e)h(format)630 -3543 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(a)h(short)f(usage)h -(synopsis)e(for)i(eac)m(h)g Fr(pattern)630 3705 y Fu(The)f(return)f +3781 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(a)h(short)f(usage)h +(synopsis)e(for)i(eac)m(h)g Fr(pattern)630 3940 y Fu(The)f(return)f (status)i(is)f(zero)h(unless)f(no)g(command)h(matc)m(hes)g -Fr(pattern)p Fu(.)150 3867 y Ft(let)870 4003 y(let)47 +Fr(pattern)p Fu(.)150 4098 y Ft(let)870 4232 y(let)47 b Fj(expression)e Ft([)p Fj(expression)g Ft(...)o(])630 -4139 y Fu(The)c Ft(let)g Fu(builtin)g(allo)m(ws)i(arithmetic)f(to)h(b)s +4366 y Fu(The)c Ft(let)g Fu(builtin)g(allo)m(ws)i(arithmetic)f(to)h(b)s (e)d(p)s(erformed)g(on)i(shell)g(v)-5 b(ariables.)74 -b(Eac)m(h)630 4248 y Fr(expression)31 b Fu(is)g(ev)-5 +b(Eac)m(h)630 4475 y Fr(expression)31 b Fu(is)g(ev)-5 b(aluated)32 b(according)f(to)h(the)f(rules)g(giv)m(en)h(b)s(elo)m(w)f -(in)f(Section)i(6.5)g([Shell)630 4358 y(Arithmetic],)51 -b(page)46 b(89.)87 b(If)45 b(the)g(last)h Fr(expression)g +(in)f(Section)i(6.5)g([Shell)630 4585 y(Arithmetic],)51 +b(page)46 b(92.)87 b(If)45 b(the)g(last)h Fr(expression)g Fu(ev)-5 b(aluates)47 b(to)f(0,)k Ft(let)44 b Fu(returns)g(1;)630 -4468 y(otherwise)31 b(0)g(is)f(returned.)150 4630 y Ft(local)870 -4766 y(local)46 b([)p Fj(option)p Ft(])g Fj(name)p Ft([=)p -Fj(value)p Ft(])e(...)630 4902 y Fu(F)-8 b(or)27 b(eac)m(h)g(argumen)m +4695 y(otherwise)31 b(0)g(is)f(returned.)150 4853 y Ft(local)870 +4987 y(local)46 b([)p Fj(option)p Ft(])g Fj(name)p Ft([=)p +Fj(value)p Ft(])e(...)630 5121 y Fu(F)-8 b(or)27 b(eac)m(h)g(argumen)m (t,)g(a)f(lo)s(cal)h(v)-5 b(ariable)27 b(named)e Fr(name)31 b Fu(is)26 b(created,)i(and)d(assigned)h Fr(v)-5 b(alue)p -Fu(.)630 5011 y(The)37 b Fr(option)h Fu(can)f(b)s(e)g(an)m(y)h(of)f +Fu(.)630 5230 y(The)37 b Fr(option)h Fu(can)f(b)s(e)g(an)m(y)h(of)f (the)h(options)g(accepted)g(b)m(y)g Ft(declare)p Fu(.)59 -b Ft(local)36 b Fu(can)i(only)630 5121 y(b)s(e)j(used)h(within)f(a)i +b Ft(local)36 b Fu(can)i(only)630 5340 y(b)s(e)j(used)h(within)f(a)i (function;)48 b(it)42 b(mak)m(es)h(the)f(v)-5 b(ariable)43 -b Fr(name)48 b Fu(ha)m(v)m(e)43 b(a)f(visible)h(scop)s(e)630 -5230 y(restricted)h(to)f(that)h(function)e(and)g(its)i(c)m(hildren.)78 +b Fr(name)48 b Fu(ha)m(v)m(e)43 b(a)f(visible)h(scop)s(e)p +eop end +%%Page: 56 62 +TeXDict begin 56 61 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(56)630 299 y(restricted)44 +b(to)f(that)h(function)e(and)g(its)i(c)m(hildren.)78 b(If)42 b Fr(name)48 b Fu(is)43 b(`)p Ft(-)p Fu(',)j(the)d(set)h(of)f -(shell)630 5340 y(options)34 b(is)f(made)g(lo)s(cal)i(to)f(the)f +(shell)630 408 y(options)34 b(is)f(made)g(lo)s(cal)i(to)f(the)f (function)g(in)g(whic)m(h)g Ft(local)f Fu(is)h(in)m(v)m(ok)m(ed:)48 -b(shell)34 b(options)p eop end -%%Page: 55 61 -TeXDict begin 55 60 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(55)630 299 y(c)m(hanged)32 -b(using)e(the)i Ft(set)e Fu(builtin)h(inside)g(the)g(function)g(are)g -(restored)h(to)g(their)f(original)630 408 y(v)-5 b(alues)25 -b(when)e(the)i(function)f(returns.)37 b(The)24 b(return)f(status)i(is)f -(zero)i(unless)d Ft(local)g Fu(is)i(used)630 518 y(outside)k(a)f -(function,)h(an)f(in)m(v)-5 b(alid)29 b Fr(name)k Fu(is)28 -b(supplied,)g(or)g Fr(name)34 b Fu(is)28 b(a)h(readonly)f(v)-5 -b(ariable.)150 681 y Ft(logout)870 817 y(logout)46 b([)p -Fj(n)p Ft(])630 953 y Fu(Exit)31 b(a)g(login)g(shell,)g(returning)e(a)i -(status)g(of)f Fr(n)g Fu(to)h(the)g(shell's)f(paren)m(t.)150 -1116 y Ft(mapfile)870 1252 y(mapfile)46 b([-d)h Fj(delim)p -Ft(])f([-n)h Fj(count)p Ft(])f([-O)h Fj(origin)p Ft(])f([-s)g -Fj(count)p Ft(])h([-t])f([-u)h Fj(fd)p Ft(])1061 1362 -y([-C)g Fj(callback)p Ft(])e([-c)i Fj(quantum)p Ft(])f([)p -Fj(array)p Ft(])630 1498 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e -(input)g(in)m(to)j(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 -b Fr(arra)m(y)p Fu(,)i(or)630 1607 y(from)28 b(\014le)h(descriptor)f +b(shell)34 b(options)630 518 y(c)m(hanged)e(using)e(the)i +Ft(set)e Fu(builtin)h(inside)g(the)g(function)g(are)g(restored)h(to)g +(their)f(original)630 628 y(v)-5 b(alues)25 b(when)e(the)i(function)f +(returns.)37 b(The)24 b(return)f(status)i(is)f(zero)i(unless)d +Ft(local)g Fu(is)i(used)630 737 y(outside)k(a)f(function,)h(an)f(in)m +(v)-5 b(alid)29 b Fr(name)k Fu(is)28 b(supplied,)g(or)g +Fr(name)34 b Fu(is)28 b(a)h(readonly)f(v)-5 b(ariable.)150 +887 y Ft(logout)870 1016 y(logout)46 b([)p Fj(n)p Ft(])630 +1146 y Fu(Exit)31 b(a)g(login)g(shell,)g(returning)e(a)i(status)g(of)f +Fr(n)g Fu(to)h(the)g(shell's)f(paren)m(t.)150 1295 y +Ft(mapfile)870 1425 y(mapfile)46 b([-d)h Fj(delim)p Ft(])f([-n)h +Fj(count)p Ft(])f([-O)h Fj(origin)p Ft(])f([-s)g Fj(count)p +Ft(])1061 1534 y([-t])h([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p +Ft(])f([-c)g Fj(quantum)p Ft(])g([)p Fj(array)p Ft(])630 +1664 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j +(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 b Fr(arra)m(y)p +Fu(,)i(or)630 1773 y(from)28 b(\014le)h(descriptor)f Fr(fd)k Fu(if)c(the)h Ft(-u)f Fu(option)h(is)g(supplied.)39 b(The)28 b(v)-5 b(ariable)29 b Ft(MAPFILE)e Fu(is)i(the)630 -1717 y(default)i Fr(arra)m(y)p Fu(.)41 b(Options,)30 +1883 y(default)i Fr(arra)m(y)p Fu(.)41 b(Options,)30 b(if)g(supplied,)g(ha)m(v)m(e)h(the)g(follo)m(wing)h(meanings:)630 -1880 y Ft(-d)384 b Fu(The)37 b(\014rst)g(c)m(haracter)i(of)f +2032 y Ft(-d)384 b Fu(The)37 b(\014rst)g(c)m(haracter)i(of)f Fr(delim)g Fu(is)f(used)g(to)h(terminate)h(eac)m(h)g(input)d(line,)1110 -1989 y(rather)30 b(than)g(newline.)630 2152 y Ft(-n)384 -b Fu(Cop)m(y)30 b(at)h(most)g Fr(coun)m(t)i Fu(lines.)41 -b(If)30 b Fr(coun)m(t)j Fu(is)d(0,)h(all)h(lines)e(are)h(copied.)630 -2315 y Ft(-O)384 b Fu(Begin)31 b(assigning)g(to)g Fr(arra)m(y)39 -b Fu(at)31 b(index)f Fr(origin)p Fu(.)41 b(The)30 b(default)h(index)f -(is)g(0.)630 2477 y Ft(-s)384 b Fu(Discard)31 b(the)f(\014rst)g -Fr(coun)m(t)j Fu(lines)e(read.)630 2640 y Ft(-t)384 b -Fu(Remo)m(v)m(e)32 b(a)f(trailing)g Fr(delim)g Fu(\(default)g -(newline\))f(from)g(eac)m(h)i(line)f(read.)630 2803 y -Ft(-u)384 b Fu(Read)31 b(lines)f(from)g(\014le)h(descriptor)f -Fr(fd)j Fu(instead)e(of)f(the)h(standard)e(input.)630 -2966 y Ft(-C)384 b Fu(Ev)-5 b(aluate)33 b Fr(callbac)m(k)39 -b Fu(eac)m(h)33 b(time)f Fr(quan)m(tum)p Fu(P)f(lines)h(are)g(read.)45 -b(The)31 b Ft(-c)g Fu(op-)1110 3075 y(tion)g(sp)s(eci\014es)f -Fr(quan)m(tum)p Fu(.)630 3238 y Ft(-c)384 b Fu(Sp)s(ecify)30 -b(the)g(n)m(um)m(b)s(er)f(of)i(lines)f(read)h(b)s(et)m(w)m(een)g(eac)m -(h)g(call)h(to)f Fr(callbac)m(k)p Fu(.)630 3401 y(If)36 -b Ft(-C)g Fu(is)g(sp)s(eci\014ed)g(without)g Ft(-c)p -Fu(,)h(the)g(default)f(quan)m(tum)g(is)h(5000.)60 b(When)36 -b Fr(callbac)m(k)44 b Fu(is)630 3510 y(ev)-5 b(aluated,)30 -b(it)e(is)g(supplied)f(the)h(index)f(of)i(the)f(next)g(arra)m(y)g -(elemen)m(t)h(to)g(b)s(e)e(assigned)i(and)630 3620 y(the)39 -b(line)g(to)h(b)s(e)e(assigned)h(to)h(that)f(elemen)m(t)i(as)e -(additional)h(argumen)m(ts.)66 b Fr(callbac)m(k)47 b -Fu(is)630 3729 y(ev)-5 b(aluated)32 b(after)e(the)h(line)g(is)f(read)g -(but)g(b)s(efore)g(the)h(arra)m(y)g(elemen)m(t)g(is)g(assigned.)630 -3866 y(If)25 b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g +2142 y(rather)41 b(than)h(newline.)74 b(If)41 b Fr(delim)h +Fu(is)g(the)f(empt)m(y)h(string,)j Ft(mapfile)40 b Fu(will)1110 +2252 y(terminate)31 b(a)g(line)g(when)e(it)i(reads)f(a)h(NUL)g(c)m +(haracter.)630 2401 y Ft(-n)384 b Fu(Cop)m(y)30 b(at)h(most)g +Fr(coun)m(t)i Fu(lines.)41 b(If)30 b Fr(coun)m(t)j Fu(is)d(0,)h(all)h +(lines)e(are)h(copied.)630 2550 y Ft(-O)384 b Fu(Begin)31 +b(assigning)g(to)g Fr(arra)m(y)39 b Fu(at)31 b(index)f +Fr(origin)p Fu(.)41 b(The)30 b(default)h(index)f(is)g(0.)630 +2700 y Ft(-s)384 b Fu(Discard)31 b(the)f(\014rst)g Fr(coun)m(t)j +Fu(lines)e(read.)630 2849 y Ft(-t)384 b Fu(Remo)m(v)m(e)32 +b(a)f(trailing)g Fr(delim)g Fu(\(default)g(newline\))f(from)g(eac)m(h)i +(line)f(read.)630 2999 y Ft(-u)384 b Fu(Read)31 b(lines)f(from)g +(\014le)h(descriptor)f Fr(fd)j Fu(instead)e(of)f(the)h(standard)e +(input.)630 3148 y Ft(-C)384 b Fu(Ev)-5 b(aluate)26 b +Fr(callbac)m(k)33 b Fu(eac)m(h)26 b(time)g Fr(quan)m(tum)f +Fu(lines)g(are)g(read.)39 b(The)25 b Ft(-c)f Fu(option)1110 +3258 y(sp)s(eci\014es)30 b Fr(quan)m(tum)p Fu(.)630 3407 +y Ft(-c)384 b Fu(Sp)s(ecify)30 b(the)g(n)m(um)m(b)s(er)f(of)i(lines)f +(read)h(b)s(et)m(w)m(een)g(eac)m(h)g(call)h(to)f Fr(callbac)m(k)p +Fu(.)630 3557 y(If)36 b Ft(-C)g Fu(is)g(sp)s(eci\014ed)g(without)g +Ft(-c)p Fu(,)h(the)g(default)f(quan)m(tum)g(is)h(5000.)60 +b(When)36 b Fr(callbac)m(k)44 b Fu(is)630 3666 y(ev)-5 +b(aluated,)30 b(it)e(is)g(supplied)f(the)h(index)f(of)i(the)f(next)g +(arra)m(y)g(elemen)m(t)h(to)g(b)s(e)e(assigned)i(and)630 +3776 y(the)39 b(line)g(to)h(b)s(e)e(assigned)h(to)h(that)f(elemen)m(t)i +(as)e(additional)h(argumen)m(ts.)66 b Fr(callbac)m(k)47 +b Fu(is)630 3885 y(ev)-5 b(aluated)32 b(after)e(the)h(line)g(is)f(read) +g(but)g(b)s(efore)g(the)h(arra)m(y)g(elemen)m(t)g(is)g(assigned.)630 +4015 y(If)25 b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g Ft(mapfile)c Fu(will)j(clear)g Fr(arra)m(y)34 b Fu(b)s(efore)24 -b(assigning)630 3975 y(to)31 b(it.)630 4111 y Ft(mapfile)41 +b(assigning)630 4125 y(to)31 b(it.)630 4254 y Ft(mapfile)41 b Fu(returns)g(successfully)i(unless)e(an)i(in)m(v)-5 b(alid)43 b(option)g(or)g(option)g(argumen)m(t)g(is)630 -4221 y(supplied,)29 b Fr(arra)m(y)39 b Fu(is)30 b(in)m(v)-5 +4364 y(supplied,)29 b Fr(arra)m(y)39 b Fu(is)30 b(in)m(v)-5 b(alid)31 b(or)g(unassignable,)f(or)h Fr(arra)m(y)38 b Fu(is)31 b(not)f(an)h(indexed)e(arra)m(y)-8 b(.)150 -4384 y Ft(printf)870 4520 y(printf)46 b([-v)h Fj(var)p -Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 4656 +4513 y Ft(printf)870 4643 y(printf)46 b([-v)h Fj(var)p +Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 4772 y Fu(W)-8 b(rite)27 b(the)g(formatted)f Fr(argumen)m(ts)k Fu(to)d(the)f(standard)f(output)h(under)e(the)i(con)m(trol)i(of)e(the) -630 4765 y Fr(format)p Fu(.)66 b(The)39 b Ft(-v)f Fu(option)h(causes)g +630 4882 y Fr(format)p Fu(.)66 b(The)39 b Ft(-v)f Fu(option)h(causes)g (the)g(output)g(to)g(b)s(e)f(assigned)h(to)h(the)f(v)-5 -b(ariable)39 b Fr(v)-5 b(ar)630 4875 y Fu(rather)30 b(than)g(b)s(eing)g -(prin)m(ted)g(to)h(the)g(standard)e(output.)630 5011 +b(ariable)39 b Fr(v)-5 b(ar)630 4991 y Fu(rather)30 b(than)g(b)s(eing)g +(prin)m(ted)g(to)h(the)g(standard)e(output.)630 5121 y(The)36 b Fr(format)i Fu(is)f(a)f(c)m(haracter)i(string)e(whic)m(h)g (con)m(tains)i(three)e(t)m(yp)s(es)g(of)h(ob)5 b(jects:)53 -b(plain)630 5121 y(c)m(haracters,)41 b(whic)m(h)c(are)h(simply)e +b(plain)630 5230 y(c)m(haracters,)41 b(whic)m(h)c(are)h(simply)e (copied)i(to)g(standard)f(output,)i(c)m(haracter)g(escap)s(e)e(se-)630 -5230 y(quences,)g(whic)m(h)f(are)g(con)m(v)m(erted)h(and)f(copied)g(to) -g(the)g(standard)f(output,)i(and)f(format)630 5340 y(sp)s -(eci\014cations,)j(eac)m(h)e(of)g(whic)m(h)f(causes)g(prin)m(ting)g(of) -h(the)f(next)h(successiv)m(e)g Fr(argumen)m(t)p Fu(.)p -eop end -%%Page: 56 62 -TeXDict begin 56 61 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(56)630 299 y(In)24 -b(addition)h(to)g(the)g(standard)f Ft(printf\(1\))e Fu(formats,)27 -b Ft(printf)c Fu(in)m(terprets)i(the)f(follo)m(wing)630 -408 y(extensions:)630 596 y Ft(\045b)384 b Fu(Causes)38 +5340 y(quences,)g(whic)m(h)f(are)g(con)m(v)m(erted)h(and)f(copied)g(to) +g(the)g(standard)f(output,)i(and)f(format)p eop end +%%Page: 57 63 +TeXDict begin 57 62 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(57)630 299 y(sp)s +(eci\014cations,)39 b(eac)m(h)e(of)g(whic)m(h)f(causes)g(prin)m(ting)g +(of)h(the)f(next)h(successiv)m(e)g Fr(argumen)m(t)p Fu(.)630 +408 y(In)24 b(addition)h(to)g(the)g(standard)f Ft(printf\(1\))e +Fu(formats,)27 b Ft(printf)c Fu(in)m(terprets)i(the)f(follo)m(wing)630 +518 y(extensions:)630 690 y Ft(\045b)384 b Fu(Causes)38 b Ft(printf)f Fu(to)j(expand)e(bac)m(kslash)h(escap)s(e)g(sequences)g -(in)f(the)h(cor-)1110 706 y(resp)s(onding)31 b Fr(argumen)m(t)j +(in)f(the)h(cor-)1110 800 y(resp)s(onding)31 b Fr(argumen)m(t)j Fu(in)e(the)h(same)f(w)m(a)m(y)h(as)g Ft(echo)c(-e)j -Fu(\(see)h(Section)g(4.2)1110 816 y([Bash)e(Builtins],)g(page)g(49\).) -630 1003 y Ft(\045q)384 b Fu(Causes)32 b Ft(printf)e +Fu(\(see)h(Section)g(4.2)1110 909 y([Bash)e(Builtins],)g(page)g(50\).) +630 1082 y Ft(\045q)384 b Fu(Causes)32 b Ft(printf)e Fu(to)i(output)g(the)g(corresp)s(onding)f Fr(argumen)m(t)j -Fu(in)d(a)i(format)1110 1113 y(that)e(can)g(b)s(e)e(reused)h(as)h -(shell)f(input.)630 1301 y Ft(\045\()p Fj(datefmt)p Ft(\)T)1110 -1410 y Fu(Causes)f Ft(printf)e Fu(to)j(output)f(the)g(date-time)i -(string)e(resulting)h(from)e(using)1110 1520 y Fr(datefm)m(t)45 +Fu(in)d(a)i(format)1110 1191 y(that)e(can)g(b)s(e)e(reused)h(as)h +(shell)f(input.)630 1363 y Ft(\045\()p Fj(datefmt)p Ft(\)T)1110 +1473 y Fu(Causes)f Ft(printf)e Fu(to)j(output)f(the)g(date-time)i +(string)e(resulting)h(from)e(using)1110 1583 y Fr(datefm)m(t)45 b Fu(as)d(a)g(format)g(string)g(for)g Ft(strftime)p Fu(\(3\).)74 -b(The)41 b(corresp)s(onding)1110 1630 y Fr(argumen)m(t)h +b(The)41 b(corresp)s(onding)1110 1692 y Fr(argumen)m(t)h Fu(is)e(an)g(in)m(teger)i(represen)m(ting)e(the)g(n)m(um)m(b)s(er)f(of) -h(seconds)g(since)1110 1739 y(the)24 b(ep)s(o)s(c)m(h.)38 +h(seconds)g(since)1110 1802 y(the)24 b(ep)s(o)s(c)m(h.)38 b(Tw)m(o)24 b(sp)s(ecial)h(argumen)m(t)f(v)-5 b(alues)24 b(ma)m(y)h(b)s(e)e(used:)36 b(-1)25 b(represen)m(ts)1110 -1849 y(the)30 b(curren)m(t)g(time,)h(and)e(-2)i(represen)m(ts)f(the)g +1911 y(the)30 b(curren)m(t)g(time,)h(and)e(-2)i(represen)m(ts)f(the)g (time)h(the)f(shell)g(w)m(as)g(in)m(v)m(ok)m(ed.)1110 -1958 y(If)38 b(no)g(argumen)m(t)h(is)f(sp)s(eci\014ed,)i(con)m(v)m +2021 y(If)38 b(no)g(argumen)m(t)h(is)f(sp)s(eci\014ed,)i(con)m(v)m (ersion)f(b)s(eha)m(v)m(es)g(as)g(if)f(-1)h(had)f(b)s(een)1110 -2068 y(giv)m(en.)k(This)29 b(is)i(an)f(exception)i(to)f(the)f(usual)g -Ft(printf)f Fu(b)s(eha)m(vior.)630 2256 y(Argumen)m(ts)f(to)h +2131 y(giv)m(en.)k(This)29 b(is)i(an)f(exception)i(to)f(the)f(usual)g +Ft(printf)f Fu(b)s(eha)m(vior.)630 2303 y(Argumen)m(ts)f(to)h (non-string)e(format)i(sp)s(eci\014ers)e(are)h(treated)h(as)g(C)e -(language)j(constan)m(ts,)630 2365 y(except)22 b(that)g(a)g(leading)g +(language)j(constan)m(ts,)630 2412 y(except)22 b(that)g(a)g(leading)g (plus)e(or)h(min)m(us)f(sign)i(is)f(allo)m(w)m(ed,)k(and)c(if)g(the)g -(leading)h(c)m(haracter)h(is)630 2475 y(a)i(single)g(or)f(double)h +(leading)h(c)m(haracter)h(is)630 2522 y(a)i(single)g(or)f(double)h (quote,)h(the)f(v)-5 b(alue)25 b(is)f(the)h(ASCI)s(I)e(v)-5 b(alue)25 b(of)f(the)h(follo)m(wing)h(c)m(haracter.)630 -2624 y(The)31 b Fr(format)i Fu(is)f(reused)e(as)i(necessary)f(to)i +2663 y(The)31 b Fr(format)i Fu(is)f(reused)e(as)i(necessary)f(to)i (consume)e(all)h(of)f(the)h Fr(argumen)m(ts)p Fu(.)44 -b(If)30 b(the)i Fr(for-)630 2733 y(mat)c Fu(requires)e(more)g +b(If)30 b(the)i Fr(for-)630 2772 y(mat)c Fu(requires)e(more)g Fr(argumen)m(ts)k Fu(than)25 b(are)i(supplied,)e(the)h(extra)h(format)f -(sp)s(eci\014cations)630 2843 y(b)s(eha)m(v)m(e)j(as)g(if)f(a)h(zero)g +(sp)s(eci\014cations)630 2882 y(b)s(eha)m(v)m(e)j(as)g(if)f(a)h(zero)g (v)-5 b(alue)29 b(or)g(n)m(ull)f(string,)h(as)g(appropriate,)g(had)f(b) -s(een)g(supplied.)38 b(The)630 2952 y(return)29 b(v)-5 +s(een)g(supplied.)38 b(The)630 2992 y(return)29 b(v)-5 b(alue)31 b(is)g(zero)g(on)f(success,)h(non-zero)g(on)f(failure.)150 -3140 y Ft(read)870 3289 y(read)47 b([-ers])f([-a)h Fj(aname)p +3164 y Ft(read)870 3305 y(read)47 b([-ers])f([-a)h Fj(aname)p Ft(])f([-d)h Fj(delim)p Ft(])f([-i)h Fj(text)p Ft(])f([-n)h -Fj(nchars)p Ft(])1061 3399 y([-N)g Fj(nchars)p Ft(])f([-p)h +Fj(nchars)p Ft(])1061 3414 y([-N)g Fj(nchars)p Ft(])f([-p)h Fj(prompt)p Ft(])e([-t)i Fj(timeout)p Ft(])f([-u)h Fj(fd)p -Ft(])g([)p Fj(name)f Ft(...)o(])630 3547 y Fu(One)38 +Ft(])g([)p Fj(name)f Ft(...)o(])630 3555 y Fu(One)38 b(line)g(is)g(read)g(from)g(the)g(standard)f(input,)j(or)e(from)f(the)i -(\014le)f(descriptor)g Fr(fd)j Fu(sup-)630 3657 y(plied)34 +(\014le)f(descriptor)g Fr(fd)j Fu(sup-)630 3665 y(plied)34 b(as)h(an)f(argumen)m(t)h(to)g(the)f Ft(-u)g Fu(option,)i(split)f(in)m (to)g(w)m(ords)f(as)g(describ)s(ed)g(ab)s(o)m(v)m(e)h(in)630 -3767 y(Section)j(3.5.7)h([W)-8 b(ord)38 b(Splitting],)i(page)e(30,)j +3774 y(Section)j(3.5.7)h([W)-8 b(ord)38 b(Splitting],)i(page)e(31,)j (and)36 b(the)i(\014rst)f(w)m(ord)g(is)g(assigned)h(to)g(the)630 -3876 y(\014rst)32 b Fr(name)p Fu(,)h(the)g(second)g(w)m(ord)f(to)h(the) +3884 y(\014rst)32 b Fr(name)p Fu(,)h(the)g(second)g(w)m(ord)f(to)h(the) g(second)g Fr(name)p Fu(,)g(and)f(so)h(on.)47 b(If)32 -b(there)h(are)g(more)630 3986 y(w)m(ords)39 b(than)g(names,)j(the)e +b(there)h(are)g(more)630 3994 y(w)m(ords)39 b(than)g(names,)j(the)e (remaining)f(w)m(ords)g(and)g(their)h(in)m(terv)m(ening)g(delimiters)h -(are)630 4095 y(assigned)29 b(to)h(the)g(last)g Fr(name)p +(are)630 4103 y(assigned)29 b(to)h(the)g(last)g Fr(name)p Fu(.)40 b(If)29 b(there)g(are)h(few)m(er)f(w)m(ords)g(read)g(from)g -(the)g(input)g(stream)630 4205 y(than)35 b(names,)i(the)e(remaining)h +(the)g(input)g(stream)630 4213 y(than)35 b(names,)i(the)e(remaining)h (names)f(are)h(assigned)f(empt)m(y)h(v)-5 b(alues.)56 -b(The)34 b(c)m(haracters)630 4315 y(in)e(the)h(v)-5 b(alue)33 +b(The)34 b(c)m(haracters)630 4322 y(in)e(the)h(v)-5 b(alue)33 b(of)g(the)g Ft(IFS)f Fu(v)-5 b(ariable)33 b(are)h(used)d(to)j(split)f -(the)g(line)g(in)m(to)g(w)m(ords)g(using)f(the)630 4424 +(the)g(line)g(in)m(to)g(w)m(ords)g(using)f(the)630 4432 y(same)d(rules)f(the)g(shell)h(uses)f(for)g(expansion)g(\(describ)s(ed) g(ab)s(o)m(v)m(e)i(in)e(Section)h(3.5.7)h([W)-8 b(ord)630 -4534 y(Splitting],)38 b(page)f(30\).)60 b(The)35 b(bac)m(kslash)i(c)m +4542 y(Splitting],)38 b(page)f(31\).)60 b(The)35 b(bac)m(kslash)i(c)m (haracter)h(`)p Ft(\\)p Fu(')e(ma)m(y)h(b)s(e)f(used)f(to)i(remo)m(v)m -(e)h(an)m(y)630 4643 y(sp)s(ecial)i(meaning)g(for)f(the)g(next)h(c)m +(e)h(an)m(y)630 4651 y(sp)s(ecial)i(meaning)g(for)f(the)g(next)h(c)m (haracter)h(read)e(and)g(for)g(line)h(con)m(tin)m(uation.)69 -b(If)39 b(no)630 4753 y(names)c(are)h(supplied,)f(the)h(line)g(read)f +b(If)39 b(no)630 4761 y(names)c(are)h(supplied,)f(the)h(line)g(read)f (is)g(assigned)h(to)g(the)f(v)-5 b(ariable)36 b Ft(REPLY)p -Fu(.)54 b(The)35 b(exit)630 4862 y(status)f(is)f(zero,)i(unless)e +Fu(.)54 b(The)35 b(exit)630 4870 y(status)f(is)f(zero,)i(unless)e (end-of-\014le)h(is)f(encoun)m(tered,)i Ft(read)e Fu(times)h(out)f -(\(in)h(whic)m(h)f(case)630 4972 y(the)g(status)h(is)f(greater)i(than)e +(\(in)h(whic)m(h)f(case)630 4980 y(the)g(status)h(is)f(greater)i(than)e (128\),)j(a)e(v)-5 b(ariable)34 b(assignmen)m(t)g(error)f(\(suc)m(h)g -(as)g(assigning)630 5082 y(to)38 b(a)f(readonly)g(v)-5 +(as)g(assigning)630 5089 y(to)38 b(a)f(readonly)g(v)-5 b(ariable\))38 b(o)s(ccurs,)h(or)e(an)g(in)m(v)-5 b(alid)38 b(\014le)f(descriptor)g(is)g(supplied)e(as)j(the)630 -5191 y(argumen)m(t)31 b(to)g Ft(-u)p Fu(.)630 5340 y(Options,)f(if)h +5199 y(argumen)m(t)31 b(to)g Ft(-u)p Fu(.)630 5340 y(Options,)f(if)h (supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)p eop end -%%Page: 57 63 -TeXDict begin 57 62 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(57)630 299 y Ft(-a)30 +%%Page: 58 64 +TeXDict begin 58 63 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(58)630 299 y Ft(-a)30 b Fj(aname)114 b Fu(The)34 b(w)m(ords)f(are)i(assigned)f(to)h(sequen)m (tial)h(indices)e(of)g(the)g(arra)m(y)h(v)-5 b(ariable)1110 408 y Fr(aname)p Fu(,)29 b(starting)h(at)f(0.)40 b(All)29 b(elemen)m(ts)h(are)e(remo)m(v)m(ed)i(from)d Fr(aname)34 b Fu(b)s(efore)1110 518 y(the)d(assignmen)m(t.)41 b(Other)30 b Fr(name)36 b Fu(argumen)m(ts)30 b(are)h(ignored.)630 -667 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f +671 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f Fr(delim)g Fu(is)g(used)g(to)g(terminate)h(the)f(input)f(line,)1110 -777 y(rather)30 b(than)g(newline.)630 927 y Ft(-e)384 -b Fu(Readline)46 b(\(see)g(Chapter)e(8)h([Command)f(Line)h(Editing],)50 -b(page)45 b(104\))i(is)1110 1036 y(used)37 b(to)i(obtain)g(the)f(line.) -65 b(Readline)39 b(uses)e(the)i(curren)m(t)f(\(or)g(default,)j(if)1110 -1146 y(line)31 b(editing)g(w)m(as)f(not)h(previously)f(activ)m(e\))j -(editing)e(settings.)630 1295 y Ft(-i)f Fj(text)162 b -Fu(If)36 b(Readline)i(is)f(b)s(eing)g(used)f(to)h(read)g(the)g(line,)j -Fr(text)f Fu(is)e(placed)h(in)m(to)g(the)1110 1405 y(editing)31 -b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)630 1554 -y Ft(-n)f Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j(reading)f -Fr(nc)m(hars)j Fu(c)m(haracters)e(rather)f(than)g(w)m(aiting)1110 -1664 y(for)d(a)h(complete)h(line)f(of)g(input,)g(but)f(honors)g(a)h -(delimiter)g(if)f(few)m(er)h(than)1110 1773 y Fr(nc)m(hars)d -Fu(c)m(haracters)e(are)e(read)h(b)s(efore)f(the)g(delimiter.)630 -1923 y Ft(-N)g Fj(nchars)66 b Ft(read)39 b Fu(returns)f(after)j -(reading)e(exactly)j Fr(nc)m(hars)h Fu(c)m(haracters)f(rather)d(than) -1110 2032 y(w)m(aiting)32 b(for)f(a)g(complete)i(line)e(of)g(input,)g -(unless)f(EOF)h(is)g(encoun)m(tered)g(or)1110 2142 y -Ft(read)f Fu(times)i(out.)43 b(Delimiter)33 b(c)m(haracters)f(encoun)m -(tered)g(in)f(the)g(input)g(are)1110 2252 y(not)g(treated)h(sp)s -(ecially)f(and)f(do)h(not)g(cause)g Ft(read)e Fu(to)j(return)d(un)m -(til)i Fr(nc)m(hars)1110 2361 y Fu(c)m(haracters)26 b(are)f(read.)38 -b(The)24 b(result)g(is)h(not)f(split)h(on)f(the)h(c)m(haracters)h(in)e -Ft(IFS)p Fu(;)1110 2471 y(the)e(in)m(ten)m(t)i(is)e(that)h(the)f(v)-5 +781 y(rather)31 b(than)g(newline.)42 b(If)30 b Fr(delim)h +Fu(is)g(the)h(empt)m(y)f(string,)g Ft(read)f Fu(will)h(termi-)1110 +891 y(nate)g(a)g(line)f(when)g(it)h(reads)f(a)h(NUL)f(c)m(haracter.)630 +1044 y Ft(-e)384 b Fu(Readline)46 b(\(see)g(Chapter)e(8)h([Command)f +(Line)h(Editing],)50 b(page)45 b(107\))i(is)1110 1154 +y(used)37 b(to)i(obtain)g(the)f(line.)65 b(Readline)39 +b(uses)e(the)i(curren)m(t)f(\(or)g(default,)j(if)1110 +1263 y(line)h(editing)g(w)m(as)g(not)g(previously)f(activ)m(e\))k +(editing)d(settings,)j(but)c(uses)1110 1373 y(Readline's)31 +b(default)g(\014lename)f(completion.)630 1526 y Ft(-i)g +Fj(text)162 b Fu(If)36 b(Readline)i(is)f(b)s(eing)g(used)f(to)h(read)g +(the)g(line,)j Fr(text)f Fu(is)e(placed)h(in)m(to)g(the)1110 +1636 y(editing)31 b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)630 +1789 y Ft(-n)f Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j +(reading)f Fr(nc)m(hars)j Fu(c)m(haracters)e(rather)f(than)g(w)m +(aiting)1110 1899 y(for)d(a)h(complete)h(line)f(of)g(input,)g(but)f +(honors)g(a)h(delimiter)g(if)f(few)m(er)h(than)1110 2008 +y Fr(nc)m(hars)d Fu(c)m(haracters)e(are)e(read)h(b)s(efore)f(the)g +(delimiter.)630 2162 y Ft(-N)g Fj(nchars)66 b Ft(read)39 +b Fu(returns)f(after)j(reading)e(exactly)j Fr(nc)m(hars)h +Fu(c)m(haracters)f(rather)d(than)1110 2271 y(w)m(aiting)32 +b(for)f(a)g(complete)i(line)e(of)g(input,)g(unless)f(EOF)h(is)g(encoun) +m(tered)g(or)1110 2381 y Ft(read)f Fu(times)i(out.)43 +b(Delimiter)33 b(c)m(haracters)f(encoun)m(tered)g(in)f(the)g(input)g +(are)1110 2491 y(not)g(treated)h(sp)s(ecially)f(and)f(do)h(not)g(cause) +g Ft(read)e Fu(to)j(return)d(un)m(til)i Fr(nc)m(hars)1110 +2600 y Fu(c)m(haracters)26 b(are)f(read.)38 b(The)24 +b(result)g(is)h(not)f(split)h(on)f(the)h(c)m(haracters)h(in)e +Ft(IFS)p Fu(;)1110 2710 y(the)e(in)m(ten)m(t)i(is)e(that)h(the)f(v)-5 b(ariable)23 b(is)f(assigned)g(exactly)i(the)e(c)m(haracters)i(read) -1110 2580 y(\(with)30 b(the)h(exception)h(of)e(bac)m(kslash;)h(see)g -(the)g Ft(-r)f Fu(option)h(b)s(elo)m(w\).)630 2730 y +1110 2819 y(\(with)30 b(the)h(exception)h(of)e(bac)m(kslash;)h(see)g +(the)g Ft(-r)f Fu(option)h(b)s(elo)m(w\).)630 2973 y Ft(-p)f Fj(prompt)66 b Fu(Displa)m(y)38 b Fr(prompt)p Fu(,)g(without)e(a)h(trailing)h(newline,)h(b)s(efore)d(attempting)i(to) -1110 2839 y(read)f(an)m(y)h(input.)60 b(The)37 b(prompt)g(is)g(displa)m -(y)m(ed)h(only)f(if)g(input)g(is)g(coming)1110 2949 y(from)30 -b(a)h(terminal.)630 3098 y Ft(-r)384 b Fu(If)21 b(this)h(option)g(is)f +1110 3082 y(read)f(an)m(y)h(input.)60 b(The)37 b(prompt)g(is)g(displa)m +(y)m(ed)h(only)f(if)g(input)g(is)g(coming)1110 3192 y(from)30 +b(a)h(terminal.)630 3345 y Ft(-r)384 b Fu(If)21 b(this)h(option)g(is)f (giv)m(en,)k(bac)m(kslash)d(do)s(es)f(not)h(act)h(as)f(an)f(escap)s(e)h -(c)m(haracter.)1110 3208 y(The)30 b(bac)m(kslash)i(is)f(considered)g +(c)m(haracter.)1110 3455 y(The)30 b(bac)m(kslash)i(is)f(considered)g (to)h(b)s(e)e(part)h(of)g(the)g(line.)43 b(In)30 b(particular,)i(a)1110 -3318 y(bac)m(kslash-newline)f(pair)f(ma)m(y)h(not)g(b)s(e)f(used)f(as)i -(a)g(line)f(con)m(tin)m(uation.)630 3467 y Ft(-s)384 -b Fu(Silen)m(t)28 b(mo)s(de.)40 b(If)27 b(input)f(is)i(coming)g(from)f -(a)h(terminal,)h(c)m(haracters)g(are)f(not)1110 3577 -y(ec)m(ho)s(ed.)630 3726 y Ft(-t)i Fj(timeout)1110 3836 -y Fu(Cause)42 b Ft(read)g Fu(to)h(time)h(out)f(and)f(return)f(failure)i -(if)g(a)g(complete)h(line)f(of)1110 3945 y(input)26 b(\(or)h(a)g(sp)s -(eci\014ed)f(n)m(um)m(b)s(er)g(of)h(c)m(haracters\))h(is)f(not)g(read)g -(within)f Fr(time-)1110 4055 y(out)37 b Fu(seconds.)53 -b Fr(timeout)38 b Fu(ma)m(y)d(b)s(e)f(a)h(decimal)h(n)m(um)m(b)s(er)d -(with)h(a)h(fractional)1110 4164 y(p)s(ortion)29 b(follo)m(wing)h(the)f -(decimal)h(p)s(oin)m(t.)40 b(This)29 b(option)g(is)g(only)g(e\013ectiv) -m(e)j(if)1110 4274 y Ft(read)j Fu(is)i(reading)g(input)e(from)h(a)h -(terminal,)i(pip)s(e,)e(or)g(other)f(sp)s(ecial)i(\014le;)1110 -4384 y(it)31 b(has)g(no)g(e\013ect)h(when)e(reading)h(from)g(regular)g -(\014les.)42 b(If)30 b Ft(read)g Fu(times)h(out,)1110 -4493 y Ft(read)d Fu(sa)m(v)m(es)j(an)m(y)f(partial)h(input)d(read)i(in) -m(to)h(the)e(sp)s(eci\014ed)g(v)-5 b(ariable)31 b Fr(name)p -Fu(.)1110 4603 y(If)k Fr(timeout)j Fu(is)e(0,)h Ft(read)e -Fu(returns)f(immediately)-8 b(,)39 b(without)c(trying)h(to)g(read)1110 -4712 y(and)30 b(data.)44 b(The)30 b(exit)i(status)f(is)g(0)g(if)g +3565 y(bac)m(kslash-newline)26 b(pair)e(ma)m(y)h(not)g(then)g(b)s(e)f +(used)g(as)h(a)g(line)g(con)m(tin)m(uation.)630 3718 +y Ft(-s)384 b Fu(Silen)m(t)28 b(mo)s(de.)40 b(If)27 b(input)f(is)i +(coming)g(from)f(a)h(terminal,)h(c)m(haracters)g(are)f(not)1110 +3828 y(ec)m(ho)s(ed.)630 3981 y Ft(-t)i Fj(timeout)1110 +4091 y Fu(Cause)42 b Ft(read)g Fu(to)h(time)h(out)f(and)f(return)f +(failure)i(if)g(a)g(complete)h(line)f(of)1110 4200 y(input)26 +b(\(or)h(a)g(sp)s(eci\014ed)f(n)m(um)m(b)s(er)g(of)h(c)m(haracters\))h +(is)f(not)g(read)g(within)f Fr(time-)1110 4310 y(out)37 +b Fu(seconds.)53 b Fr(timeout)38 b Fu(ma)m(y)d(b)s(e)f(a)h(decimal)h(n) +m(um)m(b)s(er)d(with)h(a)h(fractional)1110 4419 y(p)s(ortion)29 +b(follo)m(wing)h(the)f(decimal)h(p)s(oin)m(t.)40 b(This)29 +b(option)g(is)g(only)g(e\013ectiv)m(e)j(if)1110 4529 +y Ft(read)j Fu(is)i(reading)g(input)e(from)h(a)h(terminal,)i(pip)s(e,)e +(or)g(other)f(sp)s(ecial)i(\014le;)1110 4639 y(it)31 +b(has)g(no)g(e\013ect)h(when)e(reading)h(from)g(regular)g(\014les.)42 +b(If)30 b Ft(read)g Fu(times)h(out,)1110 4748 y Ft(read)d +Fu(sa)m(v)m(es)j(an)m(y)f(partial)h(input)d(read)i(in)m(to)h(the)e(sp)s +(eci\014ed)g(v)-5 b(ariable)31 b Fr(name)p Fu(.)1110 +4858 y(If)k Fr(timeout)j Fu(is)e(0,)h Ft(read)e Fu(returns)f +(immediately)-8 b(,)39 b(without)c(trying)h(to)g(read)1110 +4967 y(and)30 b(data.)44 b(The)30 b(exit)i(status)f(is)g(0)g(if)g (input)f(is)h(a)m(v)-5 b(ailable)34 b(on)c(the)i(sp)s(eci\014ed)1110 -4822 y(\014le)g(descriptor,)g(non-zero)h(otherwise.)46 -b(The)31 b(exit)i(status)f(is)g(greater)h(than)1110 4932 -y(128)f(if)e(the)h(timeout)g(is)f(exceeded.)630 5081 +5077 y(\014le)g(descriptor,)g(non-zero)h(otherwise.)46 +b(The)31 b(exit)i(status)f(is)g(greater)h(than)1110 5187 +y(128)f(if)e(the)h(timeout)g(is)f(exceeded.)630 5340 y Ft(-u)g Fj(fd)258 b Fu(Read)31 b(input)e(from)h(\014le)g(descriptor)h -Fr(fd)p Fu(.)150 5230 y Ft(readarray)870 5340 y(readarray)45 -b([-d)i Fj(delim)p Ft(])f([-n)h Fj(count)p Ft(])f([-O)h -Fj(origin)p Ft(])f([-s)h Fj(count)p Ft(])f([-t])h([-u)g -Fj(fd)p Ft(])p eop end -%%Page: 58 64 -TeXDict begin 58 63 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(58)1061 299 y -Ft([-C)47 b Fj(callback)p Ft(])e([-c)i Fj(quantum)p Ft(])f([)p -Fj(array)p Ft(])630 433 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e -(input)g(in)m(to)j(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 -b Fr(arra)m(y)p Fu(,)i(or)630 543 y(from)30 b(\014le)g(descriptor)h -Fr(fd)i Fu(if)d(the)h Ft(-u)e Fu(option)i(is)g(supplied.)630 -677 y(A)f(synon)m(ym)g(for)g Ft(mapfile)p Fu(.)150 836 -y Ft(source)870 971 y(source)46 b Fj(filename)630 1105 +Fr(fd)p Fu(.)p eop end +%%Page: 59 65 +TeXDict begin 59 64 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(59)150 299 y Ft(readarray)870 +408 y(readarray)45 b([-d)i Fj(delim)p Ft(])f([-n)h Fj(count)p +Ft(])f([-O)h Fj(origin)p Ft(])f([-s)h Fj(count)p Ft(])1061 +518 y([-t])g([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p +Ft(])f([-c)g Fj(quantum)p Ft(])g([)p Fj(array)p Ft(])630 +650 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j +(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 b Fr(arra)m(y)p +Fu(,)i(or)630 760 y(from)30 b(\014le)g(descriptor)h Fr(fd)i +Fu(if)d(the)h Ft(-u)e Fu(option)i(is)g(supplied.)630 +892 y(A)f(synon)m(ym)g(for)g Ft(mapfile)p Fu(.)150 1047 +y Ft(source)870 1179 y(source)46 b Fj(filename)630 1312 y Fu(A)30 b(synon)m(ym)g(for)g Ft(.)g Fu(\(see)i(Section)f(4.1)g -([Bourne)g(Shell)f(Builtins],)h(page)g(42\).)150 1264 -y Ft(type)870 1398 y(type)47 b([-afptP])e([)p Fj(name)i -Ft(...)o(])630 1533 y Fu(F)-8 b(or)42 b(eac)m(h)g Fr(name)p +([Bourne)g(Shell)f(Builtins],)h(page)g(43\).)150 1467 +y Ft(type)870 1599 y(type)47 b([-afptP])e([)p Fj(name)i +Ft(...)o(])630 1731 y Fu(F)-8 b(or)42 b(eac)m(h)g Fr(name)p Fu(,)i(indicate)e(ho)m(w)g(it)f(w)m(ould)g(b)s(e)g(in)m(terpreted)g(if) -g(used)f(as)i(a)f(command)630 1642 y(name.)630 1777 y(If)g(the)g +g(used)f(as)i(a)f(command)630 1841 y(name.)630 1973 y(If)g(the)g Ft(-t)g Fu(option)h(is)f(used,)j Ft(type)c Fu(prin)m(ts)h(a)h(single)g (w)m(ord)f(whic)m(h)g(is)g(one)h(of)g(`)p Ft(alias)p -Fu(',)630 1886 y(`)p Ft(function)p Fu(',)32 b(`)p Ft(builtin)p +Fu(',)630 2083 y(`)p Ft(function)p Fu(',)32 b(`)p Ft(builtin)p Fu(',)g(`)p Ft(file)p Fu(')g(or)h(`)p Ft(keyword)p Fu(',)f(if)h Fr(name)38 b Fu(is)33 b(an)f(alias,)j(shell)e(function,)630 -1996 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h(reserv)m(ed)g +2192 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h(reserv)m(ed)g (w)m(ord,)h(resp)s(ectiv)m(ely)-8 b(.)55 b(If)34 b(the)h -Fr(name)40 b Fu(is)35 b(not)630 2105 y(found,)29 b(then)h(nothing)h(is) +Fr(name)40 b Fu(is)35 b(not)630 2302 y(found,)29 b(then)h(nothing)h(is) f(prin)m(ted,)g(and)g Ft(type)f Fu(returns)g(a)i(failure)g(status.)630 -2240 y(If)25 b(the)g Ft(-p)g Fu(option)h(is)f(used,)h +2434 y(If)25 b(the)g Ft(-p)g Fu(option)h(is)f(used,)h Ft(type)e Fu(either)h(returns)g(the)g(name)g(of)h(the)f(disk)g(\014le)g -(that)h(w)m(ould)630 2349 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g +(that)h(w)m(ould)630 2544 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g Ft(-t)g Fu(w)m(ould)g(not)h(return)e(`)p Ft(file)p Fu('.)630 -2484 y(The)h Ft(-P)g Fu(option)h(forces)g(a)g(path)f(searc)m(h)h(for)g +2676 y(The)h Ft(-P)g Fu(option)h(forces)g(a)g(path)f(searc)m(h)h(for)g (eac)m(h)g Fr(name)p Fu(,)g(ev)m(en)g(if)g Ft(-t)f Fu(w)m(ould)g(not)h -(return)630 2593 y(`)p Ft(file)p Fu('.)630 2728 y(If)f(a)g(command)g +(return)630 2785 y(`)p Ft(file)p Fu('.)630 2918 y(If)f(a)g(command)g (is)g(hashed,)f Ft(-p)h Fu(and)f Ft(-P)g Fu(prin)m(t)h(the)g(hashed)f -(v)-5 b(alue,)31 b(whic)m(h)f(is)g(not)g(neces-)630 2837 +(v)-5 b(alue,)31 b(whic)m(h)f(is)g(not)g(neces-)630 3027 y(sarily)h(the)f(\014le)h(that)g(app)s(ears)e(\014rst)h(in)g -Ft($PATH)p Fu(.)630 2971 y(If)22 b(the)i Ft(-a)e Fu(option)h(is)g +Ft($PATH)p Fu(.)630 3160 y(If)22 b(the)i Ft(-a)e Fu(option)h(is)g (used,)h Ft(type)e Fu(returns)f(all)j(of)f(the)g(places)h(that)f(con)m -(tain)i(an)d(executable)630 3081 y(named)32 b Fr(\014le)p +(tain)i(an)d(executable)630 3269 y(named)32 b Fr(\014le)p Fu(.)49 b(This)32 b(includes)h(aliases)h(and)e(functions,)i(if)f(and)f -(only)h(if)g(the)g Ft(-p)f Fu(option)i(is)630 3191 y(not)d(also)g -(used.)630 3325 y(If)f(the)g Ft(-f)g Fu(option)g(is)h(used,)e +(only)h(if)g(the)g Ft(-p)f Fu(option)i(is)630 3379 y(not)d(also)g +(used.)630 3511 y(If)f(the)g Ft(-f)g Fu(option)g(is)h(used,)e Ft(type)g Fu(do)s(es)h(not)h(attempt)g(to)g(\014nd)d(shell)j -(functions,)f(as)g(with)630 3435 y(the)h Ft(command)d -Fu(builtin.)630 3569 y(The)j(return)f(status)h(is)g(zero)h(if)f(all)h +(functions,)f(as)g(with)630 3621 y(the)h Ft(command)d +Fu(builtin.)630 3753 y(The)j(return)f(status)h(is)g(zero)h(if)f(all)h (of)f(the)h Fr(names)i Fu(are)e(found,)e(non-zero)i(if)f(an)m(y)g(are)h -(not)630 3678 y(found.)150 3838 y Ft(typeset)870 3972 +(not)630 3862 y(found.)150 4017 y Ft(typeset)870 4150 y(typeset)46 b([-afFgrxilnrtux])d([-p])k([)p Fj(name)p -Ft([=)p Fj(value)p Ft(])d(...)o(])630 4106 y Fu(The)31 +Ft([=)p Fj(value)p Ft(])d(...)o(])630 4282 y Fu(The)31 b Ft(typeset)e Fu(command)i(is)g(supplied)f(for)h(compatibilit)m(y)i -(with)e(the)g(Korn)f(shell.)44 b(It)31 b(is)630 4216 +(with)e(the)g(Korn)f(shell.)44 b(It)31 b(is)630 4391 y(a)g(synon)m(ym)f(for)g(the)g Ft(declare)f Fu(builtin)h(command.)150 -4375 y Ft(ulimit)870 4509 y(ulimit)46 b([-HSabcdefiklmnpqrstuvxPT)o(])c -([)p Fj(limit)p Ft(])630 4644 y(ulimit)25 b Fu(pro)m(vides)h(con)m +4546 y Ft(ulimit)870 4679 y(ulimit)46 b([-HSabcdefiklmnpqrstuvxPT)o(])c +([)p Fj(limit)p Ft(])630 4811 y(ulimit)25 b Fu(pro)m(vides)h(con)m (trol)i(o)m(v)m(er)g(the)f(resources)f(a)m(v)-5 b(ailable)29 -b(to)e(pro)s(cesses)f(started)h(b)m(y)g(the)630 4753 +b(to)e(pro)s(cesses)f(started)h(b)m(y)g(the)630 4921 y(shell,)i(on)f(systems)g(that)h(allo)m(w)h(suc)m(h)e(con)m(trol.)41 b(If)28 b(an)g(option)h(is)f(giv)m(en,)i(it)e(is)h(in)m(terpreted)630 -4863 y(as)i(follo)m(ws:)630 5022 y Ft(-S)384 b Fu(Change)30 +5030 y(as)i(follo)m(ws:)630 5185 y Ft(-S)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the)g(soft)h(limit)g(asso)s(ciated)h(with)e(a)h -(resource.)630 5181 y Ft(-H)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the) -g(hard)g(limit)h(asso)s(ciated)h(with)e(a)h(resource.)630 -5340 y Ft(-a)384 b Fu(All)31 b(curren)m(t)f(limits)h(are)g(rep)s -(orted.)p eop end -%%Page: 59 65 -TeXDict begin 59 64 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(59)630 299 y Ft(-b)384 -b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m(et)i(bu\013er)e(size.)630 -462 y Ft(-c)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g(core)g(\014les)f -(created.)630 625 y Ft(-d)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g(a) -g(pro)s(cess's)f(data)h(segmen)m(t.)630 788 y Ft(-e)384 -b Fu(The)30 b(maxim)m(um)g(sc)m(heduling)h(priorit)m(y)f(\()p -Ft(")p Fu(nice)p Ft(")p Fu(\).)630 951 y Ft(-f)384 b -Fu(The)30 b(maxim)m(um)g(size)h(of)g(\014les)f(written)h(b)m(y)f(the)g -(shell)h(and)f(its)h(c)m(hildren.)630 1114 y Ft(-i)384 +(resource.)630 5340 y Ft(-H)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the) +g(hard)g(limit)h(asso)s(ciated)h(with)e(a)h(resource.)p +eop end +%%Page: 60 66 +TeXDict begin 60 65 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(60)630 299 y Ft(-a)384 +b Fu(All)31 b(curren)m(t)f(limits)h(are)g(rep)s(orted.)630 +454 y Ft(-b)384 b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m(et)i(bu\013er)e +(size.)630 610 y Ft(-c)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g(core) +g(\014les)f(created.)630 765 y Ft(-d)384 b Fu(The)30 +b(maxim)m(um)g(size)h(of)g(a)g(pro)s(cess's)f(data)h(segmen)m(t.)630 +921 y Ft(-e)384 b Fu(The)30 b(maxim)m(um)g(sc)m(heduling)h(priorit)m(y) +f(\()p Ft(")p Fu(nice)p Ft(")p Fu(\).)630 1076 y Ft(-f)384 +b Fu(The)30 b(maxim)m(um)g(size)h(of)g(\014les)f(written)h(b)m(y)f(the) +g(shell)h(and)f(its)h(c)m(hildren.)630 1232 y Ft(-i)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(p)s(ending)e -(signals.)630 1277 y Ft(-k)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s +(signals.)630 1387 y Ft(-k)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s (er)f(of)i(kqueues)f(that)h(ma)m(y)g(b)s(e)e(allo)s(cated.)630 -1440 y Ft(-l)384 b Fu(The)30 b(maxim)m(um)g(size)h(that)g(ma)m(y)g(b)s -(e)f(lo)s(c)m(k)m(ed)i(in)m(to)f(memory)-8 b(.)630 1603 +1543 y Ft(-l)384 b Fu(The)30 b(maxim)m(um)g(size)h(that)g(ma)m(y)g(b)s +(e)f(lo)s(c)m(k)m(ed)i(in)m(to)f(memory)-8 b(.)630 1698 y Ft(-m)384 b Fu(The)36 b(maxim)m(um)g(residen)m(t)h(set)g(size)g -(\(man)m(y)g(systems)f(do)h(not)f(honor)g(this)1110 1713 -y(limit\).)630 1876 y Ft(-n)384 b Fu(The)38 b(maxim)m(um)h(n)m(um)m(b)s +(\(man)m(y)g(systems)f(do)h(not)f(honor)g(this)1110 1808 +y(limit\).)630 1963 y Ft(-n)384 b Fu(The)38 b(maxim)m(um)h(n)m(um)m(b)s (er)e(of)i(op)s(en)f(\014le)h(descriptors)g(\(most)g(systems)g(do)1110 -1985 y(not)31 b(allo)m(w)g(this)g(v)-5 b(alue)31 b(to)g(b)s(e)e(set\).) -630 2149 y Ft(-p)384 b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630 -2312 y Ft(-q)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m -(ytes)g(in)f(POSIX)f(message)j(queues.)630 2475 y Ft(-r)384 +2073 y(not)31 b(allo)m(w)g(this)g(v)-5 b(alue)31 b(to)g(b)s(e)e(set\).) +630 2228 y Ft(-p)384 b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630 +2384 y Ft(-q)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m +(ytes)g(in)f(POSIX)f(message)j(queues.)630 2539 y Ft(-r)384 b Fu(The)30 b(maxim)m(um)g(real-time)i(sc)m(heduling)f(priorit)m(y)-8 -b(.)630 2638 y Ft(-s)384 b Fu(The)30 b(maxim)m(um)g(stac)m(k)i(size.) -630 2801 y Ft(-t)384 b Fu(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g -(time)h(in)f(seconds.)630 2964 y Ft(-u)384 b Fu(The)30 +b(.)630 2695 y Ft(-s)384 b Fu(The)30 b(maxim)m(um)g(stac)m(k)i(size.) +630 2850 y Ft(-t)384 b Fu(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g +(time)h(in)f(seconds.)630 3005 y Ft(-u)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pro)s(cesses)f(a)m(v)-5 -b(ailable)33 b(to)e(a)f(single)i(user.)630 3127 y Ft(-v)384 +b(ailable)33 b(to)e(a)f(single)i(user.)630 3161 y Ft(-v)384 b Fu(The)41 b(maxim)m(um)h(amoun)m(t)g(of)h(virtual)f(memory)g(a)m(v)-5 -b(ailable)44 b(to)e(the)g(shell,)1110 3236 y(and,)30 +b(ailable)44 b(to)e(the)g(shell,)1110 3271 y(and,)30 b(on)g(some)h(systems,)g(to)g(its)g(c)m(hildren.)630 -3399 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i -(\014le)f(lo)s(c)m(ks.)630 3562 y Ft(-P)384 b Fu(The)30 +3426 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i +(\014le)f(lo)s(c)m(ks.)630 3581 y Ft(-P)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pseudoterminals.)630 -3726 y Ft(-T)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i -(threads.)630 3889 y(If)36 b Fr(limit)k Fu(is)c(giv)m(en,)k(and)c(the)h +3737 y Ft(-T)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i +(threads.)630 3892 y(If)36 b Fr(limit)k Fu(is)c(giv)m(en,)k(and)c(the)h Ft(-a)f Fu(option)h(is)f(not)h(used,)h Fr(limit)h Fu(is)e(the)g(new)f -(v)-5 b(alue)37 b(of)g(the)630 3998 y(sp)s(eci\014ed)c(resource.)51 +(v)-5 b(alue)37 b(of)g(the)630 4002 y(sp)s(eci\014ed)c(resource.)51 b(The)34 b(sp)s(ecial)g Fr(limit)j Fu(v)-5 b(alues)34 b Ft(hard)p Fu(,)g Ft(soft)p Fu(,)g(and)f Ft(unlimited)e -Fu(stand)630 4108 y(for)h(the)g(curren)m(t)g(hard)f(limit,)i(the)g +Fu(stand)630 4112 y(for)h(the)g(curren)m(t)g(hard)f(limit,)i(the)g (curren)m(t)f(soft)g(limit,)h(and)f(no)g(limit,)h(resp)s(ectiv)m(ely)-8 -b(.)48 b(A)630 4217 y(hard)37 b(limit)h(cannot)h(b)s(e)e(increased)h(b) +b(.)48 b(A)630 4221 y(hard)37 b(limit)h(cannot)h(b)s(e)e(increased)h(b) m(y)f(a)h(non-ro)s(ot)g(user)f(once)i(it)f(is)g(set;)k(a)c(soft)g -(limit)630 4327 y(ma)m(y)j(b)s(e)e(increased)i(up)e(to)h(the)h(v)-5 +(limit)630 4331 y(ma)m(y)j(b)s(e)e(increased)i(up)e(to)h(the)h(v)-5 b(alue)40 b(of)g(the)h(hard)e(limit.)70 b(Otherwise,)43 -b(the)d(curren)m(t)630 4437 y(v)-5 b(alue)29 b(of)h(the)f(soft)g(limit) +b(the)d(curren)m(t)630 4440 y(v)-5 b(alue)29 b(of)h(the)f(soft)g(limit) h(for)e(the)h(sp)s(eci\014ed)g(resource)g(is)g(prin)m(ted,)g(unless)f -(the)h Ft(-H)f Fu(option)630 4546 y(is)h(supplied.)39 +(the)h Ft(-H)f Fu(option)630 4550 y(is)h(supplied.)39 b(When)29 b(setting)h(new)f(limits,)h(if)f(neither)g Ft(-H)g Fu(nor)f Ft(-S)h Fu(is)g(supplied,)f(b)s(oth)h(the)630 -4656 y(hard)i(and)h(soft)h(limits)g(are)f(set.)48 b(If)31 +4660 y(hard)i(and)h(soft)h(limits)g(are)f(set.)48 b(If)31 b(no)i(option)f(is)h(giv)m(en,)h(then)e Ft(-f)g Fu(is)g(assumed.)46 -b(V)-8 b(alues)630 4765 y(are)31 b(in)f(1024-b)m(yte)j(incremen)m(ts,)e +b(V)-8 b(alues)630 4769 y(are)31 b(in)f(1024-b)m(yte)j(incremen)m(ts,)e (except)g(for)f Ft(-t)p Fu(,)g(whic)m(h)g(is)g(in)g(seconds;)h -Ft(-p)p Fu(,)f(whic)m(h)g(is)g(in)630 4875 y(units)h(of)g(512-b)m(yte)j +Ft(-p)p Fu(,)f(whic)m(h)g(is)g(in)630 4879 y(units)h(of)g(512-b)m(yte)j (blo)s(c)m(ks;)e Ft(-P)p Fu(,)f Ft(-T)p Fu(,)h Ft(-b)p Fu(,)f Ft(-k)p Fu(,)g Ft(-n)g Fu(and)f Ft(-u)p Fu(,)h(whic)m(h)h(are)f -(unscaled)g(v)-5 b(alues;)630 4984 y(and,)31 b(when)f(in)g +(unscaled)g(v)-5 b(alues;)630 4988 y(and,)31 b(when)f(in)g Fm(posix)g Fu(Mo)s(de)h(\(see)h(Section)g(6.11)g([Bash)g(POSIX)e(Mo)s -(de],)h(page)h(96\),)h Ft(-c)630 5094 y Fu(and)d Ft(-f)p +(de],)h(page)h(99\),)h Ft(-c)630 5098 y Fu(and)d Ft(-f)p Fu(,)g(whic)m(h)g(are)h(in)f(512-b)m(yte)i(incremen)m(ts.)630 5230 y(The)i(return)g(status)h(is)f(zero)i(unless)e(an)g(in)m(v)-5 b(alid)36 b(option)f(or)f(argumen)m(t)i(is)e(supplied,)h(or)630 5340 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f(limit.)p eop end -%%Page: 60 66 -TeXDict begin 60 65 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(60)150 299 y Ft(unalias)870 +%%Page: 61 67 +TeXDict begin 61 66 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(61)150 299 y Ft(unalias)870 428 y(unalias)46 b([-a])g([)p Fj(name)h Ft(...)g(])630 558 y Fu(Remo)m(v)m(e)42 b(eac)m(h)f Fr(name)k Fu(from)39 b(the)i(list)f(of)g(aliases.)71 b(If)40 b Ft(-a)f Fu(is)h(supplied,)h (all)g(aliases)h(are)630 668 y(remo)m(v)m(ed.)g(Aliases)31 -b(are)g(describ)s(ed)e(in)h(Section)i(6.6)f([Aliases],)h(page)f(90.)150 +b(are)g(describ)s(ed)e(in)h(Section)i(6.6)f([Aliases],)h(page)f(93.)150 898 y Fs(4.3)68 b(Mo)t(difying)45 b(Shell)g(Beha)l(vior)150 1118 y Fk(4.3.1)63 b(The)41 b(Set)g(Builtin)150 1265 y Fu(This)35 b(builtin)h(is)g(so)g(complicated)i(that)f(it)f(deserv)m @@ -12524,12 +12693,12 @@ Ft(-e)f Fu(w)m(as)i(b)s(eing)e(ignored,)j(the)e(shell)g(do)s(es)g(not) 5011 y(This)f(option)h(applies)f(to)h(the)g(shell)g(en)m(vironmen)m(t)g (and)f(eac)m(h)h(subshell)f(en-)1110 5121 y(vironmen)m(t)j(separately)i (\(see)f(Section)g(3.7.3)h([Command)d(Execution)i(En-)1110 -5230 y(vironmen)m(t],)i(page)f(37\),)i(and)d(ma)m(y)h(cause)f +5230 y(vironmen)m(t],)i(page)f(39\),)i(and)d(ma)m(y)h(cause)f (subshells)g(to)h(exit)g(b)s(efore)f(exe-)1110 5340 y(cuting)d(all)g (the)g(commands)f(in)g(the)g(subshell.)p eop end -%%Page: 61 67 -TeXDict begin 61 66 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(61)1110 299 y(If)41 +%%Page: 62 68 +TeXDict begin 62 67 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(62)1110 299 y(If)41 b(a)g(comp)s(ound)e(command)i(or)g(shell)g(function)g(executes)h(in)f (a)g(con)m(text)1110 408 y(where)31 b Ft(-e)g Fu(is)g(b)s(eing)g (ignored,)h(none)f(of)h(the)f(commands)g(executed)h(within)1110 @@ -12552,7 +12721,7 @@ Ft(-k)384 b Fu(All)34 b(argumen)m(ts)g(in)f(the)h(form)f(of)g 1737 y(the)k(en)m(vironmen)m(t)g(for)g(a)g(command,)h(not)f(just)f (those)i(that)f(precede)g(the)1110 1847 y(command)30 b(name.)630 1998 y Ft(-m)384 b Fu(Job)28 b(con)m(trol)h(is)f(enabled)g -(\(see)h(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(100\).)41 +(\(see)h(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(103\).)41 b(All)1110 2107 y(pro)s(cesses)27 b(run)f(in)i(a)g(separate)g(pro)s (cess)f(group.)40 b(When)27 b(a)h(bac)m(kground)f(job)1110 2217 y(completes,)32 b(the)f(shell)f(prin)m(ts)g(a)h(line)f(con)m @@ -12568,7 +12737,7 @@ Fu(.)1110 3258 y Ft(braceexpand)1590 3367 y Fu(Same)f(as)h Ft(-B)p Fu(.)1110 3518 y Ft(emacs)240 b Fu(Use)25 b(an)f Ft(emacs)p Fu(-st)m(yle)h(line)f(editing)h(in)m(terface)h(\(see)g (Chapter)e(8)1590 3628 y([Command)33 b(Line)g(Editing],)h(page)h -(104\).)51 b(This)32 b(also)i(a\013ects)1590 3737 y(the)d(editing)g(in) +(107\).)51 b(This)32 b(also)i(a\013ects)1590 3737 y(the)d(editing)g(in) m(terface)h(used)d(for)h Ft(read)f(-e)p Fu(.)1110 3888 y Ft(errexit)144 b Fu(Same)30 b(as)h Ft(-e)p Fu(.)1110 4039 y Ft(errtrace)96 b Fu(Same)30 b(as)h Ft(-E)p Fu(.)1110 @@ -12577,14 +12746,14 @@ Fu(.)1110 4450 y Ft(hashall)144 b Fu(Same)30 b(as)h Ft(-h)p Fu(.)1110 4600 y Ft(histexpand)1590 4710 y Fu(Same)f(as)h Ft(-H)p Fu(.)1110 4861 y Ft(history)144 b Fu(Enable)39 b(command)g(history)-8 b(,)42 b(as)d(describ)s(ed)f(in)h(Section)h(9.1) -1590 4970 y([Bash)d(History)g(F)-8 b(acilities],)41 b(page)c(137.)60 +1590 4970 y([Bash)d(History)g(F)-8 b(acilities],)41 b(page)c(141.)60 b(This)36 b(option)h(is)f(on)1590 5080 y(b)m(y)30 b(default)h(in)f(in)m (teractiv)m(e)j(shells.)1110 5230 y Ft(ignoreeof)1590 5340 y Fu(An)d(in)m(teractiv)m(e)j(shell)e(will)g(not)f(exit)h(up)s(on) e(reading)i(EOF.)p eop end -%%Page: 62 68 -TeXDict begin 62 67 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(62)1110 299 y +%%Page: 63 69 +TeXDict begin 63 68 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(63)1110 299 y Ft(keyword)144 b Fu(Same)30 b(as)h Ft(-k)p Fu(.)1110 457 y Ft(monitor)144 b Fu(Same)30 b(as)h Ft(-m)p Fu(.)1110 615 y Ft(noclobber)1590 725 y Fu(Same)f(as)h Ft(-C)p @@ -12605,7 +12774,7 @@ b(of)1590 2101 y(the)33 b(last)h(\(righ)m(tmost\))h(command)e(to)h (vior)h(of)f(Bash)g(where)g(the)g(default)h(op)s(era-)1590 2588 y(tion)25 b(di\013ers)f(from)g(the)h Fm(posix)f Fu(standard)f(to)i(matc)m(h)h(the)f(stan-)1590 2698 y(dard)32 -b(\(see)i(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s(de],)j(page)e(96\).) +b(\(see)i(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s(de],)j(page)e(99\).) 1590 2807 y(This)k(is)g(in)m(tended)g(to)h(mak)m(e)g(Bash)g(b)s(eha)m (v)m(e)g(as)g(a)f(strict)h(su-)1590 2917 y(p)s(erset)30 b(of)h(that)f(standard.)1110 3075 y Ft(privileged)1590 @@ -12640,9 +12809,9 @@ b(and)e(parameters)h(other)h(than)e(the)h(sp)s(ecial)h(param-)1110 5340 y(eters)35 b(`)p Ft(@)p Fu(')f(or)g(`)p Ft(*)p Fu(')h(as)f(an)g (error)g(when)f(p)s(erforming)g(parameter)i(expansion.)p eop end -%%Page: 63 69 -TeXDict begin 63 68 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(63)1110 299 y(An)28 +%%Page: 64 70 +TeXDict begin 64 69 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(64)1110 299 y(An)28 b(error)h(message)g(will)g(b)s(e)f(written)h(to)h(the)e(standard)g (error,)h(and)f(a)h(non-)1110 408 y(in)m(teractiv)m(e)k(shell)e(will)g (exit.)630 568 y Ft(-v)384 b Fu(Prin)m(t)30 b(shell)h(input)e(lines)i @@ -12658,7 +12827,7 @@ b(resultan)m(t)h(v)-5 b(alue)24 b(is)g(prin)m(ted)g(b)s(efore)f(the)h (command)g(and)f(its)i(expanded)1110 1275 y(argumen)m(ts.)630 1435 y Ft(-B)384 b Fu(The)41 b(shell)g(will)g(p)s(erform)f(brace)h (expansion)g(\(see)h(Section)g(3.5.1)g([Brace)1110 1544 -y(Expansion],)30 b(page)h(21\).)42 b(This)30 b(option)h(is)f(on)g(b)m +y(Expansion],)30 b(page)h(23\).)42 b(This)30 b(option)h(is)f(on)g(b)m (y)h(default.)630 1704 y Ft(-C)384 b Fu(Prev)m(en)m(t)25 b(output)e(redirection)h(using)f(`)p Ft(>)p Fu(',)i(`)p Ft(>&)p Fu(',)g(and)e(`)p Ft(<>)p Fu(')g(from)h(o)m(v)m(erwriting)1110 @@ -12670,7 +12839,7 @@ b(and)e(commands)g(executed)i(in)f(a)g(subshell)f(en)m(vironmen)m(t.) (in)g(suc)m(h)g(cases.)630 2351 y Ft(-H)384 b Fu(Enable)38 b(`)p Ft(!)p Fu(')h(st)m(yle)h(history)e(substitution)g(\(see)h (Section)h(9.3)f([History)g(In-)1110 2461 y(teraction],)g(page)d -(139\).)57 b(This)34 b(option)i(is)f(on)g(b)m(y)h(default)f(for)g(in)m +(143\).)57 b(This)34 b(option)i(is)f(on)g(b)m(y)h(default)f(for)g(in)m (teractiv)m(e)1110 2570 y(shells.)630 2730 y Ft(-P)384 b Fu(If)39 b(set,)j(do)d(not)g(resolv)m(e)i(sym)m(b)s(olic)e(links)g (when)f(p)s(erforming)g(commands)1110 2839 y(suc)m(h)29 @@ -12699,510 +12868,559 @@ b(The)32 b Ft(DEBUG)g Fu(and)g Ft(RETURN)f Fu(traps)h(are)i(normally)f i(parameters)f(are)f(set)h(to)h(the)1110 5340 y Fr(argumen)m(ts)p Fu(,)f(ev)m(en)g(if)f(some)h(of)g(them)f(b)s(egin)g(with)g(a)h(`)p Ft(-)p Fu('.)p eop end -%%Page: 64 70 -TeXDict begin 64 69 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(64)630 299 y Ft(-)432 +%%Page: 65 71 +TeXDict begin 65 70 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(65)630 299 y Ft(-)432 b Fu(Signal)45 b(the)g(end)f(of)h(options,)k(cause)c(all)h(remaining)e Fr(argumen)m(ts)49 b Fu(to)d(b)s(e)1110 408 y(assigned)33 b(to)h(the)g(p)s(ositional)g(parameters.)49 b(The)33 b Ft(-x)g Fu(and)f Ft(-v)h Fu(options)h(are)1110 518 y(turned)k(o\013.)68 b(If)38 b(there)i(are)f(no)g(argumen)m(ts,)j(the)e (p)s(ositional)g(parameters)1110 628 y(remain)30 b(unc)m(hanged.)630 -801 y(Using)d(`)p Ft(+)p Fu(')h(rather)f(than)g(`)p Ft(-)p +775 y(Using)d(`)p Ft(+)p Fu(')h(rather)f(than)g(`)p Ft(-)p Fu(')g(causes)h(these)f(options)h(to)g(b)s(e)e(turned)g(o\013.)40 -b(The)27 b(options)h(can)630 910 y(also)36 b(b)s(e)f(used)f(up)s(on)g +b(The)27 b(options)h(can)630 884 y(also)36 b(b)s(e)f(used)f(up)s(on)g (in)m(v)m(o)s(cation)j(of)e(the)g(shell.)56 b(The)34 b(curren)m(t)h(set)h(of)f(options)h(ma)m(y)g(b)s(e)630 -1020 y(found)29 b(in)h Ft($-)p Fu(.)630 1161 y(The)43 +994 y(found)29 b(in)h Ft($-)p Fu(.)630 1122 y(The)43 b(remaining)h(N)f Fr(argumen)m(ts)48 b Fu(are)c(p)s(ositional)g -(parameters)g(and)f(are)h(assigned,)j(in)630 1271 y(order,)30 +(parameters)g(and)f(are)h(assigned,)j(in)630 1232 y(order,)30 b(to)h Ft($1)p Fu(,)f Ft($2)p Fu(,)36 b(.)22 b(.)g(.)42 b Ft($N)p Fu(.)e(The)30 b(sp)s(ecial)h(parameter)g Ft(#)f -Fu(is)g(set)h(to)g(N.)630 1412 y(The)f(return)f(status)i(is)f(alw)m(a)m +Fu(is)g(set)h(to)g(N.)630 1360 y(The)f(return)f(status)i(is)f(alw)m(a)m (ys)i(zero)f(unless)f(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f -(supplied.)150 1625 y Fk(4.3.2)63 b(The)41 b(Shopt)h(Builtin)150 -1772 y Fu(This)30 b(builtin)g(allo)m(ws)h(y)m(ou)g(to)g(c)m(hange)h +(supplied.)150 1548 y Fk(4.3.2)63 b(The)41 b(Shopt)h(Builtin)150 +1695 y Fu(This)30 b(builtin)g(allo)m(ws)h(y)m(ou)g(to)g(c)m(hange)h (additional)f(shell)f(optional)i(b)s(eha)m(vior.)150 -1952 y Ft(shopt)870 2093 y(shopt)46 b([-pqsu])g([-o])h([)p -Fj(optname)e Ft(...])630 2234 y Fu(T)-8 b(oggle)37 b(the)e(v)-5 +1842 y Ft(shopt)870 1970 y(shopt)46 b([-pqsu])g([-o])h([)p +Fj(optname)e Ft(...])630 2099 y Fu(T)-8 b(oggle)37 b(the)e(v)-5 b(alues)35 b(of)g(settings)h(con)m(trolling)g(optional)g(shell)f(b)s -(eha)m(vior.)55 b(The)34 b(settings)630 2344 y(can)24 +(eha)m(vior.)55 b(The)34 b(settings)630 2208 y(can)24 b(b)s(e)g(either)h(those)f(listed)h(b)s(elo)m(w,)h(or,)f(if)g(the)f Ft(-o)f Fu(option)i(is)f(used,)h(those)g(a)m(v)-5 b(ailable)26 -b(with)630 2453 y(the)k Ft(-o)f Fu(option)i(to)f(the)g +b(with)630 2318 y(the)k Ft(-o)f Fu(option)i(to)f(the)g Ft(set)f Fu(builtin)h(command)f(\(see)i(Section)g(4.3.1)g([The)f(Set)g -(Builtin],)630 2563 y(page)i(60\).)45 b(With)32 b(no)f(options,)h(or)g +(Builtin],)630 2427 y(page)i(61\).)45 b(With)32 b(no)f(options,)h(or)g (with)f(the)g Ft(-p)g Fu(option,)h(a)g(list)g(of)f(all)i(settable)g -(options)630 2673 y(is)j(displa)m(y)m(ed,)h(with)f(an)f(indication)i -(of)e(whether)g(or)h(not)g(eac)m(h)h(is)e(set.)57 b(The)35 -b Ft(-p)g Fu(option)630 2782 y(causes)i(output)e(to)i(b)s(e)e(displa)m -(y)m(ed)i(in)f(a)g(form)g(that)h(ma)m(y)f(b)s(e)g(reused)f(as)h(input.) -57 b(Other)630 2892 y(options)31 b(ha)m(v)m(e)g(the)g(follo)m(wing)h -(meanings:)630 3065 y Ft(-s)384 b Fu(Enable)30 b(\(set\))i(eac)m(h)f -Fr(optname)p Fu(.)630 3238 y Ft(-u)384 b Fu(Disable)31 -b(\(unset\))g(eac)m(h)h Fr(optname)p Fu(.)630 3411 y +(options)630 2537 y(is)g(displa)m(y)m(ed,)i(with)e(an)g(indication)h +(of)g(whether)e(or)h(not)h(eac)m(h)g(is)g(set;)h(if)e +Fr(optnames)38 b Fu(are)630 2647 y(supplied,)25 b(the)g(output)g(is)g +(restricted)g(to)h(those)g(options.)39 b(The)24 b Ft(-p)h +Fu(option)g(causes)g(output)630 2756 y(to)30 b(b)s(e)f(displa)m(y)m(ed) +g(in)g(a)h(form)f(that)g(ma)m(y)h(b)s(e)f(reused)f(as)i(input.)39 +b(Other)29 b(options)g(ha)m(v)m(e)i(the)630 2866 y(follo)m(wing)h +(meanings:)630 3013 y Ft(-s)384 b Fu(Enable)30 b(\(set\))i(eac)m(h)f +Fr(optname)p Fu(.)630 3160 y Ft(-u)384 b Fu(Disable)31 +b(\(unset\))g(eac)m(h)h Fr(optname)p Fu(.)630 3307 y Ft(-q)384 b Fu(Suppresses)28 b(normal)h(output;)h(the)g(return)e -(status)i(indicates)h(whether)e(the)1110 3520 y Fr(optname)37 +(status)i(indicates)h(whether)e(the)1110 3417 y Fr(optname)37 b Fu(is)31 b(set)h(or)f(unset.)43 b(If)31 b(m)m(ultiple)h Fr(optname)37 b Fu(argumen)m(ts)31 b(are)h(giv)m(en)1110 -3630 y(with)d Ft(-q)p Fu(,)g(the)g(return)f(status)h(is)g(zero)h(if)f -(all)h Fr(optnames)j Fu(are)d(enabled;)f(non-)1110 3740 -y(zero)i(otherwise.)630 3913 y Ft(-o)384 b Fu(Restricts)22 +3527 y(with)d Ft(-q)p Fu(,)g(the)g(return)f(status)h(is)g(zero)h(if)f +(all)h Fr(optnames)j Fu(are)d(enabled;)f(non-)1110 3636 +y(zero)i(otherwise.)630 3784 y Ft(-o)384 b Fu(Restricts)22 b(the)f(v)-5 b(alues)22 b(of)f Fr(optname)27 b Fu(to)22 b(b)s(e)e(those)i(de\014ned)e(for)h(the)g Ft(-o)f Fu(option)1110 -4022 y(to)31 b(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)h(4.3.1)g -([The)e(Set)g(Builtin],)i(page)f(60\).)630 4195 y(If)e(either)i +3893 y(to)31 b(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)h(4.3.1)g +([The)e(Set)g(Builtin],)i(page)f(61\).)630 4040 y(If)e(either)i Ft(-s)e Fu(or)h Ft(-u)f Fu(is)h(used)f(with)g(no)h Fr(optname)35 b Fu(argumen)m(ts,)c Ft(shopt)d Fu(sho)m(ws)h(only)h(those)630 -4305 y(options)h(whic)m(h)f(are)h(set)f(or)h(unset,)f(resp)s(ectiv)m -(ely)-8 b(.)630 4446 y(Unless)30 b(otherwise)h(noted,)g(the)g +4150 y(options)h(whic)m(h)f(are)h(set)f(or)h(unset,)f(resp)s(ectiv)m +(ely)-8 b(.)630 4278 y(Unless)30 b(otherwise)h(noted,)g(the)g Ft(shopt)d Fu(options)j(are)g(disabled)f(\(o\013)7 b(\))32 -b(b)m(y)e(default.)630 4587 y(The)d(return)f(status)i(when)f(listing)h +b(b)m(y)e(default.)630 4407 y(The)d(return)f(status)i(when)f(listing)h (options)g(is)f(zero)i(if)e(all)i Fr(optnames)i Fu(are)d(enabled,)g -(non-)630 4697 y(zero)40 b(otherwise.)66 b(When)39 b(setting)h(or)f +(non-)630 4516 y(zero)40 b(otherwise.)66 b(When)39 b(setting)h(or)f (unsetting)g(options,)i(the)e(return)f(status)h(is)g(zero)630 -4806 y(unless)30 b(an)g Fr(optname)36 b Fu(is)30 b(not)h(a)g(v)-5 -b(alid)30 b(shell)h(option.)630 4948 y(The)f(list)h(of)f -Ft(shopt)f Fu(options)i(is:)630 5121 y Ft(autocd)192 +4626 y(unless)30 b(an)g Fr(optname)36 b Fu(is)30 b(not)h(a)g(v)-5 +b(alid)30 b(shell)h(option.)630 4754 y(The)f(list)h(of)f +Ft(shopt)f Fu(options)i(is:)630 4902 y Ft(assoc_expand_once)1110 +5011 y Fu(If)h(set,)i(the)e(shell)h(suppresses)e(m)m(ultiple)i(ev)-5 +b(aluation)34 b(of)e(asso)s(ciativ)m(e)j(arra)m(y)1110 +5121 y(subscripts)24 b(during)h(arithmetic)h(expression)g(ev)-5 +b(aluation,)28 b(while)e(executing)1110 5230 y(builtins)c(that)i(can)f +(p)s(erform)f(v)-5 b(ariable)24 b(assignmen)m(ts,)h(and)e(while)g +(executing)1110 5340 y(builtins)30 b(that)h(p)s(erform)e(arra)m(y)i +(dereferencing.)p eop end +%%Page: 66 72 +TeXDict begin 66 71 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(66)630 299 y Ft(autocd)192 b Fu(If)27 b(set,)h(a)g(command)f(name)g(that)h(is)f(the)g(name)g(of)h -(a)f(directory)h(is)f(executed)1110 5230 y(as)j(if)f(it)h(w)m(ere)f -(the)h(argumen)m(t)g(to)g(the)f Ft(cd)g Fu(command.)40 -b(This)29 b(option)g(is)h(only)1110 5340 y(used)g(b)m(y)g(in)m -(teractiv)m(e)j(shells.)p eop end -%%Page: 65 71 -TeXDict begin 65 70 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(65)630 299 y Ft(cdable_vars)1110 -408 y Fu(If)34 b(this)h(is)g(set,)i(an)e(argumen)m(t)g(to)h(the)f -Ft(cd)f Fu(builtin)h(command)f(that)i(is)f(not)1110 518 -y(a)c(directory)g(is)g(assumed)f(to)h(b)s(e)f(the)h(name)f(of)h(a)g(v) --5 b(ariable)31 b(whose)g(v)-5 b(alue)31 b(is)1110 628 -y(the)g(directory)f(to)i(c)m(hange)f(to.)630 792 y Ft(cdspell)144 -b Fu(If)27 b(set,)h(minor)f(errors)f(in)h(the)g(sp)s(elling)h(of)f(a)g -(directory)h(comp)s(onen)m(t)f(in)g(a)h Ft(cd)1110 902 -y Fu(command)i(will)h(b)s(e)f(corrected.)43 b(The)30 -b(errors)g(c)m(hec)m(k)m(ed)j(for)d(are)h(transp)s(osed)1110 -1011 y(c)m(haracters,)46 b(a)c(missing)f(c)m(haracter,)47 +(a)f(directory)h(is)f(executed)1110 408 y(as)j(if)f(it)h(w)m(ere)f(the) +h(argumen)m(t)g(to)g(the)f Ft(cd)g Fu(command.)40 b(This)29 +b(option)g(is)h(only)1110 518 y(used)g(b)m(y)g(in)m(teractiv)m(e)j +(shells.)630 682 y Ft(cdable_vars)1110 792 y Fu(If)h(this)h(is)g(set,)i +(an)e(argumen)m(t)g(to)h(the)f Ft(cd)f Fu(builtin)h(command)f(that)i +(is)f(not)1110 902 y(a)c(directory)g(is)g(assumed)f(to)h(b)s(e)f(the)h +(name)f(of)h(a)g(v)-5 b(ariable)31 b(whose)g(v)-5 b(alue)31 +b(is)1110 1011 y(the)g(directory)f(to)i(c)m(hange)f(to.)630 +1176 y Ft(cdspell)144 b Fu(If)27 b(set,)h(minor)f(errors)f(in)h(the)g +(sp)s(elling)h(of)f(a)g(directory)h(comp)s(onen)m(t)f(in)g(a)h +Ft(cd)1110 1285 y Fu(command)i(will)h(b)s(e)f(corrected.)43 +b(The)30 b(errors)g(c)m(hec)m(k)m(ed)j(for)d(are)h(transp)s(osed)1110 +1395 y(c)m(haracters,)46 b(a)c(missing)f(c)m(haracter,)47 b(and)40 b(a)i(c)m(haracter)h(to)s(o)g(man)m(y)-8 b(.)74 -b(If)42 b(a)1110 1121 y(correction)25 b(is)e(found,)g(the)h(corrected)g -(path)f(is)g(prin)m(ted,)h(and)f(the)g(command)1110 1230 +b(If)42 b(a)1110 1504 y(correction)25 b(is)e(found,)g(the)h(corrected)g +(path)f(is)g(prin)m(ted,)h(and)f(the)g(command)1110 1614 y(pro)s(ceeds.)40 b(This)30 b(option)h(is)f(only)h(used)e(b)m(y)h(in)m -(teractiv)m(e)k(shells.)630 1395 y Ft(checkhash)1110 -1504 y Fu(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f -(command)f(found)g(in)g(the)h(hash)f(table)1110 1614 +(teractiv)m(e)k(shells.)630 1778 y Ft(checkhash)1110 +1888 y Fu(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f +(command)f(found)g(in)g(the)h(hash)f(table)1110 1998 y(exists)k(b)s(efore)f(trying)h(to)h(execute)g(it.)48 -b(If)32 b(a)h(hashed)e(command)i(no)f(longer)1110 1724 +b(If)32 b(a)h(hashed)e(command)i(no)f(longer)1110 2107 y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)630 -1888 y Ft(checkjobs)1110 1998 y Fu(If)d(set,)i(Bash)e(lists)h(the)g +2271 y Ft(checkjobs)1110 2381 y Fu(If)d(set,)i(Bash)e(lists)h(the)g (status)g(of)f(an)m(y)h(stopp)s(ed)f(and)g(running)e(jobs)i(b)s(efore) -1110 2107 y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72 +1110 2491 y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72 b(If)41 b(an)m(y)g(jobs)f(are)i(running,)g(this)f(causes)1110 -2217 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h -(exit)g(is)g(attempted)h(without)e(an)1110 2326 y(in)m(terv)m(ening)d -(command)f(\(see)h(Chapter)e(7)h([Job)g(Con)m(trol],)i(page)f(100\).)40 -b(The)1110 2436 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h -(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)630 2600 y Ft(checkwinsize)1110 -2710 y Fu(If)41 b(set,)k(Bash)c(c)m(hec)m(ks)i(the)f(windo)m(w)e(size)j -(after)f(eac)m(h)g(command)f(and,)j(if)1110 2819 y(necessary)-8 -b(,)31 b(up)s(dates)f(the)g(v)-5 b(alues)31 b(of)g Ft(LINES)e -Fu(and)g Ft(COLUMNS)p Fu(.)630 2984 y Ft(cmdhist)144 +2600 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h +(exit)g(is)g(attempted)h(without)e(an)1110 2710 y(in)m(terv)m(ening)d +(command)f(\(see)h(Chapter)e(7)h([Job)g(Con)m(trol],)i(page)f(103\).)40 +b(The)1110 2819 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h +(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)630 2984 y Ft(checkwinsize)1110 +3093 y Fu(If)23 b(set,)j(Bash)e(c)m(hec)m(ks)h(the)f(windo)m(w)f(size)h +(after)h(eac)m(h)f(external)h(\(non-builtin\))1110 3203 +y(command)55 b(and,)60 b(if)55 b(necessary)-8 b(,)62 +b(up)s(dates)54 b(the)h(v)-5 b(alues)55 b(of)g Ft(LINES)f +Fu(and)1110 3313 y Ft(COLUMNS)p Fu(.)39 b(This)29 b(option)i(is)g +(enabled)f(b)m(y)g(default.)630 3477 y Ft(cmdhist)144 b Fu(If)33 b(set,)j(Bash)e(attempts)h(to)g(sa)m(v)m(e)g(all)g(lines)f -(of)g(a)h(m)m(ultiple-line)g(command)1110 3093 y(in)c(the)g(same)g +(of)g(a)h(m)m(ultiple-line)g(command)1110 3587 y(in)c(the)g(same)g (history)g(en)m(try)-8 b(.)42 b(This)30 b(allo)m(ws)i(easy)g -(re-editing)g(of)f(m)m(ulti-line)1110 3203 y(commands.)630 -3367 y Ft(compat31)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s -(eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.1)h(with)e(resp)s(ect) -1110 3477 y(to)39 b(quoted)f(argumen)m(ts)g(to)h(the)f(conditional)h -(command's)f(`)p Ft(=~)p Fu(')g(op)s(erator)1110 3587 +(re-editing)g(of)f(m)m(ulti-line)1110 3696 y(commands.)79 +b(This)43 b(option)g(is)h(enabled)f(b)m(y)g(default,)k(but)c(only)g +(has)g(an)1110 3806 y(e\013ect)30 b(if)e(command)g(history)g(is)h +(enabled)f(\(see)h(Section)g(9.1)h([Bash)e(History)1110 +3915 y(F)-8 b(acilities],)34 b(page)d(141\).)630 4080 +y Ft(compat31)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s(eha) +m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.1)h(with)e(resp)s(ect)1110 +4189 y(to)39 b(quoted)f(argumen)m(ts)g(to)h(the)f(conditional)h +(command's)f(`)p Ft(=~)p Fu(')g(op)s(erator)1110 4299 y(and)i(with)f(resp)s(ect)i(to)g(lo)s(cale-sp)s(eci\014c)h(string)e -(comparison)g(when)f(using)1110 3696 y(the)31 b Ft([[)e +(comparison)g(when)f(using)1110 4408 y(the)31 b Ft([[)e Fu(conditional)j(command's)e(`)p Ft(<)p Fu(')h(and)f(`)p Ft(>)p Fu(')g(op)s(erators.)41 b(Bash)31 b(v)m(ersions)1110 -3806 y(prior)g(to)h(bash-4.1)g(use)g(ASCI)s(I)e(collation)j(and)e -(strcmp\(3\);)i(bash-4.1)g(and)1110 3915 y(later)e(use)f(the)h(curren)m +4518 y(prior)g(to)h(bash-4.1)g(use)g(ASCI)s(I)e(collation)j(and)e +(strcmp\(3\);)i(bash-4.1)g(and)1110 4628 y(later)e(use)f(the)h(curren)m (t)f(lo)s(cale's)i(collation)h(sequence)e(and)f(strcoll\(3\).)630 -4080 y Ft(compat32)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s +4792 y Ft(compat32)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s (eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.2)h(with)e(resp)s(ect) -1110 4189 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g -(when)f(using)h(the)g Ft([[)g Fu(conditional)1110 4299 +1110 4902 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g +(when)f(using)h(the)g Ft([[)g Fu(conditional)1110 5011 y(command's)21 b(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s (erators)g(\(see)h(previous)e(item\))i(and)e(the)h(e\013ect)i(of)1110 -4408 y(in)m(terrupting)h(a)h(command)e(list.)40 b(Bash)24 +5121 y(in)m(terrupting)h(a)h(command)e(list.)40 b(Bash)24 b(v)m(ersions)h(3.2)g(and)f(earlier)h(con)m(tin)m(ue)1110 -4518 y(with)33 b(the)g(next)g(command)g(in)g(the)g(list)h(after)f(one)h -(terminates)g(due)e(to)i(an)1110 4628 y(in)m(terrupt.)630 -4792 y Ft(compat40)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s -(eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(4.0)h(with)e(resp)s(ect) -1110 4902 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g -(when)f(using)h(the)g Ft([[)g Fu(conditional)1110 5011 -y(command's)28 b(`)p Ft(<)p Fu(')h(and)f(`)p Ft(>)p Fu(')h(op)s -(erators)f(\(see)i(description)e(of)h Ft(compat31)p Fu(\))e(and)1110 -5121 y(the)38 b(e\013ect)i(of)e(in)m(terrupting)f(a)i(command)e(list.) -64 b(Bash)38 b(v)m(ersions)h(4.0)g(and)1110 5230 y(later)24 -b(in)m(terrupt)f(the)g(list)h(as)g(if)f(the)h(shell)f(receiv)m(ed)i -(the)e(in)m(terrupt;)i(previous)1110 5340 y(v)m(ersions)31 -b(con)m(tin)m(ue)g(with)f(the)h(next)g(command)f(in)g(the)g(list.)p +5230 y(with)33 b(the)g(next)g(command)g(in)g(the)g(list)h(after)f(one)h +(terminates)g(due)e(to)i(an)1110 5340 y(in)m(terrupt.)p eop end -%%Page: 66 72 -TeXDict begin 66 71 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(66)630 299 y Ft(compat41)96 -b Fu(If)25 b(set,)j(Bash,)e(when)f(in)g Fm(posix)g Fu(mo)s(de,)i -(treats)f(a)g(single)h(quote)f(in)f(a)h(double-)1110 -408 y(quoted)46 b(parameter)h(expansion)f(as)g(a)h(sp)s(ecial)f(c)m -(haracter.)90 b(The)45 b(single)1110 518 y(quotes)34 -b(m)m(ust)g(matc)m(h)h(\(an)f(ev)m(en)h(n)m(um)m(b)s(er\))e(and)g(the)h -(c)m(haracters)h(b)s(et)m(w)m(een)1110 628 y(the)40 b(single)g(quotes)g -(are)g(considered)g(quoted.)69 b(This)38 b(is)i(the)g(b)s(eha)m(vior)g -(of)1110 737 y Fm(posix)f Fu(mo)s(de)g(through)g(v)m(ersion)h(4.1.)69 +%%Page: 67 73 +TeXDict begin 67 72 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(67)630 299 y Ft(compat40)96 +b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s(eha)m(vior)f(to)i +(that)f(of)f(v)m(ersion)h(4.0)h(with)e(resp)s(ect)1110 +408 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g(when)f +(using)h(the)g Ft([[)g Fu(conditional)1110 518 y(command's)28 +b(`)p Ft(<)p Fu(')h(and)f(`)p Ft(>)p Fu(')h(op)s(erators)f(\(see)i +(description)e(of)h Ft(compat31)p Fu(\))e(and)1110 628 +y(the)38 b(e\013ect)i(of)e(in)m(terrupting)f(a)i(command)e(list.)64 +b(Bash)38 b(v)m(ersions)h(4.0)g(and)1110 737 y(later)24 +b(in)m(terrupt)f(the)g(list)h(as)g(if)f(the)h(shell)f(receiv)m(ed)i +(the)e(in)m(terrupt;)i(previous)1110 847 y(v)m(ersions)31 +b(con)m(tin)m(ue)g(with)f(the)h(next)g(command)f(in)g(the)g(list.)630 +1003 y Ft(compat41)96 b Fu(If)25 b(set,)j(Bash,)e(when)f(in)g +Fm(posix)g Fu(mo)s(de,)i(treats)f(a)g(single)h(quote)f(in)f(a)h +(double-)1110 1113 y(quoted)46 b(parameter)h(expansion)f(as)g(a)h(sp)s +(ecial)f(c)m(haracter.)90 b(The)45 b(single)1110 1223 +y(quotes)34 b(m)m(ust)g(matc)m(h)h(\(an)f(ev)m(en)h(n)m(um)m(b)s(er\))e +(and)g(the)h(c)m(haracters)h(b)s(et)m(w)m(een)1110 1332 +y(the)40 b(single)g(quotes)g(are)g(considered)g(quoted.)69 +b(This)38 b(is)i(the)g(b)s(eha)m(vior)g(of)1110 1442 +y Fm(posix)f Fu(mo)s(de)g(through)g(v)m(ersion)h(4.1.)69 b(The)39 b(default)g(Bash)h(b)s(eha)m(vior)g(re-)1110 -847 y(mains)30 b(as)h(in)f(previous)g(v)m(ersions.)630 -998 y Ft(compat42)96 b Fu(If)29 b(set,)i(Bash)f(do)s(es)f(not)h(pro)s +1551 y(mains)30 b(as)h(in)f(previous)g(v)m(ersions.)630 +1708 y Ft(compat42)96 b Fu(If)29 b(set,)i(Bash)f(do)s(es)f(not)h(pro)s (cess)g(the)g(replacemen)m(t)h(string)e(in)h(the)g(pattern)1110 -1107 y(substitution)g(w)m(ord)g(expansion)g(using)g(quote)h(remo)m(v)-5 -b(al.)630 1258 y Ft(compat43)96 b Fu(If)24 b(set,)j(Bash)e(do)s(es)g +1817 y(substitution)g(w)m(ord)g(expansion)g(using)g(quote)h(remo)m(v)-5 +b(al.)630 1974 y Ft(compat43)96 b Fu(If)24 b(set,)j(Bash)e(do)s(es)g (not)g(prin)m(t)g(a)g(w)m(arning)g(message)h(if)f(an)g(attempt)h(is)f -(made)1110 1367 y(to)43 b(use)g(a)g(quoted)f(comp)s(ound)f(arra)m(y)i -(assignmen)m(t)h(as)f(an)f(argumen)m(t)h(to)1110 1477 +(made)1110 2084 y(to)43 b(use)g(a)g(quoted)f(comp)s(ound)f(arra)m(y)i +(assignmen)m(t)h(as)f(an)f(argumen)m(t)h(to)1110 2193 y Ft(declare)p Fu(,)31 b(mak)m(es)i(w)m(ord)f(expansion)g(errors)g -(non-fatal)i(errors)d(that)i(cause)1110 1587 y(the)28 +(non-fatal)i(errors)d(that)i(cause)1110 2303 y(the)28 b(curren)m(t)h(command)f(to)h(fail)g(\(the)f(default)h(b)s(eha)m(vior)f -(is)h(to)g(mak)m(e)g(them)1110 1696 y(fatal)42 b(errors)e(that)i(cause) +(is)h(to)g(mak)m(e)g(them)1110 2412 y(fatal)42 b(errors)e(that)i(cause) f(the)h(shell)f(to)g(exit\),)k(and)c(do)s(es)f(not)h(reset)h(the)1110 -1806 y(lo)s(op)34 b(state)h(when)f(a)g(shell)g(function)g(is)g +2522 y(lo)s(op)34 b(state)h(when)f(a)g(shell)g(function)g(is)g (executed)h(\(this)f(allo)m(ws)h Ft(break)e Fu(or)1110 -1915 y Ft(continue)25 b Fu(in)j(a)g(shell)g(function)f(to)i(a\013ect)g -(lo)s(ops)f(in)f(the)h(caller's)h(con)m(text\).)630 2066 -y Ft(complete_fullquote)1110 2176 y Fu(If)i(set,)g(Bash)h(quotes)f(all) -h(shell)f(metac)m(haracters)i(in)e(\014lenames)g(and)g(direc-)1110 -2285 y(tory)g(names)f(when)g(p)s(erforming)f(completion.)43 -b(If)30 b(not)h(set,)g(Bash)g(remo)m(v)m(es)1110 2395 -y(metac)m(haracters)40 b(suc)m(h)d(as)h(the)g(dollar)g(sign)g(from)f -(the)h(set)g(of)f(c)m(haracters)1110 2504 y(that)f(will)g(b)s(e)f -(quoted)g(in)g(completed)i(\014lenames)e(when)f(these)i(metac)m(har-) -1110 2614 y(acters)29 b(app)s(ear)e(in)g(shell)h(v)-5 -b(ariable)28 b(references)g(in)f(w)m(ords)g(to)i(b)s(e)e(completed.) -1110 2724 y(This)k(means)i(that)g(dollar)f(signs)g(in)g(v)-5 -b(ariable)33 b(names)g(that)f(expand)g(to)h(di-)1110 -2833 y(rectories)28 b(will)g(not)f(b)s(e)f(quoted;)j(ho)m(w)m(ev)m(er,) -g(an)m(y)e(dollar)h(signs)f(app)s(earing)f(in)1110 2943 +2632 y Ft(continue)25 b Fu(in)j(a)g(shell)g(function)f(to)i(a\013ect)g +(lo)s(ops)f(in)f(the)h(caller's)h(con)m(text\).)630 2788 +y Ft(compat44)96 b Fu(If)33 b(set,)i(Bash)f(sa)m(v)m(es)h(the)e(p)s +(ositional)i(parameters)f(to)g(BASH)p 3264 2788 28 4 +v 40 w(AR)m(GV)h(and)1110 2898 y(BASH)p 1367 2898 V 40 +w(AR)m(GC)k(b)s(efore)e(they)i(are)f(used,)i(regardless)e(of)g(whether) +g(or)g(not)1110 3007 y(extended)30 b(debugging)h(mo)s(de)f(is)g +(enabled.)630 3164 y Ft(complete_fullquote)1110 3273 +y Fu(If)h(set,)g(Bash)h(quotes)f(all)h(shell)f(metac)m(haracters)i(in)e +(\014lenames)g(and)g(direc-)1110 3383 y(tory)g(names)f(when)g(p)s +(erforming)f(completion.)43 b(If)30 b(not)h(set,)g(Bash)g(remo)m(v)m +(es)1110 3493 y(metac)m(haracters)40 b(suc)m(h)d(as)h(the)g(dollar)g +(sign)g(from)f(the)h(set)g(of)f(c)m(haracters)1110 3602 +y(that)f(will)g(b)s(e)f(quoted)g(in)g(completed)i(\014lenames)e(when)f +(these)i(metac)m(har-)1110 3712 y(acters)29 b(app)s(ear)e(in)g(shell)h +(v)-5 b(ariable)28 b(references)g(in)f(w)m(ords)g(to)i(b)s(e)e +(completed.)1110 3821 y(This)k(means)i(that)g(dollar)f(signs)g(in)g(v) +-5 b(ariable)33 b(names)g(that)f(expand)g(to)h(di-)1110 +3931 y(rectories)28 b(will)g(not)f(b)s(e)f(quoted;)j(ho)m(w)m(ev)m(er,) +g(an)m(y)e(dollar)h(signs)f(app)s(earing)f(in)1110 4041 y(\014lenames)j(will)h(not)f(b)s(e)g(quoted,)h(either.)41 b(This)28 b(is)i(activ)m(e)h(only)e(when)g(bash)1110 -3052 y(is)39 b(using)f(bac)m(kslashes)i(to)g(quote)g(completed)f -(\014lenames.)67 b(This)38 b(v)-5 b(ariable)1110 3162 +4150 y(is)39 b(using)f(bac)m(kslashes)i(to)g(quote)g(completed)f +(\014lenames.)67 b(This)38 b(v)-5 b(ariable)1110 4260 y(is)41 b(set)g(b)m(y)g(default,)j(whic)m(h)c(is)h(the)g(default)g -(Bash)g(b)s(eha)m(vior)g(in)g(v)m(ersions)1110 3271 y(through)30 -b(4.2.)630 3422 y Ft(direxpand)1110 3532 y Fu(If)k(set,)i(Bash)f +(Bash)g(b)s(eha)m(vior)g(in)g(v)m(ersions)1110 4369 y(through)30 +b(4.2.)630 4526 y Ft(direxpand)1110 4635 y Fu(If)k(set,)i(Bash)f (replaces)g(directory)g(names)g(with)f(the)g(results)h(of)f(w)m(ord)g -(ex-)1110 3641 y(pansion)k(when)g(p)s(erforming)f(\014lename)i -(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 3751 +(ex-)1110 4745 y(pansion)k(when)g(p)s(erforming)f(\014lename)i +(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 4855 y(con)m(ten)m(ts)29 b(of)e(the)g(readline)h(editing)g(bu\013er.)38 -b(If)27 b(not)g(set,)i(Bash)e(attempts)h(to)1110 3861 +b(If)27 b(not)g(set,)i(Bash)e(attempts)h(to)1110 4964 y(preserv)m(e)j(what)f(the)g(user)g(t)m(yp)s(ed.)630 -4011 y Ft(dirspell)96 b Fu(If)26 b(set,)i(Bash)f(attempts)g(sp)s +5121 y Ft(dirspell)96 b Fu(If)26 b(set,)i(Bash)f(attempts)g(sp)s (elling)g(correction)g(on)g(directory)g(names)f(during)1110 -4121 y(w)m(ord)36 b(completion)h(if)f(the)g(directory)g(name)g -(initially)h(supplied)e(do)s(es)h(not)1110 4230 y(exist.)630 -4381 y Ft(dotglob)144 b Fu(If)27 b(set,)i(Bash)f(includes)g -(\014lenames)g(b)s(eginning)f(with)g(a)h(`.')41 b(in)27 -b(the)h(results)g(of)1110 4491 y(\014lename)j(expansion.)630 -4641 y Ft(execfail)96 b Fu(If)24 b(this)h(is)f(set,)j(a)e(non-in)m -(teractiv)m(e)i(shell)e(will)f(not)h(exit)h(if)e(it)h(cannot)h(execute) -1110 4751 y(the)i(\014le)g(sp)s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to) -h(the)f Ft(exec)f Fu(builtin)h(command.)39 b(An)1110 -4861 y(in)m(teractiv)m(e)33 b(shell)e(do)s(es)f(not)g(exit)i(if)e -Ft(exec)f Fu(fails.)630 5011 y Ft(expand_aliases)1110 -5121 y Fu(If)j(set,)h(aliases)g(are)g(expanded)e(as)h(describ)s(ed)f(b) -s(elo)m(w)h(under)f(Aliases,)i(Sec-)1110 5230 y(tion)38 -b(6.6)h([Aliases],)j(page)d(90.)64 b(This)37 b(option)h(is)g(enabled)g -(b)m(y)g(default)g(for)1110 5340 y(in)m(teractiv)m(e)33 -b(shells.)p eop end -%%Page: 67 73 -TeXDict begin 67 72 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(67)630 299 y Ft(extdebug)96 +5230 y(w)m(ord)36 b(completion)h(if)f(the)g(directory)g(name)g +(initially)h(supplied)e(do)s(es)h(not)1110 5340 y(exist.)p +eop end +%%Page: 68 74 +TeXDict begin 68 73 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(68)630 299 y Ft(dotglob)144 +b Fu(If)36 b(set,)i(Bash)e(includes)g(\014lenames)g(b)s(eginning)f +(with)h(a)g(`.')58 b(in)36 b(the)g(results)1110 408 y(of)f(\014lename)f +(expansion.)53 b(The)33 b(\014lenames)i(`)p Ft(.)p Fu(')f(and)g(`)p +Ft(..)p Fu(')g(m)m(ust)h(alw)m(a)m(ys)h(b)s(e)1110 518 +y(matc)m(hed)31 b(explicitly)-8 b(,)33 b(ev)m(en)e(if)f +Ft(dotglob)f Fu(is)h(set.)630 682 y Ft(execfail)96 b +Fu(If)24 b(this)h(is)f(set,)j(a)e(non-in)m(teractiv)m(e)i(shell)e(will) +f(not)h(exit)h(if)e(it)h(cannot)h(execute)1110 792 y(the)i(\014le)g(sp) +s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to)h(the)f Ft(exec)f +Fu(builtin)h(command.)39 b(An)1110 902 y(in)m(teractiv)m(e)33 +b(shell)e(do)s(es)f(not)g(exit)i(if)e Ft(exec)f Fu(fails.)630 +1066 y Ft(expand_aliases)1110 1176 y Fu(If)j(set,)h(aliases)g(are)g +(expanded)e(as)h(describ)s(ed)f(b)s(elo)m(w)h(under)f(Aliases,)i(Sec-) +1110 1285 y(tion)38 b(6.6)h([Aliases],)j(page)d(93.)64 +b(This)37 b(option)h(is)g(enabled)g(b)m(y)g(default)g(for)1110 +1395 y(in)m(teractiv)m(e)33 b(shells.)630 1559 y Ft(extdebug)96 b Fu(If)36 b(set)h(at)h(shell)f(in)m(v)m(o)s(cation,)j(arrange)d(to)h -(execute)g(the)f(debugger)f(pro\014le)1110 408 y(b)s(efore)f(the)h +(execute)g(the)f(debugger)f(pro\014le)1110 1669 y(b)s(efore)f(the)h (shell)f(starts,)j(iden)m(tical)f(to)f(the)g Ft(--debugger)c -Fu(option.)56 b(If)35 b(set)1110 518 y(after)25 b(in)m(v)m(o)s(cation,) -j(b)s(eha)m(vior)d(in)m(tended)g(for)f(use)h(b)m(y)g(debuggers)f(is)h -(enabled:)1159 652 y(1.)61 b(The)37 b Ft(-F)g Fu(option)h(to)g(the)g -Ft(declare)d Fu(builtin)i(\(see)i(Section)f(4.2)h([Bash)1290 -762 y(Builtins],)29 b(page)g(49\))g(displa)m(ys)f(the)g(source)h -(\014le)f(name)g(and)f(line)h(n)m(um-)1290 871 y(b)s(er)h(corresp)s -(onding)g(to)i(eac)m(h)g(function)f(name)g(supplied)f(as)i(an)f(argu-) -1290 981 y(men)m(t.)1159 1115 y(2.)61 b(If)20 b(the)h(command)g(run)e -(b)m(y)i(the)f Ft(DEBUG)g Fu(trap)g(returns)g(a)h(non-zero)g(v)-5 -b(alue,)1290 1224 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g -(not)i(executed.)1159 1358 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m -(y)i(the)f Ft(DEBUG)f Fu(trap)h(returns)f(a)i(v)-5 b(alue)38 -b(of)f(2,)1290 1468 y(and)c(the)g(shell)h(is)f(executing)i(in)e(a)h -(subroutine)e(\(a)i(shell)g(function)f(or)1290 1577 y(a)h(shell)g +Fu(option.)56 b(If)35 b(set)1110 1778 y(after)25 b(in)m(v)m(o)s +(cation,)j(b)s(eha)m(vior)d(in)m(tended)g(for)f(use)h(b)m(y)g +(debuggers)f(is)h(enabled:)1159 1915 y(1.)61 b(The)37 +b Ft(-F)g Fu(option)h(to)g(the)g Ft(declare)d Fu(builtin)i(\(see)i +(Section)f(4.2)h([Bash)1290 2025 y(Builtins],)29 b(page)g(50\))g +(displa)m(ys)f(the)g(source)h(\014le)f(name)g(and)f(line)h(n)m(um-)1290 +2134 y(b)s(er)h(corresp)s(onding)g(to)i(eac)m(h)g(function)f(name)g +(supplied)f(as)i(an)f(argu-)1290 2244 y(men)m(t.)1159 +2381 y(2.)61 b(If)20 b(the)h(command)g(run)e(b)m(y)i(the)f +Ft(DEBUG)g Fu(trap)g(returns)g(a)h(non-zero)g(v)-5 b(alue,)1290 +2491 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g(not)i +(executed.)1159 2628 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m(y)i +(the)f Ft(DEBUG)f Fu(trap)h(returns)f(a)i(v)-5 b(alue)38 +b(of)f(2,)1290 2737 y(and)c(the)g(shell)h(is)f(executing)i(in)e(a)h +(subroutine)e(\(a)i(shell)g(function)f(or)1290 2847 y(a)h(shell)g (script)f(executed)h(b)m(y)g(the)f Ft(.)h Fu(or)f Ft(source)f -Fu(builtins\),)i(the)g(shell)1290 1687 y(sim)m(ulates)d(a)g(call)h(to)f -Ft(return)p Fu(.)1159 1821 y(4.)61 b Ft(BASH_ARGC)34 +Fu(builtins\),)i(the)g(shell)1290 2956 y(sim)m(ulates)d(a)g(call)h(to)f +Ft(return)p Fu(.)1159 3093 y(4.)61 b Ft(BASH_ARGC)34 b Fu(and)i Ft(BASH_ARGV)e Fu(are)j(up)s(dated)e(as)h(describ)s(ed)g(in) -g(their)1290 1931 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g -(V)-8 b(ariables],)32 b(page)f(71\).)1159 2064 y(5.)61 +g(their)1290 3203 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g +(V)-8 b(ariables],)32 b(page)f(73\).)1159 3340 y(5.)61 b(F)-8 b(unction)57 b(tracing)g(is)g(enabled:)93 b(command)56 -b(substitution,)63 b(shell)1290 2174 y(functions,)32 +b(substitution,)63 b(shell)1290 3450 y(functions,)32 b(and)e(subshells)h(in)m(v)m(ok)m(ed)i(with)e Ft(\()f -Fj(command)e Ft(\))j Fu(inherit)h(the)1290 2284 y Ft(DEBUG)d -Fu(and)h Ft(RETURN)e Fu(traps.)1159 2418 y(6.)61 b(Error)41 +Fj(command)e Ft(\))j Fu(inherit)h(the)1290 3559 y Ft(DEBUG)d +Fu(and)h Ft(RETURN)e Fu(traps.)1159 3696 y(6.)61 b(Error)41 b(tracing)i(is)f(enabled:)63 b(command)42 b(substitution,)i(shell)f -(func-)1290 2527 y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i +(func-)1290 3806 y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i (with)e Ft(\()g Fj(command)f Ft(\))h Fu(inherit)h(the)g -Ft(ERR)1290 2637 y Fu(trap.)630 2795 y Ft(extglob)144 +Ft(ERR)1290 3915 y Fu(trap.)630 4080 y Ft(extglob)144 b Fu(If)26 b(set,)i(the)f(extended)f(pattern)h(matc)m(hing)g(features)g -(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 2905 y(Section)j(3.5.8.1)i -([P)m(attern)f(Matc)m(hing],)g(page)f(31\))h(are)f(enabled.)630 -3063 y Ft(extquote)96 b Fu(If)51 b(set,)58 b Ft($')p +(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 4189 y(Section)j(3.5.8.1)i +([P)m(attern)f(Matc)m(hing],)g(page)f(33\))h(are)f(enabled.)630 +4354 y Ft(extquote)96 b Fu(If)51 b(set,)58 b Ft($')p Fj(string)p Ft(')49 b Fu(and)i Ft($")p Fj(string)p Ft(")e -Fu(quoting)k(is)e(p)s(erformed)f(within)1110 3173 y Ft(${)p +Fu(quoting)k(is)e(p)s(erformed)f(within)1110 4463 y Ft(${)p Fj(parameter)p Ft(})31 b Fu(expansions)k(enclosed)g(in)g(double)f -(quotes.)55 b(This)33 b(option)1110 3282 y(is)d(enabled)h(b)m(y)f -(default.)630 3440 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d +(quotes.)55 b(This)33 b(option)1110 4573 y(is)d(enabled)h(b)m(y)f +(default.)630 4737 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d (whic)m(h)g(fail)h(to)h(matc)m(h)f(\014lenames)f(during)g(\014lename)g -(ex-)1110 3550 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630 -3708 y Ft(force_fignore)1110 3818 y Fu(If)43 b(set,)k(the)d(su\016xes)f +(ex-)1110 4847 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630 +5011 y Ft(force_fignore)1110 5121 y Fu(If)43 b(set,)k(the)d(su\016xes)f (sp)s(eci\014ed)f(b)m(y)i(the)f Ft(FIGNORE)f Fu(shell)h(v)-5 -b(ariable)44 b(cause)1110 3927 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h +b(ariable)44 b(cause)1110 5230 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h (when)f(p)s(erforming)f(w)m(ord)h(completion)i(ev)m(en)f(if)g(the)1110 -4037 y(ignored)37 b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g -(completions.)62 b(See)37 b(Section)h(5.2)1110 4147 y([Bash)24 -b(V)-8 b(ariables],)27 b(page)e(71,)h(for)d(a)h(description)g(of)g -Ft(FIGNORE)p Fu(.)37 b(This)22 b(option)1110 4256 y(is)30 -b(enabled)h(b)m(y)f(default.)630 4415 y Ft(globasciiranges)1110 -4524 y Fu(If)j(set,)h(range)f(expressions)g(used)f(in)h(pattern)g(matc) -m(hing)h(brac)m(k)m(et)h(expres-)1110 4634 y(sions)28 -b(\(see)h(Section)h(3.5.8.1)g([P)m(attern)g(Matc)m(hing],)h(page)e -(31\))g(b)s(eha)m(v)m(e)g(as)g(if)1110 4743 y(in)i(the)g(traditional)i -(C)d(lo)s(cale)j(when)d(p)s(erforming)g(comparisons.)44 -b(That)31 b(is,)1110 4853 y(the)d(curren)m(t)g(lo)s(cale's)i(collating) -h(sequence)d(is)h(not)f(tak)m(en)h(in)m(to)g(accoun)m(t,)i(so)1110 -4963 y(`)p Ft(b)p Fu(')j(will)g(not)g(collate)i(b)s(et)m(w)m(een)e(`)p +5340 y(ignored)37 b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g +(completions.)62 b(See)37 b(Section)h(5.2)p eop end +%%Page: 69 75 +TeXDict begin 69 74 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(69)1110 299 y([Bash)24 +b(V)-8 b(ariables],)27 b(page)e(73,)h(for)d(a)h(description)g(of)g +Ft(FIGNORE)p Fu(.)37 b(This)22 b(option)1110 408 y(is)30 +b(enabled)h(b)m(y)f(default.)630 603 y Ft(globasciiranges)1110 +713 y Fu(If)j(set,)h(range)f(expressions)g(used)f(in)h(pattern)g(matc)m +(hing)h(brac)m(k)m(et)h(expres-)1110 822 y(sions)28 b(\(see)h(Section)h +(3.5.8.1)g([P)m(attern)g(Matc)m(hing],)h(page)e(33\))g(b)s(eha)m(v)m(e) +g(as)g(if)1110 932 y(in)i(the)g(traditional)i(C)d(lo)s(cale)j(when)d(p) +s(erforming)g(comparisons.)44 b(That)31 b(is,)1110 1042 +y(the)d(curren)m(t)g(lo)s(cale's)i(collating)h(sequence)d(is)h(not)f +(tak)m(en)h(in)m(to)g(accoun)m(t,)i(so)1110 1151 y(`)p +Ft(b)p Fu(')j(will)g(not)g(collate)i(b)s(et)m(w)m(een)e(`)p Ft(A)p Fu(')g(and)f(`)p Ft(B)p Fu(',)h(and)f(upp)s(er-case)g(and)g(lo)m -(w)m(er-)1110 5072 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i -(together.)630 5230 y Ft(globstar)96 b Fu(If)38 b(set,)j(the)e(pattern) +(w)m(er-)1110 1261 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i +(together.)630 1456 y Ft(globstar)96 b Fu(If)38 b(set,)j(the)e(pattern) f(`)p Ft(**)p Fu(')h(used)e(in)i(a)f(\014lename)h(expansion)f(con)m -(text)j(will)1110 5340 y(matc)m(h)36 b(all)g(\014les)f(and)f(zero)i(or) -f(more)g(directories)h(and)e(sub)s(directories.)54 b(If)p -eop end -%%Page: 68 74 -TeXDict begin 68 73 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(68)1110 299 y(the)30 -b(pattern)g(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(`)p Ft(/)p -Fu(',)f(only)g(directories)h(and)f(sub)s(directories)1110 -408 y(matc)m(h.)630 568 y Ft(gnu_errfmt)1110 677 y Fu(If)35 -b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in)h(the)g -(standard)f Fm(gnu)g Fu(error)1110 787 y(message)c(format.)630 -946 y Ft(histappend)1110 1056 y Fu(If)c(set,)j(the)e(history)g(list)g +(text)j(will)1110 1565 y(matc)m(h)36 b(all)g(\014les)f(and)f(zero)i(or) +f(more)g(directories)h(and)e(sub)s(directories.)54 b(If)1110 +1675 y(the)30 b(pattern)g(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(`)p +Ft(/)p Fu(',)f(only)g(directories)h(and)f(sub)s(directories)1110 +1784 y(matc)m(h.)630 1979 y Ft(gnu_errfmt)1110 2089 y +Fu(If)35 b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in)h(the)g +(standard)f Fm(gnu)g Fu(error)1110 2198 y(message)c(format.)630 +2393 y Ft(histappend)1110 2503 y Fu(If)c(set,)j(the)e(history)g(list)g (is)g(app)s(ended)e(to)j(the)f(\014le)g(named)f(b)m(y)h(the)g(v)-5 -b(alue)29 b(of)1110 1166 y(the)d Ft(HISTFILE)d Fu(v)-5 +b(alue)29 b(of)1110 2612 y(the)d Ft(HISTFILE)d Fu(v)-5 b(ariable)26 b(when)e(the)h(shell)h(exits,)h(rather)e(than)h(o)m(v)m -(erwriting)1110 1275 y(the)31 b(\014le.)630 1435 y Ft(histreedit)1110 -1544 y Fu(If)i(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g +(erwriting)1110 2722 y(the)31 b(\014le.)630 2917 y Ft(histreedit)1110 +3026 y Fu(If)i(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g (user)g(is)g(giv)m(en)h(the)g(opp)s(ortunit)m(y)1110 -1654 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630 -1813 y Ft(histverify)1110 1923 y Fu(If)35 b(set,)i(and)e(Readline)h(is) +3136 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630 +3331 y Ft(histverify)1110 3440 y Fu(If)35 b(set,)i(and)e(Readline)h(is) f(b)s(eing)g(used,)h(the)f(results)g(of)g(history)h(substitu-)1110 -2032 y(tion)h(are)g(not)g(immediately)h(passed)e(to)h(the)g(shell)g -(parser.)59 b(Instead,)38 b(the)1110 2142 y(resulting)i(line)f(is)h +3550 y(tion)h(are)g(not)g(immediately)h(passed)e(to)h(the)g(shell)g +(parser.)59 b(Instead,)38 b(the)1110 3660 y(resulting)i(line)f(is)h (loaded)g(in)m(to)g(the)g(Readline)g(editing)g(bu\013er,)h(allo)m(wing) -1110 2252 y(further)29 b(mo)s(di\014cation.)630 2411 -y Ft(hostcomplete)1110 2521 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f +1110 3769 y(further)29 b(mo)s(di\014cation.)630 3964 +y Ft(hostcomplete)1110 4074 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f (b)s(eing)g(used,)h(Bash)g(will)f(attempt)h(to)g(p)s(erform)1110 -2630 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f -(`)p Ft(@)p Fu(')g(is)g(b)s(eing)f(com-)1110 2740 y(pleted)g(\(see)h +4183 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f +(`)p Ft(@)p Fu(')g(is)g(b)s(eing)f(com-)1110 4293 y(pleted)g(\(see)h (Section)f(8.4.6)i([Commands)d(F)-8 b(or)36 b(Completion],)g(page)g -(124\).)1110 2849 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.) -630 3009 y Ft(huponexit)1110 3118 y Fu(If)i(set,)i(Bash)f(will)h(send)d +(127\).)1110 4402 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.) +630 4597 y Ft(huponexit)1110 4707 y Fu(If)i(set,)i(Bash)f(will)h(send)d Ft(SIGHUP)h Fu(to)h(all)h(jobs)e(when)g(an)g(in)m(teractiv)m(e)k(login) -1110 3228 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g -(page)f(39\).)630 3387 y Ft(inherit_errexit)1110 3497 +1110 4816 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g +(page)f(41\).)630 5011 y Ft(inherit_errexit)1110 5121 y Fu(If)e(set,)h(command)g(substitution)f(inherits)g(the)g(v)-5 -b(alue)30 b(of)g(the)f Ft(errexit)f Fu(op-)1110 3606 +b(alue)30 b(of)g(the)f Ft(errexit)f Fu(op-)1110 5230 y(tion,)33 b(instead)g(of)f(unsetting)g(it)h(in)f(the)g(subshell)f(en)m -(vironmen)m(t.)46 b(This)32 b(op-)1110 3716 y(tion)f(is)f(enabled)h -(when)e Fm(posix)h Fu(mo)s(de)g(is)g(enabled.)630 3875 -y Ft(interactive_comments)1110 3985 y Fu(Allo)m(w)d(a)g(w)m(ord)e(b)s +(vironmen)m(t.)46 b(This)32 b(op-)1110 5340 y(tion)f(is)f(enabled)h +(when)e Fm(posix)h Fu(mo)s(de)g(is)g(enabled.)p eop end +%%Page: 70 76 +TeXDict begin 70 75 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(70)630 299 y Ft +(interactive_comments)1110 408 y Fu(Allo)m(w)27 b(a)g(w)m(ord)e(b)s (eginning)g(with)h(`)p Ft(#)p Fu(')g(to)h(cause)f(that)h(w)m(ord)f(and) -f(all)i(remain-)1110 4095 y(ing)41 b(c)m(haracters)i(on)e(that)h(line)g +f(all)i(remain-)1110 518 y(ing)41 b(c)m(haracters)i(on)e(that)h(line)g (to)g(b)s(e)f(ignored)g(in)g(an)g(in)m(teractiv)m(e)j(shell.)1110 -4204 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630 -4364 y Ft(lastpipe)96 b Fu(If)24 b(set,)i(and)e(job)g(con)m(trol)i(is)f +628 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630 +777 y Ft(lastpipe)96 b Fu(If)24 b(set,)i(and)e(job)g(con)m(trol)i(is)f (not)f(activ)m(e,)k(the)d(shell)f(runs)f(the)i(last)g(command)1110 -4473 y(of)37 b(a)h(pip)s(eline)e(not)h(executed)h(in)f(the)g(bac)m -(kground)g(in)g(the)g(curren)m(t)g(shell)1110 4583 y(en)m(vironmen)m -(t.)630 4742 y Ft(lithist)144 b Fu(If)22 b(enabled,)i(and)d(the)h +887 y(of)37 b(a)h(pip)s(eline)e(not)h(executed)h(in)f(the)g(bac)m +(kground)g(in)g(the)g(curren)m(t)g(shell)1110 996 y(en)m(vironmen)m(t.) +630 1146 y Ft(lithist)144 b Fu(If)22 b(enabled,)i(and)d(the)h Ft(cmdhist)e Fu(option)j(is)f(enabled,)i(m)m(ulti-line)f(commands)1110 -4852 y(are)28 b(sa)m(v)m(ed)h(to)g(the)f(history)g(with)f(em)m(b)s -(edded)g(newlines)h(rather)g(than)f(using)1110 4961 y(semicolon)32 -b(separators)f(where)e(p)s(ossible.)630 5121 y Ft(login_shell)1110 -5230 y Fu(The)35 b(shell)h(sets)g(this)f(option)h(if)g(it)g(is)f -(started)h(as)g(a)g(login)g(shell)g(\(see)g(Sec-)1110 -5340 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g(82\).)41 -b(The)28 b(v)-5 b(alue)29 b(ma)m(y)g(not)f(b)s(e)g(c)m(hanged.)p +1255 y(are)28 b(sa)m(v)m(ed)h(to)g(the)f(history)g(with)f(em)m(b)s +(edded)g(newlines)h(rather)g(than)f(using)1110 1365 y(semicolon)32 +b(separators)f(where)e(p)s(ossible.)630 1514 y Ft(localvar_inherit)1110 +1624 y Fu(If)j(set,)h(lo)s(cal)g(v)-5 b(ariables)33 b(inherit)f(the)g +(v)-5 b(alue)32 b(and)g(attributes)h(of)f(a)g(v)-5 b(ariable)1110 +1733 y(of)36 b(the)g(same)g(name)g(that)h(exists)f(at)h(a)f(previous)g +(scop)s(e)g(b)s(efore)f(an)m(y)h(new)1110 1843 y(v)-5 +b(alue)31 b(is)f(assigned.)41 b(The)30 b Fr(nameref)48 +b Fu(attribute)31 b(is)f(not)h(inherited.)630 1993 y +Ft(localvar_unset)1110 2102 y Fu(If)i(set,)i(calling)g +Ft(unset)d Fu(on)i(lo)s(cal)g(v)-5 b(ariables)35 b(in)e(previous)g +(function)g(scop)s(es)1110 2212 y(marks)26 b(them)g(so)g(subsequen)m(t) +g(lo)s(okups)f(\014nd)g(them)h(unset)f(un)m(til)i(that)g(func-)1110 +2321 y(tion)40 b(returns.)68 b(This)39 b(is)g(iden)m(tical)j(to)e(the)g +(b)s(eha)m(vior)g(of)g(unsetting)g(lo)s(cal)1110 2431 +y(v)-5 b(ariables)31 b(at)g(the)g(curren)m(t)f(function)g(scop)s(e.)630 +2580 y Ft(login_shell)1110 2690 y Fu(The)35 b(shell)h(sets)g(this)f +(option)h(if)g(it)g(is)f(started)h(as)g(a)g(login)g(shell)g(\(see)g +(Sec-)1110 2800 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g +(85\).)41 b(The)28 b(v)-5 b(alue)29 b(ma)m(y)g(not)f(b)s(e)g(c)m +(hanged.)630 2949 y Ft(mailwarn)96 b Fu(If)34 b(set,)i(and)e(a)h +(\014le)g(that)g(Bash)f(is)h(c)m(hec)m(king)h(for)f(mail)g(has)f(b)s +(een)g(accessed)1110 3059 y(since)24 b(the)h(last)g(time)f(it)h(w)m(as) +f(c)m(hec)m(k)m(ed,)k(the)c(message)h Ft("The)k(mail)h(in)f +Fj(mail-)1110 3168 y(file)g Ft(has)h(been)f(read")g Fu(is)h(displa)m(y) +m(ed.)630 3318 y Ft(no_empty_cmd_completion)1110 3427 +y Fu(If)g(set,)g(and)g(Readline)g(is)h(b)s(eing)e(used,)h(Bash)g(will)g +(not)g(attempt)i(to)e(searc)m(h)1110 3537 y(the)25 b +Ft(PATH)f Fu(for)h(p)s(ossible)f(completions)j(when)d(completion)i(is)f +(attempted)h(on)1110 3646 y(an)k(empt)m(y)h(line.)630 +3796 y Ft(nocaseglob)1110 3905 y Fu(If)38 b(set,)k(Bash)d(matc)m(hes)g +(\014lenames)g(in)f(a)h(case-insensitiv)m(e)j(fashion)c(when)1110 +4015 y(p)s(erforming)29 b(\014lename)i(expansion.)630 +4164 y Ft(nocasematch)1110 4274 y Fu(If)42 b(set,)k(Bash)d(matc)m(hes)g +(patterns)g(in)f(a)h(case-insensitiv)m(e)i(fashion)d(when)1110 +4384 y(p)s(erforming)31 b(matc)m(hing)i(while)f(executing)i +Ft(case)d Fu(or)h Ft([[)g Fu(conditional)h(com-)1110 +4493 y(mands,)d(when)g(p)s(erforming)g(pattern)h(substitution)g(w)m +(ord)g(expansions,)g(or)1110 4603 y(when)g(\014ltering)i(p)s(ossible)f +(completions)h(as)g(part)f(of)h(programmable)f(com-)1110 +4712 y(pletion.)630 4862 y Ft(nullglob)96 b Fu(If)23 +b(set,)j(Bash)e(allo)m(ws)g(\014lename)g(patterns)g(whic)m(h)f(matc)m +(h)h(no)g(\014les)f(to)i(expand)1110 4971 y(to)31 b(a)g(n)m(ull)f +(string,)h(rather)f(than)g(themselv)m(es.)630 5121 y +Ft(progcomp)96 b Fu(If)25 b(set,)i(the)f(programmable)g(completion)g +(facilities)i(\(see)f(Section)f(8.6)h([Pro-)1110 5230 +y(grammable)45 b(Completion],)k(page)c(132\))h(are)f(enabled.)82 +b(This)44 b(option)h(is)1110 5340 y(enabled)30 b(b)m(y)h(default.)p eop end -%%Page: 69 75 -TeXDict begin 69 74 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(69)630 299 y Ft(mailwarn)96 -b Fu(If)34 b(set,)i(and)e(a)h(\014le)g(that)g(Bash)f(is)h(c)m(hec)m -(king)h(for)f(mail)g(has)f(b)s(een)g(accessed)1110 408 -y(since)24 b(the)h(last)g(time)f(it)h(w)m(as)f(c)m(hec)m(k)m(ed,)k(the) -c(message)h Ft("The)k(mail)h(in)f Fj(mail-)1110 518 y(file)g -Ft(has)h(been)f(read")g Fu(is)h(displa)m(y)m(ed.)630 -693 y Ft(no_empty_cmd_completion)1110 803 y Fu(If)g(set,)g(and)g -(Readline)g(is)h(b)s(eing)e(used,)h(Bash)g(will)g(not)g(attempt)i(to)e -(searc)m(h)1110 913 y(the)25 b Ft(PATH)f Fu(for)h(p)s(ossible)f -(completions)j(when)d(completion)i(is)f(attempted)h(on)1110 -1022 y(an)k(empt)m(y)h(line.)630 1198 y Ft(nocaseglob)1110 -1307 y Fu(If)38 b(set,)k(Bash)d(matc)m(hes)g(\014lenames)g(in)f(a)h -(case-insensitiv)m(e)j(fashion)c(when)1110 1417 y(p)s(erforming)29 -b(\014lename)i(expansion.)630 1592 y Ft(nocasematch)1110 -1702 y Fu(If)42 b(set,)k(Bash)d(matc)m(hes)g(patterns)g(in)f(a)h -(case-insensitiv)m(e)i(fashion)d(when)1110 1811 y(p)s(erforming)31 -b(matc)m(hing)i(while)f(executing)i Ft(case)d Fu(or)h -Ft([[)g Fu(conditional)h(com-)1110 1921 y(mands,)d(when)g(p)s -(erforming)g(pattern)h(substitution)g(w)m(ord)g(expansions,)g(or)1110 -2030 y(when)g(\014ltering)i(p)s(ossible)f(completions)h(as)g(part)f(of) -h(programmable)f(com-)1110 2140 y(pletion.)630 2315 y -Ft(nullglob)96 b Fu(If)23 b(set,)j(Bash)e(allo)m(ws)g(\014lename)g -(patterns)g(whic)m(h)f(matc)m(h)h(no)g(\014les)f(to)i(expand)1110 -2425 y(to)31 b(a)g(n)m(ull)f(string,)h(rather)f(than)g(themselv)m(es.) -630 2600 y Ft(progcomp)96 b Fu(If)25 b(set,)i(the)f(programmable)g -(completion)g(facilities)i(\(see)f(Section)f(8.6)h([Pro-)1110 -2710 y(grammable)45 b(Completion],)k(page)c(129\))h(are)f(enabled.)82 -b(This)44 b(option)h(is)1110 2819 y(enabled)30 b(b)m(y)h(default.)630 -2995 y Ft(promptvars)1110 3104 y Fu(If)50 b(set,)56 b(prompt)49 +%%Page: 71 77 +TeXDict begin 71 76 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(71)630 299 y Ft(progcomp_alias) +1110 408 y Fu(If)23 b(set,)j(and)d(programmable)h(completion)h(is)f +(enabled,)h(Bash)f(treats)h(a)f(com-)1110 518 y(mand)34 +b(name)h(that)g(do)s(esn't)f(ha)m(v)m(e)i(an)m(y)g(completions)f(as)g +(a)g(p)s(ossible)g(alias)1110 628 y(and)40 b(attempts)i(alias)h +(expansion.)72 b(If)41 b(it)g(has)g(an)g(alias,)k(Bash)c(attempts)1110 +737 y(programmable)28 b(completion)h(using)e(the)h(command)f(w)m(ord)h +(resulting)f(from)1110 847 y(the)k(expanded)e(alias.)630 +996 y Ft(promptvars)1110 1106 y Fu(If)50 b(set,)56 b(prompt)49 b(strings)h(undergo)g(parameter)h(expansion,)k(command)1110 -3214 y(substitution,)35 b(arithmetic)g(expansion,)g(and)e(quote)i(remo) -m(v)-5 b(al)35 b(after)f(b)s(eing)1110 3324 y(expanded)53 +1215 y(substitution,)35 b(arithmetic)g(expansion,)g(and)e(quote)i(remo) +m(v)-5 b(al)35 b(after)f(b)s(eing)1110 1325 y(expanded)53 b(as)h(describ)s(ed)e(b)s(elo)m(w)i(\(see)h(Section)f(6.9)h([Con)m -(trolling)g(the)1110 3433 y(Prompt],)30 b(page)h(94\).)42 +(trolling)g(the)1110 1434 y(Prompt],)30 b(page)h(97\).)42 b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)630 -3608 y Ft(restricted_shell)1110 3718 y Fu(The)40 b(shell)h(sets)g(this) +1584 y Ft(restricted_shell)1110 1693 y Fu(The)40 b(shell)h(sets)g(this) g(option)g(if)g(it)h(is)e(started)i(in)e(restricted)i(mo)s(de)e(\(see) -1110 3828 y(Section)c(6.10)g([The)f(Restricted)g(Shell],)i(page)e -(95\).)56 b(The)34 b(v)-5 b(alue)35 b(ma)m(y)h(not)1110 -3937 y(b)s(e)c(c)m(hanged.)49 b(This)32 b(is)h(not)h(reset)f(when)f -(the)h(startup)g(\014les)f(are)i(executed,)1110 4047 +1110 1803 y(Section)c(6.10)g([The)f(Restricted)g(Shell],)i(page)e +(99\).)56 b(The)34 b(v)-5 b(alue)35 b(ma)m(y)h(not)1110 +1913 y(b)s(e)c(c)m(hanged.)49 b(This)32 b(is)h(not)h(reset)f(when)f +(the)h(startup)g(\014les)f(are)i(executed,)1110 2022 y(allo)m(wing)k(the)e(startup)f(\014les)h(to)g(disco)m(v)m(er)h -(whether)f(or)f(not)i(a)f(shell)g(is)g(re-)1110 4156 -y(stricted.)630 4332 y Ft(shift_verbose)1110 4441 y Fu(If)g(this)g(is)g +(whether)f(or)f(not)i(a)f(shell)g(is)g(re-)1110 2132 +y(stricted.)630 2281 y Ft(shift_verbose)1110 2391 y Fu(If)g(this)g(is)g (set,)j(the)d Ft(shift)f Fu(builtin)h(prin)m(ts)f(an)h(error)g(message) -i(when)d(the)1110 4551 y(shift)30 b(coun)m(t)h(exceeds)g(the)g(n)m(um)m -(b)s(er)e(of)h(p)s(ositional)i(parameters.)630 4726 y -Ft(sourcepath)1110 4836 y Fu(If)22 b(set,)j(the)e Ft(source)e +i(when)d(the)1110 2500 y(shift)30 b(coun)m(t)h(exceeds)g(the)g(n)m(um)m +(b)s(er)e(of)h(p)s(ositional)i(parameters.)630 2649 y +Ft(sourcepath)1110 2759 y Fu(If)22 b(set,)j(the)e Ft(source)e Fu(builtin)h(uses)g(the)h(v)-5 b(alue)23 b(of)g Ft(PATH)e -Fu(to)j(\014nd)d(the)h(directory)1110 4945 y(con)m(taining)29 +Fu(to)j(\014nd)d(the)h(directory)1110 2869 y(con)m(taining)29 b(the)e(\014le)h(supplied)e(as)h(an)g(argumen)m(t.)40 -b(This)27 b(option)h(is)f(enabled)1110 5055 y(b)m(y)j(default.)630 -5230 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g Ft(echo)e +b(This)27 b(option)h(is)f(enabled)1110 2978 y(b)m(y)j(default.)630 +3127 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g Ft(echo)e Fu(builtin)h(expands)f(bac)m(kslash-escap)s(e)j(sequences)f(b)m(y)f -(de-)1110 5340 y(fault.)p eop end -%%Page: 70 76 -TeXDict begin 70 75 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(70)630 299 y(The)27 -b(return)f(status)i(when)f(listing)h(options)g(is)f(zero)i(if)e(all)i -Fr(optnames)i Fu(are)d(enabled,)g(non-)630 408 y(zero)40 -b(otherwise.)66 b(When)39 b(setting)h(or)f(unsetting)g(options,)i(the)e -(return)f(status)h(is)g(zero)630 518 y(unless)30 b(an)g -Fr(optname)36 b Fu(is)30 b(not)h(a)g(v)-5 b(alid)30 b(shell)h(option.) -150 759 y Fs(4.4)68 b(Sp)t(ecial)45 b(Builtins)150 918 +(de-)1110 3237 y(fault.)630 3386 y(The)c(return)f(status)i(when)f +(listing)h(options)g(is)f(zero)i(if)e(all)i Fr(optnames)i +Fu(are)d(enabled,)g(non-)630 3496 y(zero)40 b(otherwise.)66 +b(When)39 b(setting)h(or)f(unsetting)g(options,)i(the)e(return)f +(status)h(is)g(zero)630 3606 y(unless)30 b(an)g Fr(optname)36 +b Fu(is)30 b(not)h(a)g(v)-5 b(alid)30 b(shell)h(option.)150 +3836 y Fs(4.4)68 b(Sp)t(ecial)45 b(Builtins)150 3996 y Fu(F)-8 b(or)35 b(historical)h(reasons,)g(the)e Fm(posix)g Fu(standard)f(has)i(classi\014ed)f(sev)m(eral)i(builtin)e(commands)g -(as)h Fl(sp)-5 b(e-)150 1028 y(cial)p Fu(.)47 b(When)33 +(as)h Fl(sp)-5 b(e-)150 4105 y(cial)p Fu(.)47 b(When)33 b(Bash)f(is)h(executing)g(in)f Fm(posix)g Fu(mo)s(de,)h(the)g(sp)s (ecial)g(builtins)e(di\013er)i(from)f(other)g(builtin)150 -1137 y(commands)e(in)g(three)h(resp)s(ects:)199 1272 +4215 y(commands)e(in)g(three)h(resp)s(ects:)199 4344 y(1.)61 b(Sp)s(ecial)31 b(builtins)e(are)i(found)e(b)s(efore)h(shell)h -(functions)f(during)f(command)h(lo)s(okup.)199 1406 y(2.)61 +(functions)f(during)f(command)h(lo)s(okup.)199 4474 y(2.)61 b(If)30 b(a)h(sp)s(ecial)g(builtin)f(returns)f(an)h(error)g(status,)h -(a)g(non-in)m(teractiv)m(e)i(shell)d(exits.)199 1541 +(a)g(non-in)m(teractiv)m(e)i(shell)d(exits.)199 4603 y(3.)61 b(Assignmen)m(t)30 b(statemen)m(ts)h(preceding)f(the)f(command) g(sta)m(y)i(in)e(e\013ect)i(in)e(the)h(shell)f(en)m(vironmen)m(t)330 -1650 y(after)i(the)f(command)h(completes.)275 1810 y(When)36 +4713 y(after)i(the)f(command)h(completes.)275 4862 y(When)36 b(Bash)g(is)h(not)f(executing)i(in)e Fm(posix)f Fu(mo)s(de,)j(these)f (builtins)f(b)s(eha)m(v)m(e)h(no)f(di\013eren)m(tly)h(than)150 -1919 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e(commands.)41 +4972 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e(commands.)41 b(The)30 b(Bash)g Fm(posix)g Fu(mo)s(de)g(is)g(describ)s(ed)f(in)h -(Section)h(6.11)150 2029 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g(96.)275 -2164 y(These)f(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h(builtins:)390 -2298 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h(exit)g(export)f -(readonly)f(return)h(set)390 2408 y(shift)g(trap)h(unset)p -eop end -%%Page: 71 77 -TeXDict begin 71 76 bop 3659 -116 a Fu(71)150 299 y Fp(5)80 -b(Shell)53 b(V)-13 b(ariables)150 539 y Fu(This)21 b(c)m(hapter)i +(Section)h(6.11)150 5081 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g(99.)275 +5211 y(These)f(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h(builtins:)390 +5340 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h(exit)g(export)f +(readonly)f(return)h(set)p eop end +%%Page: 72 78 +TeXDict begin 72 77 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(72)390 299 y Ft(shift)46 +b(trap)h(unset)p eop end +%%Page: 73 79 +TeXDict begin 73 78 bop 3659 -116 a Fu(73)150 299 y Fp(5)80 +b(Shell)53 b(V)-13 b(ariables)150 522 y Fu(This)21 b(c)m(hapter)i (describ)s(es)e(the)i(shell)f(v)-5 b(ariables)23 b(that)f(Bash)h(uses.) 37 b(Bash)23 b(automatically)h(assigns)f(default)150 -648 y(v)-5 b(alues)31 b(to)g(a)g(n)m(um)m(b)s(er)e(of)h(v)-5 -b(ariables.)150 892 y Fs(5.1)68 b(Bourne)45 b(Shell)g(V)-11 -b(ariables)150 1051 y Fu(Bash)30 b(uses)g(certain)h(shell)g(v)-5 +631 y(v)-5 b(alues)31 b(to)g(a)g(n)m(um)m(b)s(er)e(of)h(v)-5 +b(ariables.)150 867 y Fs(5.1)68 b(Bourne)45 b(Shell)g(V)-11 +b(ariables)150 1027 y Fu(Bash)30 b(uses)g(certain)h(shell)g(v)-5 b(ariables)31 b(in)f(the)g(same)h(w)m(a)m(y)g(as)g(the)f(Bourne)g -(shell.)41 b(In)30 b(some)g(cases,)i(Bash)150 1161 y(assigns)f(a)f +(shell.)41 b(In)30 b(some)g(cases,)i(Bash)150 1136 y(assigns)f(a)f (default)h(v)-5 b(alue)31 b(to)g(the)f(v)-5 b(ariable.)150 -1323 y Ft(CDPATH)192 b Fu(A)39 b(colon-separated)i(list)e(of)g +1291 y Ft(CDPATH)192 b Fu(A)39 b(colon-separated)i(list)e(of)g (directories)h(used)f(as)g(a)g(searc)m(h)h(path)e(for)h(the)g -Ft(cd)f Fu(builtin)630 1433 y(command.)150 1594 y Ft(HOME)288 +Ft(cd)f Fu(builtin)630 1401 y(command.)150 1556 y Ft(HOME)288 b Fu(The)23 b(curren)m(t)h(user's)f(home)g(directory;)k(the)d(default)g (for)f(the)h Ft(cd)f Fu(builtin)g(command.)38 b(The)630 -1704 y(v)-5 b(alue)37 b(of)f(this)g(v)-5 b(ariable)37 +1665 y(v)-5 b(alue)37 b(of)f(this)g(v)-5 b(ariable)37 b(is)g(also)g(used)e(b)m(y)h(tilde)h(expansion)f(\(see)i(Section)f -(3.5.2)h([Tilde)630 1813 y(Expansion],)30 b(page)h(22\).)150 -1975 y Ft(IFS)336 b Fu(A)25 b(list)i(of)e(c)m(haracters)i(that)f +(3.5.2)h([Tilde)630 1775 y(Expansion],)30 b(page)h(23\).)150 +1930 y Ft(IFS)336 b Fu(A)25 b(list)i(of)e(c)m(haracters)i(that)f (separate)g(\014elds;)h(used)e(when)f(the)i(shell)f(splits)h(w)m(ords)e -(as)i(part)630 2084 y(of)31 b(expansion.)150 2246 y Ft(MAIL)288 +(as)i(part)630 2039 y(of)31 b(expansion.)150 2194 y Ft(MAIL)288 b Fu(If)44 b(this)g(parameter)h(is)g(set)g(to)g(a)f(\014lename)h(or)f -(directory)h(name)g(and)f(the)g Ft(MAILPATH)630 2355 +(directory)h(name)g(and)f(the)g Ft(MAILPATH)630 2304 y Fu(v)-5 b(ariable)32 b(is)e(not)h(set,)h(Bash)f(informs)f(the)h(user) f(of)h(the)g(arriv)-5 b(al)31 b(of)g(mail)g(in)g(the)g(sp)s(eci\014ed) -630 2465 y(\014le)f(or)h(Maildir-format)g(directory)-8 -b(.)150 2626 y Ft(MAILPATH)96 b Fu(A)33 b(colon-separated)i(list)f(of)f +630 2413 y(\014le)f(or)h(Maildir-format)g(directory)-8 +b(.)150 2568 y Ft(MAILPATH)96 b Fu(A)33 b(colon-separated)i(list)f(of)f (\014lenames)h(whic)m(h)f(the)g(shell)g(p)s(erio)s(dically)h(c)m(hec)m -(ks)g(for)f(new)630 2736 y(mail.)60 b(Eac)m(h)37 b(list)g(en)m(try)g +(ks)g(for)f(new)630 2678 y(mail.)60 b(Eac)m(h)37 b(list)g(en)m(try)g (can)g(sp)s(ecify)f(the)h(message)h(that)f(is)g(prin)m(ted)f(when)f -(new)h(mail)630 2845 y(arriv)m(es)31 b(in)g(the)g(mail)g(\014le)g(b)m +(new)h(mail)630 2787 y(arriv)m(es)31 b(in)g(the)g(mail)g(\014le)g(b)m (y)g(separating)h(the)f(\014lename)g(from)f(the)h(message)h(with)e(a)i -(`)p Ft(?)p Fu('.)630 2955 y(When)g(used)f(in)h(the)g(text)i(of)e(the)g +(`)p Ft(?)p Fu('.)630 2897 y(When)g(used)f(in)h(the)g(text)i(of)e(the)g (message,)i Ft($_)e Fu(expands)f(to)i(the)f(name)g(of)h(the)f(curren)m -(t)630 3064 y(mail)f(\014le.)150 3226 y Ft(OPTARG)192 +(t)630 3006 y(mail)f(\014le.)150 3161 y Ft(OPTARG)192 b Fu(The)30 b(v)-5 b(alue)31 b(of)f(the)h(last)g(option)g(argumen)m(t)g (pro)s(cessed)f(b)m(y)g(the)g Ft(getopts)f Fu(builtin.)150 -3387 y Ft(OPTIND)192 b Fu(The)30 b(index)g(of)g(the)h(last)g(option)g +3316 y Ft(OPTIND)192 b Fu(The)30 b(index)g(of)g(the)h(last)g(option)g (argumen)m(t)g(pro)s(cessed)f(b)m(y)g(the)g Ft(getopts)f -Fu(builtin.)150 3548 y Ft(PATH)288 b Fu(A)32 b(colon-separated)i(list)f +Fu(builtin.)150 3471 y Ft(PATH)288 b Fu(A)32 b(colon-separated)i(list)f (of)f(directories)h(in)e(whic)m(h)h(the)g(shell)g(lo)s(oks)h(for)f -(commands.)45 b(A)630 3658 y(zero-length)e(\(n)m(ull\))g(directory)f +(commands.)45 b(A)630 3581 y(zero-length)e(\(n)m(ull\))g(directory)f (name)g(in)g(the)g(v)-5 b(alue)42 b(of)g Ft(PATH)f Fu(indicates)i(the)f -(curren)m(t)630 3768 y(directory)-8 b(.)49 b(A)33 b(n)m(ull)f +(curren)m(t)630 3690 y(directory)-8 b(.)49 b(A)33 b(n)m(ull)f (directory)i(name)e(ma)m(y)i(app)s(ear)e(as)h(t)m(w)m(o)h(adjacen)m(t)g -(colons,)g(or)f(as)g(an)630 3877 y(initial)f(or)e(trailing)h(colon.)150 -4039 y Ft(PS1)336 b Fu(The)35 b(primary)f(prompt)h(string.)55 +(colons,)g(or)f(as)g(an)630 3800 y(initial)f(or)e(trailing)h(colon.)150 +3955 y Ft(PS1)336 b Fu(The)35 b(primary)f(prompt)h(string.)55 b(The)35 b(default)h(v)-5 b(alue)35 b(is)h(`)p Ft(\\s-\\v\\$)28 -b Fu('.)56 b(See)36 b(Section)g(6.9)630 4148 y([Con)m(trolling)42 -b(the)e(Prompt],)j(page)e(94,)j(for)c(the)g(complete)i(list)f(of)f -(escap)s(e)h(sequences)630 4258 y(that)31 b(are)g(expanded)e(b)s(efore) -h Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4419 y Ft(PS2)336 -b Fu(The)30 b(secondary)g(prompt)g(string.)41 b(The)29 -b(default)i(v)-5 b(alue)31 b(is)f(`)p Ft(>)g Fu('.)150 -4663 y Fs(5.2)68 b(Bash)45 b(V)-11 b(ariables)150 4822 +b Fu('.)56 b(See)36 b(Section)g(6.9)630 4064 y([Con)m(trolling)42 +b(the)e(Prompt],)j(page)e(97,)j(for)c(the)g(complete)i(list)f(of)f +(escap)s(e)h(sequences)630 4174 y(that)31 b(are)g(expanded)e(b)s(efore) +h Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4329 y Ft(PS2)336 +b Fu(The)28 b(secondary)g(prompt)g(string.)40 b(The)28 +b(default)g(v)-5 b(alue)29 b(is)g(`)p Ft(>)h Fu('.)40 +b Ft(PS2)28 b Fu(is)g(expanded)g(in)g(the)630 4438 y(same)j(w)m(a)m(y)g +(as)g Ft(PS1)e Fu(b)s(efore)h(b)s(eing)g(displa)m(y)m(ed.)150 +4674 y Fs(5.2)68 b(Bash)45 b(V)-11 b(ariables)150 4834 y Fu(These)45 b(v)-5 b(ariables)46 b(are)g(set)g(or)f(used)f(b)m(y)h (Bash,)50 b(but)44 b(other)i(shells)f(do)h(not)f(normally)h(treat)g -(them)150 4932 y(sp)s(ecially)-8 b(.)275 5068 y(A)24 +(them)150 4943 y(sp)s(ecially)-8 b(.)275 5076 y(A)24 b(few)g(v)-5 b(ariables)24 b(used)g(b)m(y)f(Bash)i(are)f(describ)s(ed)f (in)h(di\013eren)m(t)g(c)m(hapters:)38 b(v)-5 b(ariables)25 -b(for)f(con)m(trolling)150 5178 y(the)31 b(job)f(con)m(trol)h +b(for)f(con)m(trolling)150 5185 y(the)31 b(job)f(con)m(trol)h (facilities)i(\(see)e(Section)g(7.3)h([Job)e(Con)m(trol)h(V)-8 -b(ariables],)32 b(page)g(103\).)150 5340 y Ft(BASH)288 +b(ariables],)32 b(page)g(106\).)150 5340 y Ft(BASH)288 b Fu(The)30 b(full)g(pathname)g(used)g(to)h(execute)h(the)e(curren)m(t) g(instance)h(of)g(Bash.)p eop end -%%Page: 72 78 -TeXDict begin 72 77 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(72)150 299 y Ft(BASHOPTS)96 +%%Page: 74 80 +TeXDict begin 74 79 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(74)150 299 y Ft(BASHOPTS)96 b Fu(A)31 b(colon-separated)h(list)f(of)g(enabled)f(shell)h(options.)41 b(Eac)m(h)31 b(w)m(ord)f(in)g(the)h(list)g(is)g(a)g(v)-5 b(alid)630 408 y(argumen)m(t)37 b(for)g(the)g Ft(-s)f Fu(option)i(to)f(the)g Ft(shopt)f Fu(builtin)g(command)h(\(see)g -(Section)h(4.3.2)630 518 y([The)e(Shopt)g(Builtin],)i(page)f(64\).)60 +(Section)h(4.3.2)630 518 y([The)e(Shopt)g(Builtin],)i(page)f(65\).)60 b(The)36 b(options)h(app)s(earing)f(in)g Ft(BASHOPTS)e Fu(are)i(those)630 628 y(rep)s(orted)e(as)h(`)p Ft(on)p Fu(')f(b)m(y)h(`)p Ft(shopt)p Fu('.)53 b(If)34 b(this)g(v)-5 @@ -13210,774 +13428,828 @@ b(ariable)36 b(is)f(in)f(the)h(en)m(vironmen)m(t)g(when)f(Bash)630 737 y(starts)25 b(up,)f(eac)m(h)i(shell)e(option)h(in)e(the)i(list)g (will)f(b)s(e)g(enabled)g(b)s(efore)g(reading)g(an)m(y)g(startup)630 847 y(\014les.)41 b(This)29 b(v)-5 b(ariable)31 b(is)g(readonly)-8 -b(.)150 1029 y Ft(BASHPID)144 b Fu(Expands)35 b(to)i(the)f(pro)s(cess)f +b(.)150 1044 y Ft(BASHPID)144 b Fu(Expands)35 b(to)i(the)f(pro)s(cess)f (ID)i(of)f(the)g(curren)m(t)g(Bash)g(pro)s(cess.)58 b(This)35 -b(di\013ers)h(from)g Ft($$)630 1139 y Fu(under)31 b(certain)j +b(di\013ers)h(from)g Ft($$)630 1154 y Fu(under)31 b(certain)j (circumstances,)h(suc)m(h)e(as)g(subshells)f(that)i(do)f(not)g(require) -g(Bash)g(to)h(b)s(e)630 1249 y(re-initialized.)150 1431 -y Ft(BASH_ALIASES)630 1541 y Fu(An)40 b(asso)s(ciativ)m(e)j(arra)m(y)d -(v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f -(in)m(ternal)h(list)630 1650 y(of)c(aliases)h(as)f(main)m(tained)g(b)m -(y)g(the)g Ft(alias)e Fu(builtin.)59 b(\(see)37 b(Section)h(4.1)f -([Bourne)g(Shell)630 1760 y(Builtins],)31 b(page)g(42\).)42 -b(Elemen)m(ts)31 b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)g(the) -g(alias)h(list;)h(ho)m(w-)630 1870 y(ev)m(er,)k(unsetting)f(arra)m(y)g -(elemen)m(ts)g(curren)m(tly)g(do)s(es)f(not)g(cause)h(aliases)h(to)f(b) -s(e)f(remo)m(v)m(ed)630 1979 y(from)25 b(the)h(alias)h(list.)40 -b(If)25 b Ft(BASH_ALIASES)d Fu(is)k(unset,)g(it)g(loses)h(its)f(sp)s -(ecial)g(prop)s(erties,)g(ev)m(en)630 2089 y(if)k(it)h(is)g(subsequen)m -(tly)f(reset.)150 2271 y Ft(BASH_ARGC)630 2381 y Fu(An)39 -b(arra)m(y)g(v)-5 b(ariable)40 b(whose)f(v)-5 b(alues)39 -b(are)h(the)f(n)m(um)m(b)s(er)f(of)h(parameters)g(in)g(eac)m(h)h(frame) -630 2491 y(of)i(the)g(curren)m(t)g(bash)f(execution)i(call)g(stac)m(k.) -76 b(The)42 b(n)m(um)m(b)s(er)e(of)i(parameters)g(to)h(the)630 -2600 y(curren)m(t)38 b(subroutine)f(\(shell)i(function)e(or)i(script)f +g(Bash)g(to)h(b)s(e)630 1263 y(re-initialized.)57 b(Assignmen)m(ts)35 +b(to)h Ft(BASHPID)d Fu(ha)m(v)m(e)j(no)f(e\013ect.)56 +b(If)34 b Ft(BASHPID)f Fu(is)i(unset,)h(it)630 1373 y(loses)31 +b(its)g(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)150 1570 y Ft(BASH_ALIASES)630 +1680 y Fu(An)40 b(asso)s(ciativ)m(e)j(arra)m(y)d(v)-5 +b(ariable)41 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f(in)m +(ternal)h(list)630 1789 y(of)c(aliases)h(as)f(main)m(tained)g(b)m(y)g +(the)g Ft(alias)e Fu(builtin.)59 b(\(see)37 b(Section)h(4.1)f([Bourne)g +(Shell)630 1899 y(Builtins],)31 b(page)g(43\).)42 b(Elemen)m(ts)31 +b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)g(the)g(alias)h(list;)h +(ho)m(w-)630 2008 y(ev)m(er,)k(unsetting)f(arra)m(y)g(elemen)m(ts)g +(curren)m(tly)g(do)s(es)f(not)g(cause)h(aliases)h(to)f(b)s(e)f(remo)m +(v)m(ed)630 2118 y(from)25 b(the)h(alias)h(list.)40 b(If)25 +b Ft(BASH_ALIASES)d Fu(is)k(unset,)g(it)g(loses)h(its)f(sp)s(ecial)g +(prop)s(erties,)g(ev)m(en)630 2228 y(if)k(it)h(is)g(subsequen)m(tly)f +(reset.)150 2425 y Ft(BASH_ARGC)630 2534 y Fu(An)39 b(arra)m(y)g(v)-5 +b(ariable)40 b(whose)f(v)-5 b(alues)39 b(are)h(the)f(n)m(um)m(b)s(er)f +(of)h(parameters)g(in)g(eac)m(h)h(frame)630 2644 y(of)i(the)g(curren)m +(t)g(bash)f(execution)i(call)g(stac)m(k.)76 b(The)42 +b(n)m(um)m(b)s(er)e(of)i(parameters)g(to)h(the)630 2754 +y(curren)m(t)38 b(subroutine)f(\(shell)i(function)e(or)i(script)f (executed)h(with)e Ft(.)h Fu(or)g Ft(source)p Fu(\))f(is)h(at)630 -2710 y(the)27 b(top)g(of)g(the)g(stac)m(k.)41 b(When)27 +2863 y(the)27 b(top)g(of)g(the)g(stac)m(k.)41 b(When)27 b(a)g(subroutine)f(is)h(executed,)i(the)e(n)m(um)m(b)s(er)f(of)h -(parameters)630 2819 y(passed)44 b(is)h(pushed)e(on)m(to)j +(parameters)630 2973 y(passed)44 b(is)h(pushed)e(on)m(to)j Ft(BASH_ARGC)p Fu(.)81 b(The)44 b(shell)h(sets)g Ft(BASH_ARGC)e -Fu(only)i(when)e(in)630 2929 y(extended)34 b(debugging)f(mo)s(de)g -(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)g(64,)g(for) -630 3039 y(a)c(description)f(of)h(the)f Ft(extdebug)e -Fu(option)j(to)g(the)g Ft(shopt)e Fu(builtin\).)150 3221 -y Ft(BASH_ARGV)630 3331 y Fu(An)24 b(arra)m(y)g(v)-5 +Fu(only)i(when)e(in)630 3082 y(extended)34 b(debugging)f(mo)s(de)g +(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)g(65,)g(for) +630 3192 y(a)e(description)g(of)f(the)h Ft(extdebug)d +Fu(option)j(to)h(the)e Ft(shopt)g Fu(builtin\).)47 b(Setting)33 +b Ft(extdebug)630 3302 y Fu(after)c(the)g(shell)g(has)g(started)g(to)g +(execute)i(a)e(script,)g(or)g(referencing)g(this)f(v)-5 +b(ariable)30 b(when)630 3411 y Ft(extdebug)e Fu(is)j(not)f(set,)h(ma)m +(y)g(result)g(in)f(inconsisten)m(t)h(v)-5 b(alues.)150 +3608 y Ft(BASH_ARGV)630 3718 y Fu(An)24 b(arra)m(y)g(v)-5 b(ariable)25 b(con)m(taining)h(all)f(of)f(the)h(parameters)f(in)g(the)g -(curren)m(t)g(bash)g(execution)630 3440 y(call)35 b(stac)m(k.)53 +(curren)m(t)g(bash)g(execution)630 3828 y(call)35 b(stac)m(k.)53 b(The)34 b(\014nal)g(parameter)g(of)g(the)g(last)h(subroutine)e(call)i -(is)f(at)h(the)f(top)h(of)f(the)630 3550 y(stac)m(k;)28 +(is)f(at)h(the)f(top)h(of)f(the)630 3937 y(stac)m(k;)28 b(the)c(\014rst)f(parameter)i(of)f(the)g(initial)i(call)f(is)f(at)h -(the)f(b)s(ottom.)39 b(When)24 b(a)g(subroutine)630 3660 +(the)f(b)s(ottom.)39 b(When)24 b(a)g(subroutine)630 4047 y(is)40 b(executed,)j(the)d(parameters)h(supplied)d(are)i(pushed)f(on)m -(to)i Ft(BASH_ARGV)p Fu(.)66 b(The)40 b(shell)630 3769 +(to)i Ft(BASH_ARGV)p Fu(.)66 b(The)40 b(shell)630 4156 y(sets)28 b Ft(BASH_ARGV)e Fu(only)i(when)f(in)h(extended)g(debugging)g -(mo)s(de)g(\(see)h(Section)f(4.3.2)i([The)630 3879 y(Shopt)g(Builtin],) -h(page)g(64,)g(for)g(a)f(description)h(of)f(the)h Ft(extdebug)d -Fu(option)j(to)g(the)f Ft(shopt)630 3988 y Fu(builtin\).)150 -4171 y Ft(BASH_CMDS)630 4281 y Fu(An)k(asso)s(ciativ)m(e)i(arra)m(y)f -(v)-5 b(ariable)35 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f -(in)m(ternal)h(hash)630 4390 y(table)c(of)g(commands)f(as)g(main)m -(tained)h(b)m(y)g(the)f Ft(hash)f Fu(builtin)h(\(see)h(Section)g(4.1)h -([Bourne)630 4500 y(Shell)42 b(Builtins],)k(page)d(42\).)77 -b(Elemen)m(ts)43 b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)f(the) -i(hash)630 4609 y(table;)k(ho)m(w)m(ev)m(er,)e(unsetting)c(arra)m(y)g -(elemen)m(ts)i(curren)m(tly)d(do)s(es)h(not)g(cause)g(command)630 -4719 y(names)36 b(to)g(b)s(e)f(remo)m(v)m(ed)i(from)e(the)h(hash)f -(table.)58 b(If)36 b Ft(BASH_CMDS)d Fu(is)j(unset,)h(it)f(loses)h(its) -630 4829 y(sp)s(ecial)31 b(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g -(subsequen)m(tly)f(reset.)150 5011 y Ft(BASH_COMMAND)630 -5121 y Fu(The)39 b(command)h(curren)m(tly)g(b)s(eing)f(executed)i(or)e +(mo)s(de)g(\(see)h(Section)f(4.3.2)i([The)630 4266 y(Shopt)g(Builtin],) +h(page)g(65,)g(for)g(a)f(description)h(of)f(the)h Ft(extdebug)d +Fu(option)j(to)g(the)f Ft(shopt)630 4376 y Fu(builtin\).)64 +b(Setting)38 b Ft(extdebug)e Fu(after)j(the)f(shell)g(has)g(started)g +(to)h(execute)g(a)g(script,)h(or)630 4485 y(referencing)35 +b(this)f(v)-5 b(ariable)35 b(when)e Ft(extdebug)f Fu(is)j(not)f(set,)j +(ma)m(y)e(result)f(in)g(inconsisten)m(t)630 4595 y(v)-5 +b(alues.)150 4792 y Ft(BASH_ARGV0)630 4902 y Fu(When)31 +b(referenced,)g(this)g(v)-5 b(ariable)32 b(expands)e(to)h(the)h(name)f +(of)g(the)g(shell)g(or)g(shell)g(script)630 5011 y(\(iden)m(tical)42 +b(to)e Ft($0)p Fu(;)j(See)d(Section)g(3.4.2)i([Sp)s(ecial)e(P)m +(arameters],)j(page)d(21,)j(for)c(the)h(de-)630 5121 +y(scription)32 b(of)g(sp)s(ecial)g(parameter)g(0\).)45 +b(Assignmen)m(t)32 b(to)h Ft(BASH_ARGV0)c Fu(causes)j(the)f(v)-5 +b(alue)630 5230 y(assigned)34 b(to)h(also)g(b)s(e)e(assigned)h(to)g +Ft($0)p Fu(.)51 b(If)33 b Ft(BASH_ARGV0)f Fu(is)h(unset,)i(it)f(loses)h +(its)f(sp)s(ecial)630 5340 y(prop)s(erties,)c(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)p eop end +%%Page: 75 81 +TeXDict begin 75 80 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(75)150 299 y Ft(BASH_CMDS)630 +408 y Fu(An)34 b(asso)s(ciativ)m(e)i(arra)m(y)f(v)-5 +b(ariable)35 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f(in)m +(ternal)h(hash)630 518 y(table)c(of)g(commands)f(as)g(main)m(tained)h +(b)m(y)g(the)f Ft(hash)f Fu(builtin)h(\(see)h(Section)g(4.1)h([Bourne) +630 628 y(Shell)42 b(Builtins],)k(page)d(43\).)77 b(Elemen)m(ts)43 +b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)f(the)i(hash)630 +737 y(table;)k(ho)m(w)m(ev)m(er,)e(unsetting)c(arra)m(y)g(elemen)m(ts)i +(curren)m(tly)d(do)s(es)h(not)g(cause)g(command)630 847 +y(names)36 b(to)g(b)s(e)f(remo)m(v)m(ed)i(from)e(the)h(hash)f(table.)58 +b(If)36 b Ft(BASH_CMDS)d Fu(is)j(unset,)h(it)f(loses)h(its)630 +956 y(sp)s(ecial)31 b(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)150 1129 y Ft(BASH_COMMAND)630 +1238 y Fu(The)39 b(command)h(curren)m(tly)g(b)s(eing)f(executed)i(or)e (ab)s(out)h(to)g(b)s(e)f(executed,)44 b(unless)39 b(the)630 -5230 y(shell)g(is)g(executing)g(a)g(command)g(as)g(the)f(result)h(of)g +1348 y(shell)g(is)g(executing)g(a)g(command)g(as)g(the)f(result)h(of)g (a)g(trap,)i(in)d(whic)m(h)g(case)i(it)f(is)g(the)630 -5340 y(command)30 b(executing)i(at)f(the)f(time)h(of)g(the)g(trap.)p -eop end -%%Page: 73 79 -TeXDict begin 73 78 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(73)150 299 y Ft(BASH_COMPAT)630 -408 y Fu(The)33 b(v)-5 b(alue)34 b(is)f(used)g(to)h(set)f(the)h -(shell's)g(compatibilit)m(y)h(lev)m(el.)51 b(See)34 b(Section)g(4.3.2)h -([The)630 518 y(Shopt)40 b(Builtin],)45 b(page)c(64,)k(for)c(a)g -(description)g(of)g(the)g(v)-5 b(arious)41 b(compatibilit)m(y)i(lev)m -(els)630 628 y(and)31 b(their)g(e\013ects.)45 b(The)31 -b(v)-5 b(alue)31 b(ma)m(y)h(b)s(e)f(a)h(decimal)g(n)m(um)m(b)s(er)e -(\(e.g.,)j(4.2\))g(or)e(an)h(in)m(teger)630 737 y(\(e.g.,)39 -b(42\))f(corresp)s(onding)d(to)i(the)f(desired)f(compatibilit)m(y)k -(lev)m(el.)59 b(If)36 b Ft(BASH_COMPAT)d Fu(is)630 847 -y(unset)k(or)g(set)h(to)g(the)g(empt)m(y)f(string,)j(the)d -(compatibilit)m(y)j(lev)m(el)f(is)e(set)h(to)g(the)g(default)630 -956 y(for)i(the)h(curren)m(t)f(v)m(ersion.)72 b(If)40 +1457 y(command)30 b(executing)i(at)f(the)f(time)h(of)g(the)g(trap.)150 +1630 y Ft(BASH_COMPAT)630 1739 y Fu(The)i(v)-5 b(alue)34 +b(is)f(used)g(to)h(set)f(the)h(shell's)g(compatibilit)m(y)h(lev)m(el.) +51 b(See)34 b(Section)g(4.3.2)h([The)630 1849 y(Shopt)40 +b(Builtin],)45 b(page)c(65,)k(for)c(a)g(description)g(of)g(the)g(v)-5 +b(arious)41 b(compatibilit)m(y)i(lev)m(els)630 1958 y(and)31 +b(their)g(e\013ects.)45 b(The)31 b(v)-5 b(alue)31 b(ma)m(y)h(b)s(e)f(a) +h(decimal)g(n)m(um)m(b)s(er)e(\(e.g.,)j(4.2\))g(or)e(an)h(in)m(teger) +630 2068 y(\(e.g.,)39 b(42\))f(corresp)s(onding)d(to)i(the)f(desired)f +(compatibilit)m(y)k(lev)m(el.)59 b(If)36 b Ft(BASH_COMPAT)d +Fu(is)630 2178 y(unset)k(or)g(set)h(to)g(the)g(empt)m(y)f(string,)j +(the)d(compatibilit)m(y)j(lev)m(el)f(is)e(set)h(to)g(the)g(default)630 +2287 y(for)i(the)h(curren)m(t)f(v)m(ersion.)72 b(If)40 b Ft(BASH_COMPAT)e Fu(is)i(set)h(to)h(a)e(v)-5 b(alue)41 -b(that)h(is)e(not)h(one)g(of)630 1066 y(the)f(v)-5 b(alid)40 +b(that)h(is)e(not)h(one)g(of)630 2397 y(the)f(v)-5 b(alid)40 b(compatibilit)m(y)i(lev)m(els,)i(the)c(shell)g(prin)m(ts)f(an)h(error) -f(message)i(and)f(sets)g(the)630 1176 y(compatibilit)m(y)23 +f(message)i(and)f(sets)g(the)630 2506 y(compatibilit)m(y)23 b(lev)m(el)f(to)f(the)f(default)h(for)f(the)g(curren)m(t)g(v)m(ersion.) -38 b(The)20 b(v)-5 b(alid)21 b(compatibilit)m(y)630 1285 +38 b(The)20 b(v)-5 b(alid)21 b(compatibilit)m(y)630 2616 y(lev)m(els)40 b(corresp)s(ond)e(to)h(the)g(compatibilit)m(y)i(options) e(accepted)h(b)m(y)f(the)g Ft(shopt)e Fu(builtin)630 -1395 y(describ)s(ed)20 b(ab)s(o)m(v)m(e)i(\(for)g(example,)h +2725 y(describ)s(ed)20 b(ab)s(o)m(v)m(e)i(\(for)g(example,)h Fr(compat42)31 b Fu(means)21 b(that)g(4.2)i(and)d(42)i(are)g(v)-5 -b(alid)21 b(v)-5 b(alues\).)630 1504 y(The)30 b(curren)m(t)g(v)m +b(alid)21 b(v)-5 b(alues\).)630 2835 y(The)30 b(curren)m(t)g(v)m (ersion)h(is)f(also)i(a)e(v)-5 b(alid)31 b(v)-5 b(alue.)150 -1655 y Ft(BASH_ENV)96 b Fu(If)28 b(this)g(v)-5 b(ariable)30 +3007 y Ft(BASH_ENV)96 b Fu(If)28 b(this)g(v)-5 b(ariable)30 b(is)e(set)h(when)f(Bash)g(is)h(in)m(v)m(ok)m(ed)h(to)f(execute)h(a)e -(shell)h(script,)g(its)g(v)-5 b(alue)29 b(is)630 1765 +(shell)h(script,)g(its)g(v)-5 b(alue)29 b(is)630 3117 y(expanded)k(and)h(used)g(as)g(the)h(name)f(of)g(a)h(startup)f(\014le)g -(to)h(read)f(b)s(efore)g(executing)i(the)630 1874 y(script.)41 -b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(84.)150 -2025 y Ft(BASH_EXECUTION_STRING)630 2134 y Fu(The)f(command)g(argumen)m +(to)h(read)f(b)s(efore)g(executing)i(the)630 3226 y(script.)41 +b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(87.)150 +3399 y Ft(BASH_EXECUTION_STRING)630 3508 y Fu(The)f(command)g(argumen)m (t)h(to)g(the)g Ft(-c)e Fu(in)m(v)m(o)s(cation)k(option.)150 -2285 y Ft(BASH_LINENO)630 2395 y Fu(An)62 b(arra)m(y)i(v)-5 +3680 y Ft(BASH_LINENO)630 3790 y Fu(An)62 b(arra)m(y)i(v)-5 b(ariable)63 b(whose)g(mem)m(b)s(ers)e(are)j(the)e(line)h(n)m(um)m(b)s -(ers)f(in)g(source)h(\014les)630 2504 y(where)46 b(eac)m(h)i(corresp)s +(ers)f(in)g(source)h(\014les)630 3900 y(where)46 b(eac)m(h)i(corresp)s (onding)d(mem)m(b)s(er)h(of)h Fr(FUNCNAME)53 b Fu(w)m(as)47 -b(in)m(v)m(ok)m(ed.)91 b Ft(${BASH_)630 2614 y(LINENO[$i]})39 +b(in)m(v)m(ok)m(ed.)91 b Ft(${BASH_)630 4009 y(LINENO[$i]})39 b Fu(is)i(the)h(line)g(n)m(um)m(b)s(er)e(in)i(the)f(source)h(\014le)g -(\()p Ft(${BASH_SOURCE[$i+1]})p Fu(\))630 2724 y(where)d +(\()p Ft(${BASH_SOURCE[$i+1]})p Fu(\))630 4119 y(where)d Ft(${FUNCNAME[$i]})c Fu(w)m(as)k(called)i(\(or)e Ft (${BASH_LINENO[$i-1]})34 b Fu(if)39 b(referenced)630 -2833 y(within)30 b(another)g(shell)h(function\).)41 b(Use)31 +4228 y(within)30 b(another)g(shell)h(function\).)41 b(Use)31 b Ft(LINENO)d Fu(to)j(obtain)g(the)g(curren)m(t)f(line)h(n)m(um)m(b)s -(er.)150 2984 y Ft(BASH_LOADABLES_PATH)630 3093 y Fu(A)39 +(er.)150 4401 y Ft(BASH_LOADABLES_PATH)630 4510 y Fu(A)39 b(colon-separated)i(list)f(of)f(directories)h(in)f(whic)m(h)g(the)g -(shell)h(lo)s(oks)f(for)g(dynamically)630 3203 y(loadable)32 +(shell)h(lo)s(oks)f(for)g(dynamically)630 4620 y(loadable)32 b(builtins)d(sp)s(eci\014ed)h(b)m(y)g(the)h Ft(enable)e -Fu(command.)150 3354 y Ft(BASH_REMATCH)630 3463 y Fu(An)43 +Fu(command.)150 4792 y Ft(BASH_REMATCH)630 4902 y Fu(An)43 b(arra)m(y)i(v)-5 b(ariable)44 b(whose)g(mem)m(b)s(ers)f(are)h (assigned)g(b)m(y)f(the)h(`)p Ft(=~)p Fu(')g(binary)f(op)s(erator)630 -3573 y(to)37 b(the)f Ft([[)g Fu(conditional)i(command)e(\(see)h +5011 y(to)37 b(the)f Ft([[)g Fu(conditional)i(command)e(\(see)h (Section)g(3.2.4.2)i([Conditional)e(Constructs],)630 -3682 y(page)e(10\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f +5121 y(page)e(11\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f (the)g(p)s(ortion)f(of)h(the)g(string)g(matc)m(hing)h(the)630 -3792 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27 +5230 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27 b(elemen)m(t)j(with)d(index)h Fr(n)f Fu(is)h(the)g(p)s(ortion)g(of)g -(the)g(string)630 3902 y(matc)m(hing)j(the)g Fr(n)p Fu(th)f(paren)m +(the)g(string)630 5340 y(matc)m(hing)j(the)g Fr(n)p Fu(th)f(paren)m (thesized)h(sub)s(expression.)39 b(This)29 b(v)-5 b(ariable)31 -b(is)g(read-only)-8 b(.)150 4052 y Ft(BASH_SOURCE)630 -4162 y Fu(An)40 b(arra)m(y)h(v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers) -g(are)h(the)g(source)f(\014lenames)h(where)f(the)g(corre-)630 -4271 y(sp)s(onding)27 b(shell)i(function)f(names)g(in)g(the)h +b(is)g(read-only)-8 b(.)p eop end +%%Page: 76 82 +TeXDict begin 76 81 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(76)150 299 y Ft(BASH_SOURCE)630 +408 y Fu(An)40 b(arra)m(y)h(v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers)g +(are)h(the)g(source)f(\014lenames)h(where)f(the)g(corre-)630 +518 y(sp)s(onding)27 b(shell)i(function)f(names)g(in)g(the)h Ft(FUNCNAME)d Fu(arra)m(y)j(v)-5 b(ariable)30 b(are)f(de\014ned.)38 -b(The)630 4381 y(shell)26 b(function)g Ft(${FUNCNAME[$i]})c +b(The)630 628 y(shell)26 b(function)g Ft(${FUNCNAME[$i]})c Fu(is)k(de\014ned)f(in)g(the)h(\014le)h Ft(${BASH_SOURCE[$i]})21 -b Fu(and)630 4491 y(called)32 b(from)d Ft(${BASH_SOURCE[$i+1]})150 -4641 y(BASH_SUBSHELL)630 4751 y Fu(Incremen)m(ted)24 -b(b)m(y)f(one)h(within)f(eac)m(h)i(subshell)d(or)i(subshell)e(en)m -(vironmen)m(t)i(when)f(the)h(shell)630 4861 y(b)s(egins)30 -b(executing)h(in)f(that)h(en)m(vironmen)m(t.)42 b(The)30 -b(initial)h(v)-5 b(alue)31 b(is)f(0.)150 5011 y Ft(BASH_VERSINFO)630 -5121 y Fu(A)36 b(readonly)g(arra)m(y)g(v)-5 b(ariable)37 -b(\(see)f(Section)h(6.7)g([Arra)m(ys],)h(page)e(91\))h(whose)f(mem)m(b) -s(ers)630 5230 y(hold)c(v)m(ersion)h(information)f(for)g(this)g -(instance)h(of)g(Bash.)46 b(The)32 b(v)-5 b(alues)32 -b(assigned)h(to)g(the)630 5340 y(arra)m(y)e(mem)m(b)s(ers)e(are)i(as)g -(follo)m(ws:)p eop end -%%Page: 74 80 -TeXDict begin 74 79 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(74)630 299 y Ft(BASH_VERSINFO[0]) -1110 408 y Fu(The)30 b(ma)5 b(jor)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e -(\(the)i Fr(release)5 b Fu(\).)630 578 y Ft(BASH_VERSINFO[1])1110 -687 y Fu(The)30 b(minor)g(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i -Fr(v)m(ersion)p Fu(\).)630 857 y Ft(BASH_VERSINFO[2])1110 -966 y Fu(The)f(patc)m(h)h(lev)m(el.)630 1136 y Ft(BASH_VERSINFO[3])1110 -1245 y Fu(The)f(build)f(v)m(ersion.)630 1415 y Ft(BASH_VERSINFO[4])1110 -1524 y Fu(The)h(release)i(status)e(\(e.g.,)j Fr(b)s(eta1)7 -b Fu(\).)630 1694 y Ft(BASH_VERSINFO[5])1110 1803 y Fu(The)30 -b(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p Fu(.)150 1973 y -Ft(BASH_VERSION)630 2082 y Fu(The)g(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h -(the)h(curren)m(t)f(instance)h(of)g(Bash.)150 2252 y -Ft(BASH_XTRACEFD)630 2361 y Fu(If)f(set)h(to)h(an)e(in)m(teger)i +b Fu(and)630 737 y(called)32 b(from)d Ft(${BASH_SOURCE[$i+1]})150 +892 y(BASH_SUBSHELL)630 1002 y Fu(Incremen)m(ted)24 b(b)m(y)f(one)h +(within)f(eac)m(h)i(subshell)d(or)i(subshell)e(en)m(vironmen)m(t)i +(when)f(the)h(shell)630 1112 y(b)s(egins)30 b(executing)h(in)f(that)h +(en)m(vironmen)m(t.)42 b(The)30 b(initial)h(v)-5 b(alue)31 +b(is)f(0.)150 1267 y Ft(BASH_VERSINFO)630 1377 y Fu(A)36 +b(readonly)g(arra)m(y)g(v)-5 b(ariable)37 b(\(see)f(Section)h(6.7)g +([Arra)m(ys],)h(page)e(94\))h(whose)f(mem)m(b)s(ers)630 +1486 y(hold)c(v)m(ersion)h(information)f(for)g(this)g(instance)h(of)g +(Bash.)46 b(The)32 b(v)-5 b(alues)32 b(assigned)h(to)g(the)630 +1596 y(arra)m(y)e(mem)m(b)s(ers)e(are)i(as)g(follo)m(ws:)630 +1751 y Ft(BASH_VERSINFO[0])1110 1861 y Fu(The)f(ma)5 +b(jor)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i Fr(release)5 +b Fu(\).)630 2016 y Ft(BASH_VERSINFO[1])1110 2125 y Fu(The)30 +b(minor)g(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i Fr(v)m(ersion)p +Fu(\).)630 2281 y Ft(BASH_VERSINFO[2])1110 2390 y Fu(The)f(patc)m(h)h +(lev)m(el.)630 2545 y Ft(BASH_VERSINFO[3])1110 2655 y +Fu(The)f(build)f(v)m(ersion.)630 2810 y Ft(BASH_VERSINFO[4])1110 +2920 y Fu(The)h(release)i(status)e(\(e.g.,)j Fr(b)s(eta1)7 +b Fu(\).)630 3075 y Ft(BASH_VERSINFO[5])1110 3185 y Fu(The)30 +b(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p Fu(.)150 3340 y +Ft(BASH_VERSION)630 3450 y Fu(The)g(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h +(the)h(curren)m(t)f(instance)h(of)g(Bash.)150 3605 y +Ft(BASH_XTRACEFD)630 3714 y Fu(If)f(set)h(to)h(an)e(in)m(teger)i (corresp)s(onding)e(to)h(a)g(v)-5 b(alid)31 b(\014le)g(descriptor,)g -(Bash)g(will)g(write)g(the)630 2471 y(trace)37 b(output)f(generated)h +(Bash)g(will)g(write)g(the)630 3824 y(trace)37 b(output)f(generated)h (when)f(`)p Ft(set)29 b(-x)p Fu(')36 b(is)g(enabled)h(to)g(that)f -(\014le)h(descriptor.)58 b(This)630 2580 y(allo)m(ws)29 +(\014le)h(descriptor.)58 b(This)630 3934 y(allo)m(ws)29 b(tracing)h(output)d(to)i(b)s(e)f(separated)g(from)g(diagnostic)h(and)f -(error)f(messages.)41 b(The)630 2690 y(\014le)31 b(descriptor)f(is)h +(error)f(messages.)41 b(The)630 4043 y(\014le)31 b(descriptor)f(is)h (closed)g(when)f Ft(BASH_XTRACEFD)d Fu(is)k(unset)f(or)g(assigned)h(a)g -(new)f(v)-5 b(alue.)630 2800 y(Unsetting)45 b Ft(BASH_XTRACEFD)40 +(new)f(v)-5 b(alue.)630 4153 y(Unsetting)45 b Ft(BASH_XTRACEFD)40 b Fu(or)k(assigning)g(it)g(the)g(empt)m(y)h(string)e(causes)i(the)f -(trace)630 2909 y(output)33 b(to)i(b)s(e)d(sen)m(t)j(to)f(the)g +(trace)630 4262 y(output)33 b(to)i(b)s(e)d(sen)m(t)j(to)f(the)g (standard)e(error.)50 b(Note)35 b(that)g(setting)f Ft(BASH_XTRACEFD)c -Fu(to)630 3019 y(2)39 b(\(the)h(standard)e(error)g(\014le)h +Fu(to)630 4372 y(2)39 b(\(the)h(standard)e(error)g(\014le)h (descriptor\))h(and)e(then)h(unsetting)g(it)g(will)g(result)g(in)g(the) -630 3128 y(standard)30 b(error)g(b)s(eing)f(closed.)150 -3298 y Ft(CHILD_MAX)630 3407 y Fu(Set)35 b(the)h(n)m(um)m(b)s(er)e(of)h +630 4482 y(standard)30 b(error)g(b)s(eing)f(closed.)150 +4637 y Ft(CHILD_MAX)630 4746 y Fu(Set)35 b(the)h(n)m(um)m(b)s(er)e(of)h (exited)h(c)m(hild)g(status)f(v)-5 b(alues)36 b(for)f(the)g(shell)g(to) -h(remem)m(b)s(er.)55 b(Bash)630 3517 y(will)37 b(not)g(allo)m(w)i(this) +h(remem)m(b)s(er.)55 b(Bash)630 4856 y(will)37 b(not)g(allo)m(w)i(this) e(v)-5 b(alue)37 b(to)h(b)s(e)e(decreased)i(b)s(elo)m(w)f(a)g -Fm(posix)p Fu(-mandated)f(minim)m(um,)630 3626 y(and)30 +Fm(posix)p Fu(-mandated)f(minim)m(um,)630 4966 y(and)30 b(there)g(is)g(a)h(maxim)m(um)f(v)-5 b(alue)30 b(\(curren)m(tly)h (8192\))h(that)f(this)f(ma)m(y)g(not)h(exceed.)41 b(The)630 -3736 y(minim)m(um)30 b(v)-5 b(alue)30 b(is)h(system-dep)s(enden)m(t.) -150 3905 y Ft(COLUMNS)144 b Fu(Used)32 b(b)m(y)f(the)h +5075 y(minim)m(um)30 b(v)-5 b(alue)30 b(is)h(system-dep)s(enden)m(t.) +150 5230 y Ft(COLUMNS)144 b Fu(Used)32 b(b)m(y)f(the)h Ft(select)e Fu(command)h(to)i(determine)f(the)f(terminal)i(width)d -(when)h(prin)m(ting)630 4015 y(selection)39 b(lists.)63 +(when)h(prin)m(ting)630 5340 y(selection)39 b(lists.)63 b(Automatically)41 b(set)d(if)f(the)h Ft(checkwinsize)d -Fu(option)j(is)f(enabled)h(\(see)630 4125 y(Section)44 -b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(64\),)k(or)43 -b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 4234 -y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 4403 y -Ft(COMP_CWORD)630 4513 y Fu(An)38 b(index)g(in)m(to)h +Fu(option)j(is)f(enabled)h(\(see)p eop end +%%Page: 77 83 +TeXDict begin 77 82 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(77)630 299 y(Section)44 +b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(65\),)k(or)43 +b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 408 +y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 555 y +Ft(COMP_CWORD)630 664 y Fu(An)38 b(index)g(in)m(to)h Ft(${COMP_WORDS})c Fu(of)k(the)g(w)m(ord)f(con)m(taining)i(the)e -(curren)m(t)g(cursor)g(p)s(o-)630 4623 y(sition.)72 b(This)40 +(curren)m(t)g(cursor)g(p)s(o-)630 774 y(sition.)72 b(This)40 b(v)-5 b(ariable)41 b(is)f(a)m(v)-5 b(ailable)43 b(only)e(in)f(shell)h (functions)f(in)m(v)m(ok)m(ed)i(b)m(y)e(the)h(pro-)630 -4732 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g -([Programmable)g(Completion],)630 4842 y(page)31 b(129\).)150 -5011 y Ft(COMP_LINE)630 5121 y Fu(The)38 b(curren)m(t)h(command)f +883 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g +([Programmable)g(Completion],)630 993 y(page)31 b(132\).)150 +1139 y Ft(COMP_LINE)630 1249 y Fu(The)38 b(curren)m(t)h(command)f (line.)66 b(This)37 b(v)-5 b(ariable)40 b(is)f(a)m(v)-5 -b(ailable)41 b(only)d(in)h(shell)f(functions)630 5230 +b(ailable)41 b(only)d(in)h(shell)f(functions)630 1358 y(and)25 b(external)h(commands)f(in)m(v)m(ok)m(ed)h(b)m(y)f(the)h -(programmable)f(completion)i(facilities)g(\(see)630 5340 -y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(129\).)p -eop end -%%Page: 75 81 -TeXDict begin 75 80 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(75)150 299 y Ft(COMP_POINT)630 -408 y Fu(The)25 b(index)g(of)h(the)g(curren)m(t)f(cursor)g(p)s(osition) -h(relativ)m(e)i(to)e(the)g(b)s(eginning)f(of)g(the)h(curren)m(t)630 -518 y(command.)40 b(If)27 b(the)h(curren)m(t)g(cursor)g(p)s(osition)g -(is)g(at)g(the)g(end)g(of)g(the)g(curren)m(t)g(command,)630 -628 y(the)i(v)-5 b(alue)30 b(of)g(this)g(v)-5 b(ariable)31 -b(is)f(equal)g(to)h Ft(${#COMP_LINE})p Fu(.)37 b(This)29 -b(v)-5 b(ariable)31 b(is)f(a)m(v)-5 b(ailable)630 737 -y(only)36 b(in)f(shell)h(functions)f(and)g(external)h(commands)g(in)m -(v)m(ok)m(ed)h(b)m(y)e(the)h(programmable)630 847 y(completion)c -(facilities)g(\(see)g(Section)f(8.6)g([Programmable)g(Completion],)h -(page)f(129\).)150 1011 y Ft(COMP_TYPE)630 1121 y Fu(Set)c(to)h(an)f -(in)m(teger)h(v)-5 b(alue)28 b(corresp)s(onding)e(to)h(the)h(t)m(yp)s -(e)f(of)g(completion)h(attempted)g(that)630 1230 y(caused)e(a)h -(completion)h(function)e(to)h(b)s(e)f(called:)40 b Fr(T)-8 -b(AB)p Fu(,)27 b(for)g(normal)f(completion,)j(`)p Ft(?)p -Fu(',)e(for)630 1340 y(listing)35 b(completions)h(after)f(successiv)m -(e)g(tabs,)h(`)p Ft(!)p Fu(',)g(for)e(listing)h(alternativ)m(es)i(on)d -(partial)630 1450 y(w)m(ord)22 b(completion,)k(`)p Ft(@)p -Fu(',)f(to)e(list)g(completions)h(if)f(the)g(w)m(ord)f(is)h(not)g(unmo) -s(di\014ed,)f(or)h(`)p Ft(\045)p Fu(',)h(for)630 1559 -y(men)m(u)i(completion.)41 b(This)25 b(v)-5 b(ariable)27 -b(is)g(a)m(v)-5 b(ailable)28 b(only)f(in)f(shell)g(functions)g(and)g -(external)630 1669 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g -(programmable)h(completion)g(facilities)i(\(see)e(Section)g(8.6)630 -1778 y([Programmable)e(Completion],)h(page)f(129\).)150 -1943 y Ft(COMP_KEY)96 b Fu(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i +(programmable)f(completion)i(facilities)g(\(see)630 1468 +y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(132\).)150 +1614 y Ft(COMP_POINT)630 1724 y Fu(The)25 b(index)g(of)h(the)g(curren)m +(t)f(cursor)g(p)s(osition)h(relativ)m(e)i(to)e(the)g(b)s(eginning)f(of) +g(the)h(curren)m(t)630 1833 y(command.)40 b(If)27 b(the)h(curren)m(t)g +(cursor)g(p)s(osition)g(is)g(at)g(the)g(end)g(of)g(the)g(curren)m(t)g +(command,)630 1943 y(the)i(v)-5 b(alue)30 b(of)g(this)g(v)-5 +b(ariable)31 b(is)f(equal)g(to)h Ft(${#COMP_LINE})p Fu(.)37 +b(This)29 b(v)-5 b(ariable)31 b(is)f(a)m(v)-5 b(ailable)630 +2052 y(only)36 b(in)f(shell)h(functions)f(and)g(external)h(commands)g +(in)m(v)m(ok)m(ed)h(b)m(y)e(the)h(programmable)630 2162 +y(completion)c(facilities)g(\(see)g(Section)f(8.6)g([Programmable)g +(Completion],)h(page)f(132\).)150 2308 y Ft(COMP_TYPE)630 +2418 y Fu(Set)c(to)h(an)f(in)m(teger)h(v)-5 b(alue)28 +b(corresp)s(onding)e(to)h(the)h(t)m(yp)s(e)f(of)g(completion)h +(attempted)g(that)630 2527 y(caused)e(a)h(completion)h(function)e(to)h +(b)s(e)f(called:)40 b Fr(T)-8 b(AB)p Fu(,)27 b(for)g(normal)f +(completion,)j(`)p Ft(?)p Fu(',)e(for)630 2637 y(listing)35 +b(completions)h(after)f(successiv)m(e)g(tabs,)h(`)p Ft(!)p +Fu(',)g(for)e(listing)h(alternativ)m(es)i(on)d(partial)630 +2746 y(w)m(ord)22 b(completion,)k(`)p Ft(@)p Fu(',)f(to)e(list)g +(completions)h(if)f(the)g(w)m(ord)f(is)h(not)g(unmo)s(di\014ed,)f(or)h +(`)p Ft(\045)p Fu(',)h(for)630 2856 y(men)m(u)i(completion.)41 +b(This)25 b(v)-5 b(ariable)27 b(is)g(a)m(v)-5 b(ailable)28 +b(only)f(in)f(shell)g(functions)g(and)g(external)630 +2966 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g(programmable)h +(completion)g(facilities)i(\(see)e(Section)g(8.6)630 +3075 y([Programmable)e(Completion],)h(page)f(132\).)150 +3221 y Ft(COMP_KEY)96 b Fu(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i (of)f(a)g(k)m(ey)h(sequence\))g(used)e(to)i(in)m(v)m(ok)m(e)h(the)e -(curren)m(t)g(completion)630 2052 y(function.)150 2217 -y Ft(COMP_WORDBREAKS)630 2326 y Fu(The)f(set)i(of)e(c)m(haracters)j +(curren)m(t)g(completion)630 3331 y(function.)150 3477 +y Ft(COMP_WORDBREAKS)630 3587 y Fu(The)f(set)i(of)e(c)m(haracters)j (that)e(the)g(Readline)g(library)g(treats)g(as)g(w)m(ord)g(separators)g -(when)630 2436 y(p)s(erforming)i(w)m(ord)h(completion.)51 +(when)630 3696 y(p)s(erforming)i(w)m(ord)h(completion.)51 b(If)33 b Ft(COMP_WORDBREAKS)c Fu(is)34 b(unset,)g(it)f(loses)i(its)e -(sp)s(ecial)630 2545 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g -(subsequen)m(tly)f(reset.)150 2710 y Ft(COMP_WORDS)630 -2819 y Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(consisting)g(of)f(the) +(sp)s(ecial)630 3806 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)150 3952 y Ft(COMP_WORDS)630 +4061 y Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(consisting)g(of)f(the) g(individual)f(w)m(ords)h(in)f(the)h(curren)m(t)g(command)630 -2929 y(line.)94 b(The)47 b(line)i(is)f(split)g(in)m(to)h(w)m(ords)e(as) +4171 y(line.)94 b(The)47 b(line)i(is)f(split)g(in)m(to)h(w)m(ords)e(as) h(Readline)h(w)m(ould)f(split)g(it,)53 b(using)47 b Ft(COMP_)630 -3039 y(WORDBREAKS)34 b Fu(as)i(describ)s(ed)g(ab)s(o)m(v)m(e.)60 +4281 y(WORDBREAKS)34 b Fu(as)i(describ)s(ed)g(ab)s(o)m(v)m(e.)60 b(This)36 b(v)-5 b(ariable)37 b(is)f(a)m(v)-5 b(ailable)39 -b(only)e(in)f(shell)h(func-)630 3148 y(tions)32 b(in)m(v)m(ok)m(ed)i(b) +b(only)e(in)f(shell)h(func-)630 4390 y(tions)32 b(in)m(v)m(ok)m(ed)i(b) m(y)d(the)i(programmable)f(completion)h(facilities)h(\(see)f(Section)g -(8.6)g([Pro-)630 3258 y(grammable)e(Completion],)g(page)g(129\).)150 -3422 y Ft(COMPREPLY)630 3532 y Fu(An)37 b(arra)m(y)h(v)-5 +(8.6)g([Pro-)630 4500 y(grammable)e(Completion],)g(page)g(132\).)150 +4646 y Ft(COMPREPLY)630 4756 y Fu(An)37 b(arra)m(y)h(v)-5 b(ariable)38 b(from)f(whic)m(h)g(Bash)g(reads)g(the)h(p)s(ossible)e -(completions)j(generated)630 3641 y(b)m(y)33 b(a)g(shell)h(function)f +(completions)j(generated)630 4865 y(b)m(y)33 b(a)g(shell)h(function)f (in)m(v)m(ok)m(ed)h(b)m(y)f(the)g(programmable)h(completion)g(facilit)m -(y)h(\(see)f(Sec-)630 3751 y(tion)g(8.6)g([Programmable)g(Completion],) -h(page)f(129\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains) -630 3861 y(one)c(p)s(ossible)f(completion.)150 4025 y +(y)h(\(see)f(Sec-)630 4975 y(tion)g(8.6)g([Programmable)g(Completion],) +h(page)f(132\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains) +630 5084 y(one)c(p)s(ossible)f(completion.)150 5230 y Ft(COPROC)192 b Fu(An)27 b(arra)m(y)g(v)-5 b(ariable)28 b(created)g(to)f(hold)g(the)g(\014le)g(descriptors)g(for)g(output)f -(from)h(and)f(input)630 4134 y(to)31 b(an)f(unnamed)f(copro)s(cess)i -(\(see)g(Section)h(3.2.5)g([Copro)s(cesses],)f(page)g(15\).)150 -4299 y Ft(DIRSTACK)96 b Fu(An)26 b(arra)m(y)h(v)-5 b(ariable)28 -b(con)m(taining)g(the)f(curren)m(t)f(con)m(ten)m(ts)j(of)e(the)f -(directory)i(stac)m(k.)41 b(Direc-)630 4408 y(tories)33 -b(app)s(ear)f(in)g(the)h(stac)m(k)h(in)e(the)h(order)f(they)h(are)g -(displa)m(y)m(ed)g(b)m(y)f(the)h Ft(dirs)e Fu(builtin.)630 -4518 y(Assigning)f(to)h(mem)m(b)s(ers)f(of)g(this)g(arra)m(y)g(v)-5 -b(ariable)31 b(ma)m(y)g(b)s(e)e(used)h(to)h(mo)s(dify)e(directories)630 -4628 y(already)41 b(in)f(the)h(stac)m(k,)k(but)40 b(the)h -Ft(pushd)e Fu(and)h Ft(popd)f Fu(builtins)h(m)m(ust)h(b)s(e)e(used)h -(to)i(add)630 4737 y(and)37 b(remo)m(v)m(e)h(directories.)63 +(from)h(and)f(input)630 5340 y(to)31 b(an)f(unnamed)f(copro)s(cess)i +(\(see)g(Section)h(3.2.5)g([Copro)s(cesses],)f(page)g(15\).)p +eop end +%%Page: 78 84 +TeXDict begin 78 83 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(78)150 299 y Ft(DIRSTACK)96 +b Fu(An)26 b(arra)m(y)h(v)-5 b(ariable)28 b(con)m(taining)g(the)f +(curren)m(t)f(con)m(ten)m(ts)j(of)e(the)f(directory)i(stac)m(k.)41 +b(Direc-)630 408 y(tories)33 b(app)s(ear)f(in)g(the)h(stac)m(k)h(in)e +(the)h(order)f(they)h(are)g(displa)m(y)m(ed)g(b)m(y)f(the)h +Ft(dirs)e Fu(builtin.)630 518 y(Assigning)f(to)h(mem)m(b)s(ers)f(of)g +(this)g(arra)m(y)g(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)e(used)h(to)h(mo) +s(dify)e(directories)630 628 y(already)41 b(in)f(the)h(stac)m(k,)k(but) +40 b(the)h Ft(pushd)e Fu(and)h Ft(popd)f Fu(builtins)h(m)m(ust)h(b)s(e) +e(used)h(to)i(add)630 737 y(and)37 b(remo)m(v)m(e)h(directories.)63 b(Assignmen)m(t)37 b(to)h(this)f(v)-5 b(ariable)38 b(will)g(not)f(c)m -(hange)i(the)e(cur-)630 4847 y(ren)m(t)c(directory)-8 +(hange)i(the)e(cur-)630 847 y(ren)m(t)c(directory)-8 b(.)47 b(If)32 b Ft(DIRSTACK)e Fu(is)i(unset,)g(it)h(loses)g(its)g(sp)s (ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)630 -4956 y(subsequen)m(tly)d(reset.)150 5121 y Ft(EMACS)240 +956 y(subsequen)m(tly)d(reset.)150 1115 y Ft(EMACS)240 b Fu(If)31 b(Bash)h(\014nds)d(this)j(v)-5 b(ariable)32 b(in)f(the)h(en)m(vironmen)m(t)g(when)e(the)i(shell)f(starts)h(with)f -(v)-5 b(alue)630 5230 y(`)p Ft(t)p Fu(',)36 b(it)f(assumes)f(that)h +(v)-5 b(alue)630 1224 y(`)p Ft(t)p Fu(',)36 b(it)f(assumes)f(that)h (the)g(shell)f(is)h(running)e(in)h(an)g(Emacs)h(shell)g(bu\013er)e(and) -h(disables)630 5340 y(line)d(editing.)p eop end -%%Page: 76 82 -TeXDict begin 76 81 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(76)150 299 y Ft(ENV)336 +h(disables)630 1334 y(line)d(editing.)150 1492 y Ft(ENV)336 b Fu(Similar)35 b(to)g Ft(BASH_ENV)p Fu(;)h(used)e(when)g(the)h(shell)g (is)g(in)m(v)m(ok)m(ed)h(in)e Fm(posix)h Fu(Mo)s(de)g(\(see)g(Sec-)630 -408 y(tion)c(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(96\).)150 -564 y Ft(EUID)288 b Fu(The)30 b(n)m(umeric)g(e\013ectiv)m(e)j(user)d -(id)g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 -b(ariable)31 b(is)f(readonly)-8 b(.)150 720 y Ft(EXECIGNORE)630 -830 y Fu(A)29 b(colon-separated)h(list)f(of)g(shell)g(patterns)f(\(see) -i(Section)f(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)630 -939 y(page)j(31\))g(de\014ning)e(the)h(list)g(of)g(\014lenames)g(to)g -(b)s(e)g(ignored)g(b)m(y)f(command)h(searc)m(h)g(using)630 -1049 y Ft(PATH)p Fu(.)k(Files)22 b(whose)f(full)g(pathnames)g(matc)m(h) -h(one)f(of)g(these)h(patterns)e(are)i(not)f(considered)630 -1158 y(executable)j(\014les)e(for)g(the)h(purp)s(oses)d(of)j -(completion)h(and)d(command)i(execution)g(via)g Ft(PATH)630 -1268 y Fu(lo)s(okup.)56 b(This)35 b(do)s(es)g(not)h(a\013ect)i(the)d(b) -s(eha)m(vior)h(of)g(the)g Ft([)p Fu(,)h Ft(test)p Fu(,)f(and)f -Ft([[)g Fu(commands.)630 1377 y(F)-8 b(ull)42 b(pathnames)e(in)h(the)g -(command)g(hash)f(table)i(are)g(not)f(sub)5 b(ject)41 -b(to)g Ft(EXECIGNORE)p Fu(.)630 1487 y(Use)30 b(this)f(v)-5 -b(ariable)30 b(to)g(ignore)g(shared)f(library)g(\014les)g(that)h(ha)m -(v)m(e)h(the)f(executable)h(bit)e(set,)630 1597 y(but)36 -b(are)h(not)g(executable)i(\014les.)60 b(The)36 b(pattern)h(matc)m -(hing)h(honors)e(the)h(setting)h(of)f(the)630 1706 y -Ft(extglob)28 b Fu(shell)j(option.)150 1862 y Ft(FCEDIT)192 -b Fu(The)30 b(editor)h(used)e(as)i(a)g(default)f(b)m(y)h(the)f -Ft(-e)g Fu(option)h(to)g(the)f Ft(fc)g Fu(builtin)g(command.)150 -2018 y Ft(FIGNORE)144 b Fu(A)35 b(colon-separated)i(list)f(of)g +1602 y(tion)c(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(99\).)150 +1760 y Ft(EPOCHREALTIME)630 1870 y Fu(Eac)m(h)38 b(time)f(this)g +(parameter)h(is)f(referenced,)i(it)f(expands)e(to)i(the)f(n)m(um)m(b)s +(er)f(of)h(seconds)630 1979 y(since)f(the)g(Unix)f(Ep)s(o)s(c)m(h)g(as) +h(a)g(\015oating)h(p)s(oin)m(t)f(v)-5 b(alue)36 b(with)f(micro-second)i +(gran)m(ularit)m(y)630 2089 y(\(see)42 b(the)g(do)s(cumen)m(tation)g +(for)f(the)g(C)g(library)g(function)g Fr(time)47 b Fu(for)41 +b(the)h(de\014nition)f(of)630 2198 y(Ep)s(o)s(c)m(h\).)82 +b(Assignmen)m(ts)44 b(to)h Ft(EPOCHREALTIME)c Fu(are)j(ignored.)83 +b(If)43 b Ft(EPOCHREALTIME)e Fu(is)630 2308 y(unset,)30 +b(it)h(loses)g(its)g(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h +(is)g(subsequen)m(tly)f(reset.)150 2466 y Ft(EPOCHSECONDS)630 +2576 y Fu(Eac)m(h)38 b(time)f(this)g(parameter)h(is)f(referenced,)i(it) +f(expands)e(to)i(the)f(n)m(um)m(b)s(er)f(of)h(seconds)630 +2685 y(since)e(the)g(Unix)f(Ep)s(o)s(c)m(h)g(\(see)i(the)f(do)s(cumen)m +(tation)g(for)g(the)f(C)h(library)f(function)g Fr(time)630 +2795 y Fu(for)41 b(the)g(de\014nition)g(of)h(Ep)s(o)s(c)m(h\).)73 +b(Assignmen)m(ts)41 b(to)h Ft(EPOCHSECONDS)c Fu(are)k(ignored.)73 +b(If)630 2905 y Ft(EPOCHSECONDS)27 b Fu(is)j(unset,)g(it)g(loses)h(its) +g(sp)s(ecial)f(prop)s(erties,)g(ev)m(en)h(if)f(it)g(is)g(subsequen)m +(tly)630 3014 y(reset.)150 3173 y Ft(EUID)288 b Fu(The)30 +b(n)m(umeric)g(e\013ectiv)m(e)j(user)d(id)g(of)g(the)h(curren)m(t)f +(user.)40 b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 +b(.)150 3331 y Ft(EXECIGNORE)630 3440 y Fu(A)29 b(colon-separated)h +(list)f(of)g(shell)g(patterns)f(\(see)i(Section)f(3.5.8.1)i([P)m +(attern)f(Matc)m(hing],)630 3550 y(page)j(33\))g(de\014ning)e(the)h +(list)g(of)g(\014lenames)g(to)g(b)s(e)g(ignored)g(b)m(y)f(command)h +(searc)m(h)g(using)630 3660 y Ft(PATH)p Fu(.)k(Files)22 +b(whose)f(full)g(pathnames)g(matc)m(h)h(one)f(of)g(these)h(patterns)e +(are)i(not)f(considered)630 3769 y(executable)j(\014les)e(for)g(the)h +(purp)s(oses)d(of)j(completion)h(and)d(command)i(execution)g(via)g +Ft(PATH)630 3879 y Fu(lo)s(okup.)56 b(This)35 b(do)s(es)g(not)h +(a\013ect)i(the)d(b)s(eha)m(vior)h(of)g(the)g Ft([)p +Fu(,)h Ft(test)p Fu(,)f(and)f Ft([[)g Fu(commands.)630 +3988 y(F)-8 b(ull)42 b(pathnames)e(in)h(the)g(command)g(hash)f(table)i +(are)g(not)f(sub)5 b(ject)41 b(to)g Ft(EXECIGNORE)p Fu(.)630 +4098 y(Use)30 b(this)f(v)-5 b(ariable)30 b(to)g(ignore)g(shared)f +(library)g(\014les)g(that)h(ha)m(v)m(e)h(the)f(executable)h(bit)e(set,) +630 4208 y(but)36 b(are)h(not)g(executable)i(\014les.)60 +b(The)36 b(pattern)h(matc)m(hing)h(honors)e(the)h(setting)h(of)f(the) +630 4317 y Ft(extglob)28 b Fu(shell)j(option.)150 4475 +y Ft(FCEDIT)192 b Fu(The)30 b(editor)h(used)e(as)i(a)g(default)f(b)m(y) +h(the)f Ft(-e)g Fu(option)h(to)g(the)f Ft(fc)g Fu(builtin)g(command.) +150 4634 y Ft(FIGNORE)144 b Fu(A)35 b(colon-separated)i(list)f(of)g (su\016xes)e(to)i(ignore)g(when)e(p)s(erforming)g(\014lename)i(comple-) -630 2127 y(tion.)k(A)27 b(\014lename)g(whose)f(su\016x)g(matc)m(hes)i +630 4743 y(tion.)k(A)27 b(\014lename)g(whose)f(su\016x)g(matc)m(hes)i (one)f(of)g(the)g(en)m(tries)g(in)g Ft(FIGNORE)d Fu(is)j(excluded)630 -2237 y(from)j(the)g(list)h(of)g(matc)m(hed)g(\014lenames.)41 +4853 y(from)j(the)g(list)h(of)g(matc)m(hed)g(\014lenames.)41 b(A)30 b(sample)h(v)-5 b(alue)31 b(is)f(`)p Ft(.o:~)p -Fu(')150 2393 y Ft(FUNCNAME)96 b Fu(An)35 b(arra)m(y)i(v)-5 +Fu(')150 5011 y Ft(FUNCNAME)96 b Fu(An)35 b(arra)m(y)i(v)-5 b(ariable)36 b(con)m(taining)h(the)f(names)g(of)g(all)g(shell)g -(functions)g(curren)m(tly)f(in)h(the)630 2502 y(execution)g(call)h +(functions)g(curren)m(tly)f(in)h(the)630 5121 y(execution)g(call)h (stac)m(k.)57 b(The)34 b(elemen)m(t)j(with)e(index)g(0)h(is)f(the)g -(name)h(of)f(an)m(y)h(curren)m(tly-)630 2612 y(executing)f(shell)f +(name)h(of)f(an)m(y)h(curren)m(tly-)630 5230 y(executing)f(shell)f (function.)51 b(The)34 b(b)s(ottom-most)h(elemen)m(t)g(\(the)g(one)f -(with)g(the)g(highest)630 2721 y(index\))e(is)h Ft("main")p +(with)g(the)g(highest)630 5340 y(index\))e(is)h Ft("main")p Fu(.)44 b(This)32 b(v)-5 b(ariable)33 b(exists)g(only)g(when)e(a)i -(shell)f(function)g(is)g(executing.)630 2831 y(Assignmen)m(ts)23 +(shell)f(function)g(is)g(executing.)p eop end +%%Page: 79 85 +TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(79)630 299 y(Assignmen)m(ts)23 b(to)f Ft(FUNCNAME)e Fu(ha)m(v)m(e)k(no)e(e\013ect.)39 b(If)22 b Ft(FUNCNAME)e Fu(is)i(unset,)h(it)g(loses)g(its)f(sp)s(ecial) -630 2941 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g(subsequen)m -(tly)f(reset.)630 3073 y(This)h(v)-5 b(ariable)32 b(can)f(b)s(e)g(used) -g(with)g Ft(BASH_LINENO)d Fu(and)j Ft(BASH_SOURCE)p Fu(.)40 -b(Eac)m(h)32 b(elemen)m(t)630 3183 y(of)g Ft(FUNCNAME)d +630 408 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly) +f(reset.)630 543 y(This)h(v)-5 b(ariable)32 b(can)f(b)s(e)g(used)g +(with)g Ft(BASH_LINENO)d Fu(and)j Ft(BASH_SOURCE)p Fu(.)40 +b(Eac)m(h)32 b(elemen)m(t)630 653 y(of)g Ft(FUNCNAME)d Fu(has)j(corresp)s(onding)e(elemen)m(ts)j(in)f Ft(BASH_LINENO)c -Fu(and)k Ft(BASH_SOURCE)c Fu(to)630 3292 y(describ)s(e)39 +Fu(and)k Ft(BASH_SOURCE)c Fu(to)630 763 y(describ)s(e)39 b(the)h(call)h(stac)m(k.)70 b(F)-8 b(or)41 b(instance,)i Ft(${FUNCNAME[$i]})35 b Fu(w)m(as)41 b(called)f(from)g(the)630 -3402 y(\014le)27 b Ft(${BASH_SOURCE[$i+1]})21 b Fu(at)27 +872 y(\014le)27 b Ft(${BASH_SOURCE[$i+1]})21 b Fu(at)27 b(line)h(n)m(um)m(b)s(er)d Ft(${BASH_LINENO[$i]})p Fu(.)34 -b(The)27 b Ft(caller)630 3512 y Fu(builtin)j(displa)m(ys)g(the)h -(curren)m(t)f(call)i(stac)m(k)g(using)d(this)i(information.)150 -3667 y Ft(FUNCNEST)96 b Fu(If)34 b(set)i(to)f(a)h(n)m(umeric)e(v)-5 +b(The)27 b Ft(caller)630 982 y Fu(builtin)j(displa)m(ys)g(the)h(curren) +m(t)f(call)i(stac)m(k)g(using)d(this)i(information.)150 +1142 y Ft(FUNCNEST)96 b Fu(If)34 b(set)i(to)f(a)h(n)m(umeric)e(v)-5 b(alue)36 b(greater)g(than)e(0,)j(de\014nes)d(a)h(maxim)m(um)g -(function)g(nesting)630 3777 y(lev)m(el.)42 b(F)-8 b(unction)29 +(function)g(nesting)630 1251 y(lev)m(el.)42 b(F)-8 b(unction)29 b(in)m(v)m(o)s(cations)h(that)f(exceed)h(this)e(nesting)h(lev)m(el)h -(will)f(cause)g(the)f(curren)m(t)630 3886 y(command)i(to)h(ab)s(ort.) -150 4042 y Ft(GLOBIGNORE)630 4152 y Fu(A)38 b(colon-separated)i(list)f -(of)f(patterns)g(de\014ning)f(the)h(set)g(of)h(\014lenames)f(to)g(b)s -(e)g(ignored)630 4261 y(b)m(y)31 b(\014lename)g(expansion.)43 -b(If)31 b(a)h(\014lename)f(matc)m(hed)h(b)m(y)f(a)g(\014lename)h -(expansion)f(pattern)630 4371 y(also)i(matc)m(hes)g(one)f(of)g(the)g +(will)f(cause)g(the)f(curren)m(t)630 1361 y(command)i(to)h(ab)s(ort.) +150 1521 y Ft(GLOBIGNORE)630 1631 y Fu(A)k(colon-separated)i(list)f(of) +f(patterns)g(de\014ning)f(the)i(set)f(of)g(\014le)h(names)f(to)g(b)s(e) +g(ignored)630 1740 y(b)m(y)28 b(\014lename)h(expansion.)40 +b(If)28 b(a)h(\014le)g(name)g(matc)m(hed)g(b)m(y)g(a)g(\014lename)f +(expansion)h(pattern)630 1850 y(also)k(matc)m(hes)g(one)f(of)g(the)g (patterns)g(in)f Ft(GLOBIGNORE)p Fu(,)f(it)i(is)g(remo)m(v)m(ed)h(from) -e(the)h(list)h(of)630 4481 y(matc)m(hes.)41 b(The)27 +e(the)h(list)h(of)630 1960 y(matc)m(hes.)41 b(The)27 b(pattern)g(matc)m(hing)h(honors)f(the)g(setting)i(of)e(the)h -Ft(extglob)d Fu(shell)i(option.)150 4636 y Ft(GROUPS)192 +Ft(extglob)d Fu(shell)i(option.)150 2120 y Ft(GROUPS)192 b Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(con)m(taining)g(the)f(list) h(of)f(groups)g(of)g(whic)m(h)f(the)i(curren)m(t)e(user)h(is)g(a)630 -4746 y(mem)m(b)s(er.)41 b(Assignmen)m(ts)30 b(to)i Ft(GROUPS)d +2229 y(mem)m(b)s(er.)41 b(Assignmen)m(ts)30 b(to)i Ft(GROUPS)d Fu(ha)m(v)m(e)i(no)g(e\013ect.)42 b(If)30 b Ft(GROUPS)f -Fu(is)i(unset,)f(it)h(loses)h(its)630 4855 y(sp)s(ecial)f(prop)s +Fu(is)i(unset,)f(it)h(loses)h(its)630 2339 y(sp)s(ecial)f(prop)s (erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)150 -5011 y Ft(histchars)630 5121 y Fu(Up)c(to)g(three)g(c)m(haracters)i +2499 y Ft(histchars)630 2609 y Fu(Up)c(to)g(three)g(c)m(haracters)i (whic)m(h)d(con)m(trol)j(history)d(expansion,)i(quic)m(k)g -(substitution,)g(and)630 5230 y(tok)m(enization)k(\(see)f(Section)f -(9.3)h([History)f(In)m(teraction],)i(page)f(139\).)41 -b(The)29 b(\014rst)e(c)m(harac-)630 5340 y(ter)j(is)f(the)g +(substitution,)g(and)630 2718 y(tok)m(enization)k(\(see)f(Section)f +(9.3)h([History)f(In)m(teraction],)i(page)f(143\).)41 +b(The)29 b(\014rst)e(c)m(harac-)630 2828 y(ter)j(is)f(the)g Fr(history)g(expansion)g Fu(c)m(haracter,)j(that)e(is,)f(the)h(c)m -(haracter)h(whic)m(h)d(signi\014es)i(the)p eop end -%%Page: 77 83 -TeXDict begin 77 82 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(77)630 299 y(start)25 +(haracter)h(whic)m(h)d(signi\014es)i(the)630 2937 y(start)25 b(of)f(a)h(history)f(expansion,)i(normally)e(`)p Ft(!)p Fu('.)39 b(The)24 b(second)g(c)m(haracter)i(is)e(the)g(c)m(haracter)630 -408 y(whic)m(h)36 b(signi\014es)g(`quic)m(k)h(substitution')f(when)f +3047 y(whic)m(h)36 b(signi\014es)g(`quic)m(k)h(substitution')f(when)f (seen)h(as)g(the)g(\014rst)f(c)m(haracter)j(on)e(a)g(line,)630 -518 y(normally)27 b(`)p Ft(^)p Fu('.)39 b(The)26 b(optional)i(third)d +3157 y(normally)27 b(`)p Ft(^)p Fu('.)39 b(The)26 b(optional)i(third)d (c)m(haracter)j(is)e(the)h(c)m(haracter)h(whic)m(h)e(indicates)h(that) -630 628 y(the)34 b(remainder)f(of)h(the)g(line)g(is)f(a)h(commen)m(t)h +630 3266 y(the)34 b(remainder)f(of)h(the)g(line)g(is)f(a)h(commen)m(t)h (when)e(found)f(as)i(the)g(\014rst)f(c)m(haracter)i(of)f(a)630 -737 y(w)m(ord,)i(usually)f(`)p Ft(#)p Fu('.)55 b(The)34 +3376 y(w)m(ord,)i(usually)f(`)p Ft(#)p Fu('.)55 b(The)34 b(history)h(commen)m(t)h(c)m(haracter)h(causes)e(history)g -(substitution)630 847 y(to)27 b(b)s(e)f(skipp)s(ed)f(for)i(the)f +(substitution)630 3485 y(to)27 b(b)s(e)f(skipp)s(ed)f(for)i(the)f (remaining)h(w)m(ords)f(on)h(the)f(line.)40 b(It)27 b(do)s(es)f(not)h -(necessarily)g(cause)630 956 y(the)k(shell)f(parser)g(to)h(treat)g(the) -g(rest)g(of)f(the)h(line)f(as)h(a)g(commen)m(t.)150 1106 -y Ft(HISTCMD)144 b Fu(The)35 b(history)h(n)m(um)m(b)s(er,)g(or)f(index) -g(in)h(the)g(history)f(list,)j(of)e(the)g(curren)m(t)f(command.)56 -b(If)630 1215 y Ft(HISTCMD)28 b Fu(is)h(unset,)h(it)g(loses)h(its)f(sp) -s(ecial)g(prop)s(erties,)g(ev)m(en)g(if)g(it)g(is)g(subsequen)m(tly)f -(reset.)150 1365 y Ft(HISTCONTROL)630 1474 y Fu(A)40 +(necessarily)g(cause)630 3595 y(the)k(shell)f(parser)g(to)h(treat)g +(the)g(rest)g(of)f(the)h(line)f(as)h(a)g(commen)m(t.)150 +3755 y Ft(HISTCMD)144 b Fu(The)35 b(history)h(n)m(um)m(b)s(er,)g(or)f +(index)g(in)h(the)g(history)f(list,)j(of)e(the)g(curren)m(t)f(command.) +56 b(If)630 3865 y Ft(HISTCMD)28 b Fu(is)h(unset,)h(it)g(loses)h(its)f +(sp)s(ecial)g(prop)s(erties,)g(ev)m(en)g(if)g(it)g(is)g(subsequen)m +(tly)f(reset.)150 4025 y Ft(HISTCONTROL)630 4134 y Fu(A)40 b(colon-separated)i(list)f(of)f(v)-5 b(alues)40 b(con)m(trolling)i(ho)m -(w)e(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)630 1584 +(w)e(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)630 4244 y(history)29 b(list.)41 b(If)28 b(the)h(list)h(of)f(v)-5 b(alues)29 b(includes)f(`)p Ft(ignorespace)p Fu(',)f(lines)i(whic)m(h)g -(b)s(egin)f(with)630 1694 y(a)39 b(space)g(c)m(haracter)i(are)e(not)g +(b)s(egin)f(with)630 4354 y(a)39 b(space)g(c)m(haracter)i(are)e(not)g (sa)m(v)m(ed)g(in)g(the)g(history)f(list.)66 b(A)39 b(v)-5 -b(alue)39 b(of)g(`)p Ft(ignoredups)p Fu(')630 1803 y(causes)34 +b(alue)39 b(of)g(`)p Ft(ignoredups)p Fu(')630 4463 y(causes)34 b(lines)h(whic)m(h)f(matc)m(h)h(the)f(previous)f(history)h(en)m(try)h (to)g(not)f(b)s(e)f(sa)m(v)m(ed.)53 b(A)34 b(v)-5 b(alue)630 -1913 y(of)32 b(`)p Ft(ignoreboth)p Fu(')d(is)j(shorthand)e(for)i(`)p +4573 y(of)32 b(`)p Ft(ignoreboth)p Fu(')d(is)j(shorthand)e(for)i(`)p Ft(ignorespace)p Fu(')d(and)i(`)p Ft(ignoredups)p Fu('.)42 -b(A)32 b(v)-5 b(alue)32 b(of)630 2022 y(`)p Ft(erasedups)p +b(A)32 b(v)-5 b(alue)32 b(of)630 4682 y(`)p Ft(erasedups)p Fu(')f(causes)i(all)h(previous)f(lines)g(matc)m(hing)h(the)f(curren)m -(t)g(line)g(to)h(b)s(e)e(remo)m(v)m(ed)630 2132 y(from)42 +(t)g(line)g(to)h(b)s(e)e(remo)m(v)m(ed)630 4792 y(from)42 b(the)h(history)f(list)i(b)s(efore)e(that)h(line)g(is)g(sa)m(v)m(ed.)78 b(An)m(y)43 b(v)-5 b(alue)43 b(not)g(in)f(the)h(ab)s(o)m(v)m(e)630 -2242 y(list)35 b(is)g(ignored.)53 b(If)34 b Ft(HISTCONTROL)e +4902 y(list)35 b(is)g(ignored.)53 b(If)34 b Ft(HISTCONTROL)e Fu(is)i(unset,)i(or)e(do)s(es)h(not)g(include)f(a)h(v)-5 -b(alid)35 b(v)-5 b(alue,)36 b(all)630 2351 y(lines)30 +b(alid)35 b(v)-5 b(alue,)36 b(all)630 5011 y(lines)30 b(read)g(b)m(y)g(the)g(shell)g(parser)g(are)g(sa)m(v)m(ed)h(on)f(the)g (history)g(list,)h(sub)5 b(ject)30 b(to)g(the)g(v)-5 -b(alue)630 2461 y(of)42 b Ft(HISTIGNORE)p Fu(.)73 b(The)42 +b(alue)630 5121 y(of)42 b Ft(HISTIGNORE)p Fu(.)73 b(The)42 b(second)g(and)g(subsequen)m(t)f(lines)h(of)h(a)f(m)m(ulti-line)h(comp) -s(ound)630 2570 y(command)33 b(are)h(not)g(tested,)i(and)d(are)h(added) +s(ound)630 5230 y(command)33 b(are)h(not)g(tested,)i(and)d(are)h(added) f(to)h(the)g(history)g(regardless)g(of)g(the)f(v)-5 b(alue)630 -2680 y(of)31 b Ft(HISTCONTROL)p Fu(.)150 2829 y Ft(HISTFILE)96 +5340 y(of)31 b Ft(HISTCONTROL)p Fu(.)p eop end +%%Page: 80 86 +TeXDict begin 80 85 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(80)150 299 y Ft(HISTFILE)96 b Fu(The)27 b(name)h(of)g(the)g(\014le)g(to)h(whic)m(h)f(the)g(command) f(history)h(is)g(sa)m(v)m(ed.)41 b(The)27 b(default)h(v)-5 -b(alue)630 2939 y(is)30 b Ft(~/.bash_history)p Fu(.)150 -3088 y Ft(HISTFILESIZE)630 3198 y Fu(The)c(maxim)m(um)f(n)m(um)m(b)s -(er)g(of)h(lines)h(con)m(tained)g(in)f(the)g(history)g(\014le.)39 -b(When)26 b(this)g(v)-5 b(ariable)630 3308 y(is)25 b(assigned)h(a)g(v) --5 b(alue,)27 b(the)f(history)f(\014le)h(is)f(truncated,)i(if)e -(necessary)-8 b(,)28 b(to)e(con)m(tain)g(no)g(more)630 -3417 y(than)37 b(that)h(n)m(um)m(b)s(er)d(of)j(lines)f(b)m(y)g(remo)m -(ving)h(the)f(oldest)h(en)m(tries.)62 b(The)37 b(history)g(\014le)g(is) -630 3527 y(also)i(truncated)f(to)h(this)e(size)i(after)g(writing)f(it)g +b(alue)630 408 y(is)30 b Ft(~/.bash_history)p Fu(.)150 +569 y Ft(HISTFILESIZE)630 678 y Fu(The)c(maxim)m(um)f(n)m(um)m(b)s(er)g +(of)h(lines)h(con)m(tained)g(in)f(the)g(history)g(\014le.)39 +b(When)26 b(this)g(v)-5 b(ariable)630 788 y(is)25 b(assigned)h(a)g(v)-5 +b(alue,)27 b(the)f(history)f(\014le)h(is)f(truncated,)i(if)e(necessary) +-8 b(,)28 b(to)e(con)m(tain)g(no)g(more)630 897 y(than)37 +b(that)h(n)m(um)m(b)s(er)d(of)j(lines)f(b)m(y)g(remo)m(ving)h(the)f +(oldest)h(en)m(tries.)62 b(The)37 b(history)g(\014le)g(is)630 +1007 y(also)i(truncated)f(to)h(this)e(size)i(after)g(writing)f(it)g (when)f(a)h(shell)h(exits.)64 b(If)37 b(the)h(v)-5 b(alue)39 -b(is)630 3636 y(0,)g(the)e(history)f(\014le)h(is)g(truncated)f(to)i +b(is)630 1117 y(0,)g(the)e(history)f(\014le)h(is)g(truncated)f(to)i (zero)f(size.)60 b(Non-n)m(umeric)37 b(v)-5 b(alues)37 -b(and)f(n)m(umeric)630 3746 y(v)-5 b(alues)31 b(less)f(than)g(zero)h +b(and)f(n)m(umeric)630 1226 y(v)-5 b(alues)31 b(less)f(than)g(zero)h (inhibit)f(truncation.)41 b(The)29 b(shell)i(sets)f(the)h(default)f(v) --5 b(alue)31 b(to)g(the)630 3856 y(v)-5 b(alue)31 b(of)f +-5 b(alue)31 b(to)g(the)630 1336 y(v)-5 b(alue)31 b(of)f Ft(HISTSIZE)f Fu(after)h(reading)h(an)m(y)g(startup)f(\014les.)150 -4005 y Ft(HISTIGNORE)630 4115 y Fu(A)j(colon-separated)h(list)f(of)g +1496 y Ft(HISTIGNORE)630 1606 y Fu(A)j(colon-separated)h(list)f(of)g (patterns)f(used)g(to)h(decide)g(whic)m(h)f(command)g(lines)h(should) -630 4224 y(b)s(e)f(sa)m(v)m(ed)h(on)g(the)f(history)h(list.)47 +630 1715 y(b)s(e)f(sa)m(v)m(ed)h(on)g(the)f(history)h(list.)47 b(Eac)m(h)33 b(pattern)g(is)f(anc)m(hored)h(at)g(the)f(b)s(eginning)g -(of)h(the)630 4334 y(line)43 b(and)e(m)m(ust)h(matc)m(h)h(the)g +(of)h(the)630 1825 y(line)43 b(and)e(m)m(ust)h(matc)m(h)h(the)g (complete)h(line)e(\(no)h(implicit)g(`)p Ft(*)p Fu(')f(is)g(app)s -(ended\).)75 b(Eac)m(h)630 4443 y(pattern)42 b(is)g(tested)g(against)h +(ended\).)75 b(Eac)m(h)630 1934 y(pattern)42 b(is)g(tested)g(against)h (the)f(line)g(after)g(the)g(c)m(hec)m(ks)h(sp)s(eci\014ed)e(b)m(y)h -Ft(HISTCONTROL)630 4553 y Fu(are)37 b(applied.)59 b(In)36 +Ft(HISTCONTROL)630 2044 y Fu(are)37 b(applied.)59 b(In)36 b(addition)h(to)g(the)g(normal)g(shell)f(pattern)h(matc)m(hing)h(c)m -(haracters,)i(`)p Ft(&)p Fu(')630 4663 y(matc)m(hes)d(the)f(previous)g +(haracters,)i(`)p Ft(&)p Fu(')630 2153 y(matc)m(hes)d(the)f(previous)g (history)g(line.)57 b(`)p Ft(&)p Fu(')36 b(ma)m(y)h(b)s(e)e(escap)s(ed) -h(using)g(a)g(bac)m(kslash;)k(the)630 4772 y(bac)m(kslash)34 +h(using)g(a)g(bac)m(kslash;)k(the)630 2263 y(bac)m(kslash)34 b(is)g(remo)m(v)m(ed)h(b)s(efore)e(attempting)i(a)g(matc)m(h.)51 -b(The)34 b(second)f(and)h(subsequen)m(t)630 4882 y(lines)e(of)h(a)g(m)m +b(The)34 b(second)f(and)h(subsequen)m(t)630 2373 y(lines)e(of)h(a)g(m)m (ulti-line)g(comp)s(ound)e(command)h(are)h(not)f(tested,)i(and)e(are)g -(added)g(to)h(the)630 4991 y(history)k(regardless)h(of)f(the)g(v)-5 +(added)g(to)h(the)630 2482 y(history)k(regardless)h(of)f(the)g(v)-5 b(alue)38 b(of)f Ft(HISTIGNORE)p Fu(.)58 b(The)37 b(pattern)g(matc)m -(hing)i(honors)630 5101 y(the)31 b(setting)g(of)g(the)f -Ft(extglob)f Fu(shell)h(option.)630 5230 y Ft(HISTIGNORE)20 +(hing)i(honors)630 2592 y(the)31 b(setting)g(of)g(the)f +Ft(extglob)f Fu(shell)h(option.)630 2727 y Ft(HISTIGNORE)20 b Fu(subsumes)g(the)j(function)f(of)h Ft(HISTCONTROL)p Fu(.)35 b(A)23 b(pattern)f(of)h(`)p Ft(&)p Fu(')g(is)f(iden)m(tical)630 -5340 y(to)k Ft(ignoredups)p Fu(,)e(and)h(a)h(pattern)g(of)f(`)p +2836 y(to)k Ft(ignoredups)p Fu(,)e(and)h(a)h(pattern)g(of)f(`)p Ft([)31 b(]*)p Fu(')25 b(is)h(iden)m(tical)h(to)f Ft(ignorespace)p -Fu(.)36 b(Com)m(bining)p eop end -%%Page: 78 84 -TeXDict begin 78 83 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(78)630 299 y(these)30 -b(t)m(w)m(o)h(patterns,)f(separating)g(them)g(with)f(a)h(colon,)h(pro)m -(vides)e(the)h(functionalit)m(y)h(of)630 408 y Ft(ignoreboth)p -Fu(.)150 558 y Ft(HISTSIZE)96 b Fu(The)37 b(maxim)m(um)g(n)m(um)m(b)s -(er)e(of)j(commands)f(to)g(remem)m(b)s(er)g(on)g(the)g(history)g(list.) -62 b(If)37 b(the)630 667 y(v)-5 b(alue)26 b(is)g(0,)i(commands)d(are)h +Fu(.)36 b(Com)m(bining)630 2946 y(these)30 b(t)m(w)m(o)h(patterns,)f +(separating)g(them)g(with)f(a)h(colon,)h(pro)m(vides)e(the)h +(functionalit)m(y)h(of)630 3055 y Ft(ignoreboth)p Fu(.)150 +3216 y Ft(HISTSIZE)96 b Fu(The)37 b(maxim)m(um)g(n)m(um)m(b)s(er)e(of)j +(commands)f(to)g(remem)m(b)s(er)g(on)g(the)g(history)g(list.)62 +b(If)37 b(the)630 3325 y(v)-5 b(alue)26 b(is)g(0,)i(commands)d(are)h (not)h(sa)m(v)m(ed)g(in)e(the)h(history)g(list.)40 b(Numeric)26 -b(v)-5 b(alues)26 b(less)g(than)630 777 y(zero)i(result)e(in)h(ev)m +b(v)-5 b(alues)26 b(less)g(than)630 3435 y(zero)i(result)e(in)h(ev)m (ery)g(command)g(b)s(eing)f(sa)m(v)m(ed)i(on)f(the)g(history)f(list)i -(\(there)f(is)g(no)g(limit\).)630 887 y(The)j(shell)g(sets)h(the)g +(\(there)f(is)g(no)g(limit\).)630 3544 y(The)j(shell)g(sets)h(the)g (default)f(v)-5 b(alue)31 b(to)g(500)h(after)f(reading)f(an)m(y)h -(startup)f(\014les.)150 1036 y Ft(HISTTIMEFORMAT)630 -1146 y Fu(If)44 b(this)g(v)-5 b(ariable)45 b(is)f(set)g(and)g(not)g(n)m +(startup)f(\014les.)150 3705 y Ft(HISTTIMEFORMAT)630 +3814 y Fu(If)44 b(this)g(v)-5 b(ariable)45 b(is)f(set)g(and)g(not)g(n)m (ull,)k(its)d(v)-5 b(alue)44 b(is)g(used)g(as)g(a)h(format)f(string)g -(for)630 1255 y Fr(strftime)c Fu(to)35 b(prin)m(t)f(the)h(time)g(stamp) +(for)630 3924 y Fr(strftime)c Fu(to)35 b(prin)m(t)f(the)h(time)g(stamp) f(asso)s(ciated)i(with)f(eac)m(h)g(history)g(en)m(try)f(displa)m(y)m -(ed)630 1365 y(b)m(y)g(the)f Ft(history)f Fu(builtin.)50 +(ed)630 4033 y(b)m(y)g(the)f Ft(history)f Fu(builtin.)50 b(If)33 b(this)h(v)-5 b(ariable)34 b(is)g(set,)h(time)f(stamps)g(are)g -(written)f(to)i(the)630 1474 y(history)26 b(\014le)g(so)g(they)g(ma)m +(written)f(to)i(the)630 4143 y(history)26 b(\014le)g(so)g(they)g(ma)m (y)h(b)s(e)e(preserv)m(ed)g(across)i(shell)f(sessions.)39 -b(This)25 b(uses)h(the)g(history)630 1584 y(commen)m(t)31 +b(This)25 b(uses)h(the)g(history)630 4253 y(commen)m(t)31 b(c)m(haracter)h(to)f(distinguish)f(timestamps)h(from)f(other)g -(history)h(lines.)150 1733 y Ft(HOSTFILE)96 b Fu(Con)m(tains)33 +(history)h(lines.)150 4413 y Ft(HOSTFILE)96 b Fu(Con)m(tains)33 b(the)g(name)f(of)h(a)g(\014le)f(in)g(the)h(same)g(format)g(as)f -Ft(/etc/hosts)e Fu(that)j(should)f(b)s(e)630 1843 y(read)21 +Ft(/etc/hosts)e Fu(that)j(should)f(b)s(e)630 4522 y(read)21 b(when)g(the)g(shell)h(needs)f(to)h(complete)h(a)e(hostname.)38 -b(The)21 b(list)h(of)g(p)s(ossible)f(hostname)630 1953 +b(The)21 b(list)h(of)g(p)s(ossible)f(hostname)630 4632 y(completions)27 b(ma)m(y)f(b)s(e)f(c)m(hanged)h(while)f(the)h(shell)g -(is)f(running;)h(the)g(next)f(time)i(hostname)630 2062 +(is)f(running;)h(the)g(next)f(time)i(hostname)630 4741 y(completion)33 b(is)g(attempted)g(after)g(the)f(v)-5 b(alue)33 b(is)f(c)m(hanged,)i(Bash)e(adds)f(the)i(con)m(ten)m(ts)h(of) -630 2172 y(the)h(new)f(\014le)g(to)h(the)g(existing)h(list.)53 +630 4851 y(the)h(new)f(\014le)g(to)h(the)g(existing)h(list.)53 b(If)34 b Ft(HOSTFILE)e Fu(is)j(set,)h(but)e(has)g(no)h(v)-5 -b(alue,)36 b(or)e(do)s(es)630 2281 y(not)d(name)f(a)h(readable)g +b(alue,)36 b(or)e(do)s(es)630 4961 y(not)d(name)f(a)h(readable)g (\014le,)g(Bash)f(attempts)i(to)f(read)f Ft(/etc/hosts)e -Fu(to)j(obtain)g(the)f(list)630 2391 y(of)h(p)s(ossible)f(hostname)h +Fu(to)j(obtain)g(the)f(list)630 5070 y(of)h(p)s(ossible)f(hostname)h (completions.)43 b(When)31 b Ft(HOSTFILE)d Fu(is)j(unset,)f(the)h -(hostname)g(list)630 2501 y(is)f(cleared.)150 2650 y -Ft(HOSTNAME)96 b Fu(The)30 b(name)g(of)h(the)f(curren)m(t)h(host.)150 -2800 y Ft(HOSTTYPE)96 b Fu(A)30 b(string)h(describing)f(the)g(mac)m -(hine)h(Bash)g(is)f(running)f(on.)150 2949 y Ft(IGNOREEOF)630 -3059 y Fu(Con)m(trols)e(the)h(action)g(of)f(the)g(shell)g(on)g(receipt) -h(of)f(an)g Ft(EOF)f Fu(c)m(haracter)i(as)g(the)f(sole)h(input.)630 -3168 y(If)i(set,)i(the)f(v)-5 b(alue)32 b(denotes)f(the)g(n)m(um)m(b)s +(hostname)g(list)630 5180 y(is)f(cleared.)150 5340 y +Ft(HOSTNAME)96 b Fu(The)30 b(name)g(of)h(the)f(curren)m(t)h(host.)p +eop end +%%Page: 81 87 +TeXDict begin 81 86 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(81)150 299 y Ft(HOSTTYPE)96 +b Fu(A)30 b(string)h(describing)f(the)g(mac)m(hine)h(Bash)g(is)f +(running)f(on.)150 448 y Ft(IGNOREEOF)630 557 y Fu(Con)m(trols)e(the)h +(action)g(of)f(the)g(shell)g(on)g(receipt)h(of)f(an)g +Ft(EOF)f Fu(c)m(haracter)i(as)g(the)f(sole)h(input.)630 +667 y(If)i(set,)i(the)f(v)-5 b(alue)32 b(denotes)f(the)g(n)m(um)m(b)s (er)f(of)h(consecutiv)m(e)i Ft(EOF)d Fu(c)m(haracters)i(that)f(can)h(b) -s(e)630 3278 y(read)40 b(as)f(the)h(\014rst)f(c)m(haracter)i(on)f(an)f +s(e)630 776 y(read)40 b(as)f(the)h(\014rst)f(c)m(haracter)i(on)f(an)f (input)g(line)h(b)s(efore)f(the)h(shell)g(will)g(exit.)70 -b(If)39 b(the)630 3387 y(v)-5 b(ariable)38 b(exists)f(but)f(do)s(es)g -(not)h(ha)m(v)m(e)h(a)g(n)m(umeric)e(v)-5 b(alue)37 b(\(or)h(has)e(no)h -(v)-5 b(alue\))37 b(then)g(the)630 3497 y(default)31 -b(is)g(10.)43 b(If)30 b(the)h(v)-5 b(ariable)31 b(do)s(es)g(not)g -(exist,)h(then)e Ft(EOF)g Fu(signi\014es)h(the)g(end)f(of)h(input)630 -3606 y(to)g(the)g(shell.)41 b(This)29 b(is)i(only)f(in)g(e\013ect)i -(for)e(in)m(teractiv)m(e)j(shells.)150 3756 y Ft(INPUTRC)144 -b Fu(The)68 b(name)h(of)f(the)h(Readline)g(initialization)j(\014le,)78 -b(o)m(v)m(erriding)69 b(the)g(default)g(of)630 3866 y -Ft(~/.inputrc)p Fu(.)150 4015 y Ft(LANG)288 b Fu(Used)28 -b(to)h(determine)f(the)g(lo)s(cale)h(category)h(for)e(an)m(y)h -(category)h(not)e(sp)s(eci\014cally)g(selected)630 4125 -y(with)i(a)h(v)-5 b(ariable)31 b(starting)g(with)f Ft(LC_)p -Fu(.)150 4274 y Ft(LC_ALL)192 b Fu(This)28 b(v)-5 b(ariable)29 -b(o)m(v)m(errides)h(the)f(v)-5 b(alue)29 b(of)g Ft(LANG)f -Fu(and)g(an)m(y)h(other)g Ft(LC_)f Fu(v)-5 b(ariable)29 -b(sp)s(ecifying)630 4384 y(a)i(lo)s(cale)h(category)-8 -b(.)150 4533 y Ft(LC_COLLATE)630 4643 y Fu(This)37 b(v)-5 -b(ariable)38 b(determines)g(the)g(collation)i(order)d(used)g(when)f -(sorting)i(the)g(results)g(of)630 4752 y(\014lename)e(expansion,)i(and) -e(determines)g(the)h(b)s(eha)m(vior)f(of)g(range)h(expressions,)h -(equiv-)630 4862 y(alence)e(classes,)h(and)e(collating)i(sequences)e -(within)f(\014lename)h(expansion)g(and)f(pattern)630 -4971 y(matc)m(hing)d(\(see)h(Section)f(3.5.8)h([Filename)g(Expansion],) -e(page)h(30\).)150 5121 y Ft(LC_CTYPE)96 b Fu(This)36 -b(v)-5 b(ariable)37 b(determines)f(the)h(in)m(terpretation)h(of)f(c)m -(haracters)h(and)e(the)g(b)s(eha)m(vior)h(of)630 5230 -y(c)m(haracter)46 b(classes)g(within)e(\014lename)h(expansion)g(and)f -(pattern)h(matc)m(hing)h(\(see)f(Sec-)630 5340 y(tion)31 -b(3.5.8)h([Filename)g(Expansion],)e(page)h(30\).)p eop -end -%%Page: 79 85 -TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(79)150 299 y Ft(LC_MESSAGES)630 -408 y Fu(This)25 b(v)-5 b(ariable)27 b(determines)f(the)g(lo)s(cale)i -(used)d(to)i(translate)g(double-quoted)f(strings)g(pre-)630 -518 y(ceded)31 b(b)m(y)f(a)h(`)p Ft($)p Fu(')f(\(see)h(Section)h -(3.1.2.5)g([Lo)s(cale)g(T)-8 b(ranslation],)32 b(page)f(7\).)150 -679 y Ft(LC_NUMERIC)630 788 y Fu(This)f(v)-5 b(ariable)31 -b(determines)f(the)h(lo)s(cale)h(category)g(used)e(for)g(n)m(um)m(b)s -(er)f(formatting.)150 949 y Ft(LC_TIME)144 b Fu(This)25 -b(v)-5 b(ariable)26 b(determines)g(the)g(lo)s(cale)h(category)h(used)d -(for)g(data)h(and)f(time)i(formatting.)150 1110 y Ft(LINENO)192 -b Fu(The)30 b(line)h(n)m(um)m(b)s(er)e(in)h(the)g(script)h(or)f(shell)g -(function)h(curren)m(tly)f(executing.)150 1271 y Ft(LINES)240 -b Fu(Used)43 b(b)m(y)g(the)g Ft(select)e Fu(command)i(to)g(determine)g -(the)g(column)g(length)g(for)g(prin)m(ting)630 1380 y(selection)c +b(If)39 b(the)630 886 y(v)-5 b(ariable)39 b(exists)f(but)g(do)s(es)f +(not)h(ha)m(v)m(e)h(a)g(n)m(umeric)f(v)-5 b(alue,)40 +b(or)e(has)g(no)g(v)-5 b(alue,)40 b(then)e(the)630 996 +y(default)31 b(is)g(10.)43 b(If)30 b(the)h(v)-5 b(ariable)31 +b(do)s(es)g(not)g(exist,)h(then)e Ft(EOF)g Fu(signi\014es)h(the)g(end)f +(of)h(input)630 1105 y(to)g(the)g(shell.)41 b(This)29 +b(is)i(only)f(in)g(e\013ect)i(for)e(in)m(teractiv)m(e)j(shells.)150 +1254 y Ft(INPUTRC)144 b Fu(The)68 b(name)h(of)f(the)h(Readline)g +(initialization)j(\014le,)78 b(o)m(v)m(erriding)69 b(the)g(default)g +(of)630 1363 y Ft(~/.inputrc)p Fu(.)150 1512 y Ft(INSIDE_EMACS)630 +1622 y Fu(If)29 b(Bash)h(\014nds)e(this)h(v)-5 b(ariable)31 +b(in)e(the)h(en)m(vironmen)m(t)g(when)e(the)i(shell)g(starts,)g(it)g +(assumes)630 1731 y(that)i(the)g(shell)g(is)f(running)f(in)i(an)f +(Emacs)h(shell)g(bu\013er)e(and)h(ma)m(y)i(disable)e(line)h(editing)630 +1841 y(dep)s(ending)d(on)h(the)h(v)-5 b(alue)31 b(of)f +Ft(TERM)p Fu(.)150 1990 y Ft(LANG)288 b Fu(Used)28 b(to)h(determine)f +(the)g(lo)s(cale)h(category)h(for)e(an)m(y)h(category)h(not)e(sp)s +(eci\014cally)g(selected)630 2099 y(with)i(a)h(v)-5 b(ariable)31 +b(starting)g(with)f Ft(LC_)p Fu(.)150 2248 y Ft(LC_ALL)192 +b Fu(This)28 b(v)-5 b(ariable)29 b(o)m(v)m(errides)h(the)f(v)-5 +b(alue)29 b(of)g Ft(LANG)f Fu(and)g(an)m(y)h(other)g +Ft(LC_)f Fu(v)-5 b(ariable)29 b(sp)s(ecifying)630 2358 +y(a)i(lo)s(cale)h(category)-8 b(.)150 2506 y Ft(LC_COLLATE)630 +2616 y Fu(This)37 b(v)-5 b(ariable)38 b(determines)g(the)g(collation)i +(order)d(used)g(when)f(sorting)i(the)g(results)g(of)630 +2725 y(\014lename)e(expansion,)i(and)e(determines)g(the)h(b)s(eha)m +(vior)f(of)g(range)h(expressions,)h(equiv-)630 2835 y(alence)e +(classes,)h(and)e(collating)i(sequences)e(within)f(\014lename)h +(expansion)g(and)f(pattern)630 2945 y(matc)m(hing)d(\(see)h(Section)f +(3.5.8)h([Filename)g(Expansion],)e(page)h(32\).)150 3093 +y Ft(LC_CTYPE)96 b Fu(This)36 b(v)-5 b(ariable)37 b(determines)f(the)h +(in)m(terpretation)h(of)f(c)m(haracters)h(and)e(the)g(b)s(eha)m(vior)h +(of)630 3203 y(c)m(haracter)46 b(classes)g(within)e(\014lename)h +(expansion)g(and)f(pattern)h(matc)m(hing)h(\(see)f(Sec-)630 +3313 y(tion)31 b(3.5.8)h([Filename)g(Expansion],)e(page)h(32\).)150 +3461 y Ft(LC_MESSAGES)630 3571 y Fu(This)25 b(v)-5 b(ariable)27 +b(determines)f(the)g(lo)s(cale)i(used)d(to)i(translate)g(double-quoted) +f(strings)g(pre-)630 3680 y(ceded)31 b(b)m(y)f(a)h(`)p +Ft($)p Fu(')f(\(see)h(Section)h(3.1.2.5)g([Lo)s(cale)g(T)-8 +b(ranslation],)32 b(page)f(7\).)150 3829 y Ft(LC_NUMERIC)630 +3939 y Fu(This)f(v)-5 b(ariable)31 b(determines)f(the)h(lo)s(cale)h +(category)g(used)e(for)g(n)m(um)m(b)s(er)f(formatting.)150 +4088 y Ft(LC_TIME)144 b Fu(This)25 b(v)-5 b(ariable)26 +b(determines)g(the)g(lo)s(cale)h(category)h(used)d(for)g(data)h(and)f +(time)i(formatting.)150 4236 y Ft(LINENO)192 b Fu(The)30 +b(line)h(n)m(um)m(b)s(er)e(in)h(the)g(script)h(or)f(shell)g(function)h +(curren)m(tly)f(executing.)150 4385 y Ft(LINES)240 b +Fu(Used)43 b(b)m(y)g(the)g Ft(select)e Fu(command)i(to)g(determine)g +(the)g(column)g(length)g(for)g(prin)m(ting)630 4495 y(selection)c (lists.)63 b(Automatically)41 b(set)d(if)f(the)h Ft(checkwinsize)d -Fu(option)j(is)f(enabled)h(\(see)630 1490 y(Section)44 -b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(64\),)k(or)43 -b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 1599 -y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 1760 y +Fu(option)j(is)f(enabled)h(\(see)630 4604 y(Section)44 +b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(65\),)k(or)43 +b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 4714 +y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 4862 y Ft(MACHTYPE)96 b Fu(A)26 b(string)g(that)h(fully)f(describ)s(es)f(the)h (system)g(t)m(yp)s(e)h(on)f(whic)m(h)f(Bash)i(is)f(executing,)i(in)e -(the)630 1870 y(standard)k Fm(gnu)g Fr(cpu-compan)m(y-system)h -Fu(format.)150 2030 y Ft(MAILCHECK)630 2140 y Fu(Ho)m(w)d(often)g(\(in) +(the)630 4972 y(standard)k Fm(gnu)g Fr(cpu-compan)m(y-system)h +Fu(format.)150 5121 y Ft(MAILCHECK)630 5230 y Fu(Ho)m(w)d(often)g(\(in) g(seconds\))g(that)g(the)f(shell)h(should)f(c)m(hec)m(k)i(for)e(mail)h -(in)f(the)h(\014les)g(sp)s(eci\014ed)630 2250 y(in)i(the)h +(in)f(the)h(\014les)g(sp)s(eci\014ed)630 5340 y(in)i(the)h Ft(MAILPATH)e Fu(or)i Ft(MAIL)e Fu(v)-5 b(ariables.)43 b(The)30 b(default)h(is)f(60)i(seconds.)42 b(When)30 -b(it)h(is)g(time)630 2359 y(to)37 b(c)m(hec)m(k)h(for)e(mail,)j(the)e -(shell)f(do)s(es)g(so)h(b)s(efore)f(displa)m(ying)h(the)f(primary)g -(prompt.)57 b(If)630 2469 y(this)37 b(v)-5 b(ariable)38 -b(is)f(unset,)h(or)f(set)h(to)g(a)f(v)-5 b(alue)38 b(that)f(is)g(not)h -(a)f(n)m(um)m(b)s(er)f(greater)i(than)f(or)630 2578 y(equal)31 -b(to)g(zero,)g(the)g(shell)g(disables)f(mail)h(c)m(hec)m(king.)150 -2739 y Ft(MAPFILE)144 b Fu(An)35 b(arra)m(y)h(v)-5 b(ariable)36 -b(created)g(to)h(hold)e(the)g(text)i(read)e(b)m(y)g(the)h -Ft(mapfile)d Fu(builtin)i(when)630 2849 y(no)30 b(v)-5 -b(ariable)31 b(name)g(is)f(supplied.)150 3009 y Ft(OLDPWD)192 -b Fu(The)30 b(previous)g(w)m(orking)g(directory)h(as)g(set)g(b)m(y)f -(the)h Ft(cd)e Fu(builtin.)150 3170 y Ft(OPTERR)192 b -Fu(If)35 b(set)i(to)f(the)h(v)-5 b(alue)36 b(1,)i(Bash)e(displa)m(ys)g -(error)f(messages)i(generated)g(b)m(y)f(the)g Ft(getopts)630 -3280 y Fu(builtin)30 b(command.)150 3440 y Ft(OSTYPE)192 -b Fu(A)30 b(string)h(describing)f(the)g(op)s(erating)h(system)g(Bash)f -(is)h(running)d(on.)150 3601 y Ft(PIPESTATUS)630 3711 -y Fu(An)23 b(arra)m(y)h(v)-5 b(ariable)24 b(\(see)h(Section)f(6.7)h -([Arra)m(ys],)g(page)f(91\))h(con)m(taining)g(a)f(list)g(of)g(exit)g -(sta-)630 3820 y(tus)h(v)-5 b(alues)27 b(from)e(the)h(pro)s(cesses)g -(in)f(the)h(most-recen)m(tly-executed)j(foreground)c(pip)s(eline)630 -3930 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h -(command\).)150 4091 y Ft(POSIXLY_CORRECT)630 4200 y +b(it)h(is)g(time)p eop end +%%Page: 82 88 +TeXDict begin 82 87 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(82)630 299 y(to)37 +b(c)m(hec)m(k)h(for)e(mail,)j(the)e(shell)f(do)s(es)g(so)h(b)s(efore)f +(displa)m(ying)h(the)f(primary)g(prompt.)57 b(If)630 +408 y(this)37 b(v)-5 b(ariable)38 b(is)f(unset,)h(or)f(set)h(to)g(a)f +(v)-5 b(alue)38 b(that)f(is)g(not)h(a)f(n)m(um)m(b)s(er)f(greater)i +(than)f(or)630 518 y(equal)31 b(to)g(zero,)g(the)g(shell)g(disables)f +(mail)h(c)m(hec)m(king.)150 682 y Ft(MAPFILE)144 b Fu(An)35 +b(arra)m(y)h(v)-5 b(ariable)36 b(created)g(to)h(hold)e(the)g(text)i +(read)e(b)m(y)g(the)h Ft(mapfile)d Fu(builtin)i(when)630 +792 y(no)30 b(v)-5 b(ariable)31 b(name)g(is)f(supplied.)150 +956 y Ft(OLDPWD)192 b Fu(The)30 b(previous)g(w)m(orking)g(directory)h +(as)g(set)g(b)m(y)f(the)h Ft(cd)e Fu(builtin.)150 1121 +y Ft(OPTERR)192 b Fu(If)35 b(set)i(to)f(the)h(v)-5 b(alue)36 +b(1,)i(Bash)e(displa)m(ys)g(error)f(messages)i(generated)g(b)m(y)f(the) +g Ft(getopts)630 1230 y Fu(builtin)30 b(command.)150 +1395 y Ft(OSTYPE)192 b Fu(A)30 b(string)h(describing)f(the)g(op)s +(erating)h(system)g(Bash)f(is)h(running)d(on.)150 1559 +y Ft(PIPESTATUS)630 1669 y Fu(An)23 b(arra)m(y)h(v)-5 +b(ariable)24 b(\(see)h(Section)f(6.7)h([Arra)m(ys],)g(page)f(94\))h +(con)m(taining)g(a)f(list)g(of)g(exit)g(sta-)630 1778 +y(tus)h(v)-5 b(alues)27 b(from)e(the)h(pro)s(cesses)g(in)f(the)h +(most-recen)m(tly-executed)j(foreground)c(pip)s(eline)630 +1888 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h +(command\).)150 2052 y Ft(POSIXLY_CORRECT)630 2162 y Fu(If)h(this)g(v)-5 b(ariable)34 b(is)e(in)g(the)h(en)m(vironmen)m(t)g (when)e(Bash)i(starts,)g(the)g(shell)g(en)m(ters)g Fm(posix)630 -4310 y Fu(mo)s(de)22 b(\(see)h(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s -(de],)k(page)e(96\))g(b)s(efore)f(reading)g(the)g(startup)630 -4419 y(\014les,)36 b(as)e(if)h(the)f Ft(--posix)f Fu(in)m(v)m(o)s +2271 y Fu(mo)s(de)22 b(\(see)h(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s +(de],)k(page)e(99\))g(b)s(efore)f(reading)g(the)g(startup)630 +2381 y(\014les,)36 b(as)e(if)h(the)f Ft(--posix)f Fu(in)m(v)m(o)s (cation)j(option)f(had)f(b)s(een)g(supplied.)51 b(If)34 -b(it)h(is)g(set)g(while)630 4529 y(the)c(shell)f(is)h(running,)d(Bash)j +b(it)h(is)g(set)g(while)630 2491 y(the)c(shell)f(is)h(running,)d(Bash)j (enables)g Fm(posix)e Fu(mo)s(de,)h(as)h(if)f(the)h(command)870 -4664 y Ft(set)47 b(-o)g(posix)630 4799 y Fu(had)30 b(b)s(een)f -(executed.)150 4960 y Ft(PPID)288 b Fu(The)30 b(pro)s(cess)g -Fm(id)g Fu(of)h(the)f(shell's)h(paren)m(t)g(pro)s(cess.)40 -b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)150 -5121 y Ft(PROMPT_COMMAND)630 5230 y Fu(If)32 b(set,)h(the)f(v)-5 -b(alue)33 b(is)f(in)m(terpreted)g(as)g(a)h(command)f(to)h(execute)g(b)s -(efore)f(the)g(prin)m(ting)g(of)630 5340 y(eac)m(h)g(primary)d(prompt)g -(\()p Ft($PS1)p Fu(\).)p eop end -%%Page: 80 86 -TeXDict begin 80 85 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(80)150 299 y Ft(PROMPT_DIRTRIM)630 -408 y Fu(If)27 b(set)g(to)h(a)g(n)m(um)m(b)s(er)e(greater)i(than)f -(zero,)i(the)e(v)-5 b(alue)28 b(is)f(used)g(as)g(the)h(n)m(um)m(b)s(er) -e(of)h(trailing)630 518 y(directory)35 b(comp)s(onen)m(ts)g(to)h -(retain)f(when)f(expanding)g(the)h Ft(\\w)f Fu(and)g -Ft(\\W)g Fu(prompt)g(string)630 628 y(escap)s(es)21 b(\(see)h(Section)f -(6.9)h([Con)m(trolling)g(the)f(Prompt],)h(page)f(94\).)39 -b(Characters)21 b(remo)m(v)m(ed)630 737 y(are)31 b(replaced)g(with)f -(an)g(ellipsis.)150 911 y Ft(PS0)336 b Fu(The)30 b(v)-5 -b(alue)32 b(of)f(this)f(parameter)i(is)f(expanded)f(lik)m(e)i -Fr(PS1)38 b Fu(and)30 b(displa)m(y)m(ed)h(b)m(y)g(in)m(teractiv)m(e)630 -1020 y(shells)f(after)h(reading)g(a)g(command)f(and)f(b)s(efore)h(the)h -(command)f(is)h(executed.)150 1194 y Ft(PS3)336 b Fu(The)34 -b(v)-5 b(alue)35 b(of)f(this)g(v)-5 b(ariable)35 b(is)g(used)e(as)i -(the)f(prompt)g(for)g(the)g Ft(select)f Fu(command.)52 -b(If)630 1303 y(this)30 b(v)-5 b(ariable)31 b(is)g(not)f(set,)i(the)e -Ft(select)f Fu(command)h(prompts)f(with)h(`)p Ft(#?)g -Fu(')150 1477 y Ft(PS4)336 b Fu(The)24 b(v)-5 b(alue)25 -b(is)f(the)h(prompt)e(prin)m(ted)h(b)s(efore)g(the)h(command)f(line)h -(is)f(ec)m(ho)s(ed)i(when)d(the)i Ft(-x)630 1587 y Fu(option)32 -b(is)f(set)h(\(see)g(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f -(60\).)45 b(The)31 b(\014rst)f(c)m(haracter)630 1696 -y(of)k Ft(PS4)g Fu(is)g(replicated)i(m)m(ultiple)f(times,)h(as)e -(necessary)-8 b(,)37 b(to)e(indicate)g(m)m(ultiple)g(lev)m(els)h(of)630 -1806 y(indirection.)41 b(The)30 b(default)h(is)f(`)p -Ft(+)g Fu('.)150 1979 y Ft(PWD)336 b Fu(The)30 b(curren)m(t)g(w)m -(orking)h(directory)g(as)f(set)h(b)m(y)f(the)h Ft(cd)f -Fu(builtin.)150 2153 y Ft(RANDOM)192 b Fu(Eac)m(h)30 -b(time)g(this)f(parameter)g(is)g(referenced,)h(a)f(random)g(in)m(teger) -h(b)s(et)m(w)m(een)g(0)f(and)g(32767)630 2262 y(is)i(generated.)43 -b(Assigning)31 b(a)g(v)-5 b(alue)31 b(to)g(this)g(v)-5 -b(ariable)31 b(seeds)g(the)g(random)f(n)m(um)m(b)s(er)f(gen-)630 -2372 y(erator.)150 2545 y Ft(READLINE_LINE)630 2655 y -Fu(The)e(con)m(ten)m(ts)i(of)f(the)g(Readline)g(line)g(bu\013er,)f(for) -h(use)f(with)g(`)p Ft(bind)j(-x)p Fu(')d(\(see)h(Section)h(4.2)630 -2765 y([Bash)i(Builtins],)g(page)g(49\).)150 2938 y Ft(READLINE_POINT) -630 3048 y Fu(The)23 b(p)s(osition)g(of)g(the)h(insertion)f(p)s(oin)m -(t)g(in)g(the)g(Readline)h(line)f(bu\013er,)h(for)f(use)g(with)g(`)p -Ft(bind)630 3157 y(-x)p Fu(')30 b(\(see)h(Section)h(4.2)f([Bash)g -(Builtins],)g(page)g(49\).)150 3331 y Ft(REPLY)240 b -Fu(The)30 b(default)g(v)-5 b(ariable)32 b(for)e(the)g -Ft(read)g Fu(builtin.)150 3504 y Ft(SECONDS)144 b Fu(This)40 -b(v)-5 b(ariable)41 b(expands)f(to)h(the)g(n)m(um)m(b)s(er)e(of)i -(seconds)g(since)g(the)f(shell)h(w)m(as)g(started.)630 -3614 y(Assignmen)m(t)i(to)g(this)g(v)-5 b(ariable)43 +2628 y Ft(set)47 b(-o)g(posix)630 2765 y Fu(had)33 b(b)s(een)g +(executed.)51 b(When)33 b(the)h(shell)f(en)m(ters)h Fm(posix)f +Fu(mo)s(de,)h(it)g(sets)g(this)g(v)-5 b(ariable)34 b(if)630 +2874 y(it)d(w)m(as)g(not)f(already)h(set.)150 3039 y +Ft(PPID)288 b Fu(The)30 b(pro)s(cess)g Fm(id)g Fu(of)h(the)f(shell's)h +(paren)m(t)g(pro)s(cess.)40 b(This)30 b(v)-5 b(ariable)31 +b(is)f(readonly)-8 b(.)150 3203 y Ft(PROMPT_COMMAND)630 +3313 y Fu(If)32 b(set,)h(the)f(v)-5 b(alue)33 b(is)f(in)m(terpreted)g +(as)g(a)h(command)f(to)h(execute)g(b)s(efore)f(the)g(prin)m(ting)g(of) +630 3422 y(eac)m(h)g(primary)d(prompt)g(\()p Ft($PS1)p +Fu(\).)150 3587 y Ft(PROMPT_DIRTRIM)630 3696 y Fu(If)e(set)g(to)h(a)g +(n)m(um)m(b)s(er)e(greater)i(than)f(zero,)i(the)e(v)-5 +b(alue)28 b(is)f(used)g(as)g(the)h(n)m(um)m(b)s(er)e(of)h(trailing)630 +3806 y(directory)35 b(comp)s(onen)m(ts)g(to)h(retain)f(when)f +(expanding)g(the)h Ft(\\w)f Fu(and)g Ft(\\W)g Fu(prompt)g(string)630 +3915 y(escap)s(es)21 b(\(see)h(Section)f(6.9)h([Con)m(trolling)g(the)f +(Prompt],)h(page)f(97\).)39 b(Characters)21 b(remo)m(v)m(ed)630 +4025 y(are)31 b(replaced)g(with)f(an)g(ellipsis.)150 +4189 y Ft(PS0)336 b Fu(The)30 b(v)-5 b(alue)32 b(of)f(this)f(parameter) +i(is)f(expanded)f(lik)m(e)i Fr(PS1)38 b Fu(and)30 b(displa)m(y)m(ed)h +(b)m(y)g(in)m(teractiv)m(e)630 4299 y(shells)f(after)h(reading)g(a)g +(command)f(and)f(b)s(efore)h(the)h(command)f(is)h(executed.)150 +4463 y Ft(PS3)336 b Fu(The)34 b(v)-5 b(alue)35 b(of)f(this)g(v)-5 +b(ariable)35 b(is)g(used)e(as)i(the)f(prompt)g(for)g(the)g +Ft(select)f Fu(command.)52 b(If)630 4573 y(this)30 b(v)-5 +b(ariable)31 b(is)g(not)f(set,)i(the)e Ft(select)f Fu(command)h +(prompts)f(with)h(`)p Ft(#?)g Fu(')150 4737 y Ft(PS4)336 +b Fu(The)37 b(v)-5 b(alue)37 b(of)g(this)g(parameter)h(is)f(expanded)f +(lik)m(e)i Fr(PS1)44 b Fu(and)37 b(the)g(expanded)f(v)-5 +b(alue)38 b(is)630 4847 y(the)d(prompt)f(prin)m(ted)g(b)s(efore)g(the)h +(command)f(line)h(is)g(ec)m(ho)s(ed)g(when)f(the)h Ft(-x)f +Fu(option)h(is)630 4956 y(set)k(\(see)h(Section)g(4.3.1)g([The)f(Set)g +(Builtin],)j(page)e(61\).)67 b(The)38 b(\014rst)g(c)m(haracter)j(of)e +(the)630 5066 y(expanded)33 b(v)-5 b(alue)33 b(is)h(replicated)g(m)m +(ultiple)g(times,)h(as)f(necessary)-8 b(,)35 b(to)f(indicate)g(m)m +(ultiple)630 5176 y(lev)m(els)e(of)e(indirection.)42 +b(The)29 b(default)i(is)f(`)p Ft(+)h Fu('.)150 5340 y +Ft(PWD)336 b Fu(The)30 b(curren)m(t)g(w)m(orking)h(directory)g(as)f +(set)h(b)m(y)f(the)h Ft(cd)f Fu(builtin.)p eop end +%%Page: 83 89 +TeXDict begin 83 88 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(83)150 299 y Ft(RANDOM)192 +b Fu(Eac)m(h)30 b(time)g(this)f(parameter)g(is)g(referenced,)h(a)f +(random)g(in)m(teger)h(b)s(et)m(w)m(een)g(0)f(and)g(32767)630 +408 y(is)i(generated.)43 b(Assigning)31 b(a)g(v)-5 b(alue)31 +b(to)g(this)g(v)-5 b(ariable)31 b(seeds)g(the)g(random)f(n)m(um)m(b)s +(er)f(gen-)630 518 y(erator.)150 675 y Ft(READLINE_LINE)630 +784 y Fu(The)e(con)m(ten)m(ts)i(of)f(the)g(Readline)g(line)g(bu\013er,) +f(for)h(use)f(with)g(`)p Ft(bind)j(-x)p Fu(')d(\(see)h(Section)h(4.2) +630 894 y([Bash)i(Builtins],)g(page)g(50\).)150 1050 +y Ft(READLINE_POINT)630 1160 y Fu(The)23 b(p)s(osition)g(of)g(the)h +(insertion)f(p)s(oin)m(t)g(in)g(the)g(Readline)h(line)f(bu\013er,)h +(for)f(use)g(with)g(`)p Ft(bind)630 1270 y(-x)p Fu(')30 +b(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(50\).)150 +1426 y Ft(REPLY)240 b Fu(The)30 b(default)g(v)-5 b(ariable)32 +b(for)e(the)g Ft(read)g Fu(builtin.)150 1583 y Ft(SECONDS)144 +b Fu(This)40 b(v)-5 b(ariable)41 b(expands)f(to)h(the)g(n)m(um)m(b)s +(er)e(of)i(seconds)g(since)g(the)f(shell)h(w)m(as)g(started.)630 +1692 y(Assignmen)m(t)i(to)g(this)g(v)-5 b(ariable)43 b(resets)g(the)g(coun)m(t)g(to)g(the)g(v)-5 b(alue)43 -b(assigned,)j(and)c(the)630 3724 y(expanded)35 b(v)-5 +b(assigned,)j(and)c(the)630 1802 y(expanded)35 b(v)-5 b(alue)36 b(b)s(ecomes)h(the)f(v)-5 b(alue)36 b(assigned)g(plus)f(the)h -(n)m(um)m(b)s(er)f(of)h(seconds)g(since)630 3833 y(the)31 -b(assignmen)m(t.)150 4007 y Ft(SHELL)240 b Fu(The)29 +(n)m(um)m(b)s(er)f(of)h(seconds)g(since)630 1911 y(the)31 +b(assignmen)m(t.)150 2068 y Ft(SHELL)240 b Fu(The)29 b(full)h(pathname)g(to)h(the)f(shell)g(is)g(k)m(ept)g(in)g(this)g(en)m (vironmen)m(t)g(v)-5 b(ariable.)42 b(If)29 b(it)i(is)f(not)630 -4116 y(set)36 b(when)f(the)h(shell)g(starts,)i(Bash)e(assigns)h(to)f +2178 y(set)36 b(when)f(the)h(shell)g(starts,)i(Bash)e(assigns)h(to)f (it)h(the)f(full)f(pathname)h(of)g(the)g(curren)m(t)630 -4226 y(user's)30 b(login)h(shell.)150 4399 y Ft(SHELLOPTS)630 -4509 y Fu(A)g(colon-separated)h(list)f(of)g(enabled)f(shell)h(options.) +2287 y(user's)30 b(login)h(shell.)150 2444 y Ft(SHELLOPTS)630 +2553 y Fu(A)g(colon-separated)h(list)f(of)g(enabled)f(shell)h(options.) 41 b(Eac)m(h)31 b(w)m(ord)f(in)g(the)h(list)g(is)g(a)g(v)-5 -b(alid)630 4619 y(argumen)m(t)28 b(for)f(the)h Ft(-o)e +b(alid)630 2663 y(argumen)m(t)28 b(for)f(the)h Ft(-o)e Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)h(command)g(\(see)i(Section) -f(4.3.1)h([The)630 4728 y(Set)g(Builtin],)h(page)f(60\).)42 +f(4.3.1)h([The)630 2772 y(Set)g(Builtin],)h(page)f(61\).)42 b(The)28 b(options)h(app)s(earing)f(in)g Ft(SHELLOPTS)e -Fu(are)j(those)h(rep)s(orted)630 4838 y(as)g(`)p Ft(on)p +Fu(are)j(those)h(rep)s(orted)630 2882 y(as)g(`)p Ft(on)p Fu(')f(b)m(y)h(`)p Ft(set)g(-o)p Fu('.)40 b(If)29 b(this)h(v)-5 b(ariable)30 b(is)g(in)f(the)h(en)m(vironmen)m(t)g(when)f(Bash)h -(starts)g(up,)630 4947 y(eac)m(h)41 b(shell)e(option)h(in)f(the)h(list) +(starts)g(up,)630 2992 y(eac)m(h)41 b(shell)e(option)h(in)f(the)h(list) g(will)f(b)s(e)g(enabled)h(b)s(efore)f(reading)g(an)m(y)h(startup)f -(\014les.)630 5057 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 -b(.)150 5230 y Ft(SHLVL)240 b Fu(Incremen)m(ted)21 b(b)m(y)g(one)g(eac) +(\014les.)630 3101 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 +b(.)150 3258 y Ft(SHLVL)240 b Fu(Incremen)m(ted)21 b(b)m(y)g(one)g(eac) m(h)h(time)f(a)h(new)e(instance)h(of)g(Bash)g(is)g(started.)38 -b(This)20 b(is)h(in)m(tended)630 5340 y(to)31 b(b)s(e)f(a)h(coun)m(t)g -(of)f(ho)m(w)h(deeply)f(y)m(our)g(Bash)h(shells)f(are)h(nested.)p -eop end -%%Page: 81 87 -TeXDict begin 81 86 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(81)150 299 y Ft(TIMEFORMAT)630 -408 y Fu(The)30 b(v)-5 b(alue)32 b(of)f(this)g(parameter)g(is)g(used)f -(as)h(a)g(format)h(string)f(sp)s(ecifying)f(ho)m(w)h(the)g(tim-)630 -518 y(ing)37 b(information)f(for)h(pip)s(elines)f(pre\014xed)f(with)h -(the)h Ft(time)e Fu(reserv)m(ed)i(w)m(ord)f(should)g(b)s(e)630 -628 y(displa)m(y)m(ed.)k(The)27 b(`)p Ft(\045)p Fu(')h(c)m(haracter)h -(in)m(tro)s(duces)e(an)h(escap)s(e)g(sequence)g(that)g(is)f(expanded)g -(to)630 737 y(a)37 b(time)g(v)-5 b(alue)36 b(or)h(other)f(information.) -59 b(The)36 b(escap)s(e)g(sequences)h(and)e(their)i(meanings)630 -847 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h(p) -s(ortions.)630 1006 y Ft(\045\045)384 b Fu(A)30 b(literal)i(`)p -Ft(\045)p Fu('.)630 1166 y Ft(\045[)p Fj(p)p Ft(][l]R)96 -b Fu(The)30 b(elapsed)h(time)g(in)f(seconds.)630 1325 +b(This)20 b(is)h(in)m(tended)630 3367 y(to)31 b(b)s(e)f(a)h(coun)m(t)g +(of)f(ho)m(w)h(deeply)f(y)m(our)g(Bash)h(shells)f(are)h(nested.)150 +3524 y Ft(TIMEFORMAT)630 3634 y Fu(The)f(v)-5 b(alue)32 +b(of)f(this)g(parameter)g(is)g(used)f(as)h(a)g(format)h(string)f(sp)s +(ecifying)f(ho)m(w)h(the)g(tim-)630 3743 y(ing)37 b(information)f(for)h +(pip)s(elines)f(pre\014xed)f(with)h(the)h Ft(time)e Fu(reserv)m(ed)i(w) +m(ord)f(should)g(b)s(e)630 3853 y(displa)m(y)m(ed.)k(The)27 +b(`)p Ft(\045)p Fu(')h(c)m(haracter)h(in)m(tro)s(duces)e(an)h(escap)s +(e)g(sequence)g(that)g(is)f(expanded)g(to)630 3962 y(a)37 +b(time)g(v)-5 b(alue)36 b(or)h(other)f(information.)59 +b(The)36 b(escap)s(e)g(sequences)h(and)e(their)i(meanings)630 +4072 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h +(p)s(ortions.)630 4228 y Ft(\045\045)384 b Fu(A)30 b(literal)i(`)p +Ft(\045)p Fu('.)630 4385 y Ft(\045[)p Fj(p)p Ft(][l]R)96 +b Fu(The)30 b(elapsed)h(time)g(in)f(seconds.)630 4542 y Ft(\045[)p Fj(p)p Ft(][l]U)96 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h (CPU)g(seconds)h(sp)s(en)m(t)f(in)g(user)f(mo)s(de.)630 -1484 y Ft(\045[)p Fj(p)p Ft(][l]S)96 b Fu(The)30 b(n)m(um)m(b)s(er)f +4698 y Ft(\045[)p Fj(p)p Ft(][l]S)96 b Fu(The)30 b(n)m(um)m(b)s(er)f (of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(system)g(mo)s(de.)630 -1644 y Ft(\045P)384 b Fu(The)30 b(CPU)g(p)s(ercen)m(tage,)i(computed)e -(as)h(\(\045U)f Ft(+)g Fu(\045S\))g(/)h(\045R.)630 1803 +4855 y Ft(\045P)384 b Fu(The)30 b(CPU)g(p)s(ercen)m(tage,)i(computed)e +(as)h(\(\045U)f Ft(+)g Fu(\045S\))g(/)h(\045R.)630 5011 y(The)23 b(optional)j Fr(p)g Fu(is)e(a)g(digit)h(sp)s(ecifying)e(the)h (precision,)i(the)e(n)m(um)m(b)s(er)f(of)h(fractional)h(digits)630 -1913 y(after)36 b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35 +5121 y(after)36 b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35 b(v)-5 b(alue)36 b(of)f(0)h(causes)g(no)f(decimal)h(p)s(oin)m(t)f(or)h -(fraction)g(to)g(b)s(e)630 2022 y(output.)48 b(A)m(t)34 +(fraction)g(to)g(b)s(e)630 5230 y(output.)48 b(A)m(t)34 b(most)f(three)g(places)h(after)f(the)g(decimal)h(p)s(oin)m(t)f(ma)m(y) -h(b)s(e)e(sp)s(eci\014ed;)i(v)-5 b(alues)630 2132 y(of)31 +h(b)s(e)e(sp)s(eci\014ed;)i(v)-5 b(alues)630 5340 y(of)31 b Fr(p)h Fu(greater)g(than)e(3)h(are)f(c)m(hanged)h(to)g(3.)42 b(If)29 b Fr(p)k Fu(is)d(not)h(sp)s(eci\014ed,)f(the)h(v)-5 -b(alue)30 b(3)h(is)g(used.)630 2267 y(The)54 b(optional)h -Ft(l)f Fu(sp)s(eci\014es)g(a)h(longer)f(format,)61 b(including)54 -b(min)m(utes,)61 b(of)54 b(the)g(form)630 2376 y Fr(MM)10 -b Fu(m)p Fr(SS)p Fu(.)p Fr(FF)d Fu(s.)103 b(The)50 b(v)-5 -b(alue)52 b(of)f Fr(p)j Fu(determines)d(whether)f(or)h(not)h(the)f -(fraction)h(is)630 2486 y(included.)630 2620 y(If)30 -b(this)g(v)-5 b(ariable)31 b(is)g(not)f(set,)i(Bash)e(acts)h(as)g(if)f -(it)h(had)f(the)h(v)-5 b(alue)870 2755 y Ft +b(alue)30 b(3)h(is)g(used.)p eop end +%%Page: 84 90 +TeXDict begin 84 89 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(84)630 299 y(The)54 +b(optional)h Ft(l)f Fu(sp)s(eci\014es)g(a)h(longer)f(format,)61 +b(including)54 b(min)m(utes,)61 b(of)54 b(the)g(form)630 +408 y Fr(MM)10 b Fu(m)p Fr(SS)p Fu(.)p Fr(FF)d Fu(s.)103 +b(The)50 b(v)-5 b(alue)52 b(of)f Fr(p)j Fu(determines)d(whether)f(or)h +(not)h(the)f(fraction)h(is)630 518 y(included.)630 653 +y(If)30 b(this)g(v)-5 b(ariable)31 b(is)g(not)f(set,)i(Bash)e(acts)h +(as)g(if)f(it)h(had)f(the)h(v)-5 b(alue)870 787 y Ft ($'\\nreal\\t\0453lR\\nuser\\t\0453)o(lU\\n)o(sys\\)o(t\0453)o(lS')630 -2889 y Fu(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f +922 y Fu(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f (information)h(is)f(displa)m(y)m(ed.)62 b(A)37 b(trailing)i(newline)e -(is)630 2999 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m -(y)m(ed.)150 3158 y Ft(TMOUT)240 b Fu(If)22 b(set)h(to)g(a)g(v)-5 +(is)630 1031 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m +(y)m(ed.)150 1191 y Ft(TMOUT)240 b Fu(If)22 b(set)h(to)g(a)g(v)-5 b(alue)23 b(greater)h(than)e(zero,)j Ft(TMOUT)d Fu(is)g(treated)i(as)e -(the)h(default)g(timeout)g(for)g(the)630 3268 y Ft(read)31 +(the)h(default)g(timeout)g(for)g(the)630 1300 y Ft(read)31 b Fu(builtin)h(\(see)h(Section)f(4.2)i([Bash)e(Builtins],)h(page)g -(49\).)47 b(The)32 b Ft(select)e Fu(command)630 3377 +(50\).)47 b(The)32 b Ft(select)e Fu(command)630 1410 y(\(see)f(Section)h(3.2.4.2)g([Conditional)g(Constructs],)e(page)i -(10\))f(terminates)g(if)g(input)e(do)s(es)630 3487 y(not)k(arriv)m(e)g +(11\))f(terminates)g(if)g(input)e(do)s(es)630 1519 y(not)k(arriv)m(e)g (after)g Ft(TMOUT)e Fu(seconds)h(when)f(input)h(is)g(coming)h(from)f(a) -h(terminal.)630 3621 y(In)40 b(an)h(in)m(teractiv)m(e)i(shell,)h(the)d +h(terminal.)630 1654 y(In)40 b(an)h(in)m(teractiv)m(e)i(shell,)h(the)d (v)-5 b(alue)41 b(is)g(in)m(terpreted)g(as)f(the)h(n)m(um)m(b)s(er)f -(of)h(seconds)f(to)630 3731 y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input) +(of)h(seconds)f(to)630 1763 y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input) e(after)i(issuing)f(the)h(primary)e(prompt.)39 b(Bash)26 -b(terminates)h(after)630 3841 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m +b(terminates)h(after)630 1873 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m (b)s(er)e(of)h(seconds)h(if)f(a)h(complete)h(line)e(of)h(input)e(do)s -(es)h(not)h(arriv)m(e.)150 4000 y Ft(TMPDIR)192 b Fu(If)39 +(es)h(not)h(arriv)m(e.)150 2032 y Ft(TMPDIR)192 b Fu(If)39 b(set,)j(Bash)e(uses)f(its)h(v)-5 b(alue)40 b(as)f(the)h(name)f(of)h(a) -g(directory)g(in)f(whic)m(h)g(Bash)h(creates)630 4110 +g(directory)g(in)f(whic)m(h)g(Bash)h(creates)630 2142 y(temp)s(orary)30 b(\014les)g(for)g(the)h(shell's)g(use.)150 -4269 y Ft(UID)336 b Fu(The)30 b(n)m(umeric)g(real)h(user)f(id)g(of)g +2301 y Ft(UID)336 b Fu(The)30 b(n)m(umeric)g(real)h(user)f(id)g(of)g (the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)p eop end -%%Page: 82 88 -TeXDict begin 82 87 bop 3659 -116 a Fu(82)150 299 y Fp(6)80 +%%Page: 85 91 +TeXDict begin 85 90 bop 3659 -116 a Fu(85)150 299 y Fp(6)80 b(Bash)54 b(F)-13 b(eatures)150 502 y Fu(This)30 b(c)m(hapter)h (describ)s(es)e(features)i(unique)e(to)i(Bash.)150 731 y Fs(6.1)68 b(In)l(v)l(oking)46 b(Bash)390 890 y Ft(bash)h([long-opt])e ([-ir])h([-abefhkmnptuvxdBCDHP])c([-o)47 b Fj(option)p -Ft(])e([-O)i Fj(shopt_option)p Ft(])e([)p Fj(ar-)390 -1000 y(gument)h Ft(...)o(])390 1110 y(bash)h([long-opt])e -([-abefhkmnptuvxdBCDHP])c([-o)47 b Fj(option)p Ft(])f([-O)h -Fj(shopt_option)p Ft(])d(-c)j Fj(string)f Ft([)p Fj(ar-)390 -1219 y(gument)g Ft(...)o(])390 1329 y(bash)h([long-opt])e(-s)i -([-abefhkmnptuvxdBCDHP])42 b([-o)k Fj(option)p Ft(])g([-O)h -Fj(shopt_option)p Ft(])d([)p Fj(ar-)390 1438 y(gument)i -Ft(...)o(])275 1567 y Fu(All)31 b(of)g(the)f(single-c)m(haracter)k -(options)d(used)f(with)g(the)h Ft(set)f Fu(builtin)g(\(see)h(Section)h -(4.3.1)g([The)f(Set)150 1676 y(Builtin],)45 b(page)c(60\))i(can)e(b)s -(e)f(used)h(as)g(options)g(when)f(the)i(shell)f(is)g(in)m(v)m(ok)m(ed.) -74 b(In)41 b(addition,)j(there)150 1786 y(are)38 b(sev)m(eral)h(m)m -(ulti-c)m(haracter)h(options)d(that)h(y)m(ou)g(can)g(use.)61 -b(These)38 b(options)f(m)m(ust)h(app)s(ear)e(on)i(the)150 -1896 y(command)30 b(line)h(b)s(efore)f(the)g(single-c)m(haracter)j -(options)e(to)g(b)s(e)f(recognized.)150 2043 y Ft(--debugger)630 -2152 y Fu(Arrange)j(for)g(the)g(debugger)g(pro\014le)g(to)h(b)s(e)e -(executed)i(b)s(efore)f(the)g(shell)g(starts.)49 b(T)-8 -b(urns)630 2262 y(on)35 b(extended)g(debugging)f(mo)s(de)h(\(see)g -(Section)h(4.3.2)h([The)d(Shopt)g(Builtin],)j(page)f(64,)630 -2371 y(for)30 b(a)h(description)f(of)h(the)f Ft(extdebug)f -Fu(option)h(to)h(the)g Ft(shopt)e Fu(builtin\).)150 2519 -y Ft(--dump-po-strings)630 2628 y Fu(A)37 b(list)g(of)f(all)i +Ft(])581 1000 y([-O)g Fj(shopt_option)p Ft(])d([)p Fj(argument)h +Ft(...)o(])390 1110 y(bash)i([long-opt])e([-abefhkmnptuvxdBCDHP])c([-o) +47 b Fj(option)p Ft(])581 1219 y([-O)g Fj(shopt_option)p +Ft(])d(-c)j Fj(string)f Ft([)p Fj(argument)g Ft(...)o(])390 +1329 y(bash)h([long-opt])e(-s)i([-abefhkmnptuvxdBCDHP])42 +b([-o)k Fj(option)p Ft(])581 1438 y([-O)h Fj(shopt_option)p +Ft(])d([)p Fj(argument)h Ft(...)o(])275 1567 y Fu(All)31 +b(of)g(the)f(single-c)m(haracter)k(options)d(used)f(with)g(the)h +Ft(set)f Fu(builtin)g(\(see)h(Section)h(4.3.1)g([The)f(Set)150 +1676 y(Builtin],)45 b(page)c(61\))i(can)e(b)s(e)f(used)h(as)g(options)g +(when)f(the)i(shell)f(is)g(in)m(v)m(ok)m(ed.)74 b(In)41 +b(addition,)j(there)150 1786 y(are)38 b(sev)m(eral)h(m)m(ulti-c)m +(haracter)h(options)d(that)h(y)m(ou)g(can)g(use.)61 b(These)38 +b(options)f(m)m(ust)h(app)s(ear)e(on)i(the)150 1896 y(command)30 +b(line)h(b)s(efore)f(the)g(single-c)m(haracter)j(options)e(to)g(b)s(e)f +(recognized.)150 2043 y Ft(--debugger)630 2152 y Fu(Arrange)j(for)g +(the)g(debugger)g(pro\014le)g(to)h(b)s(e)e(executed)i(b)s(efore)f(the)g +(shell)g(starts.)49 b(T)-8 b(urns)630 2262 y(on)35 b(extended)g +(debugging)f(mo)s(de)h(\(see)g(Section)h(4.3.2)h([The)d(Shopt)g +(Builtin],)j(page)f(65,)630 2371 y(for)30 b(a)h(description)f(of)h(the) +f Ft(extdebug)f Fu(option)h(to)h(the)g Ft(shopt)e Fu(builtin\).)150 +2519 y Ft(--dump-po-strings)630 2628 y Fu(A)37 b(list)g(of)f(all)i (double-quoted)e(strings)g(preceded)g(b)m(y)h(`)p Ft($)p Fu(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 2738 y(output)29 b(in)g(the)g Fm(gnu)g Ft(gettext)f Fu(PO)g(\(p)s(ortable)i @@ -13993,7 +14265,7 @@ b(of)g Ft(~/.bashrc)p Fu(\))e(in)h(an)h(in)m(teractiv)m(e)i(shell.)150 3765 y Ft(--login)144 b Fu(Equiv)-5 b(alen)m(t)31 b(to)g Ft(-l)p Fu(.)150 3912 y Ft(--noediting)630 4022 y Fu(Do)h(not)e(use)h (the)g Fm(gnu)f Fu(Readline)i(library)e(\(see)h(Chapter)g(8)g([Command) -f(Line)g(Editing],)630 4131 y(page)h(104\))h(to)f(read)g(command)f +f(Line)g(Editing],)630 4131 y(page)h(107\))h(to)f(read)g(command)f (lines)g(when)g(the)g(shell)h(is)f(in)m(teractiv)m(e.)150 4278 y Ft(--noprofile)630 4388 y Fu(Don't)22 b(load)g(the)g (system-wide)f(startup)g(\014le)h Ft(/etc/profile)c Fu(or)j(an)m(y)h @@ -14010,88 +14282,89 @@ b(the)h(b)s(eha)m(vior)f(of)g(Bash)h(where)e(the)i(default)f(op)s y Fu(standard)35 b(to)h(matc)m(h)g(the)g(standard.)55 b(This)35 b(is)h(in)m(tended)f(to)h(mak)m(e)h(Bash)f(b)s(eha)m(v)m(e)g (as)g(a)630 5230 y(strict)26 b(sup)s(erset)e(of)h(that)g(standard.)38 -b(See)26 b(Section)f(6.11)i([Bash)e(POSIX)f(Mo)s(de],)j(page)f(96,)630 +b(See)26 b(Section)f(6.11)i([Bash)e(POSIX)f(Mo)s(de],)j(page)f(99,)630 5340 y(for)k(a)h(description)f(of)h(the)f(Bash)h Fm(posix)f Fu(mo)s(de.)p eop end -%%Page: 83 89 -TeXDict begin 83 88 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(83)150 299 y Ft(--restricted)630 +%%Page: 86 92 +TeXDict begin 86 91 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(86)150 299 y Ft(--restricted)630 408 y Fu(Mak)m(e)54 b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h (Section)g(6.10)h([The)d(Restricted)j(Shell],)630 518 -y(page)31 b(95\).)150 687 y Ft(--verbose)630 796 y Fu(Equiv)-5 +y(page)31 b(99\).)150 677 y Ft(--verbose)630 787 y Fu(Equiv)-5 b(alen)m(t)31 b(to)g Ft(-v)p Fu(.)41 b(Prin)m(t)30 b(shell)g(input)g -(lines)g(as)h(they're)g(read.)150 965 y Ft(--version)630 -1074 y Fu(Sho)m(w)d(v)m(ersion)g(information)g(for)g(this)g(instance)h -(of)f(Bash)g(on)g(the)g(standard)f(output)h(and)630 1184 -y(exit)j(successfully)-8 b(.)275 1357 y(There)28 b(are)i(sev)m(eral)g +(lines)g(as)h(they're)g(read.)150 946 y Ft(--version)630 +1056 y Fu(Sho)m(w)d(v)m(ersion)g(information)g(for)g(this)g(instance)h +(of)f(Bash)g(on)g(the)g(standard)f(output)h(and)630 1166 +y(exit)j(successfully)-8 b(.)275 1325 y(There)28 b(are)i(sev)m(eral)g (single-c)m(haracter)i(options)d(that)h(ma)m(y)g(b)s(e)e(supplied)g(at) -i(in)m(v)m(o)s(cation)h(whic)m(h)e(are)150 1467 y(not)i(a)m(v)-5 +i(in)m(v)m(o)s(cation)h(whic)m(h)e(are)150 1435 y(not)i(a)m(v)-5 b(ailable)32 b(with)e(the)h Ft(set)e Fu(builtin.)150 -1640 y Ft(-c)384 b Fu(Read)66 b(and)f(execute)i(commands)e(from)g(the)h -(\014rst)e(non-option)i(argumen)m(t)g Fr(com-)630 1749 -y(mand)p 859 1749 28 4 v 39 w(string)p Fu(,)34 b(then)e(exit.)49 +1594 y Ft(-c)384 b Fu(Read)66 b(and)f(execute)i(commands)e(from)g(the)h +(\014rst)e(non-option)i(argumen)m(t)g Fr(com-)630 1704 +y(mand)p 859 1704 28 4 v 39 w(string)p Fu(,)34 b(then)e(exit.)49 b(If)32 b(there)h(are)g(argumen)m(ts)g(after)g(the)g -Fr(command)p 3303 1749 V 40 w(string)p Fu(,)h(the)630 -1859 y(\014rst)e(argumen)m(t)h(is)g(assigned)g(to)h Ft($0)e +Fr(command)p 3303 1704 V 40 w(string)p Fu(,)h(the)630 +1813 y(\014rst)e(argumen)m(t)h(is)g(assigned)g(to)h Ft($0)e Fu(and)h(an)m(y)g(remaining)g(argumen)m(ts)g(are)g(assigned)g(to)630 -1968 y(the)38 b(p)s(ositional)h(parameters.)65 b(The)37 +1923 y(the)38 b(p)s(ositional)h(parameters.)65 b(The)37 b(assignmen)m(t)i(to)g Ft($0)f Fu(sets)g(the)h(name)f(of)g(the)g -(shell,)630 2078 y(whic)m(h)30 b(is)h(used)e(in)h(w)m(arning)g(and)g -(error)g(messages.)150 2247 y Ft(-i)384 b Fu(F)-8 b(orce)22 +(shell,)630 2032 y(whic)m(h)30 b(is)h(used)e(in)h(w)m(arning)g(and)g +(error)g(messages.)150 2192 y Ft(-i)384 b Fu(F)-8 b(orce)22 b(the)g(shell)f(to)g(run)f(in)m(teractiv)m(ely)-8 b(.)41 b(In)m(teractiv)m(e)23 b(shells)e(are)h(describ)s(ed)d(in)i(Section)h -(6.3)630 2356 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(85.)150 -2525 y Ft(-l)384 b Fu(Mak)m(e)33 b(this)e(shell)h(act)g(as)g(if)f(it)h +(6.3)630 2301 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(88.)150 +2461 y Ft(-l)384 b Fu(Mak)m(e)33 b(this)e(shell)h(act)g(as)g(if)f(it)h (had)f(b)s(een)f(directly)i(in)m(v)m(ok)m(ed)h(b)m(y)f(login.)44 -b(When)31 b(the)h(shell)630 2634 y(is)37 b(in)m(teractiv)m(e,)43 +b(When)31 b(the)h(shell)630 2570 y(is)37 b(in)m(teractiv)m(e,)43 b(this)37 b(is)g(equiv)-5 b(alen)m(t)39 b(to)f(starting)h(a)e(login)i (shell)e(with)g(`)p Ft(exec)30 b(-l)g(bash)p Fu('.)630 -2744 y(When)h(the)g(shell)h(is)f(not)g(in)m(teractiv)m(e,)k(the)c +2680 y(When)h(the)g(shell)h(is)f(not)g(in)m(teractiv)m(e,)k(the)c (login)h(shell)g(startup)f(\014les)g(will)g(b)s(e)g(executed.)630 -2853 y(`)p Ft(exec)e(bash)h(-l)p Fu(')43 b(or)h(`)p Ft(exec)29 +2790 y(`)p Ft(exec)e(bash)h(-l)p Fu(')43 b(or)h(`)p Ft(exec)29 b(bash)g(--login)p Fu(')42 b(will)i(replace)h(the)f(curren)m(t)f(shell) -h(with)g(a)630 2963 y(Bash)26 b(login)g(shell.)39 b(See)26 -b(Section)g(6.2)h([Bash)e(Startup)g(Files],)j(page)e(84,)i(for)d(a)h -(description)630 3073 y(of)31 b(the)f(sp)s(ecial)h(b)s(eha)m(vior)g(of) -f(a)h(login)g(shell.)150 3241 y Ft(-r)384 b Fu(Mak)m(e)54 +h(with)g(a)630 2899 y(Bash)26 b(login)g(shell.)39 b(See)26 +b(Section)g(6.2)h([Bash)e(Startup)g(Files],)j(page)e(87,)i(for)d(a)h +(description)630 3009 y(of)31 b(the)f(sp)s(ecial)h(b)s(eha)m(vior)g(of) +f(a)h(login)g(shell.)150 3168 y Ft(-r)384 b Fu(Mak)m(e)54 b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h(Section)g(6.10)h([The) -d(Restricted)j(Shell],)630 3351 y(page)31 b(95\).)150 -3519 y Ft(-s)384 b Fu(If)24 b(this)h(option)h(is)f(presen)m(t,)h(or)f +d(Restricted)j(Shell],)630 3278 y(page)31 b(99\).)150 +3437 y Ft(-s)384 b Fu(If)24 b(this)h(option)h(is)f(presen)m(t,)h(or)f (if)g(no)f(argumen)m(ts)i(remain)e(after)i(option)f(pro)s(cessing,)h -(then)630 3629 y(commands)i(are)h(read)g(from)f(the)h(standard)f +(then)630 3547 y(commands)i(are)h(read)g(from)f(the)h(standard)f (input.)39 b(This)28 b(option)h(allo)m(ws)h(the)f(p)s(ositional)630 -3738 y(parameters)i(to)g(b)s(e)f(set)g(when)g(in)m(v)m(oking)h(an)g(in) -m(teractiv)m(e)i(shell.)150 3907 y Ft(-D)384 b Fu(A)37 -b(list)g(of)f(all)i(double-quoted)e(strings)g(preceded)g(b)m(y)h(`)p -Ft($)p Fu(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 -4017 y(output.)63 b(These)38 b(are)g(the)g(strings)g(that)h(are)f(sub)5 -b(ject)38 b(to)h(language)g(translation)g(when)630 4126 +3656 y(parameters)i(to)h(b)s(e)e(set)i(when)d(in)m(v)m(oking)k(an)d(in) +m(teractiv)m(e)k(shell)d(or)g(when)f(reading)h(input)630 +3766 y(through)f(a)g(pip)s(e.)150 3925 y Ft(-D)384 b +Fu(A)37 b(list)g(of)f(all)i(double-quoted)e(strings)g(preceded)g(b)m(y) +h(`)p Ft($)p Fu(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 +4035 y(output.)63 b(These)38 b(are)g(the)g(strings)g(that)h(are)f(sub)5 +b(ject)38 b(to)h(language)g(translation)g(when)630 4144 y(the)e(curren)m(t)g(lo)s(cale)h(is)f(not)g Ft(C)g Fu(or)f Ft(POSIX)g Fu(\(see)h(Section)h(3.1.2.5)h([Lo)s(cale)g(T)-8 -b(ranslation],)630 4236 y(page)31 b(7\).)42 b(This)29 +b(ranslation],)630 4254 y(page)31 b(7\).)42 b(This)29 b(implies)i(the)f Ft(-n)g Fu(option;)h(no)f(commands)g(will)h(b)s(e)f -(executed.)150 4404 y Ft([-+]O)f([)p Fj(shopt_option)p -Ft(])630 4514 y Fr(shopt)p 854 4514 V 40 w(option)44 +(executed.)150 4413 y Ft([-+]O)f([)p Fj(shopt_option)p +Ft(])630 4523 y Fr(shopt)p 854 4523 V 40 w(option)44 b Fu(is)g(one)h(of)f(the)g(shell)h(options)f(accepted)h(b)m(y)f(the)h -Ft(shopt)d Fu(builtin)i(\(see)630 4623 y(Section)32 b(4.3.2)h([The)e -(Shopt)f(Builtin],)i(page)g(64\).)44 b(If)31 b Fr(shopt)p -2724 4623 V 40 w(option)g Fu(is)g(presen)m(t,)h Ft(-O)f -Fu(sets)630 4733 y(the)24 b(v)-5 b(alue)24 b(of)g(that)h(option;)h +Ft(shopt)d Fu(builtin)i(\(see)630 4633 y(Section)32 b(4.3.2)h([The)e +(Shopt)f(Builtin],)i(page)g(65\).)44 b(If)31 b Fr(shopt)p +2724 4633 V 40 w(option)g Fu(is)g(presen)m(t,)h Ft(-O)f +Fu(sets)630 4742 y(the)24 b(v)-5 b(alue)24 b(of)g(that)h(option;)h Ft(+O)e Fu(unsets)f(it.)39 b(If)23 b Fr(shopt)p 2423 -4733 V 40 w(option)h Fu(is)g(not)g(supplied,)g(the)g(names)630 -4843 y(and)31 b(v)-5 b(alues)32 b(of)g(the)g(shell)g(options)g +4742 V 40 w(option)h Fu(is)g(not)g(supplied,)g(the)g(names)630 +4852 y(and)31 b(v)-5 b(alues)32 b(of)g(the)g(shell)g(options)g (accepted)h(b)m(y)f Ft(shopt)e Fu(are)i(prin)m(ted)f(on)h(the)g -(standard)630 4952 y(output.)40 b(If)29 b(the)h(in)m(v)m(o)s(cation)h +(standard)630 4961 y(output.)40 b(If)29 b(the)h(in)m(v)m(o)s(cation)h (option)f(is)f Ft(+O)p Fu(,)h(the)f(output)g(is)h(displa)m(y)m(ed)g(in) -f(a)h(format)f(that)630 5062 y(ma)m(y)i(b)s(e)f(reused)f(as)i(input.) +f(a)h(format)f(that)630 5071 y(ma)m(y)i(b)s(e)f(reused)f(as)i(input.) 150 5230 y Ft(--)384 b Fu(A)38 b Ft(--)g Fu(signals)g(the)h(end)e(of)i (options)f(and)g(disables)g(further)f(option)h(pro)s(cessing.)64 b(An)m(y)630 5340 y(argumen)m(ts)31 b(after)g(the)f Ft(--)g Fu(are)h(treated)g(as)g(\014lenames)f(and)g(argumen)m(ts.)p eop end -%%Page: 84 90 -TeXDict begin 84 89 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(84)275 299 y(A)27 b +%%Page: 87 93 +TeXDict begin 87 92 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(87)275 299 y(A)27 b Fl(lo)-5 b(gin)35 b Fu(shell)27 b(is)g(one)h(whose)f(\014rst)f(c)m (haracter)j(of)e(argumen)m(t)h(zero)f(is)h(`)p Ft(-)p Fu(',)g(or)f(one)g(in)m(v)m(ok)m(ed)i(with)e(the)150 @@ -14103,13 +14376,13 @@ g(input)g(and)f(output)h(are)h(b)s(oth)f(connected)h(to)g(ter-)150 774 y(minals)g(\(as)g(determined)f(b)m(y)h Ft(isatty\(3\))p Fu(\),)e(or)i(one)g(started)g(with)f(the)h Ft(-i)f Fu(option.)51 b(See)33 b(Section)i(6.3)150 884 y([In)m(teractiv)m(e)e(Shells],)e -(page)g(85,)g(for)f(more)h(information.)275 1031 y(If)i(argumen)m(ts)h +(page)g(88,)g(for)f(more)h(information.)275 1031 y(If)i(argumen)m(ts)h (remain)g(after)h(option)f(pro)s(cessing,)h(and)e(neither)h(the)g Ft(-c)g Fu(nor)f(the)h Ft(-s)g Fu(option)g(has)150 1140 y(b)s(een)44 b(supplied,)j(the)d(\014rst)g(argumen)m(t)h(is)g(assumed)e (to)j(b)s(e)d(the)i(name)g(of)f(a)h(\014le)g(con)m(taining)h(shell)150 1250 y(commands)30 b(\(see)g(Section)h(3.8)g([Shell)f(Scripts],)g(page) -h(40\).)41 b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i(in)d(this)h +h(41\).)41 b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i(in)d(this)h (fashion,)150 1359 y Ft($0)37 b Fu(is)g(set)h(to)h(the)e(name)h(of)f (the)h(\014le,)i(and)c(the)i(p)s(ositional)g(parameters)g(are)g(set)g (to)g(the)g(remaining)150 1469 y(argumen)m(ts.)h(Bash)26 @@ -14123,9 +14396,9 @@ b(If)26 b(no)g(commands)g(are)h(executed,)150 1688 y(the)k(exit)g (exist)h(but)e(cannot)150 2216 y(b)s(e)29 b(read,)i(Bash)f(rep)s(orts)f (an)h(error.)40 b(Tildes)30 b(are)g(expanded)f(in)h(\014lenames)g(as)g (describ)s(ed)f(ab)s(o)m(v)m(e)i(under)150 2326 y(Tilde)f(Expansion)g -(\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(22\).)275 +(\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(23\).)275 2473 y(In)m(teractiv)m(e)h(shells)f(are)g(describ)s(ed)e(in)h(Section)h -(6.3)h([In)m(teractiv)m(e)h(Shells],)d(page)h(85.)150 +(6.3)h([In)m(teractiv)m(e)h(Shells],)d(page)h(88.)150 2684 y Fk(In)m(v)m(ok)m(ed)40 b(as)h(an)f(in)m(teractiv)m(e)f(login)j (shell,)g(or)g(with)e Fh(--login)150 2831 y Fu(When)c(Bash)f(is)h(in)m (v)m(ok)m(ed)h(as)f(an)g(in)m(teractiv)m(e)j(login)d(shell,)i(or)e(as)g @@ -14164,9 +14437,9 @@ b(the)f(line)390 4725 y Ft(if)47 b([)h(-f)f(~/.bashrc)e(];)i(then)g(.)g 5340 y(v)-5 b(ariable)35 b Ft(BASH_ENV)d Fu(in)i(the)h(en)m(vironmen)m (t,)h(expands)e(its)g(v)-5 b(alue)35 b(if)g(it)g(app)s(ears)e(there,)j (and)e(uses)g(the)p eop end -%%Page: 85 91 -TeXDict begin 85 90 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(85)150 299 y(expanded)30 +%%Page: 88 94 +TeXDict begin 88 93 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(88)150 299 y(expanded)30 b(v)-5 b(alue)30 b(as)h(the)g(name)f(of)h(a)f(\014le)h(to)g(read)f(and) g(execute.)42 b(Bash)31 b(b)s(eha)m(v)m(es)g(as)g(if)f(the)g(follo)m (wing)150 408 y(command)g(w)m(ere)h(executed:)390 552 @@ -14247,9 +14520,9 @@ y(id.)62 b(If)38 b(the)f Ft(-p)h Fu(option)g(is)f(supplied)g(at)h(in)m (but)d(the)150 5070 y(e\013ectiv)m(e)c(user)d(id)g(is)g(not)h(reset.) 150 5324 y Fs(6.3)68 b(In)l(teractiv)l(e)47 b(Shells)p eop end -%%Page: 86 92 -TeXDict begin 86 91 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(86)150 299 y Fk(6.3.1)63 +%%Page: 89 95 +TeXDict begin 89 94 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(89)150 299 y Fk(6.3.1)63 b(What)40 b(is)h(an)g(In)m(teractiv)m(e)e(Shell?)150 446 y Fu(An)g(in)m(teractiv)m(e)k(shell)d(is)g(one)g(started)g(without) g(non-option)g(argumen)m(ts,)j(unless)c Ft(-s)h Fu(is)f(sp)s @@ -14284,1016 +14557,1048 @@ b(Shell)k(Beha)m(vior)150 3102 y Fu(When)30 b(the)h(shell)f(is)h (eha)m(vior)f(in)g(sev)m(eral)i(w)m(a)m(ys.)199 3234 y(1.)61 b(Startup)37 b(\014les)g(are)h(read)f(and)g(executed)h(as)f (describ)s(ed)g(in)g(Section)h(6.2)g([Bash)g(Startup)e(Files],)330 -3343 y(page)31 b(84.)199 3475 y(2.)61 b(Job)32 b(Con)m(trol)h(\(see)g -(Chapter)e(7)i([Job)f(Con)m(trol],)i(page)f(100\))h(is)e(enabled)g(b)m +3343 y(page)31 b(87.)199 3475 y(2.)61 b(Job)32 b(Con)m(trol)h(\(see)g +(Chapter)e(7)i([Job)f(Con)m(trol],)i(page)f(103\))h(is)e(enabled)g(b)m (y)g(default.)46 b(When)32 b(job)330 3585 y(con)m(trol)j(is)f(in)f (e\013ect,)k(Bash)d(ignores)g(the)g(k)m(eyb)s(oard-generated)h(job)e (con)m(trol)i(signals)g Ft(SIGTTIN)p Fu(,)330 3694 y Ft(SIGTTOU)p Fu(,)29 b(and)g Ft(SIGTSTP)p Fu(.)199 3826 -y(3.)61 b(Bash)39 b(expands)f(and)g(displa)m(ys)h Ft(PS1)f -Fu(b)s(efore)h(reading)g(the)g(\014rst)f(line)h(of)g(a)g(command,)i -(and)d(ex-)330 3936 y(pands)30 b(and)g(displa)m(ys)h -Ft(PS2)e Fu(b)s(efore)i(reading)g(the)g(second)f(and)h(subsequen)m(t)f -(lines)h(of)g(a)g(m)m(ulti-line)330 4045 y(command.)40 -b(Bash)31 b(displa)m(ys)f Ft(PS0)g Fu(after)h(it)g(reads)f(a)h(command) -f(but)f(b)s(efore)h(executing)i(it.)199 4177 y(4.)61 +y(3.)61 b(Bash)25 b(expands)e(and)h(displa)m(ys)h Ft(PS1)e +Fu(b)s(efore)h(reading)h(the)f(\014rst)g(line)h(of)f(a)h(command,)h +(and)e(expands)330 3936 y(and)33 b(displa)m(ys)h Ft(PS2)f +Fu(b)s(efore)h(reading)g(the)g(second)g(and)f(subsequen)m(t)g(lines)i +(of)f(a)g(m)m(ulti-line)h(com-)330 4045 y(mand.)42 b(Bash)31 +b(expands)f(and)h(displa)m(ys)g Ft(PS0)f Fu(after)h(it)h(reads)f(a)g +(command)g(but)f(b)s(efore)h(executing)330 4155 y(it.)62 +b(See)38 b(Section)g(6.9)h([Con)m(trolling)g(the)e(Prompt],)j(page)e +(97,)i(for)d(a)h(complete)h(list)f(of)g(prompt)330 4265 +y(string)30 b(escap)s(e)h(sequences.)199 4396 y(4.)61 b(Bash)26 b(executes)i(the)e(v)-5 b(alue)27 b(of)f(the)h Ft(PROMPT_COMMAND)22 b Fu(v)-5 b(ariable)27 b(as)g(a)f(command)g(b)s -(efore)g(prin)m(ting)330 4287 y(the)31 b(primary)e(prompt,)h +(efore)g(prin)m(ting)330 4506 y(the)31 b(primary)e(prompt,)h Ft($PS1)f Fu(\(see)i(Section)g(5.2)h([Bash)f(V)-8 b(ariables],)32 -b(page)f(71\).)199 4419 y(5.)61 b(Readline)27 b(\(see)g(Chapter)e(8)h -([Command)g(Line)g(Editing],)h(page)g(104\))g(is)f(used)g(to)g(read)g -(commands)330 4528 y(from)k(the)g(user's)g(terminal.)199 -4660 y(6.)61 b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37 +b(page)f(73\).)199 4638 y(5.)61 b(Readline)27 b(\(see)g(Chapter)e(8)h +([Command)g(Line)g(Editing],)h(page)g(107\))g(is)f(used)g(to)g(read)g +(commands)330 4748 y(from)k(the)g(user's)g(terminal.)199 +4879 y(6.)61 b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37 b(of)f(the)g Ft(ignoreeof)e Fu(option)j(to)g Ft(set)29 -b(-o)36 b Fu(instead)h(of)f(exiting)i(imme-)330 4770 +b(-o)36 b Fu(instead)h(of)f(exiting)i(imme-)330 4989 y(diately)f(when)e(it)i(receiv)m(es)h(an)e Ft(EOF)f Fu(on)h(its)g (standard)f(input)g(when)h(reading)g(a)g(command)g(\(see)330 -4879 y(Section)31 b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(60\).)199 -5011 y(7.)61 b(Command)43 b(history)h(\(see)h(Section)g(9.1)g([Bash)f -(History)h(F)-8 b(acilities],)51 b(page)45 b(137\))h(and)d(history)330 -5121 y(expansion)h(\(see)i(Section)f(9.3)h([History)g(In)m(teraction],) -k(page)45 b(139\))h(are)f(enabled)g(b)m(y)f(default.)330 -5230 y(Bash)28 b(will)g(sa)m(v)m(e)h(the)f(command)f(history)h(to)g -(the)g(\014le)g(named)f(b)m(y)h Ft($HISTFILE)d Fu(when)h(a)i(shell)g -(with)330 5340 y(history)i(enabled)h(exits.)p eop end -%%Page: 87 93 -TeXDict begin 87 92 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(87)199 299 y(8.)61 -b(Alias)31 b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e -(90\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 429 -y(9.)61 b(In)24 b(the)g(absence)h(of)f(an)m(y)h(traps,)g(Bash)g -(ignores)f Ft(SIGTERM)f Fu(\(see)i(Section)g(3.7.6)h([Signals],)g(page) -f(39\).)154 560 y(10.)61 b(In)26 b(the)h(absence)h(of)f(an)m(y)g -(traps,)g Ft(SIGINT)e Fu(is)i(caugh)m(t)h(and)f(handled)e(\(\(see)k -(Section)e(3.7.6)i([Signals],)330 669 y(page)i(39\).)42 -b Ft(SIGINT)29 b Fu(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154 -800 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i +5099 y(Section)31 b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(61\).)199 +5230 y(7.)61 b(Command)43 b(history)h(\(see)h(Section)g(9.1)g([Bash)f +(History)h(F)-8 b(acilities],)51 b(page)45 b(141\))h(and)d(history)330 +5340 y(expansion)h(\(see)i(Section)f(9.3)h([History)g(In)m(teraction],) +k(page)45 b(143\))h(are)f(enabled)g(b)m(y)f(default.)p +eop end +%%Page: 90 96 +TeXDict begin 90 95 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(90)330 299 y(Bash)28 +b(will)g(sa)m(v)m(e)h(the)f(command)f(history)h(to)g(the)g(\014le)g +(named)f(b)m(y)h Ft($HISTFILE)d Fu(when)h(a)i(shell)g(with)330 +408 y(history)i(enabled)h(exits.)199 541 y(8.)61 b(Alias)31 +b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e(93\))h(is)e +(p)s(erformed)f(b)m(y)h(default.)199 674 y(9.)61 b(In)24 +b(the)g(absence)h(of)f(an)m(y)h(traps,)g(Bash)g(ignores)f +Ft(SIGTERM)f Fu(\(see)i(Section)g(3.7.6)h([Signals],)g(page)f(41\).)154 +807 y(10.)61 b(In)29 b(the)g(absence)h(of)g(an)m(y)g(traps,)f +Ft(SIGINT)f Fu(is)h(caugh)m(t)i(and)e(handled)f(\(see)j(Section)f +(3.7.6)h([Signals],)330 916 y(page)g(41\).)42 b Ft(SIGINT)29 +b Fu(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154 +1049 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i Ft(SIGHUP)d Fu(to)j(all)g(jobs)f(on)g(exit)h(if)g(the)f -Ft(huponexit)e Fu(shell)330 909 y(option)31 b(has)f(b)s(een)g(enabled)g -(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(39\).)154 -1040 y(12.)61 b(The)29 b Ft(-n)g Fu(in)m(v)m(o)s(cation)j(option)e(is)g +Ft(huponexit)e Fu(shell)330 1159 y(option)31 b(has)f(b)s(een)g(enabled) +g(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(41\).)154 +1291 y(12.)61 b(The)29 b Ft(-n)g Fu(in)m(v)m(o)s(cation)j(option)e(is)g (ignored,)g(and)f(`)p Ft(set)h(-n)p Fu(')f(has)h(no)f(e\013ect)j(\(see) -e(Section)h(4.3.1)g([The)330 1149 y(Set)g(Builtin],)g(page)g(60\).)154 -1280 y(13.)61 b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e(mail)g(p)s(erio)s +e(Section)h(4.3.1)g([The)330 1401 y(Set)g(Builtin],)g(page)g(61\).)154 +1534 y(13.)61 b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e(mail)g(p)s(erio)s (dically)-8 b(,)34 b(dep)s(ending)c(on)i(the)g(v)-5 b(alues)32 b(of)g(the)h Ft(MAIL)p Fu(,)e Ft(MAILPATH)p Fu(,)330 -1389 y(and)f Ft(MAILCHECK)e Fu(shell)i(v)-5 b(ariables)31 +1643 y(and)f Ft(MAILCHECK)e Fu(shell)i(v)-5 b(ariables)31 b(\(see)h(Section)f(5.2)g([Bash)g(V)-8 b(ariables],)32 -b(page)f(71\).)154 1520 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i +b(page)f(73\).)154 1776 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i (references)f(to)h(un)m(b)s(ound)c(shell)j(v)-5 b(ariables)34 b(after)g(`)p Ft(set)29 b(-u)p Fu(')k(has)g(b)s(een)330 -1629 y(enabled)d(will)h(not)g(cause)g(the)f(shell)h(to)g(exit)g(\(see)g -(Section)h(4.3.1)g([The)e(Set)h(Builtin],)g(page)g(60\).)154 -1760 y(15.)61 b(The)48 b(shell)h(will)f(not)h(exit)g(on)g(expansion)f +1886 y(enabled)d(will)h(not)g(cause)g(the)f(shell)h(to)g(exit)g(\(see)g +(Section)h(4.3.1)g([The)e(Set)h(Builtin],)g(page)g(61\).)154 +2018 y(15.)61 b(The)48 b(shell)h(will)f(not)h(exit)g(on)g(expansion)f (errors)g(caused)g(b)m(y)h Fr(v)-5 b(ar)54 b Fu(b)s(eing)48 -b(unset)g(or)h(n)m(ull)f(in)330 1869 y Ft(${)p Fj(var)p +b(unset)g(or)h(n)m(ull)f(in)330 2128 y Ft(${)p Fj(var)p Ft(:?)p Fj(word)p Ft(})27 b Fu(expansions)j(\(see)h(Section)h(3.5.3)g -([Shell)e(P)m(arameter)i(Expansion],)e(page)h(23\).)154 -2000 y(16.)61 b(Redirection)31 b(errors)f(encoun)m(tered)h(b)m(y)f +([Shell)e(P)m(arameter)i(Expansion],)e(page)h(24\).)154 +2261 y(16.)61 b(Redirection)31 b(errors)f(encoun)m(tered)h(b)m(y)f (shell)h(builtins)f(will)g(not)h(cause)g(the)f(shell)h(to)g(exit.)154 -2130 y(17.)61 b(When)26 b(running)f(in)i Fm(posix)e Fu(mo)s(de,)j(a)f +2393 y(17.)61 b(When)26 b(running)f(in)i Fm(posix)e Fu(mo)s(de,)j(a)f (sp)s(ecial)g(builtin)f(returning)g(an)g(error)h(status)g(will)g(not)f -(cause)330 2240 y(the)31 b(shell)f(to)h(exit)h(\(see)f(Section)g(6.11)h -([Bash)f(POSIX)e(Mo)s(de],)i(page)g(96\).)154 2370 y(18.)61 +(cause)330 2503 y(the)31 b(shell)f(to)h(exit)h(\(see)f(Section)g(6.11)h +([Bash)f(POSIX)e(Mo)s(de],)i(page)g(99\).)154 2636 y(18.)61 b(A)34 b(failed)g Ft(exec)f Fu(will)h(not)g(cause)g(the)g(shell)g(to)g (exit)h(\(see)f(Section)h(4.1)g([Bourne)f(Shell)f(Builtins],)330 -2480 y(page)e(42\).)154 2610 y(19.)61 b(P)m(arser)31 +2745 y(page)e(43\).)154 2878 y(19.)61 b(P)m(arser)31 b(syn)m(tax)f(errors)g(will)h(not)g(cause)g(the)f(shell)h(to)g(exit.) -154 2741 y(20.)61 b(Simple)21 b(sp)s(elling)h(correction)g(for)g +154 3011 y(20.)61 b(Simple)21 b(sp)s(elling)h(correction)g(for)g (directory)g(argumen)m(ts)f(to)i(the)e Ft(cd)g Fu(builtin)g(is)h -(enabled)f(b)m(y)h(default)330 2850 y(\(see)35 b(the)g(description)f +(enabled)f(b)m(y)h(default)330 3120 y(\(see)35 b(the)g(description)f (of)h(the)f Ft(cdspell)f Fu(option)h(to)i(the)e Ft(shopt)f -Fu(builtin)h(in)g(Section)h(4.3.2)h([The)330 2960 y(Shopt)30 -b(Builtin],)h(page)g(64\).)154 3090 y(21.)61 b(The)42 +Fu(builtin)h(in)g(Section)h(4.3.2)h([The)330 3230 y(Shopt)30 +b(Builtin],)h(page)g(65\).)154 3363 y(21.)61 b(The)42 b(shell)h(will)g(c)m(hec)m(k)h(the)f(v)-5 b(alue)43 b(of)f(the)h Ft(TMOUT)e Fu(v)-5 b(ariable)44 b(and)e(exit)h(if)g(a)g(command)f(is)h -(not)330 3200 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s +(not)330 3472 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s (er)g(of)i(seconds)f(after)g(prin)m(ting)g Ft($PS1)f -Fu(\(see)i(Section)g(5.2)h([Bash)330 3310 y(V)-8 b(ariables],)32 -b(page)f(71\).)150 3542 y Fs(6.4)68 b(Bash)45 b(Conditional)h -(Expressions)150 3702 y Fu(Conditional)26 b(expressions)g(are)g(used)f +Fu(\(see)i(Section)g(5.2)h([Bash)330 3582 y(V)-8 b(ariables],)32 +b(page)f(73\).)150 3819 y Fs(6.4)68 b(Bash)45 b(Conditional)h +(Expressions)150 3979 y Fu(Conditional)26 b(expressions)g(are)g(used)f (b)m(y)g(the)h Ft([[)f Fu(comp)s(ound)g(command)g(and)g(the)h -Ft(test)f Fu(and)g Ft([)g Fu(builtin)150 3811 y(commands.)275 -3942 y(Expressions)32 b(ma)m(y)h(b)s(e)g(unary)f(or)h(binary)-8 -b(.)48 b(Unary)33 b(expressions)f(are)i(often)f(used)f(to)i(examine)g -(the)150 4051 y(status)44 b(of)g(a)g(\014le.)80 b(There)43 -b(are)h(string)f(op)s(erators)h(and)f(n)m(umeric)g(comparison)h(op)s -(erators)g(as)g(w)m(ell.)150 4161 y(Bash)26 b(handles)f(sev)m(eral)i -(\014lenames)f(sp)s(ecially)g(when)f(they)g(are)i(used)d(in)i -(expressions.)38 b(If)26 b(the)f(op)s(erating)150 4270 -y(system)d(on)g(whic)m(h)g(Bash)h(is)f(running)e(pro)m(vides)i(these)h -(sp)s(ecial)g(\014les,)h(Bash)e(will)h(use)f(them;)j(otherwise)d(it)150 -4380 y(will)27 b(em)m(ulate)h(them)e(in)m(ternally)h(with)f(this)g(b)s -(eha)m(vior:)39 b(If)26 b(the)g Fr(\014le)32 b Fu(argumen)m(t)27 -b(to)g(one)f(of)h(the)f(primaries)150 4489 y(is)33 b(of)g(the)f(form)h -Ft(/dev/fd/)p Fj(N)p Fu(,)e(then)h(\014le)h(descriptor)f -Fr(N)43 b Fu(is)33 b(c)m(hec)m(k)m(ed.)49 b(If)33 b(the)f -Fr(\014le)38 b Fu(argumen)m(t)33 b(to)h(one)f(of)150 -4599 y(the)f(primaries)g(is)g(one)g(of)g Ft(/dev/stdin)p -Fu(,)e Ft(/dev/stdout)p Fu(,)f(or)j Ft(/dev/stderr)p -Fu(,)d(\014le)j(descriptor)g(0,)h(1,)g(or)150 4709 y(2,)e(resp)s(ectiv) -m(ely)-8 b(,)32 b(is)f(c)m(hec)m(k)m(ed.)275 4839 y(When)37 -b(used)g(with)g Ft([[)p Fu(,)i(the)f(`)p Ft(<)p Fu(')g(and)f(`)p -Ft(>)p Fu(')h(op)s(erators)g(sort)g(lexicographically)i(using)d(the)h -(curren)m(t)150 4949 y(lo)s(cale.)k(The)30 b Ft(test)f -Fu(command)i(uses)f(ASCI)s(I)e(ordering.)275 5079 y(Unless)44 +Ft(test)f Fu(and)g Ft([)g Fu(builtin)150 4088 y(commands.)50 +b(The)33 b Ft(test)g Fu(and)f Ft([)i Fu(commands)f(determine)h(their)f +(b)s(eha)m(vior)h(based)f(on)h(the)f(n)m(um)m(b)s(er)g(of)150 +4198 y(argumen)m(ts;)28 b(see)f(the)f(descriptions)g(of)g(those)g +(commands)g(for)g(an)m(y)g(other)h(command-sp)s(eci\014c)e(actions.)275 +4331 y(Expressions)d(ma)m(y)h(b)s(e)g(unary)f(or)h(binary)-8 +b(,)24 b(and)f(are)g(formed)g(from)g(the)g(follo)m(wing)h(primaries.)38 +b(Unary)150 4440 y(expressions)c(are)g(often)g(used)g(to)g(examine)h +(the)f(status)g(of)h(a)f(\014le.)52 b(There)33 b(are)h(string)g(op)s +(erators)h(and)150 4550 y(n)m(umeric)c(comparison)g(op)s(erators)h(as)f +(w)m(ell.)44 b(Bash)31 b(handles)g(sev)m(eral)h(\014lenames)g(sp)s +(ecially)g(when)e(they)150 4659 y(are)35 b(used)e(in)i(expressions.)52 +b(If)34 b(the)h(op)s(erating)f(system)h(on)f(whic)m(h)g(Bash)h(is)f +(running)f(pro)m(vides)h(these)150 4769 y(sp)s(ecial)22 +b(\014les,)i(Bash)e(will)g(use)f(them;)k(otherwise)d(it)g(will)g(em)m +(ulate)h(them)f(in)m(ternally)h(with)e(this)h(b)s(eha)m(vior:)150 +4878 y(If)27 b(the)g Fr(\014le)33 b Fu(argumen)m(t)27 +b(to)h(one)g(of)f(the)h(primaries)f(is)g(of)h(the)f(form)g +Ft(/dev/fd/)p Fj(N)p Fu(,)e(then)i(\014le)h(descriptor)f +Fr(N)150 4988 y Fu(is)g(c)m(hec)m(k)m(ed.)42 b(If)26 +b(the)h Fr(\014le)32 b Fu(argumen)m(t)c(to)f(one)h(of)f(the)g +(primaries)f(is)h(one)h(of)f Ft(/dev/stdin)p Fu(,)e Ft(/dev/stdout)p +Fu(,)150 5098 y(or)30 b Ft(/dev/stderr)p Fu(,)e(\014le)i(descriptor)h +(0,)g(1,)g(or)f(2,)h(resp)s(ectiv)m(ely)-8 b(,)32 b(is)f(c)m(hec)m(k)m +(ed.)275 5230 y(When)37 b(used)g(with)g Ft([[)p Fu(,)i(the)f(`)p +Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s(erators)g(sort)g +(lexicographically)i(using)d(the)h(curren)m(t)150 5340 +y(lo)s(cale.)k(The)30 b Ft(test)f Fu(command)i(uses)f(ASCI)s(I)e +(ordering.)p eop end +%%Page: 91 97 +TeXDict begin 91 96 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(91)275 299 y(Unless)44 b(otherwise)h(sp)s(eci\014ed,)j(primaries)c(that)h(op)s(erate)g(on)g (\014les)f(follo)m(w)i(sym)m(b)s(olic)f(links)g(and)150 -5189 y(op)s(erate)31 b(on)f(the)h(target)h(of)e(the)h(link,)f(rather)h -(than)f(the)g(link)h(itself.)150 5340 y Ft(-a)f Fj(file)162 -b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists.)p -eop end -%%Page: 88 94 -TeXDict begin 88 93 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(88)150 299 y Ft(-b)30 +408 y(op)s(erate)31 b(on)f(the)h(target)h(of)e(the)h(link,)f(rather)h +(than)f(the)g(link)h(itself.)150 564 y Ft(-a)f Fj(file)162 +b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists.)150 +720 y Ft(-b)30 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g +(\014le.)150 876 y Ft(-c)f Fj(file)162 b Fu(T)-8 b(rue)30 +b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(c)m(haracter)h(sp)s +(ecial)f(\014le.)150 1032 y Ft(-d)f Fj(file)162 b Fu(T)-8 +b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(directory) +-8 b(.)150 1188 y Ft(-e)30 b Fj(file)162 b Fu(T)-8 b(rue)30 +b(if)g Fr(\014le)36 b Fu(exists.)150 1344 y Ft(-f)30 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 -b Fu(exists)31 b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g(\014le.)150 -461 y Ft(-c)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 -b Fu(exists)31 b(and)f(is)g(a)h(c)m(haracter)h(sp)s(ecial)f(\014le.)150 -623 y Ft(-d)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 -b Fu(exists)31 b(and)f(is)g(a)h(directory)-8 b(.)150 -785 y Ft(-e)30 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists.)150 948 y Ft(-f)30 b Fj(file)162 -b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 -b(and)f(is)g(a)h(regular)f(\014le.)150 1110 y Ft(-g)g +b Fu(exists)31 b(and)f(is)g(a)h(regular)f(\014le.)150 +1500 y Ft(-g)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(its)g(set-group-id)h(bit)g(is)f +(set.)150 1656 y Ft(-h)g Fj(file)162 b Fu(T)-8 b(rue)30 +b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g +(link.)150 1812 y Ft(-k)f Fj(file)162 b Fu(T)-8 b(rue)30 +b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(its)g Ft(")p +Fu(stic)m(ky)p Ft(")h Fu(bit)g(is)f(set.)150 1968 y Ft(-p)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b -Fu(exists)31 b(and)f(its)g(set-group-id)h(bit)g(is)f(set.)150 -1272 y Ft(-h)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150 -1434 y Ft(-k)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists)31 b(and)f(its)g Ft(")p Fu(stic)m(ky)p -Ft(")h Fu(bit)g(is)f(set.)150 1596 y Ft(-p)g Fj(file)162 +Fu(exists)31 b(and)f(is)g(a)h(named)f(pip)s(e)f(\(FIF)m(O\).)150 +2124 y Ft(-r)h Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(readable.)150 +2280 y Ft(-s)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(has)g(a)g(size)i(greater)f(than)f +(zero.)150 2436 y Ft(-t)g Fj(fd)258 b Fu(T)-8 b(rue)30 +b(if)g(\014le)h(descriptor)f Fr(fd)j Fu(is)e(op)s(en)e(and)h(refers)g +(to)h(a)g(terminal.)150 2592 y Ft(-u)f Fj(file)162 b +Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(its)g +(set-user-id)h(bit)f(is)h(set.)150 2748 y Ft(-w)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 -b(and)f(is)g(a)h(named)f(pip)s(e)f(\(FIF)m(O\).)150 1759 -y Ft(-r)h Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 -b Fu(exists)31 b(and)f(is)g(readable.)150 1921 y Ft(-s)g -Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b -Fu(exists)31 b(and)f(has)g(a)g(size)i(greater)f(than)f(zero.)150 -2083 y Ft(-t)g Fj(fd)258 b Fu(T)-8 b(rue)30 b(if)g(\014le)h(descriptor) -f Fr(fd)j Fu(is)e(op)s(en)e(and)h(refers)g(to)h(a)g(terminal.)150 -2245 y Ft(-u)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists)31 b(and)f(its)g(set-user-id)h(bit)f(is)h -(set.)150 2407 y Ft(-w)f Fj(file)162 b Fu(T)-8 b(rue)30 -b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(writable.)150 -2570 y Ft(-x)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(executable.)150 -2732 y Ft(-G)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f -(e\013ectiv)m(e)j(group)d(id.)150 2894 y Ft(-L)g Fj(file)162 +b(and)f(is)g(writable.)150 2904 y Ft(-x)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 -b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150 3056 y Ft(-N)f -Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b -Fu(exists)31 b(and)f(has)g(b)s(een)f(mo)s(di\014ed)h(since)g(it)h(w)m -(as)g(last)g(read.)150 3218 y Ft(-O)f Fj(file)162 b Fu(T)-8 -b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(o)m(wned)g(b)m -(y)h(the)f(e\013ectiv)m(e)j(user)d(id.)150 3381 y Ft(-S)g +b(and)f(is)g(executable.)150 3060 y Ft(-G)g Fj(file)162 +b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 +b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f(e\013ectiv)m(e)j(group)d(id.)150 +3216 y Ft(-L)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150 +3372 y Ft(-N)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(has)g(b)s(een)f(mo)s(di\014ed)h +(since)g(it)h(w)m(as)g(last)g(read.)150 3528 y Ft(-O)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b -Fu(exists)31 b(and)f(is)g(a)h(so)s(c)m(k)m(et.)150 3543 -y Fj(file1)e Ft(-ef)g Fj(file2)630 3652 y Fu(T)-8 b(rue)30 -b(if)g Fr(\014le1)38 b Fu(and)30 b Fr(\014le2)38 b Fu(refer)30 -b(to)i(the)e(same)h(device)g(and)f(ino)s(de)g(n)m(um)m(b)s(ers.)150 -3814 y Fj(file1)f Ft(-nt)g Fj(file2)630 3924 y Fu(T)-8 -b(rue)23 b(if)h Fr(\014le1)32 b Fu(is)24 b(new)m(er)g(\(according)h(to) -g(mo)s(di\014cation)f(date\))h(than)f Fr(\014le2)p Fu(,)i(or)e(if)g -Fr(\014le1)31 b Fu(exists)630 4034 y(and)f Fr(\014le2)38 -b Fu(do)s(es)30 b(not.)150 4196 y Fj(file1)f Ft(-ot)g -Fj(file2)630 4305 y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 -b Fu(is)31 b(older)f(than)g Fr(\014le2)p Fu(,)i(or)e(if)g -Fr(\014le2)38 b Fu(exists)31 b(and)f Fr(\014le1)38 b -Fu(do)s(es)30 b(not.)150 4468 y Ft(-o)g Fj(optname)630 -4577 y Fu(T)-8 b(rue)41 b(if)g(the)g(shell)h(option)f -Fr(optname)47 b Fu(is)41 b(enabled.)73 b(The)41 b(list)h(of)f(options)h -(app)s(ears)e(in)630 4687 y(the)33 b(description)h(of)f(the)g -Ft(-o)g Fu(option)g(to)h(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)g -(4.3.1)h([The)e(Set)630 4796 y(Builtin],)e(page)g(60\).)150 -4959 y Ft(-v)f Fj(varname)630 5068 y Fu(T)-8 b(rue)30 -b(if)g(the)h(shell)f(v)-5 b(ariable)32 b Fr(v)-5 b(arname)35 -b Fu(is)30 b(set)h(\(has)g(b)s(een)e(assigned)i(a)g(v)-5 -b(alue\).)150 5230 y Ft(-R)30 b Fj(varname)630 5340 y -Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 b(ariable)32 -b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(and)f(is)h(a)f(name)h -(reference.)p eop end -%%Page: 89 95 -TeXDict begin 89 94 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(89)150 299 y Ft(-z)30 -b Fj(string)66 b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f -Fr(string)38 b Fu(is)31 b(zero.)150 462 y Ft(-n)f Fj(string)150 -571 y(string)192 b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f -Fr(string)38 b Fu(is)31 b(non-zero.)150 734 y Fj(string1)d -Ft(==)i Fj(string2)150 844 y(string1)e Ft(=)i Fj(string2)630 -953 y Fu(T)-8 b(rue)43 b(if)h(the)g(strings)g(are)g(equal.)82 +Fu(exists)31 b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f(e\013ectiv)m(e)j +(user)d(id.)150 3683 y Ft(-S)g Fj(file)162 b Fu(T)-8 +b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(so)s(c)m +(k)m(et.)150 3839 y Fj(file1)e Ft(-ef)g Fj(file2)630 +3949 y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(and)30 +b Fr(\014le2)38 b Fu(refer)30 b(to)i(the)e(same)h(device)g(and)f(ino)s +(de)g(n)m(um)m(b)s(ers.)150 4105 y Fj(file1)f Ft(-nt)g +Fj(file2)630 4215 y Fu(T)-8 b(rue)23 b(if)h Fr(\014le1)32 +b Fu(is)24 b(new)m(er)g(\(according)h(to)g(mo)s(di\014cation)f(date\))h +(than)f Fr(\014le2)p Fu(,)i(or)e(if)g Fr(\014le1)31 b +Fu(exists)630 4324 y(and)f Fr(\014le2)38 b Fu(do)s(es)30 +b(not.)150 4480 y Fj(file1)f Ft(-ot)g Fj(file2)630 4590 +y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(is)31 b(older)f(than)g +Fr(\014le2)p Fu(,)i(or)e(if)g Fr(\014le2)38 b Fu(exists)31 +b(and)f Fr(\014le1)38 b Fu(do)s(es)30 b(not.)150 4746 +y Ft(-o)g Fj(optname)630 4855 y Fu(T)-8 b(rue)41 b(if)g(the)g(shell)h +(option)f Fr(optname)47 b Fu(is)41 b(enabled.)73 b(The)41 +b(list)h(of)f(options)h(app)s(ears)e(in)630 4965 y(the)33 +b(description)h(of)f(the)g Ft(-o)g Fu(option)g(to)h(the)g +Ft(set)e Fu(builtin)h(\(see)h(Section)g(4.3.1)h([The)e(Set)630 +5074 y(Builtin],)e(page)g(61\).)150 5230 y Ft(-v)f Fj(varname)630 +5340 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 b(ariable)32 +b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(\(has)g(b)s(een)e(assigned)i +(a)g(v)-5 b(alue\).)p eop end +%%Page: 92 98 +TeXDict begin 92 97 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(92)150 299 y Ft(-R)30 +b Fj(varname)630 408 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 +b(ariable)32 b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(and)f(is)h(a)f +(name)h(reference.)150 571 y Ft(-z)f Fj(string)66 b Fu(T)-8 +b(rue)30 b(if)g(the)h(length)g(of)f Fr(string)38 b Fu(is)31 +b(zero.)150 734 y Ft(-n)f Fj(string)150 844 y(string)192 +b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f Fr(string)38 +b Fu(is)31 b(non-zero.)150 1006 y Fj(string1)d Ft(==)i +Fj(string2)150 1116 y(string1)e Ft(=)i Fj(string2)630 +1225 y Fu(T)-8 b(rue)43 b(if)h(the)g(strings)g(are)g(equal.)82 b(When)44 b(used)f(with)g(the)h Ft([[)g Fu(command,)j(this)d(p)s(er-) -630 1063 y(forms)d(pattern)g(matc)m(hing)i(as)f(describ)s(ed)e(ab)s(o)m +630 1335 y(forms)d(pattern)g(matc)m(hing)i(as)f(describ)s(ed)e(ab)s(o)m (v)m(e)j(\(see)f(Section)g(3.2.4.2)i([Conditional)630 -1173 y(Constructs],)30 b(page)h(10\).)630 1309 y(`)p +1445 y(Constructs],)30 b(page)h(11\).)630 1581 y(`)p Ft(=)p Fu(')g(should)e(b)s(e)h(used)f(with)h(the)h Ft(test)e -Fu(command)h(for)g Fm(posix)g Fu(conformance.)150 1472 -y Fj(string1)e Ft(!=)i Fj(string2)630 1581 y Fu(T)-8 +Fu(command)h(for)g Fm(posix)g Fu(conformance.)150 1743 +y Fj(string1)e Ft(!=)i Fj(string2)630 1853 y Fu(T)-8 b(rue)30 b(if)g(the)h(strings)f(are)h(not)f(equal.)150 -1744 y Fj(string1)e Ft(<)i Fj(string2)630 1854 y Fu(T)-8 +2016 y Fj(string1)e Ft(<)i Fj(string2)630 2125 y Fu(T)-8 b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 b(b)s(efore)f -Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2017 -y Fj(string1)28 b Ft(>)i Fj(string2)630 2126 y Fu(T)-8 +Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2288 +y Fj(string1)28 b Ft(>)i Fj(string2)630 2398 y Fu(T)-8 b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 b(after)g -Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2289 -y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 2399 y Ft(OP)j Fu(is)h(one)g(of)h(`) +Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2560 +y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 2670 y Ft(OP)j Fu(is)h(one)g(of)h(`) p Ft(-eq)p Fu(',)f(`)p Ft(-ne)p Fu(',)h(`)p Ft(-lt)p Fu(',)g(`)p Ft(-le)p Fu(',)f(`)p Ft(-gt)p Fu(',)h(or)f(`)p Ft(-ge)p Fu('.)51 b(These)34 b(arithmetic)h(binary)630 -2508 y(op)s(erators)h(return)e(true)i(if)f Fr(arg1)44 +2780 y(op)s(erators)h(return)e(true)i(if)f Fr(arg1)44 b Fu(is)36 b(equal)g(to,)i(not)e(equal)g(to,)i(less)e(than,)h(less)f -(than)f(or)630 2618 y(equal)29 b(to,)g(greater)h(than,)e(or)g(greater)i +(than)f(or)630 2889 y(equal)29 b(to,)g(greater)h(than,)e(or)g(greater)i (than)d(or)i(equal)f(to)h Fr(arg2)p Fu(,)h(resp)s(ectiv)m(ely)-8 -b(.)42 b Fr(Arg1)36 b Fu(and)630 2728 y Fr(arg2)j Fu(ma)m(y)30 -b(b)s(e)g(p)s(ositiv)m(e)i(or)e(negativ)m(e)j(in)m(tegers.)150 -2974 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 3133 y Fu(The)26 +b(.)42 b Fr(Arg1)36 b Fu(and)630 2999 y Fr(arg2)41 b +Fu(ma)m(y)34 b(b)s(e)f(p)s(ositiv)m(e)h(or)f(negativ)m(e)j(in)m +(tegers.)50 b(When)33 b(used)g(with)g(the)g Ft([[)g Fu(command,)630 +3108 y Fr(Arg1)41 b Fu(and)33 b Fr(Arg2)41 b Fu(are)33 +b(ev)-5 b(aluated)35 b(as)e(arithmetic)i(expressions)d(\(see)j(Section) +f(6.5)g([Shell)630 3218 y(Arithmetic],)e(page)f(92\).)150 +3464 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 3623 y Fu(The)26 b(shell)h(allo)m(ws)h(arithmetic)f(expressions)g(to)g(b)s(e)f(ev)-5 b(aluated,)29 b(as)d(one)h(of)g(the)g(shell)f(expansions)h(or)f(b)m(y) -150 3243 y(using)h(the)g Ft(\(\()g Fu(comp)s(ound)e(command,)j(the)g +150 3733 y(using)h(the)g Ft(\(\()g Fu(comp)s(ound)e(command,)j(the)g Ft(let)e Fu(builtin,)i(or)f(the)g Ft(-i)g Fu(option)h(to)f(the)h -Ft(declare)d Fu(builtin.)275 3381 y(Ev)-5 b(aluation)27 +Ft(declare)d Fu(builtin.)275 3870 y(Ev)-5 b(aluation)27 b(is)g(done)f(in)g(\014xed-width)g(in)m(tegers)i(with)e(no)h(c)m(hec)m (k)h(for)e(o)m(v)m(er\015o)m(w,)j(though)d(division)h(b)m(y)150 -3490 y(0)g(is)g(trapp)s(ed)f(and)h(\015agged)g(as)h(an)f(error.)39 +3980 y(0)g(is)g(trapp)s(ed)f(and)h(\015agged)g(as)h(an)f(error.)39 b(The)26 b(op)s(erators)h(and)g(their)g(precedence,)h(asso)s(ciativit)m -(y)-8 b(,)32 b(and)150 3600 y(v)-5 b(alues)35 b(are)h(the)f(same)g(as)h +(y)-8 b(,)32 b(and)150 4090 y(v)-5 b(alues)35 b(are)h(the)f(same)g(as)h (in)e(the)h(C)g(language.)56 b(The)35 b(follo)m(wing)h(list)g(of)f(op)s -(erators)g(is)g(group)s(ed)f(in)m(to)150 3709 y(lev)m(els)27 +(erators)g(is)g(group)s(ed)f(in)m(to)150 4199 y(lev)m(els)27 b(of)f(equal-precedence)i(op)s(erators.)39 b(The)25 b(lev)m(els)j(are)e (listed)h(in)e(order)h(of)g(decreasing)g(precedence.)150 -3874 y Fj(id)p Ft(++)j Fj(id)p Ft(--)67 b Fu(v)-5 b(ariable)31 +4364 y Fj(id)p Ft(++)j Fj(id)p Ft(--)67 b Fu(v)-5 b(ariable)31 b(p)s(ost-incremen)m(t)g(and)f(p)s(ost-decremen)m(t)150 -4037 y Ft(++)p Fj(id)f Ft(--)p Fj(id)67 b Fu(v)-5 b(ariable)31 -b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 4200 +4526 y Ft(++)p Fj(id)f Ft(--)p Fj(id)67 b Fu(v)-5 b(ariable)31 +b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 4689 y Ft(-)g(+)354 b Fu(unary)29 b(min)m(us)h(and)g(plus)150 -4363 y Ft(!)g(~)354 b Fu(logical)33 b(and)d(bit)m(wise)h(negation)150 -4526 y Ft(**)384 b Fu(exp)s(onen)m(tiation)150 4688 y +4852 y Ft(!)g(~)354 b Fu(logical)33 b(and)d(bit)m(wise)h(negation)150 +5015 y Ft(**)384 b Fu(exp)s(onen)m(tiation)150 5177 y Ft(*)30 b(/)g(\045)276 b Fu(m)m(ultiplication,)33 b(division,)d -(remainder)150 4851 y Ft(+)g(-)354 b Fu(addition,)31 -b(subtraction)150 5014 y Ft(<<)f(>>)258 b Fu(left)31 -b(and)f(righ)m(t)h(bit)m(wise)g(shifts)150 5177 y Ft(<=)f(>=)g(<)g(>) -102 b Fu(comparison)150 5340 y Ft(==)30 b(!=)258 b Fu(equalit)m(y)32 -b(and)e(inequalit)m(y)p eop end -%%Page: 90 96 -TeXDict begin 90 95 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(90)150 299 y Ft(&)432 -b Fu(bit)m(wise)31 b(AND)150 459 y Ft(^)432 b Fu(bit)m(wise)31 -b(exclusiv)m(e)h(OR)150 618 y Ft(|)432 b Fu(bit)m(wise)31 -b(OR)150 778 y Ft(&&)384 b Fu(logical)33 b(AND)150 938 -y Ft(||)384 b Fu(logical)33 b(OR)150 1097 y Ft(expr)c(?)h(expr)f(:)h -(expr)630 1207 y Fu(conditional)i(op)s(erator)150 1366 -y Ft(=)e(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g(^=)f(|=)630 -1476 y Fu(assignmen)m(t)150 1636 y Ft(expr1)g(,)h(expr2)630 -1745 y Fu(comma)275 1905 y(Shell)38 b(v)-5 b(ariables)39 +(remainder)150 5340 y Ft(+)g(-)354 b Fu(addition,)31 +b(subtraction)p eop end +%%Page: 93 99 +TeXDict begin 93 98 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(93)150 299 y Ft(<<)30 +b(>>)258 b Fu(left)31 b(and)f(righ)m(t)h(bit)m(wise)g(shifts)150 +456 y Ft(<=)f(>=)g(<)g(>)102 b Fu(comparison)150 612 +y Ft(==)30 b(!=)258 b Fu(equalit)m(y)32 b(and)e(inequalit)m(y)150 +769 y Ft(&)432 b Fu(bit)m(wise)31 b(AND)150 926 y Ft(^)432 +b Fu(bit)m(wise)31 b(exclusiv)m(e)h(OR)150 1082 y Ft(|)432 +b Fu(bit)m(wise)31 b(OR)150 1239 y Ft(&&)384 b Fu(logical)33 +b(AND)150 1396 y Ft(||)384 b Fu(logical)33 b(OR)150 1552 +y Ft(expr)c(?)h(expr)f(:)h(expr)630 1662 y Fu(conditional)i(op)s +(erator)150 1819 y Ft(=)e(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g +(^=)f(|=)630 1928 y Fu(assignmen)m(t)150 2085 y Ft(expr1)g(,)h(expr2) +630 2195 y Fu(comma)275 2351 y(Shell)38 b(v)-5 b(ariables)39 b(are)g(allo)m(w)m(ed)i(as)e(op)s(erands;)i(parameter)e(expansion)g(is) -f(p)s(erformed)g(b)s(efore)g(the)150 2015 y(expression)g(is)g(ev)-5 +f(p)s(erformed)g(b)s(efore)g(the)150 2461 y(expression)g(is)g(ev)-5 b(aluated.)66 b(Within)38 b(an)h(expression,)h(shell)e(v)-5 b(ariables)39 b(ma)m(y)g(also)g(b)s(e)f(referenced)g(b)m(y)150 -2124 y(name)31 b(without)f(using)g(the)h(parameter)g(expansion)f(syn)m +2570 y(name)31 b(without)f(using)g(the)h(parameter)g(expansion)f(syn)m (tax.)42 b(A)31 b(shell)f(v)-5 b(ariable)32 b(that)f(is)f(n)m(ull)h(or) -f(unset)150 2234 y(ev)-5 b(aluates)41 b(to)f(0)g(when)e(referenced)h(b) +f(unset)150 2680 y(ev)-5 b(aluates)41 b(to)f(0)g(when)e(referenced)h(b) m(y)g(name)h(without)f(using)g(the)g(parameter)h(expansion)f(syn)m -(tax.)150 2343 y(The)c(v)-5 b(alue)37 b(of)f(a)h(v)-5 +(tax.)150 2790 y(The)c(v)-5 b(alue)37 b(of)f(a)h(v)-5 b(ariable)36 b(is)g(ev)-5 b(aluated)38 b(as)e(an)g(arithmetic)h -(expression)f(when)f(it)h(is)g(referenced,)i(or)150 2453 +(expression)f(when)f(it)h(is)g(referenced,)i(or)150 2899 y(when)31 b(a)i(v)-5 b(ariable)33 b(whic)m(h)f(has)g(b)s(een)f(giv)m (en)j(the)e Fr(in)m(teger)40 b Fu(attribute)33 b(using)f(`)p -Ft(declare)d(-i)p Fu(')i(is)i(assigned)150 2563 y(a)j(v)-5 +Ft(declare)d(-i)p Fu(')i(is)i(assigned)150 3009 y(a)j(v)-5 b(alue.)58 b(A)36 b(n)m(ull)f(v)-5 b(alue)37 b(ev)-5 b(aluates)37 b(to)g(0.)57 b(A)36 b(shell)g(v)-5 b(ariable)37 b(need)e(not)h(ha)m(v)m(e)h(its)f Fr(in)m(teger)44 b -Fu(attribute)150 2672 y(turned)29 b(on)h(to)i(b)s(e)d(used)h(in)g(an)g -(expression.)275 2807 y(Constan)m(ts)41 b(with)g(a)h(leading)f(0)h(are) +Fu(attribute)150 3118 y(turned)29 b(on)h(to)i(b)s(e)d(used)h(in)g(an)g +(expression.)275 3252 y(Constan)m(ts)41 b(with)g(a)h(leading)f(0)h(are) g(in)m(terpreted)f(as)g(o)s(ctal)i(n)m(um)m(b)s(ers.)72 b(A)41 b(leading)h(`)p Ft(0x)p Fu(')f(or)g(`)p Ft(0X)p -Fu(')150 2916 y(denotes)30 b(hexadecimal.)42 b(Otherwise,)30 +Fu(')150 3361 y(denotes)30 b(hexadecimal.)42 b(Otherwise,)30 b(n)m(um)m(b)s(ers)f(tak)m(e)i(the)f(form)g([)p Fr(base)5 b Ft(#)p Fu(])p Fr(n)p Fu(,)30 b(where)f(the)i(optional)g -Fr(base)150 3026 y Fu(is)e(a)h(decimal)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m +Fr(base)150 3471 y Fu(is)e(a)h(decimal)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m (een)h(2)h(and)e(64)i(represen)m(ting)g(the)f(arithmetic)i(base,)e(and) -g Fr(n)g Fu(is)g(a)g(n)m(um)m(b)s(er)150 3136 y(in)c(that)g(base.)39 +g Fr(n)g Fu(is)g(a)g(n)m(um)m(b)s(er)150 3580 y(in)c(that)g(base.)39 b(If)25 b Fr(base)5 b Ft(#)24 b Fu(is)h(omitted,)j(then)c(base)h(10)h (is)f(used.)38 b(When)25 b(sp)s(ecifying)f Fr(n)p Fu(,)i(the)f(digits)h -(greater)150 3245 y(than)33 b(9)h(are)g(represen)m(ted)g(b)m(y)f(the)h +(greater)150 3690 y(than)33 b(9)h(are)g(represen)m(ted)g(b)m(y)f(the)h (lo)m(w)m(ercase)i(letters,)g(the)d(upp)s(ercase)g(letters,)j(`)p Ft(@)p Fu(',)e(and)f(`)p Ft(_)p Fu(',)i(in)e(that)150 -3355 y(order.)69 b(If)39 b Fr(base)45 b Fu(is)40 b(less)g(than)g(or)f +3800 y(order.)69 b(If)39 b Fr(base)45 b Fu(is)40 b(less)g(than)g(or)f (equal)i(to)f(36,)k(lo)m(w)m(ercase)e(and)d(upp)s(ercase)g(letters)i -(ma)m(y)g(b)s(e)e(used)150 3464 y(in)m(terc)m(hangeably)32 +(ma)m(y)g(b)s(e)e(used)150 3909 y(in)m(terc)m(hangeably)32 b(to)f(represen)m(t)g(n)m(um)m(b)s(ers)e(b)s(et)m(w)m(een)i(10)g(and)f -(35.)275 3599 y(Op)s(erators)44 b(are)h(ev)-5 b(aluated)46 +(35.)275 4042 y(Op)s(erators)44 b(are)h(ev)-5 b(aluated)46 b(in)f(order)f(of)h(precedence.)85 b(Sub-expressions)44 -b(in)g(paren)m(theses)i(are)150 3709 y(ev)-5 b(aluated)32 +b(in)g(paren)m(theses)i(are)150 4152 y(ev)-5 b(aluated)32 b(\014rst)d(and)h(ma)m(y)h(o)m(v)m(erride)g(the)g(precedence)g(rules)f -(ab)s(o)m(v)m(e.)150 3950 y Fs(6.6)68 b(Aliases)150 4109 +(ab)s(o)m(v)m(e.)150 4390 y Fs(6.6)68 b(Aliases)150 4549 y Fr(Aliases)41 b Fu(allo)m(w)d(a)f(string)f(to)h(b)s(e)f(substituted)g (for)g(a)g(w)m(ord)g(when)g(it)h(is)f(used)f(as)i(the)g(\014rst)e(w)m -(ord)h(of)h(a)150 4219 y(simple)32 b(command.)45 b(The)31 +(ord)h(of)h(a)150 4659 y(simple)32 b(command.)45 b(The)31 b(shell)i(main)m(tains)f(a)h(list)f(of)g(aliases)i(that)e(ma)m(y)h(b)s -(e)e(set)h(and)g(unset)f(with)h(the)150 4329 y Ft(alias)d -Fu(and)h Ft(unalias)e Fu(builtin)i(commands.)275 4463 +(e)e(set)h(and)g(unset)f(with)h(the)150 4768 y Ft(alias)d +Fu(and)h Ft(unalias)e Fu(builtin)i(commands.)275 4902 y(The)f(\014rst)f(w)m(ord)i(of)f(eac)m(h)i(simple)f(command,)g(if)f (unquoted,)g(is)h(c)m(hec)m(k)m(ed)h(to)g(see)f(if)g(it)g(has)f(an)g -(alias.)150 4573 y(If)24 b(so,)i(that)g(w)m(ord)e(is)h(replaced)g(b)m +(alias.)150 5011 y(If)24 b(so,)i(that)g(w)m(ord)e(is)h(replaced)g(b)m (y)f(the)h(text)h(of)e(the)h(alias.)40 b(The)24 b(c)m(haracters)i(`)p Ft(/)p Fu(',)h(`)p Ft($)p Fu(',)f(`)p Ft(`)p Fu(',)g(`)p -Ft(=)p Fu(')f(and)f(an)m(y)h(of)150 4682 y(the)e(shell)g(metac)m +Ft(=)p Fu(')f(and)f(an)m(y)h(of)150 5121 y(the)e(shell)g(metac)m (haracters)i(or)e(quoting)g(c)m(haracters)h(listed)g(ab)s(o)m(v)m(e)g (ma)m(y)f(not)g(app)s(ear)f(in)h(an)g(alias)h(name.)150 -4792 y(The)e(replacemen)m(t)h(text)g(ma)m(y)g(con)m(tain)h(an)m(y)e(v) +5230 y(The)e(replacemen)m(t)h(text)g(ma)m(y)g(con)m(tain)h(an)m(y)e(v) -5 b(alid)23 b(shell)f(input,)h(including)f(shell)g(metac)m(haracters.) -40 b(The)150 4902 y(\014rst)35 b(w)m(ord)g(of)h(the)g(replacemen)m(t)i +40 b(The)150 5340 y(\014rst)35 b(w)m(ord)g(of)h(the)g(replacemen)m(t)i (text)e(is)g(tested)h(for)e(aliases,)k(but)c(a)h(w)m(ord)g(that)g(is)g -(iden)m(tical)i(to)e(an)150 5011 y(alias)c(b)s(eing)f(expanded)f(is)h -(not)g(expanded)f(a)h(second)g(time.)43 b(This)30 b(means)h(that)g(one) -g(ma)m(y)h(alias)g Ft(ls)e Fu(to)150 5121 y Ft("ls)f(-F")p -Fu(,)f(for)f(instance,)i(and)d(Bash)i(do)s(es)f(not)h(try)f(to)h -(recursiv)m(ely)g(expand)e(the)i(replacemen)m(t)h(text.)40 -b(If)150 5230 y(the)31 b(last)h(c)m(haracter)h(of)e(the)h(alias)g(v)-5 -b(alue)31 b(is)h(a)f Fr(blank)p Fu(,)g(then)g(the)g(next)h(command)e(w) -m(ord)h(follo)m(wing)i(the)150 5340 y(alias)f(is)e(also)h(c)m(hec)m(k)m -(ed)i(for)d(alias)h(expansion.)p eop end -%%Page: 91 97 -TeXDict begin 91 96 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(91)275 299 y(Aliases)29 -b(are)f(created)i(and)d(listed)i(with)f(the)g Ft(alias)f -Fu(command,)h(and)g(remo)m(v)m(ed)h(with)f(the)g Ft(unalias)150 -408 y Fu(command.)275 540 y(There)44 b(is)h(no)g(mec)m(hanism)g(for)f -(using)h(argumen)m(ts)g(in)f(the)h(replacemen)m(t)i(text,)i(as)d(in)e -Ft(csh)p Fu(.)83 b(If)150 650 y(argumen)m(ts)37 b(are)h(needed,)g(a)g -(shell)f(function)f(should)g(b)s(e)h(used)f(\(see)i(Section)g(3.3)g -([Shell)f(F)-8 b(unctions],)150 759 y(page)31 b(17\).)275 -891 y(Aliases)i(are)h(not)e(expanded)g(when)g(the)h(shell)g(is)g(not)g -(in)m(teractiv)m(e,)j(unless)c(the)h Ft(expand_aliases)150 -1000 y Fu(shell)e(option)f(is)h(set)g(using)f Ft(shopt)f -Fu(\(see)i(Section)g(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g(64\).) -275 1132 y(The)38 b(rules)h(concerning)h(the)f(de\014nition)g(and)g -(use)g(of)g(aliases)i(are)e(somewhat)h(confusing.)67 -b(Bash)150 1241 y(alw)m(a)m(ys)33 b(reads)f(at)g(least)i(one)e -(complete)h(line)f(of)g(input)f(b)s(efore)g(executing)i(an)m(y)g(of)f -(the)g(commands)f(on)150 1351 y(that)22 b(line.)39 b(Aliases)23 -b(are)f(expanded)f(when)g(a)h(command)g(is)f(read,)j(not)e(when)f(it)h -(is)g(executed.)39 b(Therefore,)150 1461 y(an)24 b(alias)i -(de\014nition)e(app)s(earing)g(on)g(the)h(same)g(line)f(as)h(another)g -(command)f(do)s(es)g(not)h(tak)m(e)h(e\013ect)g(un)m(til)150 -1570 y(the)k(next)f(line)h(of)g(input)f(is)g(read.)40 -b(The)29 b(commands)h(follo)m(wing)h(the)e(alias)i(de\014nition)e(on)h -(that)g(line)g(are)150 1680 y(not)j(a\013ected)h(b)m(y)f(the)g(new)f -(alias.)49 b(This)32 b(b)s(eha)m(vior)h(is)g(also)g(an)g(issue)g(when)e -(functions)i(are)g(executed.)150 1789 y(Aliases)c(are)g(expanded)e -(when)g(a)i(function)e(de\014nition)h(is)g(read,)h(not)f(when)g(the)g -(function)g(is)g(executed,)150 1899 y(b)s(ecause)36 b(a)h(function)f -(de\014nition)f(is)i(itself)g(a)f(command.)58 b(As)36 -b(a)h(consequence,)h(aliases)g(de\014ned)d(in)h(a)150 -2009 y(function)28 b(are)h(not)g(a)m(v)-5 b(ailable)31 -b(un)m(til)e(after)g(that)g(function)f(is)g(executed.)41 +(iden)m(tical)i(to)e(an)p eop end +%%Page: 94 100 +TeXDict begin 94 99 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(94)150 299 y(alias)32 +b(b)s(eing)f(expanded)f(is)h(not)g(expanded)f(a)h(second)g(time.)43 +b(This)30 b(means)h(that)g(one)g(ma)m(y)h(alias)g Ft(ls)e +Fu(to)150 408 y Ft("ls)f(-F")p Fu(,)f(for)f(instance,)i(and)d(Bash)i +(do)s(es)f(not)h(try)f(to)h(recursiv)m(ely)g(expand)e(the)i(replacemen) +m(t)h(text.)40 b(If)150 518 y(the)31 b(last)h(c)m(haracter)h(of)e(the)h +(alias)g(v)-5 b(alue)31 b(is)h(a)f Fr(blank)p Fu(,)g(then)g(the)g(next) +h(command)e(w)m(ord)h(follo)m(wing)i(the)150 628 y(alias)f(is)e(also)h +(c)m(hec)m(k)m(ed)i(for)d(alias)h(expansion.)275 770 +y(Aliases)e(are)f(created)i(and)d(listed)i(with)f(the)g +Ft(alias)f Fu(command,)h(and)g(remo)m(v)m(ed)h(with)f(the)g +Ft(unalias)150 880 y Fu(command.)275 1023 y(There)44 +b(is)h(no)g(mec)m(hanism)g(for)f(using)h(argumen)m(ts)g(in)f(the)h +(replacemen)m(t)i(text,)i(as)d(in)e Ft(csh)p Fu(.)83 +b(If)150 1132 y(argumen)m(ts)37 b(are)h(needed,)g(a)g(shell)f(function) +f(should)g(b)s(e)h(used)f(\(see)i(Section)g(3.3)g([Shell)f(F)-8 +b(unctions],)150 1242 y(page)31 b(17\).)275 1385 y(Aliases)i(are)h(not) +e(expanded)g(when)g(the)h(shell)g(is)g(not)g(in)m(teractiv)m(e,)j +(unless)c(the)h Ft(expand_aliases)150 1494 y Fu(shell)e(option)f(is)h +(set)g(using)f Ft(shopt)f Fu(\(see)i(Section)g(4.3.2)h([The)e(Shopt)g +(Builtin],)h(page)g(65\).)275 1637 y(The)38 b(rules)h(concerning)h(the) +f(de\014nition)g(and)g(use)g(of)g(aliases)i(are)e(somewhat)h +(confusing.)67 b(Bash)150 1747 y(alw)m(a)m(ys)37 b(reads)f(at)h(least)g +(one)f(complete)i(line)e(of)g(input,)h(and)e(all)i(lines)f(that)g(mak)m +(e)h(up)e(a)h(comp)s(ound)150 1856 y(command,)29 b(b)s(efore)g +(executing)i(an)m(y)e(of)h(the)f(commands)g(on)g(that)h(line)f(or)h +(the)f(comp)s(ound)f(command.)150 1966 y(Aliases)g(are)g(expanded)e +(when)g(a)i(command)f(is)g(read,)h(not)f(when)f(it)i(is)f(executed.)41 +b(Therefore,)28 b(an)f(alias)150 2075 y(de\014nition)36 +b(app)s(earing)h(on)f(the)h(same)g(line)g(as)g(another)g(command)f(do)s +(es)g(not)h(tak)m(e)i(e\013ect)f(un)m(til)f(the)150 2185 +y(next)i(line)g(of)g(input)f(is)h(read.)66 b(The)38 b(commands)h(follo) +m(wing)h(the)f(alias)h(de\014nition)e(on)h(that)g(line)h(are)150 +2295 y(not)33 b(a\013ected)h(b)m(y)f(the)g(new)f(alias.)49 +b(This)32 b(b)s(eha)m(vior)h(is)g(also)g(an)g(issue)g(when)e(functions) +i(are)g(executed.)150 2404 y(Aliases)c(are)g(expanded)e(when)g(a)i +(function)e(de\014nition)h(is)g(read,)h(not)f(when)g(the)g(function)g +(is)g(executed,)150 2514 y(b)s(ecause)36 b(a)h(function)f(de\014nition) +f(is)i(itself)g(a)f(command.)58 b(As)36 b(a)h(consequence,)h(aliases)g +(de\014ned)d(in)h(a)150 2623 y(function)28 b(are)h(not)g(a)m(v)-5 +b(ailable)31 b(un)m(til)e(after)g(that)g(function)f(is)g(executed.)41 b(T)-8 b(o)29 b(b)s(e)f(safe,)i(alw)m(a)m(ys)g(put)e(alias)150 -2118 y(de\014nitions)i(on)g(a)h(separate)g(line,)g(and)f(do)g(not)h +2733 y(de\014nitions)i(on)g(a)h(separate)g(line,)g(and)f(do)g(not)h (use)f Ft(alias)f Fu(in)h(comp)s(ound)f(commands.)275 -2250 y(F)-8 b(or)31 b(almost)g(ev)m(ery)g(purp)s(ose,)e(shell)i +2876 y(F)-8 b(or)31 b(almost)g(ev)m(ery)g(purp)s(ose,)e(shell)i (functions)f(are)g(preferred)g(o)m(v)m(er)h(aliases.)150 -2484 y Fs(6.7)68 b(Arra)l(ys)150 2644 y Fu(Bash)33 b(pro)m(vides)g +3129 y Fs(6.7)68 b(Arra)l(ys)150 3288 y Fu(Bash)33 b(pro)m(vides)g (one-dimensional)g(indexed)f(and)h(asso)s(ciativ)m(e)i(arra)m(y)e(v)-5 b(ariables.)49 b(An)m(y)33 b(v)-5 b(ariable)33 b(ma)m(y)150 -2753 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e +3398 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e Ft(declare)e Fu(builtin)h(will)i(explicitly)g(declare)g(an)f(arra)m(y) --8 b(.)46 b(There)32 b(is)150 2863 y(no)h(maxim)m(um)g(limit)h(on)f +-8 b(.)46 b(There)32 b(is)150 3507 y(no)h(maxim)m(um)g(limit)h(on)f (the)g(size)h(of)g(an)f(arra)m(y)-8 b(,)35 b(nor)d(an)m(y)i(requiremen) -m(t)f(that)h(mem)m(b)s(ers)e(b)s(e)g(indexed)150 2973 +m(t)f(that)h(mem)m(b)s(ers)e(b)s(e)g(indexed)150 3617 y(or)26 b(assigned)h(con)m(tiguously)-8 b(.)41 b(Indexed)25 b(arra)m(ys)i(are)f(referenced)g(using)g(in)m(tegers)i(\(including)e -(arithmetic)150 3082 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell) -e(Arithmetic],)k(page)d(89\)\))h(and)d(are)i(zero-based;)k(asso)s -(ciativ)m(e)150 3192 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59 +(arithmetic)150 3727 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell) +e(Arithmetic],)k(page)d(92\)\))h(and)d(are)i(zero-based;)k(asso)s +(ciativ)m(e)150 3836 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59 b(Unless)36 b(otherwise)h(noted,)h(indexed)e(arra)m(y)h(indices)f(m)m -(ust)g(b)s(e)g(non-)150 3301 y(negativ)m(e)d(in)m(tegers.)275 -3433 y(An)26 b(indexed)h(arra)m(y)h(is)f(created)h(automatically)j(if)c +(ust)g(b)s(e)g(non-)150 3946 y(negativ)m(e)d(in)m(tegers.)275 +4088 y(An)26 b(indexed)h(arra)m(y)h(is)f(created)h(automatically)j(if)c (an)m(y)g(v)-5 b(ariable)28 b(is)g(assigned)f(to)h(using)f(the)g(syn)m -(tax)390 3564 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p -Fj(value)150 3696 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g +(tax)390 4231 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p +Fj(value)150 4374 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g (an)f(arithmetic)i(expression)e(that)h(m)m(ust)g(ev)-5 b(aluate)36 b(to)f(a)g(n)m(um)m(b)s(er.)51 b(T)-8 b(o)150 -3806 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31 -b(use)390 3937 y Ft(declare)46 b(-a)h Fj(name)150 4069 -y Fu(The)30 b(syn)m(tax)390 4200 y Ft(declare)46 b(-a)h -Fj(name)p Ft([)p Fj(subscript)p Ft(])150 4332 y Fu(is)30 +4484 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31 +b(use)390 4626 y Ft(declare)46 b(-a)h Fj(name)150 4769 +y Fu(The)30 b(syn)m(tax)390 4912 y Ft(declare)46 b(-a)h +Fj(name)p Ft([)p Fj(subscript)p Ft(])150 5054 y Fu(is)30 b(also)i(accepted;)g(the)e Fr(subscript)h Fu(is)g(ignored.)150 -4463 y(Asso)s(ciativ)m(e)i(arra)m(ys)d(are)h(created)h(using)390 -4595 y Ft(declare)46 b(-A)h Fj(name)p Ft(.)275 4726 y -Fu(A)m(ttributes)f(ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(for)h(an)g(arra)m -(y)g(v)-5 b(ariable)47 b(using)e(the)h Ft(declare)e Fu(and)h -Ft(readonly)150 4836 y Fu(builtins.)40 b(Eac)m(h)31 b(attribute)g -(applies)g(to)g(all)g(mem)m(b)s(ers)f(of)g(an)h(arra)m(y)-8 -b(.)275 4967 y(Arra)m(ys)30 b(are)h(assigned)f(to)h(using)f(comp)s -(ound)f(assignmen)m(ts)i(of)g(the)f(form)390 5099 y Fj(name)p -Ft(=\()p Fj(value1)44 b(value2)j Ft(...)f(\))150 5230 -y Fu(where)38 b(eac)m(h)i Fr(v)-5 b(alue)44 b Fu(is)39 -b(of)g(the)g(form)f Ft([)p Fj(subscript)p Ft(]=)p Fr(string)p -Fu(.)63 b(Indexed)37 b(arra)m(y)j(assignmen)m(ts)f(do)g(not)150 -5340 y(require)31 b(an)m(ything)g(but)f Fr(string)p Fu(.)43 -b(When)31 b(assigning)g(to)h(indexed)e(arra)m(ys,)i(if)f(the)g -(optional)h(subscript)e(is)p eop end -%%Page: 92 98 -TeXDict begin 92 97 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(92)150 299 y(supplied,)32 -b(that)h(index)f(is)h(assigned)g(to;)h(otherwise)f(the)g(index)f(of)h -(the)g(elemen)m(t)h(assigned)f(is)f(the)h(last)150 408 -y(index)d(assigned)h(to)g(b)m(y)f(the)g(statemen)m(t)j(plus)c(one.)41 -b(Indexing)30 b(starts)h(at)g(zero.)275 555 y(When)f(assigning)h(to)g -(an)f(asso)s(ciativ)m(e)j(arra)m(y)-8 b(,)32 b(the)e(subscript)f(is)i -(required.)275 701 y(This)f(syn)m(tax)j(is)e(also)i(accepted)g(b)m(y)f -(the)f Ft(declare)f Fu(builtin.)44 b(Individual)31 b(arra)m(y)h(elemen) -m(ts)h(ma)m(y)g(b)s(e)150 810 y(assigned)e(to)g(using)f(the)g -Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p Fj(value)25 b -Fu(syn)m(tax)31 b(in)m(tro)s(duced)e(ab)s(o)m(v)m(e.)275 -956 y(When)h(assigning)h(to)h(an)e(indexed)g(arra)m(y)-8 -b(,)32 b(if)f Fr(name)36 b Fu(is)31 b(subscripted)e(b)m(y)i(a)g -(negativ)m(e)i(n)m(um)m(b)s(er,)c(that)150 1066 y(n)m(um)m(b)s(er)43 -b(is)h(in)m(terpreted)h(as)f(relativ)m(e)j(to)e(one)f(greater)i(than)e -(the)g(maxim)m(um)g(index)g(of)h Fr(name)p Fu(,)j(so)150 -1176 y(negativ)m(e)30 b(indices)d(coun)m(t)h(bac)m(k)g(from)f(the)g -(end)g(of)g(the)h(arra)m(y)-8 b(,)29 b(and)e(an)g(index)g(of)g(-1)h -(references)g(the)f(last)150 1285 y(elemen)m(t.)275 1431 -y(An)m(y)h(elemen)m(t)h(of)g(an)f(arra)m(y)g(ma)m(y)h(b)s(e)f -(referenced)g(using)g Ft(${)p Fj(name)p Ft([)p Fj(subscript)p -Ft(]})p Fu(.)35 b(The)27 b(braces)i(are)150 1541 y(required)f(to)j(a)m -(v)m(oid)f(con\015icts)g(with)f(the)h(shell's)f(\014lename)h(expansion) -f(op)s(erators.)41 b(If)28 b(the)i Fr(subscript)g Fu(is)150 -1650 y(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)f(the)h(w)m(ord)f -(expands)f(to)i(all)g(mem)m(b)s(ers)e(of)i(the)f(arra)m(y)h -Fr(name)p Fu(.)40 b(These)29 b(subscripts)f(di\013er)h(only)150 -1760 y(when)36 b(the)g(w)m(ord)g(app)s(ears)g(within)g(double)g -(quotes.)60 b(If)36 b(the)h(w)m(ord)f(is)g(double-quoted,)j -Ft(${)p Fj(name)p Ft([*]})150 1870 y Fu(expands)25 b(to)h(a)g(single)h -(w)m(ord)e(with)g(the)h(v)-5 b(alue)26 b(of)g(eac)m(h)h(arra)m(y)f(mem) -m(b)s(er)f(separated)h(b)m(y)g(the)f(\014rst)g(c)m(harac-)150 -1979 y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29 +5197 y(Asso)s(ciativ)m(e)i(arra)m(ys)d(are)h(created)h(using)390 +5340 y Ft(declare)46 b(-A)h Fj(name)p Ft(.)p eop end +%%Page: 95 101 +TeXDict begin 95 100 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(95)275 299 y(A)m(ttributes)46 +b(ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(for)h(an)g(arra)m(y)g(v)-5 +b(ariable)47 b(using)e(the)h Ft(declare)e Fu(and)h Ft(readonly)150 +408 y Fu(builtins.)40 b(Eac)m(h)31 b(attribute)g(applies)g(to)g(all)g +(mem)m(b)s(ers)f(of)g(an)h(arra)m(y)-8 b(.)275 548 y(Arra)m(ys)30 +b(are)h(assigned)f(to)h(using)f(comp)s(ound)f(assignmen)m(ts)i(of)g +(the)f(form)390 687 y Fj(name)p Ft(=\()p Fj(value1)44 +b(value2)j Ft(...)f(\))150 827 y Fu(where)38 b(eac)m(h)i +Fr(v)-5 b(alue)44 b Fu(is)39 b(of)g(the)g(form)f Ft([)p +Fj(subscript)p Ft(]=)p Fr(string)p Fu(.)63 b(Indexed)37 +b(arra)m(y)j(assignmen)m(ts)f(do)g(not)150 936 y(require)31 +b(an)m(ything)g(but)f Fr(string)p Fu(.)43 b(When)31 b(assigning)g(to)h +(indexed)e(arra)m(ys,)i(if)f(the)g(optional)h(subscript)e(is)150 +1046 y(supplied,)i(that)h(index)f(is)h(assigned)g(to;)h(otherwise)f +(the)g(index)f(of)h(the)g(elemen)m(t)h(assigned)f(is)f(the)h(last)150 +1156 y(index)d(assigned)h(to)g(b)m(y)f(the)g(statemen)m(t)j(plus)c +(one.)41 b(Indexing)30 b(starts)h(at)g(zero.)275 1295 +y(When)f(assigning)h(to)g(an)f(asso)s(ciativ)m(e)j(arra)m(y)-8 +b(,)32 b(the)e(subscript)f(is)i(required.)275 1435 y(This)f(syn)m(tax)j +(is)e(also)i(accepted)g(b)m(y)f(the)f Ft(declare)f Fu(builtin.)44 +b(Individual)31 b(arra)m(y)h(elemen)m(ts)h(ma)m(y)g(b)s(e)150 +1544 y(assigned)e(to)g(using)f(the)g Fj(name)p Ft([)p +Fj(subscript)p Ft(]=)p Fj(value)25 b Fu(syn)m(tax)31 +b(in)m(tro)s(duced)e(ab)s(o)m(v)m(e.)275 1684 y(When)h(assigning)h(to)h +(an)e(indexed)g(arra)m(y)-8 b(,)32 b(if)f Fr(name)36 +b Fu(is)31 b(subscripted)e(b)m(y)i(a)g(negativ)m(e)i(n)m(um)m(b)s(er,)c +(that)150 1793 y(n)m(um)m(b)s(er)43 b(is)h(in)m(terpreted)h(as)f +(relativ)m(e)j(to)e(one)f(greater)i(than)e(the)g(maxim)m(um)g(index)g +(of)h Fr(name)p Fu(,)j(so)150 1903 y(negativ)m(e)30 b(indices)d(coun)m +(t)h(bac)m(k)g(from)f(the)g(end)g(of)g(the)h(arra)m(y)-8 +b(,)29 b(and)e(an)g(index)g(of)g(-1)h(references)g(the)f(last)150 +2012 y(elemen)m(t.)275 2152 y(An)m(y)h(elemen)m(t)h(of)g(an)f(arra)m(y) +g(ma)m(y)h(b)s(e)f(referenced)g(using)g Ft(${)p Fj(name)p +Ft([)p Fj(subscript)p Ft(]})p Fu(.)35 b(The)27 b(braces)i(are)150 +2262 y(required)f(to)j(a)m(v)m(oid)f(con\015icts)g(with)f(the)h +(shell's)f(\014lename)h(expansion)f(op)s(erators.)41 +b(If)28 b(the)i Fr(subscript)g Fu(is)150 2371 y(`)p Ft(@)p +Fu(')f(or)h(`)p Ft(*)p Fu(',)f(the)h(w)m(ord)f(expands)f(to)i(all)g +(mem)m(b)s(ers)e(of)i(the)f(arra)m(y)h Fr(name)p Fu(.)40 +b(These)29 b(subscripts)f(di\013er)h(only)150 2481 y(when)36 +b(the)g(w)m(ord)g(app)s(ears)g(within)g(double)g(quotes.)60 +b(If)36 b(the)h(w)m(ord)f(is)g(double-quoted,)j Ft(${)p +Fj(name)p Ft([*]})150 2590 y Fu(expands)25 b(to)h(a)g(single)h(w)m(ord) +e(with)g(the)h(v)-5 b(alue)26 b(of)g(eac)m(h)h(arra)m(y)f(mem)m(b)s(er) +f(separated)h(b)m(y)g(the)f(\014rst)g(c)m(harac-)150 +2700 y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29 b(and)f Ft(${)p Fj(name)p Ft([@]})d Fu(expands)i(eac)m(h)i(elemen)m(t)h (of)e Fr(name)33 b Fu(to)c(a)f(separate)h(w)m(ord.)150 -2089 y(When)j(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f +2809 y(When)j(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f Ft(${)p Fj(name)p Ft([@]})e Fu(expands)h(to)i(nothing.)47 -b(If)31 b(the)i(double-quoted)150 2198 y(expansion)39 +b(If)31 b(the)i(double-quoted)150 2919 y(expansion)39 b(o)s(ccurs)h(within)f(a)h(w)m(ord,)i(the)d(expansion)h(of)g(the)f -(\014rst)g(parameter)h(is)g(joined)f(with)h(the)150 2308 +(\014rst)g(parameter)h(is)g(joined)f(with)h(the)150 3029 y(b)s(eginning)29 b(part)g(of)h(the)f(original)i(w)m(ord,)e(and)g(the)h (expansion)f(of)h(the)f(last)i(parameter)e(is)h(joined)f(with)150 -2418 y(the)g(last)h(part)f(of)g(the)g(original)h(w)m(ord.)40 +3138 y(the)g(last)h(part)f(of)g(the)g(original)h(w)m(ord.)40 b(This)28 b(is)h(analogous)h(to)f(the)h(expansion)e(of)h(the)g(sp)s -(ecial)h(param-)150 2527 y(eters)g(`)p Ft(@)p Fu(')f(and)g(`)p +(ecial)h(param-)150 3248 y(eters)g(`)p Ft(@)p Fu(')f(and)g(`)p Ft(*)p Fu('.)41 b Ft(${#)p Fj(name)p Ft([)p Fj(subscript)p Ft(]})24 b Fu(expands)k(to)i(the)g(length)g(of)f Ft(${)p Fj(name)p Ft([)p Fj(subscript)p Ft(]})p Fu(.)35 b(If)150 -2637 y Fr(subscript)28 b Fu(is)g(`)p Ft(@)p Fu(')f(or)h(`)p +3357 y Fr(subscript)28 b Fu(is)g(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)g(the)g(expansion)f(is)g(the)h(n)m(um)m(b)s(er)e(of)i (elemen)m(ts)g(in)f(the)h(arra)m(y)-8 b(.)41 b(If)27 -b(the)g Fr(subscript)150 2746 y Fu(used)34 b(to)h(reference)g(an)f +b(the)g Fr(subscript)150 3467 y Fu(used)34 b(to)h(reference)g(an)f (elemen)m(t)i(of)f(an)f(indexed)g(arra)m(y)h(ev)-5 b(aluates)36 b(to)f(a)g(n)m(um)m(b)s(er)e(less)i(than)f(zero,)i(it)150 -2856 y(is)c(in)m(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h +3577 y(is)c(in)m(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h (than)f(the)h(maxim)m(um)f(index)f(of)h(the)h(arra)m(y)-8 -b(,)33 b(so)g(negativ)m(e)150 2966 y(indices)d(coun)m(t)h(bac)m(k)h +b(,)33 b(so)g(negativ)m(e)150 3686 y(indices)d(coun)m(t)h(bac)m(k)h (from)e(the)g(end)g(of)g(the)h(arra)m(y)-8 b(,)31 b(and)f(an)g(index)g (of)h(-1)g(refers)f(to)h(the)g(last)g(elemen)m(t.)275 -3112 y(Referencing)41 b(an)f(arra)m(y)h(v)-5 b(ariable)42 +3826 y(Referencing)41 b(an)f(arra)m(y)h(v)-5 b(ariable)42 b(without)e(a)h(subscript)e(is)i(equiv)-5 b(alen)m(t)42 -b(to)f(referencing)g(with)g(a)150 3221 y(subscript)35 +b(to)f(referencing)g(with)g(a)150 3935 y(subscript)35 b(of)h(0.)57 b(An)m(y)36 b(reference)g(to)h(a)f(v)-5 b(ariable)36 b(using)g(a)g(v)-5 b(alid)36 b(subscript)f(is)h(legal,)j -(and)c Ft(bash)g Fu(will)150 3331 y(create)d(an)e(arra)m(y)h(if)f -(necessary)-8 b(.)275 3477 y(An)35 b(arra)m(y)i(v)-5 +(and)c Ft(bash)g Fu(will)150 4045 y(create)d(an)e(arra)m(y)h(if)f +(necessary)-8 b(.)275 4184 y(An)35 b(arra)m(y)i(v)-5 b(ariable)37 b(is)g(considered)f(set)h(if)f(a)h(subscript)e(has)h(b)s (een)g(assigned)g(a)h(v)-5 b(alue.)59 b(The)36 b(n)m(ull)150 -3587 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)275 -3733 y(It)29 b(is)h(p)s(ossible)f(to)h(obtain)g(the)f(k)m(eys)i +4294 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)275 +4433 y(It)29 b(is)h(p)s(ossible)f(to)h(obtain)g(the)f(k)m(eys)i (\(indices\))f(of)f(an)h(arra)m(y)g(as)f(w)m(ell)i(as)f(the)f(v)-5 b(alues.)41 b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([@])p -Fi(})150 3842 y Fu(and)39 b($)p Fi({)p Fu(!)p Fr(name)5 +Fi(})150 4543 y Fu(and)39 b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([*])p Fi(})43 b Fu(expand)c(to)i(the)f(indices)h(assigned)f(in)g (arra)m(y)g(v)-5 b(ariable)41 b Fr(name)p Fu(.)70 b(The)39 -b(treatmen)m(t)150 3952 y(when)i(in)g(double)g(quotes)h(is)f(similar)h +b(treatmen)m(t)150 4653 y(when)i(in)g(double)g(quotes)h(is)f(similar)h (to)h(the)e(expansion)h(of)f(the)h(sp)s(ecial)g(parameters)g(`)p -Ft(@)p Fu(')g(and)f(`)p Ft(*)p Fu(')150 4061 y(within)30 -b(double)g(quotes.)275 4208 y(The)j Ft(unset)g Fu(builtin)h(is)g(used)g -(to)h(destro)m(y)g(arra)m(ys.)52 b Ft(unset)29 b Fj(name)p -Ft([)p Fj(subscript)p Ft(])h Fu(destro)m(ys)35 b(the)g(ar-)150 -4317 y(ra)m(y)j(elemen)m(t)h(at)g(index)e Fr(subscript)p -Fu(.)61 b(Negativ)m(e)41 b(subscripts)36 b(to)i(indexed)g(arra)m(ys)g -(are)g(in)m(terpreted)g(as)150 4427 y(describ)s(ed)f(ab)s(o)m(v)m(e.)67 -b(Care)38 b(m)m(ust)h(b)s(e)f(tak)m(en)h(to)h(a)m(v)m(oid)g(un)m(w)m -(an)m(ted)e(side)h(e\013ects)h(caused)e(b)m(y)h(\014lename)150 -4536 y(expansion.)50 b Ft(unset)29 b Fj(name)p Fu(,)34 -b(where)f Fr(name)39 b Fu(is)34 b(an)f(arra)m(y)-8 b(,)36 -b(remo)m(v)m(es)f(the)f(en)m(tire)g(arra)m(y)-8 b(.)52 -b(A)33 b(subscript)g(of)150 4646 y(`)p Ft(*)p Fu(')e(or)f(`)p -Ft(@)p Fu(')g(also)i(remo)m(v)m(es)f(the)g(en)m(tire)g(arra)m(y)-8 -b(.)275 4792 y(The)20 b Ft(declare)p Fu(,)h Ft(local)p +Ft(@)p Fu(')g(and)f(`)p Ft(*)p Fu(')150 4762 y(within)30 +b(double)g(quotes.)275 4902 y(The)25 b Ft(unset)g Fu(builtin)g(is)h +(used)f(to)i(destro)m(y)f(arra)m(ys.)40 b Ft(unset)29 +b Fj(name)p Ft([)p Fj(subscript)p Ft(])22 b Fu(destro)m(ys)k(the)g +(arra)m(y)150 5011 y(elemen)m(t)40 b(at)e(index)g Fr(subscript)p +Fu(.)62 b(Negativ)m(e)41 b(subscripts)c(to)i(indexed)e(arra)m(ys)i(are) +f(in)m(terpreted)h(as)f(de-)150 5121 y(scrib)s(ed)30 +b(ab)s(o)m(v)m(e.)42 b(Unsetting)31 b(the)g(last)g(elemen)m(t)h(of)f +(an)g(arra)m(y)g(v)-5 b(ariable)31 b(do)s(es)f(not)h(unset)f(the)h(v)-5 +b(ariable.)150 5230 y Ft(unset)29 b Fj(name)p Fu(,)e(where)h +Fr(name)33 b Fu(is)28 b(an)g(arra)m(y)-8 b(,)30 b(remo)m(v)m(es)f(the)f +(en)m(tire)h(arra)m(y)-8 b(.)41 b(A)28 b(subscript)f(of)h(`)p +Ft(*)p Fu(')g(or)g(`)p Ft(@)p Fu(')g(also)150 5340 y(remo)m(v)m(es)k +(the)e(en)m(tire)i(arra)m(y)-8 b(.)p eop end +%%Page: 96 102 +TeXDict begin 96 101 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(96)275 299 y(When)35 +b(using)g(a)i(v)-5 b(ariable)36 b(name)g(with)g(a)g(subscript)e(as)i +(an)g(argumen)m(t)g(to)h(a)f(command,)h(suc)m(h)f(as)150 +408 y(with)k Ft(unset)p Fu(,)h(without)e(using)h(the)g(w)m(ord)f +(expansion)h(syn)m(tax)g(describ)s(ed)f(ab)s(o)m(v)m(e,)44 +b(the)c(argumen)m(t)g(is)150 518 y(sub)5 b(ject)25 b(to)h(the)g +(shell's)g(\014lename)f(expansion.)39 b(If)25 b(\014lename)h(expansion) +f(is)g(not)h(desired,)g(the)f(argumen)m(t)150 628 y(should)k(b)s(e)h +(quoted.)275 773 y(The)20 b Ft(declare)p Fu(,)h Ft(local)p Fu(,)h(and)e Ft(readonly)f Fu(builtins)h(eac)m(h)i(accept)g(a)g Ft(-a)e Fu(option)h(to)h(sp)s(ecify)f(an)f(indexed)150 -4902 y(arra)m(y)28 b(and)f(a)h Ft(-A)e Fu(option)i(to)g(sp)s(ecify)f -(an)h(asso)s(ciativ)m(e)i(arra)m(y)-8 b(.)40 b(If)27 -b(b)s(oth)g(options)h(are)g(supplied,)f Ft(-A)f Fu(tak)m(es)150 -5011 y(precedence.)55 b(The)35 b Ft(read)f Fu(builtin)h(accepts)h(a)g -Ft(-a)e Fu(option)i(to)g(assign)f(a)g(list)h(of)f(w)m(ords)g(read)g -(from)g(the)150 5121 y(standard)h(input)g(to)i(an)f(arra)m(y)-8 -b(,)40 b(and)c(can)h(read)g(v)-5 b(alues)38 b(from)e(the)h(standard)g -(input)f(in)m(to)i(individual)150 5230 y(arra)m(y)f(elemen)m(ts.)62 +883 y(arra)m(y)28 b(and)f(a)h Ft(-A)e Fu(option)i(to)g(sp)s(ecify)f(an) +h(asso)s(ciativ)m(e)i(arra)m(y)-8 b(.)40 b(If)27 b(b)s(oth)g(options)h +(are)g(supplied,)f Ft(-A)f Fu(tak)m(es)150 992 y(precedence.)55 +b(The)35 b Ft(read)f Fu(builtin)h(accepts)h(a)g Ft(-a)e +Fu(option)i(to)g(assign)f(a)g(list)h(of)f(w)m(ords)g(read)g(from)g(the) +150 1102 y(standard)h(input)g(to)i(an)f(arra)m(y)-8 b(,)40 +b(and)c(can)h(read)g(v)-5 b(alues)38 b(from)e(the)h(standard)g(input)f +(in)m(to)i(individual)150 1212 y(arra)m(y)f(elemen)m(ts.)62 b(The)36 b Ft(set)g Fu(and)h Ft(declare)d Fu(builtins)j(displa)m(y)g (arra)m(y)g(v)-5 b(alues)37 b(in)g(a)g(w)m(a)m(y)h(that)g(allo)m(ws)150 -5340 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)p +1321 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)150 +1579 y Fs(6.8)68 b(The)45 b(Directory)g(Stac)l(k)150 +1738 y Fu(The)21 b(directory)h(stac)m(k)h(is)e(a)h(list)g(of)f(recen)m +(tly-visited)j(directories.)39 b(The)20 b Ft(pushd)g +Fu(builtin)h(adds)g(directories)150 1848 y(to)42 b(the)f(stac)m(k)i(as) +e(it)h(c)m(hanges)g(the)f(curren)m(t)g(directory)-8 b(,)45 +b(and)40 b(the)i Ft(popd)e Fu(builtin)g(remo)m(v)m(es)j(sp)s(eci\014ed) +150 1957 y(directories)29 b(from)f(the)h(stac)m(k)h(and)d(c)m(hanges)j +(the)e(curren)m(t)g(directory)h(to)g(the)g(directory)f(remo)m(v)m(ed.) +41 b(The)150 2067 y Ft(dirs)34 b Fu(builtin)g(displa)m(ys)h(the)g(con)m +(ten)m(ts)i(of)e(the)g(directory)h(stac)m(k.)56 b(The)34 +b(curren)m(t)h(directory)g(is)g(alw)m(a)m(ys)150 2176 +y(the)c Ft(")p Fu(top)p Ft(")f Fu(of)g(the)h(directory)g(stac)m(k.)275 +2322 y(The)k(con)m(ten)m(ts)i(of)f(the)h(directory)f(stac)m(k)h(are)f +(also)h(visible)g(as)f(the)g(v)-5 b(alue)36 b(of)g(the)g +Ft(DIRSTACK)e Fu(shell)150 2432 y(v)-5 b(ariable.)150 +2642 y Fk(6.8.1)63 b(Directory)40 b(Stac)m(k)g(Builtins)150 +2819 y Ft(dirs)870 2959 y(dirs)47 b([-clpv])e([+)p Fj(N)i +Ft(|)h(-)p Fj(N)p Ft(])630 3099 y Fu(Displa)m(y)35 b(the)f(list)g(of)g +(curren)m(tly)g(remem)m(b)s(ered)f(directories.)51 b(Directories)36 +b(are)e(added)f(to)630 3209 y(the)28 b(list)h(with)f(the)g +Ft(pushd)f Fu(command;)i(the)f Ft(popd)f Fu(command)h(remo)m(v)m(es)h +(directories)g(from)630 3319 y(the)i(list.)41 b(The)30 +b(curren)m(t)g(directory)h(is)f(alw)m(a)m(ys)i(the)f(\014rst)e +(directory)i(in)f(the)h(stac)m(k.)630 3489 y Ft(-c)384 +b Fu(Clears)31 b(the)f(directory)h(stac)m(k)h(b)m(y)e(deleting)h(all)h +(of)e(the)h(elemen)m(ts.)630 3659 y Ft(-l)384 b Fu(Pro)s(duces)31 +b(a)h(listing)h(using)e(full)h(pathnames;)h(the)f(default)g(listing)h +(format)1110 3769 y(uses)d(a)h(tilde)g(to)g(denote)g(the)f(home)h +(directory)-8 b(.)630 3940 y Ft(-p)384 b Fu(Causes)30 +b Ft(dirs)f Fu(to)i(prin)m(t)f(the)h(directory)g(stac)m(k)h(with)e(one) +g(en)m(try)h(p)s(er)e(line.)630 4110 y Ft(-v)384 b Fu(Causes)36 +b Ft(dirs)f Fu(to)i(prin)m(t)f(the)g(directory)h(stac)m(k)h(with)e(one) +h(en)m(try)f(p)s(er)f(line,)1110 4220 y(pre\014xing)30 +b(eac)m(h)h(en)m(try)g(with)f(its)h(index)e(in)i(the)f(stac)m(k.)630 +4390 y Ft(+)p Fj(N)384 b Fu(Displa)m(ys)23 b(the)f Fr(N)10 +b Fu(th)21 b(directory)h(\(coun)m(ting)h(from)e(the)h(left)g(of)g(the)g +(list)g(prin)m(ted)1110 4500 y(b)m(y)30 b Ft(dirs)f Fu(when)h(in)m(v)m +(ok)m(ed)i(without)e(options\),)h(starting)g(with)g(zero.)630 +4670 y Ft(-)p Fj(N)384 b Fu(Displa)m(ys)47 b(the)g Fr(N)10 +b Fu(th)46 b(directory)h(\(coun)m(ting)g(from)f(the)g(righ)m(t)h(of)g +(the)f(list)1110 4780 y(prin)m(ted)25 b(b)m(y)g Ft(dirs)g +Fu(when)f(in)m(v)m(ok)m(ed)j(without)f(options\),)h(starting)g(with)e +(zero.)150 4950 y Ft(popd)870 5090 y(popd)47 b([-n])f([+)p +Fj(N)h Ft(|)h(-)p Fj(N)p Ft(])630 5230 y Fu(When)32 b(no)g(argumen)m +(ts)h(are)g(giv)m(en,)h Ft(popd)d Fu(remo)m(v)m(es)j(the)f(top)f +(directory)h(from)f(the)g(stac)m(k)630 5340 y(and)f(p)s(erforms)e(a)j +Ft(cd)f Fu(to)h(the)f(new)g(top)h(directory)-8 b(.)44 +b(The)31 b(elemen)m(ts)i(are)e(n)m(um)m(b)s(ered)f(from)p eop end -%%Page: 93 99 -TeXDict begin 93 98 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(93)150 299 y Fs(6.8)68 -b(The)45 b(Directory)g(Stac)l(k)150 458 y Fu(The)21 b(directory)h(stac) -m(k)h(is)e(a)h(list)g(of)f(recen)m(tly-visited)j(directories.)39 -b(The)20 b Ft(pushd)g Fu(builtin)h(adds)g(directories)150 -568 y(to)42 b(the)f(stac)m(k)i(as)e(it)h(c)m(hanges)g(the)f(curren)m(t) -g(directory)-8 b(,)45 b(and)40 b(the)i Ft(popd)e Fu(builtin)g(remo)m(v) -m(es)j(sp)s(eci\014ed)150 677 y(directories)29 b(from)f(the)h(stac)m(k) -h(and)d(c)m(hanges)j(the)e(curren)m(t)g(directory)h(to)g(the)g -(directory)f(remo)m(v)m(ed.)41 b(The)150 787 y Ft(dirs)34 -b Fu(builtin)g(displa)m(ys)h(the)g(con)m(ten)m(ts)i(of)e(the)g -(directory)h(stac)m(k.)56 b(The)34 b(curren)m(t)h(directory)g(is)g(alw) -m(a)m(ys)150 897 y(the)c Ft(")p Fu(top)p Ft(")f Fu(of)g(the)h -(directory)g(stac)m(k.)275 1037 y(The)k(con)m(ten)m(ts)i(of)f(the)h -(directory)f(stac)m(k)h(are)f(also)h(visible)g(as)f(the)g(v)-5 -b(alue)36 b(of)g(the)g Ft(DIRSTACK)e Fu(shell)150 1146 -y(v)-5 b(ariable.)150 1351 y Fk(6.8.1)63 b(Directory)40 -b(Stac)m(k)g(Builtins)150 1525 y Ft(dirs)870 1663 y(dirs)47 -b([-clpv])e([+)p Fj(N)i Ft(|)h(-)p Fj(N)p Ft(])630 1800 -y Fu(Displa)m(y)35 b(the)f(list)g(of)g(curren)m(tly)g(remem)m(b)s(ered) -f(directories.)51 b(Directories)36 b(are)e(added)f(to)630 -1909 y(the)28 b(list)h(with)f(the)g Ft(pushd)f Fu(command;)i(the)f -Ft(popd)f Fu(command)h(remo)m(v)m(es)h(directories)g(from)630 -2019 y(the)i(list.)41 b(The)30 b(curren)m(t)g(directory)h(is)f(alw)m(a) -m(ys)i(the)f(\014rst)e(directory)i(in)f(the)h(stac)m(k.)630 -2184 y Ft(-c)384 b Fu(Clears)31 b(the)f(directory)h(stac)m(k)h(b)m(y)e -(deleting)h(all)h(of)e(the)h(elemen)m(ts.)630 2349 y -Ft(-l)384 b Fu(Pro)s(duces)31 b(a)h(listing)h(using)e(full)h -(pathnames;)h(the)f(default)g(listing)h(format)1110 2458 -y(uses)d(a)h(tilde)g(to)g(denote)g(the)f(home)h(directory)-8 -b(.)630 2623 y Ft(-p)384 b Fu(Causes)30 b Ft(dirs)f Fu(to)i(prin)m(t)f -(the)h(directory)g(stac)m(k)h(with)e(one)g(en)m(try)h(p)s(er)e(line.) -630 2788 y Ft(-v)384 b Fu(Causes)36 b Ft(dirs)f Fu(to)i(prin)m(t)f(the) -g(directory)h(stac)m(k)h(with)e(one)h(en)m(try)f(p)s(er)f(line,)1110 -2898 y(pre\014xing)30 b(eac)m(h)h(en)m(try)g(with)f(its)h(index)e(in)i -(the)f(stac)m(k.)630 3063 y Ft(+)p Fj(N)384 b Fu(Displa)m(ys)23 -b(the)f Fr(N)10 b Fu(th)21 b(directory)h(\(coun)m(ting)h(from)e(the)h -(left)g(of)g(the)g(list)g(prin)m(ted)1110 3172 y(b)m(y)30 -b Ft(dirs)f Fu(when)h(in)m(v)m(ok)m(ed)i(without)e(options\),)h -(starting)g(with)g(zero.)630 3337 y Ft(-)p Fj(N)384 b -Fu(Displa)m(ys)47 b(the)g Fr(N)10 b Fu(th)46 b(directory)h(\(coun)m -(ting)g(from)f(the)g(righ)m(t)h(of)g(the)f(list)1110 -3447 y(prin)m(ted)25 b(b)m(y)g Ft(dirs)g Fu(when)f(in)m(v)m(ok)m(ed)j -(without)f(options\),)h(starting)g(with)e(zero.)150 3611 -y Ft(popd)870 3749 y(popd)47 b([-n])f([+)p Fj(N)h Ft(|)h(-)p -Fj(N)p Ft(])630 3886 y Fu(When)32 b(no)g(argumen)m(ts)h(are)g(giv)m -(en,)h Ft(popd)d Fu(remo)m(v)m(es)j(the)f(top)f(directory)h(from)f(the) -g(stac)m(k)630 3995 y(and)f(p)s(erforms)e(a)j Ft(cd)f -Fu(to)h(the)f(new)g(top)h(directory)-8 b(.)44 b(The)31 -b(elemen)m(ts)i(are)e(n)m(um)m(b)s(ered)f(from)630 4105 -y(0)j(starting)g(at)g(the)f(\014rst)g(directory)g(listed)h(with)f -Ft(dirs)p Fu(;)g(that)h(is,)g Ft(popd)e Fu(is)i(equiv)-5 -b(alen)m(t)33 b(to)630 4215 y Ft(popd)c(+0)p Fu(.)630 -4379 y Ft(-n)384 b Fu(Suppresses)27 b(the)j(normal)g(c)m(hange)g(of)g -(directory)g(when)e(remo)m(ving)j(directo-)1110 4489 -y(ries)f(from)g(the)h(stac)m(k,)h(so)f(that)g(only)f(the)h(stac)m(k)g -(is)g(manipulated.)630 4654 y Ft(+)p Fj(N)384 b Fu(Remo)m(v)m(es)22 -b(the)f Fr(N)10 b Fu(th)20 b(directory)g(\(coun)m(ting)i(from)e(the)g -(left)h(of)g(the)f(list)h(prin)m(ted)1110 4763 y(b)m(y)30 -b Ft(dirs)p Fu(\),)g(starting)h(with)f(zero.)630 4928 -y Ft(-)p Fj(N)384 b Fu(Remo)m(v)m(es)46 b(the)g Fr(N)10 -b Fu(th)44 b(directory)h(\(coun)m(ting)h(from)f(the)g(righ)m(t)g(of)g -(the)g(list)1110 5038 y(prin)m(ted)30 b(b)m(y)g Ft(dirs)p -Fu(\),)g(starting)h(with)f(zero.)150 5203 y Ft(pushd)870 -5340 y(pushd)46 b([-n])h([+)p Fj(N)g Ft(|)g Fj(-N)h Ft(|)f -Fj(dir)p Ft(])p eop end -%%Page: 94 100 -TeXDict begin 94 99 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(94)630 299 y(Sa)m(v)m(e)30 +%%Page: 97 103 +TeXDict begin 97 102 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(97)630 299 y(0)33 b(starting)g(at)g +(the)f(\014rst)g(directory)g(listed)h(with)f Ft(dirs)p +Fu(;)g(that)h(is,)g Ft(popd)e Fu(is)i(equiv)-5 b(alen)m(t)33 +b(to)630 408 y Ft(popd)c(+0)p Fu(.)630 570 y Ft(-n)384 +b Fu(Suppresses)27 b(the)j(normal)g(c)m(hange)g(of)g(directory)g(when)e +(remo)m(ving)j(directo-)1110 679 y(ries)f(from)g(the)h(stac)m(k,)h(so)f +(that)g(only)f(the)h(stac)m(k)g(is)g(manipulated.)630 +841 y Ft(+)p Fj(N)384 b Fu(Remo)m(v)m(es)22 b(the)f Fr(N)10 +b Fu(th)20 b(directory)g(\(coun)m(ting)i(from)e(the)g(left)h(of)g(the)f +(list)h(prin)m(ted)1110 950 y(b)m(y)30 b Ft(dirs)p Fu(\),)g(starting)h +(with)f(zero.)630 1111 y Ft(-)p Fj(N)384 b Fu(Remo)m(v)m(es)46 +b(the)g Fr(N)10 b Fu(th)44 b(directory)h(\(coun)m(ting)h(from)f(the)g +(righ)m(t)g(of)g(the)g(list)1110 1221 y(prin)m(ted)30 +b(b)m(y)g Ft(dirs)p Fu(\),)g(starting)h(with)f(zero.)150 +1382 y Ft(pushd)870 1518 y(pushd)46 b([-n])h([+)p Fj(N)g +Ft(|)g Fj(-N)h Ft(|)f Fj(dir)p Ft(])630 1653 y Fu(Sa)m(v)m(e)30 b(the)e(curren)m(t)g(directory)h(on)f(the)h(top)f(of)h(the)f(directory) h(stac)m(k)h(and)e(then)g Ft(cd)f Fu(to)i Fr(dir)p Fu(.)630 -408 y(With)39 b(no)f(argumen)m(ts,)j Ft(pushd)c Fu(exc)m(hanges)j(the)f -(top)f(t)m(w)m(o)i(directories)g(and)d(mak)m(es)j(the)630 -518 y(new)30 b(top)g(the)h(curren)m(t)f(directory)-8 -b(.)630 675 y Ft(-n)384 b Fu(Suppresses)24 b(the)j(normal)f(c)m(hange)h -(of)g(directory)f(when)g(rotating)h(or)f(adding)1110 -784 y(directories)31 b(to)h(the)e(stac)m(k,)i(so)f(that)g(only)f(the)h -(stac)m(k)h(is)e(manipulated.)630 941 y Ft(+)p Fj(N)384 +1763 y(With)39 b(no)f(argumen)m(ts,)j Ft(pushd)c Fu(exc)m(hanges)j(the) +f(top)f(t)m(w)m(o)i(directories)g(and)d(mak)m(es)j(the)630 +1872 y(new)30 b(top)g(the)h(curren)m(t)f(directory)-8 +b(.)630 2033 y Ft(-n)384 b Fu(Suppresses)24 b(the)j(normal)f(c)m(hange) +h(of)g(directory)f(when)g(rotating)h(or)f(adding)1110 +2143 y(directories)31 b(to)h(the)e(stac)m(k,)i(so)f(that)g(only)f(the)h +(stac)m(k)h(is)e(manipulated.)630 2304 y Ft(+)p Fj(N)384 b Fu(Brings)29 b(the)f Fr(N)10 b Fu(th)29 b(directory)g(\(coun)m(ting)h (from)e(the)g(left)i(of)e(the)h(list)g(prin)m(ted)1110 -1051 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the) +2414 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the) f(top)g(of)h(the)f(list)h(b)m(y)f(rotating)i(the)1110 -1160 y(stac)m(k.)630 1317 y Ft(-)p Fj(N)384 b Fu(Brings)23 +2523 y(stac)m(k.)630 2685 y Ft(-)p Fj(N)384 b Fu(Brings)23 b(the)g Fr(N)10 b Fu(th)23 b(directory)h(\(coun)m(ting)g(from)e(the)i -(righ)m(t)f(of)g(the)h(list)f(prin)m(ted)1110 1426 y(b)m(y)34 +(righ)m(t)f(of)g(the)h(list)f(prin)m(ted)1110 2794 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the)f(top)g(of)h -(the)f(list)h(b)m(y)f(rotating)i(the)1110 1536 y(stac)m(k.)630 -1693 y Fj(dir)336 b Fu(Mak)m(es)28 b Fr(dir)33 b Fu(b)s(e)27 +(the)f(list)h(b)m(y)f(rotating)i(the)1110 2904 y(stac)m(k.)630 +3065 y Fj(dir)336 b Fu(Mak)m(es)28 b Fr(dir)33 b Fu(b)s(e)27 b(the)g(top)g(of)g(the)h(stac)m(k,)h(making)e(it)h(the)f(new)g(curren)m -(t)g(direc-)1110 1802 y(tory)k(as)f(if)h(it)g(had)e(b)s(een)h(supplied) +(t)g(direc-)1110 3175 y(tory)k(as)f(if)h(it)g(had)e(b)s(een)h(supplied) f(as)i(an)f(argumen)m(t)h(to)g(the)f Ft(cd)g Fu(builtin.)150 -2040 y Fs(6.9)68 b(Con)l(trolling)47 b(the)e(Prompt)150 -2200 y Fu(The)24 b(v)-5 b(alue)24 b(of)h(the)f(v)-5 b(ariable)25 +3418 y Fs(6.9)68 b(Con)l(trolling)47 b(the)e(Prompt)150 +3578 y Fu(The)24 b(v)-5 b(alue)24 b(of)h(the)f(v)-5 b(ariable)25 b Ft(PROMPT_COMMAND)20 b Fu(is)25 b(examined)f(just)g(b)s(efore)f(Bash) -i(prin)m(ts)e(eac)m(h)j(primary)150 2309 y(prompt.)39 +i(prin)m(ts)e(eac)m(h)j(primary)150 3687 y(prompt.)39 b(If)28 b Ft(PROMPT_COMMAND)d Fu(is)j(set)h(and)f(has)g(a)h(non-n)m (ull)f(v)-5 b(alue,)29 b(then)f(the)h(v)-5 b(alue)29 -b(is)f(executed)i(just)150 2419 y(as)h(if)f(it)h(had)f(b)s(een)f(t)m -(yp)s(ed)h(on)h(the)f(command)g(line.)275 2552 y(In)d(addition,)j(the)f +b(is)f(executed)i(just)150 3797 y(as)h(if)f(it)h(had)f(b)s(een)f(t)m +(yp)s(ed)h(on)h(the)f(command)g(line.)275 3933 y(In)d(addition,)j(the)f (follo)m(wing)h(table)f(describ)s(es)f(the)h(sp)s(ecial)g(c)m (haracters)h(whic)m(h)f(can)f(app)s(ear)g(in)h(the)150 -2661 y(prompt)g(v)-5 b(ariables)32 b Ft(PS1)d Fu(to)i -Ft(PS4)p Fu(:)150 2818 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m -(haracter.)150 2975 y Ft(\\d)384 b Fu(The)30 b(date,)h(in)f -Ft(")p Fu(W)-8 b(eekda)m(y)32 b(Mon)m(th)f(Date)p Ft(")h -Fu(format)f(\(e.g.,)h Ft(")p Fu(T)-8 b(ue)30 b(Ma)m(y)h(26)p -Ft(")p Fu(\).)150 3131 y Ft(\\D{)p Fj(format)p Ft(})630 -3241 y Fu(The)c Fr(format)i Fu(is)f(passed)e(to)i Ft(strftime)p -Fu(\(3\))f(and)f(the)i(result)f(is)g(inserted)g(in)m(to)h(the)g(prompt) -630 3351 y(string;)42 b(an)d(empt)m(y)f Fr(format)j Fu(results)d(in)g -(a)h(lo)s(cale-sp)s(eci\014c)h(time)f(represen)m(tation.)65 -b(The)630 3460 y(braces)31 b(are)f(required.)150 3617 +4043 y(prompt)g(v)-5 b(ariables)32 b Ft(PS0)p Fu(,)d +Ft(PS1)p Fu(,)h Ft(PS2)p Fu(,)g(and)f Ft(PS4)p Fu(:)150 +4205 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m(haracter.)150 +4366 y Ft(\\d)384 b Fu(The)30 b(date,)h(in)f Ft(")p Fu(W)-8 +b(eekda)m(y)32 b(Mon)m(th)f(Date)p Ft(")h Fu(format)f(\(e.g.,)h +Ft(")p Fu(T)-8 b(ue)30 b(Ma)m(y)h(26)p Ft(")p Fu(\).)150 +4527 y Ft(\\D{)p Fj(format)p Ft(})630 4637 y Fu(The)c +Fr(format)i Fu(is)f(passed)e(to)i Ft(strftime)p Fu(\(3\))f(and)f(the)i +(result)f(is)g(inserted)g(in)m(to)h(the)g(prompt)630 +4747 y(string;)42 b(an)d(empt)m(y)f Fr(format)j Fu(results)d(in)g(a)h +(lo)s(cale-sp)s(eci\014c)h(time)f(represen)m(tation.)65 +b(The)630 4856 y(braces)31 b(are)f(required.)150 5017 y Ft(\\e)384 b Fu(An)30 b(escap)s(e)h(c)m(haracter.)150 -3773 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e -(`.'.)150 3930 y Ft(\\H)384 b Fu(The)30 b(hostname.)150 -4087 y Ft(\\j)384 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(jobs)g(curren)m -(tly)h(managed)g(b)m(y)f(the)g(shell.)150 4243 y Ft(\\l)384 -b Fu(The)30 b(basename)h(of)f(the)h(shell's)f(terminal)h(device)g -(name.)150 4400 y Ft(\\n)384 b Fu(A)30 b(newline.)150 -4557 y Ft(\\r)384 b Fu(A)30 b(carriage)i(return.)150 -4713 y Ft(\\s)384 b Fu(The)22 b(name)g(of)h(the)f(shell,)i(the)f -(basename)f(of)h Ft($0)f Fu(\(the)g(p)s(ortion)g(follo)m(wing)i(the)f -(\014nal)e(slash\).)150 4870 y Ft(\\t)384 b Fu(The)30 -b(time,)h(in)f(24-hour)h(HH:MM:SS)g(format.)150 5027 -y Ft(\\T)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(HH:MM:SS)g(format.) -150 5183 y Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(am/pm)f -(format.)150 5340 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f(24-hour)h -(HH:MM)g(format.)p eop end -%%Page: 95 101 -TeXDict begin 95 100 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(95)150 299 y Ft(\\u)384 -b Fu(The)30 b(username)g(of)g(the)h(curren)m(t)f(user.)150 -455 y Ft(\\v)384 b Fu(The)30 b(v)m(ersion)h(of)f(Bash)h(\(e.g.,)h -(2.00\))150 611 y Ft(\\V)384 b Fu(The)30 b(release)i(of)e(Bash,)h(v)m -(ersion)g Ft(+)f Fu(patc)m(hlev)m(el)i(\(e.g.,)h(2.00.0\))150 -766 y Ft(\\w)384 b Fu(The)34 b(curren)m(t)h(w)m(orking)g(directory)-8 -b(,)37 b(with)e Ft($HOME)e Fu(abbreviated)j(with)e(a)h(tilde)h(\(uses)f -(the)630 876 y Ft($PROMPT_DIRTRIM)26 b Fu(v)-5 b(ariable\).)150 -1032 y Ft(\\W)384 b Fu(The)30 b(basename)h(of)f Ft($PWD)p -Fu(,)g(with)g Ft($HOME)f Fu(abbreviated)h(with)g(a)h(tilde.)150 -1188 y Ft(\\!)384 b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f -(command.)150 1343 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m(b)s -(er)f(of)i(this)f(command.)150 1499 y Ft(\\$)384 b Fu(If)30 -b(the)g(e\013ectiv)m(e)j(uid)d(is)g(0,)h Ft(#)p Fu(,)g(otherwise)g -Ft($)p Fu(.)150 1655 y Ft(\\)p Fj(nnn)288 b Fu(The)30 -b(c)m(haracter)i(whose)e(ASCI)s(I)f(co)s(de)h(is)h(the)f(o)s(ctal)i(v) --5 b(alue)31 b Fr(nnn)p Fu(.)150 1811 y Ft(\\\\)384 b -Fu(A)30 b(bac)m(kslash.)150 1967 y Ft(\\[)384 b Fu(Begin)38 -b(a)f(sequence)g(of)g(non-prin)m(ting)g(c)m(haracters.)61 -b(This)36 b(could)h(b)s(e)g(used)f(to)h(em)m(b)s(ed)g(a)630 -2076 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e(prompt.) -150 2232 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f(non-prin)m -(ting)g(c)m(haracters.)275 2388 y(The)25 b(command)h(n)m(um)m(b)s(er)f -(and)h(the)g(history)g(n)m(um)m(b)s(er)f(are)i(usually)f(di\013eren)m -(t:)39 b(the)26 b(history)g(n)m(um)m(b)s(er)150 2497 -y(of)h(a)f(command)h(is)f(its)h(p)s(osition)f(in)g(the)h(history)f +5179 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e +(`.'.)150 5340 y Ft(\\H)384 b Fu(The)30 b(hostname.)p +eop end +%%Page: 98 104 +TeXDict begin 98 103 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(98)150 299 y Ft(\\j)384 +b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(jobs)g(curren)m(tly)h(managed)g(b) +m(y)f(the)g(shell.)150 489 y Ft(\\l)384 b Fu(The)30 b(basename)h(of)f +(the)h(shell's)f(terminal)h(device)g(name.)150 678 y +Ft(\\n)384 b Fu(A)30 b(newline.)150 868 y Ft(\\r)384 +b Fu(A)30 b(carriage)i(return.)150 1058 y Ft(\\s)384 +b Fu(The)22 b(name)g(of)h(the)f(shell,)i(the)f(basename)f(of)h +Ft($0)f Fu(\(the)g(p)s(ortion)g(follo)m(wing)i(the)f(\014nal)e +(slash\).)150 1248 y Ft(\\t)384 b Fu(The)30 b(time,)h(in)f(24-hour)h +(HH:MM:SS)g(format.)150 1437 y Ft(\\T)384 b Fu(The)30 +b(time,)h(in)f(12-hour)h(HH:MM:SS)g(format.)150 1627 +y Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(am/pm)f(format.)150 +1817 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f(24-hour)h(HH:MM)g(format.) +150 2006 y Ft(\\u)384 b Fu(The)30 b(username)g(of)g(the)h(curren)m(t)f +(user.)150 2196 y Ft(\\v)384 b Fu(The)30 b(v)m(ersion)h(of)f(Bash)h +(\(e.g.,)h(2.00\))150 2386 y Ft(\\V)384 b Fu(The)30 b(release)i(of)e +(Bash,)h(v)m(ersion)g Ft(+)f Fu(patc)m(hlev)m(el)i(\(e.g.,)h(2.00.0\)) +150 2576 y Ft(\\w)384 b Fu(The)34 b(curren)m(t)h(w)m(orking)g +(directory)-8 b(,)37 b(with)e Ft($HOME)e Fu(abbreviated)j(with)e(a)h +(tilde)h(\(uses)f(the)630 2685 y Ft($PROMPT_DIRTRIM)26 +b Fu(v)-5 b(ariable\).)150 2875 y Ft(\\W)384 b Fu(The)30 +b(basename)h(of)f Ft($PWD)p Fu(,)g(with)g Ft($HOME)f +Fu(abbreviated)h(with)g(a)h(tilde.)150 3065 y Ft(\\!)384 +b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f(command.)150 +3254 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m(b)s(er)f(of)i(this)f +(command.)150 3444 y Ft(\\$)384 b Fu(If)30 b(the)g(e\013ectiv)m(e)j +(uid)d(is)g(0,)h Ft(#)p Fu(,)g(otherwise)g Ft($)p Fu(.)150 +3634 y Ft(\\)p Fj(nnn)288 b Fu(The)30 b(c)m(haracter)i(whose)e(ASCI)s +(I)f(co)s(de)h(is)h(the)f(o)s(ctal)i(v)-5 b(alue)31 b +Fr(nnn)p Fu(.)150 3824 y Ft(\\\\)384 b Fu(A)30 b(bac)m(kslash.)150 +4013 y Ft(\\[)384 b Fu(Begin)38 b(a)f(sequence)g(of)g(non-prin)m(ting)g +(c)m(haracters.)61 b(This)36 b(could)h(b)s(e)g(used)f(to)h(em)m(b)s(ed) +g(a)630 4123 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e +(prompt.)150 4313 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f +(non-prin)m(ting)g(c)m(haracters.)275 4518 y(The)25 b(command)h(n)m(um) +m(b)s(er)f(and)h(the)g(history)g(n)m(um)m(b)s(er)f(are)i(usually)f +(di\013eren)m(t:)39 b(the)26 b(history)g(n)m(um)m(b)s(er)150 +4627 y(of)h(a)f(command)h(is)f(its)h(p)s(osition)f(in)g(the)h(history)f (list,)i(whic)m(h)f(ma)m(y)g(include)f(commands)g(restored)g(from)150 -2607 y(the)39 b(history)h(\014le)f(\(see)h(Section)g(9.1)h([Bash)e -(History)h(F)-8 b(acilities],)45 b(page)40 b(137\),)j(while)d(the)f -(command)150 2717 y(n)m(um)m(b)s(er)j(is)h(the)h(p)s(osition)f(in)g +4737 y(the)39 b(history)h(\014le)f(\(see)h(Section)g(9.1)h([Bash)e +(History)h(F)-8 b(acilities],)45 b(page)40 b(141\),)j(while)d(the)f +(command)150 4846 y(n)m(um)m(b)s(er)j(is)h(the)h(p)s(osition)f(in)g (the)g(sequence)h(of)f(commands)g(executed)h(during)e(the)i(curren)m(t) -f(shell)150 2826 y(session.)275 2959 y(After)35 b(the)g(string)g(is)g +f(shell)150 4956 y(session.)275 5121 y(After)35 b(the)g(string)g(is)g (deco)s(ded,)h(it)f(is)g(expanded)f(via)i(parameter)f(expansion,)i -(command)d(substi-)150 3068 y(tution,)k(arithmetic)f(expansion,)g(and)e +(command)d(substi-)150 5230 y(tution,)k(arithmetic)f(expansion,)g(and)e (quote)h(remo)m(v)-5 b(al,)39 b(sub)5 b(ject)35 b(to)i(the)f(v)-5 -b(alue)36 b(of)g(the)g Ft(promptvars)150 3178 y Fu(shell)31 -b(option)f(\(see)i(Section)f(4.2)g([Bash)g(Builtins],)g(page)g(49\).) -150 3415 y Fs(6.10)68 b(The)45 b(Restricted)h(Shell)150 -3575 y Fu(If)34 b(Bash)g(is)g(started)g(with)g(the)g(name)h -Ft(rbash)p Fu(,)e(or)h(the)h Ft(--restricted)30 b Fu(or)k -Ft(-r)g Fu(option)g(is)g(supplied)f(at)150 3684 y(in)m(v)m(o)s(cation,) -d(the)d(shell)g(b)s(ecomes)h(restricted.)40 b(A)27 b(restricted)h -(shell)f(is)g(used)f(to)i(set)f(up)f(an)h(en)m(vironmen)m(t)150 -3794 y(more)g(con)m(trolled)i(than)e(the)g(standard)g(shell.)40 -b(A)27 b(restricted)h(shell)f(b)s(eha)m(v)m(es)h(iden)m(tically)h(to)f -Ft(bash)e Fu(with)150 3903 y(the)31 b(exception)g(that)g(the)g(follo)m -(wing)h(are)e(disallo)m(w)m(ed)i(or)e(not)h(p)s(erformed:)225 -4036 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g(the)f -Ft(cd)g Fu(builtin.)225 4169 y Fq(\017)60 b Fu(Setting)31 +b(alue)36 b(of)g(the)g Ft(promptvars)150 5340 y Fu(shell)31 +b(option)f(\(see)i(Section)f(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g +(65\).)p eop end +%%Page: 99 105 +TeXDict begin 99 104 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(99)150 299 y Fs(6.10)68 +b(The)45 b(Restricted)h(Shell)150 458 y Fu(If)34 b(Bash)g(is)g(started) +g(with)g(the)g(name)h Ft(rbash)p Fu(,)e(or)h(the)h Ft(--restricted)30 +b Fu(or)k Ft(-r)g Fu(option)g(is)g(supplied)f(at)150 +568 y(in)m(v)m(o)s(cation,)d(the)d(shell)g(b)s(ecomes)h(restricted.)40 +b(A)27 b(restricted)h(shell)f(is)g(used)f(to)i(set)f(up)f(an)h(en)m +(vironmen)m(t)150 677 y(more)g(con)m(trolled)i(than)e(the)g(standard)g +(shell.)40 b(A)27 b(restricted)h(shell)f(b)s(eha)m(v)m(es)h(iden)m +(tically)h(to)f Ft(bash)e Fu(with)150 787 y(the)31 b(exception)g(that)g +(the)g(follo)m(wing)h(are)e(disallo)m(w)m(ed)i(or)e(not)h(p)s +(erformed:)225 931 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g +(the)f Ft(cd)g Fu(builtin.)225 1070 y Fq(\017)60 b Fu(Setting)31 b(or)f(unsetting)h(the)g(v)-5 b(alues)30 b(of)h(the)f Ft(SHELL)p Fu(,)g Ft(PATH)p Fu(,)f Ft(ENV)p Fu(,)h(or)g -Ft(BASH_ENV)e Fu(v)-5 b(ariables.)225 4301 y Fq(\017)60 +Ft(BASH_ENV)e Fu(v)-5 b(ariables.)225 1210 y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(command)g(names)g(con)m(taining)i(slashes.)225 -4434 y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(a)h(\014lename)f(con)m +1349 y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(a)h(\014lename)f(con)m (taining)i(a)f(slash)f(as)h(an)f(argumen)m(t)h(to)g(the)f -Ft(.)h Fu(builtin)e(command.)225 4567 y Fq(\017)60 b +Ft(.)h Fu(builtin)e(command.)225 1488 y Fq(\017)60 b Fu(Sp)s(ecifying)32 b(a)g(\014lename)h(con)m(taining)h(a)e(slash)g(as)h (an)f(argumen)m(t)h(to)g(the)f Ft(-p)g Fu(option)h(to)g(the)f -Ft(hash)330 4676 y Fu(builtin)e(command.)225 4809 y Fq(\017)60 +Ft(hash)330 1598 y Fu(builtin)e(command.)225 1737 y Fq(\017)60 b Fu(Imp)s(orting)30 b(function)g(de\014nitions)g(from)f(the)i(shell)g -(en)m(vironmen)m(t)g(at)g(startup.)225 4942 y Fq(\017)60 +(en)m(vironmen)m(t)g(at)g(startup.)225 1876 y Fq(\017)60 b Fu(P)m(arsing)31 b(the)f(v)-5 b(alue)31 b(of)g Ft(SHELLOPTS)d Fu(from)h(the)i(shell)g(en)m(vironmen)m(t)g(at)g(startup.)225 -5075 y Fq(\017)60 b Fu(Redirecting)31 b(output)f(using)g(the)h(`)p +2016 y Fq(\017)60 b Fu(Redirecting)31 b(output)f(using)g(the)h(`)p Ft(>)p Fu(',)g(`)p Ft(>|)p Fu(',)f(`)p Ft(<>)p Fu(',)h(`)p Ft(>&)p Fu(',)f(`)p Ft(&>)p Fu(',)h(and)e(`)p Ft(>>)p -Fu(')i(redirection)g(op)s(erators.)225 5207 y Fq(\017)60 +Fu(')i(redirection)g(op)s(erators.)225 2155 y Fq(\017)60 b Fu(Using)31 b(the)f Ft(exec)f Fu(builtin)h(to)h(replace)h(the)e -(shell)h(with)f(another)h(command.)225 5340 y Fq(\017)60 +(shell)h(with)f(another)h(command.)225 2294 y Fq(\017)60 b Fu(Adding)24 b(or)g(deleting)i(builtin)e(commands)g(with)h(the)f Ft(-f)g Fu(and)g Ft(-d)g Fu(options)h(to)h(the)e Ft(enable)f -Fu(builtin.)p eop end -%%Page: 96 102 -TeXDict begin 96 101 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(96)225 299 y Fq(\017)60 -b Fu(Using)31 b(the)f Ft(enable)f Fu(builtin)h(command)g(to)h(enable)g -(disabled)f(shell)g(builtins.)225 434 y Fq(\017)60 b -Fu(Sp)s(ecifying)30 b(the)g Ft(-p)g Fu(option)h(to)g(the)g -Ft(command)d Fu(builtin.)225 569 y Fq(\017)60 b Fu(T)-8 -b(urning)29 b(o\013)i(restricted)g(mo)s(de)f(with)g(`)p -Ft(set)g(+r)p Fu(')g(or)g(`)p Ft(set)g(+o)g(restricted)p -Fu('.)275 729 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m(y) -g(startup)f(\014les)g(are)h(read.)275 865 y(When)j(a)i(command)e(that)i -(is)f(found)f(to)h(b)s(e)g(a)g(shell)g(script)g(is)g(executed)h(\(see)g -(Section)g(3.8)g([Shell)150 974 y(Scripts],)25 b(page)e(40\),)j -Ft(rbash)c Fu(turns)g(o\013)i(an)m(y)f(restrictions)h(in)f(the)g(shell) -h(spa)m(wned)e(to)i(execute)g(the)g(script.)150 1216 -y Fs(6.11)68 b(Bash)45 b(POSIX)f(Mo)t(de)150 1376 y Fu(Starting)39 -b(Bash)f(with)g(the)h Ft(--posix)d Fu(command-line)j(option)g(or)f -(executing)h(`)p Ft(set)30 b(-o)g(posix)p Fu(')37 b(while)150 -1485 y(Bash)26 b(is)g(running)e(will)j(cause)f(Bash)g(to)h(conform)f -(more)g(closely)h(to)g(the)f Fm(posix)f Fu(standard)g(b)m(y)h(c)m -(hanging)150 1595 y(the)31 b(b)s(eha)m(vior)f(to)h(matc)m(h)g(that)g -(sp)s(eci\014ed)f(b)m(y)g Fm(posix)g Fu(in)g(areas)h(where)f(the)h -(Bash)f(default)h(di\013ers.)275 1730 y(When)f(in)m(v)m(ok)m(ed)h(as)g -Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g Fm(posix)e Fu(mo)s(de)h(after)h -(reading)g(the)f(startup)g(\014les.)275 1866 y(The)f(follo)m(wing)j -(list)f(is)g(what's)f(c)m(hanged)h(when)e(`)p Fm(posix)h -Fu(mo)s(de')h(is)f(in)g(e\013ect:)199 2001 y(1.)61 b(When)28 +Fu(builtin.)225 2433 y Fq(\017)60 b Fu(Using)31 b(the)f +Ft(enable)f Fu(builtin)h(command)g(to)h(enable)g(disabled)f(shell)g +(builtins.)225 2573 y Fq(\017)60 b Fu(Sp)s(ecifying)30 +b(the)g Ft(-p)g Fu(option)h(to)g(the)g Ft(command)d Fu(builtin.)225 +2712 y Fq(\017)60 b Fu(T)-8 b(urning)29 b(o\013)i(restricted)g(mo)s(de) +f(with)g(`)p Ft(set)g(+r)p Fu(')g(or)g(`)p Ft(set)g(+o)g(restricted)p +Fu('.)275 2886 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m +(y)g(startup)f(\014les)g(are)h(read.)275 3030 y(When)j(a)i(command)e +(that)i(is)f(found)f(to)h(b)s(e)g(a)g(shell)g(script)g(is)g(executed)h +(\(see)g(Section)g(3.8)g([Shell)150 3139 y(Scripts],)25 +b(page)e(41\),)j Ft(rbash)c Fu(turns)g(o\013)i(an)m(y)f(restrictions)h +(in)f(the)g(shell)h(spa)m(wned)e(to)i(execute)g(the)g(script.)150 +3394 y Fs(6.11)68 b(Bash)45 b(POSIX)f(Mo)t(de)150 3554 +y Fu(Starting)39 b(Bash)f(with)g(the)h Ft(--posix)d Fu(command-line)j +(option)g(or)f(executing)h(`)p Ft(set)30 b(-o)g(posix)p +Fu(')37 b(while)150 3663 y(Bash)26 b(is)g(running)e(will)j(cause)f +(Bash)g(to)h(conform)f(more)g(closely)h(to)g(the)f Fm(posix)f +Fu(standard)g(b)m(y)h(c)m(hanging)150 3773 y(the)31 b(b)s(eha)m(vior)f +(to)h(matc)m(h)g(that)g(sp)s(eci\014ed)f(b)m(y)g Fm(posix)g +Fu(in)g(areas)h(where)f(the)h(Bash)f(default)h(di\013ers.)275 +3917 y(When)f(in)m(v)m(ok)m(ed)h(as)g Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g +Fm(posix)e Fu(mo)s(de)h(after)h(reading)g(the)f(startup)g(\014les.)275 +4061 y(The)f(follo)m(wing)j(list)f(is)g(what's)f(c)m(hanged)h(when)e(`) +p Fm(posix)h Fu(mo)s(de')h(is)f(in)g(e\013ect:)199 4205 +y(1.)61 b(Bash)31 b(ensures)e(that)i(the)f Ft(POSIXLY_CORRECT)d +Fu(v)-5 b(ariable)31 b(is)f(set.)199 4345 y(2.)61 b(When)28 b(a)i(command)e(in)g(the)h(hash)f(table)i(no)e(longer)h(exists,)h(Bash) f(will)g(re-searc)m(h)h Ft($PATH)d Fu(to)i(\014nd)330 -2111 y(the)i(new)e(lo)s(cation.)43 b(This)29 b(is)i(also)g(a)m(v)-5 +4454 y(the)i(new)e(lo)s(cation.)43 b(This)29 b(is)i(also)g(a)m(v)-5 b(ailable)33 b(with)d(`)p Ft(shopt)f(-s)h(checkhash)p -Fu('.)199 2246 y(2.)61 b(The)42 b(message)h(prin)m(ted)e(b)m(y)h(the)g +Fu('.)199 4593 y(3.)61 b(The)42 b(message)h(prin)m(ted)e(b)m(y)h(the)g (job)g(con)m(trol)i(co)s(de)e(and)f(builtins)h(when)f(a)h(job)g(exits)h -(with)f(a)330 2355 y(non-zero)31 b(status)g(is)f(`Done\(status\)'.)199 -2490 y(3.)61 b(The)40 b(message)h(prin)m(ted)f(b)m(y)g(the)h(job)f(con) +(with)f(a)330 4703 y(non-zero)31 b(status)g(is)f(`Done\(status\)'.)199 +4842 y(4.)61 b(The)40 b(message)h(prin)m(ted)f(b)m(y)g(the)h(job)f(con) m(trol)h(co)s(de)g(and)f(builtins)f(when)h(a)g(job)g(is)h(stopp)s(ed)e -(is)330 2600 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31 +(is)330 4952 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31 b(where)f Fr(signame)36 b Fu(is,)31 b(for)f(example,)h -Ft(SIGTSTP)p Fu(.)199 2735 y(4.)61 b(Alias)31 b(expansion)g(is)f(alw)m +Ft(SIGTSTP)p Fu(.)199 5091 y(5.)61 b(Alias)31 b(expansion)g(is)f(alw)m (a)m(ys)i(enabled,)e(ev)m(en)i(in)e(non-in)m(teractiv)m(e)j(shells.)199 -2870 y(5.)61 b(Reserv)m(ed)40 b(w)m(ords)g(app)s(earing)f(in)h(a)g(con) +5230 y(6.)61 b(Reserv)m(ed)40 b(w)m(ords)g(app)s(earing)f(in)h(a)g(con) m(text)i(where)d(reserv)m(ed)h(w)m(ords)f(are)i(recognized)g(do)f(not) -330 2979 y(undergo)30 b(alias)h(expansion.)199 3114 y(6.)61 +330 5340 y(undergo)30 b(alias)h(expansion.)p eop end +%%Page: 100 106 +TeXDict begin 100 105 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(100)199 299 y(7.)61 b(The)38 b Fm(posix)h Ft(PS1)f Fu(and)g Ft(PS2)g Fu(expansions)g(of)i (`)p Ft(!)p Fu(')f(to)g(the)g(history)g(n)m(um)m(b)s(er)f(and)g(`)p -Ft(!!)p Fu(')h(to)g(`)p Ft(!)p Fu(')h(are)330 3224 y(enabled,)26 +Ft(!!)p Fu(')h(to)g(`)p Ft(!)p Fu(')h(are)330 408 y(enabled,)26 b(and)f(parameter)g(expansion)g(is)g(p)s(erformed)e(on)i(the)g(v)-5 b(alues)25 b(of)g Ft(PS1)f Fu(and)h Ft(PS2)f Fu(regardless)330 -3333 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c -Fu(option.)199 3468 y(7.)61 b(The)30 b Fm(posix)g Fu(startup)f(\014les) -i(are)g(executed)g(\()p Ft($ENV)p Fu(\))f(rather)g(than)g(the)h(normal) -f(Bash)g(\014les.)199 3603 y(8.)61 b(Tilde)30 b(expansion)g(is)f(only)h +518 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c +Fu(option.)199 651 y(8.)61 b(The)30 b Fm(posix)g Fu(startup)f(\014les)i +(are)g(executed)g(\()p Ft($ENV)p Fu(\))f(rather)g(than)g(the)h(normal)f +(Bash)g(\014les.)199 783 y(9.)61 b(Tilde)30 b(expansion)g(is)f(only)h (p)s(erformed)f(on)h(assignmen)m(ts)g(preceding)g(a)g(command)g(name,)g -(rather)330 3713 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h -(on)e(the)h(line.)199 3848 y(9.)61 b(The)30 b(default)g(history)h -(\014le)f(is)h Ft(~/.sh_history)26 b Fu(\(this)31 b(is)f(the)h(default) -g(v)-5 b(alue)30 b(of)h Ft($HISTFILE)p Fu(\).)154 3982 -y(10.)61 b(Redirection)25 b(op)s(erators)f(do)g(not)g(p)s(erform)f -(\014lename)h(expansion)g(on)g(the)g(w)m(ord)f(in)h(the)g(redirection) -330 4092 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154 -4227 y(11.)61 b(Redirection)31 b(op)s(erators)g(do)f(not)h(p)s(erform)e +(rather)330 893 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h(on) +e(the)h(line.)154 1026 y(10.)61 b(The)30 b(default)g(history)h(\014le)f +(is)h Ft(~/.sh_history)26 b Fu(\(this)31 b(is)f(the)h(default)g(v)-5 +b(alue)30 b(of)h Ft($HISTFILE)p Fu(\).)154 1158 y(11.)61 +b(Redirection)25 b(op)s(erators)f(do)g(not)g(p)s(erform)f(\014lename)h +(expansion)g(on)g(the)g(w)m(ord)f(in)h(the)g(redirection)330 +1268 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154 +1401 y(12.)61 b(Redirection)31 b(op)s(erators)g(do)f(not)h(p)s(erform)e (w)m(ord)h(splitting)h(on)f(the)h(w)m(ord)f(in)g(the)g(redirection.)154 -4362 y(12.)61 b(F)-8 b(unction)35 b(names)g(m)m(ust)f(b)s(e)g(v)-5 +1533 y(13.)61 b(F)-8 b(unction)35 b(names)g(m)m(ust)f(b)s(e)g(v)-5 b(alid)35 b(shell)f Ft(name)p Fu(s.)52 b(That)34 b(is,)i(they)f(ma)m(y) -g(not)g(con)m(tain)g(c)m(haracters)330 4472 y(other)e(than)g(letters,)h +g(not)g(con)m(tain)g(c)m(haracters)330 1643 y(other)e(than)g(letters,)h (digits,)h(and)d(underscores,)h(and)f(ma)m(y)h(not)g(start)h(with)e(a)h -(digit.)49 b(Declaring)330 4581 y(a)31 b(function)f(with)g(an)g(in)m(v) +(digit.)49 b(Declaring)330 1752 y(a)31 b(function)f(with)g(an)g(in)m(v) -5 b(alid)31 b(name)g(causes)f(a)h(fatal)h(syn)m(tax)f(error)f(in)g -(non-in)m(teractiv)m(e)j(shells.)154 4716 y(13.)61 b(F)-8 +(non-in)m(teractiv)m(e)j(shells.)154 1885 y(14.)61 b(F)-8 b(unction)31 b(names)f(ma)m(y)h(not)g(b)s(e)f(the)g(same)h(as)g(one)f (of)h(the)f Fm(posix)g Fu(sp)s(ecial)h(builtins.)154 -4851 y(14.)61 b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e +2018 y(15.)61 b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e (b)s(efore)h(shell)h(functions)f(during)f(command)h(lo)s(okup.)154 -4986 y(15.)61 b(When)48 b(prin)m(ting)g(shell)h(function)f +2150 y(16.)61 b(When)48 b(prin)m(ting)g(shell)h(function)f (de\014nitions)g(\(e.g.,)55 b(b)m(y)48 b Ft(type)p Fu(\),)k(Bash)d(do)s -(es)f(not)h(prin)m(t)f(the)330 5095 y Ft(function)28 -b Fu(k)m(eyw)m(ord.)154 5230 y(16.)61 b(Literal)28 b(tildes)g(that)f +(es)f(not)h(prin)m(t)f(the)330 2260 y Ft(function)28 +b Fu(k)m(eyw)m(ord.)154 2393 y(17.)61 b(Literal)28 b(tildes)g(that)f (app)s(ear)f(as)i(the)f(\014rst)f(c)m(haracter)j(in)d(elemen)m(ts)j(of) e(the)g Ft(PATH)f Fu(v)-5 b(ariable)27 b(are)h(not)330 -5340 y(expanded)i(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)j(under)d(Section) -i(3.5.2)h([Tilde)f(Expansion],)f(page)h(22.)p eop end -%%Page: 97 103 -TeXDict begin 97 102 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(97)154 299 y(17.)61 -b(The)29 b Ft(time)g Fu(reserv)m(ed)h(w)m(ord)g(ma)m(y)g(b)s(e)g(used)f -(b)m(y)h(itself)g(as)g(a)h(command.)40 b(When)30 b(used)f(in)g(this)h -(w)m(a)m(y)-8 b(,)330 408 y(it)33 b(displa)m(ys)g(timing)g(statistics)h -(for)e(the)h(shell)g(and)f(its)g(completed)i(c)m(hildren.)47 -b(The)32 b Ft(TIMEFORMAT)330 518 y Fu(v)-5 b(ariable)31 -b(con)m(trols)h(the)e(format)h(of)g(the)f(timing)h(information.)154 -646 y(18.)61 b(When)33 b(parsing)g(and)f(expanding)h(a)h($)p -Fi({)6 b Fu(.)22 b(.)h(.)11 b Fi(})33 b Fu(expansion)g(that)h(app)s -(ears)f(within)f(double)h(quotes,)330 756 y(single)42 -b(quotes)g(are)g(no)g(longer)g(sp)s(ecial)g(and)f(cannot)i(b)s(e)e -(used)g(to)h(quote)g(a)g(closing)h(brace)f(or)330 865 -y(other)31 b(sp)s(ecial)h(c)m(haracter,)i(unless)c(the)i(op)s(erator)f -(is)g(one)h(of)f(those)h(de\014ned)e(to)i(p)s(erform)e(pattern)330 -975 y(remo)m(v)-5 b(al.)42 b(In)30 b(this)g(case,)i(they)e(do)g(not)h -(ha)m(v)m(e)h(to)f(app)s(ear)e(as)i(matc)m(hed)g(pairs.)154 -1103 y(19.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h +2502 y(expanded)i(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)j(under)d(Section) +i(3.5.2)h([Tilde)f(Expansion],)f(page)h(23.)154 2635 +y(18.)61 b(The)29 b Ft(time)g Fu(reserv)m(ed)h(w)m(ord)g(ma)m(y)g(b)s +(e)g(used)f(b)m(y)h(itself)g(as)g(a)h(command.)40 b(When)30 +b(used)f(in)g(this)h(w)m(a)m(y)-8 b(,)330 2744 y(it)33 +b(displa)m(ys)g(timing)g(statistics)h(for)e(the)h(shell)g(and)f(its)g +(completed)i(c)m(hildren.)47 b(The)32 b Ft(TIMEFORMAT)330 +2854 y Fu(v)-5 b(ariable)31 b(con)m(trols)h(the)e(format)h(of)g(the)f +(timing)h(information.)154 2987 y(19.)61 b(When)33 b(parsing)g(and)f +(expanding)h(a)h($)p Fi({)6 b Fu(.)22 b(.)h(.)11 b Fi(})33 +b Fu(expansion)g(that)h(app)s(ears)f(within)f(double)h(quotes,)330 +3096 y(single)42 b(quotes)g(are)g(no)g(longer)g(sp)s(ecial)g(and)f +(cannot)i(b)s(e)e(used)g(to)h(quote)g(a)g(closing)h(brace)f(or)330 +3206 y(other)31 b(sp)s(ecial)h(c)m(haracter,)i(unless)c(the)i(op)s +(erator)f(is)g(one)h(of)f(those)h(de\014ned)e(to)i(p)s(erform)e +(pattern)330 3315 y(remo)m(v)-5 b(al.)42 b(In)30 b(this)g(case,)i(they) +e(do)g(not)h(ha)m(v)m(e)h(to)f(app)s(ear)e(as)i(matc)m(hed)g(pairs.)154 +3448 y(20.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h Ft(time)d Fu(as)i(a)g(reserv)m(ed)f(w)m(ord)g(if)h(the)f(next)h(tok)m -(en)h(b)s(egins)d(with)i(a)330 1212 y(`)p Ft(-)p Fu('.)154 -1340 y(20.)61 b(The)30 b(`)p Ft(!)p Fu(')h(c)m(haracter)h(do)s(es)e +(en)h(b)s(egins)d(with)i(a)330 3558 y(`)p Ft(-)p Fu('.)154 +3690 y(21.)61 b(The)30 b(`)p Ft(!)p Fu(')h(c)m(haracter)h(do)s(es)e (not)h(in)m(tro)s(duce)g(history)f(expansion)h(within)f(a)h -(double-quoted)g(string,)330 1450 y(ev)m(en)g(if)f(the)h -Ft(histexpand)d Fu(option)i(is)h(enabled.)154 1577 y(21.)61 +(double-quoted)g(string,)330 3800 y(ev)m(en)g(if)f(the)h +Ft(histexpand)d Fu(option)i(is)h(enabled.)154 3933 y(22.)61 b(If)24 b(a)g Fm(posix)g Fu(sp)s(ecial)h(builtin)f(returns)f(an)h (error)g(status,)i(a)e(non-in)m(teractiv)m(e)j(shell)e(exits.)39 -b(The)24 b(fatal)330 1687 y(errors)30 b(are)h(those)f(listed)h(in)f +b(The)24 b(fatal)330 4042 y(errors)30 b(are)h(those)f(listed)h(in)f (the)h Fm(posix)e Fu(standard,)h(and)g(include)g(things)g(lik)m(e)i -(passing)e(incorrect)330 1797 y(options,)43 b(redirection)d(errors,)i +(passing)e(incorrect)330 4152 y(options,)43 b(redirection)d(errors,)i (v)-5 b(ariable)41 b(assignmen)m(t)g(errors)e(for)g(assignmen)m(ts)i -(preceding)f(the)330 1906 y(command)30 b(name,)h(and)f(so)g(on.)154 -2034 y(22.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e +(preceding)f(the)330 4261 y(command)30 b(name,)h(and)f(so)g(on.)154 +4394 y(23.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e (an)h(error)g(status)g(if)g(a)g(v)-5 b(ariable)32 b(assignmen)m(t)g -(error)e(o)s(ccurs)330 2144 y(when)38 b(no)h(command)g(name)g(follo)m +(error)e(o)s(ccurs)330 4504 y(when)38 b(no)h(command)g(name)g(follo)m (ws)i(the)e(assignmen)m(t)h(statemen)m(ts.)69 b(A)39 -b(v)-5 b(ariable)40 b(assignmen)m(t)330 2253 y(error)30 +b(v)-5 b(ariable)40 b(assignmen)m(t)330 4613 y(error)30 b(o)s(ccurs,)g(for)g(example,)i(when)d(trying)i(to)g(assign)f(a)h(v)-5 -b(alue)31 b(to)g(a)g(readonly)f(v)-5 b(ariable.)154 2381 -y(23.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e(an)h +b(alue)31 b(to)g(a)g(readonly)f(v)-5 b(ariable.)154 4746 +y(24.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e(an)h (error)g(status)g(if)g(a)g(v)-5 b(ariable)32 b(assignmen)m(t)g(error)e -(o)s(ccurs)330 2491 y(in)g(an)g(assignmen)m(t)i(statemen)m(t)g +(o)s(ccurs)330 4855 y(in)g(an)g(assignmen)m(t)i(statemen)m(t)g (preceding)e(a)h(sp)s(ecial)g(builtin,)f(but)g(not)g(with)h(an)m(y)f -(other)h(simple)330 2600 y(command.)154 2728 y(24.)61 +(other)h(simple)330 4965 y(command.)154 5098 y(25.)61 b(A)43 b(non-in)m(teractiv)m(e)i(shell)e(exits)h(with)f(an)f(error)h (status)g(if)g(the)g(iteration)h(v)-5 b(ariable)44 b(in)f(a)g -Ft(for)330 2838 y Fu(statemen)m(t)32 b(or)f(the)f(selection)i(v)-5 +Ft(for)330 5207 y Fu(statemen)m(t)32 b(or)f(the)f(selection)i(v)-5 b(ariable)32 b(in)e(a)g Ft(select)f Fu(statemen)m(t)j(is)f(a)f -(readonly)h(v)-5 b(ariable.)154 2966 y(25.)61 b(Non-in)m(teractiv)m(e) +(readonly)h(v)-5 b(ariable.)154 5340 y(26.)61 b(Non-in)m(teractiv)m(e) 34 b(shells)c(exit)h(if)g Fr(\014lename)k Fu(in)30 b -Ft(.)g Fr(\014lename)36 b Fu(is)31 b(not)f(found.)154 -3093 y(26.)61 b(Non-in)m(teractiv)m(e)41 b(shells)d(exit)h(if)f(a)g -(syn)m(tax)g(error)g(in)f(an)h(arithmetic)h(expansion)f(results)f(in)h -(an)330 3203 y(in)m(v)-5 b(alid)31 b(expression.)154 -3331 y(27.)61 b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g(a)f -(parameter)h(expansion)g(error)f(o)s(ccurs.)154 3459 -y(28.)61 b(Non-in)m(teractiv)m(e)27 b(shells)c(exit)i(if)e(there)h(is)f -(a)h(syn)m(tax)g(error)f(in)g(a)h(script)f(read)g(with)h(the)f -Ft(.)g Fu(or)h Ft(source)330 3568 y Fu(builtins,)30 b(or)g(in)g(a)h -(string)g(pro)s(cessed)e(b)m(y)i(the)f Ft(eval)f Fu(builtin.)154 -3696 y(29.)61 b(Pro)s(cess)30 b(substitution)g(is)h(not)f(a)m(v)-5 -b(ailable.)154 3824 y(30.)61 b(While)32 b(v)-5 b(ariable)32 -b(indirection)f(is)g(a)m(v)-5 b(ailable,)34 b(it)d(ma)m(y)h(not)f(b)s -(e)g(applied)g(to)g(the)h(`)p Ft(#)p Fu(')f(and)f(`)p -Ft(?)p Fu(')h(sp)s(ecial)330 3934 y(parameters.)154 4061 -y(31.)61 b(When)28 b(expanding)g(the)g(`)p Ft(*)p Fu(')g(sp)s(ecial)h -(parameter)f(in)g(a)h(pattern)f(con)m(text)i(where)e(the)g(expansion)g -(is)330 4171 y(double-quoted)i(do)s(es)g(not)h(treat)h(the)e -Ft($*)g Fu(as)h(if)f(it)h(w)m(ere)g(double-quoted.)154 -4299 y(32.)61 b(Assignmen)m(t)23 b(statemen)m(ts)h(preceding)e +Ft(.)g Fr(\014lename)36 b Fu(is)31 b(not)f(found.)p eop +end +%%Page: 101 107 +TeXDict begin 101 106 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(101)154 299 y(27.)61 +b(Non-in)m(teractiv)m(e)41 b(shells)d(exit)h(if)f(a)g(syn)m(tax)g +(error)g(in)f(an)h(arithmetic)h(expansion)f(results)f(in)h(an)330 +408 y(in)m(v)-5 b(alid)31 b(expression.)154 541 y(28.)61 +b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g(a)f(parameter)h +(expansion)g(error)f(o)s(ccurs.)154 674 y(29.)61 b(Non-in)m(teractiv)m +(e)27 b(shells)c(exit)i(if)e(there)h(is)f(a)h(syn)m(tax)g(error)f(in)g +(a)h(script)f(read)g(with)h(the)f Ft(.)g Fu(or)h Ft(source)330 +783 y Fu(builtins,)30 b(or)g(in)g(a)h(string)g(pro)s(cessed)e(b)m(y)i +(the)f Ft(eval)f Fu(builtin.)154 916 y(30.)61 b(Pro)s(cess)30 +b(substitution)g(is)h(not)f(a)m(v)-5 b(ailable.)154 1049 +y(31.)61 b(While)32 b(v)-5 b(ariable)32 b(indirection)f(is)g(a)m(v)-5 +b(ailable,)34 b(it)d(ma)m(y)h(not)f(b)s(e)g(applied)g(to)g(the)h(`)p +Ft(#)p Fu(')f(and)f(`)p Ft(?)p Fu(')h(sp)s(ecial)330 +1158 y(parameters.)154 1291 y(32.)61 b(When)28 b(expanding)g(the)g(`)p +Ft(*)p Fu(')g(sp)s(ecial)h(parameter)f(in)g(a)h(pattern)f(con)m(text)i +(where)e(the)g(expansion)g(is)330 1401 y(double-quoted)i(do)s(es)g(not) +h(treat)h(the)e Ft($*)g Fu(as)h(if)f(it)h(w)m(ere)g(double-quoted.)154 +1533 y(33.)61 b(Assignmen)m(t)23 b(statemen)m(ts)h(preceding)e Fm(posix)f Fu(sp)s(ecial)i(builtins)f(p)s(ersist)g(in)f(the)i(shell)f -(en)m(vironmen)m(t)330 4408 y(after)31 b(the)f(builtin)g(completes.)154 -4536 y(33.)61 b(Assignmen)m(t)35 b(statemen)m(ts)h(preceding)f(shell)f +(en)m(vironmen)m(t)330 1643 y(after)31 b(the)f(builtin)g(completes.)154 +1775 y(34.)61 b(Assignmen)m(t)35 b(statemen)m(ts)h(preceding)f(shell)f (function)g(calls)i(p)s(ersist)e(in)g(the)h(shell)f(en)m(vironmen)m(t) -330 4646 y(after)d(the)f(function)h(returns,)e(as)i(if)f(a)h +330 1885 y(after)d(the)f(function)h(returns,)e(as)i(if)f(a)h Fm(posix)e Fu(sp)s(ecial)i(builtin)f(command)g(had)g(b)s(een)g -(executed.)154 4774 y(34.)61 b(The)31 b Ft(command)e +(executed.)154 2018 y(35.)61 b(The)31 b Ft(command)e Fu(builtin)i(do)s(es)g(not)h(prev)m(en)m(t)f(builtins)g(that)h(tak)m(e) -h(assignmen)m(t)f(statemen)m(ts)h(as)f(ar-)330 4883 y(gumen)m(ts)40 +h(assignmen)m(t)f(statemen)m(ts)h(as)f(ar-)330 2127 y(gumen)m(ts)40 b(from)e(expanding)h(them)g(as)h(assignmen)m(t)g(statemen)m(ts;)46 -b(when)38 b(not)i(in)f Fm(posix)f Fu(mo)s(de,)330 4993 +b(when)38 b(not)i(in)f Fm(posix)f Fu(mo)s(de,)330 2237 y(assignmen)m(t)k(builtins)e(lose)h(their)g(assignmen)m(t)h(statemen)m -(t)h(expansion)d(prop)s(erties)g(when)g(pre-)330 5103 -y(ceded)31 b(b)m(y)f Ft(command)p Fu(.)154 5230 y(35.)61 +(t)h(expansion)d(prop)s(erties)g(when)g(pre-)330 2346 +y(ceded)31 b(b)m(y)f Ft(command)p Fu(.)154 2479 y(36.)61 b(The)27 b Ft(bg)g Fu(builtin)g(uses)g(the)h(required)f(format)h(to)g (describ)s(e)f(eac)m(h)i(job)e(placed)h(in)f(the)h(bac)m(kground,)330 -5340 y(whic)m(h)h(do)s(es)g(not)g(include)g(an)g(indication)h(of)f -(whether)f(the)h(job)g(is)g(the)h(curren)m(t)e(or)h(previous)g(job.)p -eop end -%%Page: 98 104 -TeXDict begin 98 103 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(98)154 299 y(36.)61 -b(The)23 b(output)f(of)i(`)p Ft(kill)29 b(-l)p Fu(')23 -b(prin)m(ts)f(all)i(the)g(signal)f(names)g(on)g(a)h(single)g(line,)h -(separated)e(b)m(y)g(spaces,)330 408 y(without)30 b(the)h(`)p -Ft(SIG)p Fu(')f(pre\014x.)154 542 y(37.)61 b(The)30 b -Ft(kill)f Fu(builtin)h(do)s(es)g(not)h(accept)h(signal)f(names)f(with)g -(a)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 676 y(38.)61 b(The)38 -b Ft(export)f Fu(and)g Ft(readonly)f Fu(builtin)i(commands)g(displa)m -(y)h(their)f(output)g(in)g(the)h(format)g(re-)330 786 -y(quired)30 b(b)m(y)g Fm(posix)p Fu(.)154 920 y(39.)61 -b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g(signal)i(names)e -(without)g(the)h(leading)g Ft(SIG)p Fu(.)154 1054 y(40.)61 -b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g(c)m(hec)m(k)h(the)g -(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e(signal)i(sp)s -(eci\014cation)330 1163 y(and)30 b(rev)m(ert)i(the)e(signal)i(handling) -e(to)h(the)g(original)h(disp)s(osition)e(if)h(it)g(is,)g(unless)f(that) -h(argumen)m(t)330 1273 y(consists)e(solely)g(of)g(digits)g(and)f(is)g -(a)h(v)-5 b(alid)29 b(signal)g(n)m(um)m(b)s(er.)38 b(If)28 -b(users)g(w)m(an)m(t)h(to)g(reset)g(the)g(handler)330 -1383 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s +2589 y(whic)m(h)h(do)s(es)g(not)g(include)g(an)g(indication)h(of)f +(whether)f(the)h(job)g(is)g(the)h(curren)m(t)e(or)h(previous)g(job.)154 +2721 y(37.)61 b(The)23 b(output)f(of)i(`)p Ft(kill)29 +b(-l)p Fu(')23 b(prin)m(ts)f(all)i(the)g(signal)f(names)g(on)g(a)h +(single)g(line,)h(separated)e(b)m(y)g(spaces,)330 2831 +y(without)30 b(the)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 +2964 y(38.)61 b(The)30 b Ft(kill)f Fu(builtin)h(do)s(es)g(not)h(accept) +h(signal)f(names)f(with)g(a)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 +3096 y(39.)61 b(The)38 b Ft(export)f Fu(and)g Ft(readonly)f +Fu(builtin)i(commands)g(displa)m(y)h(their)f(output)g(in)g(the)h +(format)g(re-)330 3206 y(quired)30 b(b)m(y)g Fm(posix)p +Fu(.)154 3339 y(40.)61 b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g +(signal)i(names)e(without)g(the)h(leading)g Ft(SIG)p +Fu(.)154 3471 y(41.)61 b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g +(c)m(hec)m(k)h(the)g(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e +(signal)i(sp)s(eci\014cation)330 3581 y(and)30 b(rev)m(ert)i(the)e +(signal)i(handling)e(to)h(the)g(original)h(disp)s(osition)e(if)h(it)g +(is,)g(unless)f(that)h(argumen)m(t)330 3690 y(consists)e(solely)g(of)g +(digits)g(and)f(is)g(a)h(v)-5 b(alid)29 b(signal)g(n)m(um)m(b)s(er.)38 +b(If)28 b(users)g(w)m(an)m(t)h(to)g(reset)g(the)g(handler)330 +3800 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s (osition,)f(they)g(should)f(use)h(`)p Ft(-)p Fu(')g(as)g(the)g(\014rst) -f(argumen)m(t.)154 1517 y(41.)61 b(The)21 b Ft(.)h Fu(and)f +f(argumen)m(t.)154 3933 y(42.)61 b(The)21 b Ft(.)h Fu(and)f Ft(source)f Fu(builtins)h(do)g(not)h(searc)m(h)h(the)f(curren)m(t)f (directory)h(for)g(the)g(\014lename)f(argumen)m(t)330 -1626 y(if)30 b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g -Ft(PATH)p Fu(.)154 1760 y(42.)61 b(Enabling)21 b Fm(posix)g +4042 y(if)30 b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g +Ft(PATH)p Fu(.)154 4175 y(43.)61 b(Enabling)21 b Fm(posix)g Fu(mo)s(de)g(has)g(the)g(e\013ect)i(of)e(setting)i(the)e Ft(inherit_errexit)d Fu(option,)23 b(so)f(subshells)330 -1870 y(spa)m(wned)27 b(to)i(execute)g(command)e(substitutions)h +4284 y(spa)m(wned)27 b(to)i(execute)g(command)e(substitutions)h (inherit)f(the)h(v)-5 b(alue)28 b(of)g(the)g Ft(-e)f -Fu(option)h(from)g(the)330 1979 y(paren)m(t)37 b(shell.)62 +Fu(option)h(from)g(the)330 4394 y(paren)m(t)37 b(shell.)62 b(When)37 b(the)g Ft(inherit_errexit)c Fu(option)38 b(is)f(not)h -(enabled,)h(Bash)e(clears)h(the)g Ft(-e)330 2089 y Fu(option)31 -b(in)f(suc)m(h)g(subshells.)154 2223 y(43.)61 b(When)43 -b(the)g Ft(alias)f Fu(builtin)g(displa)m(ys)i(alias)g(de\014nitions,)i -(it)d(do)s(es)g(not)g(displa)m(y)h(them)f(with)g(a)330 -2332 y(leading)31 b(`)p Ft(alias)e Fu(')i(unless)f(the)g -Ft(-p)g Fu(option)h(is)f(supplied.)154 2466 y(44.)61 -b(When)40 b(the)g Ft(set)f Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)h -(without)f(options,)j(it)e(do)s(es)f(not)g(displa)m(y)g(shell)g -(function)330 2576 y(names)30 b(and)g(de\014nitions.)154 -2710 y(45.)61 b(When)36 b(the)g Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok) -m(ed)i(without)e(options,)i(it)f(displa)m(ys)f(v)-5 b(ariable)37 -b(v)-5 b(alues)37 b(without)330 2819 y(quotes,)26 b(unless)d(they)i -(con)m(tain)g(shell)f(metac)m(haracters,)k(ev)m(en)d(if)f(the)g(result) -g(con)m(tains)i(nonprin)m(ting)330 2929 y(c)m(haracters.)154 -3063 y(46.)61 b(When)35 b(the)g Ft(cd)f Fu(builtin)h(is)g(in)m(v)m(ok)m +(enabled,)h(Bash)e(clears)h(the)g Ft(-e)330 4504 y Fu(option)31 +b(in)f(suc)m(h)g(subshells.)154 4636 y(44.)61 b(Enabling)32 +b Fm(posix)f Fu(mo)s(de)h(has)g(the)h(e\013ect)g(of)g(setting)g(the)g +Ft(shift_verbose)28 b Fu(option,)34 b(so)e(n)m(umeric)330 +4746 y(argumen)m(ts)f(to)g Ft(shift)f Fu(that)h(exceed)h(the)e(n)m(um)m +(b)s(er)g(of)h(p)s(ositional)g(parameters)g(will)g(result)g(in)f(an)330 +4855 y(error)g(message.)154 4988 y(45.)61 b(When)43 b(the)g +Ft(alias)f Fu(builtin)g(displa)m(ys)i(alias)g(de\014nitions,)i(it)d(do) +s(es)g(not)g(displa)m(y)h(them)f(with)g(a)330 5098 y(leading)31 +b(`)p Ft(alias)e Fu(')i(unless)f(the)g Ft(-p)g Fu(option)h(is)f +(supplied.)154 5230 y(46.)61 b(When)40 b(the)g Ft(set)f +Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)h(without)f(options,)j(it)e(do)s(es) +f(not)g(displa)m(y)g(shell)g(function)330 5340 y(names)30 +b(and)g(de\014nitions.)p eop end +%%Page: 102 108 +TeXDict begin 102 107 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(102)154 299 y(47.)61 +b(When)36 b(the)g Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok)m(ed)i +(without)e(options,)i(it)f(displa)m(ys)f(v)-5 b(ariable)37 +b(v)-5 b(alues)37 b(without)330 408 y(quotes,)26 b(unless)d(they)i(con) +m(tain)g(shell)f(metac)m(haracters,)k(ev)m(en)d(if)f(the)g(result)g +(con)m(tains)i(nonprin)m(ting)330 518 y(c)m(haracters.)154 +653 y(48.)61 b(When)35 b(the)g Ft(cd)f Fu(builtin)h(is)g(in)m(v)m(ok)m (ed)i(in)d Fr(logical)41 b Fu(mo)s(de,)36 b(and)f(the)g(pathname)g -(constructed)g(from)330 3173 y Ft($PWD)i Fu(and)h(the)h(directory)f +(constructed)g(from)330 762 y Ft($PWD)i Fu(and)h(the)h(directory)f (name)h(supplied)e(as)i(an)f(argumen)m(t)h(do)s(es)f(not)g(refer)h(to)g -(an)f(existing)330 3282 y(directory)-8 b(,)32 b Ft(cd)d +(an)f(existing)330 872 y(directory)-8 b(,)32 b Ft(cd)d Fu(will)i(fail)g(instead)g(of)f(falling)h(bac)m(k)h(to)f -Fr(ph)m(ysical)j Fu(mo)s(de.)154 3416 y(47.)61 b(The)36 -b Ft(pwd)f Fu(builtin)h(v)m(eri\014es)h(that)g(the)f(v)-5 +Fr(ph)m(ysical)j Fu(mo)s(de.)154 1006 y(49.)61 b(When)37 +b(the)h Ft(cd)f Fu(builtin)g(cannot)h(c)m(hange)h(a)f(directory)g(b)s +(ecause)g(the)g(length)g(of)f(the)h(pathname)330 1116 +y(constructed)52 b(from)f Ft($PWD)f Fu(and)g(the)i(directory)g(name)f +(supplied)f(as)i(an)f(argumen)m(t)h(exceeds)330 1225 +y Fr(P)-8 b(A)g(TH)p 584 1225 28 4 v 41 w(MAX)42 b Fu(when)31 +b(all)j(sym)m(b)s(olic)e(links)h(are)f(expanded,)h Ft(cd)f +Fu(will)g(fail)h(instead)g(of)g(attempting)330 1335 y(to)e(use)f(only)h +(the)f(supplied)f(directory)i(name.)154 1469 y(50.)61 +b(The)36 b Ft(pwd)f Fu(builtin)h(v)m(eri\014es)h(that)g(the)f(v)-5 b(alue)37 b(it)g(prin)m(ts)e(is)i(the)f(same)h(as)f(the)h(curren)m(t)f -(directory)-8 b(,)330 3526 y(ev)m(en)31 b(if)f(it)h(is)g(not)f(ask)m +(directory)-8 b(,)330 1579 y(ev)m(en)31 b(if)f(it)h(is)g(not)f(ask)m (ed)h(to)g(c)m(hec)m(k)h(the)f(\014le)f(system)h(with)f(the)h -Ft(-P)e Fu(option.)154 3660 y(48.)61 b(When)35 b(listing)g(the)g +Ft(-P)e Fu(option.)154 1714 y(51.)61 b(When)35 b(listing)g(the)g (history)-8 b(,)36 b(the)f Ft(fc)g Fu(builtin)f(do)s(es)g(not)h -(include)g(an)f(indication)i(of)f(whether)f(or)330 3769 +(include)g(an)f(indication)i(of)f(whether)f(or)330 1823 y(not)d(a)f(history)h(en)m(try)f(has)g(b)s(een)g(mo)s(di\014ed.)154 -3903 y(49.)61 b(The)30 b(default)g(editor)h(used)f(b)m(y)g -Ft(fc)g Fu(is)g Ft(ed)p Fu(.)154 4037 y(50.)61 b(The)37 +1958 y(52.)61 b(The)30 b(default)g(editor)h(used)f(b)m(y)g +Ft(fc)g Fu(is)g Ft(ed)p Fu(.)154 2092 y(53.)61 b(The)37 b Ft(type)g Fu(and)g Ft(command)f Fu(builtins)i(will)g(not)g(rep)s(ort) f(a)i(non-executable)g(\014le)f(as)g(ha)m(ving)h(b)s(een)330 -4147 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g +2202 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g (execute)g(suc)m(h)f(a)g(\014le)g(if)g(it)g(is)g(the)g(only)g(so-named) -g(\014le)330 4256 y(found)i(in)h Ft($PATH)p Fu(.)154 -4390 y(51.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m +g(\014le)330 2311 y(found)i(in)h Ft($PATH)p Fu(.)154 +2446 y(54.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m (ok)m(e)i(the)e Ft(vi)g Fu(editor)h(directly)f(when)f(the)i(`)p -Ft(v)p Fu(')f(command)g(is)g(run,)330 4500 y(instead)e(of)f(c)m(hec)m -(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 4634 -y(52.)61 b(When)41 b(the)g Ft(xpg_echo)e Fu(option)i(is)g(enabled,)j +Ft(v)p Fu(')f(command)g(is)g(run,)330 2555 y(instead)e(of)f(c)m(hec)m +(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 2690 +y(55.)61 b(When)41 b(the)g Ft(xpg_echo)e Fu(option)i(is)g(enabled,)j (Bash)d(do)s(es)g(not)g(attempt)h(to)g(in)m(terpret)f(an)m(y)h(ar-)330 -4743 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54 +2800 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54 b(Eac)m(h)35 b(argumen)m(t)g(is)f(displa)m(y)m(ed,)j(after)e(escap)s(e) -g(c)m(haracters)h(are)330 4853 y(con)m(v)m(erted.)154 -4987 y(53.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m +g(c)m(haracters)h(are)330 2909 y(con)m(v)m(erted.)154 +3044 y(56.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m (k)g(size)g(of)g(512)g(b)m(ytes)g(for)f(the)h Ft(-c)f -Fu(and)g Ft(-f)f Fu(options.)154 5121 y(54.)61 b(The)39 +Fu(and)g Ft(-f)f Fu(options.)154 3178 y(57.)61 b(The)39 b(arriv)-5 b(al)41 b(of)f Ft(SIGCHLD)e Fu(when)h(a)h(trap)g(is)g(set)h (on)f Ft(SIGCHLD)e Fu(do)s(es)h(not)h(in)m(terrupt)g(the)g -Ft(wait)330 5230 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f +Ft(wait)330 3288 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f (immediately)-8 b(.)62 b(The)37 b(trap)f(command)h(is)g(run)e(once)j -(for)f(eac)m(h)330 5340 y(c)m(hild)31 b(that)g(exits.)p -eop end -%%Page: 99 105 -TeXDict begin 99 104 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(99)154 299 y(55.)61 -b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m(terrupted)h(b)m -(y)g(a)h(signal)f(for)g(whic)m(h)g(a)h(trap)f(has)g(b)s(een)f(set.)40 -b(If)27 b(Bash)330 408 y(receiv)m(es)41 b(a)f(trapp)s(ed)e(signal)i -(while)f(executing)h Ft(read)p Fu(,)h(the)e(trap)h(handler)e(executes)i -(and)f Ft(read)330 518 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i -(than)e(128.)154 653 y(56.)61 b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i -(bac)m(kground)e(pro)s(cess's)h(status)g(from)f(the)h(list)g(of)g(suc)m -(h)f(statuses)h(after)330 762 y(the)k Ft(wait)e Fu(builtin)h(is)g(used) -g(to)h(obtain)g(it.)275 922 y(There)j(is)g(other)h Fm(posix)f -Fu(b)s(eha)m(vior)h(that)g(Bash)g(do)s(es)f(not)h(implemen)m(t)g(b)m(y) -g(default)f(ev)m(en)i(when)d(in)150 1031 y Fm(posix)d -Fu(mo)s(de.)40 b(Sp)s(eci\014cally:)199 1166 y(1.)61 -b(The)30 b Ft(fc)f Fu(builtin)h(c)m(hec)m(ks)i Ft($EDITOR)c -Fu(as)j(a)f(program)g(to)h(edit)g(history)f(en)m(tries)h(if)f -Ft(FCEDIT)f Fu(is)h(unset,)330 1275 y(rather)g(than)g(defaulting)h -(directly)g(to)g Ft(ed)p Fu(.)40 b Ft(fc)30 b Fu(uses)g -Ft(ed)g Fu(if)g Ft(EDITOR)f Fu(is)h(unset.)199 1410 y(2.)61 -b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i(Bash)e(requires)g(the)g -Ft(xpg_echo)e Fu(option)j(to)g(b)s(e)e(enabled)h(for)g(the)g -Ft(echo)f Fu(builtin)330 1519 y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 -1679 y(Bash)c(can)g(b)s(e)f(con\014gured)h(to)g(b)s(e)g -Fm(posix)p Fu(-conforman)m(t)g(b)m(y)g(default,)h(b)m(y)f(sp)s -(ecifying)g(the)g Ft(--enable-)150 1788 y(strict-posix-default)c -Fu(to)27 b Ft(configure)e Fu(when)h(building)h(\(see)h(Section)g(10.8)g -([Optional)g(F)-8 b(eatures],)150 1898 y(page)31 b(144\).)p -eop end -%%Page: 100 106 -TeXDict begin 100 105 bop 3614 -116 a Fu(100)150 299 +(for)f(eac)m(h)330 3397 y(c)m(hild)31 b(that)g(exits.)154 +3532 y(58.)61 b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m +(terrupted)h(b)m(y)g(a)h(signal)f(for)g(whic)m(h)g(a)h(trap)f(has)g(b)s +(een)f(set.)40 b(If)27 b(Bash)330 3641 y(receiv)m(es)41 +b(a)f(trapp)s(ed)e(signal)i(while)f(executing)h Ft(read)p +Fu(,)h(the)e(trap)h(handler)e(executes)i(and)f Ft(read)330 +3751 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i(than)e(128.)154 +3885 y(59.)61 b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i(bac)m(kground)e +(pro)s(cess's)h(status)g(from)f(the)h(list)g(of)g(suc)m(h)f(statuses)h +(after)330 3995 y(the)k Ft(wait)e Fu(builtin)h(is)g(used)g(to)h(obtain) +g(it.)275 4154 y(There)j(is)g(other)h Fm(posix)f Fu(b)s(eha)m(vior)h +(that)g(Bash)g(do)s(es)f(not)h(implemen)m(t)g(b)m(y)g(default)f(ev)m +(en)i(when)d(in)150 4264 y Fm(posix)d Fu(mo)s(de.)40 +b(Sp)s(eci\014cally:)199 4399 y(1.)61 b(The)30 b Ft(fc)f +Fu(builtin)h(c)m(hec)m(ks)i Ft($EDITOR)c Fu(as)j(a)f(program)g(to)h +(edit)g(history)f(en)m(tries)h(if)f Ft(FCEDIT)f Fu(is)h(unset,)330 +4508 y(rather)g(than)g(defaulting)h(directly)g(to)g Ft(ed)p +Fu(.)40 b Ft(fc)30 b Fu(uses)g Ft(ed)g Fu(if)g Ft(EDITOR)f +Fu(is)h(unset.)199 4643 y(2.)61 b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i +(Bash)e(requires)g(the)g Ft(xpg_echo)e Fu(option)j(to)g(b)s(e)e +(enabled)h(for)g(the)g Ft(echo)f Fu(builtin)330 4752 +y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 4912 y(Bash)c(can)g(b)s(e)f +(con\014gured)h(to)g(b)s(e)g Fm(posix)p Fu(-conforman)m(t)g(b)m(y)g +(default,)h(b)m(y)f(sp)s(ecifying)g(the)g Ft(--enable-)150 +5021 y(strict-posix-default)c Fu(to)27 b Ft(configure)e +Fu(when)h(building)h(\(see)h(Section)g(10.8)g([Optional)g(F)-8 +b(eatures],)150 5131 y(page)31 b(150\).)p eop end +%%Page: 103 109 +TeXDict begin 103 108 bop 3614 -116 a Fu(103)150 299 y Fp(7)80 b(Job)54 b(Con)l(trol)150 518 y Fu(This)25 b(c)m(hapter)i(discusses)f(what)g(job)f(con)m(trol)j(is,)f(ho)m(w)f(it) h(w)m(orks,)g(and)f(ho)m(w)g(Bash)g(allo)m(ws)h(y)m(ou)g(to)g(access) @@ -15385,9 +15690,9 @@ h Ft(jobs)e Fu(command\),)k(the)d(curren)m(t)h(job)f(is)g(alw)m(a)m(ys) i(\015agged)f(with)f(a)h(`)p Ft(+)p Fu(',)i(and)d(the)150 5340 y(previous)30 b(job)g(with)g(a)h(`)p Ft(-)p Fu('.)p eop end -%%Page: 101 107 -TeXDict begin 101 106 bop 150 -116 a Fu(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2526 b(101)275 299 y(A)38 b(job)g(ma)m(y)h(also)g +%%Page: 104 110 +TeXDict begin 104 109 bop 150 -116 a Fu(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2526 b(104)275 299 y(A)38 b(job)g(ma)m(y)h(also)g (b)s(e)f(referred)f(to)j(using)d(a)i(pre\014x)e(of)i(the)f(name)h(used) e(to)i(start)g(it,)i(or)e(using)f(a)150 408 y(substring)29 b(that)i(app)s(ears)f(in)g(its)h(command)f(line.)41 b(F)-8 @@ -15397,188 +15702,201 @@ Fu(',)g(on)f(the)h(other)g(hand,)g(refers)f(to)h(an)m(y)g(job)g(con)m (taining)h(the)f(string)f(`)p Ft(ce)p Fu(')h(in)f(its)h(command)150 628 y(line.)41 b(If)30 b(the)h(pre\014x)e(or)h(substring)f(matc)m(hes)j (more)e(than)h(one)f(job,)h(Bash)f(rep)s(orts)g(an)g(error.)275 -761 y(Simply)g(naming)h(a)g(job)g(can)g(b)s(e)f(used)h(to)g(bring)f(it) +767 y(Simply)g(naming)h(a)g(job)g(can)g(b)s(e)f(used)h(to)g(bring)f(it) i(in)m(to)g(the)f(foreground:)41 b(`)p Ft(\0451)p Fu(')31 -b(is)g(a)h(synon)m(ym)e(for)150 871 y(`)p Ft(fg)g(\0451)p +b(is)g(a)h(synon)m(ym)e(for)150 876 y(`)p Ft(fg)g(\0451)p Fu(',)i(bringing)f(job)g(1)g(from)g(the)h(bac)m(kground)f(in)m(to)i (the)e(foreground.)44 b(Similarly)-8 b(,)32 b(`)p Ft(\0451)e(&)p -Fu(')i(resumes)150 980 y(job)e(1)h(in)f(the)g(bac)m(kground,)h(equiv)-5 -b(alen)m(t)32 b(to)f(`)p Ft(bg)f(\0451)p Fu(')275 1114 +Fu(')i(resumes)150 986 y(job)e(1)h(in)f(the)g(bac)m(kground,)h(equiv)-5 +b(alen)m(t)32 b(to)f(`)p Ft(bg)f(\0451)p Fu(')275 1125 y(The)g(shell)i(learns)f(immediately)i(whenev)m(er)e(a)h(job)f(c)m (hanges)h(state.)45 b(Normally)-8 b(,)33 b(Bash)e(w)m(aits)i(un)m(til) -150 1223 y(it)25 b(is)g(ab)s(out)f(to)i(prin)m(t)e(a)h(prompt)f(b)s +150 1234 y(it)25 b(is)g(ab)s(out)f(to)i(prin)m(t)e(a)h(prompt)f(b)s (efore)g(rep)s(orting)h(c)m(hanges)g(in)g(a)g(job's)f(status)h(so)g(as) -g(to)g(not)g(in)m(terrupt)150 1333 y(an)m(y)k(other)f(output.)40 +g(to)g(not)g(in)m(terrupt)150 1344 y(an)m(y)k(other)f(output.)40 b(If)28 b(the)g Ft(-b)g Fu(option)g(to)h(the)g Ft(set)e Fu(builtin)h(is)g(enabled,)h(Bash)g(rep)s(orts)e(suc)m(h)h(c)m(hanges) -150 1443 y(immediately)d(\(see)g(Section)g(4.3.1)g([The)f(Set)g -(Builtin],)i(page)f(60\).)40 b(An)m(y)24 b(trap)f(on)h -Ft(SIGCHLD)e Fu(is)i(executed)150 1552 y(for)30 b(eac)m(h)i(c)m(hild)e -(pro)s(cess)g(that)h(exits.)275 1686 y(If)25 b(an)h(attempt)h(to)g +150 1453 y(immediately)d(\(see)g(Section)g(4.3.1)g([The)f(Set)g +(Builtin],)i(page)f(61\).)40 b(An)m(y)24 b(trap)f(on)h +Ft(SIGCHLD)e Fu(is)i(executed)150 1563 y(for)30 b(eac)m(h)i(c)m(hild)e +(pro)s(cess)g(that)h(exits.)275 1702 y(If)25 b(an)h(attempt)h(to)g (exit)g(Bash)f(is)h(made)f(while)g(jobs)f(are)i(stopp)s(ed,)f(\(or)h -(running,)e(if)h(the)g Ft(checkjobs)150 1795 y Fu(option)e(is)f +(running,)e(if)h(the)g Ft(checkjobs)150 1812 y Fu(option)e(is)f (enabled)h({)g(see)g(Section)g(4.3.2)h([The)e(Shopt)g(Builtin],)j(page) -e(64\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150 -1905 y(message,)k(and)c(if)i(the)f Ft(checkjobs)e Fu(option)j(is)f +e(65\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150 +1921 y(message,)k(and)c(if)i(the)f Ft(checkjobs)e Fu(option)j(is)f (enabled,)i(lists)e(the)h(jobs)f(and)f(their)i(statuses.)39 -b(The)25 b Ft(jobs)150 2014 y Fu(command)36 b(ma)m(y)h(then)f(b)s(e)f +b(The)25 b Ft(jobs)150 2031 y Fu(command)36 b(ma)m(y)h(then)f(b)s(e)f (used)g(to)i(insp)s(ect)f(their)g(status.)59 b(If)36 -b(a)g(second)g(attempt)i(to)f(exit)g(is)f(made)150 2124 +b(a)g(second)g(attempt)i(to)f(exit)g(is)f(made)150 2140 y(without)e(an)f(in)m(terv)m(ening)i(command,)f(Bash)g(do)s(es)f(not)h (prin)m(t)g(another)f(w)m(arning,)i(and)e(an)m(y)h(stopp)s(ed)150 -2234 y(jobs)c(are)h(terminated.)150 2472 y Fs(7.2)68 -b(Job)45 b(Con)l(trol)h(Builtins)150 2656 y Ft(bg)870 -2789 y(bg)h([)p Fj(jobspec)f Ft(...)o(])630 2923 y Fu(Resume)24 -b(eac)m(h)h(susp)s(ended)d(job)i Fr(jobsp)s(ec)29 b Fu(in)24 -b(the)g(bac)m(kground,)h(as)g(if)f(it)h(had)e(b)s(een)g(started)630 -3032 y(with)32 b(`)p Ft(&)p Fu('.)45 b(If)31 b Fr(jobsp)s(ec)37 -b Fu(is)32 b(not)g(supplied,)f(the)h(curren)m(t)g(job)f(is)h(used.)45 -b(The)31 b(return)g(status)630 3142 y(is)i(zero)g(unless)f(it)h(is)g -(run)e(when)h(job)g(con)m(trol)i(is)f(not)g(enabled,)h(or,)f(when)f -(run)f(with)h(job)630 3252 y(con)m(trol)h(enabled,)g(an)m(y)f -Fr(jobsp)s(ec)37 b Fu(w)m(as)32 b(not)g(found)f(or)g(sp)s(eci\014es)h -(a)g(job)g(that)g(w)m(as)g(started)630 3361 y(without)e(job)g(con)m -(trol.)150 3519 y Ft(fg)870 3652 y(fg)47 b([)p Fj(jobspec)p -Ft(])630 3786 y Fu(Resume)c(the)g(job)g Fr(jobsp)s(ec)48 -b Fu(in)43 b(the)g(foreground)g(and)f(mak)m(e)j(it)e(the)h(curren)m(t)f -(job.)78 b(If)630 3895 y Fr(jobsp)s(ec)41 b Fu(is)c(not)f(supplied,)h -(the)f(curren)m(t)h(job)f(is)g(used.)58 b(The)36 b(return)f(status)h -(is)h(that)g(of)630 4005 y(the)d(command)g(placed)h(in)m(to)g(the)f +2250 y(jobs)c(are)h(terminated.)275 2389 y(When)f(the)h(shell)g(is)f(w) +m(aiting)i(for)f(a)g(job)f(or)h(pro)s(cess)f(using)g(the)h +Ft(wait)f Fu(builtin,)g(and)g(job)h(con)m(trol)h(is)150 +2498 y(enabled,)27 b Ft(wait)f Fu(will)g(return)g(when)f(the)h(job)g(c) +m(hanges)i(state.)41 b(The)25 b Ft(-f)h Fu(option)h(will)g(force)g +Ft(wait)e Fu(to)i(w)m(ait)150 2608 y(un)m(til)k(the)f(job)g(or)h(pro)s +(cess)f(terminates)h(b)s(efore)f(returning.)150 2855 +y Fs(7.2)68 b(Job)45 b(Con)l(trol)h(Builtins)150 3042 +y Ft(bg)870 3179 y(bg)h([)p Fj(jobspec)f Ft(...)o(])630 +3315 y Fu(Resume)24 b(eac)m(h)h(susp)s(ended)d(job)i +Fr(jobsp)s(ec)29 b Fu(in)24 b(the)g(bac)m(kground,)h(as)g(if)f(it)h +(had)e(b)s(een)g(started)630 3425 y(with)32 b(`)p Ft(&)p +Fu('.)45 b(If)31 b Fr(jobsp)s(ec)37 b Fu(is)32 b(not)g(supplied,)f(the) +h(curren)m(t)g(job)f(is)h(used.)45 b(The)31 b(return)g(status)630 +3535 y(is)i(zero)g(unless)f(it)h(is)g(run)e(when)h(job)g(con)m(trol)i +(is)f(not)g(enabled,)h(or,)f(when)f(run)f(with)h(job)630 +3644 y(con)m(trol)h(enabled,)g(an)m(y)f Fr(jobsp)s(ec)37 +b Fu(w)m(as)32 b(not)g(found)f(or)g(sp)s(eci\014es)h(a)g(job)g(that)g +(w)m(as)g(started)630 3754 y(without)e(job)g(con)m(trol.)150 +3918 y Ft(fg)870 4054 y(fg)47 b([)p Fj(jobspec)p Ft(])630 +4191 y Fu(Resume)c(the)g(job)g Fr(jobsp)s(ec)48 b Fu(in)43 +b(the)g(foreground)g(and)f(mak)m(e)j(it)e(the)h(curren)m(t)f(job.)78 +b(If)630 4301 y Fr(jobsp)s(ec)41 b Fu(is)c(not)f(supplied,)h(the)f +(curren)m(t)h(job)f(is)g(used.)58 b(The)36 b(return)f(status)h(is)h +(that)g(of)630 4410 y(the)d(command)g(placed)h(in)m(to)g(the)f (foreground,)g(or)g(non-zero)h(if)f(run)f(when)g(job)g(con)m(trol)630 -4114 y(is)i(disabled)g(or,)i(when)d(run)g(with)h(job)g(con)m(trol)h +4520 y(is)i(disabled)g(or,)i(when)d(run)g(with)h(job)g(con)m(trol)h (enabled,)h Fr(jobsp)s(ec)j Fu(do)s(es)35 b(not)h(sp)s(ecify)f(a)630 -4224 y(v)-5 b(alid)31 b(job)f(or)g Fr(jobsp)s(ec)35 b +4629 y(v)-5 b(alid)31 b(job)f(or)g Fr(jobsp)s(ec)35 b Fu(sp)s(eci\014es)30 b(a)h(job)f(that)h(w)m(as)g(started)g(without)f -(job)g(con)m(trol.)150 4381 y Ft(jobs)870 4515 y(jobs)47 -b([-lnprs])e([)p Fj(jobspec)p Ft(])870 4625 y(jobs)i(-x)g -Fj(command)f Ft([)p Fj(arguments)p Ft(])630 4758 y Fu(The)30 +(job)g(con)m(trol.)150 4793 y Ft(jobs)870 4930 y(jobs)47 +b([-lnprs])e([)p Fj(jobspec)p Ft(])870 5039 y(jobs)i(-x)g +Fj(command)f Ft([)p Fj(arguments)p Ft(])630 5176 y Fu(The)30 b(\014rst)f(form)h(lists)h(the)g(activ)m(e)h(jobs.)41 b(The)30 b(options)g(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)630 -4916 y Ft(-l)384 b Fu(List)31 b(pro)s(cess)f Fm(id)p -Fu(s)g(in)g(addition)h(to)g(the)f(normal)h(information.)630 -5073 y Ft(-n)384 b Fu(Displa)m(y)26 b(information)f(only)h(ab)s(out)e -(jobs)h(that)g(ha)m(v)m(e)i(c)m(hanged)e(status)h(since)1110 -5183 y(the)31 b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f -(status.)630 5340 y Ft(-p)384 b Fu(List)31 b(only)f(the)h(pro)s(cess)f -Fm(id)g Fu(of)h(the)f(job's)g(pro)s(cess)g(group)g(leader.)p +5340 y Ft(-l)384 b Fu(List)31 b(pro)s(cess)f Fm(id)p +Fu(s)g(in)g(addition)h(to)g(the)f(normal)h(information.)p eop end -%%Page: 102 108 -TeXDict begin 102 107 bop 150 -116 a Fu(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2526 b(102)630 299 y Ft(-r)384 -b Fu(Displa)m(y)32 b(only)e(running)f(jobs.)630 461 y -Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(stopp)s(ed)f(jobs.)630 -622 y(If)23 b Fr(jobsp)s(ec)28 b Fu(is)23 b(giv)m(en,)i(output)e(is)g +%%Page: 105 111 +TeXDict begin 105 110 bop 150 -116 a Fu(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2526 b(105)630 299 y Ft(-n)384 +b Fu(Displa)m(y)26 b(information)f(only)h(ab)s(out)e(jobs)h(that)g(ha)m +(v)m(e)i(c)m(hanged)e(status)h(since)1110 408 y(the)31 +b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f(status.)630 +570 y Ft(-p)384 b Fu(List)31 b(only)f(the)h(pro)s(cess)f +Fm(id)g Fu(of)h(the)f(job's)g(pro)s(cess)g(group)g(leader.)630 +732 y Ft(-r)384 b Fu(Displa)m(y)32 b(only)e(running)f(jobs.)630 +894 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(stopp)s(ed)f(jobs.)630 +1056 y(If)23 b Fr(jobsp)s(ec)28 b Fu(is)23 b(giv)m(en,)i(output)e(is)g (restricted)h(to)g(information)f(ab)s(out)g(that)h(job.)37 -b(If)23 b Fr(jobsp)s(ec)630 732 y Fu(is)30 b(not)h(supplied,)e(the)i -(status)g(of)f(all)h(jobs)f(is)h(listed.)630 868 y(If)k(the)g +b(If)23 b Fr(jobsp)s(ec)630 1165 y Fu(is)30 b(not)h(supplied,)e(the)i +(status)g(of)f(all)h(jobs)f(is)h(listed.)630 1301 y(If)k(the)g Ft(-x)f Fu(option)i(is)f(supplied,)g Ft(jobs)f Fu(replaces)i(an)m(y)f Fr(jobsp)s(ec)40 b Fu(found)34 b(in)h Fr(command)j Fu(or)630 -977 y Fr(argumen)m(ts)j Fu(with)c(the)h(corresp)s(onding)e(pro)s(cess)h -(group)f Fm(id)p Fu(,)k(and)c(executes)j Fr(command)p -Fu(,)630 1087 y(passing)30 b(it)h Fr(argumen)m(t)r Fu(s,)g(returning)f -(its)g(exit)i(status.)150 1249 y Ft(kill)870 1384 y(kill)47 +1410 y Fr(argumen)m(ts)j Fu(with)c(the)h(corresp)s(onding)e(pro)s(cess) +h(group)f Fm(id)p Fu(,)k(and)c(executes)j Fr(command)p +Fu(,)630 1520 y(passing)30 b(it)h Fr(argumen)m(t)r Fu(s,)g(returning)f +(its)g(exit)i(status.)150 1682 y Ft(kill)870 1817 y(kill)47 b([-s)g Fj(sigspec)p Ft(])e([-n)i Fj(signum)p Ft(])f([-)p -Fj(sigspec)p Ft(])f Fj(jobspec)h Ft(or)h Fj(pid)870 1494 -y Ft(kill)g(-l|-L)f([)p Fj(exit_status)p Ft(])630 1630 +Fj(sigspec)p Ft(])f Fj(jobspec)h Ft(or)h Fj(pid)870 1927 +y Ft(kill)g(-l|-L)f([)p Fj(exit_status)p Ft(])630 2063 y Fu(Send)22 b(a)i(signal)g(sp)s(eci\014ed)f(b)m(y)g Fr(sigsp)s(ec)29 b Fu(or)24 b Fr(sign)m(um)f Fu(to)h(the)g(pro)s(cess)f -(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 1739 y(cation)k +(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 2172 y(cation)k Fr(jobsp)s(ec)j Fu(or)25 b(pro)s(cess)g Fm(id)h Fr(pid)p Fu(.)38 b Fr(sigsp)s(ec)31 b Fu(is)25 b(either)h(a)g(case-insensitiv)m -(e)i(signal)e(name)630 1849 y(suc)m(h)37 b(as)g Ft(SIGINT)f +(e)i(signal)e(name)630 2282 y(suc)m(h)37 b(as)g Ft(SIGINT)f Fu(\(with)h(or)g(without)g(the)g Ft(SIG)g Fu(pre\014x\))f(or)h(a)h -(signal)g(n)m(um)m(b)s(er;)h Fr(sign)m(um)630 1958 y +(signal)g(n)m(um)m(b)s(er;)h Fr(sign)m(um)630 2392 y Fu(is)g(a)f(signal)i(n)m(um)m(b)s(er.)63 b(If)39 b Fr(sigsp)s(ec)44 b Fu(and)38 b Fr(sign)m(um)g Fu(are)h(not)g(presen)m(t,)h -Ft(SIGTERM)d Fu(is)h(used.)630 2068 y(The)27 b Ft(-l)h +Ft(SIGTERM)d Fu(is)h(used.)630 2501 y(The)27 b Ft(-l)h Fu(option)g(lists)h(the)f(signal)h(names.)39 b(If)28 b(an)m(y)g(argumen)m(ts)h(are)f(supplied)f(when)g Ft(-l)g -Fu(is)630 2178 y(giv)m(en,)32 b(the)g(names)e(of)i(the)f(signals)g +Fu(is)630 2611 y(giv)m(en,)32 b(the)g(names)e(of)i(the)f(signals)g (corresp)s(onding)f(to)i(the)f(argumen)m(ts)g(are)h(listed,)g(and)630 -2287 y(the)c(return)f(status)h(is)g(zero.)41 b Fr(exit)p -1796 2287 28 4 v 41 w(status)32 b Fu(is)c(a)g(n)m(um)m(b)s(er)f(sp)s -(ecifying)g(a)i(signal)f(n)m(um)m(b)s(er)f(or)630 2397 +2720 y(the)c(return)f(status)h(is)g(zero.)41 b Fr(exit)p +1796 2720 28 4 v 41 w(status)32 b Fu(is)c(a)g(n)m(um)m(b)s(er)f(sp)s +(ecifying)g(a)i(signal)f(n)m(um)m(b)s(er)f(or)630 2830 y(the)h(exit)h(status)g(of)f(a)h(pro)s(cess)e(terminated)i(b)m(y)f(a)h (signal.)40 b(The)28 b Ft(-L)g Fu(option)g(is)g(equiv)-5 -b(alen)m(t)630 2506 y(to)34 b Ft(-l)p Fu(.)47 b(The)32 +b(alen)m(t)630 2939 y(to)34 b Ft(-l)p Fu(.)47 b(The)32 b(return)g(status)h(is)g(zero)g(if)g(at)g(least)h(one)f(signal)h(w)m -(as)f(successfully)g(sen)m(t,)h(or)630 2616 y(non-zero)d(if)f(an)h +(as)f(successfully)g(sen)m(t,)h(or)630 3049 y(non-zero)d(if)f(an)h (error)f(o)s(ccurs)g(or)g(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f -(encoun)m(tered.)150 2778 y Ft(wait)870 2913 y(wait)47 -b([-n])f([)p Fj(jobspec)g Ft(or)h Fj(pid)g Ft(...)o(])630 -3049 y Fu(W)-8 b(ait)28 b(un)m(til)f(the)f(c)m(hild)h(pro)s(cess)f(sp)s +(encoun)m(tered.)150 3211 y Ft(wait)870 3346 y(wait)47 +b([-fn])f([)p Fj(jobspec)g Ft(or)h Fj(pid)g Ft(...)o(])630 +3482 y Fu(W)-8 b(ait)28 b(un)m(til)f(the)f(c)m(hild)h(pro)s(cess)f(sp)s (eci\014ed)g(b)m(y)g(eac)m(h)h(pro)s(cess)f Fm(id)h Fr(pid)i -Fu(or)d(job)g(sp)s(eci\014cation)630 3159 y Fr(jobsp)s(ec)j +Fu(or)d(job)g(sp)s(eci\014cation)630 3592 y Fr(jobsp)s(ec)j Fu(exits)c(and)f(return)g(the)g(exit)h(status)g(of)g(the)f(last)h (command)g(w)m(aited)g(for.)39 b(If)23 b(a)i(job)630 -3268 y(sp)s(ec)j(is)g(giv)m(en,)i(all)f(pro)s(cesses)f(in)g(the)g(job)g +3701 y(sp)s(ec)j(is)g(giv)m(en,)i(all)f(pro)s(cesses)f(in)g(the)g(job)g (are)h(w)m(aited)g(for.)40 b(If)27 b(no)i(argumen)m(ts)f(are)h(giv)m -(en,)630 3378 y(all)f(curren)m(tly)g(activ)m(e)i(c)m(hild)e(pro)s +(en,)630 3811 y(all)f(curren)m(tly)g(activ)m(e)i(c)m(hild)e(pro)s (cesses)f(are)h(w)m(aited)g(for,)g(and)f(the)h(return)e(status)i(is)g -(zero.)630 3487 y(If)f(the)g Ft(-n)g Fu(option)h(is)f(supplied,)g -Ft(wait)f Fu(w)m(aits)i(for)f(an)m(y)h(job)f(to)h(terminate)g(and)f -(returns)f(its)630 3597 y(exit)37 b(status.)56 b(If)36 -b(neither)f Fr(jobsp)s(ec)41 b Fu(nor)35 b Fr(pid)j Fu(sp)s(eci\014es)d -(an)h(activ)m(e)i(c)m(hild)e(pro)s(cess)f(of)h(the)630 -3707 y(shell,)31 b(the)f(return)g(status)g(is)h(127.)150 -3868 y Ft(disown)870 4004 y(disown)46 b([-ar])g([-h])h([)p -Fj(jobspec)f Ft(...)h(|)g Fj(pid)g Ft(...)g(])630 4140 +(zero.)630 3921 y(If)36 b(the)g Ft(-n)f Fu(option)i(is)f(supplied,)g +Ft(wait)f Fu(w)m(aits)i(for)f(an)m(y)g(job)g(to)h(terminate)g(and)e +(returns)630 4030 y(its)i(exit)g(status.)60 b(If)36 b(the)g +Ft(-f)g Fu(option)h(is)g(supplied,)f(and)g(job)g(con)m(trol)i(is)f +(enabled,)h Ft(wait)630 4140 y Fu(forces)g(eac)m(h)h +Fr(pid)i Fu(or)d Fr(jobsp)s(ec)43 b Fu(to)38 b(terminate)h(b)s(efore)e +(returning)g(its)i(status,)h(in)m(tead)f(of)630 4249 +y(returning)29 b(when)f(it)i(c)m(hanges)h(status.)41 +b(If)29 b(neither)g Fr(jobsp)s(ec)35 b Fu(nor)29 b Fr(pid)j +Fu(sp)s(eci\014es)d(an)h(activ)m(e)630 4359 y(c)m(hild)h(pro)s(cess)f +(of)g(the)h(shell,)g(the)f(return)f(status)i(is)f(127.)150 +4521 y Ft(disown)870 4656 y(disown)46 b([-ar])g([-h])h([)p +Fj(jobspec)f Ft(...)h(|)g Fj(pid)g Ft(...)g(])630 4792 y Fu(Without)33 b(options,)h(remo)m(v)m(e)g(eac)m(h)f Fr(jobsp)s(ec)38 b Fu(from)32 b(the)h(table)g(of)g(activ)m(e)h(jobs.)47 -b(If)32 b(the)h Ft(-h)630 4249 y Fu(option)j(is)f(giv)m(en,)i(the)f +b(If)32 b(the)h Ft(-h)630 4902 y Fu(option)j(is)f(giv)m(en,)i(the)f (job)f(is)g(not)g(remo)m(v)m(ed)h(from)f(the)g(table,)j(but)c(is)i -(mark)m(ed)f(so)g(that)630 4359 y Ft(SIGHUP)e Fu(is)j(not)f(sen)m(t)h +(mark)m(ed)f(so)g(that)630 5011 y Ft(SIGHUP)e Fu(is)j(not)f(sen)m(t)h (to)g(the)f(job)g(if)g(the)g(shell)h(receiv)m(es)h(a)e Ft(SIGHUP)p Fu(.)54 b(If)34 b Fr(jobsp)s(ec)40 b Fu(is)c(not)630 -4468 y(presen)m(t,)41 b(and)d(neither)h(the)g Ft(-a)f +5121 y(presen)m(t,)41 b(and)d(neither)h(the)g Ft(-a)f Fu(nor)g(the)h Ft(-r)f Fu(option)h(is)g(supplied,)g(the)g(curren)m(t)g -(job)f(is)630 4578 y(used.)g(If)25 b(no)h Fr(jobsp)s(ec)k +(job)f(is)630 5230 y(used.)g(If)25 b(no)h Fr(jobsp)s(ec)k Fu(is)c(supplied,)f(the)h Ft(-a)f Fu(option)h(means)g(to)g(remo)m(v)m -(e)h(or)e(mark)h(all)g(jobs;)630 4688 y(the)31 b Ft(-r)e +(e)h(or)e(mark)h(all)g(jobs;)630 5340 y(the)31 b Ft(-r)e Fu(option)i(without)g(a)f Fr(jobsp)s(ec)36 b Fu(argumen)m(t)30 -b(restricts)h(op)s(eration)g(to)g(running)e(jobs.)150 -4849 y Ft(suspend)870 4985 y(suspend)46 b([-f])630 5121 -y Fu(Susp)s(end)31 b(the)i(execution)h(of)g(this)f(shell)g(un)m(til)h -(it)g(receiv)m(es)h(a)e Ft(SIGCONT)f Fu(signal.)50 b(A)33 -b(login)630 5230 y(shell)28 b(cannot)g(b)s(e)f(susp)s(ended;)g(the)g -Ft(-f)g Fu(option)i(can)f(b)s(e)f(used)g(to)h(o)m(v)m(erride)h(this)e -(and)g(force)630 5340 y(the)k(susp)s(ension.)p eop end -%%Page: 103 109 -TeXDict begin 103 108 bop 150 -116 a Fu(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2526 b(103)275 299 y(When)30 b(job)f(con)m(trol)j -(is)e(not)h(activ)m(e,)i(the)d Ft(kill)f Fu(and)h Ft(wait)f +b(restricts)h(op)s(eration)g(to)g(running)e(jobs.)p eop +end +%%Page: 106 112 +TeXDict begin 106 111 bop 150 -116 a Fu(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2526 b(106)150 299 y Ft(suspend)870 +433 y(suspend)46 b([-f])630 568 y Fu(Susp)s(end)31 b(the)i(execution)h +(of)g(this)f(shell)g(un)m(til)h(it)g(receiv)m(es)h(a)e +Ft(SIGCONT)f Fu(signal.)50 b(A)33 b(login)630 677 y(shell)28 +b(cannot)g(b)s(e)f(susp)s(ended;)g(the)g Ft(-f)g Fu(option)i(can)f(b)s +(e)f(used)g(to)h(o)m(v)m(erride)h(this)e(and)g(force)630 +787 y(the)k(susp)s(ension.)275 946 y(When)f(job)f(con)m(trol)j(is)e +(not)h(activ)m(e,)i(the)d Ft(kill)f Fu(and)h Ft(wait)f Fu(builtins)g(do)h(not)h(accept)h Fr(jobsp)s(ec)j Fu(argu-)150 -408 y(men)m(ts.)41 b(They)30 b(m)m(ust)g(b)s(e)g(supplied)f(pro)s(cess) -h Fm(id)p Fu(s.)150 649 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V)-11 -b(ariables)150 834 y Ft(auto_resume)630 943 y Fu(This)31 +1056 y(men)m(ts.)41 b(They)30 b(m)m(ust)g(b)s(e)g(supplied)f(pro)s +(cess)h Fm(id)p Fu(s.)150 1297 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V) +-11 b(ariables)150 1481 y Ft(auto_resume)630 1591 y Fu(This)31 b(v)-5 b(ariable)32 b(con)m(trols)g(ho)m(w)g(the)f(shell)h(in)m (teracts)h(with)e(the)h(user)e(and)h(job)g(con)m(trol.)45 -b(If)630 1053 y(this)28 b(v)-5 b(ariable)30 b(exists)f(then)f(single)h +b(If)630 1700 y(this)28 b(v)-5 b(ariable)30 b(exists)f(then)f(single)h (w)m(ord)f(simple)h(commands)f(without)g(redirections)i(are)630 -1162 y(treated)h(as)g(candidates)f(for)g(resumption)g(of)g(an)g +1810 y(treated)h(as)g(candidates)f(for)g(resumption)g(of)g(an)g (existing)h(job.)41 b(There)29 b(is)h(no)h(am)m(biguit)m(y)630 -1272 y(allo)m(w)m(ed;)f(if)d(there)g(is)g(more)g(than)f(one)h(job)g(b)s +1919 y(allo)m(w)m(ed;)f(if)d(there)g(is)g(more)g(than)f(one)h(job)g(b)s (eginning)f(with)g(the)h(string)g(t)m(yp)s(ed,)g(then)g(the)630 -1381 y(most)j(recen)m(tly)h(accessed)f(job)f(will)h(b)s(e)f(selected.) +2029 y(most)j(recen)m(tly)h(accessed)f(job)f(will)h(b)s(e)f(selected.) 42 b(The)29 b(name)g(of)h(a)g(stopp)s(ed)e(job,)i(in)f(this)630 -1491 y(con)m(text,)h(is)e(the)g(command)g(line)g(used)f(to)h(start)g +2139 y(con)m(text,)h(is)e(the)g(command)g(line)g(used)f(to)h(start)g (it.)41 b(If)27 b(this)h(v)-5 b(ariable)28 b(is)g(set)g(to)h(the)e(v)-5 -b(alue)630 1601 y(`)p Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f +b(alue)630 2248 y(`)p Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f (m)m(ust)h(matc)m(h)g(the)h(name)f(of)g(a)g(stopp)s(ed)f(job)h -(exactly;)j(if)630 1710 y(set)29 b(to)h(`)p Ft(substring)p +(exactly;)j(if)630 2358 y(set)29 b(to)h(`)p Ft(substring)p Fu(',)d(the)i(string)g(supplied)e(needs)i(to)g(matc)m(h)h(a)f -(substring)f(of)h(the)g(name)630 1820 y(of)38 b(a)f(stopp)s(ed)g(job.) +(substring)f(of)h(the)g(name)630 2467 y(of)38 b(a)f(stopp)s(ed)g(job.) 62 b(The)37 b(`)p Ft(substring)p Fu(')e(v)-5 b(alue)38 b(pro)m(vides)f(functionalit)m(y)i(analogous)g(to)630 -1929 y(the)c(`)p Ft(\045?)p Fu(')g(job)g Fm(id)g Fu(\(see)h(Section)g -(7.1)g([Job)e(Con)m(trol)i(Basics],)i(page)e(100\).)56 -b(If)34 b(set)i(to)g(an)m(y)630 2039 y(other)c(v)-5 b(alue,)32 +2577 y(the)c(`)p Ft(\045?)p Fu(')g(job)g Fm(id)g Fu(\(see)h(Section)g +(7.1)g([Job)e(Con)m(trol)i(Basics],)i(page)e(103\).)56 +b(If)34 b(set)i(to)g(an)m(y)630 2687 y(other)c(v)-5 b(alue,)32 b(the)g(supplied)e(string)i(m)m(ust)f(b)s(e)g(a)h(pre\014x)f(of)h(a)g -(stopp)s(ed)e(job's)i(name;)g(this)630 2149 y(pro)m(vides)e +(stopp)s(ed)e(job's)i(name;)g(this)630 2796 y(pro)m(vides)e (functionalit)m(y)i(analogous)g(to)f(the)g(`)p Ft(\045)p Fu(')f(job)g Fm(id)p Fu(.)p eop end -%%Page: 104 110 -TeXDict begin 104 109 bop 3614 -116 a Fu(104)150 299 +%%Page: 107 113 +TeXDict begin 107 112 bop 3614 -116 a Fu(107)150 299 y Fp(8)80 b(Command)54 b(Line)f(Editing)150 635 y Fu(This)28 b(c)m(hapter)i(describ)s(es)e(the)h(basic)g(features)h(of)f(the)g Fm(gnu)f Fu(command)h(line)g(editing)h(in)m(terface.)42 @@ -15591,7 +15909,7 @@ b(Com-)150 745 y(mand)c(line)i(editing)f(is)g(pro)m(vided)g(b)m(y)g (shell)f(in)m(v)m(o)s(cation.)45 b(Line)31 b(editing)150 1074 y(is)g(also)h(used)f(when)f(using)h(the)g Ft(-e)g Fu(option)h(to)g(the)f Ft(read)f Fu(builtin)h(command)g(\(see)h -(Section)g(4.2)h([Bash)150 1183 y(Builtins],)j(page)f(49\).)52 +(Section)g(4.2)h([Bash)150 1183 y(Builtins],)j(page)f(50\).)52 b(By)35 b(default,)g(the)f(line)h(editing)f(commands)g(are)h(similar)f (to)h(those)f(of)g(Emacs.)150 1293 y(A)h(vi-st)m(yle)h(line)f(editing)g (in)m(terface)h(is)e(also)i(a)m(v)-5 b(ailable.)55 b(Line)34 @@ -15599,7 +15917,7 @@ b(editing)h(can)g(b)s(e)f(enabled)g(at)h(an)m(y)g(time)150 1402 y(using)h(the)g Ft(-o)30 b(emacs)35 b Fu(or)h Ft(-o)30 b(vi)35 b Fu(options)i(to)g(the)f Ft(set)f Fu(builtin)h(command)g (\(see)h(Section)g(4.3.1)h([The)150 1512 y(Set)31 b(Builtin],)g(page)g -(60\),)h(or)e(disabled)g(using)g(the)h Ft(+o)e(emacs)g +(61\),)h(or)e(disabled)g(using)g(the)h Ft(+o)e(emacs)g Fu(or)i Ft(+o)e(vi)h Fu(options)h(to)g Ft(set)p Fu(.)150 1804 y Fs(8.1)68 b(In)l(tro)t(duction)45 b(to)g(Line)h(Editing)150 1963 y Fu(The)30 b(follo)m(wing)i(paragraphs)d(describ)s(e)h(the)h @@ -15638,7 +15956,7 @@ b Ft(DEL)p Fu(,)f Ft(ESC)p Fu(,)g Ft(LFD)p Fu(,)g Ft(SPC)p Fu(,)g Ft(RET)p Fu(,)150 3902 y(and)d Ft(TAB)f Fu(all)j(stand)e(for)g (themselv)m(es)i(when)d(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init) h(\014le)f(\(see)i(Section)f(8.3)150 4012 y([Readline)f(Init)g(File],)i -(page)e(107\).)52 b(If)33 b(y)m(our)g(k)m(eyb)s(oard)h(lac)m(ks)g(a)g +(page)e(110\).)52 b(If)33 b(y)m(our)g(k)m(eyb)s(oard)h(lac)m(ks)g(a)g Ft(LFD)f Fu(k)m(ey)-8 b(,)36 b(t)m(yping)e Ft(C-j)e Fu(will)i(pro)s (duce)150 4122 y(the)d(desired)e(c)m(haracter.)43 b(The)30 b Ft(RET)f Fu(k)m(ey)i(ma)m(y)g(b)s(e)f(lab)s(eled)h @@ -15662,9 +15980,9 @@ Ft(RET)p Fu(.)39 b(Y)-8 b(ou)25 b(do)g(not)g(ha)m(v)m(e)h(to)g(b)s(e)e Ft(RET)p Fu(;)i(the)g(en)m(tire)g(line)f(is)h(accepted)g(regardless)g (of)f(the)h(lo)s(cation)h(of)e(the)h(cursor)150 5340 y(within)c(the)g(line.)p eop end -%%Page: 105 111 -TeXDict begin 105 110 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(105)150 299 y Fk(8.2.1)63 +%%Page: 108 114 +TeXDict begin 108 113 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(108)150 299 y Fk(8.2.1)63 b(Readline)40 b(Bare)h(Essen)m(tials)150 446 y Fu(In)31 b(order)h(to)h(en)m(ter)g(c)m(haracters)g(in)m(to)g(the)g(line,)g (simply)e(t)m(yp)s(e)i(them.)46 b(The)31 b(t)m(yp)s(ed)h(c)m(haracter)i @@ -15731,9 +16049,9 @@ b Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m (haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150 5340 y(w)m(ords.)p eop end -%%Page: 106 112 -TeXDict begin 106 111 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(106)150 299 y Fk(8.2.3)63 +%%Page: 109 115 +TeXDict begin 109 114 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(109)150 299 y Fk(8.2.3)63 b(Readline)40 b(Killing)i(Commands)150 446 y Fr(Killing)35 b Fu(text)28 b(means)e(to)h(delete)h(the)f(text)g(from)g(the)f(line,)i (but)e(to)h(sa)m(v)m(e)h(it)g(a)m(w)m(a)m(y)g(for)e(later)i(use,)f @@ -15807,13 +16125,13 @@ b(on)e(the)h(input)e(line.)150 4974 y Fk(8.2.5)63 b(Searc)m(hing)40 b(for)i(Commands)g(in)f(the)g(History)150 5121 y Fu(Readline)35 b(pro)m(vides)f(commands)g(for)g(searc)m(hing)h(through)e(the)i (command)f(history)g(\(see)h(Section)g(9.1)150 5230 y([Bash)i(History)h -(F)-8 b(acilities],)42 b(page)37 b(137\))i(for)d(lines)h(con)m(taining) +(F)-8 b(acilities],)42 b(page)37 b(141\))i(for)d(lines)h(con)m(taining) i(a)e(sp)s(eci\014ed)f(string.)60 b(There)36 b(are)i(t)m(w)m(o)150 5340 y(searc)m(h)31 b(mo)s(des:)40 b Fr(incremen)m(tal)35 b Fu(and)30 b Fr(non-incremen)m(tal)p Fu(.)p eop end -%%Page: 107 113 -TeXDict begin 107 112 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(107)275 299 y(Incremen)m(tal)26 +%%Page: 110 116 +TeXDict begin 110 115 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(110)275 299 y(Incremen)m(tal)26 b(searc)m(hes)h(b)s(egin)e(b)s(efore)g(the)h(user)f(has)h(\014nished)e (t)m(yping)i(the)g(searc)m(h)g(string.)39 b(As)26 b(eac)m(h)150 408 y(c)m(haracter)37 b(of)e(the)h(searc)m(h)g(string)f(is)h(t)m(yp)s @@ -15889,7 +16207,7 @@ b(lines)h(are)150 4515 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h (a)g(`)p Ft(#)p Fu(')g(are)h(commen)m(ts.)73 b(Lines)41 b(b)s(eginning)f(with)g(a)i(`)p Ft($)p Fu(')f(indicate)150 4625 y(conditional)e(constructs)f(\(see)g(Section)h(8.3.2)g -([Conditional)g(Init)e(Constructs],)j(page)e(115\).)64 +([Conditional)g(Init)e(Constructs],)j(page)e(118\).)64 b(Other)150 4735 y(lines)31 b(denote)g(v)-5 b(ariable)31 b(settings)g(and)f(k)m(ey)h(bindings.)150 4882 y(V)-8 b(ariable)32 b(Settings)630 4992 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e @@ -15898,9 +16216,9 @@ b(ariable)32 b(Settings)630 4992 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e b(in)f(Readline)i(using)e(the)g Ft(set)g Fu(command)g(within)g(the)h (init)g(\014le.)50 b(The)33 b(syn)m(tax)630 5211 y(is)d(simple:)870 5340 y Ft(set)47 b Fj(variable)e(value)p eop end -%%Page: 108 114 -TeXDict begin 108 113 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(108)630 299 y(Here,)29 +%%Page: 111 117 +TeXDict begin 111 116 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(111)630 299 y(Here,)29 b(for)e(example,)h(is)g(ho)m(w)f(to)h(c)m(hange)g(from)f(the)g(default) h(Emacs-lik)m(e)h(k)m(ey)f(binding)e(to)630 408 y(use)k Ft(vi)g Fu(line)h(editing)g(commands:)870 541 y Ft(set)47 @@ -15917,7 +16235,7 @@ b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v) 1268 y(The)37 b Ft(bind)30 b(-V)37 b Fu(command)g(lists)i(the)f(curren) m(t)f(Readline)i(v)-5 b(ariable)38 b(names)g(and)f(v)-5 b(alues.)630 1377 y(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page) -g(49.)630 1510 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g +g(50.)630 1510 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g (is)g(c)m(hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 b(ariables.)630 1666 y Ft(bell-style)1110 1775 y Fu(Con)m(trols)44 b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an)m(ts)f(to)h(ring)e(the)h @@ -15966,508 +16284,556 @@ b(A)26 b(v)-5 b(alue)27 b(of)f(0)h(will)f(cause)1110 5340 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e (line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)p eop end -%%Page: 109 115 -TeXDict begin 109 114 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(109)630 299 y Ft +%%Page: 112 118 +TeXDict begin 112 117 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(112)630 299 y Ft (completion-ignore-case)1110 408 y Fu(If)27 b(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i (and)e(completion)1110 518 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)40 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Ft(off)p -Fu('.)630 669 y Ft(completion-map-case)1110 778 y Fu(If)22 +Fu('.)630 682 y Ft(completion-map-case)1110 792 y Fu(If)22 b(set)g(to)h(`)p Ft(on)p Fu(',)h(and)e Fr(completion-ignore-case)31 -b Fu(is)22 b(enabled,)i(Readline)f(treats)1110 888 y(h)m(yphens)29 +b Fu(is)22 b(enabled,)i(Readline)f(treats)1110 902 y(h)m(yphens)29 b(\(`)p Ft(-)p Fu('\))j(and)e(underscores)g(\(`)p Ft(_)p Fu('\))i(as)f(equiv)-5 b(alen)m(t)32 b(when)e(p)s(erforming)1110 -998 y(case-insensitiv)m(e)j(\014lename)d(matc)m(hing)i(and)e -(completion.)630 1148 y Ft(completion-prefix-displa)o(y-le)o(ngth)1110 -1258 y Fu(The)h(length)g(in)g(c)m(haracters)i(of)f(the)f(common)h -(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110 1367 -y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s -(di\014cation.)41 b(When)29 b(set)h(to)h(a)1110 1477 +1011 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f +(completion.)85 b(The)44 b(default)1110 1121 y(v)-5 b(alue)31 +b(is)f(`)p Ft(off)p Fu('.)630 1285 y Ft(completion-prefix-displa)o +(y-le)o(ngth)1110 1395 y Fu(The)h(length)g(in)g(c)m(haracters)i(of)f +(the)f(common)h(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110 +1504 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s +(di\014cation.)41 b(When)29 b(set)h(to)h(a)1110 1614 y(v)-5 b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e -(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 1587 +(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 1724 y(replaced)k(with)f(an)g(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible) -f(completions.)630 1737 y Ft(completion-query-items)1110 -1847 y Fu(The)c(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g(completions)h -(that)g(determines)f(when)f(the)i(user)1110 1956 y(is)i(ask)m(ed)h +f(completions.)630 1888 y Ft(completion-query-items)1110 +1998 y Fu(The)c(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g(completions)h +(that)g(determines)f(when)f(the)i(user)1110 2107 y(is)i(ask)m(ed)h (whether)f(the)h(list)g(of)f(p)s(ossibilities)h(should)e(b)s(e)h -(displa)m(y)m(ed.)41 b(If)29 b(the)1110 2066 y(n)m(um)m(b)s(er)d(of)h +(displa)m(y)m(ed.)41 b(If)29 b(the)1110 2217 y(n)m(um)m(b)s(er)d(of)h (p)s(ossible)f(completions)i(is)f(greater)h(than)e(this)h(v)-5 -b(alue,)28 b(Readline)1110 2176 y(will)f(ask)g(the)f(user)g(whether)g +b(alue,)28 b(Readline)1110 2326 y(will)f(ask)g(the)f(user)g(whether)g (or)g(not)h(he)f(wishes)g(to)i(view)e(them;)i(otherwise,)1110 -2285 y(they)d(are)f(simply)g(listed.)40 b(This)23 b(v)-5 +2436 y(they)d(are)f(simply)g(listed.)40 b(This)23 b(v)-5 b(ariable)25 b(m)m(ust)g(b)s(e)e(set)i(to)g(an)g(in)m(teger)g(v)-5 -b(alue)1110 2395 y(greater)26 b(than)f(or)f(equal)i(to)f(0.)40 +b(alue)1110 2545 y(greater)26 b(than)f(or)f(equal)i(to)f(0.)40 b(A)24 b(negativ)m(e)j(v)-5 b(alue)26 b(means)e(Readline)i(should)1110 -2504 y(nev)m(er)31 b(ask.)41 b(The)29 b(default)i(limit)g(is)g -Ft(100)p Fu(.)630 2655 y Ft(convert-meta)1110 2765 y +2655 y(nev)m(er)31 b(ask.)41 b(The)29 b(default)i(limit)g(is)g +Ft(100)p Fu(.)630 2819 y Ft(convert-meta)1110 2929 y Fu(If)22 b(set)g(to)h(`)p Ft(on)p Fu(',)h(Readline)f(will)f(con)m(v)m (ert)i(c)m(haracters)f(with)f(the)g(eigh)m(th)h(bit)f(set)1110 -2874 y(to)33 b(an)e Fm(asci)r(i)h Fu(k)m(ey)h(sequence)f(b)m(y)g +3039 y(to)33 b(an)e Fm(asci)r(i)h Fu(k)m(ey)h(sequence)f(b)m(y)g (stripping)f(the)h(eigh)m(th)h(bit)f(and)f(pre\014xing)1110 -2984 y(an)24 b Ft(ESC)g Fu(c)m(haracter,)j(con)m(v)m(erting)f(them)f -(to)g(a)g(meta-pre\014xed)f(k)m(ey)h(sequence.)1110 3093 +3148 y(an)24 b Ft(ESC)g Fu(c)m(haracter,)j(con)m(v)m(erting)f(them)f +(to)g(a)g(meta-pre\014xed)f(k)m(ey)h(sequence.)1110 3258 y(The)i(default)h(v)-5 b(alue)28 b(is)f(`)p Ft(on)p Fu(',)i(but)d(will) i(b)s(e)f(set)h(to)g(`)p Ft(off)p Fu(')g(if)f(the)h(lo)s(cale)h(is)f -(one)1110 3203 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630 -3354 y Ft(disable-completion)1110 3463 y Fu(If)k(set)h(to)h(`)p +(one)1110 3367 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630 +3532 y Ft(disable-completion)1110 3641 y Fu(If)k(set)h(to)h(`)p Ft(On)p Fu(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h(completion.)60 -b(Completion)1110 3573 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h +b(Completion)1110 3751 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h (in)m(to)h(the)g(line)f(as)g(if)g(they)h(had)e(b)s(een)g(mapp)s(ed)1110 -3682 y(to)31 b Ft(self-insert)p Fu(.)38 b(The)30 b(default)g(is)h(`)p -Ft(off)p Fu('.)630 3833 y Ft(echo-control-characters)1110 -3943 y Fu(When)f(set)h(to)g(`)p Ft(on)p Fu(',)f(on)g(op)s(erating)h -(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 4052 +3861 y(to)31 b Ft(self-insert)p Fu(.)38 b(The)30 b(default)g(is)h(`)p +Ft(off)p Fu('.)630 4025 y Ft(echo-control-characters)1110 +4134 y Fu(When)f(set)h(to)g(`)p Ft(on)p Fu(',)f(on)g(op)s(erating)h +(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 4244 y(it,)i(readline)e(ec)m(ho)s(es)i(a)f(c)m(haracter)h(corresp)s(onding)d -(to)j(a)f(signal)g(generated)1110 4162 y(from)e(the)g(k)m(eyb)s(oard.) -41 b(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630 4313 -y Ft(editing-mode)1110 4422 y Fu(The)d Ft(editing-mode)e +(to)j(a)f(signal)g(generated)1110 4354 y(from)e(the)g(k)m(eyb)s(oard.) +41 b(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630 4518 +y Ft(editing-mode)1110 4628 y Fu(The)d Ft(editing-mode)e Fu(v)-5 b(ariable)29 b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k) -m(ey)i(bind-)1110 4532 y(ings)25 b(is)g(used.)38 b(By)26 +m(ey)i(bind-)1110 4737 y(ings)25 b(is)g(used.)38 b(By)26 b(default,)g(Readline)g(starts)f(up)f(in)h(Emacs)g(editing)h(mo)s(de,) -1110 4641 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to) +1110 4847 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to) h(Emacs.)40 b(This)29 b(v)-5 b(ariable)30 b(can)1110 -4751 y(b)s(e)g(set)h(to)g(either)g(`)p Ft(emacs)p Fu(')e(or)h(`)p -Ft(vi)p Fu('.)630 4902 y Ft(emacs-mode-string)1110 5011 -y Fu(This)f(string)h(is)f(displa)m(y)m(ed)i(immediately)g(b)s(efore)e -(the)h(last)g(line)h(of)e(the)h(pri-)1110 5121 y(mary)43 -b(prompt)g(when)f(emacs)i(editing)g(mo)s(de)f(is)g(activ)m(e.)82 -b(The)43 b(v)-5 b(alue)44 b(is)1110 5230 y(expanded)28 -b(lik)m(e)i(a)f(k)m(ey)g(binding,)f(so)h(the)g(standard)f(set)h(of)g -(meta-)g(and)f(con-)1110 5340 y(trol)36 b(pre\014xes)e(and)h(bac)m -(kslash)h(escap)s(e)g(sequences)g(is)f(a)m(v)-5 b(ailable.)58 -b(Use)36 b(the)p eop end -%%Page: 110 116 -TeXDict begin 110 115 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(110)1110 299 y(`)p -Ft(\\1)p Fu(')38 b(and)f(`)p Ft(\\2)p Fu(')h(escap)s(es)g(to)h(b)s -(egin)e(and)h(end)f(sequences)h(of)g(non-prin)m(ting)1110 -408 y(c)m(haracters,)27 b(whic)m(h)c(can)h(b)s(e)f(used)f(to)j(em)m(b)s -(ed)e(a)h(terminal)g(con)m(trol)h(sequence)1110 518 y(in)m(to)31 -b(the)g(mo)s(de)f(string.)41 b(The)29 b(default)i(is)f(`)p -Ft(@)p Fu('.)630 682 y Ft(enable-bracketed-paste)1110 -792 y Fu(When)24 b(set)h(to)h(`)p Ft(On)p Fu(',)g(Readline)f(will)g +4956 y(b)s(e)g(set)h(to)g(either)g(`)p Ft(emacs)p Fu(')e(or)h(`)p +Ft(vi)p Fu('.)630 5121 y Ft(emacs-mode-string)1110 5230 +y Fu(If)j(the)h Fr(sho)m(w-mo)s(de-in-prompt)h Fu(v)-5 +b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110 +5340 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f +(of)h(the)f(primary)f(prompt)g(when)p eop end +%%Page: 113 119 +TeXDict begin 113 118 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(113)1110 299 y(emacs)22 +b(editing)h(mo)s(de)e(is)h(activ)m(e.)40 b(The)21 b(v)-5 +b(alue)22 b(is)g(expanded)f(lik)m(e)h(a)h(k)m(ey)f(bind-)1110 +408 y(ing,)27 b(so)f(the)f(standard)g(set)h(of)f(meta-)i(and)e(con)m +(trol)i(pre\014xes)d(and)h(bac)m(kslash)1110 518 y(escap)s(e)f +(sequences)h(is)e(a)m(v)-5 b(ailable.)41 b(Use)25 b(the)f(`)p +Ft(\\1)p Fu(')f(and)h(`)p Ft(\\2)p Fu(')g(escap)s(es)g(to)g(b)s(egin) +1110 628 y(and)37 b(end)g(sequences)h(of)f(non-prin)m(ting)h(c)m +(haracters,)j(whic)m(h)c(can)h(b)s(e)f(used)1110 737 +y(to)h(em)m(b)s(ed)f(a)g(terminal)h(con)m(trol)h(sequence)f(in)m(to)g +(the)f(mo)s(de)g(string.)61 b(The)1110 847 y(default)31 +b(is)f(`)p Ft(@)p Fu('.)630 1019 y Ft(enable-bracketed-paste)1110 +1129 y Fu(When)24 b(set)h(to)h(`)p Ft(On)p Fu(',)g(Readline)f(will)g (con\014gure)f(the)h(terminal)g(in)f(a)h(w)m(a)m(y)g(that)1110 -902 y(will)k(enable)f(it)h(to)g(insert)g(eac)m(h)g(paste)g(in)m(to)g -(the)g(editing)g(bu\013er)e(as)i(a)f(single)1110 1011 +1238 y(will)k(enable)f(it)h(to)g(insert)g(eac)m(h)g(paste)g(in)m(to)g +(the)g(editing)g(bu\013er)e(as)i(a)f(single)1110 1348 y(string)33 b(of)f(c)m(haracters,)j(instead)e(of)g(treating)h(eac)m(h)g -(c)m(haracter)g(as)f(if)f(it)i(had)1110 1121 y(b)s(een)e(read)i(from)e +(c)m(haracter)g(as)f(if)f(it)i(had)1110 1457 y(b)s(een)e(read)i(from)e (the)i(k)m(eyb)s(oard.)49 b(This)32 b(can)h(prev)m(en)m(t)h(pasted)f(c) -m(haracters)1110 1230 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f +m(haracters)1110 1567 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f (editing)h(commands.)41 b(The)29 b(default)i(is)f(`)p -Ft(off)p Fu('.)630 1395 y Ft(enable-keypad)1110 1504 +Ft(off)p Fu('.)630 1739 y Ft(enable-keypad)1110 1849 y Fu(When)23 b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(try)f -(to)h(enable)g(the)f(application)i(k)m(eypad)1110 1614 +(to)h(enable)g(the)f(application)i(k)m(eypad)1110 1958 y(when)h(it)h(is)f(called.)41 b(Some)27 b(systems)f(need)h(this)f(to)h -(enable)g(the)g(arro)m(w)g(k)m(eys.)1110 1724 y(The)j(default)g(is)h(`) -p Ft(off)p Fu('.)630 1888 y Ft(enable-meta-key)1110 1998 +(enable)g(the)g(arro)m(w)g(k)m(eys.)1110 2068 y(The)j(default)g(is)h(`) +p Ft(off)p Fu('.)630 2240 y Ft(enable-meta-key)1110 2350 y Fu(When)40 b(set)g(to)g(`)p Ft(on)p Fu(',)j(Readline)d(will)g(try)g -(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110 2107 +(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110 2459 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h(supp)s(ort)d(when)h(it)h(is)g -(called.)76 b(On)41 b(man)m(y)1110 2217 y(terminals,)c(the)e(meta)h(k)m +(called.)76 b(On)41 b(man)m(y)1110 2569 y(terminals,)c(the)e(meta)h(k)m (ey)g(is)f(used)g(to)h(send)e(eigh)m(t-bit)j(c)m(haracters.)56 -b(The)1110 2326 y(default)31 b(is)f(`)p Ft(on)p Fu('.)630 -2491 y Ft(expand-tilde)1110 2600 y Fu(If)d(set)h(to)h(`)p +b(The)1110 2679 y(default)31 b(is)f(`)p Ft(on)p Fu('.)630 +2851 y Ft(expand-tilde)1110 2960 y Fu(If)d(set)h(to)h(`)p Ft(on)p Fu(',)f(tilde)g(expansion)g(is)f(p)s(erformed)f(when)h -(Readline)h(attempts)1110 2710 y(w)m(ord)i(completion.)42 -b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)630 2874 -y Ft(history-preserve-point)1110 2984 y Fu(If)41 b(set)h(to)h(`)p +(Readline)h(attempts)1110 3070 y(w)m(ord)i(completion.)42 +b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)630 3242 +y Ft(history-preserve-point)1110 3352 y Fu(If)41 b(set)h(to)h(`)p Ft(on)p Fu(',)i(the)c(history)h(co)s(de)g(attempts)h(to)f(place)h(the)f -(p)s(oin)m(t)f(\(the)1110 3093 y(curren)m(t)35 b(cursor)g(p)s +(p)s(oin)m(t)f(\(the)1110 3461 y(curren)m(t)35 b(cursor)g(p)s (osition\))g(at)h(the)g(same)f(lo)s(cation)i(on)e(eac)m(h)h(history)g -(line)1110 3203 y(retriev)m(ed)h(with)f Ft(previous-history)c +(line)1110 3571 y(retriev)m(ed)h(with)f Ft(previous-history)c Fu(or)37 b Ft(next-history)p Fu(.)55 b(The)36 b(default)1110 -3313 y(is)30 b(`)p Ft(off)p Fu('.)630 3477 y Ft(history-size)1110 -3587 y Fu(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g -(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 3696 +3680 y(is)30 b(`)p Ft(off)p Fu('.)630 3853 y Ft(history-size)1110 +3962 y Fu(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g +(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 4072 y(list.)51 b(If)34 b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f -(en)m(tries)g(are)g(deleted)h(and)e(no)1110 3806 y(new)e(en)m(tries)i +(en)m(tries)g(are)g(deleted)h(and)e(no)1110 4181 y(new)e(en)m(tries)i (are)f(sa)m(v)m(ed.)46 b(If)31 b(set)h(to)h(a)f(v)-5 b(alue)32 b(less)g(than)f(zero,)i(the)f(n)m(um)m(b)s(er)1110 -3915 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42 +4291 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42 b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)1110 -4025 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is) -f(made)g(to)h(set)f Fr(history-size)39 b Fu(to)1110 4134 +4401 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is) +f(made)g(to)h(set)f Fr(history-size)39 b Fu(to)1110 4510 y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34 b(the)g(maxim)m(um)f(n)m(um)m -(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 4244 -y(b)s(e)c(set)h(to)g(500.)630 4408 y Ft(horizontal-scroll-mode)1110 -4518 y Fu(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f +(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 4620 +y(b)s(e)c(set)h(to)g(500.)630 4792 y Ft(horizontal-scroll-mode)1110 +4902 y Fu(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f (`)p Ft(on)p Fu(')g(or)g(`)p Ft(off)p Fu('.)57 b(Setting)36 -b(it)g(to)h(`)p Ft(on)p Fu(')1110 4628 y(means)26 b(that)h(the)f(text)h +b(it)g(to)h(`)p Ft(on)p Fu(')1110 5011 y(means)26 b(that)h(the)f(text)h (of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m -(tally)1110 4737 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i -(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 4847 +(tally)1110 5121 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i +(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 5230 y(screen,)27 b(instead)g(of)f(wrapping)f(on)m(to)i(a)f(new)g(screen)g -(line.)39 b(By)27 b(default,)g(this)1110 4956 y(v)-5 -b(ariable)31 b(is)g(set)f(to)i(`)p Ft(off)p Fu('.)630 -5121 y Ft(input-meta)1110 5230 y Fu(If)f(set)g(to)h(`)p -Ft(on)p Fu(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it) -i(will)f(not)h(clear)1110 5340 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h -(c)m(haracters)h(it)f(reads\),)j(regardless)c(of)h(what)g(the)p -eop end -%%Page: 111 117 -TeXDict begin 111 116 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(111)1110 299 y(terminal)44 -b(claims)h(it)f(can)g(supp)s(ort.)79 b(The)44 b(default)g(v)-5 -b(alue)44 b(is)g(`)p Ft(off)p Fu(',)j(but)1110 408 y(Readline)24 +(line.)39 b(By)27 b(default,)g(this)1110 5340 y(v)-5 +b(ariable)31 b(is)g(set)f(to)i(`)p Ft(off)p Fu('.)p eop +end +%%Page: 114 120 +TeXDict begin 114 119 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(114)630 299 y Ft(input-meta)1110 +408 y Fu(If)31 b(set)g(to)h(`)p Ft(on)p Fu(',)g(Readline)g(will)f +(enable)h(eigh)m(t-bit)h(input)d(\(it)i(will)f(not)h(clear)1110 +518 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h(c)m(haracters)h(it)f +(reads\),)j(regardless)c(of)h(what)g(the)1110 628 y(terminal)k(claims)h +(it)f(can)g(supp)s(ort.)79 b(The)44 b(default)g(v)-5 +b(alue)44 b(is)g(`)p Ft(off)p Fu(',)j(but)1110 737 y(Readline)24 b(will)h(set)f(it)g(to)h(`)p Ft(on)p Fu(')e(if)h(the)g(lo)s(cale)i(con) -m(tains)f(eigh)m(t-bit)g(c)m(haracters.)1110 518 y(The)30 +m(tains)f(eigh)m(t-bit)g(c)m(haracters.)1110 847 y(The)30 b(name)g Ft(meta-flag)e Fu(is)j(a)f(synon)m(ym)g(for)g(this)h(v)-5 -b(ariable.)630 675 y Ft(isearch-terminators)1110 784 +b(ariable.)630 1029 y Ft(isearch-terminators)1110 1139 y Fu(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e(terminate)j -(an)f(incremen)m(tal)1110 894 y(searc)m(h)25 b(without)g(subsequen)m +(an)f(incremen)m(tal)1110 1249 y(searc)m(h)25 b(without)g(subsequen)m (tly)g(executing)h(the)f(c)m(haracter)h(as)f(a)g(command)1110 -1003 y(\(see)38 b(Section)g(8.2.5)h([Searc)m(hing],)h(page)e(106\).)62 -b(If)37 b(this)g(v)-5 b(ariable)38 b(has)f(not)1110 1113 +1358 y(\(see)38 b(Section)g(8.2.5)h([Searc)m(hing],)h(page)e(109\).)62 +b(If)37 b(this)g(v)-5 b(ariable)38 b(has)f(not)1110 1468 y(b)s(een)e(giv)m(en)h(a)g(v)-5 b(alue,)37 b(the)f(c)m(haracters)h Ft(ESC)d Fu(and)h Fj(C-J)g Fu(will)h(terminate)g(an)1110 -1223 y(incremen)m(tal)c(searc)m(h.)630 1379 y Ft(keymap)192 -b Fu(Sets)39 b(Readline's)g(idea)h(of)f(the)g(curren)m(t)f(k)m(eymap)h -(for)g(k)m(ey)g(binding)f(com-)1110 1489 y(mands.)81 -b(Acceptable)47 b Ft(keymap)42 b Fu(names)i(are)h Ft(emacs)p -Fu(,)i Ft(emacs-standard)p Fu(,)1110 1598 y Ft(emacs-meta)p -Fu(,)99 b Ft(emacs-ctlx)p Fu(,)f Ft(vi)p Fu(,)j Ft(vi-move)p -Fu(,)f Ft(vi-command)p Fu(,)f(and)1110 1708 y Ft(vi-insert)p -Fu(.)81 b Ft(vi)44 b Fu(is)h(equiv)-5 b(alen)m(t)46 b(to)g -Ft(vi-command)c Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 -1817 y(synon)m(ym\);)g Ft(emacs)39 b Fu(is)i(equiv)-5 -b(alen)m(t)42 b(to)g Ft(emacs-standard)p Fu(.)68 b(The)40 -b(default)1110 1927 y(v)-5 b(alue)52 b(is)f Ft(emacs)p -Fu(.)103 b(The)51 b(v)-5 b(alue)52 b(of)f(the)h Ft(editing-mode)c -Fu(v)-5 b(ariable)52 b(also)1110 2037 y(a\013ects)32 -b(the)e(default)h(k)m(eymap.)630 2193 y Ft(keyseq-timeout)1110 -2303 y Fu(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m -(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 2412 +1577 y(incremen)m(tal)c(searc)m(h.)630 1760 y Ft(keymap)192 +b Fu(Sets)64 b(Readline's)i(idea)f(of)f(the)h(curren)m(t)f(k)m(eymap)h +(for)f(k)m(ey)h(binding)1110 1870 y(commands.)71 b(Built-in)41 +b Ft(keymap)e Fu(names)h(are)h Ft(emacs)p Fu(,)h Ft(emacs-standard)p +Fu(,)1110 1979 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p +Fu(,)f Ft(vi)p Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p +Fu(,)f(and)1110 2089 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44 +b Fu(is)h(equiv)-5 b(alen)m(t)46 b(to)g Ft(vi-command)c +Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 2198 y(synon)m(ym\);)41 +b Ft(emacs)c Fu(is)h(equiv)-5 b(alen)m(t)39 b(to)f Ft(emacs-standard)p +Fu(.)59 b(Applications)1110 2308 y(ma)m(y)32 b(add)e(additional)i +(names.)43 b(The)30 b(default)h(v)-5 b(alue)32 b(is)f +Ft(emacs)p Fu(.)41 b(The)30 b(v)-5 b(alue)1110 2418 y(of)31 +b(the)f Ft(editing-mode)d Fu(v)-5 b(ariable)31 b(also)h(a\013ects)f +(the)g(default)g(k)m(eymap.)630 2600 y Ft(keyseq-timeout)1110 +2710 y Fu(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m +(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 2819 y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h(sequence)f(\(one)g(that)h(can)f -(form)g(a)g(complete)h(k)m(ey)1110 2522 y(sequence)j(using)e(the)i +(form)g(a)g(complete)h(k)m(ey)1110 2929 y(sequence)j(using)e(the)i (input)e(read)h(so)g(far,)h(or)g(can)f(tak)m(e)i(additional)f(input) -1110 2632 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49 +1110 3039 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49 b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h(within)1110 -2741 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter) -g(but)f(complete)j(k)m(ey)e(se-)1110 2851 y(quence.)c(Readline)26 +3148 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter) +g(but)f(complete)j(k)m(ey)e(se-)1110 3258 y(quence.)c(Readline)26 b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h -(input)1110 2960 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m +(input)1110 3367 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m (t)f(input)g(source)h(\()p Ft(rl_instream)d Fu(b)m(y)i(default\).)1110 -3070 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h +3477 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h (milliseconds,)j(so)d(a)h(v)-5 b(alue)26 b(of)f(1000)i(means)e(that) -1110 3180 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g +1110 3587 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g (additional)i(input.)37 b(If)22 b(this)g(v)-5 b(ariable)23 -b(is)1110 3289 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f +b(is)1110 3696 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f (equal)i(to)f(zero,)i(or)e(to)g(a)h(non-n)m(umeric)e(v)-5 -b(alue,)1110 3399 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h +b(alue,)1110 3806 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h (k)m(ey)g(is)f(pressed)g(to)h(decide)f(whic)m(h)g(k)m(ey)1110 -3508 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5 -b(alue)31 b(is)g Ft(500)p Fu(.)630 3665 y Ft(mark-directories)1110 -3774 y Fu(If)38 b(set)g(to)h(`)p Ft(on)p Fu(',)i(completed)e(directory) +3915 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5 +b(alue)31 b(is)g Ft(500)p Fu(.)630 4098 y Ft(mark-directories)1110 +4208 y Fu(If)38 b(set)g(to)h(`)p Ft(on)p Fu(',)i(completed)e(directory) f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110 -3884 y(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630 -4041 y Ft(mark-modified-lines)1110 4150 y Fu(This)k(v)-5 +4317 y(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630 +4500 y Ft(mark-modified-lines)1110 4609 y Fu(This)k(v)-5 b(ariable,)38 b(when)d(set)h(to)h(`)p Ft(on)p Fu(',)g(causes)g -(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 4260 y(terisk)f(\(`)p +(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 4719 y(terisk)f(\(`)p Ft(*)p Fu('\))h(at)f(the)g(start)g(of)g(history)g(lines)g(whic)m(h)f -(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 4369 y(This)d(v)-5 +(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 4829 y(This)d(v)-5 b(ariable)31 b(is)f(`)p Ft(off)p Fu(')g(b)m(y)g(default.)630 -4526 y Ft(mark-symlinked-directori)o(es)1110 4635 y Fu(If)59 +5011 y Ft(mark-symlinked-directori)o(es)1110 5121 y Fu(If)59 b(set)h(to)g(`)p Ft(on)p Fu(',)67 b(completed)60 b(names)f(whic)m(h)g -(are)h(sym)m(b)s(olic)g(links)f(to)1110 4745 y(directories)71 +(are)h(sym)m(b)s(olic)g(links)f(to)1110 5230 y(directories)71 b(ha)m(v)m(e)f(a)g(slash)f(app)s(ended)f(\(sub)5 b(ject)70 -b(to)g(the)g(v)-5 b(alue)70 b(of)1110 4855 y Ft(mark-directories)p -Fu(\).)37 b(The)30 b(default)g(is)g(`)p Ft(off)p Fu('.)630 -5011 y Ft(match-hidden-files)1110 5121 y Fu(This)21 b(v)-5 -b(ariable,)25 b(when)d(set)g(to)h(`)p Ft(on)p Fu(',)h(causes)f -(Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 5230 -y(names)44 b(b)s(egin)g(with)g(a)g(`)p Ft(.)p Fu(')g(\(hidden)f -(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 5340 -y(completion.)75 b(If)41 b(set)g(to)h(`)p Ft(off)p Fu(',)i(the)e -(leading)g(`)p Ft(.)p Fu(')f(m)m(ust)g(b)s(e)g(supplied)f(b)m(y)p +b(to)g(the)g(v)-5 b(alue)70 b(of)1110 5340 y Ft(mark-directories)p +Fu(\).)37 b(The)30 b(default)g(is)g(`)p Ft(off)p Fu('.)p eop end -%%Page: 112 118 -TeXDict begin 112 117 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(112)1110 299 y(the)34 -b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.)53 -b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p Ft(on)p Fu(')g(b)m(y)1110 -408 y(default.)630 555 y Ft(menu-complete-display-pr)o(efix)1110 -664 y Fu(If)f(set)h(to)g(`)p Ft(on)p Fu(',)h(men)m(u)e(completion)i -(displa)m(ys)e(the)h(common)g(pre\014x)e(of)i(the)1110 -774 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b)s -(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 883 y(through)30 -b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p Ft(off)p -Fu('.)630 1029 y Ft(output-meta)1110 1139 y Fu(If)35 -b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(displa)m(y)f(c)m -(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 1249 y(set)h(directly)g -(rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s(e)h(sequence.)59 -b(The)1110 1358 y(default)26 b(is)f(`)p Ft(off)p Fu(',)i(but)e -(Readline)h(will)g(set)g(it)g(to)h(`)p Ft(on)p Fu(')e(if)h(the)f(lo)s -(cale)j(con)m(tains)1110 1468 y(eigh)m(t-bit)k(c)m(haracters.)630 -1614 y Ft(page-completions)1110 1724 y Fu(If)h(set)i(to)f(`)p -Ft(on)p Fu(',)h(Readline)g(uses)e(an)h(in)m(ternal)h -Ft(more)p Fu(-lik)m(e)f(pager)g(to)h(displa)m(y)1110 -1833 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.) -47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Ft(on)p Fu(')1110 -1943 y(b)m(y)e(default.)630 2089 y Ft(print-completions-horizo)o(ntal)o -(ly)1110 2198 y Fu(If)23 b(set)i(to)g(`)p Ft(on)p Fu(',)g(Readline)g -(will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110 -2308 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c -(than)g(do)m(wn)g(the)h(screen.)1110 2418 y(The)30 b(default)g(is)h(`)p -Ft(off)p Fu('.)630 2564 y Ft(revert-all-at-newline)1110 -2673 y Fu(If)e(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)g(undo)f -(all)h(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110 -2783 y(returning)f(when)f Ft(accept-line)f Fu(is)j(executed.)41 -b(By)29 b(default,)g(history)g(lines)1110 2892 y(ma)m(y)42 +%%Page: 115 121 +TeXDict begin 115 120 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(115)630 299 y Ft +(match-hidden-files)1110 408 y Fu(This)21 b(v)-5 b(ariable,)25 +b(when)d(set)g(to)h(`)p Ft(on)p Fu(',)h(causes)f(Readline)g(to)g(matc)m +(h)g(\014les)f(whose)1110 518 y(names)44 b(b)s(egin)g(with)g(a)g(`)p +Ft(.)p Fu(')g(\(hidden)f(\014les\))i(when)e(p)s(erforming)g(\014lename) +1110 628 y(completion.)75 b(If)41 b(set)g(to)h(`)p Ft(off)p +Fu(',)i(the)e(leading)g(`)p Ft(.)p Fu(')f(m)m(ust)g(b)s(e)g(supplied)f +(b)m(y)1110 737 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f +(completed.)53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p +Ft(on)p Fu(')g(b)m(y)1110 847 y(default.)630 1011 y Ft +(menu-complete-display-pr)o(efix)1110 1121 y Fu(If)f(set)h(to)g(`)p +Ft(on)p Fu(',)h(men)m(u)e(completion)i(displa)m(ys)e(the)h(common)g +(pre\014x)e(of)i(the)1110 1230 y(list)k(of)g(p)s(ossible)f(completions) +i(\(whic)m(h)e(ma)m(y)h(b)s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 +1340 y(through)30 b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p +Ft(off)p Fu('.)630 1504 y Ft(output-meta)1110 1614 y +Fu(If)35 b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(displa)m(y) +f(c)m(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 1724 +y(set)h(directly)g(rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s +(e)h(sequence.)59 b(The)1110 1833 y(default)26 b(is)f(`)p +Ft(off)p Fu(',)i(but)e(Readline)h(will)g(set)g(it)g(to)h(`)p +Ft(on)p Fu(')e(if)h(the)f(lo)s(cale)j(con)m(tains)1110 +1943 y(eigh)m(t-bit)k(c)m(haracters.)630 2107 y Ft(page-completions) +1110 2217 y Fu(If)h(set)i(to)f(`)p Ft(on)p Fu(',)h(Readline)g(uses)e +(an)h(in)m(ternal)h Ft(more)p Fu(-lik)m(e)f(pager)g(to)h(displa)m(y) +1110 2326 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g +(time.)47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Ft(on)p +Fu(')1110 2436 y(b)m(y)e(default.)630 2600 y Ft +(print-completions-horizo)o(ntal)o(ly)1110 2710 y Fu(If)23 +b(set)i(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)f(displa)m(y)g +(completions)h(with)f(matc)m(hes)h(sorted)1110 2819 y(horizon)m(tally) +45 b(in)e(alphab)s(etical)i(order,)i(rather)c(than)g(do)m(wn)g(the)h +(screen.)1110 2929 y(The)30 b(default)g(is)h(`)p Ft(off)p +Fu('.)630 3093 y Ft(revert-all-at-newline)1110 3203 y +Fu(If)e(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)g(undo)f(all)h +(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110 3313 +y(returning)f(when)f Ft(accept-line)f Fu(is)j(executed.)41 +b(By)29 b(default,)g(history)g(lines)1110 3422 y(ma)m(y)42 b(b)s(e)g(mo)s(di\014ed)e(and)h(retain)i(individual)e(undo)g(lists)h -(across)g(calls)h(to)1110 3002 y Ft(readline)p Fu(.)38 -b(The)30 b(default)h(is)f(`)p Ft(off)p Fu('.)630 3148 -y Ft(show-all-if-ambiguous)1110 3258 y Fu(This)f(alters)i(the)f +(across)g(calls)h(to)1110 3532 y Ft(readline)p Fu(.)38 +b(The)30 b(default)h(is)f(`)p Ft(off)p Fu('.)630 3696 +y Ft(show-all-if-ambiguous)1110 3806 y Fu(This)f(alters)i(the)f (default)g(b)s(eha)m(vior)g(of)g(the)h(completion)g(functions.)40 -b(If)29 b(set)1110 3367 y(to)f(`)p Ft(on)p Fu(',)g(w)m(ords)f(whic)m(h) +b(If)29 b(set)1110 3915 y(to)f(`)p Ft(on)p Fu(',)g(w)m(ords)f(whic)m(h) g(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause) -1110 3477 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i -(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 3587 y(The)30 +1110 4025 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i +(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 4134 y(The)30 b(default)g(v)-5 b(alue)31 b(is)g(`)p Ft(off)p Fu('.)630 -3733 y Ft(show-all-if-unmodified)1110 3842 y Fu(This)38 +4299 y Ft(show-all-if-unmodified)1110 4408 y Fu(This)38 b(alters)h(the)g(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h -(functions)e(in)h(a)1110 3952 y(fashion)25 b(similar)h(to)g +(functions)e(in)h(a)1110 4518 y(fashion)25 b(similar)h(to)g Fr(sho)m(w-all-if-am)m(biguous)p Fu(.)41 b(If)25 b(set)h(to)h(`)p -Ft(on)p Fu(',)f(w)m(ords)f(whic)m(h)1110 4061 y(ha)m(v)m(e)32 +Ft(on)p Fu(',)f(w)m(ords)f(whic)m(h)1110 4628 y(ha)m(v)m(e)32 b(more)f(than)f(one)i(p)s(ossible)e(completion)i(without)f(an)m(y)g(p)s -(ossible)f(par-)1110 4171 y(tial)43 b(completion)h(\(the)f(p)s(ossible) -f(completions)h(don't)f(share)g(a)h(common)1110 4281 +(ossible)f(par-)1110 4737 y(tial)43 b(completion)h(\(the)f(p)s(ossible) +f(completions)h(don't)f(share)g(a)h(common)1110 4847 y(pre\014x\))30 b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g -(immediately)i(instead)e(of)h(ring-)1110 4390 y(ing)g(the)f(b)s(ell.)41 +(immediately)i(instead)e(of)h(ring-)1110 4956 y(ing)g(the)f(b)s(ell.)41 b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Ft(off)p -Fu('.)630 4536 y Ft(show-mode-in-prompt)1110 4646 y Fu(If)g(set)g(to)h -(`)p Ft(on)p Fu(',)f(add)f(a)i(c)m(haracter)g(to)g(the)f(b)s(eginning)g -(of)g(the)g(prompt)f(indi-)1110 4756 y(cating)j(the)g(editing)f(mo)s -(de:)42 b(emacs,)33 b(vi)e(command,)g(or)g(vi)g(insertion.)43 -b(The)1110 4865 y(mo)s(de)30 b(strings)g(are)h(user-settable.)42 -b(The)30 b(default)g(v)-5 b(alue)31 b(is)g(`)p Ft(off)p -Fu('.)630 5011 y Ft(skip-completed-text)1110 5121 y Fu(If)h(set)i(to)f -(`)p Ft(on)p Fu(',)h(this)f(alters)g(the)g(default)g(completion)h(b)s -(eha)m(vior)f(when)f(in-)1110 5230 y(serting)d(a)h(single)g(matc)m(h)f -(in)m(to)h(the)g(line.)40 b(It's)30 b(only)f(activ)m(e)i(when)d(p)s -(erform-)1110 5340 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f -(w)m(ord.)53 b(If)35 b(enabled,)g(readline)g(do)s(es)p -eop end -%%Page: 113 119 -TeXDict begin 113 118 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(113)1110 299 y(not)41 +Fu('.)630 5121 y Ft(show-mode-in-prompt)1110 5230 y Fu(If)24 +b(set)h(to)g(`)p Ft(on)p Fu(',)g(add)f(a)h(string)f(to)h(the)f(b)s +(eginning)g(of)g(the)h(prompt)e(indicating)1110 5340 +y(the)33 b(editing)h(mo)s(de:)46 b(emacs,)35 b(vi)e(command,)h(or)f(vi) +h(insertion.)49 b(The)32 b(mo)s(de)p eop end +%%Page: 116 122 +TeXDict begin 116 121 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(116)1110 299 y(strings)45 +b(are)h(user-settable)g(\(e.g.,)51 b Fr(emacs-mo)s(de-string)8 +b Fu(\).)87 b(The)45 b(default)1110 408 y(v)-5 b(alue)31 +b(is)f(`)p Ft(off)p Fu('.)630 558 y Ft(skip-completed-text)1110 +667 y Fu(If)i(set)i(to)f(`)p Ft(on)p Fu(',)h(this)f(alters)g(the)g +(default)g(completion)h(b)s(eha)m(vior)f(when)f(in-)1110 +777 y(serting)d(a)h(single)g(matc)m(h)f(in)m(to)h(the)g(line.)40 +b(It's)30 b(only)f(activ)m(e)i(when)d(p)s(erform-)1110 +887 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f(w)m(ord.)53 +b(If)35 b(enabled,)g(readline)g(do)s(es)1110 996 y(not)41 b(insert)f(c)m(haracters)i(from)e(the)h(completion)h(that)f(matc)m(h)g -(c)m(haracters)1110 408 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f(b) -s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110 -518 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45 +(c)m(haracters)1110 1106 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f +(b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110 +1215 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45 b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110 -628 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g -(after)h(the)g(`)p Ft(e)p Fu(')f(in)1110 737 y(`)p Ft(Makefile)p +1325 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g +(after)h(the)g(`)p Ft(e)p Fu(')f(in)1110 1435 y(`)p Ft(Makefile)p Fu(')c(will)i(result)f(in)g(`)p Ft(Makefile)p Fu(')f(rather)h(than)h(`) -p Ft(Makefilefile)p Fu(',)1110 847 y(assuming)d(there)g(is)h(a)f +p Ft(Makefilefile)p Fu(',)1110 1544 y(assuming)d(there)g(is)h(a)f (single)h(p)s(ossible)f(completion.)56 b(The)35 b(default)g(v)-5 -b(alue)1110 956 y(is)30 b(`)p Ft(off)p Fu('.)630 1117 -y Ft(vi-cmd-mode-string)1110 1226 y Fu(This)f(string)h(is)f(displa)m(y) -m(ed)i(immediately)g(b)s(efore)e(the)h(last)g(line)h(of)e(the)h(pri-) -1110 1336 y(mary)21 b(prompt)g(when)f(vi)i(editing)g(mo)s(de)f(is)g -(activ)m(e)j(and)d(in)g(command)g(mo)s(de.)1110 1445 -y(The)38 b(v)-5 b(alue)39 b(is)f(expanded)f(lik)m(e)j(a)f(k)m(ey)g -(binding,)g(so)g(the)f(standard)g(set)h(of)1110 1555 -y(meta-)30 b(and)e(con)m(trol)i(pre\014xes)e(and)g(bac)m(kslash)h -(escap)s(e)g(sequences)g(is)g(a)m(v)-5 b(ail-)1110 1665 -y(able.)50 b(Use)33 b(the)h(`)p Ft(\\1)p Fu(')f(and)g(`)p -Ft(\\2)p Fu(')g(escap)s(es)g(to)h(b)s(egin)f(and)g(end)f(sequences)i -(of)1110 1774 y(non-prin)m(ting)40 b(c)m(haracters,)45 -b(whic)m(h)40 b(can)g(b)s(e)g(used)g(to)h(em)m(b)s(ed)f(a)g(terminal) -1110 1884 y(con)m(trol)32 b(sequence)f(in)m(to)g(the)f(mo)s(de)g -(string.)41 b(The)30 b(default)h(is)f(`)p Ft(\(cmd\))p -Fu('.)630 2044 y Ft(vi-ins-mode-string)1110 2153 y Fu(This)f(string)h -(is)f(displa)m(y)m(ed)i(immediately)g(b)s(efore)e(the)h(last)g(line)h -(of)e(the)h(pri-)1110 2263 y(mary)25 b(prompt)f(when)g(vi)h(editing)h -(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.)1110 -2373 y(The)38 b(v)-5 b(alue)39 b(is)f(expanded)f(lik)m(e)j(a)f(k)m(ey)g -(binding,)g(so)g(the)f(standard)g(set)h(of)1110 2482 -y(meta-)30 b(and)e(con)m(trol)i(pre\014xes)e(and)g(bac)m(kslash)h -(escap)s(e)g(sequences)g(is)g(a)m(v)-5 b(ail-)1110 2592 -y(able.)50 b(Use)33 b(the)h(`)p Ft(\\1)p Fu(')f(and)g(`)p -Ft(\\2)p Fu(')g(escap)s(es)g(to)h(b)s(egin)f(and)g(end)f(sequences)i -(of)1110 2701 y(non-prin)m(ting)40 b(c)m(haracters,)45 -b(whic)m(h)40 b(can)g(b)s(e)g(used)g(to)h(em)m(b)s(ed)f(a)g(terminal) -1110 2811 y(con)m(trol)32 b(sequence)f(in)m(to)g(the)f(mo)s(de)g -(string.)41 b(The)30 b(default)h(is)f(`)p Ft(\(ins\))p -Fu('.)630 2971 y Ft(visible-stats)1110 3081 y Fu(If)h(set)i(to)f(`)p -Ft(on)p Fu(',)h(a)f(c)m(haracter)i(denoting)e(a)g(\014le's)g(t)m(yp)s -(e)g(is)g(app)s(ended)e(to)j(the)1110 3190 y(\014lename)e(when)e -(listing)i(p)s(ossible)f(completions.)42 b(The)30 b(default)g(is)h(`)p -Ft(off)p Fu('.)150 3351 y(Key)f(Bindings)630 3460 y(The)41 -b(syn)m(tax)i(for)f(con)m(trolling)h(k)m(ey)g(bindings)e(in)h(the)g -(init)g(\014le)g(is)g(simple.)75 b(First)43 b(y)m(ou)630 -3570 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)h(the)g(command)f(that)i -(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41 b(The)27 b(follo)m(wing)630 -3679 y(sections)37 b(con)m(tain)g(tables)g(of)f(the)g(command)f(name,)j -(the)e(default)g(k)m(eybinding,)h(if)f(an)m(y)-8 b(,)630 -3789 y(and)30 b(a)h(short)f(description)g(of)h(what)f(the)g(command)h -(do)s(es.)630 3924 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g(name)g(of)g -(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g(the)g(init)630 -4033 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m(ou)g(wish)f(to)h -(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then)630 -4143 y(the)f(name)h(of)f(the)g(command.)46 b(There)32 +b(alue)1110 1654 y(is)30 b(`)p Ft(off)p Fu('.)630 1803 +y Ft(vi-cmd-mode-string)1110 1913 y Fu(If)j(the)h Fr(sho)m(w-mo)s +(de-in-prompt)h Fu(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f +(is)h(dis-)1110 2022 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the) +g(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110 +2132 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command) +g(mo)s(de.)46 b(The)31 b(v)-5 b(alue)33 b(is)f(ex-)1110 +2242 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f +(standard)f(set)h(of)g(meta-)h(and)e(con)m(trol)1110 +2351 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is) +g(a)m(v)-5 b(ailable.)57 b(Use)35 b(the)g(`)p Ft(\\1)p +Fu(')1110 2461 y(and)23 b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s +(egin)g(and)f(end)g(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 +2570 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a) +h(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 2680 +y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p +Ft(\(cmd\))p Fu('.)630 2829 y Ft(vi-ins-mode-string)1110 +2939 y Fu(If)j(the)h Fr(sho)m(w-mo)s(de-in-prompt)h Fu(v)-5 +b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110 +3049 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f +(of)h(the)f(primary)f(prompt)g(when)1110 3158 y(vi)35 +b(editing)h(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.) +54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 3268 y(panded)26 +b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f(standard)f(set)h(of)g +(meta-)h(and)e(con)m(trol)1110 3377 y(pre\014xes)34 b(and)g(bac)m +(kslash)i(escap)s(e)g(sequences)f(is)g(a)m(v)-5 b(ailable.)57 +b(Use)35 b(the)g(`)p Ft(\\1)p Fu(')1110 3487 y(and)23 +b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s(egin)g(and)f(end)g +(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 3597 +y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)h +(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 3706 +y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p +Ft(\(ins\))p Fu('.)630 3856 y Ft(visible-stats)1110 3965 +y Fu(If)h(set)i(to)f(`)p Ft(on)p Fu(',)h(a)f(c)m(haracter)i(denoting)e +(a)g(\014le's)g(t)m(yp)s(e)g(is)g(app)s(ended)e(to)j(the)1110 +4075 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42 +b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)150 4224 +y(Key)f(Bindings)630 4334 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h +(k)m(ey)g(bindings)e(in)h(the)g(init)g(\014le)g(is)g(simple.)75 +b(First)43 b(y)m(ou)630 4443 y(need)27 b(to)i(\014nd)d(the)i(name)f(of) +h(the)g(command)f(that)i(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41 +b(The)27 b(follo)m(wing)630 4553 y(sections)37 b(con)m(tain)g(tables)g +(of)f(the)g(command)f(name,)j(the)e(default)g(k)m(eybinding,)h(if)f(an) +m(y)-8 b(,)630 4663 y(and)30 b(a)h(short)f(description)g(of)h(what)f +(the)g(command)h(do)s(es.)630 4792 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g +(name)g(of)g(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g +(the)g(init)630 4902 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m +(ou)g(wish)f(to)h(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then) +630 5011 y(the)f(name)h(of)f(the)g(command.)46 b(There)32 b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g -(and)630 4253 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m +(and)630 5121 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m (terpreted)g(as)g(part)f(of)h(the)g(k)m(ey)h(name.)72 -b(The)40 b(name)h(of)630 4362 y(the)35 b(k)m(ey)g(can)g(b)s(e)f +b(The)40 b(name)h(of)630 5230 y(the)35 b(k)m(ey)g(can)g(b)s(e)f (expressed)f(in)i(di\013eren)m(t)g(w)m(a)m(ys,)h(dep)s(ending)d(on)h -(what)h(y)m(ou)g(\014nd)e(most)630 4472 y(comfortable.)630 -4607 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h -(k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f(string)630 -4716 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g -(\(a)h Fr(macro)5 b Fu(\).)630 4851 y(The)42 b Ft(bind)30 -b(-p)42 b Fu(command)h(displa)m(ys)g(Readline)g(function)g(names)g(and) -f(bindings)g(in)h(a)630 4961 y(format)37 b(that)h(can)f(put)f(directly) -i(in)m(to)g(an)f(initialization)j(\014le.)60 b(See)38 -b(Section)f(4.2)i([Bash)630 5070 y(Builtins],)31 b(page)g(49.)630 -5230 y Fr(k)m(eyname)5 b Fu(:)42 b Fr(function-name)35 -b Fu(or)c Fr(macro)1110 5340 y(k)m(eyname)k Fu(is)29 +(what)h(y)m(ou)g(\014nd)e(most)630 5340 y(comfortable.)p +eop end +%%Page: 117 123 +TeXDict begin 117 122 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(117)630 299 y(In)35 +b(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h(k)m(eys)g +(to)g(b)s(e)e(b)s(ound)f(to)j(a)f(string)630 408 y(that)31 +b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g(\(a)h +Fr(macro)5 b Fu(\).)630 538 y(The)42 b Ft(bind)30 b(-p)42 +b Fu(command)h(displa)m(ys)g(Readline)g(function)g(names)g(and)f +(bindings)g(in)h(a)630 647 y(format)37 b(that)h(can)f(put)f(directly)i +(in)m(to)g(an)f(initialization)j(\014le.)60 b(See)38 +b(Section)f(4.2)i([Bash)630 757 y(Builtins],)31 b(page)g(50.)630 +906 y Fr(k)m(eyname)5 b Fu(:)42 b Fr(function-name)35 +b Fu(or)c Fr(macro)1110 1015 y(k)m(eyname)k Fu(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s(elled)e(out)h(in)g(English.)39 -b(F)-8 b(or)30 b(example:)p eop end -%%Page: 114 120 -TeXDict begin 114 119 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(114)1350 299 y Ft(Control-u:)45 -b(universal-argument)1350 408 y(Meta-Rubout:)f(backward-kill-word)1350 -518 y(Control-o:)h(">)i(output")1110 650 y Fu(In)94 b(the)g(ab)s(o)m(v) -m(e)i(example,)111 b Fj(C-u)94 b Fu(is)g(b)s(ound)f(to)i(the)f -(function)1110 760 y Ft(universal-argument)p Fu(,)124 -b Fj(M-DEL)107 b Fu(is)i(b)s(ound)e(to)j(the)f(function)1110 -869 y Ft(backward-kill-word)p Fu(,)75 b(and)69 b Fj(C-o)g -Fu(is)h(b)s(ound)e(to)j(run)d(the)i(macro)1110 979 y(expressed)45 +b(F)-8 b(or)30 b(example:)1350 1144 y Ft(Control-u:)45 +b(universal-argument)1350 1254 y(Meta-Rubout:)f(backward-kill-word)1350 +1363 y(Control-o:)h(">)i(output")1110 1493 y Fu(In)94 +b(the)g(example)h(ab)s(o)m(v)m(e,)112 b Fj(C-u)94 b Fu(is)g(b)s(ound)f +(to)i(the)f(function)1110 1602 y Ft(universal-argument)p +Fu(,)124 b Fj(M-DEL)107 b Fu(is)i(b)s(ound)e(to)j(the)f(function)1110 +1712 y Ft(backward-kill-word)p Fu(,)75 b(and)69 b Fj(C-o)g +Fu(is)h(b)s(ound)e(to)j(run)d(the)i(macro)1110 1821 y(expressed)45 b(on)h(the)g(righ)m(t)g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the) -h(text)h(`)p Ft(>)1110 1089 y(output)p Fu(')29 b(in)m(to)i(the)g -(line\).)1110 1221 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m -(haracter)g(names)f(are)g(recognized)h(while)1110 1330 +h(text)h(`)p Ft(>)1110 1931 y(output)p Fu(')29 b(in)m(to)i(the)g +(line\).)1110 2060 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m +(haracter)g(names)f(are)g(recognized)h(while)1110 2170 y(pro)s(cessing)40 b(this)f(k)m(ey)i(binding)e(syn)m(tax:)60 b Fr(DEL)p Fu(,)42 b Fr(ESC)p Fu(,)g Fr(ESCAPE)p Fu(,)f -Fr(LFD)p Fu(,)1110 1440 y Fr(NEWLINE)p Fu(,)31 b Fr(RET)p +Fr(LFD)p Fu(,)1110 2279 y Fr(NEWLINE)p Fu(,)31 b Fr(RET)p Fu(,)f Fr(RETURN)p Fu(,)g Fr(R)m(UBOUT)p Fu(,)h Fr(SP)-8 b(A)m(CE)p Fu(,)31 b Fr(SPC)p Fu(,)e(and)h Fr(T)-8 b(AB)p -Fu(.)630 1595 y Ft(")p Fr(k)m(eyseq)r Ft(")p Fu(:)41 -b Fr(function-name)36 b Fu(or)30 b Fr(macro)1110 1704 +Fu(.)630 2428 y Ft(")p Fr(k)m(eyseq)r Ft(")p Fu(:)41 +b Fr(function-name)36 b Fu(or)30 b Fr(macro)1110 2538 y(k)m(eyseq)k Fu(di\013ers)d(from)f Fr(k)m(eyname)37 b Fu(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f(denoting)g(an)g(en-)1110 -1814 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)f(sp)s(eci\014ed,)h(b)m -(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110 1923 +2647 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)f(sp)s(eci\014ed,)h(b)m +(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110 2757 y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h Fu(Emacs)f(st)m(yle)i(k)m -(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as)1110 2033 +(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as)1110 2866 y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s(ecial)h(c)m -(haracter)g(names)f(are)g(not)1110 2143 y(recognized.)1350 -2275 y Ft("\\C-u":)46 b(universal-argument)1350 2384 -y("\\C-x\\C-r":)f(re-read-init-file)1350 2494 y("\\e[11~":)g("Function) -h(Key)g(1")1110 2626 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 +(haracter)g(names)f(are)g(not)1110 2976 y(recognized.)1350 +3105 y Ft("\\C-u":)46 b(universal-argument)1350 3215 +y("\\C-x\\C-r":)f(re-read-init-file)1350 3324 y("\\e[11~":)g("Function) +h(Key)g(1")1110 3453 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 b Fj(C-u)64 b Fu(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110 -2736 y Ft(universal-argument)39 b Fu(\(just)k(as)h(it)g(w)m(as)g(in)g -(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 2845 +3563 y Ft(universal-argument)39 b Fu(\(just)k(as)h(it)g(w)m(as)g(in)g +(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 3673 y(C-r)p Fu(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f Ft(re-read-init-file)p Fu(,)c(and)j(`)p Ft(ESC)h([)g(1)g(1)1110 -2955 y(~)p Fu(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p -Ft(Function)e(Key)g(1)p Fu('.)630 3110 y(The)g(follo)m(wing)i +3782 y(~)p Fu(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p +Ft(Function)e(Key)g(1)p Fu('.)630 3931 y(The)g(follo)m(wing)i Fm(gnu)f Fu(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5 -b(ailable)32 b(when)d(sp)s(ecifying)630 3219 y(k)m(ey)i(sequences:)630 -3374 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630 -3529 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 3683 y +b(ailable)32 b(when)d(sp)s(ecifying)630 4041 y(k)m(ey)i(sequences:)630 +4189 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630 +4338 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 4487 y Fj(\\e)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)630 -3838 y Fj(\\\\)384 b Fu(bac)m(kslash)630 3993 y Fj(\\)p +4635 y Fj(\\\\)384 b Fu(bac)m(kslash)630 4784 y Fj(\\)p Ft(")g(")p Fu(,)30 b(a)h(double)f(quotation)i(mark)630 -4147 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s -(ostrophe)630 4302 y(In)d(addition)h(to)g(the)g Fm(gnu)f +4933 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s +(ostrophe)630 5082 y(In)d(addition)h(to)g(the)g Fm(gnu)f Fu(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g -(bac)m(kslash)630 4412 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 -4566 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 4721 -y Ft(\\b)384 b Fu(bac)m(kspace)630 4876 y Ft(\\d)g Fu(delete)630 -5031 y Ft(\\f)g Fu(form)30 b(feed)630 5185 y Ft(\\n)384 -b Fu(newline)630 5340 y Ft(\\r)g Fu(carriage)32 b(return)p -eop end -%%Page: 115 121 -TeXDict begin 115 120 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(115)630 299 y Ft(\\t)384 -b Fu(horizon)m(tal)32 b(tab)630 451 y Ft(\\v)384 b Fu(v)m(ertical)32 -b(tab)630 604 y Ft(\\)p Fj(nnn)288 b Fu(the)35 b(eigh)m(t-bit)h(c)m +(bac)m(kslash)630 5191 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 +5340 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))p eop end +%%Page: 118 124 +TeXDict begin 118 123 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(118)630 299 y Ft(\\b)384 +b Fu(bac)m(kspace)630 456 y Ft(\\d)g Fu(delete)630 613 +y Ft(\\f)g Fu(form)30 b(feed)630 770 y Ft(\\n)384 b Fu(newline)630 +928 y Ft(\\r)g Fu(carriage)32 b(return)630 1085 y Ft(\\t)384 +b Fu(horizon)m(tal)32 b(tab)630 1242 y Ft(\\v)384 b Fu(v)m(ertical)32 +b(tab)630 1399 y Ft(\\)p Fj(nnn)288 b Fu(the)35 b(eigh)m(t-bit)h(c)m (haracter)g(whose)e(v)-5 b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 -b(alue)35 b Fr(nnn)e Fu(\(one)i(to)1110 713 y(three)c(digits\))630 -866 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g +b(alue)35 b Fr(nnn)e Fu(\(one)i(to)1110 1509 y(three)c(digits\))630 +1666 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g (whose)e(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 -b(alue)39 b Fr(HH)1110 975 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e -(digits\))630 1128 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g +b(alue)39 b Fr(HH)1110 1775 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e +(digits\))630 1933 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g (macro,)i(single)e(or)f(double)g(quotes)h(m)m(ust)f(b)s(e)g(used)f(to) -630 1237 y(indicate)23 b(a)e(macro)h(de\014nition.)38 +630 2042 y(indicate)23 b(a)e(macro)h(de\014nition.)38 b(Unquoted)21 b(text)i(is)e(assumed)g(to)h(b)s(e)f(a)h(function)f -(name.)38 b(In)630 1347 y(the)22 b(macro)f(b)s(o)s(dy)-8 +(name.)38 b(In)630 2152 y(the)22 b(macro)f(b)s(o)s(dy)-8 b(,)23 b(the)e(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m -(e)j(are)e(expanded.)37 b(Bac)m(kslash)630 1456 y(will)j(quote)h(an)m +(e)j(are)e(expanded.)37 b(Bac)m(kslash)630 2261 y(will)j(quote)h(an)m (y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39 b(`)p Ft(")p Fu(')h(and)g(`)p Ft(')p Fu('.)69 b(F)-8 -b(or)630 1566 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i +b(or)630 2371 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i (mak)m(e)h(`)p Fj(C-x)j Ft(\\)p Fu(')c(insert)f(a)h(single)h(`)p -Ft(\\)p Fu(')f(in)m(to)g(the)g(line:)870 1697 y Ft("\\C-x\\\\":)45 -b("\\\\")150 1889 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs) -150 2036 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f +Ft(\\)p Fu(')f(in)m(to)g(the)g(line:)870 2504 y Ft("\\C-x\\\\":)45 +b("\\\\")150 2701 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs) +150 2848 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f (in)g(spirit)f(to)i(the)f(conditional)h(compilation)g(features)f(of)150 -2146 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g +2958 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g (bindings)d(and)h(v)-5 b(ariable)32 b(settings)f(to)h(b)s(e)e(p)s -(erformed)f(as)i(the)150 2255 y(result)f(of)h(tests.)41 +(erformed)f(as)i(the)150 3067 y(result)f(of)h(tests.)41 b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(used.)150 -2408 y Ft($if)336 b Fu(The)31 b Ft($if)f Fu(construct)i(allo)m(ws)h +3225 y Ft($if)336 b Fu(The)31 b Ft($if)f Fu(construct)i(allo)m(ws)h (bindings)d(to)i(b)s(e)e(made)i(based)f(on)g(the)g(editing)h(mo)s(de,)g -(the)630 2517 y(terminal)39 b(b)s(eing)e(used,)j(or)e(the)g -(application)h(using)f(Readline.)64 b(The)38 b(text)h(of)f(the)g(test) -630 2627 y(extends)30 b(to)h(the)g(end)f(of)g(the)h(line;)g(no)f(c)m -(haracters)i(are)f(required)e(to)i(isolate)i(it.)630 -2779 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e Fu(form)i(of)g(the)h -Ft($if)e Fu(directiv)m(e)j(is)e(used)f(to)i(test)g(whether)e(Read-)1110 -2889 y(line)44 b(is)f(in)g Ft(emacs)f Fu(or)h Ft(vi)g -Fu(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g(conjunction) -1110 2998 y(with)c(the)h(`)p Ft(set)29 b(keymap)p Fu(')38 -b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110 -3108 y(the)32 b Ft(emacs-standard)c Fu(and)j Ft(emacs-ctlx)d -Fu(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 3218 y(starting)f(out)g -(in)f Ft(emacs)f Fu(mo)s(de.)630 3370 y Ft(term)288 b +(the)630 3334 y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h +(application)g(using)f(Readline.)59 b(The)36 b(text)h(of)f(the)h(test,) +630 3444 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f +(to)h(the)g(end)f(of)h(the)f(line;)i(unless)e(otherwise)630 +3553 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i +(it.)630 3711 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e +Fu(form)i(of)g(the)h Ft($if)e Fu(directiv)m(e)j(is)e(used)f(to)i(test)g +(whether)e(Read-)1110 3820 y(line)44 b(is)f(in)g Ft(emacs)f +Fu(or)h Ft(vi)g Fu(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g +(conjunction)1110 3930 y(with)c(the)h(`)p Ft(set)29 b(keymap)p +Fu(')38 b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110 +4039 y(the)32 b Ft(emacs-standard)c Fu(and)j Ft(emacs-ctlx)d +Fu(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 4149 y(starting)f(out)g +(in)f Ft(emacs)f Fu(mo)s(de.)630 4306 y Ft(term)288 b Fu(The)26 b Ft(term=)g Fu(form)g(ma)m(y)i(b)s(e)e(used)g(to)i(include)f -(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 3480 y(ings,)38 +(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 4416 y(ings,)38 b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f(output)g(b)m(y)g -(the)g(terminal's)1110 3589 y(function)24 b(k)m(eys.)39 +(the)g(terminal's)1110 4525 y(function)24 b(k)m(eys.)39 b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g(the)g(`)p -Ft(=)p Fu(')g(is)g(tested)h(against)1110 3699 y(b)s(oth)k(the)h(full)g +Ft(=)p Fu(')g(is)g(tested)h(against)1110 4635 y(b)s(oth)k(the)h(full)g (name)g(of)g(the)g(terminal)h(and)e(the)i(p)s(ortion)e(of)h(the)g -(terminal)1110 3808 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p +(terminal)1110 4744 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p Ft(-)p Fu('.)50 b(This)33 b(allo)m(ws)i Ft(sun)e Fu(to)h(matc)m(h)g(b)s -(oth)f Ft(sun)g Fu(and)1110 3918 y Ft(sun-cmd)p Fu(,)c(for)h(instance.) -630 4070 y Ft(application)1110 4180 y Fu(The)21 b Fr(application)j -Fu(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h -(set-)1110 4289 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h -(Readline)g(library)g(sets)g(the)g Fr(application)1110 -4399 y(name)p Fu(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h -(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110 -4509 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h -(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)1110 4618 -y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f -(sequence)h(that)f(quotes)1110 4728 y(the)e(curren)m(t)f(or)g(previous) -g(w)m(ord)g(in)g(Bash:)1350 4859 y Ft($if)47 b(Bash)1350 -4968 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350 -5078 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 5188 y($endif)150 -5340 y($endif)192 b Fu(This)29 b(command,)i(as)f(seen)h(in)f(the)g -(previous)g(example,)h(terminates)g(an)g Ft($if)e Fu(command.)p -eop end -%%Page: 116 122 -TeXDict begin 116 121 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(116)150 299 y Ft($else)240 -b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i(the)f -Ft($if)g Fu(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g(fails.) -150 458 y Ft($include)96 b Fu(This)43 b(directiv)m(e)i(tak)m(es)g(a)e -(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g(commands) -630 568 y(and)38 b(bindings)f(from)h(that)i(\014le.)65 +(oth)f Ft(sun)g Fu(and)1110 4854 y Ft(sun-cmd)p Fu(,)c(for)h(instance.) +630 5011 y Ft(version)144 b Fu(The)44 b Ft(version)f +Fu(test)i(ma)m(y)h(b)s(e)e(used)f(to)j(p)s(erform)d(comparisons)i +(against)1110 5121 y(sp)s(eci\014c)c(Readline)i(v)m(ersions.)74 +b(The)42 b Ft(version)d Fu(expands)i(to)h(the)g(curren)m(t)1110 +5230 y(Readline)25 b(v)m(ersion.)39 b(The)23 b(set)h(of)g(comparison)h +(op)s(erators)f(includes)f(`)p Ft(=)p Fu(')h(\(and)1110 +5340 y(`)p Ft(==)p Fu('\),)33 b(`)p Ft(!=)p Fu(',)f(`)p +Ft(<=)p Fu(',)h(`)p Ft(>=)p Fu(',)f(`)p Ft(<)p Fu(',)h(and)e(`)p +Ft(>)p Fu('.)46 b(The)31 b(v)m(ersion)i(n)m(um)m(b)s(er)d(supplied)h +(on)p eop end +%%Page: 119 125 +TeXDict begin 119 124 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(119)1110 299 y(the)34 +b(righ)m(t)h(side)f(of)g(the)g(op)s(erator)g(consists)h(of)f(a)g(ma)5 +b(jor)35 b(v)m(ersion)f(n)m(um)m(b)s(er,)1110 408 y(an)45 +b(optional)i(decimal)f(p)s(oin)m(t,)k(and)44 b(an)i(optional)g(minor)f +(v)m(ersion)h(\(e.g.,)1110 518 y(`)p Ft(7.1)p Fu('\).)40 +b(If)27 b(the)h(minor)f(v)m(ersion)h(is)g(omitted,)h(it)f(is)g(assumed) +f(to)h(b)s(e)f(`)p Ft(0)p Fu('.)40 b(The)1110 628 y(op)s(erator)34 +b(ma)m(y)g(b)s(e)f(separated)g(from)g(the)h(string)f +Ft(version)f Fu(and)h(from)g(the)1110 737 y(v)m(ersion)39 +b(n)m(um)m(b)s(er)f(argumen)m(t)h(b)m(y)f(whitespace.)67 +b(The)38 b(follo)m(wing)i(example)1110 847 y(sets)31 +b(a)g(v)-5 b(ariable)31 b(if)f(the)h(Readline)g(v)m(ersion)f(b)s(eing)g +(used)g(is)g(7.0)i(or)e(new)m(er:)1350 981 y Ft($if)47 +b(version)f(>=)h(7.0)1350 1091 y(set)g(show-mode-in-prompt)42 +b(on)1350 1200 y($endif)630 1360 y(application)1110 1469 +y Fu(The)21 b Fr(application)j Fu(construct)e(is)g(used)f(to)i(include) +f(application-sp)s(eci\014c)h(set-)1110 1579 y(tings.)39 +b(Eac)m(h)26 b(program)e(using)g(the)h(Readline)g(library)g(sets)g(the) +g Fr(application)1110 1689 y(name)p Fu(,)g(and)e(y)m(ou)g(can)h(test)g +(for)f(a)g(particular)h(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g +(used)f(to)1110 1798 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e +(useful)g(for)h(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 +b(or)1110 1908 y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f +(a)i(k)m(ey)f(sequence)h(that)f(quotes)1110 2017 y(the)e(curren)m(t)f +(or)g(previous)g(w)m(ord)g(in)g(Bash:)1350 2152 y Ft($if)47 +b(Bash)1350 2262 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word) +1350 2371 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 2481 y($endif)630 +2640 y(variable)96 b Fu(The)33 b Fr(v)-5 b(ariable)39 +b Fu(construct)33 b(pro)m(vides)g(simple)g(equalit)m(y)i(tests)e(for)g +(Readline)1110 2750 y(v)-5 b(ariables)32 b(and)f(v)-5 +b(alues.)45 b(The)32 b(p)s(ermitted)f(comparison)h(op)s(erators)f(are)i +(`)p Ft(=)p Fu(',)1110 2859 y(`)p Ft(==)p Fu(',)49 b(and)44 +b(`)p Ft(!=)p Fu('.)85 b(The)44 b(v)-5 b(ariable)46 b(name)f(m)m(ust)g +(b)s(e)g(separated)g(from)g(the)1110 2969 y(comparison)25 +b(op)s(erator)g(b)m(y)g(whitespace;)j(the)d(op)s(erator)g(ma)m(y)g(b)s +(e)f(separated)1110 3078 y(from)33 b(the)h(v)-5 b(alue)35 +b(on)f(the)g(righ)m(t)g(hand)f(side)h(b)m(y)f(whitespace.)52 +b(Both)35 b(string)1110 3188 y(and)i(b)s(o)s(olean)g(v)-5 +b(ariables)38 b(ma)m(y)h(b)s(e)d(tested.)63 b(Bo)s(olean)39 +b(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 3298 y(tested)46 +b(against)g(the)f(v)-5 b(alues)46 b Fr(on)f Fu(and)f +Fr(o\013)p Fu(.)85 b(The)45 b(follo)m(wing)h(example)g(is)1110 +3407 y(equiv)-5 b(alen)m(t)32 b(to)f(the)f Ft(mode=emacs)e +Fu(test)j(describ)s(ed)f(ab)s(o)m(v)m(e:)1350 3542 y +Ft($if)47 b(editing-mode)d(==)k(emacs)1350 3651 y(set)f +(show-mode-in-prompt)42 b(on)1350 3761 y($endif)150 3920 +y($endif)192 b Fu(This)29 b(command,)i(as)f(seen)h(in)f(the)g(previous) +g(example,)h(terminates)g(an)g Ft($if)e Fu(command.)150 +4080 y Ft($else)240 b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i +(the)f Ft($if)g Fu(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g +(fails.)150 4239 y Ft($include)96 b Fu(This)43 b(directiv)m(e)i(tak)m +(es)g(a)e(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g +(commands)630 4349 y(and)38 b(bindings)f(from)h(that)i(\014le.)65 b(F)-8 b(or)39 b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e -(from)630 677 y Ft(/etc/inputrc)p Fu(:)870 812 y Ft($include)46 -b(/etc/inputrc)150 1011 y Fk(8.3.3)63 b(Sample)41 b(Init)g(File)150 -1158 y Fu(Here)27 b(is)f(an)h(example)g(of)f(an)h Fr(inputrc)k +(from)630 4458 y Ft(/etc/inputrc)p Fu(:)870 4593 y Ft($include)46 +b(/etc/inputrc)150 4792 y Fk(8.3.3)63 b(Sample)41 b(Init)g(File)150 +4939 y Fu(Here)27 b(is)f(an)h(example)g(of)f(an)h Fr(inputrc)k Fu(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5 -b(ariable)27 b(assignmen)m(t,)i(and)150 1268 y(conditional)j(syn)m +b(ariable)27 b(assignmen)m(t,)i(and)150 5049 y(conditional)j(syn)m (tax.)p eop end -%%Page: 117 123 -TeXDict begin 117 122 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(117)390 408 y Ft(#)47 +%%Page: 120 126 +TeXDict begin 120 125 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(120)390 408 y Ft(#)47 b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h (editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h (Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include) @@ -16496,9 +16862,9 @@ y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(keypad)f(mode)390 4902 y(#)390 5011 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(ANSI)g(mode) 390 5121 y(#)390 5230 y(#"\\M-\\C-[D":)331 b(backward-char)390 5340 y(#"\\M-\\C-[C":)g(forward-char)p eop end -%%Page: 118 124 -TeXDict begin 118 123 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(118)390 299 y Ft(#"\\M-\\C-[A":) +%%Page: 121 127 +TeXDict begin 121 126 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(121)390 299 y Ft(#"\\M-\\C-[A":) 331 b(previous-history)390 408 y(#"\\M-\\C-[B":)g(next-history)390 628 y(C-q:)47 b(quoted-insert)390 847 y($endif)390 1066 y(#)g(An)h(old-style)d(binding.)93 b(This)47 b(happens)f(to)h(be)g(the) @@ -16531,2075 +16897,2182 @@ y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h (completions)e(for)390 5121 y(#)j(a)h(word,)e(ask)h(the)g(user)g(if)g (he)g(wants)f(to)i(see)f(all)f(of)i(them)390 5230 y(set)f (completion-query-items)42 b(150)p eop end -%%Page: 119 125 -TeXDict begin 119 124 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(119)390 299 y Ft(#)47 +%%Page: 122 128 +TeXDict begin 122 127 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(122)390 299 y Ft(#)47 b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390 628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390 -847 y($endif)150 1083 y Fs(8.4)68 b(Bindable)45 b(Readline)i(Commands) -150 1242 y Fu(This)32 b(section)h(describ)s(es)f(Readline)h(commands)f +847 y($endif)150 1089 y Fs(8.4)68 b(Bindable)45 b(Readline)i(Commands) +150 1248 y Fu(This)32 b(section)h(describ)s(es)f(Readline)h(commands)f (that)h(ma)m(y)h(b)s(e)d(b)s(ound)g(to)i(k)m(ey)g(sequences.)48 -b(Y)-8 b(ou)33 b(can)150 1352 y(list)40 b(y)m(our)f(k)m(ey)i(bindings)d +b(Y)-8 b(ou)33 b(can)150 1358 y(list)40 b(y)m(our)f(k)m(ey)i(bindings)d (b)m(y)h(executing)i Ft(bind)29 b(-P)39 b Fu(or,)j(for)d(a)h(more)g -(terse)g(format,)i(suitable)e(for)f(an)150 1461 y Fr(inputrc)34 +(terse)g(format,)i(suitable)e(for)f(an)150 1468 y Fr(inputrc)34 b Fu(\014le,)29 b Ft(bind)g(-p)p Fu(.)40 b(\(See)30 b(Section)f(4.2)h -([Bash)g(Builtins],)g(page)g(49.\))41 b(Command)28 b(names)h(without) -150 1571 y(an)h(accompan)m(ying)i(k)m(ey)f(sequence)g(are)g(un)m(b)s -(ound)d(b)m(y)i(default.)275 1703 y(In)25 b(the)h(follo)m(wing)i +([Bash)g(Builtins],)g(page)g(50.\))41 b(Command)28 b(names)h(without) +150 1577 y(an)h(accompan)m(ying)i(k)m(ey)f(sequence)g(are)g(un)m(b)s +(ound)d(b)m(y)i(default.)275 1713 y(In)25 b(the)h(follo)m(wing)i (descriptions,)f Fr(p)s(oin)m(t)h Fu(refers)e(to)h(the)f(curren)m(t)g (cursor)g(p)s(osition,)h(and)f Fr(mark)31 b Fu(refers)150 -1813 y(to)40 b(a)f(cursor)f(p)s(osition)h(sa)m(v)m(ed)h(b)m(y)f(the)g +1822 y(to)40 b(a)f(cursor)f(p)s(osition)h(sa)m(v)m(ed)h(b)m(y)f(the)g Ft(set-mark)d Fu(command.)66 b(The)38 b(text)i(b)s(et)m(w)m(een)g(the)f -(p)s(oin)m(t)g(and)150 1922 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f -Fr(region)p Fu(.)150 2117 y Fk(8.4.1)63 b(Commands)42 -b(F)-10 b(or)41 b(Mo)m(ving)150 2286 y Ft(beginning-of-line)26 -b(\(C-a\))630 2396 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f -(curren)m(t)g(line.)150 2551 y Ft(end-of-line)d(\(C-e\))630 -2660 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 -2815 y Ft(forward-char)c(\(C-f\))630 2924 y Fu(Mo)m(v)m(e)32 -b(forw)m(ard)e(a)h(c)m(haracter.)150 3079 y Ft(backward-char)c(\(C-b\)) -630 3189 y Fu(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150 -3343 y Ft(forward-word)d(\(M-f\))630 3453 y Fu(Mo)m(v)m(e)32 +(p)s(oin)m(t)g(and)150 1932 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f +Fr(region)p Fu(.)150 2132 y Fk(8.4.1)63 b(Commands)42 +b(F)-10 b(or)41 b(Mo)m(ving)150 2304 y Ft(beginning-of-line)26 +b(\(C-a\))630 2414 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f +(curren)m(t)g(line.)150 2574 y Ft(end-of-line)d(\(C-e\))630 +2684 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 +2844 y Ft(forward-char)c(\(C-f\))630 2954 y Fu(Mo)m(v)m(e)32 +b(forw)m(ard)e(a)h(c)m(haracter.)150 3114 y Ft(backward-char)c(\(C-b\)) +630 3223 y Fu(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150 +3384 y Ft(forward-word)d(\(M-f\))630 3493 y Fu(Mo)m(v)m(e)32 b(forw)m(ard)e(to)h(the)f(end)g(of)g(the)h(next)f(w)m(ord.)41 b(W)-8 b(ords)30 b(are)h(comp)s(osed)f(of)g(letters)i(and)630 -3563 y(digits.)150 3717 y Ft(backward-word)27 b(\(M-b\))630 -3827 y Fu(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g +3603 y(digits.)150 3763 y Ft(backward-word)27 b(\(M-b\))630 +3873 y Fu(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g (curren)m(t)f(or)g(previous)g(w)m(ord.)50 b(W)-8 b(ords)34 -b(are)g(comp)s(osed)630 3936 y(of)d(letters)g(and)f(digits.)150 -4091 y Ft(shell-forward-word)25 b(\(\))630 4201 y Fu(Mo)m(v)m(e)30 +b(are)g(comp)s(osed)630 3982 y(of)d(letters)g(and)f(digits.)150 +4143 y Ft(shell-forward-word)25 b(\(\))630 4252 y Fu(Mo)m(v)m(e)30 b(forw)m(ard)e(to)h(the)f(end)f(of)h(the)h(next)f(w)m(ord.)40 b(W)-8 b(ords)28 b(are)g(delimited)h(b)m(y)f(non-quoted)630 -4310 y(shell)j(metac)m(haracters.)150 4465 y Ft(shell-backward-word)25 -b(\(\))630 4575 y Fu(Mo)m(v)m(e)37 b(bac)m(k)e(to)h(the)f(start)g(of)g +4362 y(shell)j(metac)m(haracters.)150 4522 y Ft(shell-backward-word)25 +b(\(\))630 4632 y Fu(Mo)m(v)m(e)37 b(bac)m(k)e(to)h(the)f(start)g(of)g (the)g(curren)m(t)g(or)f(previous)h(w)m(ord.)53 b(W)-8 -b(ords)35 b(are)g(delimited)630 4684 y(b)m(y)30 b(non-quoted)h(shell)f -(metac)m(haracters.)150 4839 y Ft(clear-screen)d(\(C-l\))630 -4948 y Fu(Clear)g(the)g(screen)f(and)h(redra)m(w)f(the)h(curren)m(t)f -(line,)i(lea)m(ving)g(the)f(curren)m(t)g(line)g(at)g(the)g(top)630 -5058 y(of)k(the)f(screen.)150 5213 y Ft(redraw-current-line)25 -b(\(\))630 5322 y Fu(Refresh)30 b(the)g(curren)m(t)h(line.)41 -b(By)30 b(default,)h(this)f(is)h(un)m(b)s(ound.)p eop -end -%%Page: 120 126 -TeXDict begin 120 125 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(120)150 299 y Fk(8.4.2)63 -b(Commands)42 b(F)-10 b(or)41 b(Manipulating)h(The)f(History)150 -473 y Ft(accept-line)27 b(\(Newline)h(or)i(Return\))630 -582 y Fu(Accept)25 b(the)e(line)h(regardless)g(of)f(where)g(the)h -(cursor)e(is.)39 b(If)23 b(this)g(line)h(is)f(non-empt)m(y)-8 -b(,)26 b(add)c(it)630 692 y(to)27 b(the)f(history)g(list)h(according)g -(to)g(the)f(setting)i(of)e(the)g Ft(HISTCONTROL)d Fu(and)j -Ft(HISTIGNORE)630 802 y Fu(v)-5 b(ariables.)42 b(If)30 -b(this)h(line)g(is)g(a)g(mo)s(di\014ed)e(history)i(line,)g(then)f -(restore)i(the)f(history)f(line)h(to)630 911 y(its)g(original)g(state.) -150 1075 y Ft(previous-history)26 b(\(C-p\))630 1184 -y Fu(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g(history)h(list,)g -(fetc)m(hing)g(the)g(previous)f(command.)150 1348 y Ft(next-history)d -(\(C-n\))630 1457 y Fu(Mo)m(v)m(e)32 b(`forw)m(ard')f(through)e(the)i -(history)f(list,)i(fetc)m(hing)f(the)g(next)f(command.)150 -1621 y Ft(beginning-of-history)25 b(\(M-<\))630 1730 -y Fu(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h(the)f(history)-8 -b(.)150 1894 y Ft(end-of-history)26 b(\(M->\))630 2004 -y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(input)e(history)-8 -b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s(eing)f(en)m(tered.)150 -2167 y Ft(reverse-search-history)24 b(\(C-r\))630 2277 -y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g(the)f(curren)m(t)g -(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g(his-)630 -2386 y(tory)g(as)f(necessary)-8 b(.)42 b(This)29 b(is)i(an)f(incremen)m -(tal)i(searc)m(h.)150 2550 y Ft(forward-search-history)24 -b(\(C-s\))630 2659 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h -(the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the) -630 2769 y(history)30 b(as)h(necessary)-8 b(.)41 b(This)30 -b(is)g(an)h(incremen)m(tal)g(searc)m(h.)150 2932 y Ft -(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24 -b(\(M-p\))630 3042 y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g +b(ords)35 b(are)g(delimited)630 4741 y(b)m(y)30 b(non-quoted)h(shell)f +(metac)m(haracters.)150 4902 y Ft(previous-screen-line)25 +b(\(\))630 5011 y Fu(A)m(ttempt)41 b(to)g(mo)m(v)m(e)h(p)s(oin)m(t)e +(to)h(the)f(same)h(ph)m(ysical)g(screen)f(column)g(on)g(the)g(previous) +630 5121 y(ph)m(ysical)26 b(screen)f(line.)39 b(This)24 +b(will)i(not)f(ha)m(v)m(e)h(the)f(desired)g(e\013ect)h(if)f(the)h +(curren)m(t)e(Readline)630 5230 y(line)k(do)s(es)f(not)g(tak)m(e)i(up)d +(more)i(than)f(one)g(ph)m(ysical)h(line)g(or)f(if)g(p)s(oin)m(t)h(is)f +(not)h(greater)g(than)630 5340 y(the)j(length)f(of)h(the)f(prompt)g +(plus)f(the)i(screen)f(width.)p eop end +%%Page: 123 129 +TeXDict begin 123 128 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(123)150 299 y Ft(next-screen-line) +26 b(\(\))630 408 y Fu(A)m(ttempt)g(to)f(mo)m(v)m(e)i(p)s(oin)m(t)d(to) +i(the)e(same)i(ph)m(ysical)f(screen)g(column)f(on)h(the)f(next)h(ph)m +(ysical)630 518 y(screen)e(line.)39 b(This)23 b(will)g(not)h(ha)m(v)m +(e)h(the)e(desired)g(e\013ect)i(if)e(the)g(curren)m(t)h(Readline)g +(line)f(do)s(es)630 628 y(not)k(tak)m(e)i(up)e(more)g(than)g(one)g(ph)m +(ysical)h(line)g(or)f(if)g(the)h(length)f(of)h(the)f(curren)m(t)g +(Readline)630 737 y(line)k(is)f(not)h(greater)g(than)f(the)h(length)g +(of)f(the)h(prompt)e(plus)h(the)g(screen)h(width.)150 +893 y Ft(clear-screen)c(\(C-l\))630 1003 y Fu(Clear)g(the)g(screen)f +(and)h(redra)m(w)f(the)h(curren)m(t)f(line,)i(lea)m(ving)g(the)f +(curren)m(t)g(line)g(at)g(the)g(top)630 1112 y(of)k(the)f(screen.)150 +1268 y Ft(redraw-current-line)25 b(\(\))630 1378 y Fu(Refresh)30 +b(the)g(curren)m(t)h(line.)41 b(By)30 b(default,)h(this)f(is)h(un)m(b)s +(ound.)150 1574 y Fk(8.4.2)63 b(Commands)42 b(F)-10 b(or)41 +b(Manipulating)h(The)f(History)150 1744 y Ft(accept-line)27 +b(\(Newline)h(or)i(Return\))630 1854 y Fu(Accept)25 b(the)e(line)h +(regardless)g(of)f(where)g(the)h(cursor)e(is.)39 b(If)23 +b(this)g(line)h(is)f(non-empt)m(y)-8 b(,)26 b(add)c(it)630 +1963 y(to)27 b(the)f(history)g(list)h(according)g(to)g(the)f(setting)i +(of)e(the)g Ft(HISTCONTROL)d Fu(and)j Ft(HISTIGNORE)630 +2073 y Fu(v)-5 b(ariables.)42 b(If)30 b(this)h(line)g(is)g(a)g(mo)s +(di\014ed)e(history)i(line,)g(then)f(restore)i(the)f(history)f(line)h +(to)630 2182 y(its)g(original)g(state.)150 2338 y Ft(previous-history) +26 b(\(C-p\))630 2448 y Fu(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g +(history)h(list,)g(fetc)m(hing)g(the)g(previous)f(command.)150 +2604 y Ft(next-history)d(\(C-n\))630 2714 y Fu(Mo)m(v)m(e)32 +b(`forw)m(ard')f(through)e(the)i(history)f(list,)i(fetc)m(hing)f(the)g +(next)f(command.)150 2870 y Ft(beginning-of-history)25 +b(\(M-<\))630 2979 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in) +h(the)f(history)-8 b(.)150 3135 y Ft(end-of-history)26 +b(\(M->\))630 3245 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h +(input)e(history)-8 b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s +(eing)f(en)m(tered.)150 3401 y Ft(reverse-search-history)24 +b(\(C-r\))630 3510 y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g (the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g -(his-)630 3152 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m -(tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h(the)630 -3261 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m -(ywhere)g(in)f(a)h(history)f(line.)150 3425 y Ft -(non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24 -b(\(M-n\))630 3534 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h +(his-)630 3620 y(tory)g(as)f(necessary)-8 b(.)42 b(This)29 +b(is)i(an)f(incremen)m(tal)i(searc)m(h.)150 3776 y Ft +(forward-search-history)24 b(\(C-s\))630 3886 y Fu(Searc)m(h)44 +b(forw)m(ard)f(starting)h(at)h(the)e(curren)m(t)h(line)g(and)f(mo)m +(ving)h(`do)m(wn')g(through)f(the)630 3995 y(history)30 +b(as)h(necessary)-8 b(.)41 b(This)30 b(is)g(an)h(incremen)m(tal)g +(searc)m(h.)150 4151 y Ft(non-incremental-reverse-)o(sear)o(ch-h)o(ist) +o(ory)24 b(\(M-p\))630 4261 y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h +(starting)g(at)g(the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e +(through)h(the)g(his-)630 4370 y(tory)36 b(as)g(necessary)h(using)e(a)i +(non-incremen)m(tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h +(the)630 4480 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m +(h)g(an)m(ywhere)g(in)f(a)h(history)f(line.)150 4636 +y Ft(non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24 +b(\(M-n\))630 4746 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h (the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the) -630 3644 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m +630 4855 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m (tal)g(searc)m(h)h(for)e(a)h(string)g(supplied)e(b)m(y)i(the)630 -3754 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an) -m(ywhere)g(in)f(a)h(history)f(line.)150 3917 y Ft -(history-search-forward)24 b(\(\))630 4027 y Fu(Searc)m(h)42 +4965 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an) +m(ywhere)g(in)f(a)h(history)f(line.)150 5121 y Ft +(history-search-forward)24 b(\(\))630 5230 y Fu(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g(the)h(string)f(of)h(c)m -(haracters)h(b)s(et)m(w)m(een)f(the)630 4136 y(start)36 +(haracters)h(b)s(et)m(w)m(een)f(the)630 5340 y(start)36 b(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)58 -b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630 -4246 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47 -b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48 -b(By)33 b(default,)g(this)630 4355 y(command)d(is)h(un)m(b)s(ound.)150 -4519 y Ft(history-search-backward)24 b(\(\))630 4629 -y Fu(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for)g -(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630 -4738 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.) +b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)p +eop end +%%Page: 124 130 +TeXDict begin 124 129 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(124)630 299 y(b)s(eginning)32 +b(of)g(a)h(history)g(line.)47 b(This)32 b(is)h(a)f(non-incremen)m(tal)i +(searc)m(h.)48 b(By)33 b(default,)g(this)630 408 y(command)d(is)h(un)m +(b)s(ound.)150 581 y Ft(history-search-backward)24 b(\(\))630 +690 y Fu(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for) +g(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630 +800 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.) 58 b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630 -4848 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47 -b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48 -b(By)33 b(default,)g(this)630 4957 y(command)d(is)h(un)m(b)s(ound.)150 -5121 y Ft(history-substr-search-fo)o(rwar)o(d)24 b(\(\))630 -5230 y Fu(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g +910 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47 b(This)32 +b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48 b(By)33 +b(default,)g(this)630 1019 y(command)d(is)h(un)m(b)s(ound.)150 +1192 y Ft(history-substring-search)o(-for)o(ward)24 b(\(\))630 +1301 y Fu(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g (the)h(string)f(of)h(c)m(haracters)h(b)s(et)m(w)m(een)f(the)630 -5340 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m +1411 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m (t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m(ywhere) -p eop end -%%Page: 121 127 -TeXDict begin 121 126 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(121)630 299 y(in)32 -b(a)h(history)g(line.)47 b(This)32 b(is)g(a)h(non-incremen)m(tal)h -(searc)m(h.)47 b(By)33 b(default,)h(this)e(command)630 -408 y(is)e(un)m(b)s(ound.)150 573 y Ft(history-substr-search-ba)o(ckwa) -o(rd)24 b(\(\))630 683 y Fu(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f -(the)h(history)g(for)g(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m -(een)g(the)630 793 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f -(the)h(p)s(oin)m(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m -(h)h(an)m(ywhere)630 902 y(in)i(a)h(history)g(line.)47 -b(This)32 b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)47 -b(By)33 b(default,)h(this)e(command)630 1012 y(is)e(un)m(b)s(ound.)150 -1177 y Ft(yank-nth-arg)d(\(M-C-y\))630 1286 y Fu(Insert)37 -b(the)g(\014rst)f(argumen)m(t)i(to)f(the)h(previous)e(command)h -(\(usually)g(the)g(second)g(w)m(ord)630 1396 y(on)32 -b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46 b(With)32 -b(an)g(argumen)m(t)g Fr(n)p Fu(,)g(insert)g(the)g Fr(n)p -Fu(th)f(w)m(ord)g(from)630 1506 y(the)k(previous)f(command)h(\(the)g(w) -m(ords)g(in)f(the)h(previous)g(command)f(b)s(egin)h(with)f(w)m(ord)630 -1615 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f -Fr(n)p Fu(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f(previous)630 -1725 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fr(n)e -Fu(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e(if)630 -1834 y(the)e(`)p Ft(!)p Fj(n)p Fu(')f(history)g(expansion)g(had)g(b)s -(een)g(sp)s(eci\014ed.)150 1999 y Ft(yank-last-arg)d(\(M-.)i(or)h -(M-_\))630 2109 y Fu(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous) -f(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630 -2218 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m +630 1520 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h +(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 b(default,)h(this)e +(command)630 1630 y(is)e(un)m(b)s(ound.)150 1802 y Ft +(history-substring-search)o(-bac)o(kwar)o(d)24 b(\(\))630 +1912 y Fu(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g +(for)g(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630 +2021 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m +(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m(ywhere) +630 2131 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h +(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 b(default,)h(this)e +(command)630 2241 y(is)e(un)m(b)s(ound.)150 2413 y Ft(yank-nth-arg)d +(\(M-C-y\))630 2523 y Fu(Insert)37 b(the)g(\014rst)f(argumen)m(t)i(to)f +(the)h(previous)e(command)h(\(usually)g(the)g(second)g(w)m(ord)630 +2632 y(on)32 b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46 +b(With)32 b(an)g(argumen)m(t)g Fr(n)p Fu(,)g(insert)g(the)g +Fr(n)p Fu(th)f(w)m(ord)g(from)630 2742 y(the)k(previous)f(command)h +(\(the)g(w)m(ords)g(in)f(the)h(previous)g(command)f(b)s(egin)h(with)f +(w)m(ord)630 2851 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f +(inserts)g(the)f Fr(n)p Fu(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f +(previous)630 2961 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h +Fr(n)e Fu(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e +(if)630 3070 y(the)e(`)p Ft(!)p Fj(n)p Fu(')f(history)g(expansion)g +(had)g(b)s(een)g(sp)s(eci\014ed.)150 3243 y Ft(yank-last-arg)d(\(M-.)i +(or)h(M-_\))630 3352 y Fu(Insert)k(last)i(argumen)m(t)g(to)g(the)f +(previous)f(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630 +3462 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m (t,)h(b)s(eha)m(v)m(e)f(exactly)h(lik)m(e)g Ft(yank-nth-arg)p -Fu(.)630 2328 y(Successiv)m(e)26 b(calls)g(to)f Ft(yank-last-arg)c +Fu(.)630 3572 y(Successiv)m(e)26 b(calls)g(to)f Ft(yank-last-arg)c Fu(mo)m(v)m(e)27 b(bac)m(k)e(through)f(the)h(history)g(list,)i -(inserting)630 2438 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp) +(inserting)630 3681 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp) s(eci\014ed)g(b)m(y)g(the)h(argumen)m(t)g(to)g(the)g(\014rst)f(call\))i -(of)f(eac)m(h)h(line)630 2547 y(in)36 b(turn.)58 b(An)m(y)36 +(of)f(eac)m(h)h(line)630 3791 y(in)36 b(turn.)58 b(An)m(y)36 b(n)m(umeric)h(argumen)m(t)f(supplied)g(to)h(these)g(successiv)m(e)g -(calls)h(determines)630 2657 y(the)d(direction)g(to)h(mo)m(v)m(e)g +(calls)h(determines)630 3900 y(the)d(direction)g(to)h(mo)m(v)m(e)g (through)e(the)h(history)-8 b(.)54 b(A)35 b(negativ)m(e)i(argumen)m(t)e -(switc)m(hes)h(the)630 2766 y(direction)23 b(through)g(the)g(history)f +(switc)m(hes)h(the)630 4010 y(direction)23 b(through)g(the)g(history)f (\(bac)m(k)i(or)f(forw)m(ard\).)38 b(The)22 b(history)h(expansion)g -(facilities)630 2876 y(are)28 b(used)f(to)h(extract)h(the)f(last)g +(facilities)630 4120 y(are)28 b(used)f(to)h(extract)h(the)f(last)g (argumen)m(t,)h(as)e(if)h(the)g(`)p Ft(!$)p Fu(')f(history)g(expansion) -h(had)f(b)s(een)630 2986 y(sp)s(eci\014ed.)150 3190 y +h(had)f(b)s(een)630 4229 y(sp)s(eci\014ed.)150 4441 y Fk(8.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10 -b(ext)150 3365 y Fj(end-of-file)27 b Ft(\(usually)h(C-d\))630 -3475 y Fu(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g +b(ext)150 4620 y Fj(end-of-file)27 b Ft(\(usually)h(C-d\))630 +4729 y Fu(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g (for)f(example,)i(b)m(y)e Ft(stty)p Fu(.)39 b(If)25 b(this)h(c)m -(harac-)630 3584 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m +(harac-)630 4839 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m (haracters)j(on)d(the)h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s -(eginning)630 3694 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g +(eginning)630 4948 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g (it)g(as)f(the)h(end)f(of)g(input)f(and)h(returns)f Fm(eof)p -Fu(.)150 3859 y Ft(delete-char)e(\(C-d\))630 3968 y Fu(Delete)35 +Fu(.)150 5121 y Ft(delete-char)e(\(C-d\))630 5230 y Fu(Delete)35 b(the)f(c)m(haracter)h(at)f(p)s(oin)m(t.)49 b(If)33 b(this)g(function)g -(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 4078 +(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 5340 y(as)e(the)f(tt)m(y)i Fm(eof)d Fu(c)m(haracter,)j(as)f Fj(C-d)e Fu(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g -(e\013ects.)150 4243 y Ft(backward-delete-char)25 b(\(Rubout\))630 -4353 y Fu(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40 -b(A)30 b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630 -4462 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150 -4627 y Ft(forward-backward-delete-)o(char)24 b(\(\))630 -4737 y Fu(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h +(e\013ects.)p eop end +%%Page: 125 131 +TeXDict begin 125 130 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(125)150 299 y Ft +(backward-delete-char)25 b(\(Rubout\))630 408 y Fu(Delete)32 +b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40 b(A)30 +b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630 +518 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150 +682 y Ft(forward-backward-delete-)o(char)24 b(\(\))630 +792 y Fu(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h (unless)d(the)i(cursor)e(is)h(at)h(the)g(end)e(of)i(the)630 -4846 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s -(ehind)d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630 -4956 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 -5121 y Ft(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 5230 +902 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s(ehind) +d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630 +1011 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 +1176 y Ft(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 1285 y Fu(Add)j(the)i(next)f(c)m(haracter)i(t)m(yp)s(ed)e(to)h(the)f(line)h (v)m(erbatim.)53 b(This)33 b(is)i(ho)m(w)f(to)h(insert)f(k)m(ey)630 -5340 y(sequences)d(lik)m(e)g Fj(C-q)p Fu(,)f(for)g(example.)p -eop end -%%Page: 122 128 -TeXDict begin 122 127 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(122)150 299 y Ft(self-insert)27 -b(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630 408 y Fu(Insert)g(y)m -(ourself.)150 573 y Ft(bracketed-paste-begin)25 b(\(\))630 -683 y Fu(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e(b)s(ound)f -(to)i(the)g Ft(")p Fu(brac)m(k)m(eted)h(paste)p Ft(")f -Fu(escap)s(e)h(sequence)630 793 y(sen)m(t)38 b(b)m(y)f(some)h -(terminals,)i(and)d(suc)m(h)g(a)h(binding)e(is)i(assigned)f(b)m(y)h -(default.)62 b(It)38 b(allo)m(ws)630 902 y(Readline)33 -b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g(single)g(unit)f(without) -h(treating)h(eac)m(h)f(c)m(har-)630 1012 y(acter)40 b(as)f(if)g(it)g -(had)f(b)s(een)g(read)h(from)f(the)h(k)m(eyb)s(oard.)66 -b(The)39 b(c)m(haracters)h(are)f(inserted)630 1121 y(as)i(if)g(eac)m(h) -i(one)e(w)m(as)h(b)s(ound)d(to)i Ft(self-insert)p Fu(\))e(instead)i(of) -h(executing)g(an)m(y)f(editing)630 1231 y(commands.)150 -1396 y Ft(transpose-chars)26 b(\(C-t\))630 1505 y Fu(Drag)33 -b(the)f(c)m(haracter)h(b)s(efore)f(the)g(cursor)f(forw)m(ard)h(o)m(v)m -(er)h(the)f(c)m(haracter)i(at)e(the)g(cursor,)630 1615 -y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m(ell.)57 +1395 y(sequences)d(lik)m(e)g Fj(C-q)p Fu(,)f(for)g(example.)150 +1559 y Ft(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630 +1669 y Fu(Insert)g(y)m(ourself.)150 1833 y Ft(bracketed-paste-begin)25 +b(\(\))630 1943 y Fu(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e +(b)s(ound)f(to)i(the)g Ft(")p Fu(brac)m(k)m(eted)h(paste)p +Ft(")f Fu(escap)s(e)h(sequence)630 2052 y(sen)m(t)38 +b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h(binding)e(is)i +(assigned)f(b)m(y)h(default.)62 b(It)38 b(allo)m(ws)630 +2162 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g +(single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630 +2271 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k) +m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630 +2381 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j +Ft(self-insert)c Fu(instead)j(of)h(executing)g(an)m(y)f(editing)630 +2491 y(commands.)150 2655 y Ft(transpose-chars)26 b(\(C-t\))630 +2765 y Fu(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the)g(cursor)f +(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g(cursor,)630 +2874 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m(ell.)57 b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end)g(of)h -(the)630 1724 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h(last)h +(the)630 2984 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h(last)h (t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38 b(Negativ)m(e)25 -b(argumen)m(ts)630 1834 y(ha)m(v)m(e)32 b(no)e(e\013ect.)150 -1999 y Ft(transpose-words)c(\(M-t\))630 2109 y Fu(Drag)33 +b(argumen)m(ts)630 3093 y(ha)m(v)m(e)32 b(no)e(e\013ect.)150 +3258 y Ft(transpose-words)c(\(M-t\))630 3367 y Fu(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g(the)h(w)m(ord)f (after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)g(that)630 -2218 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m +3477 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m (t)h(is)f(at)h(the)g(end)e(of)i(the)f(line,)i(this)e(transp)s(oses)g -(the)630 2328 y(last)j(t)m(w)m(o)h(w)m(ords)e(on)g(the)h(line.)150 -2493 y Ft(upcase-word)c(\(M-u\))630 2602 y Fu(Upp)s(ercase)32 +(the)630 3587 y(last)j(t)m(w)m(o)h(w)m(ords)e(on)g(the)h(line.)150 +3751 y Ft(upcase-word)c(\(M-u\))630 3861 y Fu(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i(w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630 -2712 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h -(the)e(cursor.)150 2877 y Ft(downcase-word)d(\(M-l\))630 -2986 y Fu(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i +3970 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h +(the)e(cursor.)150 4134 y Ft(downcase-word)d(\(M-l\))630 +4244 y Fu(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i (w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m(w)m -(ercase)630 3096 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m -(v)m(e)i(the)f(cursor.)150 3261 y Ft(capitalize-word)26 -b(\(M-c\))630 3370 y Fu(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m +(ercase)630 4354 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m +(v)m(e)i(the)f(cursor.)150 4518 y Ft(capitalize-word)26 +b(\(M-c\))630 4628 y Fu(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m (wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h -(capitalize)630 3480 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f -(mo)m(v)m(e)i(the)f(cursor.)150 3645 y Ft(overwrite-mode)26 -b(\(\))630 3754 y Fu(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48 +(capitalize)630 4737 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f +(mo)m(v)m(e)i(the)f(cursor.)150 4902 y Ft(overwrite-mode)26 +b(\(\))630 5011 y Fu(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48 b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,) -h(switc)m(hes)630 3864 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37 +h(switc)m(hes)630 5121 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37 b(With)22 b(an)g(explicit)h(non-p)s(ositiv)m(e)f(n)m(umeric)g(argumen)m -(t,)i(switc)m(hes)e(to)630 3973 y(insert)30 b(mo)s(de.)41 +(t,)i(switc)m(hes)e(to)630 5230 y(insert)30 b(mo)s(de.)41 b(This)30 b(command)h(a\013ects)h(only)e Ft(emacs)f Fu(mo)s(de;)i -Ft(vi)f Fu(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 4083 +Ft(vi)f Fu(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 5340 y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f -Ft(readline\(\))c Fu(starts)k(in)f(insert)g(mo)s(de.)630 -4220 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s -(ound)c(to)j Ft(self-insert)c Fu(replace)k(the)g(text)g(at)630 -4330 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h -(the)f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 -4439 y Ft(backward-delete-char)25 b Fu(replace)31 b(the)g(c)m(haracter) -h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 4577 -y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150 -4781 y Fk(8.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150 -4956 y Ft(kill-line)28 b(\(C-k\))630 5066 y Fu(Kill)j(the)f(text)i -(from)e(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f(line.)150 -5230 y Ft(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630 -5340 y Fu(Kill)h(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f(b)s -(eginning)g(of)h(the)f(curren)m(t)g(line.)p eop end -%%Page: 123 129 -TeXDict begin 123 128 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(123)150 299 y Ft -(unix-line-discard)26 b(\(C-u\))630 408 y Fu(Kill)31 +Ft(readline\(\))c Fu(starts)k(in)f(insert)g(mo)s(de.)p +eop end +%%Page: 126 132 +TeXDict begin 126 131 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(126)630 299 y(In)52 +b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s(ound)c(to)j +Ft(self-insert)c Fu(replace)k(the)g(text)g(at)630 408 +y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h(the)f +(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 518 +y Ft(backward-delete-char)25 b Fu(replace)31 b(the)g(c)m(haracter)h(b)s +(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 647 y(By)g(default,)f +(this)h(command)f(is)g(un)m(b)s(ound.)150 835 y Fk(8.4.4)63 +b(Killing)42 b(And)e(Y)-10 b(anking)150 1001 y Ft(kill-line)28 +b(\(C-k\))630 1111 y Fu(Kill)j(the)f(text)i(from)e(p)s(oin)m(t)g(to)h +(the)g(end)e(of)i(the)f(line.)150 1259 y Ft(backward-kill-line)25 +b(\(C-x)30 b(Rubout\))630 1369 y Fu(Kill)h(bac)m(kw)m(ard)g(from)e(the) +i(cursor)f(to)h(the)f(b)s(eginning)g(of)h(the)f(curren)m(t)g(line.)150 +1517 y Ft(unix-line-discard)c(\(C-u\))630 1627 y Fu(Kill)31 b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f(b)s(eginning)g(of)h -(the)f(curren)m(t)g(line.)150 571 y Ft(kill-whole-line)c(\(\))630 -681 y Fu(Kill)37 b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h(line,) -h(no)f(matter)g(where)f(p)s(oin)m(t)h(is.)59 b(By)36 -b(default,)630 791 y(this)30 b(is)h(un)m(b)s(ound.)150 -954 y Ft(kill-word)d(\(M-d\))630 1063 y Fu(Kill)i(from)f(p)s(oin)m(t)g +(the)f(curren)m(t)g(line.)150 1775 y Ft(kill-whole-line)c(\(\))630 +1885 y Fu(Kill)37 b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h +(line,)h(no)f(matter)g(where)f(p)s(oin)m(t)h(is.)59 b(By)36 +b(default,)630 1994 y(this)30 b(is)h(un)m(b)s(ound.)150 +2142 y Ft(kill-word)d(\(M-d\))630 2252 y Fu(Kill)i(from)f(p)s(oin)m(t)g (to)h(the)g(end)e(of)i(the)f(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m -(w)m(een)g(w)m(ords,)f(to)h(the)g(end)630 1173 y(of)h(the)f(next)h(w)m +(w)m(een)g(w)m(ords,)f(to)h(the)g(end)630 2362 y(of)h(the)f(next)h(w)m (ord.)40 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f -Ft(forward-word)p Fu(.)150 1336 y Ft(backward-kill-word)25 -b(\(M-DEL\))630 1445 y Fu(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m +Ft(forward-word)p Fu(.)150 2510 y Ft(backward-kill-word)25 +b(\(M-DEL\))630 2620 y Fu(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m (t.)40 b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g -Ft(backward-word)p Fu(.)150 1608 y Ft(shell-kill-word)d(\(\))630 -1718 y Fu(Kill)k(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f +Ft(backward-word)p Fu(.)150 2768 y Ft(shell-kill-word)d(\(\))630 +2877 y Fu(Kill)k(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f (curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h -(the)g(end)630 1827 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8 +(the)g(end)630 2987 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Ft -(shell-forward-word)p Fu(.)150 1990 y Ft(shell-backward-kill-word)24 -b(\(\))630 2100 y Fu(Kill)e(the)h(w)m(ord)e(b)s(ehind)g(p)s(oin)m(t.)38 +(shell-forward-word)p Fu(.)150 3135 y Ft(shell-backward-kill-word)24 +b(\(\))630 3245 y Fu(Kill)e(the)h(w)m(ord)e(b)s(ehind)g(p)s(oin)m(t.)38 b(W)-8 b(ord)22 b(b)s(oundaries)f(are)h(the)g(same)h(as)f -Ft(shell-backward-)630 2209 y(word)p Fu(.)150 2372 y -Ft(unix-word-rubout)k(\(C-w\))630 2482 y Fu(Kill)32 b(the)g(w)m(ord)f +Ft(shell-backward-)630 3354 y(word)p Fu(.)150 3503 y +Ft(unix-word-rubout)k(\(C-w\))630 3612 y Fu(Kill)32 b(the)g(w)m(ord)f (b)s(ehind)f(p)s(oin)m(t,)i(using)f(white)h(space)g(as)g(a)g(w)m(ord)f -(b)s(oundary)-8 b(.)43 b(The)31 b(killed)630 2592 y(text)g(is)g(sa)m(v) -m(ed)g(on)g(the)f(kill-ring.)150 2755 y Ft(unix-filename-rubout)25 -b(\(\))630 2864 y Fu(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m +(b)s(oundary)-8 b(.)43 b(The)31 b(killed)630 3722 y(text)g(is)g(sa)m(v) +m(ed)g(on)g(the)f(kill-ring.)150 3870 y Ft(unix-filename-rubout)25 +b(\(\))630 3980 y Fu(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m (t,)j(using)e(white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f -(the)630 2974 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 +(the)630 4089 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 -3137 y Ft(delete-horizontal-space)24 b(\(\))630 3246 +4238 y Ft(delete-horizontal-space)24 b(\(\))630 4347 y Fu(Delete)33 b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41 -b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 3409 -y Ft(kill-region)d(\(\))630 3519 y Fu(Kill)k(the)f(text)i(in)e(the)g +b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 4495 +y Ft(kill-region)d(\(\))630 4605 y Fu(Kill)k(the)f(text)i(in)e(the)g (curren)m(t)h(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un) -m(b)s(ound.)150 3682 y Ft(copy-region-as-kill)25 b(\(\))630 -3791 y Fu(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f +m(b)s(ound.)150 4753 y Ft(copy-region-as-kill)25 b(\(\))630 +4863 y Fu(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f (kill)h(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f -(a)m(w)m(a)m(y)-8 b(.)630 3901 y(By)31 b(default,)f(this)h(command)f -(is)g(un)m(b)s(ound.)150 4064 y Ft(copy-backward-word)25 -b(\(\))630 4173 y Fu(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m +(a)m(w)m(a)m(y)-8 b(.)630 4973 y(By)31 b(default,)f(this)h(command)f +(is)g(un)m(b)s(ound.)150 5121 y Ft(copy-backward-word)25 +b(\(\))630 5230 y Fu(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m (t)g(to)i(the)e(kill)h(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries) -f(are)i(the)630 4283 y(same)31 b(as)f Ft(backward-word)p -Fu(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150 -4446 y Ft(copy-forward-word)26 b(\(\))630 4556 y Fu(Cop)m(y)31 +f(are)i(the)630 5340 y(same)31 b(as)f Ft(backward-word)p +Fu(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)p +eop end +%%Page: 127 133 +TeXDict begin 127 132 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(127)150 299 y Ft +(copy-forward-word)26 b(\(\))630 408 y Fu(Cop)m(y)31 b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h (bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)e(are)j(the)630 -4665 y(same)f(as)f Ft(forward-word)p Fu(.)38 b(By)30 -b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150 -4828 y Ft(yank)f(\(C-y\))630 4938 y Fu(Y)-8 b(ank)31 -b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i(the)e(bu\013er)g(at)h -(p)s(oin)m(t.)150 5101 y Ft(yank-pop)d(\(M-y\))630 5210 -y Fu(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g(top.)54 -b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630 -5320 y(command)30 b(is)h Ft(yank)e Fu(or)h Ft(yank-pop)p -Fu(.)p eop end -%%Page: 124 130 -TeXDict begin 124 129 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(124)150 299 y Fk(8.4.5)63 -b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m(ts)150 477 y -Ft(digit-argument)26 b(\()p Fj(M-0)p Ft(,)j Fj(M-1)p -Ft(,)h(...)f Fj(M--)p Ft(\))630 586 y Fu(Add)d(this)h(digit)g(to)h(the) -f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f(new)f -(argumen)m(t.)630 696 y Fj(M--)j Fu(starts)i(a)g(negativ)m(e)i(argumen) -m(t.)150 867 y Ft(universal-argument)25 b(\(\))630 977 -y Fu(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g(argumen)m -(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m(y)f(one)630 -1087 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h(leading)h(min)m -(us)e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630 -1196 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b) +518 y(same)f(as)f Ft(forward-word)p Fu(.)38 b(By)30 b(default,)h(this)g +(command)f(is)g(un)m(b)s(ound.)150 671 y Ft(yank)f(\(C-y\))630 +781 y Fu(Y)-8 b(ank)31 b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i +(the)e(bu\013er)g(at)h(p)s(oin)m(t.)150 934 y Ft(yank-pop)d(\(M-y\))630 +1044 y Fu(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g +(top.)54 b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630 +1153 y(command)30 b(is)h Ft(yank)e Fu(or)h Ft(yank-pop)p +Fu(.)150 1347 y Fk(8.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m +(ts)150 1515 y Ft(digit-argument)26 b(\()p Fj(M-0)p Ft(,)j +Fj(M-1)p Ft(,)h(...)f Fj(M--)p Ft(\))630 1625 y Fu(Add)d(this)h(digit)g +(to)h(the)f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f +(new)f(argumen)m(t.)630 1735 y Fj(M--)j Fu(starts)i(a)g(negativ)m(e)i +(argumen)m(t.)150 1888 y Ft(universal-argument)25 b(\(\))630 +1998 y Fu(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g +(argumen)m(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m +(y)f(one)630 2107 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h +(leading)h(min)m(us)e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630 +2217 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b) m(y)f(digits,)i(executing)f Ft(universal-argument)630 -1306 y Fu(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h +2326 y Fu(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h (otherwise)g(ignored.)45 b(As)32 b(a)g(sp)s(ecial)h(case,)630 -1415 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y) +2436 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y) d(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630 -1525 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f +2545 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f (the)h(next)f(command)g(is)g(m)m(ultiplied)h(b)m(y)630 -1635 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h +2655 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h (one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)630 -1744 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h +2765 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h (second)g(time)g(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630 -1854 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g -(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 2065 y Fk(8.4.6)63 +2874 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g +(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 3067 y Fk(8.4.6)63 b(Letting)40 b(Readline)h(T)m(yp)s(e)g(F)-10 b(or)42 -b(Y)-10 b(ou)150 2243 y Ft(complete)28 b(\(TAB\))630 -2353 y Fu(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g +b(Y)-10 b(ou)150 3236 y Ft(complete)28 b(\(TAB\))630 +3346 y Fu(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g (b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630 -2462 y(p)s(erformed)33 b(is)h(application-sp)s(eci\014c.)53 +3455 y(p)s(erformed)33 b(is)h(application-sp)s(eci\014c.)53 b(Bash)35 b(attempts)g(completion)g(treating)h(the)e(text)630 -2572 y(as)39 b(a)h(v)-5 b(ariable)39 b(\(if)h(the)f(text)h(b)s(egins)e +3565 y(as)39 b(a)h(v)-5 b(ariable)39 b(\(if)h(the)f(text)h(b)s(egins)e (with)h(`)p Ft($)p Fu('\),)j(username)c(\(if)i(the)f(text)h(b)s(egins)e -(with)630 2681 y(`)p Ft(~)p Fu('\),)31 b(hostname)f(\(if)g(the)g(text)h +(with)630 3675 y(`)p Ft(~)p Fu('\),)31 b(hostname)f(\(if)g(the)g(text)h (b)s(egins)e(with)h(`)p Ft(@)p Fu('\),)h(or)f(command)f(\(including)h -(aliases)i(and)630 2791 y(functions\))j(in)f(turn.)53 +(aliases)i(and)630 3784 y(functions\))j(in)f(turn.)53 b(If)34 b(none)g(of)h(these)h(pro)s(duces)d(a)i(matc)m(h,)i(\014lename) -e(completion)h(is)630 2901 y(attempted.)150 3072 y Ft -(possible-completions)25 b(\(M-?\))630 3182 y Fu(List)35 +e(completion)h(is)630 3894 y(attempted.)150 4047 y Ft +(possible-completions)25 b(\(M-?\))630 4157 y Fu(List)35 b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s(efore)e(p)s -(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 3291 +(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 4266 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i(columns)f (used)f(for)i(displa)m(y)f(to)h(the)g(v)-5 b(alue)33 -b(of)630 3401 y Ft(completion-display-width)o Fu(,)g(the)j(v)-5 +b(of)630 4376 y Ft(completion-display-width)o Fu(,)g(the)j(v)-5 b(alue)37 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)38 -b Ft(COLUMNS)p Fu(,)630 3510 y(or)30 b(the)h(screen)f(width,)g(in)g -(that)h(order.)150 3682 y Ft(insert-completions)25 b(\(M-*\))630 -3791 y Fu(Insert)30 b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f +b Ft(COLUMNS)p Fu(,)630 4485 y(or)30 b(the)h(screen)f(width,)g(in)g +(that)h(order.)150 4639 y Ft(insert-completions)25 b(\(M-*\))630 +4748 y Fu(Insert)30 b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f (p)s(oin)m(t)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s(een)e(generated)630 -3901 y(b)m(y)g Ft(possible-completions)p Fu(.)150 4073 -y Ft(menu-complete)d(\(\))630 4182 y Fu(Similar)d(to)g +4858 y(b)m(y)g Ft(possible-completions)p Fu(.)150 5011 +y Ft(menu-complete)d(\(\))630 5121 y Fu(Similar)d(to)g Ft(complete)p Fu(,)f(but)h(replaces)g(the)g(w)m(ord)g(to)g(b)s(e)f -(completed)i(with)e(a)i(single)f(matc)m(h)630 4292 y(from)37 +(completed)i(with)e(a)i(single)f(matc)m(h)630 5230 y(from)37 b(the)h(list)h(of)f(p)s(ossible)f(completions.)64 b(Rep)s(eated)39 -b(execution)g(of)f Ft(menu-complete)630 4401 y Fu(steps)i(through)g +b(execution)g(of)f Ft(menu-complete)630 5340 y Fu(steps)i(through)g (the)g(list)h(of)f(p)s(ossible)g(completions,)k(inserting)c(eac)m(h)i -(matc)m(h)f(in)f(turn.)630 4511 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g -(of)g(completions,)i(the)e(b)s(ell)g(is)g(rung)f(\(sub)5 -b(ject)36 b(to)i(the)f(setting)630 4621 y(of)f Ft(bell-style)p -Fu(\))e(and)h(the)h(original)i(text)f(is)f(restored.)57 -b(An)36 b(argumen)m(t)h(of)f Fr(n)f Fu(mo)m(v)m(es)i -Fr(n)630 4730 y Fu(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e +(matc)m(h)f(in)f(turn.)p eop end +%%Page: 128 134 +TeXDict begin 128 133 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(128)630 299 y(A)m(t)38 +b(the)f(end)f(of)h(the)g(list)g(of)g(completions,)i(the)e(b)s(ell)g(is) +g(rung)f(\(sub)5 b(ject)36 b(to)i(the)f(setting)630 408 +y(of)f Ft(bell-style)p Fu(\))e(and)h(the)h(original)i(text)f(is)f +(restored.)57 b(An)36 b(argumen)m(t)h(of)f Fr(n)f Fu(mo)m(v)m(es)i +Fr(n)630 518 y Fu(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e (matc)m(hes;)39 b(a)c(negativ)m(e)i(argumen)m(t)e(ma)m(y)g(b)s(e)f -(used)g(to)630 4840 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g +(used)g(to)630 628 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g (list.)65 b(This)38 b(command)g(is)g(in)m(tended)g(to)h(b)s(e)f(b)s -(ound)e(to)630 4949 y Ft(TAB)p Fu(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m -(y)i(default.)150 5121 y Ft(menu-complete-backward)24 -b(\(\))630 5230 y Fu(Iden)m(tical)36 b(to)g Ft(menu-complete)p +(ound)e(to)630 737 y Ft(TAB)p Fu(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m +(y)i(default.)150 906 y Ft(menu-complete-backward)24 +b(\(\))630 1015 y Fu(Iden)m(tical)36 b(to)g Ft(menu-complete)p Fu(,)d(but)h(mo)m(v)m(es)j(bac)m(kw)m(ard)e(through)f(the)i(list)f(of)g -(p)s(ossible)630 5340 y(completions,)d(as)e(if)h Ft(menu-complete)26 -b Fu(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)p -eop end -%%Page: 125 131 -TeXDict begin 125 130 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(125)150 299 y Ft -(delete-char-or-list)25 b(\(\))630 408 y Fu(Deletes)41 +(p)s(ossible)630 1125 y(completions,)d(as)e(if)h Ft(menu-complete)26 +b Fu(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150 +1294 y Ft(delete-char-or-list)25 b(\(\))630 1403 y Fu(Deletes)41 b(the)e(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)h(b)s -(eginning)e(or)h(end)f(of)h(the)630 518 y(line)50 b(\(lik)m(e)h +(eginning)e(or)h(end)f(of)h(the)630 1513 y(line)50 b(\(lik)m(e)h Ft(delete-char)p Fu(\).)96 b(If)49 b(at)h(the)g(end)f(of)h(the)f(line,) -55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 628 y -Ft(possible-completions)p Fu(.)35 b(This)30 b(command)g(is)g(un)m(b)s -(ound)e(b)m(y)i(default.)150 803 y Ft(complete-filename)c(\(M-/\))630 -913 y Fu(A)m(ttempt)32 b(\014lename)e(completion)i(on)e(the)h(text)g(b) -s(efore)f(p)s(oin)m(t.)150 1088 y Ft(possible-filename-comple)o(tion)o -(s)24 b(\(C-x)30 b(/\))630 1197 y Fu(List)f(the)g(p)s(ossible)f +55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 1622 +y Ft(possible-completions)p Fu(.)35 b(This)30 b(command)g(is)g(un)m(b)s +(ound)e(b)m(y)i(default.)150 1791 y Ft(complete-filename)c(\(M-/\))630 +1901 y Fu(A)m(ttempt)32 b(\014lename)e(completion)i(on)e(the)h(text)g +(b)s(efore)f(p)s(oin)m(t.)150 2069 y Ft(possible-filename-comple)o +(tion)o(s)24 b(\(C-x)30 b(/\))630 2179 y Fu(List)f(the)g(p)s(ossible)f (completions)h(of)g(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)g(treating)h -(it)f(as)g(a)f(\014lename.)150 1373 y Ft(complete-username)e(\(M-~\)) -630 1482 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore) +(it)f(as)g(a)f(\014lename.)150 2347 y Ft(complete-username)e(\(M-~\)) +630 2457 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore) e(p)s(oin)m(t,)g(treating)i(it)f(as)f(a)h(username.)150 -1658 y Ft(possible-username-comple)o(tion)o(s)24 b(\(C-x)30 -b(~\))630 1767 y Fu(List)25 b(the)g(p)s(ossible)g(completions)h(of)f +2626 y Ft(possible-username-comple)o(tion)o(s)24 b(\(C-x)30 +b(~\))630 2735 y Fu(List)25 b(the)g(p)s(ossible)g(completions)h(of)f (the)g(text)h(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)f(a)g -(username.)150 1942 y Ft(complete-variable)h(\(M-$\))630 -2052 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)e(p) +(username.)150 2904 y Ft(complete-variable)h(\(M-$\))630 +3013 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)e(p) s(oin)m(t,)g(treating)i(it)f(as)f(a)h(shell)g(v)-5 b(ariable.)150 -2227 y Ft(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30 -b($\))630 2337 y Fu(List)42 b(the)g(p)s(ossible)g(completions)h(of)f +3182 y Ft(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30 +b($\))630 3292 y Fu(List)42 b(the)g(p)s(ossible)g(completions)h(of)f (the)g(text)h(b)s(efore)e(p)s(oin)m(t,)46 b(treating)d(it)f(as)g(a)h -(shell)630 2446 y(v)-5 b(ariable.)150 2622 y Ft(complete-hostname)26 -b(\(M-@\))630 2731 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i +(shell)630 3401 y(v)-5 b(ariable.)150 3570 y Ft(complete-hostname)26 +b(\(M-@\))630 3679 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i (b)s(efore)e(p)s(oin)m(t,)g(treating)i(it)f(as)f(a)h(hostname.)150 -2907 y Ft(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30 -b(@\))630 3016 y Fu(List)25 b(the)g(p)s(ossible)f(completions)h(of)g +3848 y Ft(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30 +b(@\))630 3957 y Fu(List)25 b(the)g(p)s(ossible)f(completions)h(of)g (the)g(text)g(b)s(efore)g(p)s(oin)m(t,)h(treating)g(it)f(as)f(a)h -(hostname.)150 3191 y Ft(complete-command)h(\(M-!\))630 -3301 y Fu(A)m(ttempt)32 b(completion)g(on)f(the)g(text)h(b)s(efore)e(p) +(hostname.)150 4126 y Ft(complete-command)h(\(M-!\))630 +4236 y Fu(A)m(ttempt)32 b(completion)g(on)f(the)g(text)h(b)s(efore)e(p) s(oin)m(t,)h(treating)h(it)g(as)f(a)g(command)g(name.)630 -3411 y(Command)46 b(completion)i(attempts)g(to)f(matc)m(h)h(the)f(text) -h(against)g(aliases,)53 b(reserv)m(ed)630 3520 y(w)m(ords,)36 +4345 y(Command)46 b(completion)i(attempts)g(to)f(matc)m(h)h(the)f(text) +h(against)g(aliases,)53 b(reserv)m(ed)630 4455 y(w)m(ords,)36 b(shell)g(functions,)h(shell)e(builtins,)i(and)e(\014nally)g -(executable)i(\014lenames,)g(in)e(that)630 3630 y(order.)150 -3805 y Ft(possible-command-complet)o(ions)24 b(\(C-x)29 -b(!\))630 3915 y Fu(List)d(the)h(p)s(ossible)f(completions)h(of)f(the)h +(executable)i(\014lenames,)g(in)e(that)630 4564 y(order.)150 +4733 y Ft(possible-command-complet)o(ions)24 b(\(C-x)29 +b(!\))630 4843 y Fu(List)d(the)h(p)s(ossible)f(completions)h(of)f(the)h (text)g(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)g(a)f(command)630 -4024 y(name.)150 4200 y Ft(dynamic-complete-history)e(\(M-TAB\))630 -4309 y Fu(A)m(ttempt)31 b(completion)h(on)e(the)g(text)h(b)s(efore)f(p) +4952 y(name.)150 5121 y Ft(dynamic-complete-history)e(\(M-TAB\))630 +5230 y Fu(A)m(ttempt)31 b(completion)h(on)e(the)g(text)h(b)s(efore)f(p) s(oin)m(t,)g(comparing)h(the)f(text)h(against)h(lines)630 -4419 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i -(matc)m(hes.)150 4594 y Ft(dabbrev-expand)26 b(\(\))630 -4704 y Fu(A)m(ttempt)i(men)m(u)e(completion)i(on)f(the)g(text)g(b)s -(efore)f(p)s(oin)m(t,)i(comparing)f(the)g(text)h(against)630 -4813 y(lines)j(from)e(the)i(history)f(list)h(for)g(p)s(ossible)e -(completion)j(matc)m(hes.)150 4988 y Ft(complete-into-braces)25 -b(\(M-{\))630 5098 y Fu(P)m(erform)f(\014lename)f(completion)i(and)f +5340 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i +(matc)m(hes.)p eop end +%%Page: 129 135 +TeXDict begin 129 134 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(129)150 299 y Ft(dabbrev-expand)26 +b(\(\))630 408 y Fu(A)m(ttempt)i(men)m(u)e(completion)i(on)f(the)g +(text)g(b)s(efore)f(p)s(oin)m(t,)i(comparing)f(the)g(text)h(against)630 +518 y(lines)j(from)e(the)i(history)f(list)h(for)g(p)s(ossible)e +(completion)j(matc)m(hes.)150 683 y Ft(complete-into-braces)25 +b(\(M-{\))630 793 y Fu(P)m(erform)f(\014lename)f(completion)i(and)f (insert)f(the)h(list)g(of)g(p)s(ossible)f(completions)i(enclosed)630 -5208 y(within)34 b(braces)h(so)f(the)h(list)g(is)g(a)m(v)-5 +902 y(within)34 b(braces)h(so)f(the)h(list)g(is)g(a)m(v)-5 b(ailable)37 b(to)e(the)g(shell)g(\(see)g(Section)h(3.5.1)g([Brace)g -(Ex-)630 5317 y(pansion],)30 b(page)h(21\).)p eop end -%%Page: 126 132 -TeXDict begin 126 131 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(126)150 299 y Fk(8.4.7)63 -b(Keyb)s(oard)41 b(Macros)150 469 y Ft(start-kbd-macro)26 -b(\(C-x)j(\(\))630 579 y Fu(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i -(t)m(yp)s(ed)e(in)m(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard)g(macro.)150 -735 y Ft(end-kbd-macro)d(\(C-x)i(\)\))630 845 y Fu(Stop)e(sa)m(ving)h -(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m(to)i(the)e(curren)m(t)g(k)m -(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i(the)630 954 -y(de\014nition.)150 1110 y Ft(call-last-kbd-macro)c(\(C-x)k(e\))630 -1220 y Fu(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)f(macro)h -(de\014ned,)f(b)m(y)h(making)f(the)g(c)m(haracters)i(in)e(the)630 -1329 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s -(oard.)150 1486 y Ft(print-last-kbd-macro)25 b(\(\))630 -1595 y Fu(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned) +(Ex-)630 1012 y(pansion],)30 b(page)h(23\).)150 1217 +y Fk(8.4.7)63 b(Keyb)s(oard)41 b(Macros)150 1392 y Ft(start-kbd-macro) +26 b(\(C-x)j(\(\))630 1501 y Fu(Begin)i(sa)m(ving)h(the)e(c)m +(haracters)i(t)m(yp)s(ed)e(in)m(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard) +g(macro.)150 1666 y Ft(end-kbd-macro)d(\(C-x)i(\)\))630 +1776 y Fu(Stop)e(sa)m(ving)h(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m +(to)i(the)e(curren)m(t)g(k)m(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i +(the)630 1886 y(de\014nition.)150 2051 y Ft(call-last-kbd-macro)c +(\(C-x)k(e\))630 2160 y Fu(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard) +f(macro)h(de\014ned,)f(b)m(y)h(making)f(the)g(c)m(haracters)i(in)e(the) +630 2270 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m +(eyb)s(oard.)150 2435 y Ft(print-last-kbd-macro)25 b(\(\))630 +2545 y Fu(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned) e(in)i(a)f(format)h(suitable)g(for)f(the)h Fr(inputrc)k -Fu(\014le.)150 1791 y Fk(8.4.8)63 b(Some)41 b(Miscellaneous)i(Commands) -150 1962 y Ft(re-read-init-file)26 b(\(C-x)j(C-r\))630 -2071 y Fu(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g +Fu(\014le.)150 2750 y Fk(8.4.8)63 b(Some)41 b(Miscellaneous)i(Commands) +150 2924 y Ft(re-read-init-file)26 b(\(C-x)j(C-r\))630 +3034 y Fu(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g Fr(inputrc)27 b Fu(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d -(or)i(v)-5 b(ariable)630 2181 y(assignmen)m(ts)31 b(found)e(there.)150 -2337 y Ft(abort)g(\(C-g\))630 2447 y Fu(Ab)s(ort)d(the)h(curren)m(t)f +(or)i(v)-5 b(ariable)630 3144 y(assignmen)m(ts)31 b(found)e(there.)150 +3309 y Ft(abort)g(\(C-g\))630 3418 y Fu(Ab)s(ort)d(the)h(curren)m(t)f (editing)h(command)f(and)g(ring)h(the)f(terminal's)h(b)s(ell)g(\(sub)5 -b(ject)26 b(to)i(the)630 2556 y(setting)j(of)g Ft(bell-style)p -Fu(\).)150 2712 y Ft(do-uppercase-version)25 b(\(M-a,)k(M-b,)g(M-)p -Fj(x)p Ft(,)g(...)o(\))630 2822 y Fu(If)e(the)h(meta\014ed)g(c)m -(haracter)h Fr(x)34 b Fu(is)28 b(lo)m(w)m(ercase,)i(run)d(the)g -(command)h(that)g(is)g(b)s(ound)d(to)k(the)630 2932 y(corresp)s(onding) -g(upp)s(ercase)h(c)m(haracter.)150 3088 y Ft(prefix-meta)d(\(ESC\))630 -3197 y Fu(Metafy)39 b(the)e(next)h(c)m(haracter)h(t)m(yp)s(ed.)62 -b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f(without)g(a)h(meta)g(k)m(ey)-8 -b(.)630 3307 y(T)m(yping)30 b(`)p Ft(ESC)g(f)p Fu(')g(is)h(equiv)-5 -b(alen)m(t)31 b(to)g(t)m(yping)g Fj(M-f)p Fu(.)150 3463 -y Ft(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630 3573 y Fu(Incremen)m(tal)h -(undo,)f(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150 -3729 y Ft(revert-line)27 b(\(M-r\))630 3838 y Fu(Undo)33 -b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49 b(This)32 -b(is)h(lik)m(e)i(executing)f(the)f Ft(undo)f Fu(command)630 -3948 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.) -150 4104 y Ft(tilde-expand)d(\(M-&\))630 4214 y Fu(P)m(erform)j(tilde)h -(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 4370 -y Ft(set-mark)d(\(C-@\))630 4480 y Fu(Set)33 b(the)g(mark)f(to)i(the)f -(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g -(supplied,)f(the)h(mark)g(is)f(set)630 4589 y(to)f(that)g(p)s(osition.) -150 4745 y Ft(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630 -4855 y Fu(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43 +b(ject)26 b(to)i(the)630 3528 y(setting)j(of)g Ft(bell-style)p +Fu(\).)150 3693 y Ft(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p +Fj(x)p Ft(,)g(...)o(\))630 3803 y Fu(If)35 b(the)g(meta\014ed)g(c)m +(haracter)i Fr(x)k Fu(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g +(that)g(is)g(b)s(ound)e(to)630 3912 y(the)g(corresp)s(onding)f +(meta\014ed)h(lo)m(w)m(er)i(case)f(c)m(haracter.)50 b(The)32 +b(b)s(eha)m(vior)h(is)g(unde\014ned)e(if)630 4022 y Fr(x)37 +b Fu(is)30 b(already)h(lo)m(w)m(er)h(case.)150 4187 y +Ft(prefix-meta)27 b(\(ESC\))630 4297 y Fu(Metafy)39 b(the)e(next)h(c)m +(haracter)h(t)m(yp)s(ed.)62 b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f +(without)g(a)h(meta)g(k)m(ey)-8 b(.)630 4406 y(T)m(yping)30 +b(`)p Ft(ESC)g(f)p Fu(')g(is)h(equiv)-5 b(alen)m(t)31 +b(to)g(t)m(yping)g Fj(M-f)p Fu(.)150 4571 y Ft(undo)e(\(C-_)g(or)h(C-x) +g(C-u\))630 4681 y Fu(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s +(ered)f(for)g(eac)m(h)i(line.)150 4846 y Ft(revert-line)27 +b(\(M-r\))630 4956 y Fu(Undo)33 b(all)h(c)m(hanges)g(made)f(to)h(this)f +(line.)49 b(This)32 b(is)h(lik)m(e)i(executing)f(the)f +Ft(undo)f Fu(command)630 5065 y(enough)e(times)h(to)g(get)h(bac)m(k)f +(to)g(the)f(b)s(eginning.)150 5230 y Ft(tilde-expand)d(\(M-&\))630 +5340 y Fu(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m +(ord.)p eop end +%%Page: 130 136 +TeXDict begin 130 135 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(130)150 299 y Ft(set-mark)28 +b(\(C-@\))630 408 y Fu(Set)33 b(the)g(mark)f(to)i(the)f(p)s(oin)m(t.)48 +b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h(mark)g +(is)f(set)630 518 y(to)f(that)g(p)s(osition.)150 696 +y Ft(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630 +806 y Fu(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43 b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f(set)h(to)f(the)h -(sa)m(v)m(ed)630 4965 y(p)s(osition,)f(and)e(the)i(old)g(cursor)e(p)s -(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 5121 -y Ft(character-search)26 b(\(C-]\))630 5230 y Fu(A)f(c)m(haracter)h(is) +(sa)m(v)m(ed)630 915 y(p)s(osition,)f(and)e(the)i(old)g(cursor)e(p)s +(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 1093 +y Ft(character-search)26 b(\(C-]\))630 1203 y Fu(A)f(c)m(haracter)h(is) f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g(o)s -(ccurrence)g(of)g(that)g(c)m(haracter.)630 5340 y(A)30 +(ccurrence)g(of)g(that)g(c)m(haracter.)630 1313 y(A)30 b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s -(ccurrences.)p eop end -%%Page: 127 133 -TeXDict begin 127 132 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(127)150 299 y Ft -(character-search-backwar)o(d)24 b(\(M-C-]\))630 408 -y Fu(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v) -m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of)g(that)630 -518 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f(searc)m(hes)h -(for)e(subsequen)m(t)f(o)s(ccurrences.)150 722 y Ft(skip-csi-sequence)d -(\(\))630 831 y Fu(Read)i(enough)f(c)m(haracters)h(to)g(consume)f(a)h -(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f(as)g(those)h(de\014ned)630 -941 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g(and)f(End.)60 -b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m(trol)g(Sequence) -630 1050 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59 +(ccurrences.)150 1491 y Ft(character-search-backwar)o(d)24 +b(\(M-C-]\))630 1600 y Fu(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s +(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of) +g(that)630 1710 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f +(searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)150 +1888 y Ft(skip-csi-sequence)d(\(\))630 1998 y Fu(Read)i(enough)f(c)m +(haracters)h(to)g(consume)f(a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f +(as)g(those)h(de\014ned)630 2107 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g +(and)f(End.)60 b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m +(trol)g(Sequence)630 2217 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59 b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Ft("\\)p -Fu(e[)p Ft(")p Fu(,)g(k)m(eys)f(pro-)630 1160 y(ducing)31 +Fu(e[)p Ft(")p Fu(,)g(k)m(eys)f(pro-)630 2326 y(ducing)31 b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e -(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 1270 y(command,)f +(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 2436 y(command,)f (instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f -(editing)h(bu\013er.)44 b(This)31 b(is)630 1379 y(un)m(b)s(ound)d(b)m +(editing)h(bu\013er.)44 b(This)31 b(is)630 2545 y(un)m(b)s(ound)d(b)m (y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)150 -1583 y Ft(insert-comment)26 b(\(M-#\))630 1692 y Fu(Without)36 +2724 y Ft(insert-comment)26 b(\(M-#\))630 2833 y Fu(Without)36 b(a)g(n)m(umeric)g(argumen)m(t,)h(the)f(v)-5 b(alue)36 b(of)g(the)g Ft(comment-begin)c Fu(v)-5 b(ariable)36 -b(is)g(in-)630 1802 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f +b(is)g(in-)630 2943 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f (curren)m(t)h(line.)45 b(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g -(supplied,)630 1911 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 +(supplied,)630 3052 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 b(if)37 b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g -(line)630 2021 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 +(line)630 3162 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 b(alue)31 b(of)f Ft(comment-begin)p Fu(,)e(the)i(v)-5 -b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 2131 +b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 3271 y(c)m(haracters)42 b(in)d Ft(comment-begin)e Fu(are)j(deleted)h(from)f -(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 2240 +(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 3381 y(either)37 b(case,)j(the)e(line)f(is)g(accepted)i(as)e(if)g(a)g (newline)g(had)g(b)s(een)f(t)m(yp)s(ed.)60 b(The)37 b(default)630 -2350 y(v)-5 b(alue)32 b(of)g Ft(comment-begin)c Fu(causes)k(this)f +3491 y(v)-5 b(alue)32 b(of)g Ft(comment-begin)c Fu(causes)k(this)f (command)h(to)g(mak)m(e)h(the)e(curren)m(t)h(line)g(a)g(shell)630 -2459 y(commen)m(t.)40 b(If)26 b(a)h(n)m(umeric)f(argumen)m(t)h(causes)g +3600 y(commen)m(t.)40 b(If)26 b(a)h(n)m(umeric)f(argumen)m(t)h(causes)g (the)f(commen)m(t)i(c)m(haracter)g(to)f(b)s(e)f(remo)m(v)m(ed,)630 -2569 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b)m(y)f(the)h(shell.) -150 2772 y Ft(dump-functions)26 b(\(\))630 2882 y Fu(Prin)m(t)g(all)i +3710 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b)m(y)f(the)h(shell.) +150 3888 y Ft(dump-functions)26 b(\(\))630 3998 y Fu(Prin)m(t)g(all)i (of)e(the)h(functions)f(and)g(their)g(k)m(ey)h(bindings)e(to)j(the)e -(Readline)h(output)f(stream.)630 2992 y(If)31 b(a)h(n)m(umeric)g +(Readline)h(output)f(stream.)630 4107 y(If)31 b(a)h(n)m(umeric)g (argumen)m(t)g(is)g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f -(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 3101 y(it)f(can)g(b)s(e)e(made)i +(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 4217 y(it)f(can)g(b)s(e)e(made)i (part)f(of)g(an)h Fr(inputrc)k Fu(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k(default.)150 -3305 y Ft(dump-variables)26 b(\(\))630 3414 y Fu(Prin)m(t)21 +4395 y Ft(dump-variables)26 b(\(\))630 4504 y Fu(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5 b(ariables)22 b(and)f(their)g(v)-5 b(alues)22 b(to)g(the)f(Readline)h(output)f(stream.)630 -3524 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h +4614 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h (output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 -3634 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fr(inputrc)k +4724 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fr(inputrc)k Fu(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k -(default.)150 3837 y Ft(dump-macros)c(\(\))630 3947 y +(default.)150 4902 y Ft(dump-macros)c(\(\))630 5011 y Fu(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences)f(b)s (ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630 -4056 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e +5121 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e (supplied,)h(the)g(output)g(is)f(formatted)i(in)e(suc)m(h)h(a)630 -4166 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e +5230 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e Fr(inputrc)35 b Fu(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound) -d(b)m(y)630 4275 y(default.)150 4479 y Ft(glob-complete-word)e(\(M-g\)) -630 4589 y Fu(The)i(w)m(ord)h(b)s(efore)f(p)s(oin)m(t)h(is)g(treated)h -(as)f(a)h(pattern)f(for)f(pathname)h(expansion,)g(with)g(an)630 -4698 y(asterisk)d(implicitly)h(app)s(ended.)37 b(This)23 -b(pattern)i(is)f(used)g(to)h(generate)h(a)e(list)h(of)g(matc)m(hing)630 -4808 y(\014le)30 b(names)h(for)f(p)s(ossible)g(completions.)150 -5011 y Ft(glob-expand-word)c(\(C-x)j(*\))630 5121 y Fu(The)40 -b(w)m(ord)g(b)s(efore)g(p)s(oin)m(t)h(is)g(treated)g(as)g(a)g(pattern)g -(for)f(pathname)g(expansion,)k(and)630 5230 y(the)c(list)g(of)f(matc)m -(hing)i(\014le)e(names)g(is)h(inserted,)h(replacing)g(the)e(w)m(ord.)67 -b(If)39 b(a)h(n)m(umeric)630 5340 y(argumen)m(t)31 b(is)f(supplied,)g -(a)g(`)p Ft(*)p Fu(')h(is)f(app)s(ended)f(b)s(efore)h(pathname)g -(expansion.)p eop end -%%Page: 128 134 -TeXDict begin 128 133 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(128)150 299 y Ft -(glob-list-expansions)25 b(\(C-x)k(g\))630 408 y Fu(The)k(list)h(of)f -(expansions)g(that)h(w)m(ould)f(ha)m(v)m(e)h(b)s(een)f(generated)h(b)m -(y)f Ft(glob-expand-word)630 518 y Fu(is)h(displa)m(y)m(ed,)h(and)e -(the)h(line)g(is)f(redra)m(wn.)50 b(If)33 b(a)h(n)m(umeric)g(argumen)m -(t)g(is)f(supplied,)h(a)g(`)p Ft(*)p Fu(')630 628 y(is)c(app)s(ended)f -(b)s(efore)h(pathname)g(expansion.)150 803 y Ft(display-shell-version) -25 b(\(C-x)k(C-v\))630 912 y Fu(Displa)m(y)j(v)m(ersion)e(information)h -(ab)s(out)f(the)h(curren)m(t)f(instance)h(of)f(Bash.)150 -1088 y Ft(shell-expand-line)c(\(M-C-e\))630 1197 y Fu(Expand)34 -b(the)h(line)h(as)g(the)f(shell)h(do)s(es.)55 b(This)34 -b(p)s(erforms)g(alias)i(and)f(history)g(expansion)630 -1307 y(as)f(w)m(ell)g(as)g(all)h(of)e(the)h(shell)g(w)m(ord)f -(expansions)g(\(see)i(Section)f(3.5)h([Shell)e(Expansions],)630 -1416 y(page)e(21\).)150 1592 y Ft(history-expand-line)25 -b(\(M-^\))630 1701 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the) -h(curren)m(t)f(line.)150 1876 y Ft(magic-space)d(\(\))630 -1986 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g(curren)m(t)g +d(b)m(y)630 5340 y(default.)p eop end +%%Page: 131 137 +TeXDict begin 131 136 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(131)150 299 y Ft +(glob-complete-word)25 b(\(M-g\))630 408 y Fu(The)i(w)m(ord)h(b)s +(efore)f(p)s(oin)m(t)h(is)g(treated)h(as)f(a)h(pattern)f(for)f +(pathname)h(expansion,)g(with)g(an)630 518 y(asterisk)d(implicitly)h +(app)s(ended.)37 b(This)23 b(pattern)i(is)f(used)g(to)h(generate)h(a)e +(list)h(of)g(matc)m(hing)630 628 y(\014le)30 b(names)h(for)f(p)s +(ossible)g(completions.)150 781 y Ft(glob-expand-word)c(\(C-x)j(*\))630 +891 y Fu(The)40 b(w)m(ord)g(b)s(efore)g(p)s(oin)m(t)h(is)g(treated)g +(as)g(a)g(pattern)g(for)f(pathname)g(expansion,)k(and)630 +1000 y(the)c(list)g(of)f(matc)m(hing)i(\014le)e(names)g(is)h(inserted,) +h(replacing)g(the)e(w)m(ord.)67 b(If)39 b(a)h(n)m(umeric)630 +1110 y(argumen)m(t)31 b(is)f(supplied,)g(a)g(`)p Ft(*)p +Fu(')h(is)f(app)s(ended)f(b)s(efore)h(pathname)g(expansion.)150 +1263 y Ft(glob-list-expansions)25 b(\(C-x)k(g\))630 1373 +y Fu(The)k(list)h(of)f(expansions)g(that)h(w)m(ould)f(ha)m(v)m(e)h(b)s +(een)f(generated)h(b)m(y)f Ft(glob-expand-word)630 1482 +y Fu(is)h(displa)m(y)m(ed,)h(and)e(the)h(line)g(is)f(redra)m(wn.)50 +b(If)33 b(a)h(n)m(umeric)g(argumen)m(t)g(is)f(supplied,)h(a)g(`)p +Ft(*)p Fu(')630 1592 y(is)c(app)s(ended)f(b)s(efore)h(pathname)g +(expansion.)150 1746 y Ft(display-shell-version)25 b(\(C-x)k(C-v\))630 +1855 y Fu(Displa)m(y)j(v)m(ersion)e(information)h(ab)s(out)f(the)h +(curren)m(t)f(instance)h(of)f(Bash.)150 2009 y Ft(shell-expand-line)c +(\(M-C-e\))630 2118 y Fu(Expand)34 b(the)h(line)h(as)g(the)f(shell)h +(do)s(es.)55 b(This)34 b(p)s(erforms)g(alias)i(and)f(history)g +(expansion)630 2228 y(as)f(w)m(ell)g(as)g(all)h(of)e(the)h(shell)g(w)m +(ord)f(expansions)g(\(see)i(Section)f(3.5)h([Shell)e(Expansions],)630 +2337 y(page)e(22\).)150 2491 y Ft(history-expand-line)25 +b(\(M-^\))630 2600 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the) +h(curren)m(t)f(line.)150 2754 y Ft(magic-space)d(\(\))630 +2863 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g(curren)m(t)g (line)g(and)g(insert)g(a)g(space)h(\(see)g(Section)g(9.3)630 -2096 y([History)31 b(In)m(teraction],)i(page)e(139\).)150 -2271 y Ft(alias-expand-line)26 b(\(\))630 2380 y Fu(P)m(erform)i(alias) +2973 y([History)31 b(In)m(teraction],)i(page)e(143\).)150 +3126 y Ft(alias-expand-line)26 b(\(\))630 3236 y Fu(P)m(erform)i(alias) i(expansion)e(on)g(the)h(curren)m(t)f(line)h(\(see)g(Section)g(6.6)h -([Aliases],)g(page)f(90\).)150 2556 y Ft(history-and-alias-expand)o -(-lin)o(e)24 b(\(\))630 2665 y Fu(P)m(erform)30 b(history)h(and)e +([Aliases],)g(page)f(93\).)150 3390 y Ft(history-and-alias-expand)o +(-lin)o(e)24 b(\(\))630 3499 y Fu(P)m(erform)30 b(history)h(and)e (alias)j(expansion)e(on)g(the)h(curren)m(t)f(line.)150 -2840 y Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630 -2950 y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150 -3125 y Ft(operate-and-get-next)25 b(\(C-o\))630 3235 +3653 y Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630 +3762 y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150 +3916 y Ft(operate-and-get-next)25 b(\(C-o\))630 4025 y Fu(Accept)42 b(the)e(curren)m(t)h(line)f(for)h(execution)g(and)f (fetc)m(h)i(the)e(next)h(line)g(relativ)m(e)i(to)e(the)630 -3344 y(curren)m(t)30 b(line)h(from)f(the)g(history)h(for)f(editing.)41 -b(An)m(y)31 b(argumen)m(t)f(is)h(ignored.)150 3520 y -Ft(edit-and-execute-command)24 b(\(C-xC-e\))630 3629 +4135 y(curren)m(t)h(line)h(from)g(the)f(history)h(for)f(editing.)79 +b(A)42 b(n)m(umeric)h(argumen)m(t,)j(if)d(supplied,)630 +4244 y(sp)s(eci\014es)30 b(the)h(history)f(en)m(try)h(to)g(use)f +(instead)g(of)h(the)f(curren)m(t)h(line.)150 4398 y Ft +(edit-and-execute-command)24 b(\(C-x)29 b(C-e\))630 4507 y Fu(In)m(v)m(ok)m(e)34 b(an)f(editor)g(on)g(the)g(curren)m(t)f (command)h(line,)h(and)e(execute)i(the)f(result)g(as)g(shell)630 -3739 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h +4617 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h Ft($VISUAL)p Fu(,)f Ft($EDITOR)p Fu(,)h(and)d Ft(emacs)g -Fu(as)h(the)630 3848 y(editor,)31 b(in)f(that)h(order.)150 -4113 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 4272 +Fu(as)h(the)630 4727 y(editor,)31 b(in)f(that)h(order.)150 +4961 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 5121 y Fu(While)32 b(the)g(Readline)g(library)f(do)s(es)g(not)h(ha)m(v)m(e)h (a)f(full)f(set)h(of)g Ft(vi)f Fu(editing)h(functions,)f(it)h(do)s(es)g -(con)m(tain)150 4382 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f +(con)m(tain)150 5230 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f (the)g(line.)52 b(The)34 b(Readline)g Ft(vi)g Fu(mo)s(de)f(b)s(eha)m(v) -m(es)i(as)f(sp)s(eci\014ed)f(in)150 4491 y(the)e Fm(posix)e -Fu(standard.)275 4642 y(In)35 b(order)g(to)i(switc)m(h)f(in)m(teractiv) -m(ely)j(b)s(et)m(w)m(een)d Ft(emacs)f Fu(and)g Ft(vi)g -Fu(editing)h(mo)s(des,)h(use)f(the)g(`)p Ft(set)30 b(-o)150 -4751 y(emacs)p Fu(')43 b(and)h(`)p Ft(set)30 b(-o)f(vi)p -Fu(')44 b(commands)g(\(see)i(Section)f(4.3.1)h([The)e(Set)h(Builtin],)j -(page)e(60\).)83 b(The)150 4861 y(Readline)31 b(default)g(is)f -Ft(emacs)f Fu(mo)s(de.)275 5011 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f -(in)g Ft(vi)f Fu(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g -(`insertion')g(mo)s(de,)g(as)h(if)f(y)m(ou)150 5121 y(had)f(t)m(yp)s -(ed)g(an)g(`)p Ft(i)p Fu('.)41 b(Pressing)29 b Ft(ESC)f -Fu(switc)m(hes)i(y)m(ou)g(in)m(to)h(`command')e(mo)s(de,)h(where)e(y)m -(ou)i(can)g(edit)g(the)150 5230 y(text)35 b(of)f(the)g(line)g(with)f -(the)h(standard)f Ft(vi)g Fu(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e) -f(to)f(previous)g(history)f(lines)h(with)150 5340 y(`)p -Ft(k)p Fu(')d(and)e(subsequen)m(t)h(lines)h(with)f(`)p -Ft(j)p Fu(',)g(and)g(so)h(forth.)p eop end -%%Page: 129 135 -TeXDict begin 129 134 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(129)150 299 y Fs(8.6)68 -b(Programmable)47 b(Completion)150 458 y Fu(When)25 b(w)m(ord)g -(completion)i(is)f(attempted)g(for)g(an)f(argumen)m(t)h(to)g(a)g -(command)f(for)h(whic)m(h)f(a)h(completion)150 568 y(sp)s -(eci\014cation)40 b(\(a)h Fr(compsp)s(ec)6 b Fu(\))39 -b(has)h(b)s(een)f(de\014ned)f(using)h(the)h Ft(complete)d -Fu(builtin)j(\(see)g(Section)h(8.7)150 677 y([Programmable)h -(Completion)f(Builtins],)k(page)d(131\),)j(the)c(programmable)g -(completion)i(facilities)150 787 y(are)31 b(in)m(v)m(ok)m(ed.)275 -936 y(First,)23 b(the)e(command)g(name)g(is)h(iden)m(ti\014ed.)37 -b(If)21 b(a)g(compsp)s(ec)g(has)g(b)s(een)f(de\014ned)g(for)h(that)h -(command,)150 1046 y(the)44 b(compsp)s(ec)g(is)g(used)f(to)h(generate)i -(the)e(list)g(of)g(p)s(ossible)g(completions)h(for)e(the)h(w)m(ord.)81 -b(If)44 b(the)150 1156 y(command)36 b(w)m(ord)g(is)g(the)g(empt)m(y)h -(string)f(\(completion)i(attempted)f(at)g(the)g(b)s(eginning)e(of)h(an) -h(empt)m(y)150 1265 y(line\),)30 b(an)m(y)g(compsp)s(ec)f(de\014ned)f -(with)h(the)h Ft(-E)e Fu(option)i(to)g Ft(complete)d -Fu(is)i(used.)40 b(If)29 b(the)g(command)g(w)m(ord)150 -1375 y(is)e(a)h(full)e(pathname,)i(a)g(compsp)s(ec)e(for)h(the)g(full)g -(pathname)g(is)g(searc)m(hed)h(for)f(\014rst.)39 b(If)26 -b(no)h(compsp)s(ec)g(is)150 1484 y(found)22 b(for)g(the)h(full)g -(pathname,)h(an)f(attempt)h(is)f(made)g(to)g(\014nd)f(a)h(compsp)s(ec)f -(for)h(the)g(p)s(ortion)f(follo)m(wing)150 1594 y(the)34 -b(\014nal)g(slash.)53 b(If)34 b(those)g(searc)m(hes)i(do)e(not)g -(result)h(in)f(a)g(compsp)s(ec,)h(an)m(y)g(compsp)s(ec)f(de\014ned)f -(with)150 1704 y(the)e Ft(-D)e Fu(option)i(to)g Ft(complete)d -Fu(is)j(used)e(as)i(the)g(default.)275 1853 y(Once)j(a)g(compsp)s(ec)g -(has)g(b)s(een)f(found,)h(it)h(is)f(used)f(to)i(generate)h(the)e(list)h -(of)f(matc)m(hing)h(w)m(ords.)51 b(If)150 1963 y(a)37 -b(compsp)s(ec)f(is)g(not)h(found,)f(the)h(default)f(Bash)h(completion)g -(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)g(8.4.6)150 -2072 y([Commands)30 b(F)-8 b(or)31 b(Completion],)g(page)g(124\))h(is)f -(p)s(erformed.)275 2222 y(First,)g(the)g(actions)g(sp)s(eci\014ed)f(b)m -(y)h(the)f(compsp)s(ec)h(are)g(used.)40 b(Only)30 b(matc)m(hes)i(whic)m -(h)e(are)h(pre\014xed)150 2331 y(b)m(y)h(the)f(w)m(ord)h(b)s(eing)f -(completed)h(are)g(returned.)44 b(When)31 b(the)h Ft(-f)f -Fu(or)h Ft(-d)f Fu(option)h(is)f(used)g(for)h(\014lename)150 -2441 y(or)e(directory)h(name)f(completion,)i(the)e(shell)h(v)-5 +m(es)i(as)f(sp)s(eci\014ed)f(in)150 5340 y(the)e Fm(posix)e +Fu(standard.)p eop end +%%Page: 132 138 +TeXDict begin 132 137 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(132)275 299 y(In)35 +b(order)g(to)i(switc)m(h)f(in)m(teractiv)m(ely)j(b)s(et)m(w)m(een)d +Ft(emacs)f Fu(and)g Ft(vi)g Fu(editing)h(mo)s(des,)h(use)f(the)g(`)p +Ft(set)30 b(-o)150 408 y(emacs)p Fu(')43 b(and)h(`)p +Ft(set)30 b(-o)f(vi)p Fu(')44 b(commands)g(\(see)i(Section)f(4.3.1)h +([The)e(Set)h(Builtin],)j(page)e(61\).)83 b(The)150 518 +y(Readline)31 b(default)g(is)f Ft(emacs)f Fu(mo)s(de.)275 +650 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Ft(vi)f +Fu(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g(`insertion')g(mo)s +(de,)g(as)h(if)f(y)m(ou)150 759 y(had)f(t)m(yp)s(ed)g(an)g(`)p +Ft(i)p Fu('.)41 b(Pressing)29 b Ft(ESC)f Fu(switc)m(hes)i(y)m(ou)g(in)m +(to)h(`command')e(mo)s(de,)h(where)e(y)m(ou)i(can)g(edit)g(the)150 +869 y(text)35 b(of)f(the)g(line)g(with)f(the)h(standard)f +Ft(vi)g Fu(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e)f(to)f(previous)g +(history)f(lines)h(with)150 978 y(`)p Ft(k)p Fu(')d(and)e(subsequen)m +(t)h(lines)h(with)f(`)p Ft(j)p Fu(',)g(and)g(so)h(forth.)150 +1213 y Fs(8.6)68 b(Programmable)47 b(Completion)150 1373 +y Fu(When)25 b(w)m(ord)g(completion)i(is)f(attempted)g(for)g(an)f +(argumen)m(t)h(to)g(a)g(command)f(for)h(whic)m(h)f(a)h(completion)150 +1482 y(sp)s(eci\014cation)40 b(\(a)h Fr(compsp)s(ec)6 +b Fu(\))39 b(has)h(b)s(een)f(de\014ned)f(using)h(the)h +Ft(complete)d Fu(builtin)j(\(see)g(Section)h(8.7)150 +1592 y([Programmable)h(Completion)f(Builtins],)k(page)d(134\),)j(the)c +(programmable)g(completion)i(facilities)150 1701 y(are)31 +b(in)m(v)m(ok)m(ed.)275 1833 y(First,)23 b(the)e(command)g(name)g(is)h +(iden)m(ti\014ed.)37 b(If)21 b(a)g(compsp)s(ec)g(has)g(b)s(een)f +(de\014ned)g(for)h(that)h(command,)150 1943 y(the)44 +b(compsp)s(ec)g(is)g(used)f(to)h(generate)i(the)e(list)g(of)g(p)s +(ossible)g(completions)h(for)e(the)h(w)m(ord.)81 b(If)44 +b(the)150 2052 y(command)36 b(w)m(ord)g(is)g(the)g(empt)m(y)h(string)f +(\(completion)i(attempted)f(at)g(the)g(b)s(eginning)e(of)h(an)h(empt)m +(y)150 2162 y(line\),)30 b(an)m(y)g(compsp)s(ec)f(de\014ned)f(with)h +(the)h Ft(-E)e Fu(option)i(to)g Ft(complete)d Fu(is)i(used.)40 +b(If)29 b(the)g(command)g(w)m(ord)150 2271 y(is)e(a)h(full)e(pathname,) +i(a)g(compsp)s(ec)e(for)h(the)g(full)g(pathname)g(is)g(searc)m(hed)h +(for)f(\014rst.)39 b(If)26 b(no)h(compsp)s(ec)g(is)150 +2381 y(found)22 b(for)g(the)h(full)g(pathname,)h(an)f(attempt)h(is)f +(made)g(to)g(\014nd)f(a)h(compsp)s(ec)f(for)h(the)g(p)s(ortion)f(follo) +m(wing)150 2490 y(the)34 b(\014nal)g(slash.)53 b(If)34 +b(those)g(searc)m(hes)i(do)e(not)g(result)h(in)f(a)g(compsp)s(ec,)h(an) +m(y)g(compsp)s(ec)f(de\014ned)f(with)150 2600 y(the)k +Ft(-D)g Fu(option)g(to)h Ft(complete)d Fu(is)i(used)g(as)g(the)g +(default.)61 b(If)37 b(there)g(is)h(no)f(default)g(compsp)s(ec,)i(Bash) +150 2710 y(attempts)e(alias)h(expansion)e(on)g(the)h(command)f(w)m(ord) +g(as)h(a)f(\014nal)g(resort,)j(and)c(attempts)j(to)f(\014nd)e(a)150 +2819 y(compsp)s(ec)30 b(for)g(the)h(command)f(w)m(ord)g(from)g(an)m(y)h +(successful)f(expansion)275 2951 y(Once)k(a)g(compsp)s(ec)g(has)g(b)s +(een)f(found,)h(it)h(is)f(used)f(to)i(generate)h(the)e(list)h(of)f +(matc)m(hing)h(w)m(ords.)51 b(If)150 3060 y(a)37 b(compsp)s(ec)f(is)g +(not)h(found,)f(the)h(default)f(Bash)h(completion)g(describ)s(ed)e(ab)s +(o)m(v)m(e)j(\(see)f(Section)g(8.4.6)150 3170 y([Commands)30 +b(F)-8 b(or)31 b(Completion],)g(page)g(127\))h(is)f(p)s(erformed.)275 +3302 y(First,)g(the)g(actions)g(sp)s(eci\014ed)f(b)m(y)h(the)f(compsp)s +(ec)h(are)g(used.)40 b(Only)30 b(matc)m(hes)i(whic)m(h)e(are)h +(pre\014xed)150 3411 y(b)m(y)h(the)f(w)m(ord)h(b)s(eing)f(completed)h +(are)g(returned.)44 b(When)31 b(the)h Ft(-f)f Fu(or)h +Ft(-d)f Fu(option)h(is)f(used)g(for)h(\014lename)150 +3521 y(or)e(directory)h(name)f(completion,)i(the)e(shell)h(v)-5 b(ariable)31 b Ft(FIGNORE)d Fu(is)i(used)f(to)i(\014lter)g(the)f(matc)m -(hes.)42 b(See)150 2550 y(Section)31 b(5.2)h([Bash)e(V)-8 -b(ariables],)33 b(page)e(71,)g(for)f(a)h(description)g(of)f -Ft(FIGNORE)p Fu(.)275 2700 y(An)m(y)22 b(completions)h(sp)s(eci\014ed)f +(hes.)42 b(See)150 3630 y(Section)31 b(5.2)h([Bash)e(V)-8 +b(ariables],)33 b(page)e(73,)g(for)f(a)h(description)g(of)f +Ft(FIGNORE)p Fu(.)275 3762 y(An)m(y)22 b(completions)h(sp)s(eci\014ed)f (b)m(y)g(a)h(\014lename)f(expansion)h(pattern)f(to)h(the)g -Ft(-G)e Fu(option)i(are)g(generated)150 2809 y(next.)41 +Ft(-G)e Fu(option)i(are)g(generated)150 3871 y(next.)41 b(The)29 b(w)m(ords)g(generated)h(b)m(y)g(the)g(pattern)f(need)h(not)f (matc)m(h)i(the)f(w)m(ord)f(b)s(eing)g(completed.)41 -b(The)150 2919 y Ft(GLOBIGNORE)29 b Fu(shell)i(v)-5 b(ariable)32 +b(The)150 3981 y Ft(GLOBIGNORE)29 b Fu(shell)i(v)-5 b(ariable)32 b(is)g(not)g(used)e(to)i(\014lter)g(the)g(matc)m(hes,)h(but)d(the)i -Ft(FIGNORE)e Fu(shell)h(v)-5 b(ariable)150 3029 y(is)30 -b(used.)275 3178 y(Next,)39 b(the)f(string)f(sp)s(eci\014ed)f(as)h(the) +Ft(FIGNORE)e Fu(shell)h(v)-5 b(ariable)150 4091 y(is)30 +b(used.)275 4222 y(Next,)39 b(the)f(string)f(sp)s(eci\014ed)f(as)h(the) g(argumen)m(t)h(to)g(the)f Ft(-W)f Fu(option)i(is)f(considered.)60 -b(The)37 b(string)150 3288 y(is)c(\014rst)e(split)i(using)f(the)h(c)m +b(The)37 b(string)150 4332 y(is)c(\014rst)e(split)i(using)f(the)h(c)m (haracters)h(in)e(the)h Ft(IFS)e Fu(sp)s(ecial)j(v)-5 b(ariable)33 b(as)g(delimiters.)48 b(Shell)32 b(quoting)h(is)150 -3397 y(honored.)56 b(Eac)m(h)37 b(w)m(ord)e(is)h(then)f(expanded)g -(using)h(brace)g(expansion,)h(tilde)f(expansion,)h(parameter)150 -3507 y(and)44 b(v)-5 b(ariable)46 b(expansion,)j(command)44 -b(substitution,)49 b(and)44 b(arithmetic)i(expansion,)j(as)c(describ)s -(ed)150 3616 y(ab)s(o)m(v)m(e)38 b(\(see)f(Section)h(3.5)g([Shell)e -(Expansions],)i(page)f(21\).)61 b(The)36 b(results)h(are)g(split)f -(using)h(the)f(rules)150 3726 y(describ)s(ed)29 b(ab)s(o)m(v)m(e)i -(\(see)f(Section)h(3.5.7)h([W)-8 b(ord)30 b(Splitting],)h(page)f(30\).) -42 b(The)30 b(results)f(of)h(the)g(expansion)150 3836 -y(are)f(pre\014x-matc)m(hed)h(against)g(the)f(w)m(ord)g(b)s(eing)f -(completed,)j(and)d(the)i(matc)m(hing)g(w)m(ords)e(b)s(ecome)i(the)150 -3945 y(p)s(ossible)g(completions.)275 4095 y(After)f(these)g(matc)m -(hes)i(ha)m(v)m(e)f(b)s(een)f(generated,)h(an)m(y)g(shell)f(function)g -(or)g(command)g(sp)s(eci\014ed)f(with)150 4204 y(the)36 -b Ft(-F)f Fu(and)g Ft(-C)g Fu(options)h(is)g(in)m(v)m(ok)m(ed.)59 -b(When)35 b(the)h(command)g(or)f(function)h(is)g(in)m(v)m(ok)m(ed,)i -(the)e Ft(COMP_)150 4314 y(LINE)p Fu(,)42 b Ft(COMP_POINT)p -Fu(,)d Ft(COMP_KEY)p Fu(,)i(and)e Ft(COMP_TYPE)f Fu(v)-5 -b(ariables)41 b(are)f(assigned)g(v)-5 b(alues)41 b(as)f(describ)s(ed) -150 4423 y(ab)s(o)m(v)m(e)34 b(\(see)g(Section)g(5.2)g([Bash)f(V)-8 -b(ariables],)36 b(page)d(71\).)50 b(If)33 b(a)g(shell)g(function)g(is)g -(b)s(eing)f(in)m(v)m(ok)m(ed,)k(the)150 4533 y Ft(COMP_WORDS)j -Fu(and)i Ft(COMP_CWORD)d Fu(v)-5 b(ariables)42 b(are)g(also)h(set.)74 -b(When)41 b(the)h(function)f(or)h(command)f(is)150 4643 +4441 y(honored)f(within)h(the)g(string,)h(in)f(order)f(to)i(pro)m(vide) +f(a)h(mec)m(hanism)f(for)g(the)g(w)m(ords)g(to)g(con)m(tain)i(shell)150 +4551 y(metac)m(haracters)e(or)e(c)m(haracters)i(in)e(the)g(v)-5 +b(alue)31 b(of)g Ft(IFS)p Fu(.)42 b(Eac)m(h)32 b(w)m(ord)e(is)h(then)g +(expanded)f(using)h(brace)150 4660 y(expansion,)g(tilde)h(expansion,)f +(parameter)g(and)g(v)-5 b(ariable)32 b(expansion,)f(command)f +(substitution,)i(and)150 4770 y(arithmetic)c(expansion,)f(as)g(describ) +s(ed)e(ab)s(o)m(v)m(e)i(\(see)h(Section)f(3.5)g([Shell)g(Expansions],)g +(page)g(22\).)40 b(The)150 4880 y(results)23 b(are)h(split)g(using)f +(the)h(rules)f(describ)s(ed)f(ab)s(o)m(v)m(e)j(\(see)g(Section)f(3.5.7) +h([W)-8 b(ord)24 b(Splitting],)i(page)e(31\).)150 4989 +y(The)j(results)h(of)f(the)h(expansion)g(are)g(pre\014x-matc)m(hed)g +(against)h(the)f(w)m(ord)f(b)s(eing)g(completed,)j(and)d(the)150 +5099 y(matc)m(hing)k(w)m(ords)f(b)s(ecome)h(the)g(p)s(ossible)f +(completions.)275 5230 y(After)f(these)g(matc)m(hes)i(ha)m(v)m(e)f(b)s +(een)f(generated,)h(an)m(y)g(shell)f(function)g(or)g(command)g(sp)s +(eci\014ed)f(with)150 5340 y(the)36 b Ft(-F)f Fu(and)g +Ft(-C)g Fu(options)h(is)g(in)m(v)m(ok)m(ed.)59 b(When)35 +b(the)h(command)g(or)f(function)h(is)g(in)m(v)m(ok)m(ed,)i(the)e +Ft(COMP_)p eop end +%%Page: 133 139 +TeXDict begin 133 138 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(133)150 299 y Ft(LINE)p +Fu(,)42 b Ft(COMP_POINT)p Fu(,)d Ft(COMP_KEY)p Fu(,)i(and)e +Ft(COMP_TYPE)f Fu(v)-5 b(ariables)41 b(are)f(assigned)g(v)-5 +b(alues)41 b(as)f(describ)s(ed)150 408 y(ab)s(o)m(v)m(e)34 +b(\(see)g(Section)g(5.2)g([Bash)f(V)-8 b(ariables],)36 +b(page)d(73\).)50 b(If)33 b(a)g(shell)g(function)g(is)g(b)s(eing)f(in)m +(v)m(ok)m(ed,)k(the)150 518 y Ft(COMP_WORDS)j Fu(and)i +Ft(COMP_CWORD)d Fu(v)-5 b(ariables)42 b(are)g(also)h(set.)74 +b(When)41 b(the)h(function)f(or)h(command)f(is)150 628 y(in)m(v)m(ok)m(ed,)c(the)e(\014rst)f(argumen)m(t)h(\($1\))h(is)e(the)h (name)g(of)f(the)h(command)f(whose)h(argumen)m(ts)f(are)h(b)s(eing)150 -4752 y(completed,)30 b(the)f(second)f(argumen)m(t)h(\($2\))h(is)f(the)g +737 y(completed,)30 b(the)f(second)f(argumen)m(t)h(\($2\))h(is)f(the)g (w)m(ord)f(b)s(eing)g(completed,)i(and)e(the)h(third)e(argumen)m(t)150 -4862 y(\($3\))40 b(is)f(the)f(w)m(ord)h(preceding)f(the)h(w)m(ord)f(b)s +847 y(\($3\))40 b(is)f(the)f(w)m(ord)h(preceding)f(the)h(w)m(ord)f(b)s (eing)g(completed)i(on)e(the)h(curren)m(t)f(command)h(line.)65 -b(No)150 4971 y(\014ltering)33 b(of)h(the)f(generated)h(completions)g +b(No)150 956 y(\014ltering)33 b(of)h(the)f(generated)h(completions)g (against)h(the)e(w)m(ord)g(b)s(eing)f(completed)i(is)g(p)s(erformed;)f -(the)150 5081 y(function)d(or)g(command)h(has)f(complete)i(freedom)e -(in)g(generating)h(the)g(matc)m(hes.)275 5230 y(An)m(y)j(function)h(sp) +(the)150 1066 y(function)d(or)g(command)h(has)f(complete)i(freedom)e +(in)g(generating)h(the)g(matc)m(hes.)275 1200 y(An)m(y)j(function)h(sp) s(eci\014ed)f(with)g Ft(-F)g Fu(is)h(in)m(v)m(ok)m(ed)h(\014rst.)53 b(The)35 b(function)f(ma)m(y)h(use)g(an)m(y)g(of)g(the)g(shell)150 -5340 y(facilities,)50 b(including)44 b(the)h Ft(compgen)d +1310 y(facilities,)50 b(including)44 b(the)h Ft(compgen)d Fu(and)i Ft(compopt)e Fu(builtins)i(describ)s(ed)f(b)s(elo)m(w)h(\(see) -i(Section)f(8.7)p eop end -%%Page: 130 136 -TeXDict begin 130 135 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(130)150 299 y([Programmable)31 -b(Completion)h(Builtins],)f(page)h(131\),)g(to)g(generate)g(the)f(matc) -m(hes.)42 b(It)31 b(m)m(ust)g(put)f(the)150 408 y(p)s(ossible)g -(completions)h(in)f(the)h Ft(COMPREPLY)d Fu(arra)m(y)j(v)-5 -b(ariable,)31 b(one)g(p)s(er)e(arra)m(y)i(elemen)m(t.)275 -542 y(Next,)26 b(an)m(y)f(command)f(sp)s(eci\014ed)g(with)g(the)h -Ft(-C)f Fu(option)h(is)f(in)m(v)m(ok)m(ed)i(in)e(an)g(en)m(vironmen)m -(t)h(equiv)-5 b(alen)m(t)150 652 y(to)26 b(command)e(substitution.)39 +i(Section)f(8.7)150 1419 y([Programmable)31 b(Completion)h(Builtins],)f +(page)h(134\),)g(to)g(generate)g(the)f(matc)m(hes.)42 +b(It)31 b(m)m(ust)g(put)f(the)150 1529 y(p)s(ossible)g(completions)h +(in)f(the)h Ft(COMPREPLY)d Fu(arra)m(y)j(v)-5 b(ariable,)31 +b(one)g(p)s(er)e(arra)m(y)i(elemen)m(t.)275 1663 y(Next,)26 +b(an)m(y)f(command)f(sp)s(eci\014ed)g(with)g(the)h Ft(-C)f +Fu(option)h(is)f(in)m(v)m(ok)m(ed)i(in)e(an)g(en)m(vironmen)m(t)h +(equiv)-5 b(alen)m(t)150 1772 y(to)26 b(command)e(substitution.)39 b(It)25 b(should)f(prin)m(t)h(a)g(list)h(of)f(completions,)i(one)e(p)s -(er)f(line,)j(to)f(the)f(standard)150 762 y(output.)40 +(er)f(line,)j(to)f(the)f(standard)150 1882 y(output.)40 b(Bac)m(kslash)32 b(ma)m(y)f(b)s(e)f(used)g(to)h(escap)s(e)g(a)f -(newline,)h(if)f(necessary)-8 b(.)275 896 y(After)24 +(newline,)h(if)f(necessary)-8 b(.)275 2016 y(After)24 b(all)i(of)f(the)f(p)s(ossible)g(completions)i(are)f(generated,)i(an)m (y)e(\014lter)g(sp)s(eci\014ed)e(with)i(the)g Ft(-X)e -Fu(option)150 1005 y(is)34 b(applied)g(to)g(the)h(list.)52 +Fu(option)150 2125 y(is)34 b(applied)g(to)g(the)h(list.)52 b(The)33 b(\014lter)h(is)g(a)h(pattern)f(as)g(used)f(for)h(pathname)g -(expansion;)i(a)e(`)p Ft(&)p Fu(')g(in)g(the)150 1115 +(expansion;)i(a)e(`)p Ft(&)p Fu(')g(in)g(the)150 2235 y(pattern)28 b(is)f(replaced)h(with)g(the)f(text)i(of)f(the)f(w)m(ord)h (b)s(eing)f(completed.)40 b(A)28 b(literal)h(`)p Ft(&)p -Fu(')f(ma)m(y)g(b)s(e)f(escap)s(ed)150 1224 y(with)38 +Fu(')f(ma)m(y)g(b)s(e)f(escap)s(ed)150 2345 y(with)38 b(a)h(bac)m(kslash;)k(the)38 b(bac)m(kslash)h(is)g(remo)m(v)m(ed)g(b)s (efore)f(attempting)h(a)g(matc)m(h.)65 b(An)m(y)39 b(completion)150 -1334 y(that)32 b(matc)m(hes)g(the)g(pattern)g(will)f(b)s(e)g(remo)m(v)m +2454 y(that)32 b(matc)m(hes)g(the)g(pattern)g(will)f(b)s(e)g(remo)m(v)m (ed)h(from)f(the)h(list.)44 b(A)32 b(leading)g(`)p Ft(!)p -Fu(')f(negates)i(the)f(pattern;)150 1443 y(in)d(this)g(case)h(an)m(y)g +Fu(')f(negates)i(the)f(pattern;)150 2564 y(in)d(this)g(case)h(an)m(y)g (completion)h(not)e(matc)m(hing)h(the)g(pattern)f(will)h(b)s(e)e(remo)m -(v)m(ed.)42 b(If)29 b(the)g Ft(nocasematch)150 1553 y +(v)m(ed.)42 b(If)29 b(the)g Ft(nocasematch)150 2673 y Fu(shell)k(option)f(\(see)i(the)e(description)g(of)h Ft(shopt)e Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g -(64\))h(is)150 1663 y(enabled,)d(the)f(matc)m(h)h(is)g(p)s(erformed)e +(65\))h(is)150 2783 y(enabled,)d(the)f(matc)m(h)h(is)g(p)s(erformed)e (without)h(regard)g(to)h(the)g(case)g(of)g(alphab)s(etic)g(c)m -(haracters.)275 1797 y(Finally)-8 b(,)42 b(an)m(y)c(pre\014x)g(and)f +(haracters.)275 2917 y(Finally)-8 b(,)42 b(an)m(y)c(pre\014x)g(and)f (su\016x)h(sp)s(eci\014ed)f(with)i(the)f Ft(-P)g Fu(and)g -Ft(-S)f Fu(options)i(are)g(added)f(to)h(eac)m(h)150 1906 +Ft(-S)f Fu(options)i(are)g(added)f(to)h(eac)m(h)150 3026 y(mem)m(b)s(er)31 b(of)g(the)h(completion)h(list,)f(and)f(the)h(result) f(is)h(returned)e(to)i(the)g(Readline)g(completion)h(co)s(de)150 -2016 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)275 -2150 y(If)d(the)h(previously-applied)f(actions)i(do)f(not)g(generate)h +3136 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)275 +3270 y(If)d(the)h(previously-applied)f(actions)i(do)f(not)g(generate)h (an)m(y)f(matc)m(hes,)i(and)d(the)h Ft(-o)h(dirnames)d -Fu(op-)150 2259 y(tion)j(w)m(as)f(supplied)f(to)i Ft(complete)d +Fu(op-)150 3380 y(tion)j(w)m(as)f(supplied)f(to)i Ft(complete)d Fu(when)h(the)h(compsp)s(ec)g(w)m(as)g(de\014ned,)g(directory)g(name)h -(completion)150 2369 y(is)h(attempted.)275 2503 y(If)35 +(completion)150 3489 y(is)h(attempted.)275 3623 y(If)35 b(the)g Ft(-o)30 b(plusdirs)j Fu(option)j(w)m(as)g(supplied)e(to)i Ft(complete)e Fu(when)g(the)i(compsp)s(ec)f(w)m(as)h(de\014ned,)150 -2612 y(directory)g(name)f(completion)i(is)e(attempted)h(and)f(an)m(y)h +3733 y(directory)g(name)f(completion)i(is)e(attempted)h(and)f(an)m(y)h (matc)m(hes)g(are)g(added)f(to)h(the)f(results)g(of)h(the)150 -2722 y(other)31 b(actions.)275 2856 y(By)g(default,)i(if)e(a)h(compsp)s +3842 y(other)31 b(actions.)275 3976 y(By)g(default,)i(if)e(a)h(compsp)s (ec)f(is)h(found,)f(whatev)m(er)h(it)g(generates)h(is)e(returned)g(to)h -(the)g(completion)150 2966 y(co)s(de)21 b(as)g(the)g(full)g(set)g(of)g +(the)g(completion)150 4086 y(co)s(de)21 b(as)g(the)g(full)g(set)g(of)g (p)s(ossible)f(completions.)39 b(The)20 b(default)h(Bash)g(completions) -h(are)g(not)f(attempted,)150 3075 y(and)30 b(the)g(Readline)h(default)f +h(are)g(not)f(attempted,)150 4195 y(and)30 b(the)g(Readline)h(default)f (of)g(\014lename)h(completion)g(is)f(disabled.)41 b(If)29 -b(the)i Ft(-o)e(bashdefault)e Fu(option)150 3185 y(w)m(as)d(supplied)e +b(the)i Ft(-o)e(bashdefault)e Fu(option)150 4305 y(w)m(as)d(supplied)e (to)j Ft(complete)c Fu(when)i(the)g(compsp)s(ec)h(w)m(as)g(de\014ned,)g -(the)f(default)h(Bash)g(completions)h(are)150 3294 y(attempted)j(if)f +(the)f(default)h(Bash)g(completions)h(are)150 4415 y(attempted)j(if)f (the)h(compsp)s(ec)f(generates)h(no)f(matc)m(hes.)41 b(If)27 b(the)g Ft(-o)j(default)25 b Fu(option)j(w)m(as)f(supplied)f -(to)150 3404 y Ft(complete)f Fu(when)h(the)h(compsp)s(ec)f(w)m(as)i +(to)150 4524 y Ft(complete)f Fu(when)h(the)h(compsp)s(ec)f(w)m(as)i (de\014ned,)e(Readline's)i(default)f(completion)h(will)f(b)s(e)f(p)s -(erformed)150 3513 y(if)k(the)h(compsp)s(ec)f(\(and,)g(if)h(attempted,) +(erformed)150 4634 y(if)k(the)h(compsp)s(ec)f(\(and,)g(if)h(attempted,) g(the)g(default)f(Bash)h(completions\))h(generate)g(no)e(matc)m(hes.) -275 3647 y(When)20 b(a)i(compsp)s(ec)e(indicates)i(that)g(directory)g +275 4768 y(When)20 b(a)i(compsp)s(ec)e(indicates)i(that)g(directory)g (name)f(completion)h(is)f(desired,)i(the)e(programmable)150 -3757 y(completion)31 b(functions)e(force)i(Readline)f(to)h(app)s(end)d +4877 y(completion)31 b(functions)e(force)i(Readline)f(to)h(app)s(end)d (a)i(slash)g(to)g(completed)h(names)e(whic)m(h)h(are)g(sym-)150 -3867 y(b)s(olic)40 b(links)g(to)h(directories,)j(sub)5 +4987 y(b)s(olic)40 b(links)g(to)h(directories,)j(sub)5 b(ject)40 b(to)h(the)f(v)-5 b(alue)41 b(of)f(the)g Fr(mark-directories) -45 b Fu(Readline)c(v)-5 b(ariable,)150 3976 y(regardless)31 +45 b Fu(Readline)c(v)-5 b(ariable,)150 5096 y(regardless)31 b(of)f(the)h(setting)g(of)g(the)f Fr(mark-symlink)m(ed-directories)36 -b Fu(Readline)31 b(v)-5 b(ariable.)275 4110 y(There)25 +b Fu(Readline)31 b(v)-5 b(ariable.)275 5230 y(There)25 b(is)i(some)g(supp)s(ort)e(for)h(dynamically)h(mo)s(difying)f (completions.)40 b(This)26 b(is)g(most)h(useful)f(when)150 -4220 y(used)40 b(in)h(com)m(bination)i(with)e(a)g(default)h(completion) +5340 y(used)40 b(in)h(com)m(bination)i(with)e(a)g(default)h(completion) g(sp)s(eci\014ed)f(with)g Ft(-D)p Fu(.)72 b(It's)42 b(p)s(ossible)f -(for)g(shell)150 4329 y(functions)28 b(executed)h(as)f(completion)i -(handlers)d(to)i(indicate)g(that)g(completion)g(should)e(b)s(e)h -(retried)g(b)m(y)150 4439 y(returning)j(an)i(exit)g(status)f(of)h(124.) -48 b(If)31 b(a)i(shell)f(function)g(returns)f(124,)k(and)c(c)m(hanges)j -(the)e(compsp)s(ec)150 4548 y(asso)s(ciated)43 b(with)e(the)g(command)g -(on)g(whic)m(h)g(completion)i(is)e(b)s(eing)g(attempted)h(\(supplied)e -(as)i(the)150 4658 y(\014rst)29 b(argumen)m(t)h(when)e(the)i(function)f -(is)g(executed\),)j(programmable)d(completion)i(restarts)f(from)f(the) -150 4768 y(b)s(eginning,)e(with)g(an)h(attempt)g(to)g(\014nd)e(a)i(new) -e(compsp)s(ec)i(for)f(that)h(command.)39 b(This)27 b(allo)m(ws)h(a)g -(set)g(of)150 4877 y(completions)33 b(to)f(b)s(e)g(built)f(dynamically) -i(as)f(completion)h(is)f(attempted,)h(rather)f(than)f(b)s(eing)g -(loaded)150 4987 y(all)g(at)g(once.)275 5121 y(F)-8 b(or)38 -b(instance,)h(assuming)e(that)h(there)f(is)h(a)f(library)g(of)g(compsp) -s(ecs,)i(eac)m(h)g(k)m(ept)e(in)g(a)h(\014le)f(corre-)150 -5230 y(sp)s(onding)g(to)j(the)f(name)f(of)h(the)g(command,)i(the)e -(follo)m(wing)h(default)f(completion)h(function)e(w)m(ould)150 -5340 y(load)31 b(completions)g(dynamically:)p eop end -%%Page: 131 137 -TeXDict begin 131 136 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(131)390 299 y Ft -(_completion_loader\(\))390 408 y({)581 518 y(.)47 b -("/etc/bash_completion.d/$1)o(.sh)o(")42 b(>/dev/null)j(2>&1)i(&&)g -(return)f(124)390 628 y(})390 737 y(complete)g(-D)h(-F)g -(_completion_loader)c(-o)k(bashdefault)e(-o)i(default)150 -972 y Fs(8.7)68 b(Programmable)47 b(Completion)f(Builtins)150 -1131 y Fu(Three)21 b(builtin)g(commands)f(are)i(a)m(v)-5 +(for)g(shell)p eop end +%%Page: 134 140 +TeXDict begin 134 139 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(134)150 299 y(functions)28 +b(executed)h(as)f(completion)i(handlers)d(to)i(indicate)g(that)g +(completion)g(should)e(b)s(e)h(retried)g(b)m(y)150 408 +y(returning)j(an)i(exit)g(status)f(of)h(124.)48 b(If)31 +b(a)i(shell)f(function)g(returns)f(124,)k(and)c(c)m(hanges)j(the)e +(compsp)s(ec)150 518 y(asso)s(ciated)43 b(with)e(the)g(command)g(on)g +(whic)m(h)g(completion)i(is)e(b)s(eing)g(attempted)h(\(supplied)e(as)i +(the)150 628 y(\014rst)29 b(argumen)m(t)h(when)e(the)i(function)f(is)g +(executed\),)j(programmable)d(completion)i(restarts)f(from)f(the)150 +737 y(b)s(eginning,)e(with)g(an)h(attempt)g(to)g(\014nd)e(a)i(new)e +(compsp)s(ec)i(for)f(that)h(command.)39 b(This)27 b(allo)m(ws)h(a)g +(set)g(of)150 847 y(completions)33 b(to)f(b)s(e)g(built)f(dynamically)i +(as)f(completion)h(is)f(attempted,)h(rather)f(than)f(b)s(eing)g(loaded) +150 956 y(all)g(at)g(once.)275 1088 y(F)-8 b(or)38 b(instance,)h +(assuming)e(that)h(there)f(is)h(a)f(library)g(of)g(compsp)s(ecs,)i(eac) +m(h)g(k)m(ept)e(in)g(a)h(\014le)f(corre-)150 1198 y(sp)s(onding)g(to)j +(the)f(name)f(of)h(the)g(command,)i(the)e(follo)m(wing)h(default)f +(completion)h(function)e(w)m(ould)150 1307 y(load)31 +b(completions)g(dynamically:)390 1439 y Ft(_completion_loader\(\))390 +1548 y({)581 1658 y(.)47 b("/etc/bash_completion.d/$1)o(.sh)o(")42 +b(>/dev/null)j(2>&1)i(&&)g(return)f(124)390 1767 y(})390 +1877 y(complete)g(-D)h(-F)g(_completion_loader)c(-o)k(bashdefault)e(-o) +i(default)150 2112 y Fs(8.7)68 b(Programmable)47 b(Completion)f +(Builtins)150 2271 y Fu(Three)21 b(builtin)g(commands)f(are)i(a)m(v)-5 b(ailable)24 b(to)e(manipulate)f(the)h(programmable)f(completion)h -(facilities:)150 1241 y(one)34 b(to)g(sp)s(ecify)f(ho)m(w)h(the)f +(facilities:)150 2381 y(one)34 b(to)g(sp)s(ecify)f(ho)m(w)h(the)f (argumen)m(ts)h(to)g(a)g(particular)g(command)f(are)h(to)g(b)s(e)f -(completed,)j(and)d(t)m(w)m(o)150 1351 y(to)e(mo)s(dify)f(the)g -(completion)i(as)e(it)h(is)g(happ)s(ening.)150 1504 y -Ft(compgen)870 1636 y(compgen)46 b([)p Fj(option)p Ft(])f([)p -Fj(word)p Ft(])630 1767 y Fu(Generate)27 b(p)s(ossible)e(completion)i +(completed,)j(and)d(t)m(w)m(o)150 2490 y(to)e(mo)s(dify)f(the)g +(completion)i(as)e(it)h(is)g(happ)s(ening.)150 2644 y +Ft(compgen)870 2775 y(compgen)46 b([)p Fj(option)p Ft(])f([)p +Fj(word)p Ft(])630 2907 y Fu(Generate)27 b(p)s(ossible)e(completion)i (matc)m(hes)g(for)e Fr(w)m(ord)k Fu(according)e(to)f(the)g -Fr(option)p Fu(s,)h(whic)m(h)630 1877 y(ma)m(y)32 b(b)s(e)f(an)m(y)h +Fr(option)p Fu(s,)h(whic)m(h)630 3017 y(ma)m(y)32 b(b)s(e)f(an)m(y)h (option)g(accepted)g(b)m(y)g(the)f Ft(complete)f Fu(builtin)h(with)g -(the)g(exception)i(of)f Ft(-p)630 1986 y Fu(and)39 b +(the)g(exception)i(of)f Ft(-p)630 3126 y Fu(and)39 b Ft(-r)p Fu(,)i(and)e(write)h(the)g(matc)m(hes)g(to)g(the)g(standard)f -(output.)68 b(When)39 b(using)g(the)h Ft(-F)630 2096 +(output.)68 b(When)39 b(using)g(the)h Ft(-F)630 3236 y Fu(or)33 b Ft(-C)f Fu(options,)i(the)e(v)-5 b(arious)33 b(shell)g(v)-5 b(ariables)33 b(set)g(b)m(y)g(the)g(programmable)g -(completion)630 2206 y(facilities,)g(while)d(a)m(v)-5 +(completion)630 3345 y(facilities,)g(while)d(a)m(v)-5 b(ailable,)33 b(will)e(not)g(ha)m(v)m(e)g(useful)f(v)-5 -b(alues.)630 2337 y(The)34 b(matc)m(hes)h(will)g(b)s(e)f(generated)h +b(alues.)630 3477 y(The)34 b(matc)m(hes)h(will)g(b)s(e)f(generated)h (in)f(the)h(same)g(w)m(a)m(y)g(as)g(if)f(the)h(programmable)f(com-)630 -2447 y(pletion)d(co)s(de)g(had)f(generated)i(them)e(directly)i(from)e -(a)h(completion)h(sp)s(eci\014cation)f(with)630 2556 +3586 y(pletion)d(co)s(de)g(had)f(generated)i(them)e(directly)i(from)e +(a)h(completion)h(sp)s(eci\014cation)f(with)630 3696 y(the)e(same)h(\015ags.)40 b(If)29 b Fr(w)m(ord)j Fu(is)d(sp)s (eci\014ed,)g(only)g(those)h(completions)g(matc)m(hing)g -Fr(w)m(ord)j Fu(will)630 2666 y(b)s(e)d(displa)m(y)m(ed.)630 -2797 y(The)24 b(return)g(v)-5 b(alue)25 b(is)g(true)f(unless)g(an)h(in) +Fr(w)m(ord)j Fu(will)630 3806 y(b)s(e)d(displa)m(y)m(ed.)630 +3937 y(The)24 b(return)g(v)-5 b(alue)25 b(is)g(true)f(unless)g(an)h(in) m(v)-5 b(alid)25 b(option)g(is)g(supplied,)f(or)h(no)g(matc)m(hes)g(w)m -(ere)630 2907 y(generated.)150 3060 y Ft(complete)870 -3192 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p -Ft(])e([-DE])h([-A)h Fj(action)p Ft(])f([-)870 3302 y(G)h -Fj(globpat)p Ft(])f([-W)h Fj(wordlist)p Ft(])870 3411 -y([-F)g Fj(function)p Ft(])e([-C)i Fj(command)p Ft(])f([-X)h -Fj(filterpat)p Ft(])870 3521 y([-P)g Fj(prefix)p Ft(])f([-S)h -Fj(suffix)p Ft(])e Fj(name)i Ft([)p Fj(name)f Ft(...])870 -3630 y(complete)g(-pr)g([-DE])h([)p Fj(name)f Ft(...)o(])630 -3762 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i(eac)m(h)g -Fr(name)j Fu(should)37 b(b)s(e)g(completed.)63 b(If)38 -b(the)f Ft(-p)g Fu(option)630 3871 y(is)30 b(supplied,)e(or)i(if)g(no)f -(options)h(are)g(supplied,)f(existing)h(completion)h(sp)s -(eci\014cations)g(are)630 3981 y(prin)m(ted)24 b(in)h(a)g(w)m(a)m(y)g +(ere)630 4047 y(generated.)150 4200 y Ft(complete)870 +4332 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p +Ft(])e([-DEI])h([-A)h Fj(action)p Ft(])e([-)870 4441 +y(G)i Fj(globpat)p Ft(])870 4551 y([-W)g Fj(wordlist)p +Ft(])e([-F)i Fj(function)p Ft(])e([-C)i Fj(command)p +Ft(])f([-X)h Fj(filterpat)p Ft(])870 4660 y([-P)g Fj(prefix)p +Ft(])f([-S)h Fj(suffix)p Ft(])e Fj(name)i Ft([)p Fj(name)f +Ft(...])870 4770 y(complete)g(-pr)g([-DEI])h([)p Fj(name)f +Ft(...)o(])630 4902 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i +(eac)m(h)g Fr(name)j Fu(should)37 b(b)s(e)g(completed.)63 +b(If)38 b(the)f Ft(-p)g Fu(option)630 5011 y(is)30 b(supplied,)e(or)i +(if)g(no)f(options)h(are)g(supplied,)f(existing)h(completion)h(sp)s +(eci\014cations)g(are)630 5121 y(prin)m(ted)24 b(in)h(a)g(w)m(a)m(y)g (that)h(allo)m(ws)g(them)e(to)i(b)s(e)e(reused)f(as)i(input.)38 -b(The)24 b Ft(-r)g Fu(option)i(remo)m(v)m(es)630 4091 +b(The)24 b Ft(-r)g Fu(option)i(remo)m(v)m(es)630 5230 y(a)i(completion)h(sp)s(eci\014cation)f(for)g(eac)m(h)h Fr(name)p Fu(,)f(or,)h(if)e(no)h Fr(name)5 b Fu(s)27 -b(are)h(supplied,)g(all)g(com-)630 4200 y(pletion)k(sp)s -(eci\014cations.)44 b(The)30 b Ft(-D)h Fu(option)h(indicates)g(that)f -(the)h(remaining)f(options)h(and)630 4310 y(actions)27 +b(are)h(supplied,)g(all)g(com-)630 5340 y(pletion)i(sp)s +(eci\014cations.)42 b(The)29 b Ft(-D)g Fu(option)h(indicates)h(that)f +(other)g(supplied)e(options)j(and)p eop end +%%Page: 135 141 +TeXDict begin 135 140 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(135)630 299 y(actions)27 b(should)e(apply)g(to)i(the)f(\\default")h(command)e(completion;)k -(that)e(is,)g(completion)630 4419 y(attempted)g(on)f(a)h(command)f(for) -g(whic)m(h)g(no)g(completion)i(has)d(previously)h(b)s(een)g(de\014ned.) -630 4529 y(The)f Ft(-E)g Fu(option)h(indicates)h(that)f(the)g -(remaining)g(options)g(and)f(actions)i(should)e(apply)g(to)630 -4639 y(\\empt)m(y")32 b(command)e(completion;)i(that)f(is,)f -(completion)i(attempted)f(on)g(a)f(blank)g(line.)630 -4770 y(The)f(pro)s(cess)g(of)h(applying)g(these)g(completion)g(sp)s -(eci\014cations)h(when)d(w)m(ord)i(completion)630 4880 -y(is)35 b(attempted)h(is)f(describ)s(ed)f(ab)s(o)m(v)m(e)j(\(see)f -(Section)g(8.6)g([Programmable)g(Completion],)630 4989 -y(page)31 b(129\).)42 b(The)30 b Ft(-D)g Fu(option)h(tak)m(es)h -(precedence)f(o)m(v)m(er)g Ft(-E)p Fu(.)630 5121 y(Other)d(options,)i -(if)f(sp)s(eci\014ed,)g(ha)m(v)m(e)h(the)f(follo)m(wing)i(meanings.)40 -b(The)29 b(argumen)m(ts)g(to)h(the)630 5230 y Ft(-G)p +(that)e(is,)g(completion)630 408 y(attempted)g(on)f(a)h(command)f(for)g +(whic)m(h)g(no)g(completion)i(has)d(previously)h(b)s(een)g(de\014ned.) +630 518 y(The)e Ft(-E)g Fu(option)h(indicates)g(that)g(other)g +(supplied)e(options)h(and)g(actions)i(should)d(apply)h(to)630 +628 y(\\empt)m(y")33 b(command)e(completion;)i(that)f(is,)g(completion) +h(attempted)f(on)g(a)f(blank)g(line.)630 737 y(The)24 +b Ft(-I)g Fu(option)h(indicates)g(that)g(other)g(supplied)e(options)h +(and)g(actions)i(should)d(apply)h(to)630 847 y(completion)32 +b(on)e(the)g(inital)i(non-assignmen)m(t)f(w)m(ord)f(on)g(the)g(line,)h +(or)g(after)f(a)h(command)630 956 y(delimiter)41 b(suc)m(h)g(as)f(`)p +Ft(;)p Fu(')h(or)g(`)p Ft(|)p Fu(',)i(whic)m(h)e(is)f(usually)h +(command)f(name)h(completion.)72 b(If)630 1066 y(m)m(ultiple)26 +b(options)g(are)g(supplied,)g(the)f Ft(-D)g Fu(option)h(tak)m(es)i +(precedence)e(o)m(v)m(er)g Ft(-E)p Fu(,)h(and)e(b)s(oth)630 +1176 y(tak)m(e)34 b(precedence)f(o)m(v)m(er)h Ft(-I)p +Fu(.)47 b(If)32 b(an)m(y)h(of)g Ft(-D)p Fu(,)g Ft(-E)p +Fu(,)f(or)h Ft(-I)f Fu(are)h(supplied,)f(an)m(y)h(other)g +Fr(name)630 1285 y Fu(argumen)m(ts)k(are)g(ignored;)j(these)d +(completions)h(only)e(apply)g(to)i(the)f(case)g(sp)s(eci\014ed)f(b)m(y) +630 1395 y(the)31 b(option.)630 1541 y(The)e(pro)s(cess)g(of)h +(applying)g(these)g(completion)g(sp)s(eci\014cations)h(when)d(w)m(ord)i +(completion)630 1650 y(is)35 b(attempted)h(is)f(describ)s(ed)f(ab)s(o)m +(v)m(e)j(\(see)f(Section)g(8.6)g([Programmable)g(Completion],)630 +1760 y(page)31 b(132\).)630 1906 y(Other)d(options,)i(if)f(sp)s +(eci\014ed,)g(ha)m(v)m(e)h(the)f(follo)m(wing)i(meanings.)40 +b(The)29 b(argumen)m(ts)g(to)h(the)630 2016 y Ft(-G)p Fu(,)41 b Ft(-W)p Fu(,)h(and)c Ft(-X)h Fu(options)h(\(and,)h(if)f (necessary)-8 b(,)42 b(the)e Ft(-P)f Fu(and)f Ft(-S)h -Fu(options\))h(should)f(b)s(e)630 5340 y(quoted)28 b(to)h(protect)g +Fu(options\))h(should)f(b)s(e)630 2125 y(quoted)28 b(to)h(protect)g (them)f(from)f(expansion)h(b)s(efore)g(the)g Ft(complete)e -Fu(builtin)h(is)h(in)m(v)m(ok)m(ed.)p eop end -%%Page: 132 138 -TeXDict begin 132 137 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(132)630 299 y Ft(-o)30 -b Fj(comp-option)1110 408 y Fu(The)c Fr(comp-option)i +Fu(builtin)h(is)h(in)m(v)m(ok)m(ed.)630 2308 y Ft(-o)i +Fj(comp-option)1110 2418 y Fu(The)c Fr(comp-option)i Fu(con)m(trols)g(sev)m(eral)h(asp)s(ects)e(of)g(the)g(compsp)s(ec's)g -(b)s(eha)m(v-)1110 518 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h +(b)s(eha)m(v-)1110 2527 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h (generation)h(of)e(completions.)41 b Fr(comp-option)27 -b Fu(ma)m(y)1110 628 y(b)s(e)j(one)g(of:)1110 782 y Ft(bashdefault)1590 -892 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g(default)f(Bash)h -(completions)g(if)g(the)1590 1002 y(compsp)s(ec)i(generates)i(no)e -(matc)m(hes.)1110 1156 y Ft(default)144 b Fu(Use)22 b(Readline's)g -(default)g(\014lename)g(completion)g(if)g(the)g(comp-)1590 -1266 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110 -1421 y Ft(dirnames)96 b Fu(P)m(erform)46 b(directory)g(name)h -(completion)g(if)f(the)g(compsp)s(ec)1590 1530 y(generates)32 -b(no)e(matc)m(hes.)1110 1685 y Ft(filenames)1590 1794 +b Fu(ma)m(y)1110 2637 y(b)s(e)j(one)g(of:)1110 2819 y +Ft(bashdefault)1590 2929 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g +(default)f(Bash)h(completions)g(if)g(the)1590 3039 y(compsp)s(ec)i +(generates)i(no)e(matc)m(hes.)1110 3221 y Ft(default)144 +b Fu(Use)22 b(Readline's)g(default)g(\014lename)g(completion)g(if)g +(the)g(comp-)1590 3331 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110 +3513 y Ft(dirnames)96 b Fu(P)m(erform)46 b(directory)g(name)h +(completion)g(if)f(the)g(compsp)s(ec)1590 3623 y(generates)32 +b(no)e(matc)m(hes.)1110 3806 y Ft(filenames)1590 3915 y Fu(T)-8 b(ell)40 b(Readline)f(that)h(the)f(compsp)s(ec)f(generates)j -(\014lenames,)1590 1904 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h +(\014lenames,)1590 4025 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h (\014lename-sp)s(eci\014c)h(pro)s(cessing)e(\(lik)m(e)1590 -2014 y(adding)d(a)h(slash)f(to)h(directory)g(names)f(quoting)h(sp)s -(ecial)g(c)m(har-)1590 2123 y(acters,)39 b(or)d(suppressing)f(trailing) -i(spaces\).)59 b(This)35 b(option)i(is)1590 2233 y(in)m(tended)30 +4134 y(adding)22 b(a)g(slash)g(to)h(directory)f(names,)i(quoting)f(sp)s +(ecial)f(c)m(har-)1590 4244 y(acters,)39 b(or)d(suppressing)f(trailing) +i(spaces\).)59 b(This)35 b(option)i(is)1590 4354 y(in)m(tended)30 b(to)g(b)s(e)g(used)f(with)g(shell)i(functions)e(sp)s(eci\014ed)g(with) -1590 2342 y Ft(-F)p Fu(.)1110 2497 y Ft(noquote)144 b +1590 4463 y Ft(-F)p Fu(.)1110 4646 y Ft(noquote)144 b Fu(T)-8 b(ell)28 b(Readline)g(not)g(to)g(quote)g(the)g(completed)g(w)m -(ords)f(if)h(they)1590 2607 y(are)j(\014lenames)f(\(quoting)h -(\014lenames)g(is)f(the)h(default\).)1110 2761 y Ft(nosort)192 +(ords)f(if)h(they)1590 4756 y(are)j(\014lenames)f(\(quoting)h +(\014lenames)g(is)f(the)h(default\).)1110 4938 y Ft(nosort)192 b Fu(T)-8 b(ell)23 b(Readline)g(not)f(to)h(sort)g(the)f(list)h(of)f(p)s -(ossible)g(completions)1590 2871 y(alphab)s(etically)-8 -b(.)1110 3026 y Ft(nospace)144 b Fu(T)-8 b(ell)40 b(Readline)g(not)g +(ossible)g(completions)1590 5048 y(alphab)s(etically)-8 +b(.)1110 5230 y Ft(nospace)144 b Fu(T)-8 b(ell)40 b(Readline)g(not)g (to)g(app)s(end)d(a)j(space)g(\(the)f(default\))h(to)1590 -3135 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)1110 -3290 y Ft(plusdirs)96 b Fu(After)30 b(an)m(y)h(matc)m(hes)g(de\014ned)d -(b)m(y)i(the)g(compsp)s(ec)g(are)g(gener-)1590 3400 y(ated,)g -(directory)f(name)g(completion)i(is)d(attempted)i(and)f(an)m(y)1590 -3509 y(matc)m(hes)j(are)e(added)g(to)h(the)g(results)f(of)g(the)h -(other)g(actions.)630 3664 y Ft(-A)f Fj(action)66 b Fu(The)25 -b Fr(action)h Fu(ma)m(y)g(b)s(e)e(one)h(of)h(the)f(follo)m(wing)i(to)e -(generate)i(a)e(list)h(of)f(p)s(ossible)1110 3773 y(completions:)1110 -3928 y Ft(alias)240 b Fu(Alias)31 b(names.)41 b(Ma)m(y)31 +5340 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)p +eop end +%%Page: 136 142 +TeXDict begin 136 141 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(136)1110 299 y Ft(plusdirs)96 +b Fu(After)30 b(an)m(y)h(matc)m(hes)g(de\014ned)d(b)m(y)i(the)g(compsp) +s(ec)g(are)g(gener-)1590 408 y(ated,)g(directory)f(name)g(completion)i +(is)d(attempted)i(and)f(an)m(y)1590 518 y(matc)m(hes)j(are)e(added)g +(to)h(the)g(results)f(of)g(the)h(other)g(actions.)630 +677 y Ft(-A)f Fj(action)66 b Fu(The)25 b Fr(action)h +Fu(ma)m(y)g(b)s(e)e(one)h(of)h(the)f(follo)m(wing)i(to)e(generate)i(a)e +(list)h(of)f(p)s(ossible)1110 787 y(completions:)1110 +946 y Ft(alias)240 b Fu(Alias)31 b(names.)41 b(Ma)m(y)31 b(also)h(b)s(e)e(sp)s(eci\014ed)f(as)i Ft(-a)p Fu(.)1110 -4083 y Ft(arrayvar)96 b Fu(Arra)m(y)31 b(v)-5 b(ariable)31 -b(names.)1110 4238 y Ft(binding)144 b Fu(Readline)30 +1106 y Ft(arrayvar)96 b Fu(Arra)m(y)31 b(v)-5 b(ariable)31 +b(names.)1110 1265 y Ft(binding)144 b Fu(Readline)30 b(k)m(ey)f(binding)f(names)h(\(see)h(Section)f(8.4)h([Bindable)1590 -4347 y(Readline)h(Commands],)f(page)h(119\).)1110 4502 +1375 y(Readline)h(Commands],)f(page)h(122\).)1110 1534 y Ft(builtin)144 b Fu(Names)21 b(of)g(shell)f(builtin)h(commands.)37 -b(Ma)m(y)21 b(also)h(b)s(e)e(sp)s(eci\014ed)1590 4612 -y(as)31 b Ft(-b)p Fu(.)1110 4766 y Ft(command)144 b Fu(Command)29 +b(Ma)m(y)21 b(also)h(b)s(e)e(sp)s(eci\014ed)1590 1644 +y(as)31 b Ft(-b)p Fu(.)1110 1803 y Ft(command)144 b Fu(Command)29 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i -Ft(-c)p Fu(.)1110 4921 y Ft(directory)1590 5031 y Fu(Directory)h +Ft(-c)p Fu(.)1110 1963 y Ft(directory)1590 2072 y Fu(Directory)h (names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)g -Ft(-d)p Fu(.)1110 5185 y Ft(disabled)96 b Fu(Names)31 -b(of)g(disabled)f(shell)g(builtins.)1110 5340 y Ft(enabled)144 -b Fu(Names)31 b(of)g(enabled)f(shell)g(builtins.)p eop -end -%%Page: 133 139 -TeXDict begin 133 138 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(133)1110 299 y Ft(export)192 -b Fu(Names)34 b(of)f(exp)s(orted)f(shell)h(v)-5 b(ariables.)49 -b(Ma)m(y)35 b(also)e(b)s(e)g(sp)s(eci-)1590 408 y(\014ed)d(as)g -Ft(-e)p Fu(.)1110 567 y Ft(file)288 b Fu(File)32 b(names.)40 -b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i Ft(-f)p -Fu(.)1110 725 y Ft(function)96 b Fu(Names)31 b(of)g(shell)f(functions.) -1110 883 y Ft(group)240 b Fu(Group)30 b(names.)40 b(Ma)m(y)32 -b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)g Ft(-g)p Fu(.)1110 -1042 y Ft(helptopic)1590 1151 y Fu(Help)37 b(topics)g(as)g(accepted)h -(b)m(y)e(the)h Ft(help)f Fu(builtin)g(\(see)h(Sec-)1590 -1261 y(tion)31 b(4.2)g([Bash)g(Builtins],)g(page)g(49\).)1110 -1419 y Ft(hostname)96 b Fu(Hostnames,)89 b(as)76 b(tak)m(en)h(from)f -(the)g(\014le)h(sp)s(eci\014ed)e(b)m(y)1590 1529 y(the)55 -b Ft(HOSTFILE)e Fu(shell)j(v)-5 b(ariable)56 b(\(see)g(Section)g(5.2)h -([Bash)1590 1638 y(V)-8 b(ariables],)32 b(page)f(71\).)1110 -1797 y Ft(job)336 b Fu(Job)31 b(names,)h(if)g(job)f(con)m(trol)i(is)f +Ft(-d)p Fu(.)1110 2232 y Ft(disabled)96 b Fu(Names)31 +b(of)g(disabled)f(shell)g(builtins.)1110 2391 y Ft(enabled)144 +b Fu(Names)31 b(of)g(enabled)f(shell)g(builtins.)1110 +2550 y Ft(export)192 b Fu(Names)34 b(of)f(exp)s(orted)f(shell)h(v)-5 +b(ariables.)49 b(Ma)m(y)35 b(also)e(b)s(e)g(sp)s(eci-)1590 +2660 y(\014ed)d(as)g Ft(-e)p Fu(.)1110 2819 y Ft(file)288 +b Fu(File)32 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f +(as)i Ft(-f)p Fu(.)1110 2979 y Ft(function)96 b Fu(Names)31 +b(of)g(shell)f(functions.)1110 3138 y Ft(group)240 b +Fu(Group)30 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g +(as)g Ft(-g)p Fu(.)1110 3298 y Ft(helptopic)1590 3407 +y Fu(Help)37 b(topics)g(as)g(accepted)h(b)m(y)e(the)h +Ft(help)f Fu(builtin)g(\(see)h(Sec-)1590 3517 y(tion)31 +b(4.2)g([Bash)g(Builtins],)g(page)g(50\).)1110 3676 y +Ft(hostname)96 b Fu(Hostnames,)89 b(as)76 b(tak)m(en)h(from)f(the)g +(\014le)h(sp)s(eci\014ed)e(b)m(y)1590 3786 y(the)55 b +Ft(HOSTFILE)e Fu(shell)j(v)-5 b(ariable)56 b(\(see)g(Section)g(5.2)h +([Bash)1590 3895 y(V)-8 b(ariables],)32 b(page)f(73\).)1110 +4055 y Ft(job)336 b Fu(Job)31 b(names,)h(if)g(job)f(con)m(trol)i(is)f (activ)m(e.)46 b(Ma)m(y)33 b(also)g(b)s(e)e(sp)s(eci-)1590 -1906 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 2064 y Ft(keyword)144 +4164 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 4324 y Ft(keyword)144 b Fu(Shell)30 b(reserv)m(ed)h(w)m(ords.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i Ft(-k)p Fu(.)1110 -2223 y Ft(running)144 b Fu(Names)31 b(of)g(running)d(jobs,)i(if)h(job)f -(con)m(trol)h(is)g(activ)m(e.)1110 2381 y Ft(service)144 +4483 y Ft(running)144 b Fu(Names)31 b(of)g(running)d(jobs,)i(if)h(job)f +(con)m(trol)h(is)g(activ)m(e.)1110 4643 y Ft(service)144 b Fu(Service)31 b(names.)41 b(Ma)m(y)31 b(also)g(b)s(e)f(sp)s -(eci\014ed)g(as)g Ft(-s)p Fu(.)1110 2539 y Ft(setopt)192 +(eci\014ed)g(as)g Ft(-s)p Fu(.)1110 4802 y Ft(setopt)192 b Fu(V)-8 b(alid)39 b(argumen)m(ts)g(for)f(the)h Ft(-o)e -Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)1590 2649 -y(\(see)31 b(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f(60\).) -1110 2807 y Ft(shopt)240 b Fu(Shell)40 b(option)g(names)g(as)g +Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)1590 4912 +y(\(see)31 b(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f(61\).) +1110 5071 y Ft(shopt)240 b Fu(Shell)40 b(option)g(names)g(as)g (accepted)i(b)m(y)e(the)g Ft(shopt)e Fu(builtin)1590 -2917 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(49\).) -1110 3075 y Ft(signal)192 b Fu(Signal)31 b(names.)1110 -3233 y Ft(stopped)144 b Fu(Names)31 b(of)g(stopp)s(ed)e(jobs,)h(if)g -(job)g(con)m(trol)i(is)f(activ)m(e.)1110 3392 y Ft(user)288 -b Fu(User)30 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f -(as)i Ft(-u)p Fu(.)1110 3550 y Ft(variable)96 b Fu(Names)36 -b(of)g(all)g(shell)g(v)-5 b(ariables.)56 b(Ma)m(y)37 -b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)1590 3660 y Ft(-v)p -Fu(.)630 3818 y Ft(-C)30 b Fj(command)1110 3927 y Fr(command)35 -b Fu(is)e(executed)g(in)e(a)i(subshell)e(en)m(vironmen)m(t,)i(and)f -(its)g(output)g(is)1110 4037 y(used)e(as)g(the)h(p)s(ossible)f -(completions.)630 4195 y Ft(-F)g Fj(function)1110 4305 -y Fu(The)39 b(shell)g(function)g Fr(function)g Fu(is)g(executed)h(in)f -(the)g(curren)m(t)g(shell)g(en)m(vi-)1110 4415 y(ronmen)m(t.)72 +5181 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(50\).) +1110 5340 y Ft(signal)192 b Fu(Signal)31 b(names.)p eop +end +%%Page: 137 143 +TeXDict begin 137 142 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(137)1110 299 y Ft(stopped)144 +b Fu(Names)31 b(of)g(stopp)s(ed)e(jobs,)h(if)g(job)g(con)m(trol)i(is)f +(activ)m(e.)1110 454 y Ft(user)288 b Fu(User)30 b(names.)41 +b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i Ft(-u)p +Fu(.)1110 609 y Ft(variable)96 b Fu(Names)36 b(of)g(all)g(shell)g(v)-5 +b(ariables.)56 b(Ma)m(y)37 b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)1590 +719 y Ft(-v)p Fu(.)630 874 y Ft(-C)30 b Fj(command)1110 +984 y Fr(command)35 b Fu(is)e(executed)g(in)e(a)i(subshell)e(en)m +(vironmen)m(t,)i(and)f(its)g(output)g(is)1110 1093 y(used)e(as)g(the)h +(p)s(ossible)f(completions.)630 1249 y Ft(-F)g Fj(function)1110 +1358 y Fu(The)39 b(shell)g(function)g Fr(function)g Fu(is)g(executed)h +(in)f(the)g(curren)m(t)g(shell)g(en)m(vi-)1110 1468 y(ronmen)m(t.)72 b(When)41 b(it)g(is)g(executed,)k($1)c(is)g(the)g(name)g(of)g(the)g -(command)1110 4524 y(whose)34 b(argumen)m(ts)h(are)g(b)s(eing)f +(command)1110 1577 y(whose)34 b(argumen)m(ts)h(are)g(b)s(eing)f (completed,)j($2)e(is)f(the)h(w)m(ord)f(b)s(eing)g(com-)1110 -4634 y(pleted,)44 b(and)c($3)i(is)e(the)h(w)m(ord)g(preceding)f(the)h -(w)m(ord)f(b)s(eing)h(completed,)1110 4743 y(as)g(describ)s(ed)f(ab)s +1687 y(pleted,)44 b(and)c($3)i(is)e(the)h(w)m(ord)g(preceding)f(the)h +(w)m(ord)f(b)s(eing)h(completed,)1110 1797 y(as)g(describ)s(ed)f(ab)s (o)m(v)m(e)i(\(see)g(Section)f(8.6)h([Programmable)g(Completion],)1110 -4853 y(page)30 b(129\).)42 b(When)29 b(it)h(\014nishes,)e(the)h(p)s -(ossible)g(completions)h(are)g(retriev)m(ed)1110 4963 +1906 y(page)30 b(132\).)42 b(When)29 b(it)h(\014nishes,)e(the)h(p)s +(ossible)g(completions)h(are)g(retriev)m(ed)1110 2016 y(from)g(the)g(v)-5 b(alue)31 b(of)g(the)f Ft(COMPREPLY)e -Fu(arra)m(y)j(v)-5 b(ariable.)630 5121 y Ft(-G)30 b Fj(globpat)1110 -5230 y Fu(The)39 b(\014lename)h(expansion)g(pattern)g -Fr(globpat)j Fu(is)d(expanded)f(to)h(generate)1110 5340 -y(the)31 b(p)s(ossible)e(completions.)p eop end -%%Page: 134 140 -TeXDict begin 134 139 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(134)630 299 y Ft(-P)30 -b Fj(prefix)66 b Fr(pre\014x)39 b Fu(is)34 b(added)f(at)i(the)f(b)s +Fu(arra)m(y)j(v)-5 b(ariable.)630 2171 y Ft(-G)30 b Fj(globpat)1110 +2281 y Fu(The)39 b(\014lename)h(expansion)g(pattern)g +Fr(globpat)j Fu(is)d(expanded)f(to)h(generate)1110 2390 +y(the)31 b(p)s(ossible)e(completions.)630 2545 y Ft(-P)h +Fj(prefix)66 b Fr(pre\014x)39 b Fu(is)34 b(added)f(at)i(the)f(b)s (eginning)f(of)i(eac)m(h)g(p)s(ossible)e(completion)i(after)1110 -408 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630 -567 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20 +2655 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630 +2810 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20 b(app)s(ended)f(to)i(eac)m(h)h(p)s(ossible)e(completion)i(after)f(all)g -(other)g(options)1110 677 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630 -835 y Ft(-W)h Fj(wordlist)1110 945 y Fu(The)24 b Fr(w)m(ordlist)k +(other)g(options)1110 2920 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630 +3075 y Ft(-W)h Fj(wordlist)1110 3185 y Fu(The)24 b Fr(w)m(ordlist)k Fu(is)d(split)g(using)f(the)h(c)m(haracters)i(in)d(the)i -Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 1054 y(as)36 +Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 3294 y(as)36 b(delimiters,)i(and)e(eac)m(h)h(resultan)m(t)g(w)m(ord)e(is)h -(expanded.)57 b(The)35 b(p)s(ossible)1110 1164 y(completions)c(are)e +(expanded.)57 b(The)35 b(p)s(ossible)1110 3404 y(completions)c(are)e (the)h(mem)m(b)s(ers)f(of)g(the)h(resultan)m(t)g(list)g(whic)m(h)f -(matc)m(h)i(the)1110 1274 y(w)m(ord)f(b)s(eing)g(completed.)630 -1432 y Ft(-X)g Fj(filterpat)1110 1542 y Fr(\014lterpat)d +(matc)m(h)i(the)1110 3513 y(w)m(ord)f(b)s(eing)g(completed.)630 +3669 y Ft(-X)g Fj(filterpat)1110 3778 y Fr(\014lterpat)d Fu(is)e(a)g(pattern)g(as)f(used)g(for)h(\014lename)g(expansion.)38 -b(It)25 b(is)g(applied)f(to)1110 1651 y(the)30 b(list)f(of)h(p)s +b(It)25 b(is)g(applied)f(to)1110 3888 y(the)30 b(list)f(of)h(p)s (ossible)f(completions)h(generated)h(b)m(y)e(the)g(preceding)h(options) -1110 1761 y(and)d(argumen)m(ts,)i(and)e(eac)m(h)i(completion)g(matc)m -(hing)g Fr(\014lterpat)h Fu(is)e(remo)m(v)m(ed)1110 1871 +1110 3998 y(and)d(argumen)m(ts,)i(and)e(eac)m(h)i(completion)g(matc)m +(hing)g Fr(\014lterpat)h Fu(is)e(remo)m(v)m(ed)1110 4107 y(from)i(the)h(list.)42 b(A)30 b(leading)i(`)p Ft(!)p Fu(')e(in)g Fr(\014lterpat)j Fu(negates)f(the)f(pattern;)g(in)f(this) -1110 1980 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g -Fr(\014lterpat)i Fu(is)d(remo)m(v)m(ed.)630 2139 y(The)35 +1110 4217 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g +Fr(\014lterpat)i Fu(is)d(remo)m(v)m(ed.)630 4372 y(The)35 b(return)g(v)-5 b(alue)37 b(is)f(true)f(unless)h(an)f(in)m(v)-5 b(alid)37 b(option)f(is)g(supplied,)g(an)g(option)h(other)630 -2248 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f +4482 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f Fr(name)44 b Fu(argumen)m(t,)c(an)e(attempt)i(is)e(made)g(to)630 -2358 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a) +4591 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a) h Fr(name)k Fu(for)30 b(whic)m(h)g(no)g(sp)s(eci\014cation)h(exists,) -630 2468 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s -(eci\014cation.)150 2626 y Ft(compopt)870 2760 y(compopt)46 -b([-o)h Fj(option)p Ft(])f([-DE])g([+o)h Fj(option)p -Ft(])f([)p Fj(name)p Ft(])630 2894 y Fu(Mo)s(dify)33 +630 4701 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s +(eci\014cation.)150 4856 y Ft(compopt)870 4988 y(compopt)46 +b([-o)h Fj(option)p Ft(])f([-DEI])g([+o)h Fj(option)p +Ft(])e([)p Fj(name)p Ft(])630 5121 y Fu(Mo)s(dify)33 b(completion)h(options)g(for)f(eac)m(h)h Fr(name)39 b Fu(according)34 b(to)g(the)f Fr(option)p Fu(s,)i(or)e(for)g(the)630 -3004 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f +5230 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f Fr(name)5 b Fu(s)44 b(are)h(supplied.)80 b(If)43 b(no)h -Fr(option)p Fu(s)h(are)630 3114 y(giv)m(en,)30 b(displa)m(y)e(the)g +Fr(option)p Fu(s)h(are)630 5340 y(giv)m(en,)30 b(displa)m(y)e(the)g (completion)h(options)g(for)e(eac)m(h)i Fr(name)34 b -Fu(or)27 b(the)i(curren)m(t)e(completion.)630 3223 y(The)f(p)s(ossible) -g(v)-5 b(alues)27 b(of)f Fr(option)h Fu(are)g(those)g(v)-5 -b(alid)26 b(for)g(the)h Ft(complete)d Fu(builtin)i(describ)s(ed)630 -3333 y(ab)s(o)m(v)m(e.)41 b(The)28 b Ft(-D)g Fu(option)h(indicates)h -(that)f(the)g(remaining)g(options)g(should)e(apply)h(to)i(the)630 -3442 y(\\default")j(command)f(completion;)i(that)f(is,)g(completion)g -(attempted)g(on)f(a)g(command)630 3552 y(for)g(whic)m(h)g(no)g +Fu(or)27 b(the)i(curren)m(t)e(completion.)p eop end +%%Page: 138 144 +TeXDict begin 138 143 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(138)630 299 y(The)26 +b(p)s(ossible)g(v)-5 b(alues)27 b(of)f Fr(option)h Fu(are)g(those)g(v) +-5 b(alid)26 b(for)g(the)h Ft(complete)d Fu(builtin)i(describ)s(ed)630 +408 y(ab)s(o)m(v)m(e.)41 b(The)27 b Ft(-D)f Fu(option)i(indicates)g +(that)g(other)f(supplied)f(options)i(should)e(apply)h(to)h(the)630 +518 y(\\default")33 b(command)f(completion;)i(that)f(is,)g(completion)g +(attempted)g(on)f(a)g(command)630 628 y(for)g(whic)m(h)g(no)g (completion)i(has)e(previously)g(b)s(een)g(de\014ned.)45 -b(The)32 b Ft(-E)f Fu(option)i(indicates)630 3662 y(that)24 -b(the)g(remaining)g(options)g(should)e(apply)h(to)i(\\empt)m(y")g -(command)e(completion;)k(that)630 3771 y(is,)k(completion)g(attempted)h -(on)e(a)h(blank)f(line.)630 3905 y(The)g Ft(-D)g Fu(option)g(tak)m(es)i -(precedence)f(o)m(v)m(er)h Ft(-E)p Fu(.)630 4039 y(The)23 -b(return)g(v)-5 b(alue)25 b(is)f(true)g(unless)f(an)h(in)m(v)-5 -b(alid)24 b(option)h(is)f(supplied,)g(an)g(attempt)h(is)f(made)630 -4149 y(to)32 b(mo)s(dify)f(the)g(options)h(for)f(a)h +b(The)32 b Ft(-E)f Fu(option)i(indicates)630 737 y(that)23 +b(other)f(supplied)e(options)j(should)e(apply)g(to)i(\\empt)m(y")g +(command)f(completion;)k(that)630 847 y(is,)36 b(completion)g +(attempted)g(on)e(a)h(blank)g(line.)54 b(The)34 b Ft(-I)g +Fu(option)h(indicates)g(that)h(other)630 956 y(supplied)26 +b(options)h(should)g(apply)f(to)i(completion)h(on)e(the)g(inital)i +(non-assignmen)m(t)e(w)m(ord)630 1066 y(on)37 b(the)f(line,)j(or)e +(after)g(a)g(command)f(delimiter)i(suc)m(h)e(as)h(`)p +Ft(;)p Fu(')g(or)f(`)p Ft(|)p Fu(',)j(whic)m(h)e(is)f(usually)630 +1176 y(command)30 b(name)h(completion.)630 1310 y(If)k(m)m(ultiple)i +(options)f(are)g(supplied,)g(the)g Ft(-D)g Fu(option)g(tak)m(es)h +(precedence)g(o)m(v)m(er)g Ft(-E)p Fu(,)g(and)630 1419 +y(b)s(oth)30 b(tak)m(e)i(precedence)e(o)m(v)m(er)i Ft(-I)630 +1554 y Fu(The)23 b(return)g(v)-5 b(alue)25 b(is)f(true)g(unless)f(an)h +(in)m(v)-5 b(alid)24 b(option)h(is)f(supplied,)g(an)g(attempt)h(is)f +(made)630 1663 y(to)32 b(mo)s(dify)f(the)g(options)h(for)f(a)h Fr(name)k Fu(for)31 b(whic)m(h)g(no)g(completion)i(sp)s(eci\014cation)f -(exists,)630 4259 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150 -4499 y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150 -4658 y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h +(exists,)630 1773 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150 +2013 y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150 +2173 y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h (additional)g(completion)g(functionalit)m(y)h(b)s(ey)m(ond)d(the)i -(default)150 4768 y(actions)29 b Ft(complete)d Fu(and)i +(default)150 2282 y(actions)29 b Ft(complete)d Fu(and)i Ft(compgen)e Fu(pro)m(vide)i(is)h(to)f(use)g(a)h(shell)f(function)g -(and)g(bind)e(it)j(to)g(a)g(particular)150 4877 y(command)h(using)g -Ft(complete)e(-F)p Fu(.)275 5011 y(The)j(follo)m(wing)j(function)e(pro) +(and)g(bind)e(it)j(to)g(a)g(particular)150 2392 y(command)h(using)g +Ft(complete)e(-F)p Fu(.)275 2526 y(The)j(follo)m(wing)j(function)e(pro) m(vides)g(completions)i(for)e(the)g Ft(cd)g Fu(builtin.)46 -b(It)32 b(is)h(a)f(reasonably)h(go)s(o)s(d)150 5121 y(example)e(of)f -(what)g(shell)g(functions)g(m)m(ust)f(do)h(when)f(used)h(for)f -(completion.)42 b(This)29 b(function)h(uses)g(the)150 -5230 y(w)m(ord)38 b(passsed)g(as)h Ft($2)g Fu(to)g(determine)g(the)g -(directory)g(name)g(to)g(complete.)67 b(Y)-8 b(ou)40 -b(can)f(also)g(use)g(the)150 5340 y Ft(COMP_WORDS)28 -b Fu(arra)m(y)i(v)-5 b(ariable;)32 b(the)e(curren)m(t)h(w)m(ord)f(is)g -(indexed)g(b)m(y)g(the)h Ft(COMP_CWORD)c Fu(v)-5 b(ariable.)p -eop end -%%Page: 135 141 -TeXDict begin 135 140 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(135)275 299 y(The)42 +b(It)32 b(is)h(a)f(reasonably)h(go)s(o)s(d)150 2636 y(example)41 +b(of)g(what)f(shell)h(functions)f(m)m(ust)g(do)h(when)e(used)h(for)g +(completion.)73 b(This)39 b(function)h(uses)150 2745 +y(the)32 b(w)m(ord)f(passed)g(as)h Ft($2)f Fu(to)h(determine)g(the)f +(directory)h(name)g(to)g(complete.)46 b(Y)-8 b(ou)32 +b(can)g(also)g(use)g(the)150 2855 y Ft(COMP_WORDS)c Fu(arra)m(y)i(v)-5 +b(ariable;)32 b(the)e(curren)m(t)h(w)m(ord)f(is)g(indexed)g(b)m(y)g +(the)h Ft(COMP_CWORD)c Fu(v)-5 b(ariable.)275 2989 y(The)42 b(function)h(relies)h(on)e(the)i Ft(complete)c Fu(and)j Ft(compgen)e Fu(builtins)h(to)i(do)f(m)m(uc)m(h)g(of)g(the)h(w)m(ork,) -150 408 y(adding)25 b(only)h(the)g(things)g(that)g(the)g(Bash)g +150 3099 y(adding)25 b(only)h(the)g(things)g(that)g(the)g(Bash)g Ft(cd)f Fu(do)s(es)g(b)s(ey)m(ond)g(accepting)j(basic)e(directory)g -(names:)38 b(tilde)150 518 y(expansion)22 b(\(see)h(Section)g(3.5.2)g -([Tilde)g(Expansion],)g(page)g(22\),)i(searc)m(hing)e(directories)g(in) -e Fr($CDP)-8 b(A)g(TH)p Fu(,)150 628 y(whic)m(h)21 b(is)h(describ)s(ed) -e(ab)s(o)m(v)m(e)j(\(see)f(Section)h(4.1)f([Bourne)g(Shell)f -(Builtins],)j(page)e(42\),)j(and)c(basic)h(supp)s(ort)150 -737 y(for)31 b(the)h Ft(cdable_vars)d Fu(shell)i(option)h(\(see)h -(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)f(64\).)46 -b Ft(_comp_)150 847 y(cd)30 b Fu(mo)s(di\014es)g(the)h(v)-5 +(names:)38 b(tilde)150 3208 y(expansion)22 b(\(see)h(Section)g(3.5.2)g +([Tilde)g(Expansion],)g(page)g(23\),)i(searc)m(hing)e(directories)g(in) +e Fr($CDP)-8 b(A)g(TH)p Fu(,)150 3318 y(whic)m(h)21 b(is)h(describ)s +(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)h(4.1)f([Bourne)g(Shell)f +(Builtins],)j(page)e(43\),)j(and)c(basic)h(supp)s(ort)150 +3428 y(for)31 b(the)h Ft(cdable_vars)d Fu(shell)i(option)h(\(see)h +(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)f(65\).)46 +b Ft(_comp_)150 3537 y(cd)30 b Fu(mo)s(di\014es)g(the)h(v)-5 b(alue)31 b(of)g Fr(IFS)36 b Fu(so)31 b(that)g(it)g(con)m(tains)h(only) f(a)g(newline)g(to)h(accommo)s(date)g(\014le)f(names)150 -956 y(con)m(taining)i(spaces)g(and)e(tabs)h({)g Ft(compgen)e +3647 y(con)m(taining)i(spaces)g(and)e(tabs)h({)g Ft(compgen)e Fu(prin)m(ts)h(the)h(p)s(ossible)f(completions)i(it)g(generates)g(one)f -(p)s(er)150 1066 y(line.)275 1230 y(P)m(ossible)24 b(completions)h(go)g +(p)s(er)150 3756 y(line.)275 3891 y(P)m(ossible)24 b(completions)h(go)g (in)m(to)g(the)f Fr(COMPREPL)-8 b(Y)36 b Fu(arra)m(y)24 b(v)-5 b(ariable,)26 b(one)e(completion)i(p)s(er)c(arra)m(y)150 -1340 y(elemen)m(t.)42 b(The)30 b(programmable)g(completion)i(system)e +4000 y(elemen)m(t.)42 b(The)30 b(programmable)g(completion)i(system)e (retriev)m(es)h(the)g(completions)g(from)f(there)g(when)150 -1450 y(the)h(function)f(returns.)390 1614 y Ft(#)47 b(A)h(completion)d -(function)g(for)i(the)g(cd)g(builtin)390 1724 y(#)g(based)g(on)g(the)g +4110 y(the)h(function)f(returns.)390 4244 y Ft(#)47 b(A)h(completion)d +(function)g(for)i(the)g(cd)g(builtin)390 4354 y(#)g(based)g(on)g(the)g (cd)g(completion)e(function)h(from)g(the)h(bash_completion)d(package) -390 1833 y(_comp_cd\(\))390 1943 y({)581 2052 y(local)i(IFS=$')g -(\\t\\n')190 b(#)47 b(normalize)f(IFS)581 2162 y(local)g(cur)h -(_skipdot)f(_cdpath)581 2271 y(local)g(i)i(j)f(k)581 -2491 y(#)g(Tilde)g(expansion,)e(with)h(side)h(effect)f(of)h(expanding)f -(tilde)g(to)h(full)g(pathname)581 2600 y(case)g("$2")f(in)581 -2710 y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)581 2819 -y(*\))286 b(cur=$2)46 b(;;)581 2929 y(esac)581 3148 y(#)h(no)h(cdpath)e -(or)h(absolute)e(pathname)h(--)h(straight)f(directory)f(completion)581 -3258 y(if)i([[)g(-z)g("${CDPATH:-}")e(]])i(||)g([[)g("$cur")f(==)h -(@\(./*|../*|/*\))d(]];)j(then)772 3367 y(#)g(compgen)f(prints)g(paths) -h(one)f(per)h(line;)g(could)f(also)h(use)g(while)f(loop)772 -3477 y(IFS=$'\\n')772 3587 y(COMPREPLY=\()f($\(compgen)g(-d)i(--)g -("$cur"\))f(\))772 3696 y(IFS=$')g(\\t\\n')581 3806 y(#)h +390 4463 y(_comp_cd\(\))390 4573 y({)581 4682 y(local)i(IFS=$')g +(\\t\\n')190 b(#)47 b(normalize)f(IFS)581 4792 y(local)g(cur)h +(_skipdot)f(_cdpath)581 4902 y(local)g(i)i(j)f(k)581 +5121 y(#)g(Tilde)g(expansion,)e(which)h(also)h(expands)f(tilde)g(to)h +(full)g(pathname)581 5230 y(case)g("$2")f(in)581 5340 +y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)p eop end +%%Page: 139 145 +TeXDict begin 139 144 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(139)581 299 y Ft(*\))286 +b(cur=$2)46 b(;;)581 408 y(esac)581 628 y(#)h(no)h(cdpath)e(or)h +(absolute)e(pathname)h(--)h(straight)f(directory)f(completion)581 +737 y(if)i([[)g(-z)g("${CDPATH:-}")e(]])i(||)g([[)g("$cur")f(==)h +(@\(./*|../*|/*\))d(]];)j(then)772 847 y(#)g(compgen)f(prints)g(paths)h +(one)f(per)h(line;)g(could)f(also)h(use)g(while)f(loop)772 +956 y(IFS=$'\\n')772 1066 y(COMPREPLY=\()f($\(compgen)g(-d)i(--)g +("$cur"\))f(\))772 1176 y(IFS=$')g(\\t\\n')581 1285 y(#)h (CDPATH+directories)c(in)k(the)g(current)f(directory)f(if)j(not)e(in)i -(CDPATH)581 3915 y(else)772 4025 y(IFS=$'\\n')772 4134 -y(_skipdot=false)772 4244 y(#)f(preprocess)e(CDPATH)h(to)i(convert)d -(null)i(directory)e(names)i(to)g(.)772 4354 y(_cdpath=${CDPATH/#:/.:}) -772 4463 y(_cdpath=${_cdpath//::/:.)o(:})772 4573 y -(_cdpath=${_cdpath/\045:/:.})772 4682 y(for)g(i)g(in)g -(${_cdpath//:/$'\\n'};)c(do)963 4792 y(if)k([[)g($i)g(-ef)g(.)h(]];)f -(then)f(_skipdot=true;)e(fi)963 4902 y(k="${#COMPREPLY[@]}")963 -5011 y(for)j(j)g(in)g($\()g(compgen)f(-d)h(--)h("$i/$cur")d(\);)i(do) -1154 5121 y(COMPREPLY[k++]=${j#$i/})375 b(#)48 b(cut)f(off)f(directory) -963 5230 y(done)772 5340 y(done)p eop end -%%Page: 136 142 -TeXDict begin 136 141 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(136)772 299 y Ft($_skipdot)45 -b(||)i(COMPREPLY+=\()e($\(compgen)g(-d)i(--)g("$cur"\))f(\))772 -408 y(IFS=$')g(\\t\\n')581 518 y(fi)581 737 y(#)h(variable)f(names)g +(CDPATH)581 1395 y(else)772 1504 y(IFS=$'\\n')772 1614 +y(_skipdot=false)772 1724 y(#)f(preprocess)e(CDPATH)h(to)i(convert)d +(null)i(directory)e(names)i(to)g(.)772 1833 y(_cdpath=${CDPATH/#:/.:}) +772 1943 y(_cdpath=${_cdpath//::/:.)o(:})772 2052 y +(_cdpath=${_cdpath/\045:/:.})772 2162 y(for)g(i)g(in)g +(${_cdpath//:/$'\\n'};)c(do)963 2271 y(if)k([[)g($i)g(-ef)g(.)h(]];)f +(then)f(_skipdot=true;)e(fi)963 2381 y(k="${#COMPREPLY[@]}")963 +2491 y(for)j(j)g(in)g($\()g(compgen)f(-d)h(--)h("$i/$cur")d(\);)i(do) +1154 2600 y(COMPREPLY[k++]=${j#$i/})375 b(#)48 b(cut)f(off)f(directory) +963 2710 y(done)772 2819 y(done)772 2929 y($_skipdot)f(||)i +(COMPREPLY+=\()e($\(compgen)g(-d)i(--)g("$cur"\))f(\))772 +3039 y(IFS=$')g(\\t\\n')581 3148 y(fi)581 3367 y(#)h(variable)f(names)g (if)h(appropriate)e(shell)i(option)f(set)h(and)f(no)i(completions)581 -847 y(if)f(shopt)f(-q)i(cdable_vars)c(&&)k([[)f(${#COMPREPLY[@]})c(-eq) -k(0)g(]];)g(then)772 956 y(COMPREPLY=\()e($\(compgen)g(-v)i(--)g -("$cur"\))f(\))581 1066 y(fi)581 1285 y(return)g(0)390 -1395 y(})275 1529 y Fu(W)-8 b(e)31 b(install)g(the)g(completion)h +3477 y(if)f(shopt)f(-q)i(cdable_vars)c(&&)k([[)f(${#COMPREPLY[@]})c +(-eq)k(0)g(]];)g(then)772 3587 y(COMPREPLY=\()e($\(compgen)g(-v)i(--)g +("$cur"\))f(\))581 3696 y(fi)581 3915 y(return)g(0)390 +4025 y(})275 4171 y Fu(W)-8 b(e)31 b(install)g(the)g(completion)h (function)e(using)f(the)i Ft(-F)f Fu(option)h(to)g Ft(complete)p -Fu(:)390 1664 y Ft(#)47 b(Tell)g(readline)f(to)h(quote)f(appropriate)f -(and)i(append)f(slashes)g(to)h(directories;)390 1773 +Fu(:)390 4317 y Ft(#)47 b(Tell)g(readline)f(to)h(quote)f(appropriate)f +(and)i(append)f(slashes)g(to)h(directories;)390 4427 y(#)g(use)g(the)g(bash)g(default)f(completion)f(for)i(other)f -(arguments)390 1883 y(complete)g(-o)h(filenames)e(-o)i(nospace)f(-o)h -(bashdefault)e(-F)i(_comp_cd)f(cd)150 2017 y Fu(Since)33 +(arguments)390 4536 y(complete)g(-o)h(filenames)e(-o)i(nospace)f(-o)h +(bashdefault)e(-F)i(_comp_cd)f(cd)150 4682 y Fu(Since)33 b(w)m(e'd)g(lik)m(e)i(Bash)e(and)f(Readline)i(to)g(tak)m(e)g(care)g(of) f(some)h(of)f(the)g(other)h(details)g(for)e(us,)i(w)m(e)f(use)150 -2127 y(sev)m(eral)43 b(other)g(options)f(to)h(tell)g(Bash)f(and)f +4792 y(sev)m(eral)43 b(other)g(options)f(to)h(tell)g(Bash)f(and)f (Readline)i(what)f(to)g(do.)76 b(The)41 b Ft(-o)30 b(filenames)39 -b Fu(option)150 2237 y(tells)j(Readline)g(that)g(the)f(p)s(ossible)g +b Fu(option)150 4902 y(tells)j(Readline)g(that)g(the)f(p)s(ossible)g (completions)h(should)f(b)s(e)f(treated)i(as)g(\014lenames,)i(and)d -(quoted)150 2346 y(appropriately)-8 b(.)53 b(That)34 +(quoted)150 5011 y(appropriately)-8 b(.)53 b(That)34 b(option)h(will)g(also)g(cause)g(Readline)g(to)g(app)s(end)e(a)h(slash) -g(to)h(\014lenames)g(it)g(can)150 2456 y(determine)i(are)g(directories) +g(to)h(\014lenames)g(it)g(can)150 5121 y(determine)i(are)g(directories) h(\(whic)m(h)g(is)f(wh)m(y)f(w)m(e)i(migh)m(t)f(w)m(an)m(t)h(to)g -(extend)f Ft(_comp_cd)e Fu(to)i(app)s(end)f(a)150 2565 +(extend)f Ft(_comp_cd)e Fu(to)i(app)s(end)f(a)150 5230 y(slash)22 b(if)g(w)m(e're)h(using)f(directories)h(found)e(via)i Fr(CDP)-8 b(A)g(TH)10 b Fu(:)37 b(Readline)23 b(can't)g(tell)g(those)g -(completions)h(are)150 2675 y(directories\).)45 b(The)31 +(completions)h(are)150 5340 y(directories\).)45 b(The)31 b Ft(-o)f(nospace)f Fu(option)j(tells)g(Readline)g(to)h(not)e(app)s -(end)f(a)i(space)g(c)m(haracter)h(to)f(the)150 2785 y(directory)c -(name,)h(in)f(case)h(w)m(e)f(w)m(an)m(t)h(to)f(app)s(end)f(to)h(it.)41 +(end)f(a)i(space)g(c)m(haracter)h(to)f(the)p eop end +%%Page: 140 146 +TeXDict begin 140 145 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(140)150 299 y(directory)28 +b(name,)h(in)f(case)h(w)m(e)f(w)m(an)m(t)h(to)f(app)s(end)f(to)h(it.)41 b(The)27 b Ft(-o)j(bashdefault)25 b Fu(option)j(brings)f(in)h(the)150 -2894 y(rest)h(of)f(the)h Ft(")p Fu(Bash)f(default)p Ft(")h +408 y(rest)h(of)f(the)h Ft(")p Fu(Bash)f(default)p Ft(")h Fu(completions)g({)g(p)s(ossible)f(completion)i(that)f(Bash)f(adds)g -(to)h(the)g(default)150 3004 y(Readline)40 b(set.)68 -b(These)39 b(include)g(things)g(lik)m(e)i(command)e(name)g(completion,) -44 b(v)-5 b(ariable)40 b(completion)150 3113 y(for)i(w)m(ords)g(b)s +(to)h(the)g(default)150 518 y(Readline)40 b(set.)68 b(These)39 +b(include)g(things)g(lik)m(e)i(command)e(name)g(completion,)44 +b(v)-5 b(ariable)40 b(completion)150 628 y(for)i(w)m(ords)g(b)s (eginning)f(with)h(`)p Ft({)p Fu(',)k(completions)e(con)m(taining)f -(pathname)g(expansion)f(patterns)g(\(see)150 3223 y(Section)31 -b(3.5.8)h([Filename)g(Expansion],)e(page)i(30\),)f(and)f(so)h(on.)275 -3357 y(Once)39 b(installed)i(using)e Ft(complete)p Fu(,)h +(pathname)g(expansion)f(patterns)g(\(see)150 737 y(Section)31 +b(3.5.8)h([Filename)g(Expansion],)e(page)i(32\),)f(and)f(so)h(on.)275 +872 y(Once)39 b(installed)i(using)e Ft(complete)p Fu(,)h Ft(_comp_cd)d Fu(will)j(b)s(e)g(called)g(ev)m(ery)h(time)f(w)m(e)g -(attempt)h(w)m(ord)150 3467 y(completion)32 b(for)e(a)h -Ft(cd)e Fu(command.)275 3601 y(Man)m(y)34 b(more)g(examples)g({)g(an)g +(attempt)h(w)m(ord)150 981 y(completion)32 b(for)e(a)h +Ft(cd)e Fu(command.)275 1116 y(Man)m(y)34 b(more)g(examples)g({)g(an)g (extensiv)m(e)h(collection)i(of)c(completions)i(for)f(most)g(of)g(the)g -(common)150 3711 y(GNU,)g(Unix,)h(and)d(Lin)m(ux)h(commands)g({)h(are)g +(common)150 1225 y(GNU,)g(Unix,)h(and)d(Lin)m(ux)h(commands)g({)h(are)g (a)m(v)-5 b(ailable)36 b(as)e(part)f(of)h(the)f(bash)p -2943 3711 28 4 v 39 w(completion)i(pro)5 b(ject.)150 -3821 y(This)33 b(is)h(installed)h(b)m(y)f(default)g(on)g(man)m(y)h +2943 1225 28 4 v 39 w(completion)i(pro)5 b(ject.)150 +1335 y(This)33 b(is)h(installed)h(b)m(y)f(default)g(on)g(man)m(y)h (GNU/Lin)m(ux)f(distributions.)51 b(Originally)35 b(written)f(b)m(y)g -(Ian)150 3930 y(Macdonald,)44 b(the)d(pro)5 b(ject)41 +(Ian)150 1445 y(Macdonald,)44 b(the)d(pro)5 b(ject)41 b(no)m(w)f(liv)m(es)i(at)f Ft(http:)8 b(/)g(/)g(bash-completion)g(.)g -(alioth)g(.)g(debi)o(an)g(.)g(org)f(/)h Fu(.)150 4040 +(alioth)g(.)g(debi)o(an)g(.)g(org)f(/)h Fu(.)150 1554 y(There)30 b(are)h(p)s(orts)e(for)h(other)h(systems)f(suc)m(h)g(as)h -(Solaris)g(and)f(Mac)h(OS)f(X.)275 4174 y(An)54 b(older)h(v)m(ersion)h -(of)f(the)g(bash)p 1532 4174 V 40 w(completion)h(pac)m(k)-5 +(Solaris)g(and)f(Mac)h(OS)f(X.)275 1689 y(An)54 b(older)h(v)m(ersion)h +(of)f(the)g(bash)p 1532 1689 V 40 w(completion)h(pac)m(k)-5 b(age)57 b(is)e(distributed)f(with)h(bash)f(in)h(the)150 -4284 y Ft(examples/complete)26 b Fu(sub)s(directory)-8 +1798 y Ft(examples/complete)26 b Fu(sub)s(directory)-8 b(.)p eop end -%%Page: 137 143 -TeXDict begin 137 142 bop 3614 -116 a Fu(137)150 299 +%%Page: 141 147 +TeXDict begin 141 146 bop 3614 -116 a Fu(141)150 299 y Fp(9)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)150 -498 y Fu(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the) +554 y Fu(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the) f Fm(gnu)h Fu(History)g(Library)e(in)m(teractiv)m(ely)-8 -b(,)50 b(from)42 b(a)h(user's)150 607 y(standp)s(oin)m(t.)76 +b(,)50 b(from)42 b(a)h(user's)150 664 y(standp)s(oin)m(t.)76 b(It)42 b(should)f(b)s(e)h(considered)g(a)g(user's)g(guide.)76 b(F)-8 b(or)43 b(information)f(on)g(using)g(the)g Fm(gnu)150 -717 y Fu(History)31 b(Library)f(in)g(other)g(programs,)g(see)h(the)g -Fm(gnu)f Fu(Readline)h(Library)f(Man)m(ual.)150 944 y -Fs(9.1)68 b(Bash)45 b(History)h(F)-11 b(acilities)150 -1103 y Fu(When)44 b(the)g Ft(-o)30 b(history)42 b Fu(option)i(to)h(the) +774 y Fu(History)31 b(Library)f(in)g(other)g(programs,)g(see)h(the)g +Fm(gnu)f Fu(Readline)h(Library)f(Man)m(ual.)150 1025 +y Fs(9.1)68 b(Bash)45 b(History)h(F)-11 b(acilities)150 +1184 y Fu(When)44 b(the)g Ft(-o)30 b(history)42 b Fu(option)i(to)h(the) f Ft(set)f Fu(builtin)h(is)g(enabled)g(\(see)g(Section)h(4.3.1)h([The)e -(Set)150 1213 y(Builtin],)32 b(page)g(60\),)h(the)e(shell)h(pro)m +(Set)150 1294 y(Builtin],)32 b(page)g(61\),)h(the)e(shell)h(pro)m (vides)f(access)h(to)g(the)f Fr(command)g(history)p Fu(,)h(the)f(list)h -(of)f(commands)150 1322 y(previously)h(t)m(yp)s(ed.)47 +(of)f(commands)150 1404 y(previously)h(t)m(yp)s(ed.)47 b(The)33 b(v)-5 b(alue)33 b(of)f(the)h Ft(HISTSIZE)e Fu(shell)h(v)-5 b(ariable)34 b(is)f(used)e(as)i(the)g(n)m(um)m(b)s(er)e -(of)i(com-)150 1432 y(mands)i(to)i(sa)m(v)m(e)h(in)e(a)g(history)h +(of)i(com-)150 1513 y(mands)i(to)i(sa)m(v)m(e)h(in)e(a)g(history)h (list.)58 b(The)36 b(text)h(of)g(the)f(last)h Ft($HISTSIZE)d -Fu(commands)i(\(default)g(500\))150 1541 y(is)h(sa)m(v)m(ed.)61 +Fu(commands)i(\(default)g(500\))150 1623 y(is)h(sa)m(v)m(ed.)61 b(The)36 b(shell)h(stores)h(eac)m(h)g(command)e(in)h(the)g(history)g (list)g(prior)f(to)i(parameter)f(and)f(v)-5 b(ari-)150 -1651 y(able)33 b(expansion)g(but)f(after)h(history)f(expansion)h(is)g +1732 y(able)33 b(expansion)g(but)f(after)h(history)f(expansion)h(is)g (p)s(erformed,)e(sub)5 b(ject)33 b(to)g(the)g(v)-5 b(alues)33 -b(of)g(the)g(shell)150 1760 y(v)-5 b(ariables)31 b Ft(HISTIGNORE)d -Fu(and)h Ft(HISTCONTROL)p Fu(.)275 1888 y(When)g(the)g(shell)h(starts)g +b(of)g(the)g(shell)150 1842 y(v)-5 b(ariables)31 b Ft(HISTIGNORE)d +Fu(and)h Ft(HISTCONTROL)p Fu(.)275 1984 y(When)g(the)g(shell)h(starts)g (up,)f(the)h(history)f(is)h(initialized)h(from)e(the)h(\014le)f(named)g -(b)m(y)h(the)f Ft(HISTFILE)150 1998 y Fu(v)-5 b(ariable)26 +(b)m(y)h(the)f Ft(HISTFILE)150 2093 y Fu(v)-5 b(ariable)26 b(\(default)g Ft(~/.bash_history)p Fu(\).)35 b(The)24 b(\014le)i(named)e(b)m(y)h(the)h(v)-5 b(alue)25 b(of)h -Ft(HISTFILE)c Fu(is)k(truncated,)150 2107 y(if)42 b(necessary)-8 +Ft(HISTFILE)c Fu(is)k(truncated,)150 2203 y(if)42 b(necessary)-8 b(,)45 b(to)e(con)m(tain)g(no)f(more)g(than)f(the)h(n)m(um)m(b)s(er)f (of)h(lines)g(sp)s(eci\014ed)f(b)m(y)h(the)g(v)-5 b(alue)42 -b(of)g(the)150 2217 y Ft(HISTFILESIZE)28 b Fu(v)-5 b(ariable.)46 +b(of)g(the)150 2312 y Ft(HISTFILESIZE)28 b Fu(v)-5 b(ariable.)46 b(When)31 b(a)h(shell)g(with)g(history)f(enabled)h(exits,)h(the)f(last) -h Ft($HISTSIZE)c Fu(lines)150 2326 y(are)35 b(copied)g(from)g(the)g +h Ft($HISTSIZE)c Fu(lines)150 2422 y(are)35 b(copied)g(from)g(the)g (history)f(list)i(to)f(the)g(\014le)g(named)f(b)m(y)h Ft($HISTFILE)p Fu(.)51 b(If)35 b(the)g Ft(histappend)d -Fu(shell)150 2436 y(option)26 b(is)g(set)g(\(see)h(Section)f(4.2)h -([Bash)f(Builtins],)h(page)g(49\),)h(the)e(lines)g(are)g(app)s(ended)e -(to)i(the)g(history)150 2545 y(\014le,)36 b(otherwise)f(the)g(history)f +Fu(shell)150 2532 y(option)26 b(is)g(set)g(\(see)h(Section)f(4.2)h +([Bash)f(Builtins],)h(page)g(50\),)h(the)e(lines)g(are)g(app)s(ended)e +(to)i(the)g(history)150 2641 y(\014le,)36 b(otherwise)f(the)g(history)f (\014le)h(is)f(o)m(v)m(erwritten.)55 b(If)34 b Ft(HISTFILE)e Fu(is)j(unset,)g(or)g(if)f(the)h(history)f(\014le)h(is)150 -2655 y(un)m(writable,)f(the)f(history)g(is)g(not)h(sa)m(v)m(ed.)49 +2751 y(un)m(writable,)f(the)f(history)g(is)g(not)h(sa)m(v)m(ed.)49 b(After)34 b(sa)m(ving)g(the)f(history)-8 b(,)34 b(the)g(history)f -(\014le)g(is)g(truncated)150 2765 y(to)g(con)m(tain)h(no)f(more)g(than) +(\014le)g(is)g(truncated)150 2860 y(to)g(con)m(tain)h(no)f(more)g(than) f Ft($HISTFILESIZE)d Fu(lines.)48 b(If)33 b Ft(HISTFILESIZE)c -Fu(is)k(unset,)g(or)f(set)i(to)f(n)m(ull,)h(a)150 2874 +Fu(is)k(unset,)g(or)f(set)i(to)f(n)m(ull,)h(a)150 2970 y(non-n)m(umeric)c(v)-5 b(alue,)31 b(or)f(a)h(n)m(umeric)f(v)-5 b(alue)31 b(less)g(than)f(zero,)h(the)g(history)f(\014le)h(is)f(not)h -(truncated.)275 3002 y(If)g(the)h Ft(HISTTIMEFORMAT)d +(truncated.)275 3112 y(If)g(the)h Ft(HISTTIMEFORMAT)d Fu(is)j(set,)h(the)f(time)h(stamp)f(information)g(asso)s(ciated)i(with) -e(eac)m(h)h(history)150 3111 y(en)m(try)d(is)h(written)f(to)h(the)f +e(eac)m(h)h(history)150 3221 y(en)m(try)d(is)h(written)f(to)h(the)f (history)h(\014le,)f(mark)m(ed)h(with)f(the)g(history)g(commen)m(t)h(c) -m(haracter.)43 b(When)30 b(the)150 3221 y(history)22 +m(haracter.)43 b(When)30 b(the)150 3331 y(history)22 b(\014le)h(is)g(read,)h(lines)f(b)s(eginning)e(with)i(the)f(history)h (commen)m(t)g(c)m(haracter)h(follo)m(w)m(ed)h(immediately)150 -3330 y(b)m(y)30 b(a)h(digit)g(are)g(in)m(terpreted)g(as)f(timestamps)h +3440 y(b)m(y)30 b(a)h(digit)g(are)g(in)m(terpreted)g(as)f(timestamps)h (for)f(the)h(follo)m(wing)h(history)e(en)m(try)-8 b(.)275 -3458 y(The)19 b(builtin)h(command)g Ft(fc)g Fu(ma)m(y)h(b)s(e)f(used)f +3582 y(The)19 b(builtin)h(command)g Ft(fc)g Fu(ma)m(y)h(b)s(e)f(used)f (to)i(list)g(or)g(edit)g(and)e(re-execute)j(a)f(p)s(ortion)f(of)g(the)h -(history)150 3567 y(list.)41 b(The)27 b Ft(history)f +(history)150 3692 y(list.)41 b(The)27 b Ft(history)f Fu(builtin)i(ma)m(y)h(b)s(e)e(used)g(to)i(displa)m(y)g(or)f(mo)s(dify)f -(the)h(history)g(list)h(and)f(manipulate)150 3677 y(the)j(history)g +(the)h(history)g(list)h(and)f(manipulate)150 3801 y(the)j(history)g (\014le.)42 b(When)31 b(using)f(command-line)h(editing,)h(searc)m(h)f (commands)g(are)g(a)m(v)-5 b(ailable)33 b(in)e(eac)m(h)150 -3787 y(editing)45 b(mo)s(de)g(that)g(pro)m(vide)g(access)h(to)f(the)g +3911 y(editing)45 b(mo)s(de)g(that)g(pro)m(vide)g(access)h(to)f(the)g (history)f(list)i(\(see)f(Section)h(8.4.2)g([Commands)e(F)-8 -b(or)150 3896 y(History],)31 b(page)h(120\).)275 4024 +b(or)150 4020 y(History],)31 b(page)h(123\).)275 4162 y(The)47 b(shell)i(allo)m(ws)h(con)m(trol)f(o)m(v)m(er)h(whic)m(h)e (commands)g(are)h(sa)m(v)m(ed)g(on)f(the)h(history)f(list.)95 -b(The)150 4133 y Ft(HISTCONTROL)25 b Fu(and)j Ft(HISTIGNORE)e +b(The)150 4272 y Ft(HISTCONTROL)25 b Fu(and)j Ft(HISTIGNORE)e Fu(v)-5 b(ariables)29 b(ma)m(y)h(b)s(e)d(set)j(to)f(cause)g(the)g -(shell)f(to)i(sa)m(v)m(e)g(only)f(a)g(subset)150 4243 +(shell)f(to)i(sa)m(v)m(e)g(only)f(a)g(subset)150 4381 y(of)e(the)g(commands)f(en)m(tered.)40 b(The)26 b Ft(cmdhist)f Fu(shell)i(option,)h(if)f(enabled,)g(causes)h(the)e(shell)h(to)h -(attempt)150 4352 y(to)23 b(sa)m(v)m(e)h(eac)m(h)f(line)g(of)f(a)h(m)m +(attempt)150 4491 y(to)23 b(sa)m(v)m(e)h(eac)m(h)f(line)g(of)f(a)h(m)m (ulti-line)g(command)f(in)g(the)h(same)f(history)g(en)m(try)-8 -b(,)25 b(adding)d(semicolons)h(where)150 4462 y(necessary)37 +b(,)25 b(adding)d(semicolons)h(where)150 4600 y(necessary)37 b(to)f(preserv)m(e)h(syn)m(tactic)h(correctness.)58 b(The)36 b Ft(lithist)e Fu(shell)i(option)h(causes)g(the)f(shell)g(to)150 -4572 y(sa)m(v)m(e)25 b(the)e(command)h(with)f(em)m(b)s(edded)f -(newlines)h(instead)h(of)f(semicolons.)40 b(The)23 b -Ft(shopt)e Fu(builtin)i(is)h(used)150 4681 y(to)31 b(set)g(these)g -(options.)41 b(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page)g -(49,)h(for)e(a)h(description)f(of)h Ft(shopt)p Fu(.)150 -4908 y Fs(9.2)68 b(Bash)45 b(History)h(Builtins)150 5067 -y Fu(Bash)31 b(pro)m(vides)f(t)m(w)m(o)i(builtin)e(commands)g(whic)m(h) -g(manipulate)g(the)h(history)f(list)h(and)f(history)g(\014le.)150 -5213 y Ft(fc)870 5340 y(fc)47 b([-e)g Fj(ename)p Ft(])f([-lnr])g([)p -Fj(first)p Ft(])g([)p Fj(last)p Ft(])p eop end -%%Page: 138 144 -TeXDict begin 138 143 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(138)870 -299 y Ft(fc)47 b(-s)g([)p Fj(pat)p Ft(=)p Fj(rep)p Ft(])f([)p -Fj(command)p Ft(])630 429 y Fu(The)22 b(\014rst)g(form)f(selects)j(a)f -(range)g(of)f(commands)g(from)g Fr(\014rst)i Fu(to)f -Fr(last)i Fu(from)d(the)h(history)f(list)630 539 y(and)i(displa)m(ys)h -(or)g(edits)h(and)e(re-executes)j(them.)39 b(Both)25 -b Fr(\014rst)h Fu(and)f Fr(last)j Fu(ma)m(y)d(b)s(e)g(sp)s(eci\014ed) -630 648 y(as)31 b(a)g(string)f(\(to)i(lo)s(cate)h(the)d(most)h(recen)m -(t)h(command)f(b)s(eginning)e(with)i(that)g(string\))g(or)630 -758 y(as)d(a)g(n)m(um)m(b)s(er)f(\(an)h(index)f(in)m(to)i(the)f +4710 y(sa)m(v)m(e)41 b(the)e(command)g(with)f(em)m(b)s(edded)g +(newlines)h(instead)g(of)g(semicolons.)68 b(The)39 b +Ft(shopt)e Fu(builtin)i(is)150 4820 y(used)30 b(to)i(set)g(these)g +(options.)43 b(See)32 b(Section)g(4.3.2)h([The)e(Shopt)f(Builtin],)j +(page)f(65,)g(for)f(a)h(description)150 4929 y(of)f Ft(shopt)p +Fu(.)150 5181 y Fs(9.2)68 b(Bash)45 b(History)h(Builtins)150 +5340 y Fu(Bash)31 b(pro)m(vides)f(t)m(w)m(o)i(builtin)e(commands)g +(whic)m(h)g(manipulate)g(the)h(history)f(list)h(and)f(history)g +(\014le.)p eop end +%%Page: 142 148 +TeXDict begin 142 147 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(142)150 +299 y Ft(fc)870 425 y(fc)47 b([-e)g Fj(ename)p Ft(])f([-lnr])g([)p +Fj(first)p Ft(])g([)p Fj(last)p Ft(])870 535 y(fc)h(-s)g([)p +Fj(pat)p Ft(=)p Fj(rep)p Ft(])f([)p Fj(command)p Ft(])630 +661 y Fu(The)22 b(\014rst)g(form)f(selects)j(a)f(range)g(of)f(commands) +g(from)g Fr(\014rst)i Fu(to)f Fr(last)i Fu(from)d(the)h(history)f(list) +630 771 y(and)i(displa)m(ys)h(or)g(edits)h(and)e(re-executes)j(them.)39 +b(Both)25 b Fr(\014rst)h Fu(and)f Fr(last)j Fu(ma)m(y)d(b)s(e)g(sp)s +(eci\014ed)630 881 y(as)31 b(a)g(string)f(\(to)i(lo)s(cate)h(the)d +(most)h(recen)m(t)h(command)f(b)s(eginning)e(with)i(that)g(string\))g +(or)630 990 y(as)d(a)g(n)m(um)m(b)s(er)f(\(an)h(index)f(in)m(to)i(the)f (history)g(list,)h(where)e(a)h(negativ)m(e)i(n)m(um)m(b)s(er)d(is)h -(used)f(as)630 867 y(an)g(o\013set)i(from)e(the)h(curren)m(t)f(command) -h(n)m(um)m(b)s(er\).)39 b(If)27 b Fr(last)j Fu(is)e(not)f(sp)s -(eci\014ed)g(it)h(is)g(set)g(to)630 977 y Fr(\014rst)p -Fu(.)47 b(If)32 b Fr(\014rst)i Fu(is)f(not)g(sp)s(eci\014ed)f(it)h(is)g -(set)g(to)h(the)f(previous)f(command)h(for)f(editing)i(and)630 -1087 y Fq(\000)p Fu(16)j(for)g(listing.)61 b(If)36 b(the)h -Ft(-l)f Fu(\015ag)i(is)e(giv)m(en,)k(the)d(commands)f(are)i(listed)f -(on)g(standard)630 1196 y(output.)59 b(The)36 b Ft(-n)h -Fu(\015ag)g(suppresses)e(the)h(command)h(n)m(um)m(b)s(ers)e(when)h -(listing.)60 b(The)37 b Ft(-r)630 1306 y Fu(\015ag)e(rev)m(erses)f(the) -h(order)e(of)i(the)f(listing.)53 b(Otherwise,)35 b(the)f(editor)h(giv)m -(en)g(b)m(y)f Fr(ename)40 b Fu(is)630 1415 y(in)m(v)m(ok)m(ed)33 -b(on)f(a)g(\014le)g(con)m(taining)h(those)f(commands.)44 -b(If)31 b Fr(ename)38 b Fu(is)31 b(not)h(giv)m(en,)i(the)d(v)-5 -b(alue)630 1525 y(of)29 b(the)g(follo)m(wing)i(v)-5 b(ariable)29 -b(expansion)g(is)g(used:)39 b Ft(${FCEDIT:-${EDITOR:-vi}})p -Fu(.)34 b(This)630 1634 y(sa)m(ys)g(to)g(use)f(the)h(v)-5 +(used)f(as)630 1100 y(an)f(o\013set)g(from)g(the)g(curren)m(t)f +(command)h(n)m(um)m(b)s(er\).)38 b(If)25 b Fr(last)k +Fu(is)d(not)g(sp)s(eci\014ed,)g(it)g(is)g(set)g(to)630 +1209 y Fr(\014rst)p Fu(.)43 b(If)30 b Fr(\014rst)j Fu(is)e(not)h(sp)s +(eci\014ed,)f(it)g(is)h(set)f(to)h(the)g(previous)f(command)g(for)g +(editing)h(and)630 1319 y Fq(\000)p Fu(16)37 b(for)g(listing.)61 +b(If)36 b(the)h Ft(-l)f Fu(\015ag)i(is)e(giv)m(en,)k(the)d(commands)f +(are)i(listed)f(on)g(standard)630 1428 y(output.)59 b(The)36 +b Ft(-n)h Fu(\015ag)g(suppresses)e(the)h(command)h(n)m(um)m(b)s(ers)e +(when)h(listing.)60 b(The)37 b Ft(-r)630 1538 y Fu(\015ag)e(rev)m +(erses)f(the)h(order)e(of)i(the)f(listing.)53 b(Otherwise,)35 +b(the)f(editor)h(giv)m(en)g(b)m(y)f Fr(ename)40 b Fu(is)630 +1648 y(in)m(v)m(ok)m(ed)33 b(on)f(a)g(\014le)g(con)m(taining)h(those)f +(commands.)44 b(If)31 b Fr(ename)38 b Fu(is)31 b(not)h(giv)m(en,)i(the) +d(v)-5 b(alue)630 1757 y(of)29 b(the)g(follo)m(wing)i(v)-5 +b(ariable)29 b(expansion)g(is)g(used:)39 b Ft(${FCEDIT:-${EDITOR:-vi}}) +p Fu(.)34 b(This)630 1867 y(sa)m(ys)g(to)g(use)f(the)h(v)-5 b(alue)34 b(of)f(the)h Ft(FCEDIT)e Fu(v)-5 b(ariable)34 b(if)f(set,)i(or)f(the)f(v)-5 b(alue)34 b(of)g(the)g -Ft(EDITOR)630 1744 y Fu(v)-5 b(ariable)40 b(if)e(that)i(is)f(set,)i(or) +Ft(EDITOR)630 1976 y Fu(v)-5 b(ariable)40 b(if)e(that)i(is)f(set,)i(or) e Ft(vi)f Fu(if)h(neither)g(is)g(set.)66 b(When)39 b(editing)g(is)g -(complete,)k(the)630 1854 y(edited)31 b(commands)f(are)g(ec)m(ho)s(ed)h -(and)f(executed.)630 1984 y(In)k(the)g(second)g(form,)h +(complete,)k(the)630 2086 y(edited)31 b(commands)f(are)g(ec)m(ho)s(ed)h +(and)f(executed.)630 2212 y(In)k(the)g(second)g(form,)h Fr(command)j Fu(is)c(re-executed)i(after)f(eac)m(h)g(instance)g(of)f -Fr(pat)j Fu(in)d(the)630 2093 y(selected)e(command)e(is)h(replaced)g(b) +Fr(pat)j Fu(in)d(the)630 2322 y(selected)e(command)e(is)h(replaced)g(b) m(y)f Fr(rep)p Fu(.)41 b Fr(command)34 b Fu(is)c(in)m(tepreted)h(the)g -(same)g(as)g Fr(\014rst)630 2203 y Fu(ab)s(o)m(v)m(e.)630 -2333 y(A)g(useful)f(alias)i(to)g(use)e(with)h(the)g Ft(fc)f +(same)g(as)g Fr(\014rst)630 2432 y Fu(ab)s(o)m(v)m(e.)630 +2558 y(A)g(useful)f(alias)i(to)g(use)e(with)h(the)g Ft(fc)f Fu(command)h(is)g Ft(r='fc)e(-s')p Fu(,)h(so)h(that)h(t)m(yping)f(`)p -Ft(r)f(cc)p Fu(')630 2443 y(runs)35 b(the)h(last)h(command)f(b)s +Ft(r)f(cc)p Fu(')630 2668 y(runs)35 b(the)h(last)h(command)f(b)s (eginning)g(with)g Ft(cc)f Fu(and)h(t)m(yping)g(`)p Ft(r)p -Fu(')h(re-executes)h(the)e(last)630 2552 y(command)30 -b(\(see)h(Section)h(6.6)f([Aliases],)h(page)g(90\).)150 -2703 y Ft(history)870 2833 y(history)46 b([)p Fj(n)p -Ft(])870 2943 y(history)g(-c)870 3052 y(history)g(-d)h -Fj(offset)870 3162 y Ft(history)f([-anrw])g([)p Fj(filename)p -Ft(])870 3271 y(history)g(-ps)h Fj(arg)630 3402 y Fu(With)26 +Fu(')h(re-executes)h(the)e(last)630 2777 y(command)30 +b(\(see)h(Section)h(6.6)f([Aliases],)h(page)g(93\).)150 +2921 y Ft(history)870 3047 y(history)46 b([)p Fj(n)p +Ft(])870 3157 y(history)g(-c)870 3266 y(history)g(-d)h +Fj(offset)870 3376 y Ft(history)f(-d)h Fj(start)p Ft(-)p +Fj(end)870 3485 y Ft(history)f([-anrw])g([)p Fj(filename)p +Ft(])870 3595 y(history)g(-ps)h Fj(arg)630 3721 y Fu(With)26 b(no)g(options,)h(displa)m(y)f(the)g(history)g(list)g(with)f(line)h(n)m (um)m(b)s(ers.)38 b(Lines)26 b(pre\014xed)e(with)630 -3511 y(a)35 b(`)p Ft(*)p Fu(')g(ha)m(v)m(e)h(b)s(een)e(mo)s(di\014ed.) +3831 y(a)35 b(`)p Ft(*)p Fu(')g(ha)m(v)m(e)h(b)s(een)e(mo)s(di\014ed.) 53 b(An)34 b(argumen)m(t)h(of)g Fr(n)f Fu(lists)i(only)f(the)g(last)g -Fr(n)f Fu(lines.)54 b(If)35 b(the)630 3621 y(shell)30 +Fr(n)f Fu(lines.)54 b(If)35 b(the)630 3941 y(shell)30 b(v)-5 b(ariable)31 b Ft(HISTTIMEFORMAT)26 b Fu(is)k(set)h(and)e(not)i (n)m(ull,)f(it)h(is)f(used)f(as)h(a)h(format)f(string)630 -3730 y(for)36 b Fr(strftime)41 b Fu(to)36 b(displa)m(y)g(the)g(time)h +4050 y(for)36 b Fr(strftime)41 b Fu(to)36 b(displa)m(y)g(the)g(time)h (stamp)f(asso)s(ciated)h(with)f(eac)m(h)h(displa)m(y)m(ed)f(history)630 -3840 y(en)m(try)-8 b(.)47 b(No)33 b(in)m(terv)m(ening)g(blank)f(is)g +4160 y(en)m(try)-8 b(.)47 b(No)33 b(in)m(terv)m(ening)g(blank)f(is)g (prin)m(ted)g(b)s(et)m(w)m(een)h(the)g(formatted)f(time)h(stamp)g(and) -630 3950 y(the)e(history)f(line.)630 4080 y(Options,)g(if)h(supplied,)e -(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 4230 +630 4269 y(the)e(history)f(line.)630 4396 y(Options,)g(if)h(supplied,)e +(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 4539 y Ft(-c)384 b Fu(Clear)23 b(the)g(history)g(list.)39 b(This)22 b(ma)m(y)i(b)s(e)e(com)m(bined)h(with)f(the)h(other)h -(options)1110 4340 y(to)31 b(replace)g(the)g(history)f(list)h -(completely)-8 b(.)630 4491 y Ft(-d)30 b Fj(offset)66 -b Fu(Delete)25 b(the)f(history)f(en)m(try)h(at)g(p)s(osition)f -Fr(o\013set)p Fu(.)39 b Fr(o\013set)27 b Fu(should)22 -b(b)s(e)h(sp)s(eci\014ed)1110 4600 y(as)31 b(it)g(app)s(ears)e(when)h -(the)g(history)g(is)h(displa)m(y)m(ed.)630 4751 y Ft(-a)384 +(options)1110 4649 y(to)31 b(replace)g(the)g(history)f(list)h +(completely)-8 b(.)630 4792 y Ft(-d)30 b Fj(offset)66 +b Fu(Delete)38 b(the)f(history)f(en)m(try)h(at)f(p)s(osition)h +Fr(o\013set)p Fu(.)59 b(If)36 b Fr(o\013set)j Fu(is)d(p)s(ositiv)m(e,)j +(it)1110 4902 y(should)32 b(b)s(e)h(sp)s(eci\014ed)f(as)i(it)g(app)s +(ears)e(when)g(the)i(history)f(is)g(displa)m(y)m(ed.)50 +b(If)1110 5011 y Fr(o\013set)26 b Fu(is)d(negativ)m(e,)k(it)c(is)g(in)m +(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h(than)f(the)1110 +5121 y(last)36 b(history)f(p)s(osition,)h(so)f(negativ)m(e)i(indices)e +(coun)m(t)h(bac)m(k)f(from)g(the)g(end)1110 5230 y(of)h(the)g(history) +-8 b(,)37 b(and)e(an)h(index)f(of)h(`)p Ft(-1)p Fu(')f(refers)g(to)i +(the)f(curren)m(t)f Ft(history)1110 5340 y(-d)30 b Fu(command.)p +eop end +%%Page: 143 149 +TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(143)630 +299 y Ft(-d)30 b Fj(start)p Ft(-)p Fj(end)1110 408 y +Fu(Delete)23 b(the)d(history)h(en)m(tries)g(b)s(et)m(w)m(een)g(p)s +(ositions)g Fr(start)i Fu(and)d Fr(end)p Fu(,)i(inclusiv)m(e.)1110 +518 y(P)m(ositiv)m(e)41 b(and)c(negativ)m(e)k(v)-5 b(alues)38 +b(for)h Fr(start)h Fu(and)e Fr(end)j Fu(are)e(in)m(terpreted)g(as)1110 +628 y(describ)s(ed)29 b(ab)s(o)m(v)m(e.)630 789 y Ft(-a)384 b Fu(App)s(end)28 b(the)i(new)f(history)g(lines)h(to)h(the)e(history)h -(\014le.)41 b(These)29 b(are)h(history)1110 4861 y(lines)36 +(\014le.)41 b(These)29 b(are)h(history)1110 899 y(lines)36 b(en)m(tered)g(since)f(the)h(b)s(eginning)f(of)g(the)h(curren)m(t)f -(Bash)h(session,)h(but)1110 4970 y(not)31 b(already)g(app)s(ended)d(to) -j(the)g(history)f(\014le.)630 5121 y Ft(-n)384 b Fu(App)s(end)32 +(Bash)h(session,)h(but)1110 1008 y(not)31 b(already)g(app)s(ended)d(to) +j(the)g(history)f(\014le.)630 1170 y Ft(-n)384 b Fu(App)s(end)32 b(the)i(history)f(lines)h(not)g(already)g(read)g(from)f(the)h(history)f -(\014le)h(to)1110 5230 y(the)26 b(curren)m(t)f(history)g(list.)40 +(\014le)h(to)1110 1280 y(the)26 b(curren)m(t)f(history)g(list.)40 b(These)25 b(are)h(lines)g(app)s(ended)e(to)i(the)f(history)h(\014le) -1110 5340 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f -(Bash)h(session.)p eop end -%%Page: 139 145 -TeXDict begin 139 144 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(139)630 -299 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g(\014le)h(and)f(app)s -(end)e(its)j(con)m(ten)m(ts)h(to)f(the)g(history)f(list.)630 -483 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m(t)f(history) -g(list)h(to)h(the)e(history)g(\014le.)630 668 y Ft(-p)384 -b Fu(P)m(erform)31 b(history)f(substitution)h(on)f(the)h -Fr(arg)8 b Fu(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110 -777 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g -(in)g(the)g(history)g(list.)630 962 y Ft(-s)384 b Fu(The)30 +1110 1389 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f +(Bash)h(session.)630 1551 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g +(\014le)h(and)f(app)s(end)e(its)j(con)m(ten)m(ts)h(to)f(the)g(history)f +(list.)630 1713 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m +(t)f(history)g(list)h(to)h(the)e(history)g(\014le.)630 +1874 y Ft(-p)384 b Fu(P)m(erform)31 b(history)f(substitution)h(on)f +(the)h Fr(arg)8 b Fu(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110 +1984 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g +(in)g(the)g(history)g(list.)630 2146 y Ft(-s)384 b Fu(The)30 b Fr(arg)8 b Fu(s)30 b(are)h(added)f(to)h(the)f(end)g(of)h(the)f (history)h(list)g(as)f(a)h(single)g(en)m(try)-8 b(.)630 -1146 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p +2307 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p Fu(,)g Ft(-a)p Fu(,)g(or)f Ft(-n)f Fu(options)i(is)f(used,)h(if)f Fr(\014lename)32 b Fu(is)26 b(giv)m(en,)i(then)e(it)h(is)630 -1256 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28 +2417 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28 b(not,)i(then)e(the)g(v)-5 b(alue)29 b(of)g(the)g Ft(HISTFILE)d -Fu(v)-5 b(ariable)29 b(is)f(used.)150 1534 y Fs(9.3)68 -b(History)46 b(Expansion)150 1693 y Fu(The)f(History)h(library)e(pro)m +Fu(v)-5 b(ariable)29 b(is)f(used.)150 2661 y Fs(9.3)68 +b(History)46 b(Expansion)150 2820 y Fu(The)f(History)h(library)e(pro)m (vides)i(a)f(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g -(the)f(history)150 1803 y(expansion)g(pro)m(vided)f(b)m(y)h +(the)f(history)150 2930 y(expansion)g(pro)m(vided)f(b)m(y)h Ft(csh)p Fu(.)83 b(This)44 b(section)i(describ)s(es)e(the)h(syn)m(tax)h -(used)e(to)i(manipulate)f(the)150 1912 y(history)30 b(information.)275 -2072 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h +(used)e(to)i(manipulate)f(the)150 3040 y(history)30 b(information.)275 +3176 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h (history)f(list)h(in)m(to)g(the)g(input)f(stream,)h(making)150 -2182 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen) +3286 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen) m(ts)f(to)h(a)g(previous)f(command)g(in)m(to)i(the)e(curren)m(t)150 -2291 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g -(quic)m(kly)-8 b(.)275 2451 y(History)40 b(expansion)g(is)h(p)s -(erformed)d(immediately)k(after)f(a)f(complete)i(line)f(is)f(read,)j(b) -s(efore)d(the)150 2560 y(shell)31 b(breaks)f(it)h(in)m(to)g(w)m(ords.) -275 2720 y(History)c(expansion)f(tak)m(es)i(place)f(in)f(t)m(w)m(o)i -(parts.)39 b(The)26 b(\014rst)g(is)g(to)h(determine)g(whic)m(h)f(line)h -(from)f(the)150 2829 y(history)i(list)g(should)f(b)s(e)g(used)g(during) -g(substitution.)39 b(The)27 b(second)h(is)g(to)h(select)g(p)s(ortions)e -(of)h(that)h(line)150 2939 y(for)d(inclusion)f(in)m(to)i(the)f(curren)m -(t)f(one.)40 b(The)25 b(line)h(selected)h(from)f(the)g(history)f(is)h -(called)h(the)f Fr(ev)m(en)m(t)p Fu(,)j(and)150 3048 -y(the)21 b(p)s(ortions)g(of)g(that)h(line)f(that)h(are)g(acted)g(up)s -(on)e(are)h(called)h Fr(w)m(ords)p Fu(.)38 b(V)-8 b(arious)21 -b Fr(mo)s(di\014ers)j Fu(are)e(a)m(v)-5 b(ailable)150 -3158 y(to)35 b(manipulate)f(the)g(selected)i(w)m(ords.)51 -b(The)33 b(line)h(is)g(brok)m(en)g(in)m(to)h(w)m(ords)e(in)h(the)g -(same)h(fashion)e(that)150 3268 y(Bash)i(do)s(es,)h(so)f(that)h(sev)m -(eral)g(w)m(ords)e(surrounded)f(b)m(y)i(quotes)g(are)g(considered)g -(one)g(w)m(ord.)54 b(History)150 3377 y(expansions)34 -b(are)g(in)m(tro)s(duced)f(b)m(y)h(the)g(app)s(earance)g(of)g(the)g -(history)g(expansion)g(c)m(haracter,)i(whic)m(h)e(is)150 -3487 y(`)p Ft(!)p Fu(')39 b(b)m(y)g(default.)66 b(Only)38 -b(`)p Ft(\\)p Fu(')h(and)f(`)p Ft(')p Fu(')h(ma)m(y)h(b)s(e)e(used)g -(to)h(escap)s(e)h(the)f(history)f(expansion)h(c)m(haracter,)150 -3596 y(but)27 b(the)i(history)f(expansion)g(c)m(haracter)i(is)e(also)h -(treated)g(as)g(quoted)f(if)g(it)h(immediately)h(precedes)e(the)150 -3706 y(closing)j(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275 -3865 y(Sev)m(eral)40 b(shell)g(options)g(settable)h(with)e(the)h -Ft(shopt)e Fu(builtin)h(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)150 -3975 y(page)32 b(49\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)g(the)e(b)s -(eha)m(vior)h(of)g(history)g(expansion.)44 b(If)31 b(the)h -Ft(histverify)d Fu(shell)150 4085 y(option)39 b(is)f(enabled,)i(and)e -(Readline)g(is)h(b)s(eing)e(used,)j(history)e(substitutions)g(are)g -(not)h(immediately)150 4194 y(passed)30 b(to)h(the)g(shell)g(parser.)40 -b(Instead,)30 b(the)h(expanded)f(line)h(is)f(reloaded)h(in)m(to)h(the)e -(Readline)h(editing)150 4304 y(bu\013er)e(for)i(further)e(mo)s -(di\014cation.)41 b(If)30 b(Readline)h(is)f(b)s(eing)g(used,)g(and)g -(the)g Ft(histreedit)e Fu(shell)i(option)150 4413 y(is)k(enabled,)h(a)g -(failed)g(history)f(expansion)g(will)g(b)s(e)g(reloaded)g(in)m(to)h -(the)g(Readline)f(editing)h(bu\013er)e(for)150 4523 y(correction.)68 -b(The)38 b Ft(-p)h Fu(option)g(to)h(the)f Ft(history)e -Fu(builtin)i(command)f(ma)m(y)i(b)s(e)e(used)g(to)i(see)g(what)f(a)150 -4633 y(history)f(expansion)f(will)h(do)g(b)s(efore)f(using)h(it.)63 -b(The)37 b Ft(-s)g Fu(option)i(to)f(the)g Ft(history)e -Fu(builtin)h(ma)m(y)i(b)s(e)150 4742 y(used)21 b(to)i(add)f(commands)g -(to)g(the)h(end)e(of)i(the)f(history)g(list)h(without)f(actually)i -(executing)f(them,)h(so)e(that)150 4852 y(they)31 b(are)f(a)m(v)-5 +3395 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g +(quic)m(kly)-8 b(.)275 3532 y(History)24 b(expansion)f(is)h(p)s +(erformed)e(immediately)j(after)f(a)g(complete)h(line)f(is)g(read,)h(b) +s(efore)e(the)h(shell)150 3642 y(breaks)32 b(it)i(in)m(to)f(w)m(ords,)g +(and)f(is)h(p)s(erformed)e(on)h(eac)m(h)i(line)f(individually)-8 +b(.)48 b(Bash)33 b(attempts)g(to)h(inform)150 3751 y(the)d(history)f +(expansion)g(functions)g(ab)s(out)g(quoting)h(still)g(in)f(e\013ect)i +(from)e(previous)g(lines.)275 3888 y(History)37 b(expansion)f(tak)m(es) +i(place)g(in)e(t)m(w)m(o)i(parts.)59 b(The)36 b(\014rst)g(is)h(to)g +(determine)g(whic)m(h)f(line)h(from)150 3998 y(the)42 +b(history)f(list)h(should)e(b)s(e)h(used)f(during)g(substitution.)74 +b(The)40 b(second)i(is)f(to)h(select)h(p)s(ortions)e(of)150 +4107 y(that)31 b(line)g(for)f(inclusion)h(in)m(to)g(the)g(curren)m(t)f +(one.)42 b(The)30 b(line)h(selected)h(from)e(the)h(history)f(is)h +(called)h(the)150 4217 y Fr(ev)m(en)m(t)p Fu(,)e(and)c(the)i(p)s +(ortions)e(of)i(that)f(line)h(that)g(are)f(acted)i(up)s(on)c(are)j +(called)g Fr(w)m(ords)p Fu(.)39 b(V)-8 b(arious)28 b +Fr(mo)s(di\014ers)150 4327 y Fu(are)33 b(a)m(v)-5 b(ailable)36 +b(to)d(manipulate)h(the)f(selected)h(w)m(ords.)48 b(The)32 +b(line)i(is)f(brok)m(en)f(in)m(to)i(w)m(ords)f(in)f(the)i(same)150 +4436 y(fashion)23 b(that)g(Bash)g(do)s(es,)h(so)f(that)h(sev)m(eral)g +(w)m(ords)e(surrounded)e(b)m(y)j(quotes)g(are)g(considered)g(one)g(w)m +(ord.)150 4546 y(History)37 b(expansions)g(are)g(in)m(tro)s(duced)f(b)m +(y)h(the)g(app)s(earance)g(of)g(the)g(history)f(expansion)h(c)m +(haracter,)150 4655 y(whic)m(h)30 b(is)h(`)p Ft(!)p Fu(')f(b)m(y)g +(default.)275 4792 y(History)c(expansion)g(implemen)m(ts)h(shell-lik)m +(e)h(quoting)f(con)m(v)m(en)m(tions:)40 b(a)27 b(bac)m(kslash)g(can)f +(b)s(e)g(used)f(to)150 4902 y(remo)m(v)m(e)h(the)e(sp)s(ecial)g +(handling)g(for)g(the)g(next)g(c)m(haracter;)k(single)d(quotes)g +(enclose)g(v)m(erbatim)g(sequences)150 5011 y(of)k(c)m(haracters,)i +(and)e(can)g(b)s(e)g(used)f(to)i(inhibit)f(history)g(expansion;)g(and)g +(c)m(haracters)i(enclosed)e(within)150 5121 y(double)h(quotes)i(ma)m(y) +f(b)s(e)f(sub)5 b(ject)31 b(to)h(history)f(expansion,)g(since)g(bac)m +(kslash)g(can)h(escap)s(e)f(the)g(history)150 5230 y(expansion)e(c)m +(haracter,)j(but)d(single)h(quotes)g(ma)m(y)h(not,)f(since)g(they)g +(are)g(not)f(treated)i(sp)s(ecially)f(within)150 5340 +y(double)g(quotes.)p eop end +%%Page: 144 150 +TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(144)275 +299 y(When)41 b(using)g(the)h(shell,)i(only)e(`)p Ft(\\)p +Fu(')g(and)e(`)p Ft(')p Fu(')i(ma)m(y)g(b)s(e)f(used)g(to)h(escap)s(e)g +(the)g(history)f(expansion)150 408 y(c)m(haracter,)e(but)34 +b(the)i(history)g(expansion)f(c)m(haracter)i(is)f(also)g(treated)h(as)e +(quoted)h(if)g(it)g(immediately)150 518 y(precedes)30 +b(the)h(closing)g(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275 +658 y(Sev)m(eral)48 b(shell)g(options)h(settable)g(with)e(the)h +Ft(shopt)f Fu(builtin)g(\(see)i(Section)f(4.3.2)i([The)e(Shopt)150 +767 y(Builtin],)24 b(page)e(65\))h(ma)m(y)e(b)s(e)g(used)g(to)h(tailor) +g(the)g(b)s(eha)m(vior)f(of)h(history)f(expansion.)37 +b(If)21 b(the)h Ft(histverify)150 877 y Fu(shell)35 b(option)f(is)h +(enabled,)g(and)f(Readline)h(is)f(b)s(eing)g(used,)h(history)g +(substitutions)e(are)i(not)g(immedi-)150 987 y(ately)i(passed)d(to)i +(the)g(shell)f(parser.)55 b(Instead,)37 b(the)e(expanded)g(line)g(is)h +(reloaded)g(in)m(to)g(the)f(Readline)150 1096 y(editing)29 +b(bu\013er)f(for)h(further)e(mo)s(di\014cation.)41 b(If)28 +b(Readline)h(is)g(b)s(eing)f(used,)h(and)f(the)h Ft(histreedit)d +Fu(shell)150 1206 y(option)e(is)g(enabled,)h(a)g(failed)f(history)g +(expansion)g(will)g(b)s(e)f(reloaded)h(in)m(to)h(the)f(Readline)g +(editing)h(bu\013er)150 1315 y(for)31 b(correction.)43 +b(The)30 b Ft(-p)g Fu(option)h(to)h(the)f Ft(history)e +Fu(builtin)h(command)h(ma)m(y)g(b)s(e)f(used)g(to)i(see)f(what)g(a)150 +1425 y(history)25 b(expansion)g(will)g(do)g(b)s(efore)g(using)f(it.)40 +b(The)24 b Ft(-s)h Fu(option)g(to)h(the)f Ft(history)e +Fu(builtin)i(ma)m(y)g(b)s(e)g(used)150 1534 y(to)36 b(add)f(commands)g +(to)h(the)g(end)f(of)g(the)h(history)f(list)i(without)e(actually)i +(executing)g(them,)g(so)e(that)150 1644 y(they)c(are)f(a)m(v)-5 b(ailable)33 b(for)d(subsequen)m(t)g(recall.)42 b(This)29 b(is)i(most)g(useful)e(in)h(conjunction)h(with)f(Readline.)275 -5011 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g(v)-5 +1784 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g(v)-5 b(arious)34 b(c)m(haracters)h(used)f(b)m(y)f(the)h(history)g(expansion) -g(mec)m(h-)150 5121 y(anism)h(with)g(the)g Ft(histchars)d +g(mec)m(h-)150 1893 y(anism)h(with)g(the)g Ft(histchars)d Fu(v)-5 b(ariable,)38 b(as)d(explained)g(ab)s(o)m(v)m(e)i(\(see)f -(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150 5230 y(page)32 -b(71\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g(commen)m(t)i(c)m +(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150 2003 y(page)32 +b(73\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g(commen)m(t)i(c)m (haracter)f(to)g(mark)f(history)g(timestamps)h(when)150 -5340 y(writing)e(the)h(history)f(\014le.)p eop end -%%Page: 140 146 -TeXDict begin 140 145 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(140)150 -299 y Fk(9.3.1)63 b(Ev)m(en)m(t)39 b(Designators)150 -446 y Fu(An)32 b(ev)m(en)m(t)j(designator)e(is)g(a)g(reference)g(to)h -(a)f(command)f(line)h(en)m(try)g(in)g(the)g(history)g(list.)48 -b(Unless)33 b(the)150 555 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts)f -(are)g(relativ)m(e)i(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h -(history)f(list.)150 712 y Ft(!)432 b Fu(Start)34 b(a)f(history)h -(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h -(tab,)f(the)g(end)f(of)630 822 y(the)i(line,)g(`)p Ft(=)p -Fu(')g(or)f(`)p Ft(\()p Fu(')h(\(when)e(the)i Ft(extglob)d -Fu(shell)j(option)f(is)h(enabled)f(using)g(the)g Ft(shopt)630 -931 y Fu(builtin\).)150 1088 y Ft(!)p Fj(n)384 b Fu(Refer)30 -b(to)i(command)e(line)g Fr(n)p Fu(.)150 1245 y Ft(!-)p -Fj(n)336 b Fu(Refer)30 b(to)i(the)e(command)g Fr(n)g -Fu(lines)h(bac)m(k.)150 1401 y Ft(!!)384 b Fu(Refer)30 -b(to)i(the)e(previous)g(command.)40 b(This)30 b(is)g(a)h(synon)m(ym)f -(for)g(`)p Ft(!-1)p Fu('.)150 1558 y Ft(!)p Fj(string)144 -b Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g -(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630 -1668 y(list)31 b(starting)g(with)f Fr(string)p Fu(.)150 -1824 y Ft(!?)p Fj(string)p Ft([?])630 1934 y Fu(Refer)25 -b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t) -g(p)s(osition)g(in)g(the)g(history)630 2044 y(list)32 -b(con)m(taining)i Fr(string)p Fu(.)45 b(The)31 b(trailing)i(`)p -Ft(?)p Fu(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f(the)g Fr(string)39 -b Fu(is)32 b(follo)m(w)m(ed)630 2153 y(immediately)g(b)m(y)e(a)h -(newline.)150 2310 y Ft(^)p Fj(string1)p Ft(^)p Fj(string2)p -Ft(^)630 2420 y Fu(Quic)m(k)h(Substitution.)44 b(Rep)s(eat)32 -b(the)g(last)h(command,)f(replacing)g Fr(string1)40 b -Fu(with)31 b Fr(string2)p Fu(.)630 2529 y(Equiv)-5 b(alen)m(t)31 -b(to)g Ft(!!:s/)p Fj(string1)p Ft(/)p Fj(string2)p Ft(/)p -Fu(.)150 2686 y Ft(!#)384 b Fu(The)30 b(en)m(tire)h(command)f(line)h(t) -m(yp)s(ed)f(so)h(far.)150 2882 y Fk(9.3.2)63 b(W)-10 -b(ord)41 b(Designators)150 3029 y Fu(W)-8 b(ord)27 b(designators)h(are) -g(used)e(to)i(select)h(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.) -41 b(A)27 b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150 -3139 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61 +2112 y(writing)e(the)h(history)f(\014le.)150 2317 y Fk(9.3.1)63 +b(Ev)m(en)m(t)39 b(Designators)150 2464 y Fu(An)32 b(ev)m(en)m(t)j +(designator)e(is)g(a)g(reference)g(to)h(a)f(command)f(line)h(en)m(try)g +(in)g(the)g(history)g(list.)48 b(Unless)33 b(the)150 +2573 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts)f(are)g(relativ)m(e)i +(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h(history)f(list.)150 +2741 y Ft(!)432 b Fu(Start)34 b(a)f(history)h(substitution,)g(except)g +(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h(tab,)f(the)g(end)f(of)630 +2850 y(the)i(line,)g(`)p Ft(=)p Fu(')g(or)f(`)p Ft(\()p +Fu(')h(\(when)e(the)i Ft(extglob)d Fu(shell)j(option)f(is)h(enabled)f +(using)g(the)g Ft(shopt)630 2960 y Fu(builtin\).)150 +3124 y Ft(!)p Fj(n)384 b Fu(Refer)30 b(to)i(command)e(line)g +Fr(n)p Fu(.)150 3289 y Ft(!-)p Fj(n)336 b Fu(Refer)30 +b(to)i(the)e(command)g Fr(n)g Fu(lines)h(bac)m(k.)150 +3454 y Ft(!!)384 b Fu(Refer)30 b(to)i(the)e(previous)g(command.)40 +b(This)30 b(is)g(a)h(synon)m(ym)f(for)g(`)p Ft(!-1)p +Fu('.)150 3618 y Ft(!)p Fj(string)144 b Fu(Refer)25 b(to)h(the)f(most)h +(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t)g(p)s(osition)g(in) +g(the)g(history)630 3728 y(list)31 b(starting)g(with)f +Fr(string)p Fu(.)150 3892 y Ft(!?)p Fj(string)p Ft([?])630 +4002 y Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding) +g(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630 +4111 y(list)32 b(con)m(taining)i Fr(string)p Fu(.)45 +b(The)31 b(trailing)i(`)p Ft(?)p Fu(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f +(the)g Fr(string)39 b Fu(is)32 b(follo)m(w)m(ed)630 4221 +y(immediately)g(b)m(y)e(a)h(newline.)150 4386 y Ft(^)p +Fj(string1)p Ft(^)p Fj(string2)p Ft(^)630 4495 y Fu(Quic)m(k)h +(Substitution.)44 b(Rep)s(eat)32 b(the)g(last)h(command,)f(replacing)g +Fr(string1)40 b Fu(with)31 b Fr(string2)p Fu(.)630 4605 +y(Equiv)-5 b(alen)m(t)31 b(to)g Ft(!!:s/)p Fj(string1)p +Ft(/)p Fj(string2)p Ft(/)p Fu(.)150 4769 y Ft(!#)384 +b Fu(The)30 b(en)m(tire)h(command)f(line)h(t)m(yp)s(ed)f(so)h(far.)150 +4974 y Fk(9.3.2)63 b(W)-10 b(ord)41 b(Designators)150 +5121 y Fu(W)-8 b(ord)27 b(designators)h(are)g(used)e(to)i(select)h +(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41 b(A)27 +b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150 +5230 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61 b(It)37 b(ma)m(y)h(b)s(e)e(omitted)i(if)e(the)h(w)m(ord)g(designator)g -(b)s(egins)150 3248 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p +(b)s(egins)150 5340 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p Ft($)p Fu(',)g(`)p Ft(*)p Fu(',)h(`)p Ft(-)p Fu(',)f(or)g(`)p Ft(\045)p Fu('.)41 b(W)-8 b(ords)30 b(are)g(n)m(um)m(b)s(ered)e(from)i -(the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)150 -3358 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).) -41 b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g(curren)m(t)f -(line)g(separated)h(b)m(y)150 3468 y(single)h(spaces.)275 -3601 y(F)-8 b(or)31 b(example,)150 3758 y Ft(!!)384 b -Fu(designates)37 b(the)f(preceding)g(command.)57 b(When)35 -b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630 -3867 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 4024 -y Ft(!!:$)288 b Fu(designates)23 b(the)g(last)g(argumen)m(t)g(of)f(the) -h(preceding)f(command.)38 b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 -4133 y(to)31 b Ft(!$)p Fu(.)150 4290 y Ft(!fi:2)240 b -Fu(designates)30 b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f -(recen)m(t)i(command)e(starting)h(with)f(the)630 4400 -y(letters)j Ft(fi)p Fu(.)275 4556 y(Here)e(are)h(the)g(w)m(ord)f -(designators:)150 4713 y Ft(0)g(\(zero\))114 b Fu(The)30 -b Ft(0)p Fu(th)g(w)m(ord.)40 b(F)-8 b(or)31 b(man)m(y)g(applications,)h -(this)e(is)g(the)h(command)f(w)m(ord.)150 4870 y Fj(n)432 -b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150 5027 y Ft(^)432 -b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m(ord)g(1.)150 -5183 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150 -5340 y Ft(\045)432 b Fu(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h -(most)g(recen)m(t)g(`)p Ft(?)p Fj(string)p Ft(?)p Fu(')e(searc)m(h.)p +(the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)p eop end -%%Page: 141 147 -TeXDict begin 141 146 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(141)150 -299 y Fj(x)p Ft(-)p Fj(y)336 b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p +%%Page: 145 151 +TeXDict begin 145 150 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(145)150 +299 y(\014rst)29 b(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h +(\(zero\).)41 b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g +(curren)m(t)f(line)g(separated)h(b)m(y)150 408 y(single)h(spaces.)275 +552 y(F)-8 b(or)31 b(example,)150 725 y Ft(!!)384 b Fu(designates)37 +b(the)f(preceding)g(command.)57 b(When)35 b(y)m(ou)i(t)m(yp)s(e)f +(this,)h(the)f(preceding)g(com-)630 834 y(mand)30 b(is)g(rep)s(eated)g +(in)g(toto.)150 1002 y Ft(!!:$)288 b Fu(designates)23 +b(the)g(last)g(argumen)m(t)g(of)f(the)h(preceding)f(command.)38 +b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 1112 y(to)31 +b Ft(!$)p Fu(.)150 1280 y Ft(!fi:2)240 b Fu(designates)30 +b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f(recen)m(t)i(command)e +(starting)h(with)f(the)630 1390 y(letters)j Ft(fi)p Fu(.)275 +1563 y(Here)e(are)h(the)g(w)m(ord)f(designators:)150 +1735 y Ft(0)g(\(zero\))114 b Fu(The)30 b Ft(0)p Fu(th)g(w)m(ord.)40 +b(F)-8 b(or)31 b(man)m(y)g(applications,)h(this)e(is)g(the)h(command)f +(w)m(ord.)150 1904 y Fj(n)432 b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150 +2072 y Ft(^)432 b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m +(ord)g(1.)150 2240 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150 +2409 y Ft(\045)432 b Fu(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h +(most)g(recen)m(t)g(`)p Ft(?)p Fj(string)p Ft(?)p Fu(')e(searc)m(h.)150 +2577 y Fj(x)p Ft(-)p Fj(y)336 b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p Ft(-)p Fj(y)p Fu(')g(abbreviates)h(`)p Ft(0-)p Fj(y)p -Fu('.)150 458 y Ft(*)432 b Fu(All)28 b(of)g(the)g(w)m(ords,)g(except)h +Fu('.)150 2745 y Ft(*)432 b Fu(All)28 b(of)g(the)g(w)m(ords,)g(except)h (the)e Ft(0)p Fu(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p Ft(1-$)p Fu('.)39 b(It)28 b(is)g(not)g(an)f(error)630 -568 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m +2855 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m (ord)f(in)g(the)h(ev)m(en)m(t;)i(the)d(empt)m(y)i(string)e(is)h -(returned)e(in)630 677 y(that)j(case.)150 837 y Fj(x)p +(returned)e(in)630 2964 y(that)j(case.)150 3133 y Fj(x)p Ft(*)384 b Fu(Abbreviates)31 b(`)p Fj(x)p Ft(-$)p Fu(')150 -996 y Fj(x)p Ft(-)384 b Fu(Abbreviates)31 b(`)p Fj(x)p +3301 y Fj(x)p Ft(-)384 b Fu(Abbreviates)31 b(`)p Fj(x)p Ft(-$)p Fu(')f(lik)m(e)h(`)p Fj(x)p Ft(*)p Fu(',)g(but)f(omits)h(the)f -(last)h(w)m(ord.)275 1156 y(If)i(a)h(w)m(ord)g(designator)g(is)g +(last)h(w)m(ord.)275 3474 y(If)i(a)h(w)m(ord)g(designator)g(is)g (supplied)f(without)h(an)g(ev)m(en)m(t)h(sp)s(eci\014cation,)h(the)e -(previous)f(command)150 1265 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150 -1465 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 1611 y Fu(After)29 +(previous)f(command)150 3583 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150 +3791 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 3938 y Fu(After)29 b(the)g(optional)g(w)m(ord)g(designator,)g(y)m(ou)g(can)g(add)f(a)h (sequence)g(of)g(one)g(or)f(more)h(of)g(the)f(follo)m(wing)150 -1721 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p -Ft(:)p Fu('.)150 1880 y Ft(h)432 b Fu(Remo)m(v)m(e)32 +4048 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p +Ft(:)p Fu('.)150 4221 y Ft(h)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(pathname)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e(the) -h(head.)150 2040 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h +h(head.)150 4389 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h (pathname)e(comp)s(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150 -2199 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g +4557 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g (the)h(form)f(`)p Ft(.)p Fj(suffix)p Fu(',)f(lea)m(ving)j(the)f -(basename.)150 2359 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h -(trailing)g(su\016x.)150 2518 y Ft(p)432 b Fu(Prin)m(t)30 +(basename.)150 4726 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h +(trailing)g(su\016x.)150 4894 y Ft(p)432 b Fu(Prin)m(t)30 b(the)h(new)f(command)g(but)g(do)g(not)g(execute)i(it.)150 -2677 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g(w)m(ords,)g -(escaping)h(further)e(substitutions.)150 2837 y Ft(x)432 +5062 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g(w)m(ords,)g +(escaping)h(further)e(substitutions.)150 5230 y Ft(x)432 b Fu(Quote)32 b(the)f(substituted)g(w)m(ords)f(as)i(with)f(`)p Ft(q)p Fu(',)h(but)e(break)h(in)m(to)i(w)m(ords)d(at)i(spaces,)h(tabs,) -630 2946 y(and)d(newlines.)150 3106 y Ft(s/)p Fj(old)p -Ft(/)p Fj(new)p Ft(/)630 3215 y Fu(Substitute)i Fr(new)40 -b Fu(for)32 b(the)h(\014rst)f(o)s(ccurrence)h(of)f Fr(old)37 -b Fu(in)32 b(the)h(ev)m(en)m(t)h(line.)48 b(An)m(y)32 -b(delimiter)630 3325 y(ma)m(y)25 b(b)s(e)g(used)f(in)g(place)i(of)f(`)p -Ft(/)p Fu('.)39 b(The)24 b(delimiter)h(ma)m(y)h(b)s(e)e(quoted)h(in)f -Fr(old)29 b Fu(and)24 b Fr(new)32 b Fu(with)25 b(a)630 -3435 y(single)k(bac)m(kslash.)40 b(If)28 b(`)p Ft(&)p -Fu(')g(app)s(ears)g(in)f Fr(new)p Fu(,)i(it)f(is)h(replaced)f(b)m(y)g -Fr(old)p Fu(.)40 b(A)28 b(single)h(bac)m(kslash)630 3544 -y(will)35 b(quote)g(the)g(`)p Ft(&)p Fu('.)54 b(The)34 -b(\014nal)g(delimiter)i(is)e(optional)i(if)f(it)g(is)f(the)h(last)h(c)m -(haracter)g(on)630 3654 y(the)31 b(input)e(line.)150 -3813 y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150 -3973 y Ft(g)150 4082 y(a)432 b Fu(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f -(applied)h(o)m(v)m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66 -b(Used)39 b(in)f(conjunction)630 4192 y(with)30 b(`)p -Ft(s)p Fu(',)h(as)f(in)h Ft(gs/)p Fj(old)p Ft(/)p Fj(new)p -Ft(/)p Fu(,)c(or)j(with)h(`)p Ft(&)p Fu('.)150 4351 y -Ft(G)432 b Fu(Apply)30 b(the)g(follo)m(wing)i(`)p Ft(s)p -Fu(')f(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m(ord)e(in)g(the)g(ev)m -(en)m(t.)p eop end -%%Page: 142 148 -TeXDict begin 142 147 bop 3614 -116 a Fu(142)150 299 -y Fp(10)80 b(Installing)52 b(Bash)150 554 y Fu(This)31 +630 5340 y(and)d(newlines.)p eop end +%%Page: 146 152 +TeXDict begin 146 151 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(146)150 +299 y Ft(s/)p Fj(old)p Ft(/)p Fj(new)p Ft(/)630 408 y +Fu(Substitute)32 b Fr(new)40 b Fu(for)32 b(the)h(\014rst)f(o)s +(ccurrence)h(of)f Fr(old)37 b Fu(in)32 b(the)h(ev)m(en)m(t)h(line.)48 +b(An)m(y)32 b(delimiter)630 518 y(ma)m(y)25 b(b)s(e)g(used)f(in)g +(place)i(of)f(`)p Ft(/)p Fu('.)39 b(The)24 b(delimiter)h(ma)m(y)h(b)s +(e)e(quoted)h(in)f Fr(old)29 b Fu(and)24 b Fr(new)32 +b Fu(with)25 b(a)630 628 y(single)k(bac)m(kslash.)40 +b(If)28 b(`)p Ft(&)p Fu(')g(app)s(ears)g(in)f Fr(new)p +Fu(,)i(it)f(is)h(replaced)f(b)m(y)g Fr(old)p Fu(.)40 +b(A)28 b(single)h(bac)m(kslash)630 737 y(will)35 b(quote)g(the)g(`)p +Ft(&)p Fu('.)54 b(The)34 b(\014nal)g(delimiter)i(is)e(optional)i(if)f +(it)g(is)f(the)h(last)h(c)m(haracter)g(on)630 847 y(the)31 +b(input)e(line.)150 1006 y Ft(&)432 b Fu(Rep)s(eat)31 +b(the)f(previous)g(substitution.)150 1166 y Ft(g)150 +1275 y(a)432 b Fu(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f(applied)h(o)m(v) +m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66 b(Used)39 +b(in)f(conjunction)630 1385 y(with)30 b(`)p Ft(s)p Fu(',)h(as)f(in)h +Ft(gs/)p Fj(old)p Ft(/)p Fj(new)p Ft(/)p Fu(,)c(or)j(with)h(`)p +Ft(&)p Fu('.)150 1544 y Ft(G)432 b Fu(Apply)30 b(the)g(follo)m(wing)i +(`)p Ft(s)p Fu(')f(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m(ord)e(in)g +(the)g(ev)m(en)m(t.)p eop end +%%Page: 147 153 +TeXDict begin 147 152 bop 3614 -116 a Fu(147)150 299 +y Fp(10)80 b(Installing)52 b(Bash)150 534 y Fu(This)31 b(c)m(hapter)h(pro)m(vides)g(basic)g(instructions)f(for)g(installing)i (Bash)f(on)f(the)h(v)-5 b(arious)31 b(supp)s(orted)f(plat-)150 -664 y(forms.)40 b(The)28 b(distribution)h(supp)s(orts)e(the)j +643 y(forms.)40 b(The)28 b(distribution)h(supp)s(orts)e(the)j Fm(gnu)f Fu(op)s(erating)h(systems,)f(nearly)h(ev)m(ery)g(v)m(ersion)f -(of)h(Unix,)150 773 y(and)d(sev)m(eral)j(non-Unix)d(systems)h(suc)m(h)g +(of)h(Unix,)150 753 y(and)d(sev)m(eral)j(non-Unix)d(systems)h(suc)m(h)g (as)g(BeOS)g(and)f(In)m(terix.)40 b(Other)28 b(indep)s(enden)m(t)e(p)s -(orts)h(exist)i(for)150 883 y Fm(ms-dos)p Fu(,)h Fm(os/2)p -Fu(,)g(and)g(Windo)m(ws)g(platforms.)150 1134 y Fs(10.1)68 -b(Basic)45 b(Installation)150 1294 y Fu(These)30 b(are)h(installation)h -(instructions)e(for)h(Bash.)275 1435 y(The)e(simplest)i(w)m(a)m(y)g(to) -g(compile)h(Bash)e(is:)199 1577 y(1.)61 b Ft(cd)38 b +(orts)h(exist)i(for)150 862 y Fm(ms-dos)p Fu(,)h Fm(os/2)p +Fu(,)g(and)g(Windo)m(ws)g(platforms.)150 1103 y Fs(10.1)68 +b(Basic)45 b(Installation)150 1263 y Fu(These)30 b(are)h(installation)h +(instructions)e(for)h(Bash.)275 1398 y(The)e(simplest)i(w)m(a)m(y)g(to) +g(compile)h(Bash)e(is:)199 1532 y(1.)61 b Ft(cd)38 b Fu(to)h(the)f(directory)h(con)m(taining)h(the)f(source)f(co)s(de)h(and) f(t)m(yp)s(e)g(`)p Ft(./configure)p Fu(')e(to)j(con\014gure)330 -1686 y(Bash)c(for)f(y)m(our)h(system.)54 b(If)34 b(y)m(ou're)h(using)f +1642 y(Bash)c(for)f(y)m(our)h(system.)54 b(If)34 b(y)m(ou're)h(using)f Ft(csh)g Fu(on)g(an)h(old)g(v)m(ersion)g(of)g(System)f(V,)h(y)m(ou)g -(migh)m(t)330 1796 y(need)21 b(to)g(t)m(yp)s(e)g(`)p +(migh)m(t)330 1751 y(need)21 b(to)g(t)m(yp)s(e)g(`)p Ft(sh)30 b(./configure)p Fu(')18 b(instead)j(to)g(prev)m(en)m(t)h Ft(csh)e Fu(from)g(trying)h(to)g(execute)h Ft(configure)330 -1906 y Fu(itself.)330 2044 y(Running)30 b Ft(configure)f +1861 y Fu(itself.)330 1996 y(Running)30 b Ft(configure)f Fu(tak)m(es)k(some)e(time.)45 b(While)32 b(running,)e(it)i(prin)m(ts)f -(messages)h(telling)h(whic)m(h)330 2153 y(features)e(it)g(is)f(c)m(hec) -m(king)i(for.)199 2291 y(2.)61 b(T)m(yp)s(e)30 b(`)p +(messages)h(telling)h(whic)m(h)330 2105 y(features)e(it)g(is)f(c)m(hec) +m(king)i(for.)199 2240 y(2.)61 b(T)m(yp)s(e)30 b(`)p Ft(make)p Fu(')g(to)h(compile)g(Bash)g(and)e(build)h(the)g -Ft(bashbug)f Fu(bug)g(rep)s(orting)h(script.)199 2429 +Ft(bashbug)f Fu(bug)g(rep)s(orting)h(script.)199 2374 y(3.)61 b(Optionally)-8 b(,)32 b(t)m(yp)s(e)e(`)p Ft(make)g(tests)p -Fu(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199 2567 +Fu(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199 2509 y(4.)61 b(T)m(yp)s(e)36 b(`)p Ft(make)29 b(install)p Fu(')35 b(to)i(install)h Ft(bash)d Fu(and)h Ft(bashbug)p Fu(.)57 b(This)35 b(will)i(also)h(install)f(the)g(man)m(ual)330 -2677 y(pages)31 b(and)f(Info)g(\014le.)275 2847 y(The)20 +2619 y(pages)31 b(and)f(Info)g(\014le.)275 2778 y(The)20 b Ft(configure)f Fu(shell)i(script)g(attempts)h(to)g(guess)f(correct)i (v)-5 b(alues)21 b(for)g(v)-5 b(arious)21 b(system-dep)s(enden)m(t)150 -2956 y(v)-5 b(ariables)31 b(used)e(during)g(compilation.)42 +2888 y(v)-5 b(ariables)31 b(used)e(during)g(compilation.)42 b(It)31 b(uses)e(those)i(v)-5 b(alues)30 b(to)h(create)h(a)e -Ft(Makefile)e Fu(in)i(eac)m(h)i(direc-)150 3066 y(tory)k(of)g(the)g +Ft(Makefile)e Fu(in)i(eac)m(h)i(direc-)150 2998 y(tory)k(of)g(the)g (pac)m(k)-5 b(age)38 b(\(the)e(top)g(directory)-8 b(,)38 b(the)e Ft(builtins)p Fu(,)f Ft(doc)p Fu(,)i(and)e Ft(support)e -Fu(directories,)39 b(eac)m(h)150 3176 y(directory)29 +Fu(directories,)39 b(eac)m(h)150 3107 y(directory)29 b(under)d Ft(lib)p Fu(,)j(and)e(sev)m(eral)j(others\).)40 b(It)29 b(also)g(creates)h(a)e Ft(config.h)e Fu(\014le)j(con)m(taining) -g(system-)150 3285 y(dep)s(enden)m(t)e(de\014nitions.)40 +g(system-)150 3217 y(dep)s(enden)m(t)e(de\014nitions.)40 b(Finally)-8 b(,)31 b(it)d(creates)i(a)f(shell)g(script)f(named)g -Ft(config.status)d Fu(that)k(y)m(ou)g(can)150 3395 y(run)h(in)h(the)h +Ft(config.status)d Fu(that)k(y)m(ou)g(can)150 3326 y(run)h(in)h(the)h (future)f(to)h(recreate)h(the)f(curren)m(t)f(con\014guration,)i(a)f (\014le)f Ft(config.cache)e Fu(that)j(sa)m(v)m(es)h(the)150 -3504 y(results)39 b(of)g(its)h(tests)g(to)g(sp)s(eed)e(up)g +3436 y(results)39 b(of)g(its)h(tests)g(to)g(sp)s(eed)e(up)g (recon\014guring,)j(and)e(a)g(\014le)g Ft(config.log)e -Fu(con)m(taining)j(compiler)150 3614 y(output)30 b(\(useful)h(mainly)g +Fu(con)m(taining)j(compiler)150 3545 y(output)30 b(\(useful)h(mainly)g (for)f(debugging)h Ft(configure)p Fu(\).)40 b(If)30 b(at)h(some)h(p)s -(oin)m(t)e Ft(config.cache)e Fu(con)m(tains)150 3724 +(oin)m(t)e Ft(config.cache)e Fu(con)m(tains)150 3655 y(results)i(y)m(ou)h(don't)f(w)m(an)m(t)h(to)h(k)m(eep,)f(y)m(ou)g(ma)m -(y)g(remo)m(v)m(e)g(or)g(edit)g(it.)275 3865 y(T)-8 b(o)37 +(y)g(remo)m(v)m(e)g(or)g(edit)g(it.)275 3790 y(T)-8 b(o)37 b(\014nd)f(out)i(more)f(ab)s(out)h(the)f(options)h(and)f(argumen)m(ts)g -(that)h(the)g Ft(configure)d Fu(script)i(under-)150 3975 -y(stands,)30 b(t)m(yp)s(e)390 4116 y Ft(bash-2.04$)45 -b(./configure)g(--help)150 4258 y Fu(at)31 b(the)g(Bash)f(prompt)g(in)g -(y)m(our)g(Bash)h(source)f(directory)-8 b(.)275 4399 -y(If)53 b(y)m(ou)h(need)f(to)i(do)e(un)m(usual)g(things)g(to)i(compile) -g(Bash,)k(please)c(try)e(to)i(\014gure)e(out)h(ho)m(w)150 -4509 y Ft(configure)47 b Fu(could)j(c)m(hec)m(k)h(whether)e(or)g(not)h -(to)h(do)e(them,)55 b(and)49 b(mail)h(di\013s)f(or)h(instructions)f(to) -150 4619 y Ft(bash-maintainers@gnu.org)24 b Fu(so)30 -b(they)h(can)g(b)s(e)e(considered)i(for)f(the)g(next)h(release.)275 -4760 y(The)e(\014le)g Ft(configure.ac)d Fu(is)k(used)e(to)j(create)g -Ft(configure)c Fu(b)m(y)i(a)h(program)f(called)i(Auto)s(conf.)40 -b(Y)-8 b(ou)150 4870 y(only)34 b(need)g Ft(configure.ac)d -Fu(if)i(y)m(ou)i(w)m(an)m(t)g(to)f(c)m(hange)i(it)e(or)g(regenerate)i -Ft(configure)31 b Fu(using)j(a)g(new)m(er)150 4979 y(v)m(ersion)25 -b(of)f(Auto)s(conf.)39 b(If)24 b(y)m(ou)h(do)f(this,)i(mak)m(e)f(sure)f -(y)m(ou)h(are)f(using)g(Auto)s(conf)h(v)m(ersion)f(2.50)i(or)f(new)m -(er.)275 5121 y(Y)-8 b(ou)29 b(can)f(remo)m(v)m(e)i(the)f(program)g -(binaries)f(and)g(ob)5 b(ject)29 b(\014les)g(from)f(the)h(source)f(co)s -(de)h(directory)g(b)m(y)150 5230 y(t)m(yping)j(`)p Ft(make)d(clean)p +(that)h(the)g Ft(configure)d Fu(script)i(under-)150 3899 +y(stands,)30 b(t)m(yp)s(e)390 4034 y Ft(bash-4.2$)45 +b(./configure)g(--help)150 4169 y Fu(at)31 b(the)g(Bash)f(prompt)g(in)g +(y)m(our)g(Bash)h(source)f(directory)-8 b(.)275 4303 +y(If)34 b(y)m(ou)h(w)m(an)m(t)g(to)g(build)f(Bash)g(in)h(a)g(directory) +g(separate)g(from)f(the)h(source)g(directory)g({)g(to)g(build)150 +4413 y(for)30 b(m)m(ultiple)i(arc)m(hitectures,)g(for)e(example)h({)g +(just)f(use)h(the)f(full)h(path)f(to)h(the)g(con\014gure)f(script.)41 +b(The)150 4523 y(follo)m(wing)24 b(commands)f(will)g(build)f(bash)g(in) +g(a)h(directory)h(under)d Ft(/usr/local/build)d Fu(from)23 +b(the)g(source)150 4632 y(co)s(de)31 b(in)f Ft(/usr/local/src/bash-4.4) +o Fu(:)390 4767 y Ft(mkdir)46 b(/usr/local/build/bash-4.4)390 +4877 y(cd)h(/usr/local/build/bash-4.4)390 4986 y(bash)g +(/usr/local/src/bash-4.4)o(/con)o(fig)o(ure)390 5096 +y(make)275 5230 y Fu(See)27 b(Section)h(10.3)g([Compiling)g(F)-8 +b(or)27 b(Multiple)h(Arc)m(hitectures],)i(page)d(148,)j(for)c(more)i +(information)150 5340 y(ab)s(out)i(building)g(in)g(a)g(directory)h +(separate)h(from)e(the)g(source.)p eop end +%%Page: 148 154 +TeXDict begin 148 153 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(148)275 299 y(If)53 b(y)m(ou)h(need)f(to) +i(do)e(un)m(usual)g(things)g(to)i(compile)g(Bash,)k(please)c(try)e(to)i +(\014gure)e(out)h(ho)m(w)150 408 y Ft(configure)47 b +Fu(could)j(c)m(hec)m(k)h(whether)e(or)g(not)h(to)h(do)e(them,)55 +b(and)49 b(mail)h(di\013s)f(or)h(instructions)f(to)150 +518 y Ft(bash-maintainers@gnu.org)24 b Fu(so)30 b(they)h(can)g(b)s(e)e +(considered)i(for)f(the)g(next)h(release.)275 658 y(The)e(\014le)g +Ft(configure.ac)d Fu(is)k(used)e(to)j(create)g Ft(configure)c +Fu(b)m(y)i(a)h(program)f(called)i(Auto)s(conf.)40 b(Y)-8 +b(ou)150 768 y(only)34 b(need)g Ft(configure.ac)d Fu(if)i(y)m(ou)i(w)m +(an)m(t)g(to)f(c)m(hange)i(it)e(or)g(regenerate)i Ft(configure)31 +b Fu(using)j(a)g(new)m(er)150 878 y(v)m(ersion)25 b(of)f(Auto)s(conf.) +39 b(If)24 b(y)m(ou)h(do)f(this,)i(mak)m(e)f(sure)f(y)m(ou)h(are)f +(using)g(Auto)s(conf)h(v)m(ersion)f(2.50)i(or)f(new)m(er.)275 +1018 y(Y)-8 b(ou)29 b(can)f(remo)m(v)m(e)i(the)f(program)g(binaries)f +(and)g(ob)5 b(ject)29 b(\014les)g(from)f(the)h(source)f(co)s(de)h +(directory)g(b)m(y)150 1127 y(t)m(yping)j(`)p Ft(make)d(clean)p Fu('.)42 b(T)-8 b(o)32 b(also)g(remo)m(v)m(e)g(the)g(\014les)f(that)g Ft(configure)e Fu(created)j(\(so)g(y)m(ou)g(can)f(compile)150 -5340 y(Bash)g(for)f(a)g(di\013eren)m(t)h(kind)f(of)g(computer\),)h(t)m -(yp)s(e)g(`)p Ft(make)e(distclean)p Fu('.)p eop end -%%Page: 143 149 -TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(143)150 299 y Fs(10.2)68 -b(Compilers)46 b(and)f(Options)150 458 y Fu(Some)28 b(systems)h -(require)f(un)m(usual)f(options)i(for)f(compilation)i(or)f(linking)f -(that)h(the)g Ft(configure)d Fu(script)150 568 y(do)s(es)32 -b(not)g(kno)m(w)g(ab)s(out.)44 b(Y)-8 b(ou)33 b(can)f(giv)m(e)h -Ft(configure)d Fu(initial)j(v)-5 b(alues)32 b(for)g(v)-5 -b(ariables)32 b(b)m(y)g(setting)h(them)150 677 y(in)k(the)g(en)m -(vironmen)m(t.)62 b(Using)38 b(a)f(Bourne-compatible)i(shell,)g(y)m(ou) -f(can)g(do)f(that)h(on)f(the)g(command)150 787 y(line)31 -b(lik)m(e)g(this:)390 926 y Ft(CC=c89)46 b(CFLAGS=-O2)f(LIBS=-lposix)g -(./configure)275 1065 y Fu(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f +1237 y(Bash)g(for)f(a)g(di\013eren)m(t)h(kind)f(of)g(computer\),)h(t)m +(yp)s(e)g(`)p Ft(make)e(distclean)p Fu('.)150 1487 y +Fs(10.2)68 b(Compilers)46 b(and)f(Options)150 1646 y +Fu(Some)28 b(systems)h(require)f(un)m(usual)f(options)i(for)f +(compilation)i(or)f(linking)f(that)h(the)g Ft(configure)d +Fu(script)150 1756 y(do)s(es)32 b(not)g(kno)m(w)g(ab)s(out.)44 +b(Y)-8 b(ou)33 b(can)f(giv)m(e)h Ft(configure)d Fu(initial)j(v)-5 +b(alues)32 b(for)g(v)-5 b(ariables)32 b(b)m(y)g(setting)h(them)150 +1865 y(in)k(the)g(en)m(vironmen)m(t.)62 b(Using)38 b(a)f +(Bourne-compatible)i(shell,)g(y)m(ou)f(can)g(do)f(that)h(on)f(the)g +(command)150 1975 y(line)31 b(lik)m(e)g(this:)390 2115 +y Ft(CC=c89)46 b(CFLAGS=-O2)f(LIBS=-lposix)g(./configure)275 +2255 y Fu(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f Ft(env)e Fu(program,)h(y)m(ou)h(can)g(do)f(it)h(lik)m(e)h(this:)390 -1204 y Ft(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42 -b(LDFLAGS=-s)j(./configure)275 1343 y Fu(The)29 b(con\014guration)i +2396 y Ft(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42 +b(LDFLAGS=-s)j(./configure)275 2536 y Fu(The)29 b(con\014guration)i (pro)s(cess)f(uses)g(GCC)g(to)h(build)e(Bash)i(if)f(it)h(is)g(a)m(v)-5 -b(ailable.)150 1590 y Fs(10.3)68 b(Compiling)46 b(F)-11 -b(or)45 b(Multiple)g(Arc)l(hitectures)150 1750 y Fu(Y)-8 +b(ailable.)150 2786 y Fs(10.3)68 b(Compiling)46 b(F)-11 +b(or)45 b(Multiple)g(Arc)l(hitectures)150 2945 y Fu(Y)-8 b(ou)27 b(can)g(compile)g(Bash)g(for)f(more)h(than)f(one)h(kind)f(of)g (computer)h(at)g(the)g(same)g(time,)h(b)m(y)e(placing)i(the)150 -1859 y(ob)5 b(ject)31 b(\014les)f(for)g(eac)m(h)i(arc)m(hitecture)f(in) +3055 y(ob)5 b(ject)31 b(\014les)f(for)g(eac)m(h)i(arc)m(hitecture)f(in) f(their)g(o)m(wn)h(directory)-8 b(.)41 b(T)-8 b(o)31 b(do)f(this,)g(y)m(ou)h(m)m(ust)f(use)g(a)g(v)m(ersion)150 -1969 y(of)25 b Ft(make)f Fu(that)h(supp)s(orts)f(the)h -Ft(VPATH)e Fu(v)-5 b(ariable,)27 b(suc)m(h)e(as)g(GNU)h -Ft(make)p Fu(.)37 b Ft(cd)25 b Fu(to)h(the)f(directory)g(where)g(y)m -(ou)150 2078 y(w)m(an)m(t)34 b(the)f(ob)5 b(ject)34 b(\014les)f(and)f -(executables)i(to)g(go)g(and)e(run)g(the)h Ft(configure)d -Fu(script)j(from)g(the)g(source)150 2188 y(directory)-8 -b(.)44 b(Y)-8 b(ou)32 b(ma)m(y)g(need)f(to)h(supply)e(the)i -Ft(--srcdir=PATH)27 b Fu(argumen)m(t)32 b(to)g(tell)h -Ft(configure)28 b Fu(where)150 2297 y(the)36 b(source)g(\014les)f(are.) -57 b Ft(configure)33 b Fu(automatically)39 b(c)m(hec)m(ks)e(for)e(the)h -(source)g(co)s(de)f(in)h(the)f(directory)150 2407 y(that)c -Ft(configure)d Fu(is)i(in)g(and)g(in)g(`..'.)275 2546 +3164 y(of)36 b Ft(make)e Fu(that)i(supp)s(orts)e(the)i +Ft(VPATH)e Fu(v)-5 b(ariable,)38 b(suc)m(h)d(as)h(GNU)g +Ft(make)p Fu(.)55 b Ft(cd)35 b Fu(to)i(the)e(directory)h(where)150 +3274 y(y)m(ou)k(w)m(an)m(t)h(the)g(ob)5 b(ject)41 b(\014les)f(and)f +(executables)j(to)e(go)h(and)f(run)e(the)j Ft(configure)c +Fu(script)j(from)g(the)150 3383 y(source)32 b(directory)h(\(see)g +(Section)f(10.1)i([Basic)f(Installation],)i(page)e(147\).)47 +b(Y)-8 b(ou)32 b(ma)m(y)h(need)f(to)g(supply)150 3493 +y(the)43 b Ft(--srcdir=PATH)c Fu(argumen)m(t)k(to)h(tell)g +Ft(configure)c Fu(where)i(the)h(source)g(\014les)g(are.)78 +b Ft(configure)150 3603 y Fu(automatically)33 b(c)m(hec)m(ks)f(for)e +(the)h(source)f(co)s(de)h(in)f(the)h(directory)f(that)h +Ft(configure)d Fu(is)j(in)f(and)f(in)h(`..'.)275 3743 y(If)20 b(y)m(ou)h(ha)m(v)m(e)i(to)e(use)g(a)g Ft(make)f Fu(that)i(do)s(es)e(not)i(supp)s(orts)d(the)i Ft(VPATH)e Fu(v)-5 b(ariable,)24 b(y)m(ou)e(can)f(compile)h(Bash)150 -2656 y(for)33 b(one)h(arc)m(hitecture)h(at)f(a)g(time)g(in)f(the)h +3853 y(for)33 b(one)h(arc)m(hitecture)h(at)f(a)g(time)g(in)f(the)h (source)g(co)s(de)f(directory)-8 b(.)51 b(After)34 b(y)m(ou)g(ha)m(v)m -(e)h(installed)f(Bash)150 2765 y(for)c(one)h(arc)m(hitecture,)h(use)e +(e)h(installed)f(Bash)150 3962 y(for)c(one)h(arc)m(hitecture,)h(use)e (`)p Ft(make)g(distclean)p Fu(')e(b)s(efore)i(recon\014guring)g(for)g -(another)g(arc)m(hitecture.)275 2904 y(Alternativ)m(ely)-8 +(another)g(arc)m(hitecture.)275 4102 y(Alternativ)m(ely)-8 b(,)30 b(if)c(y)m(our)g(system)h(supp)s(orts)d(sym)m(b)s(olic)j(links,) -g(y)m(ou)g(can)g(use)f(the)g Ft(support/mkclone)150 3014 +g(y)m(ou)g(can)g(use)f(the)g Ft(support/mkclone)150 4212 y Fu(script)d(to)h(create)g(a)f(build)f(tree)i(whic)m(h)f(has)f(sym)m (b)s(olic)i(links)e(bac)m(k)i(to)g(eac)m(h)g(\014le)f(in)g(the)g -(source)g(directory)-8 b(.)150 3123 y(Here's)41 b(an)f(example)i(that)f +(source)g(directory)-8 b(.)150 4322 y(Here's)41 b(an)f(example)i(that)f (creates)h(a)e(build)g(directory)h(in)f(the)h(curren)m(t)f(directory)h -(from)f(a)h(source)150 3233 y(directory)31 b Ft(/usr/gnu/src/bash-2.0)p -Fu(:)390 3372 y Ft(bash)47 b(/usr/gnu/src/bash-2.0/s)o(uppo)o(rt/)o +(from)f(a)h(source)150 4431 y(directory)31 b Ft(/usr/gnu/src/bash-2.0)p +Fu(:)390 4572 y Ft(bash)47 b(/usr/gnu/src/bash-2.0/s)o(uppo)o(rt/)o (mkcl)o(one)41 b(-s)47 b(/usr/gnu/src/bash-2.0)42 b(.)150 -3511 y Fu(The)c Ft(mkclone)e Fu(script)i(requires)g(Bash,)i(so)f(y)m +4712 y Fu(The)c Ft(mkclone)e Fu(script)i(requires)g(Bash,)i(so)f(y)m (ou)f(m)m(ust)h(ha)m(v)m(e)g(already)g(built)f(Bash)g(for)g(at)h(least) -h(one)150 3620 y(arc)m(hitecture)32 b(b)s(efore)e(y)m(ou)h(can)f +h(one)150 4821 y(arc)m(hitecture)32 b(b)s(efore)e(y)m(ou)h(can)f (create)i(build)e(directories)h(for)f(other)h(arc)m(hitectures.)150 -3868 y Fs(10.4)68 b(Installation)47 b(Names)150 4027 +5071 y Fs(10.4)68 b(Installation)47 b(Names)150 5230 y Fu(By)37 b(default,)i(`)p Ft(make)29 b(install)p Fu(')35 b(will)j(install)f(in)m(to)h Ft(/usr/local/bin)p Fu(,)d -Ft(/usr/local/man)p Fu(,)f(etc.)61 b(Y)-8 b(ou)150 4137 +Ft(/usr/local/man)p Fu(,)f(etc.)61 b(Y)-8 b(ou)150 5340 y(can)35 b(sp)s(ecify)f(an)h(installation)i(pre\014x)c(other)j(than)e -Ft(/usr/local)e Fu(b)m(y)j(giving)g Ft(configure)e Fu(the)h(option)150 -4246 y Ft(--prefix=)p Fj(PATH)p Fu(,)41 b(or)g(b)m(y)g(sp)s(ecifying)h -(a)f(v)-5 b(alue)42 b(for)f(the)h Ft(DESTDIR)d Fu(`)p -Ft(make)p Fu(')i(v)-5 b(ariable)42 b(when)f(running)150 -4356 y(`)p Ft(make)29 b(install)p Fu('.)275 4495 y(Y)-8 -b(ou)71 b(can)h(sp)s(ecify)f(separate)h(installation)h(pre\014xes)d -(for)h(arc)m(hitecture-sp)s(eci\014c)i(\014les)f(and)150 -4604 y(arc)m(hitecture-indep)s(enden)m(t)44 b(\014les.)80 -b(If)43 b(y)m(ou)h(giv)m(e)h Ft(configure)c Fu(the)j(option)g -Ft(--exec-prefix=)p Fj(PATH)p Fu(,)150 4714 y(`)p Ft(make)29 -b(install)p Fu(')63 b(will)h(use)f Fr(P)-8 b(A)g(TH)75 -b Fu(as)64 b(the)g(pre\014x)e(for)i(installing)h(programs)e(and)h -(libraries.)150 4824 y(Do)s(cumen)m(tation)32 b(and)e(other)h(data)g -(\014les)f(will)h(still)g(use)f(the)h(regular)f(pre\014x.)150 -5071 y Fs(10.5)68 b(Sp)t(ecifying)45 b(the)g(System)h(T)l(yp)t(e)150 -5230 y Fu(There)f(ma)m(y)g(b)s(e)f(some)i(features)f +Ft(/usr/local)e Fu(b)m(y)j(giving)g Ft(configure)e Fu(the)h(option)p +eop end +%%Page: 149 155 +TeXDict begin 149 154 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(149)150 299 y Ft(--prefix=)p +Fj(PATH)p Fu(,)41 b(or)g(b)m(y)g(sp)s(ecifying)h(a)f(v)-5 +b(alue)42 b(for)f(the)h Ft(DESTDIR)d Fu(`)p Ft(make)p +Fu(')i(v)-5 b(ariable)42 b(when)f(running)150 408 y(`)p +Ft(make)29 b(install)p Fu('.)275 566 y(Y)-8 b(ou)71 b(can)h(sp)s(ecify) +f(separate)h(installation)h(pre\014xes)d(for)h(arc)m(hitecture-sp)s +(eci\014c)i(\014les)f(and)150 676 y(arc)m(hitecture-indep)s(enden)m(t) +44 b(\014les.)80 b(If)43 b(y)m(ou)h(giv)m(e)h Ft(configure)c +Fu(the)j(option)g Ft(--exec-prefix=)p Fj(PATH)p Fu(,)150 +785 y(`)p Ft(make)29 b(install)p Fu(')63 b(will)h(use)f +Fr(P)-8 b(A)g(TH)75 b Fu(as)64 b(the)g(pre\014x)e(for)i(installing)h +(programs)e(and)h(libraries.)150 895 y(Do)s(cumen)m(tation)32 +b(and)e(other)h(data)g(\014les)f(will)h(still)g(use)f(the)h(regular)f +(pre\014x.)150 1171 y Fs(10.5)68 b(Sp)t(ecifying)45 b(the)g(System)h(T) +l(yp)t(e)150 1330 y Fu(There)f(ma)m(y)g(b)s(e)f(some)i(features)f Ft(configure)e Fu(can)i(not)g(\014gure)g(out)g(automatically)-8 -b(,)52 b(but)44 b(need)h(to)150 5340 y(determine)26 b(b)m(y)g(the)g(t)m +b(,)52 b(but)44 b(need)h(to)150 1440 y(determine)26 b(b)m(y)g(the)g(t)m (yp)s(e)g(of)g(host)g(Bash)g(will)g(run)f(on.)39 b(Usually)26 -b Ft(configure)d Fu(can)k(\014gure)e(that)h(out,)i(but)p -eop end -%%Page: 144 150 -TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(144)150 299 y(if)28 b(it)g(prin)m(ts)f(a) -h(message)g(sa)m(ying)h(it)f(can)g(not)f(guess)h(the)g(host)f(t)m(yp)s -(e,)i(giv)m(e)g(it)f(the)g Ft(--host=TYPE)c Fu(option.)150 -408 y(`)p Ft(TYPE)p Fu(')29 b(can)h(either)g(b)s(e)g(a)g(short)f(name)h -(for)f(the)h(system)g(t)m(yp)s(e,)h(suc)m(h)e(as)h(`)p -Ft(sun4)p Fu(',)g(or)f(a)h(canonical)i(name)150 518 y(with)e(three)h -(\014elds:)40 b(`)p Ft(CPU-COMPANY-SYSTEM)p Fu(')26 b(\(e.g.,)32 -b(`)p Ft(i386-unknown-freebsd4.2)p Fu('\).)275 663 y(See)e(the)h -(\014le)f Ft(support/config.sub)c Fu(for)k(the)g(p)s(ossible)g(v)-5 -b(alues)31 b(of)f(eac)m(h)i(\014eld.)150 919 y Fs(10.6)68 -b(Sharing)45 b(Defaults)150 1078 y Fu(If)d(y)m(ou)i(w)m(an)m(t)g(to)f +b Ft(configure)d Fu(can)k(\014gure)e(that)h(out,)i(but)150 +1549 y(if)g(it)g(prin)m(ts)f(a)h(message)g(sa)m(ying)h(it)f(can)g(not)f +(guess)h(the)g(host)f(t)m(yp)s(e,)i(giv)m(e)g(it)f(the)g +Ft(--host=TYPE)c Fu(option.)150 1659 y(`)p Ft(TYPE)p +Fu(')29 b(can)h(either)g(b)s(e)g(a)g(short)f(name)h(for)f(the)h(system) +g(t)m(yp)s(e,)h(suc)m(h)e(as)h(`)p Ft(sun4)p Fu(',)g(or)f(a)h +(canonical)i(name)150 1768 y(with)e(three)h(\014elds:)40 +b(`)p Ft(CPU-COMPANY-SYSTEM)p Fu(')26 b(\(e.g.,)32 b(`)p +Ft(i386-unknown-freebsd4.2)p Fu('\).)275 1926 y(See)e(the)h(\014le)f +Ft(support/config.sub)c Fu(for)k(the)g(p)s(ossible)g(v)-5 +b(alues)31 b(of)f(eac)m(h)i(\014eld.)150 2202 y Fs(10.6)68 +b(Sharing)45 b(Defaults)150 2361 y Fu(If)d(y)m(ou)i(w)m(an)m(t)g(to)f (set)h(default)f(v)-5 b(alues)43 b(for)g Ft(configure)d Fu(scripts)j(to)h(share,)i(y)m(ou)d(can)g(create)i(a)e(site)150 -1188 y(shell)48 b(script)f(called)i Ft(config.site)44 +2471 y(shell)48 b(script)f(called)i Ft(config.site)44 b Fu(that)k(giv)m(es)h(default)f(v)-5 b(alues)48 b(for)f(v)-5 b(ariables)48 b(lik)m(e)h Ft(CC)p Fu(,)j Ft(cache_)150 -1298 y(file)p Fu(,)c(and)d Ft(prefix)p Fu(.)85 b Ft(configure)43 +2580 y(file)p Fu(,)c(and)d Ft(prefix)p Fu(.)85 b Ft(configure)43 b Fu(lo)s(oks)j(for)f Ft(PREFIX/share/config.site)39 -b Fu(if)46 b(it)g(exists,)k(then)150 1407 y Ft(PREFIX/etc/config.site) +b Fu(if)46 b(it)g(exists,)k(then)150 2690 y Ft(PREFIX/etc/config.site) 24 b Fu(if)31 b(it)g(exists.)42 b(Or,)30 b(y)m(ou)h(can)g(set)g(the)g Ft(CONFIG_SITE)c Fu(en)m(vironmen)m(t)k(v)-5 b(ari-)150 -1517 y(able)40 b(to)g(the)g(lo)s(cation)h(of)e(the)h(site)g(script.)67 +2800 y(able)40 b(to)g(the)g(lo)s(cation)h(of)e(the)h(site)g(script.)67 b(A)40 b(w)m(arning:)58 b(the)40 b(Bash)g Ft(configure)c -Fu(lo)s(oks)k(for)f(a)h(site)150 1626 y(script,)31 b(but)e(not)i(all)g -Ft(configure)d Fu(scripts)i(do.)150 1883 y Fs(10.7)68 -b(Op)t(eration)46 b(Con)l(trols)150 2042 y Ft(configure)28 +Fu(lo)s(oks)k(for)f(a)h(site)150 2909 y(script,)31 b(but)e(not)i(all)g +Ft(configure)d Fu(scripts)i(do.)150 3185 y Fs(10.7)68 +b(Op)t(eration)46 b(Con)l(trols)150 3344 y Ft(configure)28 b Fu(recognizes)k(the)e(follo)m(wing)i(options)f(to)g(con)m(trol)h(ho)m -(w)e(it)h(op)s(erates.)150 2217 y Ft(--cache-file=)p -Fj(file)630 2326 y Fu(Use)d(and)g(sa)m(v)m(e)h(the)f(results)g(of)g +(w)e(it)h(op)s(erates.)150 3538 y Ft(--cache-file=)p +Fj(file)630 3648 y Fu(Use)d(and)g(sa)m(v)m(e)h(the)f(results)g(of)g (the)h(tests)f(in)g Fr(\014le)33 b Fu(instead)28 b(of)h Ft(./config.cache)p Fu(.)36 b(Set)28 b Fr(\014le)630 -2436 y Fu(to)j Ft(/dev/null)d Fu(to)j(disable)g(cac)m(hing,)h(for)e -(debugging)g Ft(configure)p Fu(.)150 2606 y Ft(--help)192 +3758 y Fu(to)j Ft(/dev/null)d Fu(to)j(disable)g(cac)m(hing,)h(for)e +(debugging)g Ft(configure)p Fu(.)150 3940 y Ft(--help)192 b Fu(Prin)m(t)30 b(a)h(summary)e(of)i(the)f(options)h(to)g -Ft(configure)p Fu(,)d(and)i(exit.)150 2775 y Ft(--quiet)150 -2885 y(--silent)150 2995 y(-q)384 b Fu(Do)31 b(not)g(prin)m(t)f +Ft(configure)p Fu(,)d(and)i(exit.)150 4123 y Ft(--quiet)150 +4232 y(--silent)150 4342 y(-q)384 b Fu(Do)31 b(not)g(prin)m(t)f (messages)h(sa)m(ying)g(whic)m(h)g(c)m(hec)m(ks)g(are)g(b)s(eing)f -(made.)150 3164 y Ft(--srcdir=)p Fj(dir)630 3274 y Fu(Lo)s(ok)i(for)g +(made.)150 4525 y Ft(--srcdir=)p Fj(dir)630 4634 y Fu(Lo)s(ok)i(for)g (the)g(Bash)g(source)h(co)s(de)f(in)g(directory)g Fr(dir)p Fu(.)45 b(Usually)33 b Ft(configure)c Fu(can)j(deter-)630 -3383 y(mine)e(that)h(directory)g(automatically)-8 b(.)150 -3553 y Ft(--version)630 3663 y Fu(Prin)m(t)29 b(the)h(v)m(ersion)g(of)g +4744 y(mine)e(that)h(directory)g(automatically)-8 b(.)150 +4927 y Ft(--version)630 5036 y Fu(Prin)m(t)29 b(the)h(v)m(ersion)g(of)g (Auto)s(conf)f(used)g(to)h(generate)h(the)f Ft(configure)d -Fu(script,)j(and)f(exit.)275 3838 y Ft(configure)34 b +Fu(script,)j(and)f(exit.)275 5230 y Ft(configure)34 b Fu(also)k(accepts)g(some)g(other,)h(not)e(widely)g(used,)h(b)s -(oilerplate)g(options.)61 b(`)p Ft(configure)150 3947 -y(--help)p Fu(')29 b(prin)m(ts)h(the)g(complete)i(list.)150 -4203 y Fs(10.8)68 b(Optional)46 b(F)-11 b(eatures)150 -4363 y Fu(The)29 b(Bash)h Ft(configure)d Fu(has)j(a)g(n)m(um)m(b)s(er)f -(of)h Ft(--enable-)p Fj(feature)25 b Fu(options,)30 b(where)g -Fr(feature)35 b Fu(indicates)150 4472 y(an)e(optional)i(part)e(of)h -(Bash.)50 b(There)33 b(are)g(also)i(sev)m(eral)g Ft(--with-)p -Fj(package)29 b Fu(options,)35 b(where)e Fr(pac)m(k)-5 -b(age)150 4582 y Fu(is)32 b(something)h(lik)m(e)h(`)p -Ft(bash-malloc)p Fu(')c(or)i(`)p Ft(purify)p Fu('.)45 -b(T)-8 b(o)33 b(turn)e(o\013)i(the)f(default)h(use)f(of)g(a)h(pac)m(k) --5 b(age,)35 b(use)150 4692 y Ft(--without-)p Fj(package)p -Fu(.)46 b(T)-8 b(o)34 b(con\014gure)g(Bash)g(without)f(a)i(feature)f -(that)g(is)g(enabled)g(b)m(y)f(default,)i(use)150 4801 -y Ft(--disable-)p Fj(feature)p Fu(.)275 4946 y(Here)28 -b(is)g(a)h(complete)g(list)g(of)f(the)h Ft(--enable-)c -Fu(and)j Ft(--with-)e Fu(options)i(that)h(the)f(Bash)g -Ft(configure)150 5056 y Fu(recognizes.)150 5230 y Ft(--with-afs)630 -5340 y Fu(De\014ne)j(if)f(y)m(ou)h(are)f(using)g(the)h(Andrew)e(File)j -(System)e(from)g(T)-8 b(ransarc.)p eop end -%%Page: 145 151 -TeXDict begin 145 150 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(145)150 299 y Ft(--with-bash-malloc)630 -408 y Fu(Use)34 b(the)g(Bash)h(v)m(ersion)f(of)g Ft(malloc)e -Fu(in)i(the)g(directory)h Ft(lib/malloc)p Fu(.)48 b(This)34 -b(is)g(not)g(the)630 518 y(same)e Ft(malloc)e Fu(that)j(app)s(ears)e -(in)g Fm(gnu)h Fu(lib)s(c,)g(but)f(an)h(older)f(v)m(ersion)i -(originally)g(deriv)m(ed)630 628 y(from)f(the)h(4.2)g -Fm(bsd)f Ft(malloc)p Fu(.)45 b(This)31 b Ft(malloc)g -Fu(is)i(v)m(ery)f(fast,)i(but)e(w)m(astes)h(some)g(space)g(on)630 -737 y(eac)m(h)j(allo)s(cation.)58 b(This)34 b(option)i(is)f(enabled)g -(b)m(y)g(default.)56 b(The)34 b Ft(NOTES)g Fu(\014le)h(con)m(tains)i(a) -630 847 y(list)29 b(of)f(systems)f(for)h(whic)m(h)g(this)g(should)e(b)s -(e)i(turned)e(o\013,)j(and)f Ft(configure)d Fu(disables)j(this)630 -956 y(option)j(automatically)i(for)d(a)h(n)m(um)m(b)s(er)e(of)i -(systems.)150 1120 y Ft(--with-curses)630 1230 y Fu(Use)h(the)h(curses) +(oilerplate)g(options.)61 b(`)p Ft(configure)150 5340 +y(--help)p Fu(')29 b(prin)m(ts)h(the)g(complete)i(list.)p +eop end +%%Page: 150 156 +TeXDict begin 150 155 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(150)150 299 y Fs(10.8)68 +b(Optional)46 b(F)-11 b(eatures)150 458 y Fu(The)29 b(Bash)h +Ft(configure)d Fu(has)j(a)g(n)m(um)m(b)s(er)f(of)h Ft(--enable-)p +Fj(feature)25 b Fu(options,)30 b(where)g Fr(feature)35 +b Fu(indicates)150 568 y(an)e(optional)i(part)e(of)h(Bash.)50 +b(There)33 b(are)g(also)i(sev)m(eral)g Ft(--with-)p Fj(package)29 +b Fu(options,)35 b(where)e Fr(pac)m(k)-5 b(age)150 677 +y Fu(is)32 b(something)h(lik)m(e)h(`)p Ft(bash-malloc)p +Fu(')c(or)i(`)p Ft(purify)p Fu('.)45 b(T)-8 b(o)33 b(turn)e(o\013)i +(the)f(default)h(use)f(of)g(a)h(pac)m(k)-5 b(age,)35 +b(use)150 787 y Ft(--without-)p Fj(package)p Fu(.)46 +b(T)-8 b(o)34 b(con\014gure)g(Bash)g(without)f(a)i(feature)f(that)g(is) +g(enabled)g(b)m(y)f(default,)i(use)150 897 y Ft(--disable-)p +Fj(feature)p Fu(.)275 1033 y(Here)28 b(is)g(a)h(complete)g(list)g(of)f +(the)h Ft(--enable-)c Fu(and)j Ft(--with-)e Fu(options)i(that)h(the)f +(Bash)g Ft(configure)150 1143 y Fu(recognizes.)150 1306 +y Ft(--with-afs)630 1415 y Fu(De\014ne)j(if)f(y)m(ou)h(are)f(using)g +(the)h(Andrew)e(File)j(System)e(from)g(T)-8 b(ransarc.)150 +1577 y Ft(--with-bash-malloc)630 1686 y Fu(Use)34 b(the)g(Bash)h(v)m +(ersion)f(of)g Ft(malloc)e Fu(in)i(the)g(directory)h +Ft(lib/malloc)p Fu(.)48 b(This)34 b(is)g(not)g(the)630 +1796 y(same)e Ft(malloc)e Fu(that)j(app)s(ears)e(in)g +Fm(gnu)h Fu(lib)s(c,)g(but)f(an)h(older)f(v)m(ersion)i(originally)g +(deriv)m(ed)630 1905 y(from)f(the)h(4.2)g Fm(bsd)f Ft(malloc)p +Fu(.)45 b(This)31 b Ft(malloc)g Fu(is)i(v)m(ery)f(fast,)i(but)e(w)m +(astes)h(some)g(space)g(on)630 2015 y(eac)m(h)j(allo)s(cation.)58 +b(This)34 b(option)i(is)f(enabled)g(b)m(y)g(default.)56 +b(The)34 b Ft(NOTES)g Fu(\014le)h(con)m(tains)i(a)630 +2125 y(list)29 b(of)f(systems)f(for)h(whic)m(h)g(this)g(should)e(b)s(e) +i(turned)e(o\013,)j(and)f Ft(configure)d Fu(disables)j(this)630 +2234 y(option)j(automatically)i(for)d(a)h(n)m(um)m(b)s(er)e(of)i +(systems.)150 2396 y Ft(--with-curses)630 2505 y Fu(Use)h(the)h(curses) e(library)h(instead)g(of)h(the)f(termcap)g(library)-8 -b(.)46 b(This)32 b(should)f(b)s(e)g(supplied)630 1339 +b(.)46 b(This)32 b(should)f(b)s(e)g(supplied)630 2615 y(if)f(y)m(our)h(system)f(has)g(an)h(inadequate)g(or)f(incomplete)i -(termcap)e(database.)150 1503 y Ft(--with-gnu-malloc)630 -1613 y Fu(A)g(synon)m(ym)g(for)g Ft(--with-bash-malloc)p -Fu(.)150 1776 y Ft(--with-installed-readlin)o(e[=)p Fj(P)o(REFI)o(X)p -Ft(])630 1886 y Fu(De\014ne)c(this)f(to)h(mak)m(e)h(Bash)f(link)f(with) +(termcap)e(database.)150 2777 y Ft(--with-gnu-malloc)630 +2886 y Fu(A)g(synon)m(ym)g(for)g Ft(--with-bash-malloc)p +Fu(.)150 3048 y Ft(--with-installed-readlin)o(e[=)p Fj(P)o(REFI)o(X)p +Ft(])630 3157 y Fu(De\014ne)c(this)f(to)h(mak)m(e)h(Bash)f(link)f(with) g(a)h(lo)s(cally-installed)i(v)m(ersion)e(of)g(Readline)g(rather)630 -1996 y(than)f(the)h(v)m(ersion)g(in)f Ft(lib/readline)p +3267 y(than)f(the)h(v)m(ersion)g(in)f Ft(lib/readline)p Fu(.)36 b(This)25 b(w)m(orks)g(only)h(with)f(Readline)h(5.0)h(and)e -(later)630 2105 y(v)m(ersions.)46 b(If)32 b Fr(PREFIX)41 +(later)630 3376 y(v)m(ersions.)46 b(If)32 b Fr(PREFIX)41 b Fu(is)32 b Ft(yes)f Fu(or)i(not)f(supplied,)f Ft(configure)f -Fu(uses)i(the)g(v)-5 b(alues)32 b(of)h(the)630 2215 y(mak)m(e)28 +Fu(uses)i(the)g(v)-5 b(alues)32 b(of)h(the)630 3486 y(mak)m(e)28 b(v)-5 b(ariables)29 b Ft(includedir)24 b Fu(and)j Ft(libdir)p Fu(,)g(whic)m(h)g(are)h(sub)s(directories)f(of)g Ft(prefix)f -Fu(b)m(y)630 2324 y(default,)44 b(to)d(\014nd)f(the)h(installed)g(v)m +Fu(b)m(y)630 3596 y(default,)44 b(to)d(\014nd)f(the)h(installed)g(v)m (ersion)h(of)f(Readline)g(if)g(it)g(is)g(not)g(in)g(the)g(standard)630 -2434 y(system)35 b(include)f(and)g(library)g(directories.)54 +3705 y(system)35 b(include)f(and)g(library)g(directories.)54 b(If)34 b Fr(PREFIX)43 b Fu(is)35 b Ft(no)p Fu(,)g(Bash)f(links)h(with) -f(the)630 2544 y(v)m(ersion)42 b(in)e Ft(lib/readline)p +f(the)630 3815 y(v)m(ersion)42 b(in)e Ft(lib/readline)p Fu(.)70 b(If)40 b Fr(PREFIX)51 b Fu(is)41 b(set)g(to)h(an)m(y)g(other)f -(v)-5 b(alue,)44 b Ft(configure)630 2653 y Fu(treats)27 +(v)-5 b(alue,)44 b Ft(configure)630 3924 y Fu(treats)27 b(it)g(as)f(a)h(directory)g(pathname)f(and)f(lo)s(oks)i(for)f(the)g -(installed)h(v)m(ersion)g(of)f(Readline)630 2763 y(in)34 +(installed)h(v)m(ersion)g(of)f(Readline)630 4034 y(in)34 b(sub)s(directories)f(of)h(that)h(directory)g(\(include)f(\014les)g(in) g Fr(PREFIX)9 b Fu(/)p Ft(include)32 b Fu(and)i(the)630 -2872 y(library)c(in)g Fr(PREFIX)9 b Fu(/)p Ft(lib)p Fu(\).)150 -3036 y Ft(--with-purify)630 3146 y Fu(De\014ne)23 b(this)g(to)h(use)f +4144 y(library)c(in)g Fr(PREFIX)9 b Fu(/)p Ft(lib)p Fu(\).)150 +4305 y Ft(--with-purify)630 4415 y Fu(De\014ne)23 b(this)g(to)h(use)f (the)g(Purify)f(memory)h(allo)s(cation)i(c)m(hec)m(k)m(er)g(from)e -(Rational)i(Soft)m(w)m(are.)150 3309 y Ft(--enable-minimal-config)630 -3419 y Fu(This)e(pro)s(duces)f(a)i(shell)g(with)f(minimal)h(features,)h +(Rational)i(Soft)m(w)m(are.)150 4576 y Ft(--enable-minimal-config)630 +4686 y Fu(This)e(pro)s(duces)f(a)i(shell)g(with)f(minimal)h(features,)h (close)g(to)f(the)g(historical)h(Bourne)e(shell.)275 -3585 y(There)k(are)i(sev)m(eral)g Ft(--enable-)d Fu(options)i(that)h +4849 y(There)k(are)i(sev)m(eral)g Ft(--enable-)d Fu(options)i(that)h (alter)g(ho)m(w)f(Bash)g(is)g(compiled)h(and)e(link)m(ed,)i(rather)150 -3694 y(than)h(c)m(hanging)h(run-time)f(features.)150 -3860 y Ft(--enable-largefile)630 3970 y Fu(Enable)e(supp)s(ort)f(for)h -(large)i(\014les)f(\()p Ft(http://www.sas.com/stand)o(ards)o(/la)o -(rge_)o(file)o(/)630 4079 y(x_open)5 b(.)g(20Mar96)g(.)g(html)p -Fu(\))31 b(if)36 b(the)g(op)s(erating)h(system)f(requires)g(sp)s(ecial) -h(compiler)g(op-)630 4189 y(tions)27 b(to)h(build)e(programs)h(whic)m -(h)g(can)g(access)h(large)h(\014les.)39 b(This)26 b(is)i(enabled)f(b)m -(y)f(default,)630 4299 y(if)k(the)h(op)s(erating)g(system)f(pro)m -(vides)h(large)g(\014le)g(supp)s(ort.)150 4462 y Ft(--enable-profiling) -630 4572 y Fu(This)g(builds)f(a)i(Bash)g(binary)f(that)h(pro)s(duces)e -(pro\014ling)h(information)h(to)h(b)s(e)d(pro)s(cessed)630 -4682 y(b)m(y)g Ft(gprof)f Fu(eac)m(h)j(time)f(it)g(is)f(executed.)150 -4845 y Ft(--enable-static-link)630 4955 y Fu(This)37 -b(causes)h(Bash)f(to)h(b)s(e)f(link)m(ed)h(statically)-8 -b(,)43 b(if)37 b Ft(gcc)g Fu(is)g(b)s(eing)g(used.)61 -b(This)37 b(could)h(b)s(e)630 5064 y(used)30 b(to)h(build)e(a)i(v)m -(ersion)g(to)g(use)f(as)g(ro)s(ot's)h(shell.)275 5230 +4958 y(than)h(c)m(hanging)h(run-time)f(features.)150 +5121 y Ft(--enable-largefile)630 5230 y Fu(Enable)36 +b(supp)s(ort)f(for)g(large)j(\014les)e(\()p Ft(http:)5 +b(/)g(/)g(www)g(.)g(unix)g(.)g(org)t(/)g(v)o(ersi)o(on2)t(/)g(w)o(hats) +o(new)t(/)630 5340 y(lfs20mar)h(.)g(html)p Fu(\))35 b(if)j(the)g(op)s +(erating)g(system)g(requires)f(sp)s(ecial)i(compiler)f(options)g(to)p +eop end +%%Page: 151 157 +TeXDict begin 151 156 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(151)630 299 y(build)33 +b(programs)g(whic)m(h)h(can)g(access)h(large)g(\014les.)51 +b(This)33 b(is)h(enabled)g(b)m(y)g(default,)h(if)f(the)630 +408 y(op)s(erating)d(system)f(pro)m(vides)h(large)g(\014le)g(supp)s +(ort.)150 570 y Ft(--enable-profiling)630 680 y Fu(This)g(builds)f(a)i +(Bash)g(binary)f(that)h(pro)s(duces)e(pro\014ling)h(information)h(to)h +(b)s(e)d(pro)s(cessed)630 790 y(b)m(y)g Ft(gprof)f Fu(eac)m(h)j(time)f +(it)g(is)f(executed.)150 951 y Ft(--enable-static-link)630 +1061 y Fu(This)37 b(causes)h(Bash)f(to)h(b)s(e)f(link)m(ed)h +(statically)-8 b(,)43 b(if)37 b Ft(gcc)g Fu(is)g(b)s(eing)g(used.)61 +b(This)37 b(could)h(b)s(e)630 1171 y(used)30 b(to)h(build)e(a)i(v)m +(ersion)g(to)g(use)f(as)g(ro)s(ot's)h(shell.)275 1334 y(The)f(`)p Ft(minimal-config)p Fu(')d(option)k(can)g(b)s(e)f(used)f (to)j(disable)e(all)i(of)f(the)f(follo)m(wing)i(options,)g(but)d(it)150 -5340 y(is)h(pro)s(cessed)g(\014rst,)g(so)h(individual)f(options)g(ma)m +1443 y(is)h(pro)s(cessed)g(\014rst,)g(so)h(individual)f(options)g(ma)m (y)h(b)s(e)f(enabled)g(using)g(`)p Ft(enable-)p Fj(feature)p -Fu('.)p eop end -%%Page: 146 152 -TeXDict begin 146 151 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(146)275 299 y(All)26 b(of)f(the)h(follo)m -(wing)h(options)f(except)g(for)g(`)p Ft(disabled-builtins)p -Fu(',)c(`)p Ft(direxpand-default)p Fu(',)h(and)150 408 -y(`)p Ft(xpg-echo-default)p Fu(')28 b(are)33 b(enabled)f(b)m(y)g -(default,)h(unless)e(the)i(op)s(erating)f(system)h(do)s(es)e(not)i(pro) -m(vide)150 518 y(the)e(necessary)f(supp)s(ort.)150 698 -y Ft(--enable-alias)630 807 y Fu(Allo)m(w)41 b(alias)g(expansion)f(and) -f(include)g(the)h Ft(alias)f Fu(and)g Ft(unalias)e Fu(builtins)j(\(see) -g(Sec-)630 917 y(tion)31 b(6.6)g([Aliases],)i(page)e(90\).)150 -1090 y Ft(--enable-arith-for-comma)o(nd)630 1200 y Fu(Include)21 +Fu('.)275 1580 y(All)c(of)f(the)h(follo)m(wing)h(options)f(except)g +(for)g(`)p Ft(disabled-builtins)p Fu(',)c(`)p Ft(direxpand-default)p +Fu(',)h(and)150 1690 y(`)p Ft(xpg-echo-default)p Fu(')28 +b(are)33 b(enabled)f(b)m(y)g(default,)h(unless)e(the)i(op)s(erating)f +(system)h(do)s(es)e(not)i(pro)m(vide)150 1800 y(the)e(necessary)f(supp) +s(ort.)150 1963 y Ft(--enable-alias)630 2072 y Fu(Allo)m(w)41 +b(alias)g(expansion)f(and)f(include)g(the)h Ft(alias)f +Fu(and)g Ft(unalias)e Fu(builtins)j(\(see)g(Sec-)630 +2182 y(tion)31 b(6.6)g([Aliases],)i(page)e(93\).)150 +2344 y Ft(--enable-arith-for-comma)o(nd)630 2453 y Fu(Include)21 b(supp)s(ort)g(for)g(the)i(alternate)g(form)f(of)g(the)g Ft(for)f Fu(command)h(that)h(b)s(eha)m(v)m(es)f(lik)m(e)i(the)630 -1309 y(C)30 b(language)i Ft(for)d Fu(statemen)m(t)j(\(see)g(Section)f +2563 y(C)30 b(language)i Ft(for)d Fu(statemen)m(t)j(\(see)g(Section)f (3.2.4.1)i([Lo)s(oping)d(Constructs],)h(page)g(10\).)150 -1482 y Ft(--enable-array-variables)630 1592 y Fu(Include)h(supp)s(ort)g +2725 y Ft(--enable-array-variables)630 2834 y Fu(Include)h(supp)s(ort)g (for)h(one-dimensional)h(arra)m(y)f(shell)h(v)-5 b(ariables)33 -b(\(see)h(Section)g(6.7)h([Ar-)630 1701 y(ra)m(ys],)c(page)g(91\).)150 -1874 y Ft(--enable-bang-history)630 1984 y Fu(Include)36 +b(\(see)h(Section)g(6.7)h([Ar-)630 2944 y(ra)m(ys],)c(page)g(94\).)150 +3106 y Ft(--enable-bang-history)630 3215 y Fu(Include)36 b(supp)s(ort)f(for)h Ft(csh)p Fu(-lik)m(e)h(history)g(substitution)f -(\(see)h(Section)g(9.3)h([History)f(In-)630 2093 y(teraction],)c(page)e -(139\).)150 2266 y Ft(--enable-brace-expansion)630 2376 +(\(see)h(Section)g(9.3)h([History)f(In-)630 3325 y(teraction],)c(page)e +(143\).)150 3487 y Ft(--enable-brace-expansion)630 3597 y Fu(Include)40 b Ft(csh)p Fu(-lik)m(e)h(brace)f(expansion)g(\()h Ft(b{a,b}c)d Fq(7!)i Ft(bac)30 b(bbc)39 b Fu(\).)71 b(See)40 -b(Section)h(3.5.1)630 2485 y([Brace)32 b(Expansion],)e(page)h(21,)h -(for)e(a)g(complete)i(description.)150 2658 y Ft -(--enable-casemod-attribu)o(tes)630 2768 y Fu(Include)37 +b(Section)h(3.5.1)630 3706 y([Brace)32 b(Expansion],)e(page)h(23,)h +(for)e(a)g(complete)i(description.)150 3868 y Ft +(--enable-casemod-attribu)o(tes)630 3978 y Fu(Include)37 b(supp)s(ort)g(for)g(case-mo)s(difying)i(attributes)g(in)e(the)h -Ft(declare)e Fu(builtin)i(and)f(as-)630 2878 y(signmen)m(t)29 +Ft(declare)e Fu(builtin)i(and)f(as-)630 4087 y(signmen)m(t)29 b(statemen)m(ts.)41 b(V)-8 b(ariables)30 b(with)e(the)g Fr(upp)s(ercase)k Fu(attribute,)e(for)e(example,)i(will)630 -2987 y(ha)m(v)m(e)i(their)e(v)-5 b(alues)31 b(con)m(v)m(erted)h(to)f -(upp)s(ercase)e(up)s(on)g(assignmen)m(t.)150 3160 y Ft -(--enable-casemod-expansi)o(on)630 3270 y Fu(Include)h(supp)s(ort)e +4197 y(ha)m(v)m(e)i(their)e(v)-5 b(alues)31 b(con)m(v)m(erted)h(to)f +(upp)s(ercase)e(up)s(on)g(assignmen)m(t.)150 4359 y Ft +(--enable-casemod-expansi)o(on)630 4468 y Fu(Include)h(supp)s(ort)e (for)i(case-mo)s(difying)i(w)m(ord)e(expansions.)150 -3443 y Ft(--enable-command-timing)630 3552 y Fu(Include)43 +4630 y Ft(--enable-command-timing)630 4740 y Fu(Include)43 b(supp)s(ort)f(for)h(recognizing)i Ft(time)e Fu(as)g(a)h(reserv)m(ed)g -(w)m(ord)f(and)g(for)h(displa)m(ying)630 3662 y(timing)37 +(w)m(ord)f(and)g(for)h(displa)m(ying)630 4849 y(timing)37 b(statistics)h(for)e(the)g(pip)s(eline)g(follo)m(wing)i Ft(time)d Fu(\(see)i(Section)g(3.2.2)h([Pip)s(elines],)630 -3771 y(page)24 b(8\).)39 b(This)23 b(allo)m(ws)h(pip)s(elines)f(as)h(w) +4959 y(page)24 b(8\).)39 b(This)23 b(allo)m(ws)h(pip)s(elines)f(as)h(w) m(ell)g(as)g(shell)f(builtins)g(and)g(functions)g(to)h(b)s(e)e(timed.) -150 3944 y Ft(--enable-cond-command)630 4054 y Fu(Include)33 +150 5121 y Ft(--enable-cond-command)630 5230 y Fu(Include)33 b(supp)s(ort)f(for)i(the)g Ft([[)f Fu(conditional)i(command.)51 -b(\(see)34 b(Section)h(3.2.4.2)h([Condi-)630 4164 y(tional)c -(Constructs],)e(page)h(10\).)150 4337 y Ft(--enable-cond-regexp)630 -4446 y Fu(Include)k(supp)s(ort)f(for)i(matc)m(hing)h +b(\(see)34 b(Section)h(3.2.4.2)h([Condi-)630 5340 y(tional)c +(Constructs],)e(page)h(11\).)p eop end +%%Page: 152 158 +TeXDict begin 152 157 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(152)150 299 y Ft(--enable-cond-regexp)630 +408 y Fu(Include)35 b(supp)s(ort)f(for)i(matc)m(hing)h Fm(posix)e Fu(regular)h(expressions)g(using)f(the)h(`)p -Ft(=~)p Fu(')g(binary)630 4556 y(op)s(erator)25 b(in)f(the)h +Ft(=~)p Fu(')g(binary)630 518 y(op)s(erator)25 b(in)f(the)h Ft([[)f Fu(conditional)h(command.)39 b(\(see)25 b(Section)h(3.2.4.2)h -([Conditional)e(Con-)630 4665 y(structs],)31 b(page)g(10\).)150 -4838 y Ft(--enable-coprocesses)630 4948 y Fu(Include)23 +([Conditional)e(Con-)630 628 y(structs],)31 b(page)g(11\).)150 +774 y Ft(--enable-coprocesses)630 883 y Fu(Include)23 b(supp)s(ort)f(for)i(copro)s(cesses)g(and)f(the)h Ft(coproc)e Fu(reserv)m(ed)i(w)m(ord)g(\(see)h(Section)f(3.2.2)630 -5057 y([Pip)s(elines],)31 b(page)g(8\).)150 5230 y Ft -(--enable-debugger)630 5340 y Fu(Include)f(supp)s(ort)e(for)i(the)h -(bash)f(debugger)g(\(distributed)g(separately\).)p eop -end -%%Page: 147 153 -TeXDict begin 147 152 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(147)150 299 y Ft -(--enable-direxpand-defau)o(lt)630 408 y Fu(Cause)53 +993 y([Pip)s(elines],)31 b(page)g(8\).)150 1139 y Ft(--enable-debugger) +630 1249 y Fu(Include)f(supp)s(ort)e(for)i(the)h(bash)f(debugger)g +(\(distributed)g(separately\).)150 1395 y Ft(--enable-dev-fd-stat-bro)o +(ken)630 1504 y Fu(If)c(calling)j Ft(stat)d Fu(on)g(/dev/fd/)p +Fr(N)38 b Fu(returns)25 b(di\013eren)m(t)j(results)f(than)f(calling)j +Ft(fstat)c Fu(on)i(\014le)630 1614 y(descriptor)g Fr(N)p +Fu(,)i(supply)c(this)j(option)g(to)g(enable)f(a)h(w)m(ork)-5 +b(around.)39 b(This)27 b(has)g(implications)630 1724 +y(for)j(conditional)i(commands)e(that)h(test)g(\014le)g(attributes.)150 +1870 y Ft(--enable-direxpand-defau)o(lt)630 1979 y Fu(Cause)53 b(the)g Ft(direxpand)d Fu(shell)j(option)h(\(see)g(Section)f(4.3.2)i -([The)e(Shopt)f(Builtin],)630 518 y(page)29 b(64\))g(to)f(b)s(e)f +([The)e(Shopt)f(Builtin],)630 2089 y(page)29 b(65\))g(to)f(b)s(e)f (enabled)h(b)m(y)g(default)g(when)e(the)i(shell)g(starts.)41 -b(It)27 b(is)h(normally)g(disabled)630 628 y(b)m(y)i(default.)150 -774 y Ft(--enable-directory-stack)630 883 y Fu(Include)j(supp)s(ort)g +b(It)27 b(is)h(normally)g(disabled)630 2198 y(b)m(y)i(default.)150 +2345 y Ft(--enable-directory-stack)630 2454 y Fu(Include)j(supp)s(ort)g (for)h(a)g Ft(csh)p Fu(-lik)m(e)h(directory)f(stac)m(k)i(and)d(the)i Ft(pushd)p Fu(,)f Ft(popd)p Fu(,)g(and)f Ft(dirs)630 -993 y Fu(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m -(k],)g(page)f(93\).)150 1139 y Ft(--enable-disabled-builti)o(ns)630 -1249 y Fu(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m +2564 y Fu(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m +(k],)g(page)f(96\).)150 2710 y Ft(--enable-disabled-builti)o(ns)630 +2819 y Fu(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m (ed)i(via)f(`)p Ft(builtin)29 b(xxx)p Fu(')37 b(ev)m(en)j(after)f -Ft(xxx)e Fu(has)630 1358 y(b)s(een)31 b(disabled)g(using)g(`)p +Ft(xxx)e Fu(has)630 2929 y(b)s(een)31 b(disabled)g(using)g(`)p Ft(enable)d(-n)i(xxx)p Fu('.)43 b(See)32 b(Section)g(4.2)h([Bash)e -(Builtins],)i(page)f(49,)630 1468 y(for)e(details)i(of)e(the)h +(Builtins],)i(page)f(50,)630 3039 y(for)e(details)i(of)e(the)h Ft(builtin)d Fu(and)i Ft(enable)e Fu(builtin)i(commands.)150 -1614 y Ft(--enable-dparen-arithmet)o(ic)630 1724 y Fu(Include)42 +3185 y Ft(--enable-dparen-arithmet)o(ic)630 3294 y Fu(Include)42 b(supp)s(ort)f(for)h(the)h Ft(\(\(...)o(\)\))f Fu(command)g(\(see)i -(Section)f(3.2.4.2)i([Conditional)630 1833 y(Constructs],)30 -b(page)h(10\).)150 1979 y Ft(--enable-extended-glob)630 -2089 y Fu(Include)40 b(supp)s(ort)e(for)i(the)h(extended)f(pattern)h +(Section)f(3.2.4.2)i([Conditional)630 3404 y(Constructs],)30 +b(page)h(11\).)150 3550 y Ft(--enable-extended-glob)630 +3660 y Fu(Include)40 b(supp)s(ort)e(for)i(the)h(extended)f(pattern)h (matc)m(hing)g(features)g(describ)s(ed)e(ab)s(o)m(v)m(e)630 -2198 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i -(page)e(31.)150 2345 y Ft(--enable-extended-glob-d)o(efau)o(lt)630 -2454 y Fu(Set)40 b(the)g(default)g(v)-5 b(alue)41 b(of)f(the)g +3769 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i +(page)e(33.)150 3915 y Ft(--enable-extended-glob-d)o(efau)o(lt)630 +4025 y Fu(Set)40 b(the)g(default)g(v)-5 b(alue)41 b(of)f(the)g Fr(extglob)j Fu(shell)d(option)g(describ)s(ed)f(ab)s(o)m(v)m(e)i(under) -d(Sec-)630 2564 y(tion)31 b(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g -(64,)h(to)f(b)s(e)f(enabled.)150 2710 y Ft(--enable-function-import)630 -2819 y Fu(Include)23 b(supp)s(ort)g(for)g(imp)s(orting)h(function)g +d(Sec-)630 4134 y(tion)31 b(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g +(65,)h(to)f(b)s(e)f(enabled.)150 4281 y Ft(--enable-function-import)630 +4390 y Fu(Include)23 b(supp)s(ort)g(for)g(imp)s(orting)h(function)g (de\014nitions)f(exp)s(orted)h(b)m(y)g(another)g(instance)630 -2929 y(of)31 b(the)f(shell)h(from)f(the)g(en)m(vironmen)m(t.)41 +4500 y(of)31 b(the)f(shell)h(from)f(the)g(en)m(vironmen)m(t.)41 b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)150 -3075 y Ft(--enable-glob-asciirange)o(-def)o(ault)630 -3185 y Fu(Set)h(the)g(default)f(v)-5 b(alue)31 b(of)g(the)g +4646 y Ft(--enable-glob-asciirange)o(-def)o(ault)630 +4756 y Fu(Set)h(the)g(default)f(v)-5 b(alue)31 b(of)g(the)g Fr(globasciiranges)36 b Fu(shell)31 b(option)g(describ)s(ed)f(ab)s(o)m -(v)m(e)h(under)630 3294 y(Section)39 b(4.3.2)h([The)e(Shopt)g -(Builtin],)j(page)e(64,)i(to)f(b)s(e)d(enabled.)65 b(This)37 -b(con)m(trols)j(the)630 3404 y(b)s(eha)m(vior)21 b(of)g(c)m(haracter)h +(v)m(e)h(under)630 4865 y(Section)39 b(4.3.2)h([The)e(Shopt)g +(Builtin],)j(page)e(65,)i(to)f(b)s(e)d(enabled.)65 b(This)37 +b(con)m(trols)j(the)630 4975 y(b)s(eha)m(vior)21 b(of)g(c)m(haracter)h (ranges)f(when)f(used)g(in)g(pattern)h(matc)m(hing)h(brac)m(k)m(et)g -(expressions.)150 3550 y Ft(--enable-help-builtin)630 -3660 y Fu(Include)i(the)h Ft(help)f Fu(builtin,)h(whic)m(h)g(displa)m +(expressions.)150 5121 y Ft(--enable-help-builtin)630 +5230 y Fu(Include)i(the)h Ft(help)f Fu(builtin,)h(whic)m(h)g(displa)m (ys)f(help)h(on)f(shell)h(builtins)f(and)h(v)-5 b(ariables)25 -b(\(see)630 3769 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f -(49\).)150 3915 y Ft(--enable-history)630 4025 y Fu(Include)e(command)g -(history)h(and)f(the)h Ft(fc)f Fu(and)g Ft(history)e -Fu(builtin)j(commands)f(\(see)h(Sec-)630 4134 y(tion)h(9.1)g([Bash)g -(History)g(F)-8 b(acilities],)34 b(page)d(137\).)150 -4281 y Ft(--enable-job-control)630 4390 y Fu(This)h(enables)i(the)f -(job)g(con)m(trol)i(features)e(\(see)i(Chapter)d(7)i([Job)f(Con)m -(trol],)i(page)f(100\),)630 4500 y(if)c(the)h(op)s(erating)g(system)f -(supp)s(orts)f(them.)150 4646 y Ft(--enable-multibyte)630 -4756 y Fu(This)g(enables)i(supp)s(ort)d(for)i(m)m(ultib)m(yte)h(c)m -(haracters)g(if)f(the)g(op)s(erating)h(system)f(pro)m(vides)630 -4865 y(the)h(necessary)f(supp)s(ort.)150 5011 y Ft -(--enable-net-redirection)o(s)630 5121 y Fu(This)23 b(enables)h(the)g -(sp)s(ecial)h(handling)e(of)h(\014lenames)g(of)g(the)g(form)g -Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 5230 y Fu(and)31 -b Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)26 b Fu(when)31 -b(used)g(in)g(redirections)h(\(see)g(Section)g(3.6)h([Redirec-)630 -5340 y(tions],)e(page)g(32\).)p eop end -%%Page: 148 154 -TeXDict begin 148 153 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(148)150 299 y Ft -(--enable-process-substit)o(utio)o(n)630 408 y Fu(This)49 +b(\(see)630 5340 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f +(50\).)p eop end +%%Page: 153 159 +TeXDict begin 153 158 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(153)150 299 y Ft(--enable-history)630 +408 y Fu(Include)29 b(command)g(history)h(and)f(the)h +Ft(fc)f Fu(and)g Ft(history)e Fu(builtin)j(commands)f(\(see)h(Sec-)630 +518 y(tion)h(9.1)g([Bash)g(History)g(F)-8 b(acilities],)34 +b(page)d(141\).)150 664 y Ft(--enable-job-control)630 +774 y Fu(This)h(enables)i(the)f(job)g(con)m(trol)i(features)e(\(see)i +(Chapter)d(7)i([Job)f(Con)m(trol],)i(page)f(103\),)630 +883 y(if)c(the)h(op)s(erating)g(system)f(supp)s(orts)f(them.)150 +1029 y Ft(--enable-multibyte)630 1139 y Fu(This)g(enables)i(supp)s(ort) +d(for)i(m)m(ultib)m(yte)h(c)m(haracters)g(if)f(the)g(op)s(erating)h +(system)f(pro)m(vides)630 1249 y(the)h(necessary)f(supp)s(ort.)150 +1395 y Ft(--enable-net-redirection)o(s)630 1504 y Fu(This)23 +b(enables)h(the)g(sp)s(ecial)h(handling)e(of)h(\014lenames)g(of)g(the)g +(form)g Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 1614 +y Fu(and)31 b Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)26 +b Fu(when)31 b(used)g(in)g(redirections)h(\(see)g(Section)g(3.6)h +([Redirec-)630 1724 y(tions],)e(page)g(34\).)150 1870 +y Ft(--enable-process-substit)o(utio)o(n)630 1979 y Fu(This)49 b(enables)i(pro)s(cess)f(substitution)g(\(see)h(Section)g(3.5.6)h([Pro) -s(cess)e(Substitution],)630 518 y(page)31 b(30\))h(if)e(the)h(op)s +s(cess)e(Substitution],)630 2089 y(page)31 b(31\))h(if)e(the)h(op)s (erating)f(system)h(pro)m(vides)f(the)h(necessary)g(supp)s(ort.)150 -677 y Ft(--enable-progcomp)630 787 y Fu(Enable)d(the)g(programmable)g +2235 y Ft(--enable-progcomp)630 2345 y Fu(Enable)d(the)g(programmable)g (completion)i(facilities)g(\(see)f(Section)g(8.6)g([Programmable)630 -897 y(Completion],)i(page)h(129\).)42 b(If)30 b(Readline)h(is)f(not)h +2454 y(Completion],)i(page)h(132\).)42 b(If)30 b(Readline)h(is)f(not)h (enabled,)f(this)h(option)g(has)f(no)g(e\013ect.)150 -1056 y Ft(--enable-prompt-string-d)o(ecod)o(ing)630 1166 +2600 y Ft(--enable-prompt-string-d)o(ecod)o(ing)630 2710 y Fu(T)-8 b(urn)30 b(on)i(the)f(in)m(terpretation)i(of)f(a)g(n)m(um)m (b)s(er)e(of)i(bac)m(kslash-escap)s(ed)g(c)m(haracters)i(in)d(the)630 -1275 y Ft($PS1)p Fu(,)36 b Ft($PS2)p Fu(,)g Ft($PS3)p +2819 y Ft($PS0)p Fu(,)36 b Ft($PS1)p Fu(,)g Ft($PS2)p Fu(,)h(and)e Ft($PS4)f Fu(prompt)h(strings.)57 b(See)36 -b(Section)h(6.9)g([Con)m(trolling)g(the)630 1385 y(Prompt],)30 -b(page)h(94,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g -(escap)s(e)h(sequences.)150 1544 y Ft(--enable-readline)630 -1654 y Fu(Include)d(supp)s(ort)f(for)h(command-line)h(editing)g(and)f -(history)g(with)g(the)h(Bash)g(v)m(ersion)g(of)630 1763 +b(Section)h(6.9)g([Con)m(trolling)g(the)630 2929 y(Prompt],)30 +b(page)h(97,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g +(escap)s(e)h(sequences.)150 3075 y Ft(--enable-readline)630 +3185 y Fu(Include)d(supp)s(ort)f(for)h(command-line)h(editing)g(and)f +(history)g(with)g(the)h(Bash)g(v)m(ersion)g(of)630 3294 y(the)i(Readline)g(library)f(\(see)h(Chapter)f(8)g([Command)g(Line)g -(Editing],)h(page)g(104\).)150 1923 y Ft(--enable-restricted)630 -2032 y Fu(Include)41 b(supp)s(ort)f(for)i(a)g Fr(restricted)g(shell)p +(Editing],)h(page)g(107\).)150 3440 y Ft(--enable-restricted)630 +3550 y Fu(Include)41 b(supp)s(ort)f(for)i(a)g Fr(restricted)g(shell)p Fu(.)75 b(If)42 b(this)f(is)h(enabled,)j(Bash,)g(when)c(called)630 -2142 y(as)f Ft(rbash)p Fu(,)h(en)m(ters)f(a)g(restricted)h(mo)s(de.)68 +3660 y(as)f Ft(rbash)p Fu(,)h(en)m(ters)f(a)g(restricted)h(mo)s(de.)68 b(See)40 b(Section)h(6.10)g([The)f(Restricted)h(Shell],)630 -2252 y(page)31 b(95,)h(for)e(a)g(description)h(of)f(restricted)h(mo)s -(de.)150 2411 y Ft(--enable-select)630 2521 y Fu(Include)25 +3769 y(page)31 b(99,)h(for)e(a)g(description)h(of)f(restricted)h(mo)s +(de.)150 3915 y Ft(--enable-select)630 4025 y Fu(Include)25 b(the)h Ft(select)f Fu(comp)s(ound)f(command,)j(whic)m(h)e(allo)m(ws)j -(the)e(generation)h(of)f(simple)630 2630 y(men)m(us)k(\(see)h(Section)g -(3.2.4.2)i([Conditional)e(Constructs],)g(page)g(10\).)150 -2790 y Ft(--enable-separate-helpfi)o(les)630 2899 y Fu(Use)h(external)h +(the)e(generation)h(of)f(simple)630 4134 y(men)m(us)k(\(see)h(Section)g +(3.2.4.2)i([Conditional)e(Constructs],)g(page)g(11\).)150 +4281 y Ft(--enable-separate-helpfi)o(les)630 4390 y Fu(Use)h(external)h (\014les)f(for)g(the)g(do)s(cumen)m(tation)h(displa)m(y)m(ed)f(b)m(y)g -(the)g Ft(help)f Fu(builtin)h(instead)630 3009 y(of)f(storing)f(the)h -(text)g(in)m(ternally)-8 b(.)150 3168 y Ft(--enable-single-help-str)o -(ings)630 3278 y Fu(Store)40 b(the)g(text)h(displa)m(y)m(ed)g(b)m(y)e +(the)g Ft(help)f Fu(builtin)h(instead)630 4500 y(of)f(storing)f(the)h +(text)g(in)m(ternally)-8 b(.)150 4646 y Ft(--enable-single-help-str)o +(ings)630 4756 y Fu(Store)40 b(the)g(text)h(displa)m(y)m(ed)g(b)m(y)e (the)i Ft(help)d Fu(builtin)i(as)g(a)g(single)h(string)f(for)f(eac)m(h) -i(help)630 3387 y(topic.)54 b(This)33 b(aids)i(in)f(translating)h(the)g +i(help)630 4865 y(topic.)54 b(This)33 b(aids)i(in)f(translating)h(the)g (text)g(to)g(di\013eren)m(t)g(languages.)54 b(Y)-8 b(ou)35 -b(ma)m(y)g(need)630 3497 y(to)c(disable)g(this)f(if)g(y)m(our)h +b(ma)m(y)g(need)630 4975 y(to)c(disable)g(this)f(if)g(y)m(our)h (compiler)g(cannot)f(handle)g(v)m(ery)h(long)g(string)f(literals.)150 -3656 y Ft(--enable-strict-posix-de)o(faul)o(t)630 3766 +5121 y Ft(--enable-strict-posix-de)o(faul)o(t)630 5230 y Fu(Mak)m(e)c(Bash)f Fm(posix)p Fu(-conforman)m(t)g(b)m(y)f(default)h (\(see)g(Section)h(6.11)g([Bash)f(POSIX)e(Mo)s(de],)630 -3875 y(page)31 b(96\).)150 4035 y Ft(--enable-usg-echo-defaul)o(t)630 -4144 y Fu(A)f(synon)m(ym)g(for)g Ft(--enable-xpg-echo-default)p -Fu(.)150 4304 y Ft(--enable-xpg-echo-defaul)o(t)630 4413 -y Fu(Mak)m(e)c(the)f Ft(echo)e Fu(builtin)i(expand)f(bac)m -(kslash-escap)s(ed)h(c)m(haracters)h(b)m(y)f(default,)h(without)630 -4523 y(requiring)d(the)h Ft(-e)f Fu(option.)39 b(This)23 -b(sets)h(the)g(default)g(v)-5 b(alue)24 b(of)g(the)g -Ft(xpg_echo)e Fu(shell)h(option)630 4633 y(to)28 b Ft(on)p -Fu(,)g(whic)m(h)f(mak)m(es)h(the)g(Bash)f Ft(echo)f Fu(b)s(eha)m(v)m(e) -i(more)g(lik)m(e)h(the)e(v)m(ersion)h(sp)s(eci\014ed)f(in)g(the)630 -4742 y(Single)35 b(Unix)f(Sp)s(eci\014cation,)i(v)m(ersion)e(3.)53 -b(See)35 b(Section)g(4.2)g([Bash)g(Builtins],)h(page)f(49,)630 -4852 y(for)30 b(a)h(description)f(of)h(the)f(escap)s(e)h(sequences)g -(that)g Ft(echo)e Fu(recognizes.)275 5011 y(The)f(\014le)i -Ft(config-top.h)c Fu(con)m(tains)31 b(C)d(Prepro)s(cessor)h(`)p -Ft(#define)p Fu(')f(statemen)m(ts)j(for)f(options)f(whic)m(h)150 -5121 y(are)35 b(not)g(settable)i(from)d Ft(configure)p -Fu(.)51 b(Some)35 b(of)g(these)g(are)h(not)f(mean)m(t)g(to)h(b)s(e)e(c) -m(hanged;)k(b)s(ew)m(are)d(of)150 5230 y(the)h(consequences)g(if)f(y)m -(ou)h(do.)55 b(Read)36 b(the)g(commen)m(ts)g(asso)s(ciated)h(with)e -(eac)m(h)i(de\014nition)e(for)g(more)150 5340 y(information)c(ab)s(out) -f(its)h(e\013ect.)p eop end -%%Page: 149 155 -TeXDict begin 149 154 bop 3614 -116 a Fu(149)150 299 +5340 y(page)31 b(99\).)p eop end +%%Page: 154 160 +TeXDict begin 154 159 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(154)150 299 y Ft +(--enable-usg-echo-defaul)o(t)630 408 y Fu(A)30 b(synon)m(ym)g(for)g +Ft(--enable-xpg-echo-default)p Fu(.)150 568 y Ft +(--enable-xpg-echo-defaul)o(t)630 677 y Fu(Mak)m(e)c(the)f +Ft(echo)e Fu(builtin)i(expand)f(bac)m(kslash-escap)s(ed)h(c)m +(haracters)h(b)m(y)f(default,)h(without)630 787 y(requiring)d(the)h +Ft(-e)f Fu(option.)39 b(This)23 b(sets)h(the)g(default)g(v)-5 +b(alue)24 b(of)g(the)g Ft(xpg_echo)e Fu(shell)h(option)630 +897 y(to)28 b Ft(on)p Fu(,)g(whic)m(h)f(mak)m(es)h(the)g(Bash)f +Ft(echo)f Fu(b)s(eha)m(v)m(e)i(more)g(lik)m(e)h(the)e(v)m(ersion)h(sp)s +(eci\014ed)f(in)g(the)630 1006 y(Single)35 b(Unix)f(Sp)s +(eci\014cation,)i(v)m(ersion)e(3.)53 b(See)35 b(Section)g(4.2)g([Bash)g +(Builtins],)h(page)f(50,)630 1116 y(for)30 b(a)h(description)f(of)h +(the)f(escap)s(e)h(sequences)g(that)g Ft(echo)e Fu(recognizes.)275 +1275 y(The)f(\014le)i Ft(config-top.h)c Fu(con)m(tains)31 +b(C)d(Prepro)s(cessor)h(`)p Ft(#define)p Fu(')f(statemen)m(ts)j(for)f +(options)f(whic)m(h)150 1385 y(are)35 b(not)g(settable)i(from)d +Ft(configure)p Fu(.)51 b(Some)35 b(of)g(these)g(are)h(not)f(mean)m(t)g +(to)h(b)s(e)e(c)m(hanged;)k(b)s(ew)m(are)d(of)150 1494 +y(the)h(consequences)g(if)f(y)m(ou)h(do.)55 b(Read)36 +b(the)g(commen)m(ts)g(asso)s(ciated)h(with)e(eac)m(h)i(de\014nition)e +(for)g(more)150 1604 y(information)c(ab)s(out)f(its)h(e\013ect.)p +eop end +%%Page: 155 161 +TeXDict begin 155 160 bop 3614 -116 a Fu(155)150 299 y Fp(App)t(endix)52 b(A)81 b(Rep)t(orting)53 b(Bugs)150 533 y Fu(Please)33 b(rep)s(ort)e(all)h(bugs)f(y)m(ou)h(\014nd)e(in)i (Bash.)44 b(But)32 b(\014rst,)g(y)m(ou)g(should)e(mak)m(e)j(sure)e @@ -18629,8 +19102,8 @@ s(duce)e(it.)150 2182 y Ft(bashbug)d Fu(inserts)i(the)h(\014rst)f (vides)f(for)g(\014ling)h(a)150 2291 y(bug)h(rep)s(ort.)275 2426 y(Please)h(send)f(all)h(rep)s(orts)f(concerning)g(this)h(man)m (ual)f(to)h Ft(bug-bash@gnu.org)p Fu(.)p eop end -%%Page: 150 156 -TeXDict begin 150 155 bop 3614 -116 a Fu(150)150 141 +%%Page: 156 162 +TeXDict begin 156 161 bop 3614 -116 a Fu(156)150 141 y Fp(App)t(endix)58 b(B)81 b(Ma)9 b(jor)54 b(Di\013erences)d(F)-13 b(rom)54 b(The)g(Bourne)1088 299 y(Shell)150 530 y Fu(Bash)26 b(implemen)m(ts)h(essen)m(tially)g(the)g(same)f(grammar,)h(parameter)f @@ -18651,20 +19124,20 @@ Ft(sh)f Fu(included)g(in)h(SVR4.2)h(\(the)f(last)h(v)m(ersion)f(of)g Fm(posix)p Fu(-conforman)m(t,)g(ev)m(en)g(where)f(the)g Fm(posix)g Fu(sp)s(eci\014cation)h(di\013ers)f(from)g(traditional)330 1431 y Ft(sh)e Fu(b)s(eha)m(vior)g(\(see)i(Section)f(6.11)h([Bash)e -(POSIX)g(Mo)s(de],)h(page)g(96\).)225 1565 y Fq(\017)60 +(POSIX)g(Mo)s(de],)h(page)g(99\).)225 1565 y Fq(\017)60 b Fu(Bash)26 b(has)g(m)m(ulti-c)m(haracter)i(in)m(v)m(o)s(cation)g (options)f(\(see)f(Section)h(6.1)g([In)m(v)m(oking)g(Bash],)h(page)e -(82\).)225 1699 y Fq(\017)60 b Fu(Bash)40 b(has)f(command-line)h +(85\).)225 1699 y Fq(\017)60 b Fu(Bash)40 b(has)f(command-line)h (editing)g(\(see)h(Chapter)e(8)h([Command)f(Line)g(Editing],)k(page)d -(104\))330 1809 y(and)30 b(the)g Ft(bind)g Fu(builtin.)225 +(107\))330 1809 y(and)30 b(the)g Ft(bind)g Fu(builtin.)225 1943 y Fq(\017)60 b Fu(Bash)46 b(pro)m(vides)g(a)g(programmable)g(w)m (ord)f(completion)i(mec)m(hanism)f(\(see)h(Section)g(8.6)g([Pro-)330 -2052 y(grammable)39 b(Completion],)i(page)e(129\),)i(and)d(builtin)g +2052 y(grammable)39 b(Completion],)i(page)e(132\),)i(and)d(builtin)g (commands)f Ft(complete)p Fu(,)h Ft(compgen)p Fu(,)h(and)330 2162 y Ft(compopt)p Fu(,)29 b(to)i(manipulate)g(it.)225 2296 y Fq(\017)60 b Fu(Bash)26 b(has)f(command)h(history)f(\(see)i (Section)f(9.1)h([Bash)f(History)h(F)-8 b(acilities],)30 -b(page)c(137\))i(and)d(the)330 2405 y Ft(history)k Fu(and)h +b(page)c(141\))i(and)d(the)330 2405 y Ft(history)k Fu(and)h Ft(fc)g Fu(builtins)g(to)h(manipulate)g(it.)42 b(The)30 b(Bash)h(history)g(list)g(main)m(tains)g(timestamp)330 2515 y(information)g(and)e(uses)h(the)h(v)-5 b(alue)31 @@ -18672,9 +19145,9 @@ b(of)f(the)h Ft(HISTTIMEFORMAT)26 b Fu(v)-5 b(ariable)32 b(to)f(displa)m(y)f(it.)225 2649 y Fq(\017)60 b Fu(Bash)48 b(implemen)m(ts)h Ft(csh)p Fu(-lik)m(e)g(history)f(expansion)g(\(see)h (Section)g(9.3)h([History)f(In)m(teraction],)330 2759 -y(page)31 b(139\).)225 2892 y Fq(\017)60 b Fu(Bash)33 +y(page)31 b(143\).)225 2892 y Fq(\017)60 b Fu(Bash)33 b(has)g(one-dimensional)h(arra)m(y)f(v)-5 b(ariables)34 -b(\(see)g(Section)g(6.7)g([Arra)m(ys],)g(page)g(91\),)h(and)e(the)330 +b(\(see)g(Section)g(6.7)g([Arra)m(ys],)g(page)g(94\),)h(and)e(the)330 3002 y(appropriate)39 b(v)-5 b(ariable)40 b(expansions)f(and)g (assignmen)m(t)h(syn)m(tax)g(to)g(use)f(them.)67 b(Sev)m(eral)40 b(of)g(the)330 3112 y(Bash)32 b(builtins)f(tak)m(e)j(options)e(to)h @@ -18715,30 +19188,30 @@ y(ilar)j(to)g(the)g(C)f(language)h(\(see)h(Section)f(3.2.4.1)i([Lo)s b Fu(Bash)31 b(includes)f(the)g Ft(select)f Fu(comp)s(ound)g(command,)i (whic)m(h)f(allo)m(ws)i(the)f(generation)g(of)g(simple)330 5340 y(men)m(us)f(\(see)h(Section)g(3.2.4.2)i([Conditional)e -(Constructs],)g(page)g(10\).)p eop end -%%Page: 151 157 -TeXDict begin 151 156 bop 150 -116 a Fu(App)s(endix)29 +(Constructs],)g(page)g(11\).)p eop end +%%Page: 157 163 +TeXDict begin 157 162 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(151)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(157)225 299 y Fq(\017)60 b Fu(Bash)40 b(includes)g(the)g Ft([[)g Fu(comp)s(ound)e(command,)43 b(whic)m(h)c(mak)m(es)i(conditional)h(testing)f(part)f(of)330 408 y(the)f(shell)g(grammar)g(\(see)h(Section)f(3.2.4.2)j([Conditional) -d(Constructs],)i(page)f(10\),)i(including)330 518 y(optional)32 +d(Constructs],)i(page)f(11\),)i(including)330 518 y(optional)32 b(regular)e(expression)g(matc)m(hing.)225 653 y Fq(\017)60 b Fu(Bash)31 b(pro)m(vides)f(optional)h(case-insensitiv)m(e)i(matc)m (hing)f(for)e(the)g Ft(case)g Fu(and)f Ft([[)h Fu(constructs.)225 789 y Fq(\017)60 b Fu(Bash)27 b(includes)g(brace)h(expansion)f(\(see)h -(Section)g(3.5.1)i([Brace)e(Expansion],)g(page)g(21\))h(and)d(tilde)330 +(Section)g(3.5.1)i([Brace)e(Expansion],)g(page)g(23\))h(and)d(tilde)330 898 y(expansion)k(\(see)i(Section)f(3.5.2)h([Tilde)f(Expansion],)f -(page)h(22\).)225 1034 y Fq(\017)60 b Fu(Bash)24 b(implemen)m(ts)h +(page)h(23\).)225 1034 y Fq(\017)60 b Fu(Bash)24 b(implemen)m(ts)h (command)e(aliases)j(and)d(the)i Ft(alias)d Fu(and)i Ft(unalias)e Fu(builtins)h(\(see)i(Section)g(6.6)330 -1143 y([Aliases],)32 b(page)f(90\).)225 1279 y Fq(\017)60 +1143 y([Aliases],)32 b(page)f(93\).)225 1279 y Fq(\017)60 b Fu(Bash)32 b(pro)m(vides)g(shell)g(arithmetic,)i(the)e Ft(\(\()g Fu(comp)s(ound)e(command)i(\(see)h(Section)f(3.2.4.2)j([Con-) -330 1388 y(ditional)d(Constructs],)e(page)i(10\),)g(and)e(arithmetic)i +330 1388 y(ditional)d(Constructs],)e(page)i(11\),)g(and)e(arithmetic)i (expansion)e(\(see)i(Section)f(6.5)h([Shell)f(Arith-)330 -1498 y(metic],)h(page)f(89\).)225 1633 y Fq(\017)60 b +1498 y(metic],)h(page)f(92\).)225 1633 y Fq(\017)60 b Fu(V)-8 b(ariables)31 b(presen)m(t)e(in)g(the)g(shell's)h(initial)g(en) m(vironmen)m(t)g(are)g(automatically)i(exp)s(orted)d(to)h(c)m(hild)330 1743 y(pro)s(cesses.)38 b(The)23 b(Bourne)g(shell)g(do)s(es)g(not)g @@ -18754,44 +19227,44 @@ Ft(#)p Fu(',)g(`)p Ft(\045\045)p Fu(')e(and)f(`)p Ft(##)p Fu(')h(expansions)g(to)g(remo)m(v)m(e)330 2342 y(leading)f(or)f (trailing)h(substrings)e(from)g(v)-5 b(ariable)35 b(v)-5 b(alues)35 b(\(see)g(Section)g(3.5.3)g([Shell)g(P)m(arameter)330 -2452 y(Expansion],)30 b(page)h(23\).)225 2587 y Fq(\017)60 +2452 y(Expansion],)30 b(page)h(24\).)225 2587 y Fq(\017)60 b Fu(The)46 b(expansion)g Ft(${#xx})p Fu(,)j(whic)m(h)d(returns)f(the)i (length)f(of)h Ft(${xx})p Fu(,)i(is)e(supp)s(orted)d(\(see)j(Sec-)330 2697 y(tion)31 b(3.5.3)h([Shell)f(P)m(arameter)g(Expansion],)f(page)i -(23\).)225 2832 y Fq(\017)60 b Fu(The)30 b(expansion)g +(24\).)225 2832 y Fq(\017)60 b Fu(The)30 b(expansion)g Ft(${var:)p Fr(o\013set)r Ft([:)p Fr(length)p Ft(]})p Fu(,)g(whic)m(h)g(expands)g(to)h(the)g(substring)e(of)i Ft(var)p Fu('s)e(v)-5 b(alue)330 2942 y(of)43 b(length)g Fr(length)p Fu(,)k(b)s(eginning)42 b(at)i Fr(o\013set)p Fu(,)j(is)c(presen)m(t)g(\(see)g(Section)h(3.5.3)h([Shell)e(P)m -(arameter)330 3051 y(Expansion],)30 b(page)h(23\).)225 +(arameter)330 3051 y(Expansion],)30 b(page)h(24\).)225 3187 y Fq(\017)60 b Fu(The)21 b(expansion)f Ft(${var/[/])p Fr(pattern)p Ft([/)p Fr(replacemen)m(t)r Ft(]})p Fu(,)i(whic)m(h)e (matc)m(hes)j Fr(pattern)e Fu(and)f(replaces)330 3296 y(it)29 b(with)e Fr(replacemen)m(t)32 b Fu(in)c(the)g(v)-5 b(alue)29 b(of)f Ft(var)p Fu(,)g(is)g(a)m(v)-5 b(ailable)31 b(\(see)e(Section)f(3.5.3)i([Shell)f(P)m(arameter)330 -3406 y(Expansion],)h(page)h(23\).)225 3541 y Fq(\017)60 +3406 y(Expansion],)h(page)h(24\).)225 3541 y Fq(\017)60 b Fu(The)33 b(expansion)g Ft(${!)p Fj(prefix)p Ft(*})d Fu(expansion,)k(whic)m(h)e(expands)h(to)h(the)f(names)g(of)g(all)h (shell)f(v)-5 b(ari-)330 3651 y(ables)36 b(whose)g(names)g(b)s(egin)g (with)g Fr(pre\014x)p Fu(,)g(is)g(a)m(v)-5 b(ailable)39 b(\(see)e(Section)g(3.5.3)g([Shell)g(P)m(arameter)330 -3761 y(Expansion],)30 b(page)h(23\).)225 3896 y Fq(\017)60 +3761 y(Expansion],)30 b(page)h(24\).)225 3896 y Fq(\017)60 b Fu(Bash)22 b(has)f Fr(indirect)j Fu(v)-5 b(ariable)22 b(expansion)g(using)f Ft(${!word})e Fu(\(see)k(Section)f(3.5.3)i -([Shell)e(P)m(arameter)330 4006 y(Expansion],)30 b(page)h(23\).)225 +([Shell)e(P)m(arameter)330 4006 y(Expansion],)30 b(page)h(24\).)225 4141 y Fq(\017)60 b Fu(Bash)31 b(can)f(expand)g(p)s(ositional)h (parameters)g(b)s(ey)m(ond)e Ft($9)h Fu(using)g Ft(${)p Fj(num)p Ft(})p Fu(.)225 4276 y Fq(\017)60 b Fu(The)27 b Fm(posix)g Ft($\(\))g Fu(form)g(of)h(command)g(substitution)f(is)h (implemen)m(ted)g(\(see)h(Section)f(3.5.4)i([Com-)330 -4386 y(mand)38 b(Substitution],)k(page)e(29\),)j(and)38 +4386 y(mand)38 b(Substitution],)k(page)e(30\),)j(and)38 b(preferred)g(to)i(the)g(Bourne)f(shell's)h Ft(``)e Fu(\(whic)m(h)i(is) f(also)330 4495 y(implemen)m(ted)31 b(for)f(bac)m(kw)m(ards)h (compatibilit)m(y\).)225 4631 y Fq(\017)60 b Fu(Bash)31 b(has)f(pro)s(cess)g(substitution)g(\(see)h(Section)g(3.5.6)h([Pro)s -(cess)f(Substitution],)f(page)h(30\).)225 4766 y Fq(\017)60 +(cess)f(Substitution],)f(page)h(31\).)225 4766 y Fq(\017)60 b Fu(Bash)55 b(automatically)j(assigns)e(v)-5 b(ariables)55 b(that)h(pro)m(vide)f(information)h(ab)s(out)f(the)g(curren)m(t)330 4876 y(user)40 b(\()p Ft(UID)p Fu(,)i Ft(EUID)p Fu(,)g(and)e @@ -18800,17 +19273,17 @@ Fu(,)h Ft(OSTYPE)p Fu(,)h Ft(MACHTYPE)p Fu(,)f(and)330 4985 y Ft(HOSTNAME)p Fu(\),)55 b(and)c(the)g(instance)h(of)g(Bash)f (that)h(is)f(running)f(\()p Ft(BASH)p Fu(,)56 b Ft(BASH_VERSION)p Fu(,)e(and)330 5095 y Ft(BASH_VERSINFO)p Fu(\).)37 b(See)31 -b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 b(page)e(71,)g(for)f +b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 b(page)e(73,)g(for)f (details.)225 5230 y Fq(\017)60 b Fu(The)44 b Ft(IFS)f Fu(v)-5 b(ariable)45 b(is)f(used)f(to)i(split)f(only)g(the)g(results)g (of)h(expansion,)i(not)d(all)h(w)m(ords)f(\(see)330 5340 -y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f(30\).)41 +y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f(31\).)41 b(This)28 b(closes)h(a)g(longstanding)g(shell)f(securit)m(y)h(hole.)p eop end -%%Page: 152 158 -TeXDict begin 152 157 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 158 164 +TeXDict begin 158 163 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(152)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(158)225 299 y Fq(\017)60 b Fu(The)36 b(\014lename)h(expansion)f(brac)m(k)m(et)i(expression)f(co) s(de)f(uses)g(`)p Ft(!)p Fu(')h(and)f(`)p Ft(^)p Fu(')h(to)g(negate)h (the)f(set)g(of)330 408 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the)f @@ -18820,11 +19293,11 @@ Ft(!)p Fu('.)225 536 y Fq(\017)60 b Fu(Bash)38 b(implemen)m(ts)g(the)g (erators,)i(including)d Fr(c)m(har-)330 646 y(acter)i(classes)p Fu(,)j Fr(equiv)-5 b(alence)39 b(classes)p Fu(,)j(and)37 b Fr(collating)k(sym)m(b)s(ols)g Fu(\(see)e(Section)g(3.5.8)h -([Filename)330 756 y(Expansion],)30 b(page)h(30\).)225 +([Filename)330 756 y(Expansion],)30 b(page)h(32\).)225 883 y Fq(\017)60 b Fu(Bash)35 b(implemen)m(ts)g(extended)g(pattern)g (matc)m(hing)h(features)f(when)f(the)h Ft(extglob)d Fu(shell)j(option) 330 993 y(is)30 b(enabled)h(\(see)g(Section)g(3.5.8.1)i([P)m(attern)f -(Matc)m(hing],)g(page)f(31\).)225 1121 y Fq(\017)60 b +(Matc)m(hing],)g(page)f(33\).)225 1121 y Fq(\017)60 b Fu(It)22 b(is)g(p)s(ossible)g(to)h(ha)m(v)m(e)g(a)f(v)-5 b(ariable)23 b(and)f(a)g(function)g(with)g(the)g(same)g(name;)j Ft(sh)d Fu(do)s(es)g(not)g(separate)330 1230 y(the)31 @@ -18833,24 +19306,24 @@ Fu(Bash)30 b(functions)e(are)i(p)s(ermitted)f(to)h(ha)m(v)m(e)h(lo)s (cal)g(v)-5 b(ariables)30 b(using)f(the)g Ft(local)f Fu(builtin,)i(and)e(th)m(us)330 1468 y(useful)i(recursiv)m(e)g (functions)g(ma)m(y)h(b)s(e)f(written)g(\(see)i(Section)f(4.2)g([Bash)g -(Builtins],)g(page)h(49\).)225 1596 y Fq(\017)60 b Fu(V)-8 +(Builtins],)g(page)h(50\).)225 1596 y Fq(\017)60 b Fu(V)-8 b(ariable)25 b(assignmen)m(ts)g(preceding)e(commands)h(a\013ect)h(only) f(that)g(command,)h(ev)m(en)f(builtins)g(and)330 1705 y(functions)36 b(\(see)h(Section)g(3.7.4)h([En)m(vironmen)m(t],)h(page) -e(38\).)60 b(In)35 b Ft(sh)p Fu(,)j(all)f(v)-5 b(ariable)37 +e(40\).)60 b(In)35 b Ft(sh)p Fu(,)j(all)f(v)-5 b(ariable)37 b(assignmen)m(ts)330 1815 y(preceding)30 b(commands)g(are)h(global)h (unless)d(the)i(command)f(is)h(executed)g(from)f(the)g(\014le)h (system.)225 1943 y Fq(\017)60 b Fu(Bash)44 b(p)s(erforms)e(\014lename) i(expansion)f(on)h(\014lenames)g(sp)s(eci\014ed)f(as)h(op)s(erands)e (to)j(input)e(and)330 2052 y(output)30 b(redirection)h(op)s(erators)g -(\(see)g(Section)g(3.6)h([Redirections],)g(page)f(32\).)225 +(\(see)g(Section)g(3.6)h([Redirections],)g(page)f(34\).)225 2180 y Fq(\017)60 b Fu(Bash)29 b(con)m(tains)h(the)f(`)p Ft(<>)p Fu(')f(redirection)i(op)s(erator,)f(allo)m(wing)i(a)e(\014le)g (to)g(b)s(e)f(op)s(ened)g(for)h(b)s(oth)f(read-)330 2290 y(ing)35 b(and)f(writing,)i(and)e(the)h(`)p Ft(&>)p Fu(')g(redirection) g(op)s(erator,)h(for)f(directing)g(standard)f(output)h(and)330 2399 y(standard)30 b(error)g(to)h(the)f(same)h(\014le)f(\(see)i -(Section)f(3.6)g([Redirections],)h(page)g(32\).)225 2527 +(Section)f(3.6)g([Redirections],)h(page)g(34\).)225 2527 y Fq(\017)60 b Fu(Bash)21 b(includes)f(the)h(`)p Ft(<<<)p Fu(')g(redirection)g(op)s(erator,)i(allo)m(wing)g(a)e(string)f(to)i(b)s (e)e(used)g(as)h(the)g(standard)330 2637 y(input)29 b(to)j(a)e @@ -18861,20 +19334,20 @@ Fu(')e(redirection)j(op)s(erators,)g(whic)m(h)f(mo)m(v)m(e)330 3002 y Fq(\017)60 b Fu(Bash)25 b(treats)h(a)f(n)m(um)m(b)s(er)e(of)i (\014lenames)g(sp)s(ecially)g(when)f(they)h(are)g(used)f(in)g (redirection)i(op)s(erators)330 3112 y(\(see)31 b(Section)h(3.6)f -([Redirections],)h(page)f(32\).)225 3240 y Fq(\017)60 +([Redirections],)h(page)f(34\).)225 3240 y Fq(\017)60 b Fu(Bash)33 b(can)f(op)s(en)g(net)m(w)m(ork)i(connections)f(to)h (arbitrary)e(mac)m(hines)h(and)f(services)h(with)f(the)h(redi-)330 3349 y(rection)e(op)s(erators)g(\(see)g(Section)g(3.6)h -([Redirections],)g(page)f(32\).)225 3477 y Fq(\017)60 +([Redirections],)g(page)f(34\).)225 3477 y Fq(\017)60 b Fu(The)29 b Ft(noclobber)e Fu(option)j(is)g(a)m(v)-5 b(ailable)32 b(to)e(a)m(v)m(oid)h(o)m(v)m(erwriting)g(existing)g (\014les)e(with)h(output)f(redi-)330 3587 y(rection)39 -b(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)i(page)e(60\).)66 +b(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)i(page)e(61\).)66 b(The)38 b(`)p Ft(>|)p Fu(')h(redirection)g(op)s(erator)330 3696 y(ma)m(y)31 b(b)s(e)f(used)f(to)i(o)m(v)m(erride)h Ft(noclobber)p Fu(.)225 3824 y Fq(\017)60 b Fu(The)34 b(Bash)g Ft(cd)g Fu(and)f Ft(pwd)g Fu(builtins)h(\(see)h(Section)g(4.1) -g([Bourne)g(Shell)f(Builtins],)h(page)g(42\))h(eac)m(h)330 +g([Bourne)g(Shell)f(Builtins],)h(page)g(43\))h(eac)m(h)330 3934 y(tak)m(e)c Ft(-L)e Fu(and)f Ft(-P)h Fu(options)h(to)g(switc)m(h)g (b)s(et)m(w)m(een)g(logical)i(and)c(ph)m(ysical)i(mo)s(des.)225 4061 y Fq(\017)60 b Fu(Bash)25 b(allo)m(ws)h(a)g(function)e(to)i(o)m(v) @@ -18882,28 +19355,28 @@ m(erride)g(a)g(builtin)e(with)h(the)g(same)g(name,)i(and)d(pro)m(vides) h(access)h(to)330 4171 y(that)34 b(builtin's)f(functionalit)m(y)h (within)f(the)g(function)g(via)h(the)f Ft(builtin)f Fu(and)g Ft(command)g Fu(builtins)330 4281 y(\(see)f(Section)h(4.2)f([Bash)g -(Builtins],)g(page)g(49\).)225 4408 y Fq(\017)60 b Fu(The)35 +(Builtins],)g(page)g(50\).)225 4408 y Fq(\017)60 b Fu(The)35 b Ft(command)e Fu(builtin)i(allo)m(ws)i(selectiv)m(e)h(disabling)e(of)f (functions)g(when)g(command)g(lo)s(okup)g(is)330 4518 y(p)s(erformed)29 b(\(see)i(Section)g(4.2)h([Bash)f(Builtins],)g(page)g -(49\).)225 4646 y Fq(\017)60 b Fu(Individual)23 b(builtins)g(ma)m(y)i +(50\).)225 4646 y Fq(\017)60 b Fu(Individual)23 b(builtins)g(ma)m(y)i (b)s(e)e(enabled)h(or)g(disabled)g(using)f(the)h Ft(enable)f Fu(builtin)g(\(see)i(Section)g(4.2)330 4756 y([Bash)31 -b(Builtins],)g(page)g(49\).)225 4883 y Fq(\017)60 b Fu(The)26 +b(Builtins],)g(page)g(50\).)225 4883 y Fq(\017)60 b Fu(The)26 b(Bash)h Ft(exec)e Fu(builtin)h(tak)m(es)i(additional)f(options)g(that) g(allo)m(w)h(users)d(to)j(con)m(trol)g(the)e(con)m(ten)m(ts)330 4993 y(of)35 b(the)f(en)m(vironmen)m(t)h(passed)f(to)h(the)g(executed)g (command,)h(and)d(what)i(the)f(zeroth)h(argumen)m(t)330 5103 y(to)c(the)g(command)f(is)g(to)h(b)s(e)f(\(see)h(Section)h(4.1)f -([Bourne)f(Shell)h(Builtins],)g(page)g(42\).)225 5230 +([Bourne)f(Shell)h(Builtins],)g(page)g(43\).)225 5230 y Fq(\017)60 b Fu(Shell)29 b(functions)g(ma)m(y)h(b)s(e)f(exp)s(orted)g (to)h(c)m(hildren)f(via)h(the)g(en)m(vironmen)m(t)g(using)f Ft(export)f(-f)h Fu(\(see)330 5340 y(Section)i(3.3)h([Shell)e(F)-8 b(unctions],)32 b(page)f(17\).)p eop end -%%Page: 153 159 -TeXDict begin 153 158 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 159 165 +TeXDict begin 159 164 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(153)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(159)225 299 y Fq(\017)60 b Fu(The)40 b(Bash)h Ft(export)p Fu(,)h Ft(readonly)p Fu(,)f(and)g Ft(declare)d Fu(builtins)j(can)g(tak)m(e)h(a)f Ft(-f)f Fu(option)i(to)f(act)h(on)330 408 y(shell)30 @@ -18919,15 +19392,15 @@ Fu(builtin)g(allo)m(ws)j(a)e(name)g(to)g(b)s(e)f(asso)s(ciated)j(with)d (an)h(arbitrary)f(\014lename,)330 874 y(ev)m(en)30 b(when)e(that)h (\014lename)g(cannot)h(b)s(e)e(found)g(b)m(y)h(searc)m(hing)g(the)g Ft($PATH)p Fu(,)g(using)f(`)p Ft(hash)h(-p)p Fu(')g(\(see)330 -984 y(Section)i(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(42\).)225 +984 y(Section)i(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(43\).)225 1121 y Fq(\017)60 b Fu(Bash)27 b(includes)f(a)i Ft(help)d Fu(builtin)i(for)f(quic)m(k)h(reference)h(to)f(shell)g(facilities)i -(\(see)f(Section)g(4.2)g([Bash)330 1230 y(Builtins],)j(page)g(49\).)225 +(\(see)f(Section)g(4.2)g([Bash)330 1230 y(Builtins],)j(page)g(50\).)225 1367 y Fq(\017)60 b Fu(The)42 b Ft(printf)g Fu(builtin)g(is)h(a)m(v)-5 b(ailable)45 b(to)f(displa)m(y)f(formatted)g(output)g(\(see)h(Section)g -(4.2)g([Bash)330 1477 y(Builtins],)31 b(page)g(49\).)225 +(4.2)g([Bash)330 1477 y(Builtins],)31 b(page)g(50\).)225 1614 y Fq(\017)60 b Fu(The)26 b(Bash)h Ft(read)f Fu(builtin)g(\(see)i -(Section)g(4.2)g([Bash)f(Builtins],)h(page)g(49\))g(will)f(read)g(a)g +(Section)g(4.2)g([Bash)f(Builtins],)h(page)g(50\))g(will)f(read)g(a)g (line)g(ending)330 1724 y(in)i(`)p Ft(\\)p Fu(')h(with)f(the)g Ft(-r)g Fu(option,)i(and)d(will)i(use)f(the)h Ft(REPLY)e Fu(v)-5 b(ariable)30 b(as)g(a)f(default)h(if)f(no)h(non-option)330 @@ -18950,23 +19423,23 @@ Fu(option)h(will)330 2491 y(read)30 b(un)m(til)h(a)g(particular)f(c)m b Fu(The)33 b Ft(return)e Fu(builtin)i(ma)m(y)g(b)s(e)g(used)f(to)i(ab) s(ort)f(execution)h(of)f(scripts)g(executed)h(with)f(the)g Ft(.)g Fu(or)330 2737 y Ft(source)c Fu(builtins)g(\(see)j(Section)f -(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(42\).)225 +(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(43\).)225 2874 y Fq(\017)60 b Fu(Bash)43 b(includes)g(the)g Ft(shopt)f Fu(builtin,)k(for)d(\014ner)f(con)m(trol)j(of)e(shell)h(optional)g (capabilities)h(\(see)330 2984 y(Section)c(4.3.2)g([The)f(Shopt)f -(Builtin],)k(page)d(64\),)k(and)39 b(allo)m(ws)i(these)f(options)h(to)f +(Builtin],)k(page)d(65\),)k(and)39 b(allo)m(ws)i(these)f(options)h(to)f (b)s(e)f(set)i(and)330 3093 y(unset)30 b(at)h(shell)g(in)m(v)m(o)s (cation)h(\(see)f(Section)h(6.1)f([In)m(v)m(oking)g(Bash],)g(page)h -(82\).)225 3230 y Fq(\017)60 b Fu(Bash)45 b(has)f(m)m(uc)m(h)g(more)h +(85\).)225 3230 y Fq(\017)60 b Fu(Bash)45 b(has)f(m)m(uc)m(h)g(more)h (optional)h(b)s(eha)m(vior)e(con)m(trollable)j(with)e(the)f Ft(set)g Fu(builtin)g(\(see)h(Sec-)330 3340 y(tion)31 -b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(60\).)225 3477 +b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(61\).)225 3477 y Fq(\017)60 b Fu(The)31 b(`)p Ft(-x)p Fu(')g(\()p Ft(xtrace)p Fu(\))g(option)h(displa)m(ys)f(commands)h(other)f(than)h(simple)f (commands)g(when)g(p)s(er-)330 3587 y(forming)f(an)g(execution)i(trace) -f(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(60\).)225 +f(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(61\).)225 3724 y Fq(\017)60 b Fu(The)28 b Ft(test)g Fu(builtin)h(\(see)h(Section) -f(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(42\))g(is)f(sligh)m(tly)h +f(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(43\))g(is)f(sligh)m(tly)h (di\013eren)m(t,)330 3833 y(as)23 b(it)g(implemen)m(ts)f(the)h Fm(posix)f Fu(algorithm,)j(whic)m(h)d(sp)s(eci\014es)g(the)h(b)s(eha)m (vior)f(based)g(on)h(the)f(n)m(um)m(b)s(er)330 3943 y(of)31 @@ -18977,7 +19450,7 @@ b(\(a)f(shell)f(function)h(or)f(a)h(script)f(executed)h(with)f(the)h Ft(.)f Fu(or)g Ft(source)f Fu(builtins\).)39 b(This)26 b(supp)s(orts)330 4299 y(the)31 b(bash)e(debugger.)225 4436 y Fq(\017)60 b Fu(The)42 b Ft(trap)f Fu(builtin)h(\(see)i(Section) -f(4.1)h([Bourne)e(Shell)g(Builtins],)47 b(page)c(42\))h(allo)m(ws)g(a)e +f(4.1)h([Bourne)e(Shell)g(Builtins],)47 b(page)c(43\))h(allo)m(ws)g(a)e Ft(DEBUG)330 4545 y Fu(pseudo-signal)c(sp)s(eci\014cation,)i(similar)e (to)g Ft(EXIT)p Fu(.)62 b(Commands)36 b(sp)s(eci\014ed)h(with)g(a)h Ft(DEBUG)e Fu(trap)330 4655 y(are)k(executed)g(b)s(efore)f(ev)m(ery)h @@ -18993,20 +19466,20 @@ Ft(functrace)d Fu(option)j(has)f(b)s(een)g(enabled)g(using)330 Ft(extdebug)f Fu(shell)i(option)g(has)f(additional)h(e\013ects)h(on)f (the)g Ft(DEBUG)e Fu(trap.)330 5230 y(The)21 b Ft(trap)e Fu(builtin)i(\(see)h(Section)g(4.1)g([Bourne)f(Shell)g(Builtins],)j -(page)e(42\))g(allo)m(ws)g(an)f Ft(ERR)f Fu(pseudo-)330 +(page)e(43\))g(allo)m(ws)g(an)f Ft(ERR)f Fu(pseudo-)330 5340 y(signal)30 b(sp)s(eci\014cation,)h(similar)f(to)g Ft(EXIT)f Fu(and)g Ft(DEBUG)p Fu(.)39 b(Commands)28 b(sp)s(eci\014ed)h (with)g(an)g Ft(ERR)g Fu(trap)p eop end -%%Page: 154 160 -TeXDict begin 154 159 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 160 166 +TeXDict begin 160 165 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(154)330 299 y(are)40 b(executed)g(after)g +b(The)f(Bourne)g(Shell)1258 b(160)330 299 y(are)40 b(executed)g(after)g (a)f(simple)h(command)f(fails,)j(with)d(a)h(few)f(exceptions.)68 b(The)39 b Ft(ERR)g Fu(trap)g(is)330 408 y(not)g(inherited)f(b)m(y)h (shell)g(functions)f(unless)g(the)h Ft(-o)29 b(errtrace)37 b Fu(option)i(to)g(the)g Ft(set)f Fu(builtin)g(is)330 518 y(enabled.)330 650 y(The)g Ft(trap)g Fu(builtin)h(\(see)g(Section)h -(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(42\))g(allo)m(ws)g(a)g +(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(43\))g(allo)m(ws)g(a)g Ft(RETURN)330 759 y Fu(pseudo-signal)35 b(sp)s(eci\014cation,)j (similar)d(to)h Ft(EXIT)e Fu(and)g Ft(DEBUG)p Fu(.)54 b(Commands)34 b(sp)s(eci\014ed)g(with)h(an)330 869 y @@ -19021,30 +19494,30 @@ g(the)g Ft(shopt)f Fu(builtin.)225 1329 y Fq(\017)60 b Fu(The)30 b(Bash)g Ft(type)f Fu(builtin)h(is)g(more)g(extensiv)m(e)i (and)d(giv)m(es)j(more)e(information)h(ab)s(out)f(the)g(names)330 1439 y(it)h(\014nds)e(\(see)i(Section)g(4.2)h([Bash)e(Builtins],)i -(page)f(49\).)225 1570 y Fq(\017)60 b Fu(The)27 b(Bash)h +(page)f(50\).)225 1570 y Fq(\017)60 b Fu(The)27 b(Bash)h Ft(umask)e Fu(builtin)h(p)s(ermits)g(a)h Ft(-p)f Fu(option)h(to)h (cause)f(the)g(output)f(to)h(b)s(e)f(displa)m(y)m(ed)h(in)g(the)330 1680 y(form)i(of)h(a)g Ft(umask)f Fu(command)g(that)i(ma)m(y)f(b)s(e)f (reused)g(as)h(input)f(\(see)i(Section)f(4.1)h([Bourne)f(Shell)330 -1789 y(Builtins],)g(page)g(42\).)225 1921 y Fq(\017)60 +1789 y(Builtins],)g(page)g(43\).)225 1921 y Fq(\017)60 b Fu(Bash)34 b(implemen)m(ts)h(a)g Ft(csh)p Fu(-lik)m(e)g(directory)f (stac)m(k,)j(and)d(pro)m(vides)g(the)g Ft(pushd)p Fu(,)g Ft(popd)p Fu(,)g(and)g Ft(dirs)330 2030 y Fu(builtins)g(to)i (manipulate)f(it)h(\(see)f(Section)h(6.8)g([The)f(Directory)h(Stac)m -(k],)i(page)d(93\).)56 b(Bash)35 b(also)330 2140 y(mak)m(es)c(the)g +(k],)i(page)d(96\).)56 b(Bash)35 b(also)330 2140 y(mak)m(es)c(the)g (directory)g(stac)m(k)g(visible)g(as)g(the)f(v)-5 b(alue)31 b(of)g(the)f Ft(DIRSTACK)f Fu(shell)h(v)-5 b(ariable.)225 2272 y Fq(\017)60 b Fu(Bash)28 b(in)m(terprets)h(sp)s(ecial)g(bac)m (kslash-escap)s(ed)g(c)m(haracters)g(in)f(the)h(prompt)e(strings)h (when)f(in)m(ter-)330 2381 y(activ)m(e)33 b(\(see)e(Section)g(6.9)h -([Con)m(trolling)f(the)g(Prompt],)f(page)h(94\).)225 +([Con)m(trolling)f(the)g(Prompt],)f(page)h(97\).)225 2513 y Fq(\017)60 b Fu(The)46 b(Bash)h(restricted)g(mo)s(de)f(is)h (more)f(useful)g(\(see)h(Section)h(6.10)g([The)e(Restricted)i(Shell],) -330 2622 y(page)31 b(95\);)h(the)f(SVR4.2)g(shell)f(restricted)h(mo)s +330 2622 y(page)31 b(99\);)h(the)f(SVR4.2)g(shell)f(restricted)h(mo)s (de)f(is)h(to)s(o)g(limited.)225 2754 y Fq(\017)60 b Fu(The)30 b Ft(disown)f Fu(builtin)h(can)h(remo)m(v)m(e)h(a)f(job)f (from)g(the)h(in)m(ternal)g(shell)g(job)f(table)i(\(see)f(Section)h -(7.2)330 2863 y([Job)e(Con)m(trol)h(Builtins],)g(page)g(101\))g(or)g +(7.2)330 2863 y([Job)e(Con)m(trol)h(Builtins],)g(page)g(104\))g(or)g (suppress)d(the)i(sending)g(of)g Ft(SIGHUP)e Fu(to)j(a)g(job)f(when)f (the)330 2973 y(shell)i(exits)g(as)f(the)h(result)f(of)h(a)f Ft(SIGHUP)p Fu(.)225 3104 y Fq(\017)60 b Fu(Bash)31 b(includes)f(a)g(n) @@ -19061,7 +19534,7 @@ Fq(\017)60 b Fu(The)30 b(SVR4.2)h Ft(sh)f Fu(uses)g(a)g Ft(TIMEOUT)f Fu(v)-5 b(ariable)31 b(lik)m(e)h(Bash)e(uses)g Ft(TMOUT)p Fu(.)150 3894 y(More)h(features)g(unique)e(to)i(Bash)g(ma)m (y)g(b)s(e)f(found)f(in)h(Chapter)f(6)i([Bash)g(F)-8 -b(eatures],)32 b(page)f(82.)150 4128 y Fs(B.1)67 b(Implemen)l(tation)48 +b(eatures],)32 b(page)f(85.)150 4128 y Fs(B.1)67 b(Implemen)l(tation)48 b(Di\013erences)e(F)-11 b(rom)44 b(The)h(SVR4.2)g(Shell)150 4288 y Fu(Since)33 b(Bash)h(is)f(a)g(completely)i(new)e(implemen)m (tation,)j(it)e(do)s(es)e(not)i(su\013er)e(from)h(man)m(y)g(of)h(the)f @@ -19082,10 +19555,10 @@ Fu(.)57 b(If)35 b(the)i(shell)f(is)h(started)g(from)e(a)i(pro)s(cess)f (with)g Ft(SIGSEGV)e Fu(blo)s(c)m(k)m(ed)k(\(e.g.,)h(b)m(y)d(using)330 5340 y(the)31 b Ft(system\(\))d Fu(C)i(library)g(function)g(call\),)i (it)f(misb)s(eha)m(v)m(es)g(badly)-8 b(.)p eop end -%%Page: 155 161 -TeXDict begin 155 160 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 161 167 +TeXDict begin 161 166 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(155)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(161)225 299 y Fq(\017)60 b Fu(In)30 b(a)i(questionable)g(attempt)g(at)g(securit)m(y)-8 b(,)33 b(the)e(SVR4.2)h(shell,)g(when)e(in)m(v)m(ok)m(ed)j(without)e (the)h Ft(-p)330 408 y Fu(option,)39 b(will)d(alter)i(its)e(real)h(and) @@ -19116,8 +19589,8 @@ Fm(posix)330 1738 y Fu(standard.)225 1873 y Fq(\017)60 b Fu(The)30 b(SVR4.2)h(shell)g(b)s(eha)m(v)m(es)f(di\013eren)m(tly)h (when)f(in)m(v)m(ok)m(ed)i(as)e Ft(jsh)g Fu(\(it)h(turns)e(on)h(job)g (con)m(trol\).)p eop end -%%Page: 156 162 -TeXDict begin 156 161 bop 3614 -116 a Fu(156)150 299 +%%Page: 162 168 +TeXDict begin 162 167 bop 3614 -116 a Fu(162)150 299 y Fp(App)t(endix)52 b(C)81 b(GNU)54 b(F)-13 b(ree)53 b(Do)t(cumen)l(tation)e(License)1359 502 y Fu(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 635 y(Cop)m(yrigh)m(t)842 @@ -19198,10 +19671,10 @@ b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g 5340 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27 b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s (cumen)m(t)g(is)g(released)p eop end -%%Page: 157 163 -TeXDict begin 157 162 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 163 169 +TeXDict begin 163 168 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(157)330 299 y(under)26 b(this)i(License.)40 b(If)27 +b(163)330 299 y(under)26 b(this)i(License.)40 b(If)27 b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h (de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 408 y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5 @@ -19292,10 +19765,10 @@ b(Disclaimers)f(are)g(considered)e(to)330 4970 y(b)s(e)k(included)g(b)m b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330 5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199 5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end -%%Page: 158 164 -TeXDict begin 158 163 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 164 170 +TeXDict begin 164 169 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(158)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h +b(164)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h (the)g(Do)s(cumen)m(t)h(in)f(an)m(y)g(medium,)h(either)g(commercially)h (or)330 408 y(noncommercially)-8 b(,)48 b(pro)m(vided)42 b(that)h(this)f(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j @@ -19385,10 +19858,10 @@ b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e 5340 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m (ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8 b(,)p eop end -%%Page: 159 165 -TeXDict begin 159 164 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 165 171 +TeXDict begin 165 170 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(159)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g +b(165)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g (the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same) h(title)h(as)510 408 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original) i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360 @@ -19467,10 +19940,10 @@ b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g (designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e(in)m(v)-5 b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)p eop end -%%Page: 160 166 -TeXDict begin 160 165 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 166 172 +TeXDict begin 166 171 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(160)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 +b(166)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8 b(ersion's)36 b(license)g(notice.)57 b(These)330 408 y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g @@ -19555,10 +20028,10 @@ b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h 5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g (other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330 5340 y(that)d(do)s(cumen)m(t.)p eop end -%%Page: 161 167 -TeXDict begin 161 166 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 167 173 +TeXDict begin 167 172 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(161)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h +b(167)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h (W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f (its)g(deriv)-5 b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep) s(enden)m(t)330 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h @@ -19643,10 +20116,10 @@ b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g (reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f (the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f (an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end -%%Page: 162 168 -TeXDict begin 162 167 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 168 174 +TeXDict begin 168 173 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(162)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE) +b(168)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE) 330 433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8 b(oundation)43 b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g (the)g(GNU)g(F)-8 b(ree)330 543 y(Do)s(cumen)m(tation)34 @@ -19710,10 +20183,10 @@ f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g (time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is) 330 4005 y(eligible)h(for)e(relicensing.)p eop end -%%Page: 163 169 -TeXDict begin 163 168 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 169 175 +TeXDict begin 169 174 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(163)150 299 y Fs(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f +b(169)150 299 y Fs(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f (for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Fu(T)-8 b(o)35 b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e) i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150 @@ -19748,199 +20221,199 @@ y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s (ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)p eop end -%%Page: 164 170 -TeXDict begin 164 169 bop 3614 -116 a Fu(164)150 299 +%%Page: 170 176 +TeXDict begin 170 175 bop 3614 -116 a Fu(170)150 299 y Fp(App)t(endix)52 b(D)81 b(Indexes)150 639 y Fs(D.1)68 b(Index)45 b(of)g(Shell)g(Builtin)g(Commands)146 806 y(.)150 923 y Fe(.)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)33 b Fb(42)146 1163 y Fs(:)150 1280 y Fe(:)19 b Fc(:)13 +(:)33 b Fb(43)146 1163 y Fs(:)150 1280 y Fe(:)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(42)146 +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(43)146 1523 y Fs([)150 1640 y Fe([)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)33 b Fb(46)146 1881 y Fs(A)150 1998 y Fe(alias)9 +(:)g(:)g(:)33 b Fb(47)146 1881 y Fs(A)150 1998 y Fe(alias)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(49)146 2239 y +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(50)146 2239 y Fs(B)150 2356 y Fe(bg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)29 -b Fb(101)150 2443 y Fe(bind)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(104)150 2443 y Fe(bind)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(49)150 2531 y Fe(break)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(50)150 2531 y Fe(break)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 -b Fb(43)150 2618 y Fe(builtin)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(44)150 2618 y Fe(builtin)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 -b Fb(50)146 2859 y Fs(C)150 2976 y Fe(caller)6 b Fc(:)15 +b Fb(52)146 2859 y Fs(C)150 2976 y Fe(caller)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)20 b Fb(51)150 3063 y Fe(cd)c Fc(:)e(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)20 b Fb(52)150 3063 y Fe(cd)c Fc(:)e(:)f(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)31 b Fb(43)150 3151 y Fe(command)22 +g(:)g(:)g(:)g(:)g(:)31 b Fb(44)150 3151 y Fe(command)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)35 b Fb(51)150 3238 y Fe(compgen)18 +h(:)f(:)g(:)g(:)g(:)35 b Fb(52)150 3238 y Fe(compgen)18 b Fc(:)d(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)33 b Fb(131)150 3326 y Fe(complete)16 +(:)h(:)f(:)g(:)33 b Fb(134)150 3326 y Fe(complete)16 b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)31 b Fb(131)150 3413 y Fe(compopt)18 b Fc(:)d(:)e(:)g(:)h(:) +(:)g(:)g(:)31 b Fb(134)150 3413 y Fe(compopt)18 b Fc(:)d(:)e(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 -b Fb(134)150 3501 y Fe(continue)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(137)150 3501 y Fe(continue)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b -Fb(43)146 3741 y Fs(D)150 3858 y Fe(declare)22 b Fc(:)13 +Fb(44)146 3741 y Fs(D)150 3858 y Fe(declare)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)35 b Fb(51)150 3946 y Fe(dirs)11 b Fc(:)j(:)f(:)g(:)h(:)f +g(:)g(:)g(:)35 b Fb(52)150 3946 y Fe(dirs)11 b Fc(:)j(:)f(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)25 b Fb(93)150 4033 y Fe(disown)d Fc(:)13 +(:)g(:)h(:)25 b Fb(96)150 4033 y Fe(disown)d Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)36 b Fb(102)146 4274 y Fs(E)150 4391 y Fe(echo)11 +g(:)g(:)g(:)36 b Fb(105)146 4274 y Fs(E)150 4391 y Fe(echo)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(53)150 4478 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(54)150 4478 y Fe(enable)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(53)150 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(55)150 4566 y Fe(eval)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(43)150 4653 y Fe(exec)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(44)150 4653 y Fe(exec)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(44)150 4741 y Fe(exit)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(45)150 4741 y Fe(exit)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(44)150 4828 y Fe(export)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g +b Fb(45)150 4828 y Fe(export)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 -b Fb(44)146 5080 y Fs(F)150 5197 y Fe(fc)14 b Fc(:)g(:)f(:)g(:)g(:)g(:) +b Fb(45)146 5080 y Fs(F)150 5197 y Fe(fc)14 b Fc(:)g(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)29 b Fb(137)150 5284 y Fe(fg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)29 b Fb(142)150 5284 y Fe(fg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)29 b Fb(101)2021 871 y Fs(G)2025 988 y Fe(getopts)22 +g(:)g(:)g(:)29 b Fb(104)2021 871 y Fs(G)2025 988 y Fe(getopts)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)35 b Fb(44)2021 1250 y Fs(H)2025 +g(:)g(:)h(:)f(:)g(:)35 b Fb(45)2021 1250 y Fs(H)2025 1369 y Fe(hash)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 -b Fb(45)2025 1457 y Fe(help)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g +b Fb(46)2025 1457 y Fe(help)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 -b Fb(54)2025 1544 y Fe(history)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(55)2025 1544 y Fe(history)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b -Fb(138)2021 1806 y Fs(J)2025 1924 y Fe(jobs)9 b Fc(:)14 +Fb(142)2021 1806 y Fs(J)2025 1924 y Fe(jobs)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(101)2021 2186 y Fs(K)2025 +g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(104)2021 2186 y Fs(K)2025 2303 y Fe(kill)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 -b Fb(102)2021 2554 y Fs(L)2025 2672 y Fe(let)14 b Fc(:)f(:)g(:)h(:)f(:) +b Fb(105)2021 2554 y Fs(L)2025 2672 y Fe(let)14 b Fc(:)f(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)28 b Fb(54)2025 2760 y Fe(local)9 b Fc(:)14 +g(:)g(:)h(:)f(:)28 b Fb(55)2025 2760 y Fe(local)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(54)2025 2848 y Fe(logout)6 +g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(55)2025 2848 y Fe(logout)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(55)2021 3110 y Fs(M)2025 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(56)2021 3110 y Fs(M)2025 3227 y Fe(mapfile)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(55)2021 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(56)2021 3489 y Fs(P)2025 3608 y Fe(popd)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 -b Fb(93)2025 3696 y Fe(printf)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(96)2025 3696 y Fe(printf)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(55)2025 3784 y Fe(pushd)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(56)2025 3784 y Fe(pushd)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 -b Fb(93)2025 3871 y Fe(pwd)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +b Fb(97)2025 3871 y Fe(pwd)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 -b Fb(45)2021 4133 y Fs(R)2025 4251 y Fe(read)11 b Fc(:)j(:)f(:)g(:)g(:) +b Fb(46)2021 4133 y Fs(R)2025 4251 y Fe(read)11 b Fc(:)j(:)f(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)26 b Fb(56)2025 4339 y Fe(readarray)15 b +g(:)g(:)g(:)26 b Fb(57)2025 4339 y Fe(readarray)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)30 b Fb(57)2025 4427 y Fe(readonly)18 b Fc(:)d(:)e(:)g(:)g(:)g +g(:)g(:)30 b Fb(59)2025 4427 y Fe(readonly)18 b Fc(:)d(:)e(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 -b Fb(45)2025 4515 y Fe(return)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(46)2025 4515 y Fe(return)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(46)2021 4765 y Fs(S)2025 4884 y Fe(set)14 b Fc(:)f(:)g(:)h(:)f(:)g +b Fb(47)2021 4765 y Fs(S)2025 4884 y Fe(set)14 b Fc(:)f(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)28 b Fb(60)2025 4972 y Fe(shift)9 b Fc(:)14 +(:)g(:)h(:)f(:)28 b Fb(61)2025 4972 y Fe(shift)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(46)2025 5060 y Fe(shopt)9 +g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(47)2025 5060 y Fe(shopt)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(64)2025 5148 +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(65)2025 5148 y Fe(source)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(58)2025 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(59)2025 5235 y Fe(suspend)d Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(102)p eop end -%%Page: 165 171 -TeXDict begin 165 170 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(165)146 294 y Fs(T)150 410 y Fe(test)11 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(106)p eop end +%%Page: 171 177 +TeXDict begin 171 176 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(171)146 294 y Fs(T)150 410 y Fe(test)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(46)150 497 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(47)150 497 y Fe(times)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(48)150 +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(49)150 584 y Fe(trap)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(48)150 671 y Fe(type)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(49)150 671 y Fe(type)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(58)150 758 y Fe(typeset)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +b Fb(59)150 758 y Fe(typeset)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 -b Fb(58)146 1003 y Fs(U)150 1119 y Fe(ulimit)6 b Fc(:)15 +b Fb(59)146 1003 y Fs(U)150 1119 y Fe(ulimit)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)20 b Fb(58)150 1206 y Fe(umask)9 +g(:)g(:)g(:)h(:)f(:)20 b Fb(59)150 1206 y Fe(umask)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(48)150 1293 y +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(50)150 1293 y Fe(unalias)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(60)150 1380 y +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(61)150 1380 y Fe(unset)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(49)2021 +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(50)2021 294 y Fs(W)2025 433 y Fe(wait)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 -b Fb(102)150 2133 y Fs(D.2)68 b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h +b Fb(105)150 2133 y Fs(D.2)68 b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h (W)-11 b(ords)146 2704 y(!)150 2820 y Fe(!)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) @@ -19955,11 +20428,11 @@ g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(12)146 3770 y Fa({)150 3886 y Fe({)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)33 b Fb(14)146 4125 y Fa(})150 4241 y Fe(})19 +(:)g(:)g(:)33 b Fb(15)146 4125 y Fa(})150 4241 y Fe(})19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b -Fb(14)146 4475 y Fs(C)150 4591 y Fe(case)11 b Fc(:)j(:)f(:)g(:)h(:)f(:) +Fb(15)146 4475 y Fs(C)150 4591 y Fe(case)11 b Fc(:)j(:)f(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)25 b Fb(11)146 4825 y Fs(D)150 4941 y Fe(do)16 @@ -19972,16 +20445,16 @@ g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(10)146 5261 y Fs(E)150 5377 y Fe(elif)11 b Fc(:)j(:)f(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)25 b Fb(10)150 5465 y Fe(else)11 b Fc(:)j(:)f(:)g(:)h(:)f(:) +(:)g(:)h(:)25 b Fb(11)150 5465 y Fe(else)11 b Fc(:)j(:)f(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)25 b Fb(10)150 5552 y Fe(esac)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g +g(:)h(:)25 b Fb(11)150 5552 y Fe(esac)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)25 b Fb(11)2021 2703 y Fs(F)2025 2836 y Fe(fi)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(10)2025 +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(11)2025 2928 y Fe(for)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 @@ -19991,7 +20464,7 @@ g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(17)2021 3359 y Fs(I)2025 3491 y Fe(if)16 b Fc(:)e(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)31 b Fb(10)2025 3578 y Fe(in)16 b Fc(:)e(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)31 b Fb(11)2025 3578 y Fe(in)16 b Fc(:)e(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)31 b Fb(11)2021 3921 y Fs(S)2025 @@ -20001,7 +20474,7 @@ g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(12)2021 4392 y Fs(T)2025 4524 y Fe(then)11 b Fc(:)j(:)f(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)26 b Fb(10)2025 4611 y Fe(time)13 b Fc(:)h(:)f(:)g(:)g(:)h +(:)g(:)g(:)26 b Fb(11)2025 4611 y Fe(time)13 b Fc(:)h(:)f(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)28 b Fb(8)2021 4954 y Fs(U)2025 5081 y @@ -20012,452 +20485,462 @@ h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(10)2021 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(10)p eop end -%%Page: 166 172 -TeXDict begin 166 171 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(166)150 299 y Fs(D.3)68 b(P)l(arameter)47 +%%Page: 172 178 +TeXDict begin 172 177 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(172)150 299 y Fs(D.3)68 b(P)l(arameter)47 b(and)d(V)-11 b(ariable)46 b(Index)146 955 y(!)150 1073 y Fe(!)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 -b Fb(20)146 1327 y Fs(#)150 1445 y Fe(#)19 b Fc(:)13 +b Fb(22)146 1327 y Fs(#)150 1445 y Fe(#)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(20)146 +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(21)146 1701 y Fs($)150 1820 y Fe($)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)33 b Fb(20)150 1909 y Fe($!)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)33 b Fb(22)150 1909 y Fe($!)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)31 b Fb(20)150 1997 y Fe($#)16 b Fc(:)e(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)31 b Fb(22)150 1997 y Fe($#)16 b Fc(:)e(:)f(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)31 b Fb(20)150 2085 y Fe($$)16 b Fc(:)e(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)31 b Fb(21)150 2085 y Fe($$)16 b Fc(:)e(:)f(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(20)150 2173 y Fe($*)16 +(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(22)150 2173 y Fe($*)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(20)150 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(21)150 2261 y Fe($-)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 -b Fb(20)150 2350 y Fe($?)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +b Fb(22)150 2350 y Fe($?)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -31 b Fb(20)150 2438 y Fe($@)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g +31 b Fb(21)150 2438 y Fe($@)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)31 b Fb(20)150 2526 y Fe($_)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f +(:)31 b Fb(21)150 2526 y Fe($_)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)31 b Fb(20)150 2613 y Fe($0)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h +(:)g(:)31 b Fb(22)150 2613 y Fe($0)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)31 b Fb(20)146 2876 y Fs(*)150 2994 y Fe(*)19 +(:)g(:)g(:)31 b Fb(22)146 2876 y Fs(*)150 2994 y Fe(*)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b -Fb(20)146 3248 y Fs({)150 3366 y Fe(-)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:) +Fb(21)146 3248 y Fs({)150 3366 y Fe(-)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)33 b Fb(20)146 3620 y Fs(?)150 3738 +g(:)h(:)f(:)g(:)g(:)33 b Fb(22)146 3620 y Fs(?)150 3738 y Fe(?)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 -b Fb(20)146 3992 y Fs(@)150 4110 y Fe(@)19 b Fc(:)13 +b Fb(21)146 3992 y Fs(@)150 4110 y Fe(@)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(20)p +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(21)p 156 4364 41 6 v 150 4482 a Fe(_)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)33 b Fb(20)146 4736 y Fs(0)150 4854 y +(:)f(:)g(:)g(:)33 b Fb(22)146 4736 y Fs(0)150 4854 y Fe(0)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 -b Fb(20)146 5108 y Fs(A)150 5226 y Fe(auto_resume)8 b +b Fb(22)146 5108 y Fs(A)150 5226 y Fe(auto_resume)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -23 b Fb(103)2021 954 y Fs(B)2025 1076 y Fe(BASH)11 b +23 b Fb(106)2021 954 y Fs(B)2025 1074 y Fe(BASH)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(71)2025 1165 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(73)2025 1163 y Fe(BASH_ALIASES)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)22 b Fb(72)2025 1254 y Fe(BASH_ARGC)15 +g(:)g(:)g(:)g(:)h(:)22 b Fb(74)2025 1251 y Fe(BASH_ARGC)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)30 b Fb(72)2025 1343 y Fe(BASH_ARGV)15 b Fc(:)g(:)f(:)f(:)g +(:)g(:)g(:)30 b Fb(74)2025 1340 y Fe(BASH_ARGV)15 b Fc(:)g(:)f(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 -b Fb(72)2025 1432 y Fe(BASH_CMDS)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(72)2025 -1521 y Fe(BASH_COMMAND)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(72)2025 1611 y Fe(BASH_COMPAT)10 +b Fb(74)2025 1429 y Fe(BASH_ARGV0)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(74)2025 +1517 y Fe(BASH_CMDS)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(75)2025 1606 +y Fe(BASH_COMMAND)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)22 b Fb(75)2025 1695 y Fe(BASH_COMPAT)10 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)25 b Fb(73)2025 1700 y Fe(BASH_ENV)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g +g(:)25 b Fb(75)2025 1783 y Fe(BASH_ENV)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 -b Fb(73)2025 1789 y Fe(BASH_EXECUTION_STRING)24 b Fc(:)13 +b Fb(75)2025 1872 y Fe(BASH_EXECUTION_STRING)24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)34 b Fb(73)2025 1878 y Fe(BASH_LINENO)10 +(:)g(:)g(:)g(:)g(:)34 b Fb(75)2025 1960 y Fe(BASH_LINENO)10 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)25 b Fb(73)2025 1967 y Fe(BASH_LOADABLES_PATH)7 b +g(:)25 b Fb(75)2025 2049 y Fe(BASH_LOADABLES_PATH)7 b Fc(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(73)2025 -2056 y Fe(BASH_REMATCH)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(75)2025 +2138 y Fe(BASH_REMATCH)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(73)2025 2145 y Fe(BASH_SOURCE)10 +(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(75)2025 2226 y Fe(BASH_SOURCE)10 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)25 b Fb(73)2025 2235 y Fe(BASH_SUBSHELL)g Fc(:)13 +g(:)25 b Fb(76)2025 2315 y Fe(BASH_SUBSHELL)g Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 -b Fb(73)2025 2324 y Fe(BASH_VERSINFO)25 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g +b Fb(76)2025 2403 y Fe(BASH_VERSINFO)25 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(73)2025 2413 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(76)2025 2492 y Fe(BASH_VERSION)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)22 b Fb(74)2025 2502 y Fe(BASH_XTRACEFD)j +g(:)g(:)g(:)g(:)h(:)22 b Fb(76)2025 2581 y Fe(BASH_XTRACEFD)j Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 -b Fb(74)2025 2591 y Fe(BASHOPTS)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f +b Fb(76)2025 2669 y Fe(BASHOPTS)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b -Fb(72)2025 2680 y Fe(BASHPID)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g +Fb(74)2025 2758 y Fe(BASHPID)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 -b Fb(72)2025 2769 y Fe(bell-style)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f +b Fb(74)2025 2847 y Fe(bell-style)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(108)2025 -2858 y Fe(bind-tty-special-chars)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(111)2025 +2935 y Fe(bind-tty-special-chars)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 -b Fb(108)2025 2946 y Fe(blink-matching-paren)24 b Fc(:)13 +b Fb(111)2025 3022 y Fe(blink-matching-paren)24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)34 b Fb(108)2021 3231 y Fs(C)2025 -3353 y Fe(CDPATH)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)g(:)g(:)g(:)h(:)34 b Fb(111)2021 3297 y Fs(C)2025 +3417 y Fe(CDPATH)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b -Fb(71)2025 3442 y Fe(CHILD_MAX)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g +Fb(73)2025 3506 y Fe(CHILD_MAX)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(74)2025 -3531 y Fe(colored-completion-prefix)7 b Fc(:)18 b(:)13 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(76)2025 +3595 y Fe(colored-completion-prefix)7 b Fc(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 -b Fb(108)2025 3621 y Fe(colored-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +b Fb(111)2025 3683 y Fe(colored-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(108)2025 3710 y Fe(COLUMNS)22 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(111)2025 3772 y Fe(COLUMNS)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)35 b Fb(74)2025 3799 y Fe(comment-begin)23 +g(:)g(:)h(:)f(:)g(:)35 b Fb(76)2025 3860 y Fe(comment-begin)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 -b Fb(108)2025 3888 y Fe(COMP_CWORD)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g +b Fb(111)2025 3949 y Fe(COMP_CWORD)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(74)2025 -3977 y Fe(COMP_KEY)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(77)2025 +4038 y Fe(COMP_KEY)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(75)2025 4066 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(77)2025 4126 y Fe(COMP_LINE)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(74)2025 4155 y Fe(COMP_POINT)13 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(77)2025 4215 y Fe(COMP_POINT)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)27 b Fb(75)2025 4244 y Fe(COMP_TYPE)15 b Fc(:)g(:)f(:)f(:)g(:)g +(:)h(:)27 b Fb(77)2025 4303 y Fe(COMP_TYPE)15 b Fc(:)g(:)f(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 -b Fb(75)2025 4334 y Fe(COMP_WORDBREAKS)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g +b Fb(77)2025 4392 y Fe(COMP_WORDBREAKS)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(75)2025 4423 y Fe(COMP_WORDS)13 +h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(77)2025 4481 y Fe(COMP_WORDS)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)27 b Fb(75)2025 4512 y Fe(completion-display-width)9 +(:)h(:)27 b Fb(77)2025 4569 y Fe(completion-display-width)9 b Fc(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)24 b Fb(108)2025 4601 y Fe(completion-ignore-case)14 +(:)h(:)f(:)g(:)24 b Fb(111)2025 4658 y Fe(completion-ignore-case)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)29 b Fb(109)2025 4690 y Fe(completion-map-case)d +(:)g(:)g(:)h(:)f(:)29 b Fb(112)2025 4747 y Fe(completion-map-case)d Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(109)2025 4779 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(112)2025 4835 y Fe(completion-prefix-display-leng)q(th)29 b Fc(:)13 -b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(109)2025 4868 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(112)2025 4924 y Fe(completion-query-items)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 -b Fb(109)2025 4958 y Fe(COMPREPLY)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g +b Fb(112)2025 5012 y Fe(COMPREPLY)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b -Fb(75)2025 5047 y Fe(convert-meta)25 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:) +Fb(77)2025 5101 y Fe(convert-meta)25 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(109)2025 5134 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(112)2025 5188 y Fe(COPROC)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(75)p +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(77)p eop end -%%Page: 167 173 -TeXDict begin 167 172 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(167)146 294 y Fs(D)150 419 y Fe(DIRSTACK)18 +%%Page: 173 179 +TeXDict begin 173 178 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(173)146 294 y Fs(D)150 416 y Fe(DIRSTACK)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)32 b Fb(75)150 506 y Fe(disable-completion)7 +(:)g(:)h(:)f(:)32 b Fb(78)150 503 y Fe(disable-completion)7 b Fc(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(109)146 -810 y Fs(E)150 935 y Fe(echo-control-characters)12 b +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(112)146 +791 y Fs(E)150 913 y Fe(echo-control-characters)12 b Fc(:)18 b(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)26 b Fb(109)150 1025 y Fe(editing-mode)f +g(:)g(:)g(:)h(:)26 b Fb(112)150 1002 y Fe(editing-mode)f Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37 -b Fb(109)150 1115 y Fe(emacs-mode-string)10 b Fc(:)17 +b Fb(112)150 1092 y Fe(emacs-mode-string)10 b Fc(:)17 b(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(109)150 1205 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(112)150 1181 y Fe(EMACS)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(75)150 -1295 y Fe(enable-bracketed-paste)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:) +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(78)150 +1270 y Fe(enable-bracketed-paste)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 -b Fb(110)150 1385 y Fe(enable-keypad)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g +b Fb(113)150 1359 y Fe(enable-keypad)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(110)150 1475 y Fe(ENV)14 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(113)150 1449 y Fe(ENV)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(76)150 -1565 y Fe(EUID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(78)150 +1538 y Fe(EPOCHREALTIME)d Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(76)150 1655 y Fe(EXECIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)g(:)37 b Fb(78)150 1627 y Fe(EPOCHSECONDS)8 +b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +22 b Fb(78)150 1716 y Fe(EUID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(78)150 1806 y Fe(EXECIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(76)150 -1742 y Fe(expand-tilde)e Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(78)150 +1893 y Fe(expand-tilde)e Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)37 b Fb(110)146 2046 y Fs(F)150 2171 +g(:)g(:)g(:)h(:)37 b Fb(113)146 2180 y Fs(F)150 2303 y Fe(FCEDIT)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(76)150 -2261 y Fe(FIGNORE)i Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(78)150 +2392 y Fe(FIGNORE)i Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(76)150 -2351 y Fe(FUNCNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(78)150 +2481 y Fe(FUNCNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(76)150 2438 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(78)150 2568 y Fe(FUNCNEST)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(76)146 2731 y -Fs(G)150 2855 y Fe(GLOBIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(79)146 2844 y +Fs(G)150 2967 y Fe(GLOBIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(76)150 -2942 y Fe(GROUPS)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(79)150 +3054 y Fe(GROUPS)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b -Fb(76)146 3235 y Fs(H)150 3360 y Fe(histchars)15 b Fc(:)h(:)d(:)g(:)g +Fb(79)146 3330 y Fs(H)150 3452 y Fe(histchars)15 b Fc(:)h(:)d(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 -b Fb(76)150 3450 y Fe(HISTCMD)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:) +b Fb(79)150 3542 y Fe(HISTCMD)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 -b Fb(77)150 3540 y Fe(HISTCONTROL)10 b Fc(:)16 b(:)d(:)g(:)g(:)h(:)f(:) +b Fb(79)150 3631 y Fe(HISTCONTROL)10 b Fc(:)16 b(:)d(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(77)150 -3630 y Fe(HISTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(79)150 +3720 y Fe(HISTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(77)150 3720 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(80)150 3809 y Fe(HISTFILESIZE)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)22 b Fb(77)150 3810 y Fe(HISTIGNORE)13 +g(:)g(:)h(:)f(:)g(:)22 b Fb(80)150 3899 y Fe(HISTIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)27 b Fb(77)150 3900 y Fe(history-preserve-point)14 +(:)g(:)27 b Fb(80)150 3988 y Fe(history-preserve-point)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)29 b Fb(110)150 3990 y Fe(history-size)c +h(:)f(:)g(:)g(:)29 b Fb(113)150 4077 y Fe(history-size)c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37 -b Fb(110)150 4080 y Fe(HISTSIZE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(113)150 4166 y Fe(HISTSIZE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b -Fb(78)150 4170 y Fe(HISTTIMEFORMAT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +Fb(80)150 4256 y Fe(HISTTIMEFORMAT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(78)150 4260 y Fe(HOME)11 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(80)150 4345 y Fe(HOME)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(71)150 4350 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(73)150 4434 y Fe(horizontal-scroll-mode)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(110)150 -4440 y Fe(HOSTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(113)150 +4523 y Fe(HOSTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(78)150 4530 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(80)150 4613 y Fe(HOSTNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(78)150 4617 y +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(80)150 4700 y Fe(HOSTTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(78)2021 294 y Fs(I)2025 -421 y Fe(IFS)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(81)2021 294 y Fs(I)2025 +420 y Fe(IFS)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 -b Fb(71)2025 512 y Fe(IGNOREEOF)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g +b Fb(73)2025 510 y Fe(IGNOREEOF)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(78)2025 -602 y Fe(input-meta)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(81)2025 +600 y Fe(input-meta)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(110)2025 693 y Fe(INPUTRC)c +h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(114)2025 691 y Fe(INPUTRC)c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)35 b Fb(78)2025 780 y Fe(isearch-terminators)26 -b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(111)2021 1088 -y Fs(K)2025 1211 y Fe(keymap)22 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 -b Fb(111)2021 1531 y Fs(L)2025 1658 y Fe(LANG)11 b Fc(:)j(:)f(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)26 b Fb(78)2025 1748 y Fe(LC_ALL)6 b Fc(:)14 -b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)21 b Fb(78)2025 1839 y Fe(LC_COLLATE)13 +g(:)g(:)h(:)f(:)g(:)35 b Fb(81)2025 781 y Fe(INSIDE_EMACS)8 +b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +22 b Fb(81)2025 868 y Fe(isearch-terminators)k Fc(:)13 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(114)2021 1167 y Fs(K)2025 +1290 y Fe(keymap)22 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(114)2021 +1601 y Fs(L)2025 1727 y Fe(LANG)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 +b Fb(81)2025 1817 y Fe(LC_ALL)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 +b Fb(81)2025 1907 y Fe(LC_COLLATE)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(81)2025 +1998 y Fe(LC_CTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(81)2025 2088 +y Fe(LC_MESSAGES)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)34 b Fb(7,)26 b(81)2025 2178 y Fe(LC_NUMERIC)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)27 b Fb(78)2025 1930 y Fe(LC_CTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g +(:)h(:)27 b Fb(81)2025 2269 y Fe(LC_TIME)22 b Fc(:)13 +b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 -b Fb(78)2025 2021 y Fe(LC_MESSAGES)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34 b Fb(7,)26 b(79)2025 -2111 y Fe(LC_NUMERIC)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(79)2025 2202 y -Fe(LC_TIME)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(79)2025 2293 -y Fe(LINENO)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(79)2025 -2380 y Fe(LINES)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 -b Fb(79)2021 2688 y Fs(M)2025 2815 y Fe(MACHTYPE)18 b -Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)33 b Fb(79)2025 2906 y Fe(MAIL)11 b Fc(:)j(:)f(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)26 b Fb(71)2025 2996 y Fe(MAILCHECK)15 b Fc(:)g(:)f(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 -b Fb(79)2025 3087 y Fe(MAILPATH)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f +h(:)f(:)g(:)35 b Fb(81)2025 2359 y Fe(LINENO)6 b Fc(:)14 +b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)21 b Fb(81)2025 2446 y Fe(LINES)9 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(81)2021 2746 +y Fs(M)2025 2872 y Fe(MACHTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b -Fb(71)2025 3178 y Fe(MAPFILE)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 -b Fb(79)2025 3269 y Fe(mark-modified-lines)26 b Fc(:)13 -b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(111)2025 3359 y Fe -(mark-symlinked-directories)27 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(111)2025 3450 -y Fe(match-hidden-files)7 b Fc(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 -b Fb(111)2025 3541 y Fe(menu-complete-display-prefix)17 -b Fc(:)h(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 -b Fb(112)2025 3628 y Fe(meta-flag)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g +Fb(81)2025 2962 y Fe(MAIL)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(110)2021 -3947 y Fs(O)2025 4074 y Fe(OLDPWD)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(79)2025 4165 y Fe(OPTARG)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(71)2025 4256 y Fe(OPTERR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(79)2025 4347 y Fe(OPTIND)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(71)2025 4437 y Fe(OSTYPE)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(79)2025 4525 y Fe(output-meta)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(112)p -eop end -%%Page: 168 174 -TeXDict begin 168 173 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(168)146 294 y Fs(P)150 410 y Fe(page-completions) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 +b Fb(73)2025 3052 y Fe(MAILCHECK)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(81)2025 +3143 y Fe(MAILPATH)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(73)2025 3233 +y Fe(MAPFILE)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(82)2025 3323 +y Fe(mark-modified-lines)26 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 +b Fb(114)2025 3414 y Fe(mark-symlinked-directories)27 +b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +36 b Fb(114)2025 3504 y Fe(match-hidden-files)7 b Fc(:)17 +b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(115)2025 3594 +y Fe(menu-complete-display-prefix)17 b Fc(:)h(:)13 b(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(115)2025 3681 y Fe(meta-flag)13 +b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)28 b Fb(114)2021 3992 y Fs(O)2025 4118 y Fe(OLDPWD)6 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4208 y Fe(OPTARG)6 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(73)2025 4299 y Fe(OPTERR)6 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4389 y Fe(OPTIND)6 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(73)2025 4480 y Fe(OSTYPE)6 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4567 y Fe(output-meta)8 +b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +23 b Fb(115)p eop end +%%Page: 174 180 +TeXDict begin 174 179 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(174)146 294 y Fs(P)150 410 y Fe(page-completions) 13 b Fc(:)j(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(112)150 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(115)150 497 y Fe(PATH)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(71)150 584 y Fe(PIPESTATUS)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(73)150 584 y Fe(PIPESTATUS)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(79)150 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(82)150 671 y Fe(POSIXLY_CORRECT)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)32 b Fb(79)150 758 y Fe(PPID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g +(:)g(:)g(:)32 b Fb(82)150 758 y Fe(PPID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)25 b Fb(79)150 846 y Fe(PROMPT_COMMAND)e Fc(:)13 +(:)h(:)25 b Fb(82)150 846 y Fe(PROMPT_COMMAND)e Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 -b Fb(79)150 933 y Fe(PROMPT_DIRTRIM)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +b Fb(82)150 933 y Fe(PROMPT_DIRTRIM)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(80)150 1020 y Fe(PS0)14 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(82)150 1020 y Fe(PS0)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(80)150 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(82)150 1107 y Fe(PS1)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 -b Fb(71)150 1194 y Fe(PS2)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(73)150 1194 y Fe(PS2)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 -b Fb(71)150 1281 y Fe(PS3)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(73)150 1281 y Fe(PS3)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 -b Fb(80)150 1369 y Fe(PS4)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(82)150 1369 y Fe(PS4)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 -b Fb(80)150 1456 y Fe(PWD)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(82)150 1456 y Fe(PWD)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 -b Fb(80)146 1689 y Fs(R)150 1804 y Fe(RANDOM)6 b Fc(:)15 +b Fb(82)146 1689 y Fs(R)150 1804 y Fe(RANDOM)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)20 b Fb(80)150 1892 y Fe(READLINE_LINE)25 +g(:)g(:)g(:)h(:)f(:)20 b Fb(83)150 1892 y Fe(READLINE_LINE)25 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 -b Fb(80)150 1979 y Fe(READLINE_POINT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +b Fb(83)150 1979 y Fe(READLINE_POINT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(80)150 2066 y Fe(REPLY)9 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(83)150 2066 y Fe(REPLY)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(80)150 2153 y +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(83)150 2153 y Fe(revert-all-at-newline)17 b Fc(:)h(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(112)146 2386 y Fs(S)150 2502 y Fe(SECONDS)22 b Fc(:)13 +b Fb(115)146 2386 y Fs(S)150 2502 y Fe(SECONDS)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)35 b Fb(80)150 2589 y Fe(SHELL)9 b Fc(:)14 +g(:)g(:)g(:)35 b Fb(83)150 2589 y Fe(SHELL)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(80)150 2676 y Fe(SHELLOPTS)15 +g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(83)150 2676 y Fe(SHELLOPTS)15 b Fc(:)h(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)30 b Fb(80)150 2763 y Fe(SHLVL)9 b Fc(:)14 +(:)g(:)g(:)30 b Fb(83)150 2763 y Fe(SHLVL)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(80)150 2851 y Fe(show-all-if-ambiguous) +g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(83)150 2851 y Fe(show-all-if-ambiguous) 17 b Fc(:)h(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(112)150 2938 y Fe +(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(115)150 2938 y Fe (show-all-if-unmodified)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(112)2025 +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(115)2025 260 y Fe(show-mode-in-prompt)d Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 -b Fb(112)2025 347 y Fe(skip-completed-text)26 b Fc(:)13 +b Fb(115)2025 347 y Fe(skip-completed-text)26 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(112)2021 675 y Fs(T)2025 +(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(116)2021 675 y Fs(T)2025 803 y Fe(TEXTDOMAIN)15 b Fc(:)g(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(7)2025 894 y @@ -20466,334 +20949,338 @@ Fe(TEXTDOMAINDIR)7 b Fc(:)16 b(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h g(:)g(:)g(:)g(:)g(:)23 b Fb(7)2025 985 y Fe(TIMEFORMAT)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)27 b Fb(81)2025 1076 y Fe(TMOUT)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:) +(:)h(:)27 b Fb(83)2025 1076 y Fe(TMOUT)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)23 b Fb(81)2025 1164 y Fe(TMPDIR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g +g(:)23 b Fb(84)2025 1164 y Fe(TMPDIR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(81)2021 1480 y Fs(U)2025 1604 y Fe(UID)14 b Fc(:)f(:)g(:)h(:)f(:)g +b Fb(84)2021 1480 y Fs(U)2025 1604 y Fe(UID)14 b Fc(:)f(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)28 b Fb(81)2021 1920 y Fs(V)2025 2049 +(:)g(:)h(:)f(:)28 b Fb(84)2021 1920 y Fs(V)2025 2049 y Fe(vi-cmd-mode-string)7 b Fc(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 -b Fb(113)2025 2140 y Fe(vi-ins-mode-string)7 b Fc(:)17 +b Fb(116)2025 2140 y Fe(vi-ins-mode-string)7 b Fc(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(113)2025 2227 +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(116)2025 2227 y Fe(visible-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)35 b Fb(113)150 3661 y Fs(D.4)68 b(F)-11 b(unction)44 +f(:)g(:)35 b Fb(116)150 3661 y Fs(D.4)68 b(F)-11 b(unction)44 b(Index)146 4147 y(A)150 4273 y Fe(abort)27 b(\(C-g\))15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 -b Fb(126)150 4363 y Fe(accept-line)e(\(Newline)g(or)e(Return\))12 +b Fb(129)150 4363 y Fe(accept-line)e(\(Newline)g(or)e(Return\))12 b Fc(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)27 -b Fb(120)150 4450 y Fe(alias-expand-line)i(\(\))9 b Fc(:)14 +b Fb(123)150 4450 y Fe(alias-expand-line)i(\(\))9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(128)146 4762 y Fs(B)150 +(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(131)146 4762 y Fs(B)150 4888 y Fe(backward-char)29 b(\(C-b\))12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)26 b Fb(119)150 4978 y Fe(backward-delete-char)k(\(Rubout\))22 +(:)26 b Fb(122)150 4978 y Fe(backward-delete-char)k(\(Rubout\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 -b Fb(121)150 5069 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))e +b Fb(125)150 5069 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))e Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b -Fb(122)150 5159 y Fe(backward-kill-word)30 b(\(M-DEL\))11 +Fb(126)150 5159 y Fe(backward-kill-word)30 b(\(M-DEL\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -26 b Fb(123)150 5250 y Fe(backward-word)j(\(M-b\))12 +26 b Fb(126)150 5250 y Fe(backward-word)j(\(M-b\))12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(119)150 5340 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(122)150 5340 y Fe(beginning-of-history)k(\(M-<\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(120)2025 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(123)2025 4117 y Fe(beginning-of-line)j(\(C-a\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 -b Fb(119)2025 4204 y Fe(bracketed-paste-begin)c(\(\))16 +b Fb(122)2025 4204 y Fe(bracketed-paste-begin)c(\(\))16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)31 b Fb(122)2021 4499 y Fs(C)2025 4623 y Fe +g(:)g(:)31 b Fb(125)2021 4499 y Fs(C)2025 4623 y Fe (call-last-kbd-macro)f(\(C-x)c(e\))15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(126)2025 4713 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(129)2025 4713 y Fe(capitalize-word)f(\(M-c\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 -b Fb(122)2025 4802 y Fe(character-search)29 b(\(C-]\))22 +b Fb(125)2025 4802 y Fe(character-search)29 b(\(C-]\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)36 b Fb(126)2025 4892 y Fe +(:)h(:)f(:)g(:)g(:)36 b Fb(130)2025 4892 y Fe (character-search-backward)31 b(\(M-C-]\))10 b Fc(:)15 -b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(127)2025 4981 +b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(130)2025 4981 y Fe(clear-screen)j(\(C-l\))14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 -b Fb(119)2025 5071 y Fe(complete)e(\(TAB\))7 b Fc(:)15 +b Fb(123)2025 5071 y Fe(complete)e(\(TAB\))7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 -b Fb(124)2025 5161 y Fe(complete-command)29 b(\(M-!\))22 +b Fb(127)2025 5161 y Fe(complete-command)29 b(\(M-!\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)36 b Fb(125)2025 5250 y Fe(complete-filename)29 +(:)h(:)f(:)g(:)g(:)36 b Fb(128)2025 5250 y Fe(complete-filename)29 b(\(M-/\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(125)2025 5340 y Fe +f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(128)2025 5340 y Fe (complete-hostname)29 b(\(M-@\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 -b Fb(125)p eop end -%%Page: 169 175 -TeXDict begin 169 174 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(169)150 264 y Fe(complete-into-braces)30 +b Fb(128)p eop end +%%Page: 175 181 +TeXDict begin 175 180 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(175)150 264 y Fe(complete-into-braces)30 b(\(M-{\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)26 b Fb(125)150 354 y Fe(complete-username)j(\(M-~\))20 +(:)g(:)g(:)g(:)26 b Fb(129)150 354 y Fe(complete-username)j(\(M-~\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)33 b Fb(125)150 444 y Fe(complete-variable)c(\(M-$\))20 +(:)g(:)h(:)f(:)33 b Fb(128)150 444 y Fe(complete-variable)c(\(M-$\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)33 b Fb(125)150 534 y Fe(copy-backward-word)d(\(\))7 +(:)g(:)h(:)f(:)33 b Fb(128)150 534 y Fe(copy-backward-word)d(\(\))7 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(123)150 624 y Fe(copy-forward-word) +(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(126)150 624 y Fe(copy-forward-word) 29 b(\(\))9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(123)150 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(127)150 711 y Fe(copy-region-as-kill)30 b(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 -b Fb(123)146 1017 y Fs(D)150 1142 y Fe(dabbrev-expand)29 +b Fb(126)146 1017 y Fs(D)150 1142 y Fe(dabbrev-expand)29 b(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(125)150 1232 y Fe(delete-char)c(\(C-d\))17 b Fc(:)d(:)f(:)g(:)h(:) +b Fb(129)150 1232 y Fe(delete-char)c(\(C-d\))17 b Fc(:)d(:)f(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)32 b Fb(121)150 1322 y Fe(delete-char-or-list)e +(:)g(:)g(:)g(:)g(:)32 b Fb(124)150 1322 y Fe(delete-char-or-list)e (\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(125)150 1412 y Fe +g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(128)150 1412 y Fe (delete-horizontal-space)31 b(\(\))11 b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(123)150 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(126)150 1502 y Fe(digit-argument)j(\()p Fd(M-0)p Fe(,)e Fd(M-1)p Fe(,)f(...)g Fd(M--)p Fe(\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:) -26 b Fb(124)150 1592 y Fe(display-shell-version)k(\(C-x)d(C-v\))c +26 b Fb(127)150 1592 y Fe(display-shell-version)k(\(C-x)d(C-v\))c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b -Fb(128)150 1673 y Fe(do-uppercase-version)30 b(\(M-a,)227 -1761 y(M-b,)c(M-)p Fd(x)p Fe(,)h(...\))10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g +Fb(131)150 1673 y Fe(do-lowercase-version)30 b(\(M-A,)227 +1761 y(M-B,)c(M-)p Fd(x)p Fe(,)h(...\))10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)25 b Fb(126)150 1851 y Fe(downcase-word)k(\(M-l\)) +g(:)g(:)g(:)g(:)g(:)25 b Fb(129)150 1851 y Fe(downcase-word)k(\(M-l\)) 12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(122)150 1941 +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(125)150 1941 y Fe(dump-functions)j(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -32 b Fb(127)150 2031 y Fe(dump-macros)c(\(\))7 b Fc(:)14 +32 b Fb(130)150 2031 y Fe(dump-macros)c(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 -b Fb(127)150 2121 y Fe(dump-variables)29 b(\(\))17 b +b Fb(130)150 2121 y Fe(dump-variables)29 b(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(127)150 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(130)150 2208 y Fe(dynamic-complete-history)f(\(M-TAB\))13 b Fc(:)i(:)e(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(125)146 2514 y Fs(E)150 -2639 y Fe(edit-and-execute-command)k(\(C-xC-e\))10 b -Fc(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(128)150 -2729 y Fe(end-kbd-macro)k(\(C-x)d(\)\))13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 -b Fb(126)150 2819 y Fd(end-of-file)g Fe(\(usually)g(C-d\))21 +(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(128)146 2514 y Fs(E)150 +2639 y Fe(edit-and-execute-command)k(\(C-x)c(C-e\))14 +b Fc(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(131)150 2729 +y Fe(end-kbd-macro)g(\(C-x)d(\)\))13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 +b Fb(129)150 2819 y Fd(end-of-file)g Fe(\(usually)g(C-d\))21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)35 b Fb(121)150 2909 y Fe(end-of-history)29 b(\(M->\))9 +(:)g(:)35 b Fb(124)150 2909 y Fe(end-of-history)29 b(\(M->\))9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(120)150 2999 y +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(123)150 2999 y Fe(end-of-line)k(\(C-e\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(119)150 3086 y Fe(exchange-point-and-mark)f(\(C-x)26 +b Fb(122)150 3086 y Fe(exchange-point-and-mark)f(\(C-x)26 b(C-x\))17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(126)146 3392 y Fs(F)150 3517 y Fe(forward-backward-delete-char)g +b Fb(130)146 3392 y Fs(F)150 3517 y Fe(forward-backward-delete-char)g (\(\))15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 -b Fb(121)150 3607 y Fe(forward-char)e(\(C-f\))14 b Fc(:)h(:)e(:)g(:)g +b Fb(125)150 3607 y Fe(forward-char)e(\(C-f\))14 b Fc(:)h(:)e(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)29 b Fb(119)150 3697 y Fe(forward-search-history)i +h(:)f(:)g(:)g(:)29 b Fb(122)150 3697 y Fe(forward-search-history)i (\(C-s\))24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)38 b Fb(120)150 3784 y Fe(forward-word)28 b(\(M-f\))14 +(:)38 b Fb(123)150 3784 y Fe(forward-word)28 b(\(M-f\))14 b Fc(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(119)146 4079 +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(122)146 4079 y Fs(G)150 4204 y Fe(glob-complete-word)h(\(M-g\))16 b Fc(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)31 b Fb(127)150 4294 y Fe(glob-expand-word)e(\(C-x)e(*\))c +g(:)g(:)31 b Fb(131)150 4294 y Fe(glob-expand-word)e(\(C-x)e(*\))c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)38 b Fb(127)150 4382 y Fe(glob-list-expansions)30 +(:)g(:)g(:)38 b Fb(131)150 4382 y Fe(glob-list-expansions)30 b(\(C-x)d(g\))13 b Fc(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)27 b Fb(128)2021 294 y Fs(H)2025 423 y Fe +(:)g(:)h(:)27 b Fb(131)2021 294 y Fs(H)2025 422 y Fe (history-and-alias-expand-line)32 b(\(\))13 b Fc(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)28 b Fb(128)2025 514 y Fe(history-expand-line)i +g(:)g(:)g(:)g(:)28 b Fb(131)2025 513 y Fe(history-expand-line)i (\(M-^\))13 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)28 b Fb(128)2025 606 y Fe(history-search-backward)j +g(:)g(:)g(:)h(:)28 b Fb(131)2025 604 y Fe(history-search-backward)j (\(\))11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)26 b Fb(120)2025 697 y Fe(history-search-forward)k(\(\))13 +(:)g(:)g(:)26 b Fb(124)2025 695 y Fe(history-search-forward)k(\(\))13 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)28 b Fb(120)2025 789 y Fe(history-substr-search-backward)k(\(\))10 -b Fc(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(121)2025 -876 y Fe(history-substr-search-forward)32 b(\(\))13 b -Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(120)2021 -1210 y Fs(I)2025 1339 y Fe(insert-comment)h(\(M-#\))9 -b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(127)2025 1431 -y Fe(insert-completions)29 b(\(M-*\))16 b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 b -Fb(124)2025 1518 y Fe(insert-last-argument)f(\(M-.)c(or)g(M-_\))7 -b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(128)2021 -1852 y Fs(K)2025 1981 y Fe(kill-line)27 b(\(C-k\))c Fc(:)14 -b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(122)2025 -2073 y Fe(kill-region)28 b(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f +h(:)28 b Fb(123)2025 786 y Fe(history-substring-search-backw)q(ard)k +(\(\))20 b Fc(:)13 b(:)g(:)g(:)g(:)35 b Fb(124)2025 874 +y Fe(history-substring-search-forwa)q(rd)d(\(\))22 b +Fc(:)13 b(:)h(:)f(:)g(:)g(:)37 b Fb(124)2021 1200 y Fs(I)2025 +1329 y Fe(insert-comment)29 b(\(M-#\))9 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)22 b Fb(123)2025 2164 y Fe(kill-whole-line)29 -b(\(\))14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(123)2025 -2251 y Fe(kill-word)e(\(M-d\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h +24 b Fb(130)2025 1420 y Fe(insert-completions)29 b(\(M-*\))16 +b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)31 b Fb(127)2025 1507 y Fe(insert-last-argument)f(\(M-.)c(or)g +(M-_\))7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 +b Fb(131)2021 1834 y Fs(K)2025 1962 y Fe(kill-line)27 +b(\(C-k\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 +b Fb(126)2025 2053 y Fe(kill-region)28 b(\(\))7 b Fc(:)14 +b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 +b Fb(126)2025 2144 y Fe(kill-whole-line)29 b(\(\))14 +b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(126)2025 +2231 y Fe(kill-word)e(\(M-d\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)37 b Fb(123)2021 2575 y Fs(M)2025 2704 y +g(:)g(:)g(:)37 b Fb(126)2021 2548 y Fs(M)2025 2676 y Fe(magic-space)28 b(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)22 b Fb(128)2025 2796 y Fe(menu-complete)28 +g(:)g(:)h(:)f(:)22 b Fb(131)2025 2767 y Fe(menu-complete)28 b(\(\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 -b Fb(124)2025 2883 y Fe(menu-complete-backward)c(\(\))13 +b Fb(127)2025 2854 y Fe(menu-complete-backward)c(\(\))13 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)28 b Fb(124)2021 3217 y Fs(N)2025 3346 y Fe(next-history)g(\(C-n\)) +h(:)28 b Fb(128)2021 3181 y Fs(N)2025 3309 y Fe(next-history)g(\(C-n\)) 14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(120)2025 -3429 y Fe(non-incremental-forward-)2102 3516 y(search-history)f -(\(M-n\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(120)2025 3603 -y Fe(non-incremental-reverse-)2102 3690 y(search-history)28 -b(\(M-p\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(120)2021 4033 -y Fs(O)2025 4162 y Fe(operate-and-get-next)30 b(\(C-o\))11 -b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -26 b Fb(128)2025 4249 y Fe(overwrite-mode)j(\(\))17 b -Fc(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(122)p +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(123)2025 +3401 y Fe(next-screen-line)g(\(\))12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +27 b Fb(123)2025 3472 y Fe(non-incremental-forward-)2102 +3560 y(search-history)h(\(M-n\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 +b Fb(123)2025 3647 y Fe(non-incremental-reverse-)2102 +3734 y(search-history)28 b(\(M-p\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 +b Fb(123)2021 4070 y Fs(O)2025 4198 y Fe(operate-and-get-next)30 +b(\(C-o\))11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)26 b Fb(131)2025 4285 y Fe(overwrite-mode)j(\(\))17 +b Fc(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(125)p eop end -%%Page: 170 176 -TeXDict begin 170 175 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(170)146 294 y Fs(P)150 414 y Fe +%%Page: 176 182 +TeXDict begin 176 181 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(176)146 294 y Fs(P)150 414 y Fe (possible-command-completions)32 b(\(C-x)26 b(!\))9 b -Fc(:)14 b(:)g(:)f(:)g(:)g(:)24 b Fb(125)150 502 y Fe +Fc(:)14 b(:)g(:)f(:)g(:)g(:)24 b Fb(128)150 503 y Fe (possible-completions)30 b(\(M-?\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(124)150 -591 y Fe(possible-filename-completions)32 b(\(C-x)27 -b(/\))7 b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(125)150 679 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(127)150 +592 y Fe(possible-filename-completions)32 b(\(C-x)27 +b(/\))7 b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(128)150 680 y Fe(possible-hostname-completions)32 b(\(C-x)27 b(@\))7 -b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(125)150 768 y Fe +b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(128)150 769 y Fe (possible-username-completions)32 b(\(C-x)27 b(~\))7 -b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(125)150 857 y Fe +b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(128)150 858 y Fe (possible-variable-completions)32 b(\(C-x)27 b($\))7 -b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(125)150 945 y Fe(prefix-meta)28 +b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(128)150 946 y Fe(prefix-meta)28 b(\(ESC\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(126)150 1034 y Fe(previous-history)d(\(C-p\))23 +b Fb(129)150 1035 y Fe(previous-history)d(\(C-p\))23 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)36 b Fb(120)150 1121 y Fe(print-last-kbd-macro)30 +(:)f(:)g(:)g(:)g(:)36 b Fb(123)150 1124 y Fe(previous-screen-line)30 b(\(\))19 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(126)146 1393 y Fs(Q)150 -1512 y Fe(quoted-insert)c(\(C-q)d(or)g(C-v\))8 b Fc(:)14 -b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 -b Fb(121)146 1785 y Fs(R)150 1905 y Fe(re-read-init-file)29 +(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(122)150 1211 y Fe +(print-last-kbd-macro)d(\(\))19 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(129)146 +1487 y Fs(Q)150 1606 y Fe(quoted-insert)c(\(C-q)d(or)g(C-v\))8 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)22 b Fb(125)146 1881 y Fs(R)150 2002 y Fe(re-read-init-file)29 b(\(C-x)e(C-r\))15 b Fc(:)f(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)30 b Fb(126)150 1993 y Fe(redraw-current-line)g(\(\))22 +(:)g(:)g(:)g(:)30 b Fb(129)150 2091 y Fe(redraw-current-line)g(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)36 b Fb(119)150 2082 y Fe(reverse-search-history)31 +(:)f(:)g(:)g(:)g(:)36 b Fb(123)150 2179 y Fe(reverse-search-history)31 b(\(C-r\))24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)38 b Fb(120)150 2169 y Fe(revert-line)28 b(\(M-r\))17 +g(:)38 b Fb(123)150 2266 y Fe(revert-line)28 b(\(M-r\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(126)146 -2431 y Fs(S)150 2552 y Fe(self-insert)c(\(a,)e(b,)g(A,)g(1,)h(!,)f +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(129)146 +2532 y Fs(S)150 2652 y Fe(self-insert)c(\(a,)e(b,)g(A,)g(1,)h(!,)f (...\))13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27 -b Fb(122)150 2640 y Fe(set-mark)g(\(C-@\))7 b Fc(:)15 +b Fb(125)150 2741 y Fe(set-mark)g(\(C-@\))7 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 -b Fb(126)150 2729 y Fe(shell-backward-kill-word)31 b(\(\))8 +b Fb(130)150 2830 y Fe(shell-backward-kill-word)31 b(\(\))8 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -23 b Fb(123)150 2817 y Fe(shell-backward-word)30 b(\(\))22 +23 b Fb(126)150 2918 y Fe(shell-backward-word)30 b(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)36 b Fb(119)150 2906 y Fe(shell-expand-line)29 +(:)f(:)g(:)g(:)g(:)36 b Fb(122)150 3007 y Fe(shell-expand-line)29 b(\(M-C-e\))13 b Fc(:)j(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)28 b Fb(128)150 2994 y Fe(shell-forward-word)i(\(\)) +(:)g(:)h(:)f(:)g(:)28 b Fb(131)150 3096 y Fe(shell-forward-word)i(\(\)) 7 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(119)150 3083 y +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(122)150 3184 y Fe(shell-kill-word)29 b(\(\))14 b Fc(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 -b Fb(123)2025 264 y Fe(skip-csi-sequence)g(\(\))9 b Fc(:)14 +b Fb(126)2025 264 y Fe(skip-csi-sequence)g(\(\))9 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(127)2025 351 y Fe(start-kbd-macro)29 +(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(130)2025 351 y Fe(start-kbd-macro)29 b(\(C-x)d(\(\))8 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Fb(126)2021 -794 y Fs(T)2025 941 y Fe(tilde-expand)28 b(\(M-&\))14 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Fb(129)2021 +821 y Fs(T)2025 972 y Fe(tilde-expand)28 b(\(M-&\))14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(126)2025 -1038 y Fe(transpose-chars)g(\(C-t\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(129)2025 +1070 y Fe(transpose-chars)g(\(C-t\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 -b Fb(122)2025 1125 y Fe(transpose-words)29 b(\(M-t\))7 +b Fb(125)2025 1157 y Fe(transpose-words)29 b(\(M-t\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(122)2021 1578 y Fs(U)2025 -1725 y Fe(undo)k(\(C-_)h(or)f(C-x)g(C-u\))10 b Fc(:)k(:)f(:)g(:)h(:)f +(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(125)2021 1638 y Fs(U)2025 +1788 y Fe(undo)k(\(C-_)h(or)f(C-x)g(C-u\))10 b Fc(:)k(:)f(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)25 b Fb(126)2025 1822 y Fe(universal-argument)k(\(\))7 +g(:)25 b Fb(129)2025 1887 y Fe(universal-argument)k(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(124)2025 1920 y Fe +(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(127)2025 1985 y Fe (unix-filename-rubout)30 b(\(\))19 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 -b Fb(123)2025 2017 y Fe(unix-line-discard)29 b(\(C-u\))20 +b Fb(126)2025 2084 y Fe(unix-line-discard)29 b(\(C-u\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)34 b Fb(123)2025 2114 y Fe(unix-word-rubout)29 +(:)g(:)g(:)g(:)34 b Fb(126)2025 2182 y Fe(unix-word-rubout)29 b(\(C-w\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(123)2025 2201 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(126)2025 2269 y Fe(upcase-word)28 b(\(M-u\))17 b Fc(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)32 b Fb(122)2021 2654 y Fs(Y)2025 2801 y Fe(yank)26 +g(:)32 b Fb(125)2021 2750 y Fs(Y)2025 2900 y Fe(yank)26 b(\(C-y\))18 b Fc(:)c(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)33 b Fb(123)2025 2898 y Fe(yank-last-arg)28 +g(:)g(:)g(:)g(:)33 b Fb(127)2025 2999 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))8 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(121)2025 2996 +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(124)2025 3097 y Fe(yank-nth-arg)28 b(\(M-C-y\))9 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 -b Fb(121)2025 3083 y Fe(yank-pop)j(\(M-y\))7 b Fc(:)15 +b Fb(124)2025 3184 y Fe(yank-pop)j(\(M-y\))7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 -b Fb(123)150 3832 y Fs(D.5)68 b(Concept)45 b(Index)146 -4425 y(A)150 4553 y Fb(alias)27 b(expansion)7 b Fc(:)14 +b Fb(127)150 3933 y Fs(D.5)68 b(Concept)45 b(Index)146 +4527 y(A)150 4652 y Fb(alias)27 b(expansion)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 -b Fb(90)150 4644 y(arithmetic)26 b(ev)l(aluation)d Fc(:)13 +b Fb(93)150 4742 y(arithmetic)26 b(ev)l(aluation)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(89)150 4735 y(arithmetic)26 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(92)150 4832 y(arithmetic)26 b(expansion)11 b Fc(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 -b Fb(29)150 4826 y(arithmetic,)h(shell)6 b Fc(:)14 b(:)f(:)g(:)g(:)g(:) +b Fb(31)150 4923 y(arithmetic,)h(shell)6 b Fc(:)14 b(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20 b Fb(89)150 4914 +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20 b Fb(92)150 5010 y(arra)n(ys)h Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(91)2021 -4425 y Fs(B)2025 4551 y Fb(bac)n(kground)13 b Fc(:)f(:)h(:)g(:)g(:)h(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(94)2021 +4527 y Fs(B)2025 4650 y Fb(bac)n(kground)13 b Fc(:)f(:)h(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(100)2025 -4641 y(Bash)e(con\014guration)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(103)2025 +4739 y(Bash)e(con\014guration)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)26 b Fb(142)2025 4732 y(Bash)g(installation)9 +g(:)g(:)26 b Fb(147)2025 4829 y(Bash)g(installation)9 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24 -b Fb(142)2025 4822 y(Bourne)i(shell)20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +b Fb(147)2025 4918 y(Bourne)i(shell)20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)35 b -Fb(5)2025 4913 y(brace)26 b(expansion)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:) +Fb(5)2025 5008 y(brace)26 b(expansion)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Fb(21)2025 5000 y(builtin)15 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Fb(23)2025 5095 y(builtin)15 b Fc(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(3)p eop end -%%Page: 171 177 -TeXDict begin 171 176 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(171)146 294 y Fs(C)150 418 y Fb(command)26 +%%Page: 177 183 +TeXDict begin 177 182 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(177)146 294 y Fs(C)150 418 y Fb(command)26 b(editing)19 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)34 -b Fb(105)150 507 y(command)26 b(execution)12 b Fc(:)h(:)g(:)g(:)g(:)g +b Fb(108)150 507 y(command)26 b(execution)12 b Fc(:)h(:)g(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)26 b Fb(37)150 597 y(command)g(expansion)c +g(:)h(:)f(:)g(:)g(:)26 b Fb(38)150 597 y(command)g(expansion)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(36)150 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(38)150 687 y(command)26 b(history)18 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)33 b Fb(137)150 777 y(command)26 b(searc)n(h)16 +g(:)g(:)g(:)33 b Fb(141)150 777 y(command)26 b(searc)n(h)16 b Fc(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 -b Fb(37)150 866 y(command)c(substitution)21 b Fc(:)13 +b Fb(38)150 866 y(command)c(substitution)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(29)150 956 y(command)26 +(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(30)150 956 y(command)26 b(timing)13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)28 b Fb(8)150 1046 y(commands,)e(comp)r(ound)7 b Fc(:)14 @@ -20801,7 +21288,7 @@ b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(9)150 1135 y(commands,)k(conditional)10 b Fc(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 -b Fb(10)150 1225 y(commands,)h(grouping)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g +b Fb(11)150 1225 y(commands,)h(grouping)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)29 b Fb(14)150 1315 y(commands,)d(lists)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) @@ -20821,10 +21308,10 @@ b Fb(8)150 1764 y(commen)n(ts,)26 b(shell)13 b Fc(:)i(:)e(:)g(:)g(:)g g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(7)150 1853 y(completion)f(builtins)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)36 b Fb(131)150 1943 y(con\014guration)22 b Fc(:)13 +g(:)36 b Fb(134)150 1943 y(con\014guration)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 -b Fb(142)150 2033 y(con)n(trol)26 b(op)r(erator)8 b Fc(:)15 +b Fb(147)150 2033 y(con)n(trol)26 b(op)r(erator)8 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(3)150 2120 y(copro)r(cess)18 b Fc(:)c(:)f(:)h(:)f(:)g(:)g(:)g(:)g @@ -20833,44 +21320,44 @@ f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)32 b Fb(15)146 2416 y Fs(D)150 2537 y Fb(directory)26 b(stac)n(k)11 b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 -b Fb(93)146 2833 y Fs(E)150 2957 y Fb(editing)g(command)g(lines)17 +b Fb(96)146 2833 y Fs(E)150 2957 y Fb(editing)g(command)g(lines)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(105)150 3046 y(en)n(vironmen)n(t)18 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(108)150 3046 y(en)n(vironmen)n(t)18 b Fc(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)32 b Fb(38)150 3136 y(ev)l(aluation,)26 b(arithmetic)12 +f(:)32 b Fb(40)150 3136 y(ev)l(aluation,)26 b(arithmetic)12 b Fc(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(89)150 3226 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(92)150 3226 y(ev)n(en)n(t)f(designators)c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)34 b Fb(140)150 3316 y(execution)26 b(en)n(vironmen)n(t)17 +g(:)h(:)34 b Fb(144)150 3316 y(execution)26 b(en)n(vironmen)n(t)17 b Fc(:)12 b(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)31 b Fb(37)150 3405 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)31 b Fb(39)150 3405 y(exit)25 b(status)7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(3,)k(39)150 3495 y(expansion)9 +(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(3,)k(40)150 3495 y(expansion)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)24 b Fb(21)150 3585 y(expansion,)i(arithmetic)18 +g(:)g(:)g(:)g(:)24 b Fb(22)150 3585 y(expansion,)i(arithmetic)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(29)150 3674 +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(31)150 3674 y(expansion,)26 b(brace)16 b Fc(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)30 b Fb(21)150 3764 y(expansion,)c(\014lename)18 +f(:)g(:)g(:)30 b Fb(23)150 3764 y(expansion,)c(\014lename)18 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(30)150 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(32)150 3854 y(expansion,)26 b(parameter)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)34 b Fb(23)150 3944 y(expansion,)26 b(pathname)7 +g(:)34 b Fb(24)150 3944 y(expansion,)26 b(pathname)7 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(30)150 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(32)150 4033 y(expansion,)k(tilde)14 b Fc(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)28 b Fb(22)150 4123 y(expressions,)f(arithmetic)13 +h(:)f(:)g(:)g(:)g(:)28 b Fb(23)150 4123 y(expressions,)f(arithmetic)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(89)150 4210 y(expressions,)g +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(92)150 4210 y(expressions,)g (conditional)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(87)2021 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(90)2021 294 y Fs(F)2025 415 y Fb(\014eld)21 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g @@ -20879,40 +21366,40 @@ g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(3)2025 593 y(\014lename)26 b(expansion)11 b Fc(:)i(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)26 b Fb(30)2025 682 y(foreground)9 +g(:)g(:)h(:)f(:)g(:)g(:)26 b Fb(32)2025 682 y(foreground)9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)24 b Fb(100)2025 769 y(functions,)i(shell)9 b +h(:)f(:)24 b Fb(103)2025 769 y(functions,)i(shell)9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24 b Fb(17)2021 1048 y Fs(H)2025 1170 y Fb(history)h(builtins)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)35 -b Fb(137)2025 1259 y(history)25 b(ev)n(en)n(ts)8 b Fc(:)13 +b Fb(141)2025 1259 y(history)25 b(ev)n(en)n(ts)8 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 -b Fb(140)2025 1347 y(history)i(expansion)14 b Fc(:)g(:)f(:)g(:)g(:)h(:) +b Fb(144)2025 1347 y(history)i(expansion)14 b Fc(:)g(:)f(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(139)2025 1436 y(history)c(list)9 +(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(143)2025 1436 y(history)c(list)9 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)24 b Fb(137)2025 1524 y(History)-6 b(,)25 b(ho)n(w)h(to)g(use) +g(:)g(:)24 b Fb(141)2025 1524 y(History)-6 b(,)25 b(ho)n(w)h(to)g(use) 19 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(136)2021 +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(140)2021 1803 y Fs(I)2025 1924 y Fb(iden)n(ti\014er)12 b Fc(:)g(:)h(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)27 b Fb(3)2025 2013 y(initialization)h(\014le,)e(readline)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)32 b Fb(107)2025 2102 y(installation)21 +f(:)g(:)g(:)g(:)32 b Fb(110)2025 2102 y(installation)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)34 b Fb(142)2025 2191 y(in)n(teraction,)26 b(readline)7 +g(:)34 b Fb(147)2025 2191 y(in)n(teraction,)26 b(readline)7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(104)2025 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(107)2025 2280 y(in)n(teractiv)n(e)k(shell)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)34 b Fb(84,)27 b(85)2025 2367 y(in)n(ternationalization)22 +h(:)f(:)g(:)34 b Fb(87,)27 b(88)2025 2367 y(in)n(ternationalization)22 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(7)2021 2637 y Fs(J)2025 2758 y Fb(job)23 b Fc(:)13 @@ -20921,29 +21408,29 @@ b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(3)2025 2845 y(job)26 b(con)n(trol)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)31 b Fb(3,)c(100)2021 3124 y Fs(K)2025 +g(:)g(:)g(:)h(:)f(:)31 b Fb(3,)c(103)2021 3124 y Fs(K)2025 3246 y Fb(kill)f(ring)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 b Fb(106)2025 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 b Fb(109)2025 3333 y(killing)k(text)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(106)2021 3612 +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(109)2021 3612 y Fs(L)2025 3733 y Fb(lo)r(calization)i Fc(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35 b Fb(7)2025 3821 y(login)26 b(shell)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 -b Fb(84)2021 4100 y Fs(M)2025 4221 y Fb(matc)n(hing,)26 +b Fb(87)2021 4100 y Fs(M)2025 4221 y Fb(matc)n(hing,)26 b(pattern)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 -b Fb(31)2025 4308 y(metac)n(haracter)7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g +b Fb(33)2025 4308 y(metac)n(haracter)7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(3)p eop end -%%Page: 172 178 -TeXDict begin 172 177 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(172)146 294 y Fs(N)150 410 y Fb(name)19 +%%Page: 178 184 +TeXDict begin 178 183 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(178)146 294 y Fs(N)150 410 y Fb(name)19 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(3)150 497 @@ -20952,26 +21439,26 @@ y(nativ)n(e)25 b(languages)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g h(:)f(:)g(:)g(:)g(:)34 b Fb(7)150 584 y(notation,)27 b(readline)13 b Fc(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27 -b Fb(105)146 826 y Fs(O)150 942 y Fb(op)r(erator,)g(shell)c +b Fb(108)146 826 y Fs(O)150 942 y Fb(op)r(erator,)g(shell)c Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) 37 b Fb(3)146 1184 y Fs(P)150 1300 y Fb(parameter)26 b(expansion)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 -b Fb(23)150 1388 y(parameters)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g +b Fb(24)150 1388 y(parameters)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(18)150 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(19)150 1475 y(parameters,)27 b(p)r(ositional)7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)21 b Fb(19)150 1562 y(parameters,)27 b(sp)r(ecial)7 +f(:)g(:)21 b Fb(21)150 1562 y(parameters,)27 b(sp)r(ecial)7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)21 -b Fb(20)150 1649 y(pathname)k(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g +b Fb(21)150 1649 y(pathname)k(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)32 b Fb(30)150 1736 y(pattern)25 b(matc)n(hing)c +h(:)f(:)g(:)32 b Fb(32)150 1736 y(pattern)25 b(matc)n(hing)c Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34 -b Fb(31)150 1824 y(pip)r(eline)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(33)150 1824 y(pip)r(eline)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(8)150 1911 y(POSIX)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g @@ -20979,7 +21466,7 @@ b Fb(8)150 1911 y(POSIX)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(3)150 1998 y(POSIX)25 b(Mo)r(de)17 b Fc(:)c(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(96)150 +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(99)150 2085 y(pro)r(cess)c(group)15 b Fc(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fb(3)150 2172 y(pro)r(cess)d @@ -20987,12 +21474,12 @@ g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fb(3)150 2172 y(pro)r(cess)d (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)26 b Fb(3)150 2259 y(pro)r(cess)h(substitution)11 b Fc(:)h(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25 b Fb(30)150 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25 b Fb(31)150 2347 y(programmable)i(completion)8 b Fc(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23 -b Fb(129)150 2434 y(prompting)17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g +b Fb(132)150 2434 y(prompting)17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(94)146 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(97)146 2676 y Fs(Q)150 2792 y Fb(quoting)16 b Fc(:)d(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 @@ -21001,50 +21488,50 @@ b Fb(6)150 2879 y(quoting,)26 b(ANSI)18 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(6)146 3121 y Fs(R)150 3237 y Fb(Readline,)26 b(ho)n(w)g(to)g(use)11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(103)150 3325 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(106)150 3325 y(redirection)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fb(32)150 3412 y(reserv)n(ed)f(w)n +g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fb(34)150 3412 y(reserv)n(ed)f(w)n (ord)13 b Fc(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)28 b Fb(3)150 3499 y(restricted)e(shell)14 b Fc(:)g(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)29 -b Fb(95)150 3586 y(return)c(status)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g +b Fb(99)150 3586 y(return)c(status)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(4)2021 294 y Fs(S)2025 427 y Fb(shell)h(arithmetic)17 b Fc(:)d(:)f(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(89)2025 520 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(92)2025 520 y(shell)26 b(function)18 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)32 b Fb(17)2025 613 y(shell)26 b(script)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(40)2025 706 y(shell)h(v)l(ariable)7 +(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(41)2025 706 y(shell)h(v)l(ariable)7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)22 b Fb(18)2025 799 y(shell,)k(in)n(teractiv)n(e)21 +g(:)22 b Fb(19)2025 799 y(shell,)k(in)n(teractiv)n(e)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34 -b Fb(85)2025 892 y(signal)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g +b Fb(88)2025 892 y(signal)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 b Fb(4)2025 984 y(signal)f(handling)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(39)2025 1077 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(41)2025 1077 y(sp)r(ecial)27 b(builtin)16 b Fc(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)31 b Fb(4,)26 b(70)2025 1170 y(startup)f(\014les)10 +g(:)g(:)g(:)g(:)31 b Fb(4,)26 b(71)2025 1170 y(startup)f(\014les)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)25 b Fb(84)2025 1257 y(susp)r(ending)g(jobs)10 +(:)g(:)25 b Fb(87)2025 1257 y(susp)r(ending)g(jobs)10 b Fc(:)k(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 -b Fb(100)2021 1619 y Fs(T)2025 1752 y Fb(tilde)h(expansion)7 +b Fb(103)2021 1619 y Fs(T)2025 1752 y Fb(tilde)h(expansion)7 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22 -b Fb(22)2025 1845 y(tok)n(en)17 b Fc(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g +b Fb(23)2025 1845 y(tok)n(en)17 b Fc(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(4)2025 1932 y(translation,)27 b(nativ)n(e)e(languages)c @@ -21052,19 +21539,19 @@ Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)34 b Fb(7)2021 2294 y Fs(V)2025 2427 y Fb(v)l(ariable,)26 b(shell)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(18)2025 2515 y(v)l(ariables,)f +g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(19)2025 2515 y(v)l(ariables,)f (readline)7 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22 -b Fb(108)2021 2876 y Fs(W)2025 3010 y Fb(w)n(ord)10 b +b Fb(111)2021 2876 y Fs(W)2025 3010 y Fb(w)n(ord)10 b Fc(:)j(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(4)2025 3097 y(w)n(ord)h(splitting)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(30)2021 3458 y Fs(Y)2025 +g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(31)2021 3458 y Fs(Y)2025 3586 y Fb(y)n(anking)h(text)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 b Fb(106)p eop end +g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 b Fb(109)p eop end %%Trailer userdict /end-hook known{end-hook}if diff --git a/doc/bashref.texi b/doc/bashref.texi index c0f4a2f8a..d33cd5710 100644 --- a/doc/bashref.texi +++ b/doc/bashref.texi @@ -14,7 +14,7 @@ This is Edition @value{EDITION}, last updated @value{UPDATED}, of @cite{The GNU Bash Reference Manual}, for @code{Bash}, Version @value{VERSION}. -Copyright @copyright{} 1988--2016 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2018 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -508,7 +508,7 @@ double quote question mark @item \@var{nnn} the eight-bit character whose value is the octal value @var{nnn} -(one to three digits) +(one to three octal digits) @item \x@var{HH} the eight-bit character whose value is the hexadecimal value @var{HH} (one or two hex digits) @@ -659,8 +659,13 @@ the time information. If the pipeline is not executed asynchronously (@pxref{Lists}), the shell waits for all commands in the pipeline to complete. -Each command in a pipeline is executed in its own subshell -(@pxref{Command Execution Environment}). The exit +Each command in a pipeline is executed in its own subshell, which is a +separate process (@pxref{Command Execution Environment}). +If the @code{lastpipe} option is enabled using the @code{shopt} builtin +(@pxref{The Shopt Builtin}), +the last element of a pipeline may be run by the shell process. + +The exit status of a pipeline is the exit status of the last command in the pipeline, unless the @code{pipefail} option is enabled (@pxref{The Set Builtin}). @@ -691,7 +696,8 @@ to delimit commands, equivalent to a semicolon. If a command is terminated by the control operator @samp{&}, the shell executes the command asynchronously in a subshell. -This is known as executing the command in the @var{background}. +This is known as executing the command in the @var{background}, +and these are referred to as @var{asynchronous} commands. The shell does not wait for the command to finish, and the return status is 0 (true). When job control is not active (@pxref{Job Control}), @@ -714,7 +720,7 @@ An @sc{and} list has the form @noindent @var{command2} is executed if, and only if, @var{command1} -returns an exit status of zero. +returns an exit status of zero (success). An @sc{or} list has the form @example @@ -739,7 +745,7 @@ executed in the list. * Command Grouping:: Ways to group commands. @end menu -Compound commands are the shell programming constructs. +Compound commands are the shell programming language constructs. Each construct begins with a reserved word or control operator and is terminated by a corresponding reserved word or operator. Any redirections (@pxref{Redirections}) associated with a compound command @@ -798,12 +804,14 @@ The syntax of the @code{for} command is: for @var{name} [ [in [@var{words} @dots{}] ] ; ] do @var{commands}; done @end example -Expand @var{words}, and execute @var{commands} once for each member +Expand @var{words} (@pxref{Shell Expansions}), and execute @var{commands} +once for each member in the resultant list, with @var{name} bound to the current member. If @samp{in @var{words}} is not present, the @code{for} command executes the @var{commands} once for each positional parameter that is set, as if @samp{in "$@@"} had been specified (@pxref{Special Parameters}). + The return status is the exit status of the last command that executes. If there are no items in the expansion of @var{words}, no commands are executed, and the return status is zero. @@ -869,11 +877,15 @@ zero if no condition tested true. The syntax of the @code{case} command is: @example -case @var{word} in [ [(] @var{pattern} [| @var{pattern}]@dots{}) @var{command-list} ;;]@dots{} esac +case @var{word} in + [ [(] @var{pattern} [| @var{pattern}]@dots{}) @var{command-list} ;;]@dots{} +esac @end example @code{case} will selectively execute the @var{command-list} corresponding to the first @var{pattern} that matches @var{word}. +The match is performed according +to the rules described below in @ref{Pattern Matching}. If the @code{nocasematch} shell option (see the description of @code{shopt} in @ref{The Shopt Builtin}) is enabled, the match is performed without regard to the case @@ -885,7 +897,9 @@ as a @var{clause}. Each clause must be terminated with @samp{;;}, @samp{;&}, or @samp{;;&}. The @var{word} undergoes tilde expansion, parameter expansion, command -substitution, arithmetic expansion, and quote removal before matching is +substitution, arithmetic expansion, and quote removal +(@pxref{Shell Parameter Expansion}) +before matching is attempted. Each @var{pattern} undergoes tilde expansion, parameter expansion, command substitution, and arithmetic expansion. @@ -1010,14 +1024,15 @@ If the @code{nocasematch} shell option is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches (@samp{==}) or does not -match (@samp{!=})the pattern, and 1 otherwise. +match (@samp{!=}) the pattern, and 1 otherwise. Any part of the pattern may be quoted to force the quoted portion to be matched as a string. An additional binary operator, @samp{=~}, is available, with the same precedence as @samp{==} and @samp{!=}. When it is used, the string to the right of the operator is considered -an extended regular expression and matched accordingly (as in @i{regex}3)). +a @sc{POSIX} extended regular expression and matched accordingly +(as in @i{regex}3)). The return value is 0 if the string matches the pattern, and 1 otherwise. If the regular expression is syntactically incorrect, the conditional @@ -1045,7 +1060,7 @@ if there is a sequence of characters in the value consisting of any number, including zero, of space characters, zero or one instances of @samp{a}, then a @samp{b}: @example -[[ $line =~ [[:space:]]*(a)?b ]] +[[ $line =~ [[:space:]]*?(a)b ]] @end example @noindent @@ -1061,7 +1076,7 @@ expressions while paying attention to the shell's quote removal. Using a shell variable to store the pattern decreases these problems. For example, the following is equivalent to the above: @example -pattern='[[:space:]]*(a)?b' +pattern='[[:space:]]*?(a)b' [[ $line =~ $pattern ]] @end example @@ -1197,7 +1212,8 @@ This pipe is established before any redirections specified by the command (@pxref{Redirections}). The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. -The file descriptors are not available in subshells. +Other than those created to execute command and process substitutions, +the file descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is available as the value of the variable @env{NAME}_PID. @@ -1271,7 +1287,8 @@ from a file (in this case, filenames listed one per line): @noindent with a more compact syntax reminiscent of lambdas: @example -cat list | parallel "do-something1 @{@} config-@{@} ; do-something2 < @{@}" | process-output +cat list | parallel "do-something1 @{@} config-@{@} ; do-something2 < @{@}" | + process-output @end example Parallel provides a built-in mechanism to remove filename extensions, which @@ -1294,13 +1311,21 @@ parallel "zcat @{@} | bzip2 >@{.@}.bz2 && rm @{@}" ::: *.gz If a command generates output, you may want to preserve the input order in the output. For instance, the following command @example -@{ echo foss.org.my ; echo debian.org; echo freenetproject.org; @} | parallel traceroute +@{ + echo foss.org.my ; + echo debian.org ; + echo freenetproject.org ; +@} | parallel traceroute @end example @noindent will display as output the traceroute invocation that finishes first. Adding the @option{-k} option @example -@{ echo foss.org.my ; echo debian.org; echo freenetproject.org; @} | parallel -k traceroute +@{ + echo foss.org.my ; + echo debian.org ; + echo freenetproject.org ; +@} | parallel -k traceroute @end example @noindent will ensure that the output of @code{traceroute foss.org.my} is displayed first. @@ -1308,7 +1333,7 @@ will ensure that the output of @code{traceroute foss.org.my} is displayed first. Finally, Parallel can be used to run a sequence of shell commands in parallel, similar to @samp{cat file | bash}. It is not uncommon to take a list of filenames, create a series of shell -commands to operate on them, and feed that list of commnds to a shell. +commands to operate on them, and feed that list of commands to a shell. Parallel can speed this up. Assuming that @file{file} contains a list of shell commands, one per line, @@ -1424,7 +1449,66 @@ before the @code{return}. Variables local to the function may be declared with the @code{local} builtin. These variables are visible only to -the function and the commands it invokes. +the function and the commands it invokes. This is particularly +important when a shell function calls other functions. + +Local variables "shadow" variables with the same name declared at +previous scopes. For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. + +The shell uses @var{dynamic scoping} to control a variable's visibility +within functions. +With dynamic scoping, visible variables and their values +are a result of the sequence of function calls that caused execution +to reach the current function. +The value of a variable that a function sees depends +on its value within its caller, if any, whether that caller is +the "global" scope or another shell function. +This is also the value that a local variable +declaration "shadows", and the value that is restored when the function +returns. + +For example, if a variable @var{var} is declared as local in function +@var{func1}, and @var{func1} calls another function @var{func2}, +references to @var{var} made from within @var{func2} will resolve to the +local variable @var{var} from @var{func1}, shadowing any global variable +named @var{var}. + +The following script demonstrates this behavior. +When executed, the script displays + +@example +In func2, var = func1 local +@end example + +@example +func1() +@{ + local var='func1 local' + func2 +@} + +func2() +@{ + echo "In func2, var = $var" +@} + +var=global +func1 +@end example + +The @code{unset} builtin also acts using the same dynamic scope: if a +variable is local to the current scope, @code{unset} will unset it; +otherwise the unset will refer to the variable found in any calling scope +as described above. +If a variable at the current local scope is unset, it will remain so +until it is reset in that scope or until the function returns. +Once the function returns, any instance of the variable at a previous +scope will become visible. +If the unset acts on a variable at a previous scope, any instance of a +variable with that name that had been shadowed will become visible. Function names and definitions may be listed with the @option{-f} option to the @code{declare} (@code{typeset}) @@ -1437,10 +1521,6 @@ Functions may be exported so that subshells automatically have them defined with the @option{-f} option to the @code{export} builtin (@pxref{Bourne Shell Builtins}). -Note that shell functions and variables with the same name may result -in multiple identically-named entries in the environment passed to the -shell's children. -Care should be taken in cases where this may cause a problem. Functions may be recursive. The @code{FUNCNEST} variable may be used to limit the depth of the @@ -1596,8 +1676,16 @@ separators. @item @@ @vindex $@@ -($@@) Expands to the positional parameters, starting from one. When the -expansion occurs within double quotes, each parameter expands to a +($@@) Expands to the positional parameters, starting from one. +In contexts where word splitting is performed, this expands each +positional parameter to a separate word; if not within double +quotes, these words are subject to word splitting. +In contexts where word splitting is not performed, +this expands to a single word +with each positional parameter separated by a space. +When the +expansion occurs within double quotes, and word splitting is performed, +each parameter expands to a separate word. That is, @code{"$@@"} is equivalent to @code{"$1" "$2" @dots{}}. If the double-quoted expansion occurs within a word, the expansion of @@ -1651,8 +1739,8 @@ to the filename used to invoke Bash, as given by argument zero. At shell startup, set to the absolute pathname used to invoke the shell or shell script being executed as passed in the environment or argument list. -Subsequently, expands to the last argument to the previous command, -after expansion. +Subsequently, expands to the last argument to the previous simple +command executed in the foreground, after expansion. Also set to the full pathname used to invoke each command executed and placed in the environment exported to that command. When checking mail, this parameter holds the name of the mail file. @@ -1708,10 +1796,11 @@ original word are removed unless they have been quoted themselves (@var{quote removal}). Only brace expansion, word splitting, and filename expansion -can change the number of words of the expansion; other expansions +can increase the number of words of the expansion; other expansions expand a single word to a single word. The only exceptions to this are the expansions of -@code{"$@@"} (@pxref{Special Parameters}) and @code{"$@{@var{name}[@@]@}"} +@code{"$@@"} and @code{$*} (@pxref{Special Parameters}), and +@code{"$@{@var{name}[@@]@}"} and @code{$@{@var{name}[*]@}} (@pxref{Arrays}). After all expansions, @code{quote removal} (@pxref{Quote Removal}) @@ -1765,8 +1854,6 @@ and any characters special to other expansions are preserved in the result. It is strictly textual. Bash does not apply any syntactic interpretation to the context of the expansion or the text between the braces. -To avoid conflicts with parameter expansion, the string @samp{$@{} -is not considered eligible for brace expansion. A correctly-formed brace expansion must contain unquoted opening and closing braces, and at least one unquoted comma or a valid @@ -1776,7 +1863,8 @@ Any incorrectly formed brace expansion is left unchanged. A @{ or @samp{,} may be quoted with a backslash to prevent its being considered part of a brace expression. To avoid conflicts with parameter expansion, the string @samp{$@{} -is not considered eligible for brace expansion. +is not considered eligible for brace expansion, +and inhibits brace expansion until the closing @samp{@}}.. This construct is typically used as shorthand when the common prefix of the strings to be generated is longer than in the @@ -1859,6 +1947,12 @@ The string that would be displayed by @samp{dirs +@var{N}} The string that would be displayed by @samp{dirs -@var{N}} @end table +Bash also performs tilde expansion on words satisfying the conditions of +variable assignments (@pxref{Shell Parameters}) +when they appear as arguments to simple commands. +Bash does not do this, except for the @var{declaration} commands listed +above, when in @sc{posix} mode. + @node Shell Parameter Expansion @subsection Shell Parameter Expansion @cindex parameter expansion @@ -1887,12 +1981,14 @@ interpreted as part of its name. If the first character of @var{parameter} is an exclamation point (!), and @var{parameter} is not a @var{nameref}, -it introduces a level of variable indirection. -Bash uses the value of the variable formed from the rest of -@var{parameter} as the name of the variable; this variable is then -expanded and that value is used in the rest of the substitution, rather -than the value of @var{parameter} itself. +it introduces a level of indirection. +Bash uses the value formed by expanding the rest of +@var{parameter} as the new @var{parameter}; this is then +expanded and that value is used in the rest of the expansion, rather +than the expansion of the original @var{parameter}. This is known as @code{indirect expansion}. +The value is subject to tilde expansion, +parameter expansion, command substitution, and arithmetic expansion. If @var{parameter} is a nameref, this expands to the name of the variable referenced by @var{parameter} instead of performing the complete indirect expansion. @@ -2120,8 +2216,8 @@ array, and an index of -1 references the last element. @item $@{@var{parameter}#@var{word}@} @itemx $@{@var{parameter}##@var{word}@} The @var{word} -is expanded to produce a pattern just as in filename -expansion (@pxref{Filename Expansion}). If the pattern matches +is expanded to produce a pattern and matched according to the rules +described below (@pxref{Pattern Matching}). If the pattern matches the beginning of the expanded value of @var{parameter}, then the result of the expansion is the expanded value of @var{parameter} with the shortest matching pattern (the @samp{#} case) or the @@ -2136,8 +2232,9 @@ array in turn, and the expansion is the resultant list. @item $@{@var{parameter}%@var{word}@} @itemx $@{@var{parameter}%%@var{word}@} -The @var{word} is expanded to produce a pattern just as in -filename expansion. +The @var{word} +is expanded to produce a pattern and matched according to the rules +described below (@pxref{Pattern Matching}). If the pattern matches If the pattern matches a trailing portion of the expanded value of @var{parameter}, then the result of the expansion is the value of @var{parameter} with the shortest matching pattern (the @samp{%} case) @@ -2156,6 +2253,8 @@ The @var{pattern} is expanded to produce a pattern just as in filename expansion. @var{Parameter} is expanded and the longest match of @var{pattern} against its value is replaced with @var{string}. +The match is performed according to the rules described below +(@pxref{Pattern Matching}). If @var{pattern} begins with @samp{/}, all matches of @var{pattern} are replaced with @var{string}. Normally only the first match is replaced. If @var{pattern} begins with @samp{#}, it must match at the beginning @@ -2213,7 +2312,7 @@ The expansion is a string that is the value of @var{parameter} quoted in a format that can be reused as input. @item E The expansion is a string that is the value of @var{parameter} with backslash -escape sequences expanded as with the @code{$'@dots{}'} quoting mechansim. +escape sequences expanded as with the @code{$'@dots{}'} quoting mechanism. @item P The expansion is a string that is the result of expanding the value of @var{parameter} as if it were a prompt string (@pxref{Controlling the Prompt}). @@ -2410,18 +2509,23 @@ without regard to the case of alphabetic characters. When a pattern is used for filename expansion, the character @samp{.} at the start of a filename or immediately following a slash must be matched explicitly, unless the shell option @code{dotglob} is set. -When matching a filename, the slash character must always be -matched explicitly. +The filenames @samp{.} and @samp{..} must always be matched explicitly, +even if @code{dotglob} is set. In other cases, the @samp{.} character is not treated specially. +When matching a filename, the slash character must always be +matched explicitly by a slash in the pattern, but in other matching +contexts it can be matched by a special pattern character as described +below (@pxref{Pattern Matching}). + See the description of @code{shopt} in @ref{The Shopt Builtin}, for a description of the @code{nocaseglob}, @code{nullglob}, @code{failglob}, and @code{dotglob} options. The @env{GLOBIGNORE} -shell variable may be used to restrict the set of filenames matching a +shell variable may be used to restrict the set of file names matching a pattern. If @env{GLOBIGNORE} -is set, each matching filename that also matches one of the patterns in +is set, each matching file name that also matches one of the patterns in @env{GLOBIGNORE} is removed from the list of matches. If the @code{nocaseglob} option is set, the matching against the patterns in @env{GLOBIGNORE} is performed without regard to case. @@ -2533,6 +2637,12 @@ Matches one of the given patterns. Matches anything except one of the given patterns. @end table +Complicated extended pattern matching against long strings is slow, +especially when the patterns contain alternations and the strings +contain multiple matches. +Using separate matches against shorter strings, or using arrays of +strings instead of a single long string, may be faster. + @node Quote Removal @subsection Quote Removal @@ -2565,6 +2675,9 @@ In this case, for each redirection operator except than 10 and assign it to @{@var{varname}@}. If >&- or <&- is preceded by @{@var{varname}@}, the value of @var{varname} defines the file descriptor to close. +If @{@var{varname}@} is supplied, the redirection persists beyond +the scope of the command, allowing the shell programmer to manage +the file descriptor himself. In the following descriptions, if the file descriptor number is omitted, and the first character of the redirection operator is @@ -2761,7 +2874,7 @@ A variant of here documents, the format is: @end example The @var{word} undergoes -brace expansion, tilde expansion, parameter and variable expansion, +tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote removal. Pathname expansion and word splitting are not performed. The result is supplied as a single string, @@ -2922,9 +3035,10 @@ A full search of the directories in @env{$PATH} is performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named @code{command_not_found_handle}. -If that function exists, it is invoked with the original command and +If that function exists, it is invoked in a separate execution environment +with the original command and the original command's arguments as its arguments, and the function's -exit status becomes the exit status of the shell. +exit status becomes the exit status of that subshell. If that function is not defined, the shell prints an error message and returns an exit status of 127. @@ -3262,7 +3376,7 @@ Many of the builtins have been extended by @sc{posix} or Bash. Unless otherwise noted, each builtin command documented as accepting options preceded by @samp{-} accepts @samp{--} to signify the end of the options. -The @code{:}, @code{true}, @code{false}, and @code{test} +The @code{:}, @code{true}, @code{false}, and @code{test}/@code{[} builtins do not accept options and do not treat @samp{--} specially. The @code{exit}, @code{logout}, @code{return}, @code{break}, @code{continue}, @code{let}, @@ -3417,6 +3531,7 @@ cannot be executed for some reason, a non-interactive shell exits, unless the @code{execfail} shell option is enabled. In that case, it returns failure. An interactive shell returns failure if the file cannot be executed. +A subshell exits unconditionally if @code{exec} fails. If no @var{command} is specified, redirections may be used to affect the current shell environment. If there are no redirection errors, the return status is zero; otherwise the return status is non-zero. @@ -3525,7 +3640,7 @@ The @option{-d} option causes the shell to forget the remembered location of each @var{name}. If the @option{-t} option is supplied, the full pathname to which each @var{name} corresponds is printed. If multiple @var{name} arguments are -supplied with @option{-t} the @var{name} is printed before the hashed +supplied with @option{-t}, the @var{name} is printed before the hashed full pathname. The @option{-l} option causes output to be displayed in a format that may be reused as input. @@ -3587,7 +3702,7 @@ If @var{n} is not supplied, the return value is the exit status of the last command executed in the function. If @code{return} is executed by a trap handler, the last command used to determine the status is the last command executed before the trap handler. -if @code{return} is executed during a @code{DEBUG} trap, the last command +If @code{return} is executed during a @code{DEBUG} trap, the last command used to determine the status is the last command executed by the trap handler before @code{return} was invoked. @code{return} may also be used to terminate execution of a script @@ -3668,7 +3783,7 @@ expressions using a set of rules based on the number of arguments. The expression is false. @item 1 argument -The expression is true if and only if the argument is not null. +The expression is true if, and only if, the argument is not null. @item 2 arguments If the first argument is @samp{!}, the expression is true if and @@ -3681,18 +3796,25 @@ false. @item 3 arguments The following conditions are applied in the order listed. + +@enumerate +@item If the second argument is one of the binary conditional operators (@pxref{Bash Conditional Expressions}), the result of the expression is the result of the binary test using the first and third arguments as operands. The @samp{-a} and @samp{-o} operators are considered binary operators when there are three arguments. +@item If the first argument is @samp{!}, the value is the negation of the two-argument test using the second and third arguments. +@item If the first argument is exactly @samp{(} and the third argument is exactly @samp{)}, the result is the one-argument test of the second argument. +@item Otherwise, the expression is false. +@end enumerate @item 4 arguments If the first argument is @samp{!}, the result is the negation of @@ -4086,8 +4208,8 @@ the environment. @end table Using @samp{+} instead of @samp{-} turns off the attribute instead, -with the exceptions that @samp{+a} -may not be used to destroy an array variable and @samp{+r} will not +with the exceptions that @samp{+a} and @samp{+A} +may not be used to destroy array variables and @samp{+r} will not remove the readonly attribute. When used in a function, @code{declare} makes each @var{name} local, as with the @code{local} command, unless the @option{-g} option is used. @@ -4265,8 +4387,8 @@ parent. @item mapfile @btindex mapfile @example -mapfile [-d @var{delim}] [-n @var{count}] [-O @var{origin}] [-s @var{count}] [-t] [-u @var{fd}] - [-C @var{callback}] [-c @var{quantum}] [@var{array}] +mapfile [-d @var{delim}] [-n @var{count}] [-O @var{origin}] [-s @var{count}] + [-t] [-u @var{fd}] [-C @var{callback}] [-c @var{quantum}] [@var{array}] @end example Read lines from the standard input into the indexed array variable @var{array}, @@ -4280,6 +4402,8 @@ Options, if supplied, have the following meanings: @item -d The first character of @var{delim} is used to terminate each input line, rather than newline. +If @var{delim} is the empty string, @code{mapfile} will terminate a line +when it reads a NUL character. @item -n Copy at most @var{count} lines. If @var{count} is 0, all lines are copied. @item -O @@ -4292,7 +4416,7 @@ Remove a trailing @var{delim} (default newline) from each line read. @item -u Read lines from file descriptor @var{fd} instead of the standard input. @item -C -Evaluate @var{callback} each time @var{quantum}P lines are read. +Evaluate @var{callback} each time @var{quantum} lines are read. The @option{-c} option specifies @var{quantum}. @item -c Specify the number of lines read between each call to @var{callback}. @@ -4405,11 +4529,13 @@ Other @var{name} arguments are ignored. @item -d @var{delim} The first character of @var{delim} is used to terminate the input line, rather than newline. +If @var{delim} is the empty string, @code{read} will terminate a line +when it reads a NUL character. @item -e Readline (@pxref{Command Line Editing}) is used to obtain the line. Readline uses the current (or default, if line editing was not previously -active) editing settings. +active) editing settings, but uses Readline's default filename completion. @item -i @var{text} If Readline is being used to read the line, @var{text} is placed into @@ -4439,7 +4565,7 @@ The prompt is displayed only if input is coming from a terminal. @item -r If this option is given, backslash does not act as an escape character. The backslash is considered to be part of the line. -In particular, a backslash-newline pair may not be used as a line +In particular, a backslash-newline pair may not then be used as a line continuation. @item -s @@ -4469,8 +4595,8 @@ Read input from file descriptor @var{fd}. @item readarray @btindex readarray @example -readarray [-d @var{delim}] [-n @var{count}] [-O @var{origin}] [-s @var{count}] [-t] [-u @var{fd}] - [-C @var{callback}] [-c @var{quantum}] [@var{array}] +readarray [-d @var{delim}] [-n @var{count}] [-O @var{origin}] [-s @var{count}] + [-t] [-u @var{fd}] [-C @var{callback}] [-c @var{quantum}] [@var{array}] @end example Read lines from the standard input into the indexed array variable @var{array}, @@ -4972,7 +5098,8 @@ The settings can be either those listed below, or, if the @option{-o} option is used, those available with the @option{-o} option to the @code{set} builtin command (@pxref{The Set Builtin}). With no options, or with the @option{-p} option, a list of all settable -options is displayed, with an indication of whether or not each is set. +options is displayed, with an indication of whether or not each is set; +if @var{optnames} are supplied, the output is restricted to those options. The @option{-p} option causes output to be displayed in a form that may be reused as input. Other options have the following meanings: @@ -5012,6 +5139,12 @@ option. The list of @code{shopt} options is: @table @code +@item assoc_expand_once +If set, the shell suppresses multiple evaluation of associative array +subscripts during arithmetic expression evaluation, while executing +builtins that can perform variable assignments, +and while executing builtins that perform array dereferencing. + @item autocd If set, a command name that is the name of a directory is executed as if it were the argument to the @code{cd} command. @@ -5044,15 +5177,18 @@ intervening command (@pxref{Job Control}). The shell always postpones exiting if any jobs are stopped. @item checkwinsize -If set, Bash checks the window size after each command - and, if necessary, updates the values of +If set, Bash checks the window size after each external (non-builtin) +command and, if necessary, updates the values of @env{LINES} and @env{COLUMNS}. +This option is enabled by default. @item cmdhist If set, Bash attempts to save all lines of a multiple-line command in the same history entry. This allows easy re-editing of multi-line commands. +This option is enabled by default, but only has an effect if command +history is enabled (@pxref{Bash History Facilities}). @item compat31 If set, Bash @@ -5106,6 +5242,11 @@ and does not reset the loop state when a shell function is executed (this allows @code{break} or @code{continue} in a shell function to affect loops in the caller's context). +@item compat44 +If set, Bash +saves the positional parameters to BASH_ARGV and BASH_ARGC before they are +used, regardless of whether or not extended debugging mode is enabled. + @item complete_fullquote If set, Bash quotes all shell metacharacters in filenames and directory names when @@ -5138,6 +5279,8 @@ if the directory name initially supplied does not exist. @item dotglob If set, Bash includes filenames beginning with a `.' in the results of filename expansion. +The filenames @samp{.} and @samp{..} must always be matched explicitly, +even if @code{dotglob} is set. @item execfail If this is set, a non-interactive shell will not exit if @@ -5271,6 +5414,17 @@ If enabled, and the @code{cmdhist} option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible. +@item localvar_inherit +If set, local variables inherit the value and attributes of a variable of +the same name that exists at a previous scope before any new value is +assigned. The @var{nameref} attribute is not inherited. + +@item localvar_unset +If set, calling @code{unset} on local variables in previous function scopes +marks them so subsequent lookups find them unset until that function +returns. This is identical to the behavior of unsetting local variables +at the current function scope. + @item login_shell The shell sets this option if it is started as a login shell (@pxref{Invoking Bash}). @@ -5306,6 +5460,12 @@ If set, the programmable completion facilities (@pxref{Programmable Completion}) are enabled. This option is enabled by default. +@item progcomp_alias +If set, and programmable completion is enabled, Bash treats a command +name that doesn't have any completions as a possible alias and attempts +alias expansion. If it has an alias, Bash attempts programmable +completion using the command word resulting from the expanded alias. + @item promptvars If set, prompt strings undergo parameter expansion, command substitution, arithmetic @@ -5444,6 +5604,8 @@ sequences that are expanded before @env{PS1} is displayed. @item PS2 The secondary prompt string. The default value is @samp{> }. +@env{PS2} is expanded in the same way as @env{PS1} before being +displayed. @end vtable @@ -5476,6 +5638,10 @@ reading any startup files. This variable is readonly. Expands to the process ID of the current Bash process. This differs from @code{$$} under certain circumstances, such as subshells that do not require Bash to be re-initialized. +Assignments to @env{BASHPID} have no effect. +If @code{BASHPID} +is unset, it loses its special properties, even if it is +subsequently reset. @item BASH_ALIASES An associative array variable whose members correspond to the internal @@ -5499,6 +5665,9 @@ The shell sets @code{BASH_ARGC} only when in extended debugging mode (see @ref{The Shopt Builtin} for a description of the @code{extdebug} option to the @code{shopt} builtin). +Setting @code{extdebug} after the shell has started to execute a script, +or referencing this variable when @code{extdebug} is not set, +may result in inconsistent values. @item BASH_ARGV An array variable containing all of the parameters in the current bash @@ -5510,6 +5679,19 @@ The shell sets @code{BASH_ARGV} only when in extended debugging mode (see @ref{The Shopt Builtin} for a description of the @code{extdebug} option to the @code{shopt} builtin). +Setting @code{extdebug} after the shell has started to execute a script, +or referencing this variable when @code{extdebug} is not set, +may result in inconsistent values. + +@item BASH_ARGV0 +When referenced, this variable expands to the name of the shell or shell +script (identical to @code{$0}; @xref{Special Parameters}, +for the description of special parameter 0). +Assignment to @code{BASH_ARGV0} +causes the value assigned to also be assigned to @code{$0}. +If @code{BASH_ARGV0} +is unset, it loses its special properties, even if it is +subsequently reset. @item BASH_CMDS An associative array variable whose members correspond to the internal @@ -5726,6 +5908,23 @@ Emacs shell buffer and disables line editing. Similar to @code{BASH_ENV}; used when the shell is invoked in @sc{posix} Mode (@pxref{Bash POSIX Mode}). +@item EPOCHREALTIME +Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch as a floating point value with micro-second granularity +(see the documentation for the C library function @var{time} for the +definition of Epoch). +Assignments to @env{EPOCHREALTIME} are ignored. +If @env{EPOCHREALTIME} is unset, it loses its special properties, even if +it is subsequently reset. + +@item EPOCHSECONDS +Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see the documentation for the C library function +@var{time} for the definition of Epoch). +Assignments to @env{EPOCHSECONDS} are ignored. +If @env{EPOCHSECONDS} is unset, it loses its special properties, even if +it is subsequently reset. + @item EUID The numeric effective user id of the current user. This variable is readonly. @@ -5783,9 +5982,9 @@ nesting level. Function invocations that exceed this nesting level will cause the current command to abort. @item GLOBIGNORE -A colon-separated list of patterns defining the set of filenames to +A colon-separated list of patterns defining the set of file names to be ignored by filename expansion. -If a filename matched by a filename expansion pattern also matches one +If a file name matched by a filename expansion pattern also matches one of the patterns in @env{GLOBIGNORE}, it is removed from the list of matches. The pattern matching honors the setting of the @code{extglob} shell @@ -5916,7 +6115,7 @@ as the sole input. If set, the value denotes the number of consecutive @code{EOF} characters that can be read as the first character on an input line before the shell will exit. If the variable exists but does not -have a numeric value (or has no value) then the default is 10. +have a numeric value, or has no value, then the default is 10. If the variable does not exist, then @code{EOF} signifies the end of input to the shell. This is only in effect for interactive shells. @@ -5924,6 +6123,11 @@ input to the shell. This is only in effect for interactive shells. The name of the Readline initialization file, overriding the default of @file{~/.inputrc}. +@item INSIDE_EMACS +If Bash finds this variable in the environment when the shell +starts, it assumes that the shell is running in an Emacs shell buffer +and may disable line editing depending on the value of @env{TERM}. + @item LANG Used to determine the locale category for any category not specifically selected with a variable starting with @code{LC_}. @@ -6007,7 +6211,9 @@ as if the command @code{set -o posix} @end example @noindent -had been executed. +had been executed. +When the shell enters @sc{posix} mode, it sets this variable if it was +not already set. @item PPID The process @sc{id} of the shell's parent process. This variable @@ -6034,10 +6240,11 @@ The value of this variable is used as the prompt for the @code{select} command prompts with @samp{#? } @item PS4 -The value is the prompt printed before the command line is echoed -when the @option{-x} option is set (@pxref{The Set Builtin}). -The first character of @env{PS4} is replicated multiple times, as -necessary, to indicate multiple levels of indirection. +The value of this parameter is expanded like @var{PS1} +and the expanded value is the prompt printed before the command line +is echoed when the @option{-x} option is set (@pxref{The Set Builtin}). +The first character of the expanded value is replicated multiple times, +as necessary, to indicate multiple levels of indirection. The default is @samp{+ }. @item PWD @@ -6180,9 +6387,12 @@ This chapter describes features unique to Bash. @section Invoking Bash @example -bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o @var{option}] [-O @var{shopt_option}] [@var{argument} @dots{}] -bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o @var{option}] [-O @var{shopt_option}] -c @var{string} [@var{argument} @dots{}] -bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o @var{option}] [-O @var{shopt_option}] [@var{argument} @dots{}] +bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o @var{option}] + [-O @var{shopt_option}] [@var{argument} @dots{}] +bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o @var{option}] + [-O @var{shopt_option}] -c @var{string} [@var{argument} @dots{}] +bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o @var{option}] + [-O @var{shopt_option}] [@var{argument} @dots{}] @end example All of the single-character options used with the @code{set} builtin @@ -6286,7 +6496,8 @@ Make the shell a restricted shell (@pxref{The Restricted Shell}). If this option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be set -when invoking an interactive shell. +when invoking an interactive shell or when reading input +through a pipe. @item -D A list of all double-quoted strings preceded by @samp{$} @@ -6526,7 +6737,10 @@ signals @code{SIGTTIN}, @code{SIGTTOU}, and @code{SIGTSTP}. Bash expands and displays @env{PS1} before reading the first line of a command, and expands and displays @env{PS2} before reading the second and subsequent lines of a multi-line command. -Bash displays @env{PS0} after it reads a command but before executing it. +Bash expands and displays @env{PS0} after it reads a command but before +executing it. +See @ref{Controlling the Prompt}, for a complete list of prompt +string escape sequences. @item Bash executes the value of the @env{PROMPT_COMMAND} variable as a command @@ -6558,7 +6772,7 @@ In the absence of any traps, Bash ignores @code{SIGTERM} @item In the absence of any traps, @code{SIGINT} is caught and handled -((@pxref{Signals}). +(@pxref{Signals}). @code{SIGINT} will interrupt some shell builtins. @item @@ -6616,9 +6830,13 @@ printing @env{$PS1} (@pxref{Bash Variables}). @cindex expressions, conditional Conditional expressions are used by the @code{[[} compound command -and the @code{test} and @code{[} builtin commands. +and the @code{test} and @code{[} builtin commands. The @code{test} +and @code{[} commands determine their behavior based on the number +of arguments; see the descriptions of those commands for any other +command-specific actions. -Expressions may be unary or binary. +Expressions may be unary or binary, +and are formed from the following primaries. Unary expressions are often used to examine the status of a file. There are string operators and numeric comparison operators as well. Bash handles several filenames specially when they are used in @@ -6758,6 +6976,8 @@ is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to @var{arg2}, respectively. @var{Arg1} and @var{arg2} may be positive or negative integers. +When used with the @code{[[} command, @var{Arg1} and @var{Arg2} +are evaluated as arithmetic expressions (@pxref{Shell Arithmetic}). @end table @node Shell Arithmetic @@ -6907,10 +7127,11 @@ unless the @code{expand_aliases} shell option is set using @code{shopt} (@pxref{The Shopt Builtin}). The rules concerning the definition and use of aliases are -somewhat confusing. Bash -always reads at least one complete line -of input before executing any -of the commands on that line. Aliases are expanded when a +somewhat confusing. Bash +always reads at least one complete line of input, +and all lines that make up a compound command, +before executing any of the commands on that line or the compound command. +Aliases are expanded when a command is read, not when it is executed. Therefore, an alias definition appearing on the same line as another command does not take effect until the next line of input is read. @@ -7047,12 +7268,16 @@ The @code{unset} builtin is used to destroy arrays. @code{unset @var{name}[@var{subscript}]} destroys the array element at index @var{subscript}. Negative subscripts to indexed arrays are interpreted as described above. -Care must be taken to avoid unwanted side effects caused by filename -expansion. +Unsetting the last element of an array variable does not unset the variable. @code{unset @var{name}}, where @var{name} is an array, removes the entire array. A subscript of @samp{*} or @samp{@@} also removes the entire array. +When using a variable name with a subscript as an argument to a command, +such as with @code{unset}, without using the word expansion syntax +described above, the argument is subject to the shell's filename expansion. +If filename expansion is not desired, the argument should be quoted. + The @code{declare}, @code{local}, and @code{readonly} builtins each accept a @option{-a} option to specify an indexed array and a @option{-A} option to specify an associative array. @@ -7186,7 +7411,8 @@ has a non-null value, then the value is executed just as if it had been typed on the command line. In addition, the following table describes the special characters which -can appear in the prompt variables @env{PS1} to @env{PS4}: +can appear in the prompt variables @env{PS0}, @env{PS1}, @env{PS2}, and +@env{PS4}: @table @code @item \a @@ -7260,7 +7486,7 @@ shell session. After the string is decoded, it is expanded via parameter expansion, command substitution, arithmetic expansion, and quote removal, subject to the value of the -@code{promptvars} shell option (@pxref{Bash Builtins}). +@code{promptvars} shell option (@pxref{The Shopt Builtin}). @node The Restricted Shell @section The Restricted Shell @@ -7331,6 +7557,9 @@ startup files. The following list is what's changed when `@sc{posix} mode' is in effect: @enumerate +@item +Bash ensures that the @env{POSIXLY_CORRECT} variable is set. + @item When a command in the hash table no longer exists, Bash will re-search @env{$PATH} to find the new location. This is also available with @@ -7530,6 +7759,12 @@ the @option{-e} option from the parent shell. When the @code{inherit_errexit} option is not enabled, Bash clears the @option{-e} option in such subshells. +@item +Enabling @sc{posix} mode has the effect of setting the +@code{shift_verbose} option, so numeric arguments to @code{shift} +that exceed the number of positional parameters will result in an +error message. + @item When the @code{alias} builtin displays alias definitions, it does not display them with a leading @samp{alias } unless the @option{-p} option @@ -7550,6 +7785,13 @@ constructed from @code{$PWD} and the directory name supplied as an argument does not refer to an existing directory, @code{cd} will fail instead of falling back to @var{physical} mode. +@item +When the @code{cd} builtin cannot change a directory because the +length of the pathname +constructed from @code{$PWD} and the directory name supplied as an argument +exceeds @var{PATH_MAX} when all symbolic links are expanded, @code{cd} will +fail instead of attempting to use only the supplied directory name. + @item The @code{pwd} builtin verifies that the value it prints is the same as the current directory, even if it is not asked to check the file system with the @@ -7738,6 +7980,11 @@ The @code{jobs} command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, Bash does not print another warning, and any stopped jobs are terminated. +When the shell is waiting for a job or process using the @code{wait} +builtin, and job control is enabled, @code{wait} will return when the +job changes state. The @option{-f} option will force @code{wait} to wait +until the job or process terminates before returning. + @node Job Control Builtins @section Job Control Builtins @@ -7834,7 +8081,7 @@ or non-zero if an error occurs or an invalid option is encountered. @item wait @btindex wait @example -wait [-n] [@var{jobspec} or @var{pid} @dots{}] +wait [-fn] [@var{jobspec} or @var{pid} @dots{}] @end example Wait until the child process specified by each process @sc{id} @var{pid} @@ -7845,6 +8092,9 @@ If no arguments are given, all currently active child processes are waited for, and the return status is zero. If the @option{-n} option is supplied, @code{wait} waits for any job to terminate and returns its exit status. +If the @option{-f} option is supplied, and job control is enabled, +@code{wait} forces each @var{pid} or @var{jobspec} to terminate before +returning its status, intead of returning when it changes status. If neither @var{jobspec} nor @var{pid} specifies an active child process of the shell, the return status is 127. @@ -7997,12 +8247,28 @@ To find out more about the options and arguments that the @code{configure} script understands, type @example -bash-2.04$ ./configure --help +bash-4.2$ ./configure --help @end example @noindent at the Bash prompt in your Bash source directory. +If you want to build Bash in a directory separate from the source +directory -- to build for multiple architectures, for example -- +just use the full path to the configure script. The following commands +will build bash in a directory under @file{/usr/local/build} from +the source code in @file{/usr/local/src/bash-4.4}: + +@example +mkdir /usr/local/build/bash-4.4 +cd /usr/local/build/bash-4.4 +bash /usr/local/src/bash-4.4/configure +make +@end example + +See @ref{Compiling For Multiple Architectures} for more information +about building in a directory separate from the source. + If you need to do unusual things to compile Bash, please try to figure out how @code{configure} could check whether or not to do them, and mail diffs or instructions to @@ -8052,7 +8318,9 @@ own directory. To do this, you must use a version of @code{make} that supports the @code{VPATH} variable, such as GNU @code{make}. @code{cd} to the directory where you want the object files and executables to go and run -the @code{configure} script from the source directory. You may need to +the @code{configure} script from the source directory +(@pxref{Basic Installation}). +You may need to supply the @option{--srcdir=PATH} argument to tell @code{configure} where the source files are. @code{configure} automatically checks for the source code in the directory that @code{configure} is in and in `..'. @@ -8224,7 +8492,7 @@ compiled and linked, rather than changing run-time features. @table @code @item --enable-largefile -Enable support for @uref{http://www.sas.com/standards/large_file/x_open.20Mar96.html, +Enable support for @uref{http://www.unix.org/version2/whatsnew/lfs20mar.html, large files} if the operating system requires special compiler options to build programs which can access large files. This is enabled by default, if the operating system provides large file support. @@ -8301,6 +8569,12 @@ Include support for coprocesses and the @code{coproc} reserved word @item --enable-debugger Include support for the bash debugger (distributed separately). +@item --enable-dev-fd-stat-broken +If calling @code{stat} on /dev/fd/@var{N} returns different results than +calling @code{fstat} on file descriptor @var{N}, supply this option to +enable a workaround. +This has implications for conditional commands that test file attributes. + @item --enable-direxpand-default Cause the @code{direxpand} shell option (@pxref{The Shopt Builtin}) to be enabled by default when the shell starts. @@ -8373,7 +8647,7 @@ If Readline is not enabled, this option has no effect. @item --enable-prompt-string-decoding Turn on the interpretation of a number of backslash-escaped characters -in the @env{$PS1}, @env{$PS2}, @env{$PS3}, and @env{$PS4} prompt +in the @env{$PS0}, @env{$PS1}, @env{$PS2}, and @env{$PS4} prompt strings. See @ref{Controlling the Prompt}, for a complete list of prompt string escape sequences. diff --git a/doc/builtins.0 b/doc/builtins.0 index 3706dad49..76f08b774 100644 --- a/doc/builtins.0 +++ b/doc/builtins.0 @@ -14,7 +14,7 @@ NNAAMMEE BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS Unless otherwise noted, each builtin command documented in this section as accepting options preceded by -- accepts ---- to signify the end of the - options. The ::, ttrruuee, ffaallssee, and tteesstt builtins do not accept options + options. The ::, ttrruuee, ffaallssee, and tteesstt/[[ builtins do not accept options and do not treat ---- specially. The eexxiitt, llooggoouutt, rreettuurrnn, bbrreeaakk, ccoonn-- ttiinnuuee, lleett, and sshhiifftt builtins accept and process arguments beginning with -- without requiring ----. Other builtins that accept arguments but @@ -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,188 +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. The possible completions are the members - of the resultant list which match the word being com- - pleted. + 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- + 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 - the exceptions that ++aa may not be used to destroy an array vari- - 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 - 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 + Using `+' instead of `-' turns off the attribute instead, with + the exceptions that ++aa and ++AA may not be used to destroy array + variables 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 + variable 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 assign- + ment syntax to create array variables, additional attributes do + not take effect until subsequent assignments. The return value + is 0 unless an invalid option is encountered, an attempt is made + to define a function using ``-f foo=bar'', an attempt is made to + assign a value to a readonly variable, an attempt is made to + assign a value to an array variable without using the compound + assignment syntax (see 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 @@ -504,57 +517,58 @@ 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. If _c_o_m_m_a_n_d is not specified, any redi- - rections take effect in the current shell, and the return status - is 0. If there is a redirection error, the return status is 1. + not be executed for some reason, a non-interactive shell exits, + unless the 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, @@ -582,9 +596,9 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 + 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- - wise. If _f_i_r_s_t is not specified it is set to the previous com- + 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 @@ -597,7 +611,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 intepreted the same as + 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. @@ -698,6 +712,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS hhiissttoorryy [[_n]] hhiissttoorryy --cc hhiissttoorryy --dd _o_f_f_s_e_t + hhiissttoorryy --dd _s_t_a_r_t-_e_n_d hhiissttoorryy --aannrrww [_f_i_l_e_n_a_m_e] hhiissttoorryy --pp _a_r_g [_a_r_g _._._.] hhiissttoorryy --ss _a_r_g [_a_r_g _._._.] @@ -713,7 +728,15 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + 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 + 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 + 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 the current bbaasshh session, but not already appended to the @@ -812,7 +835,9 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + 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 copied. --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default @@ -960,27 +985,30 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + 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. + 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 @@ -988,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 - continuation. + slash is considered to be part of the line. In particu- + lar, a backslash-newline pair may not then be used as a + line continuation. --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: @@ -1120,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 @@ -1137,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. @@ -1153,108 +1181,109 @@ 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 - whether or not each is set. The --pp option causes output to be - displayed in a form that may be reused as input. Other options - have the following meanings: + of all settable options is displayed, with an indication of + whether or not each is set; if _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 + 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 @@ -1277,6 +1306,12 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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, while executing builtins that can per- + form variable assignments, and while executing builtins + that perform array dereferencing. 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. @@ -1304,188 +1339,208 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS (see JJOOBB CCOONNTTRROOLL above). The shell always postpones exiting if any jobs are stopped. cchheecckkwwiinnssiizzee - If set, bbaasshh checks the window size after each command - and, if necessary, updates the values of LLIINNEESS and CCOOLL-- - UUMMNNSS. - 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. + If set, bbaasshh checks the window size after each external + (non-builtin) command and, if necessary, updates the + values of LLIINNEESS and CCOOLLUUMMNNSS. This option is enabled by + default. + 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 + 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. + 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 + attribute is not inherited. + llooccaallvvaarr__uunnsseett + If set, calling uunnsseett on local variables in previous + function scopes marks them so subsequent lookups find + them unset until that function returns. This is identi- + cal to the behavior of unsetting local variables at the + current function scope. llooggiinn__sshheellll The shell sets this option if it is started as a login shell (see IINNVVOOCCAATTIIOONN above). The value may not be @@ -1517,52 +1572,59 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS If set, the programmable completion facilities (see PPrroo-- ggrraammmmaabbllee CCoommpplleettiioonn above) are enabled. This option is enabled by default. + pprrooggccoommpp__aalliiaass + If set, and programmable completion is enabled, bbaasshh + treats a command name that doesn't have any completions + as a possible alias and attempts alias expansion. If it + has an alias, bbaasshh attempts programmable completion + using the command word resulting from the expanded + alias. 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. @@ -1579,120 +1641,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: @@ -1701,12 +1763,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) @@ -1715,72 +1777,75 @@ 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- only. - wwaaiitt [--nn] [_n _._._.] + wwaaiitt [--ffnn] [_i_d _._._.] Wait for each specified child process and return its termination - status. Each _n may be a process ID or a job specification; if a - job spec is given, all processes in that job's pipeline are - waited for. If _n is not given, all currently active child pro- + 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 _n specifies a non-existent process - or job, the return status is 127. Otherwise, the return status - is the exit status of the last process or job waited for. + 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 + last process or job waited for. SSEEEE AALLSSOO bash(1), sh(1) -GNU Bash-4.2 2004 Apr 20 BASH_BUILTINS(1) +GNU Bash 5.0 2004 Apr 20 BASH_BUILTINS(1) diff --git a/doc/builtins.1 b/doc/builtins.1 index 829a49c27..4413c76f0 100644 --- a/doc/builtins.1 +++ b/doc/builtins.1 @@ -7,7 +7,7 @@ .de FN \fI\|\\$1\|\fP .. -.TH BASH_BUILTINS 1 "2004 Apr 20" "GNU Bash-4.2" +.TH BASH_BUILTINS 1 "2004 Apr 20" "GNU Bash 5.0" .SH NAME bash, :, ., [, alias, bg, bind, break, builtin, caller, cd, command, compgen, complete, diff --git a/doc/builtins.ps b/doc/builtins.ps index f6aec86f5..c2f8de15d 100644 --- a/doc/builtins.ps +++ b/doc/builtins.ps @@ -1,13 +1,13 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.3 -%%CreationDate: Wed Aug 31 10:24:00 2016 +%%CreationDate: Wed Jan 2 09:14:38 2019 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%+ font Symbol %%+ font Courier %%DocumentSuppliedResources: procset grops 1.22 3 -%%Pages: 23 +%%Pages: 25 %%PageOrder: Ascend %%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait @@ -257,43 +257,44 @@ imes, trap, true, type, typeset, ulimit, umask, unalias, unset, w)108 .329 E(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .063 (Unless otherwise noted, each b)108 172.8 R .062(uiltin command documen\ ted in this section as accepting options preceded by)-.2 F F2108 -184.8 Q F0(accepts)2.533 E F22.533 E F0 .034 -(to signify the end of the options.)2.533 F(The)5.034 E F2(:)2.534 E F0 -(,)A F2(true)2.534 E F0(,)A F2(false)2.534 E F0 2.534(,a)C(nd)-2.534 E -F2(test)2.534 E F0 -.2(bu)2.534 G .034(iltins do not accept options and) -.2 F 1.549(do not treat)108 196.8 R F24.049 E F0(specially)4.049 E -6.549(.T)-.65 G(he)-6.549 E F2(exit)4.049 E F0(,)A F2(logout)4.049 E F0 -(,)A F2 -.18(re)4.049 G(tur).18 E(n)-.15 E F0(,)A F2(br)4.049 E(eak)-.18 -E F0(,)A F2(continue)4.049 E F0(,)A F2(let)4.049 E F0 4.049(,a)C(nd) --4.049 E F2(shift)4.048 E F0 -.2(bu)4.048 G 1.548(iltins accept and).2 F -.26(process ar)108 208.8 R .26(guments be)-.18 F .26(ginning with)-.15 F -F22.76 E F0 .261(without requiring)2.76 F F22.761 E F0 5.261 -(.O)C .261(ther b)-5.261 F .261(uiltins that accept ar)-.2 F .261 -(guments b)-.18 F .261(ut are not)-.2 F 1.154 -(speci\214ed as accepting options interpret ar)108 220.8 R 1.154 -(guments be)-.18 F 1.154(ginning with)-.15 F F23.654 E F0 1.154 -(as in)3.654 F -.25(va)-.4 G 1.154(lid options and require).25 F F2 -3.654 E F0(to)3.654 E(pre)108 232.8 Q -.15(ve)-.25 G -(nt this interpretation.).15 E F2(:)108 250.8 Q F0([)2.5 E/F3 10 -/Times-Italic@0 SF(ar)A(guments)-.37 E F0(])A .451(No ef)144 262.8 R -.451(fect; the command does nothing be)-.25 F .452(yond e)-.15 F -(xpanding)-.15 E F3(ar)3.282 E(guments)-.37 E F0 .452(and performing an) -3.222 F 2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5(redirections. The)144 -274.8 R(return status is zero.)2.5 E F2(.)110.5 291.6 Q F3(\214lename) -6.666 E F0([)2.5 E F3(ar)A(guments)-.37 E F0(])A F2(sour)108 303.6 Q(ce) --.18 E F3(\214lename)2.5 E F0([)2.5 E F3(ar)A(guments)-.37 E F0(])A 1.02 -(Read and e)144 315.6 R -.15(xe)-.15 G 1.02(cute commands from).15 F F3 -(\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02 -(vironment and return the e)-.4 F(xit)-.15 E 1.458 -(status of the last command e)144 327.6 R -.15(xe)-.15 G 1.458 -(cuted from).15 F F3(\214lename)3.958 E F0 6.458(.I).18 G(f)-6.458 E F3 -(\214lename)5.868 E F0 1.458(does not contain a slash, \214le-)4.138 F -.608(names in)144 339.6 R/F4 9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 -E F0 .608(are used to \214nd the directory containing)2.858 F F3 -(\214lename)3.108 E F0 5.608(.T).18 G .608(he \214le searched for in) --5.608 F F4 -.666(PA)3.108 G(TH)-.189 E F0 .832(need not be e)144 351.6 -R -.15(xe)-.15 G 3.332(cutable. When).15 F F2(bash)3.332 E F0 .832 -(is not in)3.332 F F3 .832(posix mode)3.332 F F0 3.332(,t)C .833 +184.8 Q F0(accepts)3.077 E F23.077 E F0 .577 +(to signify the end of the options.)3.077 F(The)5.577 E F2(:)3.077 E F0 +(,)A F2(true)3.077 E F0(,)A F2(false)3.077 E F0 3.077(,a)C(nd)-3.077 E +F2(test)3.077 E F0(/)A F2([)A F0 -.2(bu)3.077 G .577 +(iltins do not accept options).2 F .462(and do not treat)108 196.8 R F2 +2.961 E F0(specially)2.961 E 5.461(.T)-.65 G(he)-5.461 E F2(exit) +2.961 E F0(,)A F2(logout)2.961 E F0(,)A F2 -.18(re)2.961 G(tur).18 E(n) +-.15 E F0(,)A F2(br)2.961 E(eak)-.18 E F0(,)A F2(continue)2.961 E F0(,)A +F2(let)2.961 E F0 2.961(,a)C(nd)-2.961 E F2(shift)2.961 E F0 -.2(bu) +2.961 G .461(iltins accept and).2 F .26(process ar)108 208.8 R .26 +(guments be)-.18 F .26(ginning with)-.15 F F22.76 E F0 .261 +(without requiring)2.76 F F22.761 E F0 5.261(.O)C .261(ther b) +-5.261 F .261(uiltins that accept ar)-.2 F .261(guments b)-.18 F .261 +(ut are not)-.2 F 1.154(speci\214ed as accepting options interpret ar) +108 220.8 R 1.154(guments be)-.18 F 1.154(ginning with)-.15 F F2 +3.654 E F0 1.154(as in)3.654 F -.25(va)-.4 G 1.154 +(lid options and require).25 F F23.654 E F0(to)3.654 E(pre)108 +232.8 Q -.15(ve)-.25 G(nt this interpretation.).15 E F2(:)108 250.8 Q F0 +([)2.5 E/F3 10/Times-Italic@0 SF(ar)A(guments)-.37 E F0(])A .451(No ef) +144 262.8 R .451(fect; the command does nothing be)-.25 F .452(yond e) +-.15 F(xpanding)-.15 E F3(ar)3.282 E(guments)-.37 E F0 .452 +(and performing an)3.222 F 2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5 +(redirections. The)144 274.8 R(return status is zero.)2.5 E F2(.)110.5 +291.6 Q F3(\214lename)6.666 E F0([)2.5 E F3(ar)A(guments)-.37 E F0(])A +F2(sour)108 303.6 Q(ce)-.18 E F3(\214lename)2.5 E F0([)2.5 E F3(ar)A +(guments)-.37 E F0(])A 1.02(Read and e)144 315.6 R -.15(xe)-.15 G 1.02 +(cute commands from).15 F F3(\214lename)5.43 E F0 1.02 +(in the current shell en)3.7 F 1.02(vironment and return the e)-.4 F +(xit)-.15 E 1.458(status of the last command e)144 327.6 R -.15(xe)-.15 +G 1.458(cuted from).15 F F3(\214lename)3.958 E F0 6.458(.I).18 G(f) +-6.458 E F3(\214lename)5.868 E F0 1.458 +(does not contain a slash, \214le-)4.138 F .608(names in)144 339.6 R/F4 +9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 E F0 .608 +(are used to \214nd the directory containing)2.858 F F3(\214lename)3.108 +E F0 5.608(.T).18 G .608(he \214le searched for in)-5.608 F F4 -.666(PA) +3.108 G(TH)-.189 E F0 .832(need not be e)144 351.6 R -.15(xe)-.15 G +3.332(cutable. When).15 F F2(bash)3.332 E F0 .832(is not in)3.332 F F3 +.832(posix mode)3.332 F F0 3.332(,t)C .833 (he current directory is searched if no)-3.332 F .982 (\214le is found in)144 363.6 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9 /Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F2(sour)3.481 E(cepath)-.18 @@ -375,8 +376,8 @@ F0 -.25(va)2.976 G 2.976(riable. Each).25 F .476(non-option ar)2.976 F (ut each binding or command must be passed as a separate ar)-3.183 F .484(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 (re\255read\255init\255\214le'. Options,)144 726 R(if supplied, ha)2.5 E -.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E(GNU Bash-4.2)72 -768 Q(2004 Apr 20)148.735 E(1)203.725 E 0 Cg EP +.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E(GNU Bash 5.0)72 +768 Q(2004 Apr 20)149.565 E(1)203.725 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP @@ -499,7 +500,7 @@ G(H).855 E F0(de\214nes)3.286 E .85 5.664(.A)C(lternati)-5.664 E .964 -.15(ve d)-.25 H .665 (irectory names in).15 F F3(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0 .665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .665 -(ull directory name)-3.165 F(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E +(ull directory name)-3.165 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E (2)203.725 E 0 Cg EP %%Page: 3 3 %%BeginPageSetup @@ -594,2044 +595,2148 @@ em directly from a completion speci\214cation with the same \215ags.)144 (will be displayed.)2.5 E(The return v)144 489.6 Q (alue is true unless an in)-.25 E -.25(va)-.4 G (lid option is supplied, or no matches were generated.).25 E F2 -(complete)108 506.4 Q F0([)3.728 E F2(\255abcdefgjksuv)A F0 3.728(][)C -F2-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-4.2)72 768 Q -(2004 Apr 20)148.735 E(3)203.725 E 0 Cg EP +722.4 R 1.437(ord completion is attempted is)-.1 F(GNU Bash 5.0)72 768 Q +(2004 Apr 20)149.565 E(3)203.725 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 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-4.2)72 768 Q -(2004 Apr 20)148.735 E(4)203.725 E 0 Cg EP +(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 696 Q F0 +(Job names, if job control is acti)224 696 Q -.15(ve)-.25 G 5(.M).15 G +(ay also be speci\214ed as)-5 E 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 2.007 -(each resultant w)184 360 R 2.007(ord is e)-.1 F 4.507(xpanded. The)-.15 -F 2.008(possible completions are the members of the)4.507 F -(resultant list which match the w)184 372 Q(ord being completed.)-.1 E -F1144 384 Q F2(\214lterpat)2.5 E(\214lterpat)184 396 Q F0 .456 -(is a pattern as used for pathname e)2.956 F 2.956(xpansion. It)-.15 F -.455(is applied to the list of possible)2.956 F 1.596 -(completions generated by the preceding options and ar)184 408 R 1.596 -(guments, and each completion)-.18 F(matching)184 420 Q F2(\214lterpat) -3.205 E F0 .705(is remo)3.205 F -.15(ve)-.15 G 3.205(df).15 G .704 -(rom the list.)-3.205 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0 -(in)3.204 E F2(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 G .704 -(tes the pattern;).05 F(in this case, an)184 432 Q 2.5(yc)-.15 G +E .3 -.15(ve b)-.2 H(een applied.).15 E 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 456 S 1.965(lue of).25 F F3(IFS)4.465 E/F4 9/Times-Roman@0 SF(.) +A F0 1.964 +(The possible completions are the members of the resultant list which) +6.465 F(match the w)184 468 Q(ord being completed.)-.1 E 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 448.8 R .466 +-.15(ve)-.15 G(d.).15 E .467(The return v)144 544.8 R .467 (alue is true unless an in)-.25 F -.25(va)-.4 G .466 -(lid option is supplied, an option other than).25 F F12.967 E F0 -(or)2.967 E F12.967 E F0 .467(is sup-)2.967 F 1.362 -(plied without a)144 460.8 R F2(name)3.862 E F0(ar)3.862 E 1.361 -(gument, an attempt is made to remo)-.18 F 1.661 -.15(ve a c)-.15 H -1.361(ompletion speci\214cation for a).15 F F2(name)144 472.8 Q F0 +(lid option is supplied, an option other than).25 F 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 489.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C -F1(\255DE)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C F2 -(name)-2.5 E F0(])A .447(Modify completion options for each)144 501.6 R -F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0 -.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .726 -(completion if no)144 513.6 R F2(name)3.226 E F0 3.226(sa)C .726 -(re supplied.)-3.226 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa) -C .725(re gi)-3.225 F -.15(ve)-.25 G .725 -(n, display the completion options for).15 F(each)144 525.6 Q F2(name) -3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v) +F1(compopt)108 585.6 Q F0([)2.5 E 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 537.6 Q F0 -.2(bu) -2.798 G .298(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) --5.297 E F12.797 E F0 .297 -(option indicates that the remaining options should apply to)2.797 F -1.227(the `)144 549.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\ +F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 633.6 Q F0 -.2(bu) +2.677 G .177(iltin described abo).2 F -.15(ve)-.15 G 5.178(.T).15 G(he) +-5.178 E 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 561.6 R 2.178 -(viously been de\214ned.)-.25 F(The)7.178 E F14.678 E F0 2.177 -(option indicates that the remaining options)4.677 F(should apply to `) -144 573.6 Q(`empty')-.74 E 2.5('c)-.74 G -(ommand completion; that is, completion attempted on a blank line.)-2.5 -E 1.387(The return v)144 597.6 R 1.387(alue is true unless an in)-.25 F --.25(va)-.4 G 1.388 +no)-3.728 F 2.038(completion has pre)144 657.6 R 2.038 +(viously been de\214ned.)-.25 F(The)7.038 E 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 609.6 Q F2(name)2.5 E F0 -(for which no completion speci\214cation e)2.5 E -(xists, or an output error occurs.)-.15 E F1(continue)108 626.4 Q F0([) -2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 638.4 R 1.754 -(xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r).25 E F0(,)A -F1(while)4.254 E F0(,)A F1(until)4.254 E F0 4.254(,o)C(r)-4.254 E F1 -(select)4.254 E F0 4.253(loop. If)4.254 F F2(n)4.613 E F0 1.753 -(is speci\214ed,)4.493 F 1.208(resume at the)144 650.4 R F2(n)3.709 E F0 -1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F4 10 -/Symbol 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 662.4 R(`top-le)-.74 E -.15 -(ve)-.25 G(l').15 E 3.014('l)-.74 G .514(oop\) is resumed.)-3.014 F .513 -(The return v)5.513 F .513(alue is 0 unless)-.25 F F2(n)3.013 E F0(is) -3.013 E(not greater than or equal to 1.)144 674.4 Q F1(declar)108 691.2 -Q(e)-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1-2.5 E -F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E F1 -(typeset)108 703.2 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1 --2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C -(..])-2.5 E 1.264(Declare v)144 715.2 R 1.264(ariables and/or gi)-.25 F -1.564 -.15(ve t)-.25 H 1.264(hem attrib).15 F 3.765(utes. If)-.2 F(no) -3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 -G 3.765(nt).15 G 1.265(hen display the v)-3.765 F 1.265(alues of)-.25 F --.25(va)144 727.2 S 3.483(riables. The).25 F 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(GNU Bash-4.2)72 768 Q(2004 Apr 20) -148.735 E(5)203.725 E 0 Cg EP +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(5)203.725 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E(with)144 84 Q/F1 10/Times-Italic@0 SF(name) -2.774 E F0(ar)2.774 E .274(guments, additional options, other than)-.18 -F/F2 10/Times-Bold@0 SF2.775 E F0(and)2.775 E F22.775 E F0 -2.775(,a)C .275(re ignored.)-2.775 F(When)5.275 E F22.775 E F0 -.275(is supplied)2.775 F(without)144 96 Q F1(name)4.814 E F0(ar)4.814 E -2.314(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F -2.313(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2 -F(attrib)144 108 Q 1.181(utes speci\214ed by the additional options.)-.2 -F 1.182(If no other options are supplied with)6.181 F F23.682 E F0 -(,)A F2(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144 120 R -.62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12(ariables. The) --.25 F F23.12 E F0 .62(option will restrict the display)3.12 F -1.29(to shell functions.)144 132 R(The)6.29 E F23.79 E F0 1.291(o\ -ption inhibits the display of function de\214nitions; only the function) -3.791 F .948(name and attrib)144 144 R .948(utes are printed.)-.2 F .948 -(If the)5.948 F F2(extdeb)3.448 E(ug)-.2 E F0 .948 +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 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 -156 R F1(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19 F -(The)6.69 E F24.19 E F0(option)4.19 E(implies)144 168 Q F2 -3.892 E F0 6.392(.T)C(he)-6.392 E F23.892 E F0 1.391 +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 180 Q F2(declar)4.382 E(e)-.18 E F0 1.882 +(ve)-.25 G(n).15 E(when)144 309.6 Q F2(declar)4.382 E(e)-.18 E F0 1.882 (is e)4.382 F -.15(xe)-.15 G 1.882(cuted in a shell function.).15 F 1.883(It is ignored in all other cases.)6.882 F 1.883(The follo)6.883 F -(wing)-.25 E .794(options can be used to restrict output to v)144 192 R -.794(ariables with the speci\214ed attrib)-.25 F .793(ute or to gi)-.2 F -1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 204 Q(utes:)-.2 E F2 -144 216 Q F0(Each)180 216 Q F1(name)2.5 E F0(is an inde)2.5 E -.15 -(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F2(Arrays)2.5 -E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F2144 228 Q F0(Each)180 -228 Q F1(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v) -.15 E(ariable \(see)-.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G -(\).).15 E F2144 240 Q F0(Use function names only)180 240 Q(.)-.65 -E F2144 252 Q F0 .557(The v)180 252 R .558 +(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 264 Q F0(abo)2.25 -E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v)-2.5 E -(ariable is assigned a v)-.25 E(alue.)-.25 E F2144 276 Q F0 .91 -(When the v)180 276 R .909(ariable is assigned a v)-.25 F .909 +(va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .558 +(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 393.6 Q F0(abo) +2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v) +-2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E 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 288 R -(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2144 300 Q -F0(Gi)180 300 Q 1.619 -.15(ve e)-.25 H(ach).15 E F1(name)3.819 E F0(the) -3.819 E F1(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319 +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 312 R 1.519(ariable is de\214ned by the v)-.25 F -1.518(alue of)-.25 F F1(name)4.018 E F0 6.518(.A)C 1.518 -(ll references, assignments, and)-6.518 F(attrib)180 324 Q .226 +1.519(That other v)180 441.6 R 1.519(ariable is de\214ned by the v)-.25 +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 336 R +2.726 E .227(ute itself, are)-.2 F .809(performed on the v)180 465.6 R .809(ariable referenced by)-.25 F F1(name)3.308 E F0 1.908 -.55('s v)D 3.308(alue. The).3 F .808(nameref attrib)3.308 F .808(ute cannot be)-.2 -F(applied to array v)180 348 Q(ariables.)-.25 E F2144 360 Q F0 -(Mak)180 360 Q(e)-.1 E F1(name)5.046 E F0 5.046(sr)C(eadonly)-5.046 E +F(applied to array v)180 477.6 Q(ariables.)-.25 E 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 372 -Q F2144 384 Q F0(Gi)180 384 Q .73 -.15(ve e)-.25 H(ach).15 E F1 -(name)2.93 E F0(the)2.929 E F1(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E -2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F2(DEB)2.929 -E(UG)-.1 E F0(and)2.929 E F2(RETURN)2.929 E F0 -(traps from the calling shell.)180 396 Q(The trace attrib)5 E -(ute has no special meaning for v)-.2 E(ariables.)-.25 E F2144 408 -Q F0 .909(When the v)180 408 R .909(ariable is assigned a v)-.25 F .909 -(alue, all lo)-.25 F(wer)-.25 E .909(-case characters are con)-.2 F -.15 -(ve)-.4 G .91(rted to upper).15 F(-)-.2 E 2.5(case. The)180 420 R(lo)2.5 -E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2144 432 Q -F0(Mark)180 432 Q F1(name)2.5 E F0 2.5(sf)C(or e)-2.5 E -(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .121 -(Using `+' instead of `\255' turns of)144 448.8 R 2.621(ft)-.25 G .121 -(he attrib)-2.621 F .121(ute instead, with the e)-.2 F .12 -(xceptions that)-.15 F F2(+a)2.62 E F0 .12(may not be used)2.62 F .644 -(to destro)144 460.8 R 3.144(ya)-.1 G 3.144(na)-3.144 G .644(rray v) --3.144 F .644(ariable and)-.25 F F2(+r)3.145 E F0 .645(will not remo) -3.145 F .945 -.15(ve t)-.15 H .645(he readonly attrib).15 F 3.145 -(ute. When)-.2 F .645(used in a func-)3.145 F(tion,)144 472.8 Q F2 -(declar)2.835 E(e)-.18 E F0(and)2.835 E F2(typeset)2.835 E F0(mak)2.835 -E 2.835(ee)-.1 G(ach)-2.835 E F1(name)2.835 E F0 .335 -(local, as with the)2.835 F F2(local)2.835 E F0 .335 -(command, unless the)2.835 F F22.835 E F0(option)2.835 E 1.282 -(is supplied.)144 484.8 R 1.282(If a v)6.282 F 1.283 -(ariable name is follo)-.25 F 1.283(wed by =)-.25 F F1(value)A F0 3.783 -(,t)C 1.283(he v)-3.783 F 1.283(alue of the v)-.25 F 1.283 -(ariable is set to)-.25 F F1(value)3.783 E F0(.)A .927(When using)144 -496.8 R F23.427 E F0(or)3.427 E F23.427 E F0 .926 -(and the compound assignment syntax to create array v)3.427 F .926 -(ariables, additional)-.25 F(attrib)144 508.8 Q .592(utes do not tak)-.2 -F 3.092(ee)-.1 G -.25(ff)-3.092 G .592 -(ect until subsequent assignments.).25 F .592(The return v)5.592 F .592 -(alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .429 -(option is encountered, an attempt is made to de\214ne a function using) -144 520.8 R/F4 10/Courier@0 SF .428(\255f foo=bar)2.929 F F0 2.928(,a)C -2.928(na)-2.928 G .428(ttempt is)-2.928 F .062(made to assign a v)144 -532.8 R .062(alue to a readonly v)-.25 F .063 -(ariable, an attempt is made to assign a v)-.25 F .063 -(alue to an array v)-.25 F(ari-)-.25 E .102 -(able without using the compound assignment syntax \(see)144 544.8 R F2 -(Arrays)2.602 E F0(abo)2.602 E -.15(ve)-.15 G .102(\), one of the).15 F -F1(names)2.602 E F0 .101(is not a)2.602 F -.25(va)144 556.8 S .171 -(lid shell v).25 F .171(ariable name, an attempt is made to turn of)-.25 -F 2.671(fr)-.25 G .171(eadonly status for a readonly v)-2.671 F .172 -(ariable, an)-.25 F .96(attempt is made to turn of)144 568.8 R 3.46(fa) --.25 G .96(rray status for an array v)-3.46 F .96 -(ariable, or an attempt is made to display a)-.25 F(non-e)144 580.8 Q -(xistent function with)-.15 E F22.5 E F0(.)A F2 -(dirs [\255clpv] [+)108 597.6 Q F1(n)A F2 2.5(][)C-2.5 E F1(n)A F2 -(])A F0 -.4(Wi)144 609.6 S .328 -(thout options, displays the list of currently remembered directories.) -.4 F .329(The def)5.329 F .329(ault display is on a)-.1 F 1.238 -(single line with directory names separated by spaces.)144 621.6 R 1.238 -(Directories are added to the list with the)6.238 F F2(pushd)144 633.6 Q -F0 2.003(command; the)4.503 F F2(popd)4.503 E F0 2.003(command remo) -4.503 F -.15(ve)-.15 G 4.503(se).15 G 2.003(ntries from the list.)-4.503 -F 2.003(The current directory is)7.003 F(al)144 645.6 Q -.1(wa)-.1 G -(ys the \214rst directory in the stack.).1 E F2144 657.6 Q F0 -(Clears the directory stack by deleting all of the entries.)180 657.6 Q -F2144 669.6 Q F0 .882 -(Produces a listing using full pathnames; the def)180 669.6 R .881 -(ault listing format uses a tilde to denote)-.1 F(the home directory)180 -681.6 Q(.)-.65 E F2144 693.6 Q F0 -(Print the directory stack with one entry per line.)180 693.6 Q F2 -144 705.6 Q F0 .272(Print the directory stack with one entry per line, \ -pre\214xing each entry with its inde)180 705.6 R 2.773(xi)-.15 G 2.773 -(nt)-2.773 G(he)-2.773 E(stack.)180 717.6 Q(GNU Bash-4.2)72 768 Q -(2004 Apr 20)148.735 E(6)203.725 E 0 Cg EP +2.547(alues by subsequent)-.25 F(assignment statements or unset.)180 +501.6 Q 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 .144 +(Using `+' instead of `\255' turns of)144 578.4 R 2.643(ft)-.25 G .143 +(he attrib)-2.643 F .143(ute instead, with the e)-.2 F .143 +(xceptions that)-.15 F F2(+a)2.643 E F0(and)2.643 E F2(+A)2.643 E F0 +.143(may not)2.643 F .578(be used to destro)144 590.4 R 3.079(ya)-.1 G +.579(rray v)-3.079 F .579(ariables and)-.25 F F2(+r)3.079 E F0 .579 +(will not remo)3.079 F .879 -.15(ve t)-.15 H .579(he readonly attrib).15 +F 3.079(ute. When)-.2 F .579(used in a)3.079 F(function,)144 602.4 Q F2 +(declar)3.544 E(e)-.18 E F0(and)3.544 E F2(typeset)3.544 E F0(mak)3.544 +E 3.544(ee)-.1 G(ach)-3.544 E F1(name)3.543 E F0 1.043 +(local, as with the)3.543 F F2(local)3.543 E F0 1.043 +(command, unless the)3.543 F F23.543 E F0 1.205 +(option is supplied.)144 614.4 R 1.205(If a v)6.205 F 1.205 +(ariable name is follo)-.25 F 1.205(wed by =)-.25 F F1(value)A F0 3.705 +(,t)C 1.205(he v)-3.705 F 1.205(alue of the v)-.25 F 1.205 +(ariable is set to)-.25 F F1(value)144 626.4 Q F0 5.218(.W)C .218 +(hen using)-5.218 F F22.718 E F0(or)2.718 E F22.718 E F0 +.217(and the compound assignment syntax to create array v)2.717 F .217 +(ariables, addi-)-.25 F .882(tional attrib)144 638.4 R .882 +(utes do not tak)-.2 F 3.382(ee)-.1 G -.25(ff)-3.382 G .882 +(ect until subsequent assignments.).25 F .882(The return v)5.882 F .882 +(alue is 0 unless an)-.25 F(in)144 650.4 Q -.25(va)-.4 G 1.26(lid optio\ +n is encountered, an attempt is made to de\214ne a function using).25 F +/F5 10/Courier@0 SF 1.26(\255f foo=bar)3.76 F F0 3.76(,a)C(n)-3.76 E +.187(attempt is made to assign a v)144 662.4 R .187 +(alue to a readonly v)-.25 F .188 +(ariable, an attempt is made to assign a v)-.25 F .188(alue to an)-.25 F +1.749(array v)144 674.4 R 1.749 +(ariable without using the compound assignment syntax \(see)-.25 F F2 +(Arrays)4.248 E F0(abo)4.248 E -.15(ve)-.15 G 1.748(\), one of the).15 F +F1(names)144 686.4 Q F0 .359(is not a v)2.858 F .359(alid shell v)-.25 F +.359(ariable name, an attempt is made to turn of)-.25 F 2.859(fr)-.25 G +.359(eadonly status for a read-)-2.859 F 1.213(only v)144 698.4 R 1.213 +(ariable, an attempt is made to turn of)-.25 F 3.713(fa)-.25 G 1.213 +(rray status for an array v)-3.713 F 1.212(ariable, or an attempt is) +-.25 F(made to display a non-e)144 710.4 Q(xistent function with)-.15 E +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 SF(+)144 84 Q/F2 10 -/Times-Italic@0 SF(n)A F0 1.565(Displays the)180 84 R F2(n)4.065 E F0 -1.565(th entry counting from the left of the list sho)B 1.564(wn by)-.25 -F F1(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1 -E(without options, starting with zero.)180 96 Q F1144 108 Q F2(n)A -F0 1.194(Displays the)180 108 R F2(n)3.694 E F0 1.194 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(dirs [\255clpv] [+) +108 84 Q/F2 10/Times-Italic@0 SF(n)A F1 2.5(][)C-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 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 120 Q .258(The return v)144 -136.8 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 +(without options, starting with zero.)180 252 Q .258(The return v)144 +268.8 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 (lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe) -.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-) -.15 F(tory stack.)144 148.8 Q F1(diso)108 165.6 Q(wn)-.1 E F0([)2.5 E F1 +.15 F(tory stack.)144 280.8 Q F1(diso)108 297.6 Q(wn)-.1 E F0([)2.5 E F1 (\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0 -(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 177.6 S .121 +(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 309.6 S .121 (thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec) 4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H 2.622(obs. If).15 F F2(jobspec)4.362 E F0 .122(is not present, and)2.932 -F .096(neither the)144 189.6 R 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 201.6 Q F0 .585(is not remo)3.395 F -.15(ve)-.15 +.15 F F2(jobspec)145.74 333.6 Q F0 .585(is not remo)3.395 F -.15(ve)-.15 G 3.085(df).15 G .585(rom the table, b)-3.085 F .585(ut is mark)-.2 F .585(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .586 -(is not sent to the job if the)2.835 F .962(shell recei)144 213.6 R -.15 +(is not sent to the job if the)2.835 F .962(shell recei)144 345.6 R -.15 (ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962 (If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1 3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15 -H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 225.6 R F1 +H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 357.6 R F1 3.858 E F0 1.358(option without a)3.858 F F2(jobspec)5.598 E F0 (ar)4.169 E 1.359(gument restricts operation to running jobs.)-.18 F -1.359(The return)6.359 F -.25(va)144 237.6 S(lue is 0 unless a).25 E F2 +1.359(The return)6.359 F -.25(va)144 369.6 S(lue is 0 unless a).25 E F2 (jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E -F1(echo)108 254.4 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) --.37 E F0(...])2.5 E .425(Output the)144 266.4 R F2(ar)2.925 E(g)-.37 E +F1(echo)108 386.4 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) +-.37 E F0(...])2.5 E .425(Output the)144 398.4 R F2(ar)2.925 E(g)-.37 E F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 (wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .307 -(error occurs.)144 278.4 R(If)5.307 E 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 -290.4 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) +422.4 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) 6.348 E F13.848 E F0 1.348(option disables the)3.848 F 1.054 -(interpretation of these escape characters, e)144 302.4 R -.15(ve)-.25 G +(interpretation of these escape characters, e)144 434.4 R -.15(ve)-.25 G 3.555(no).15 G 3.555(ns)-3.555 G 1.055(ystems where the)-3.555 F 3.555 (ya)-.15 G 1.055(re interpreted by def)-3.555 F(ault.)-.1 E(The)144 -314.4 Q F1(xpg_echo)3.459 E F0 .959 +446.4 Q F1(xpg_echo)3.459 E F0 .959 (shell option may be used to dynamically determine whether or not)3.459 F F1(echo)3.458 E F0 -.15(ex)3.458 G(pands).15 E .715 -(these escape characters by def)144 326.4 R(ault.)-.1 E F1(echo)5.715 E +(these escape characters by def)144 458.4 R(ault.)-.1 E F1(echo)5.715 E F0 .716(does not interpret)3.215 F F13.216 E F0 .716 (to mean the end of options.)3.216 F F1(echo)5.716 E F0 -(interprets the follo)144 338.4 Q(wing escape sequences:)-.25 E F1(\\a) -144 350.4 Q F0(alert \(bell\))180 350.4 Q F1(\\b)144 362.4 Q F0 -(backspace)180 362.4 Q F1(\\c)144 374.4 Q F0(suppress further output)180 -374.4 Q F1(\\e)144 386.4 Q(\\E)144 398.4 Q F0(an escape character)180 -398.4 Q F1(\\f)144 410.4 Q F0(form feed)180 410.4 Q F1(\\n)144 422.4 Q -F0(ne)180 422.4 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 434.4 Q F0 -(carriage return)180 434.4 Q F1(\\t)144 446.4 Q F0(horizontal tab)180 -446.4 Q F1(\\v)144 458.4 Q F0 -.15(ve)180 458.4 S(rtical tab).15 E F1 -(\\\\)144 470.4 Q F0(backslash)180 470.4 Q F1(\\0)144 482.4 Q F2(nnn)A -F0(the eight-bit character whose v)180 482.4 Q(alue is the octal v)-.25 +(interprets the follo)144 470.4 Q(wing escape sequences:)-.25 E F1(\\a) +144 482.4 Q F0(alert \(bell\))180 482.4 Q F1(\\b)144 494.4 Q F0 +(backspace)180 494.4 Q F1(\\c)144 506.4 Q F0(suppress further output)180 +506.4 Q F1(\\e)144 518.4 Q(\\E)144 530.4 Q F0(an escape character)180 +530.4 Q F1(\\f)144 542.4 Q F0(form feed)180 542.4 Q F1(\\n)144 554.4 Q +F0(ne)180 554.4 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 566.4 Q F0 +(carriage return)180 566.4 Q F1(\\t)144 578.4 Q F0(horizontal tab)180 +578.4 Q F1(\\v)144 590.4 Q F0 -.15(ve)180 590.4 S(rtical tab).15 E F1 +(\\\\)144 602.4 Q F0(backslash)180 602.4 Q F1(\\0)144 614.4 Q F2(nnn)A +F0(the eight-bit character whose v)180 614.4 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F1 -(\\x)144 494.4 Q F2(HH)A F0(the eight-bit character whose v)180 494.4 Q +(\\x)144 626.4 Q F2(HH)A F0(the eight-bit character whose v)180 626.4 Q (alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0 (\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1 -(\\u)144 506.4 Q F2(HHHH)A F0 1.507 -(the Unicode \(ISO/IEC 10646\) character whose v)180 518.4 R 1.506 +(\\u)144 638.4 Q F2(HHHH)A F0 1.507 +(the Unicode \(ISO/IEC 10646\) character whose v)180 650.4 R 1.506 (alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) -4.006 E F0(\(one to four he)180 530.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 -(\\U)144 542.4 Q F2(HHHHHHHH)A F0 .547 -(the Unicode \(ISO/IEC 10646\) character whose v)180 554.4 R .547 +4.006 E F0(\(one to four he)180 662.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 +(\\U)144 674.4 Q F2(HHHHHHHH)A F0 .547 +(the Unicode \(ISO/IEC 10646\) character whose v)180 686.4 R .547 (alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) -3.048 E(HHH)180 566.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G -(igits\))-2.5 E F1(enable)108 583.2 Q F0([)2.5 E F1A F0 2.5(][)C -F1(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5 -(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 595.2 R -.278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278 +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 607.2 R .834(uiltin to be e)-.2 F -.15 -(xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15 -(ve)-.25 G 3.334(nt).15 G(hough)-3.334 E .99 -(the shell normally searches for b)144 619.2 R .989 +(the same name as a shell b)144 108 R .834(uiltin to be e)-.2 F -.15(xe) +-.15 G .834(cuted without specifying a full pathname, e).15 F -.15(ve) +-.25 G 3.334(nt).15 G(hough)-3.334 E .99 +(the shell normally searches for b)144 120 R .989 (uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 .989 (is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F 1.581 -(abled; otherwise,)144 631.2 R F2(names)4.082 E F0 1.582(are enabled.) +(abled; otherwise,)144 132 R F2(names)4.082 E F0 1.582(are enabled.) 4.082 F -.15(Fo)6.582 G 4.082(re).15 G 1.582(xample, to use the)-4.232 F -F1(test)4.082 E F0 1.582(binary found via the)4.082 F F3 -.666(PA)4.082 -G(TH)-.189 E F0 .081(instead of the shell b)144 643.2 R .081(uiltin v) --.2 F .081(ersion, run)-.15 F/F5 10/Courier@0 SF .081(enable -n test) -2.581 F F0 5.081(.T)C(he)-5.081 E F12.58 E F0 .08 -(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 655.2 S 1.524 +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 667.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 679.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 -691.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 1.916 -(is supplied, the list printed includes all b)144 703.2 R 1.916 +(is supplied, the list printed includes all b)144 204 R 1.916 (uiltins, with an indication of whether or not each is)-.2 F 2.879 -(enabled. If)144 715.2 R F12.879 E F0 .379 +(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 727.2 R F2(name)3.854 E F0 .994 +(alue)-.25 E .994(is 0 unless a)144 228 R F2(name)3.854 E F0 .994 (is not a shell b)3.674 F .994(uiltin or there is an error loading a ne) --.2 F 3.495(wb)-.25 G .995(uiltin from a shared)-3.695 F(GNU Bash-4.2)72 -768 Q(2004 Apr 20)148.735 E(7)203.725 E 0 Cg EP -%%Page: 8 8 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E(object.)144 84 Q/F1 10/Times-Bold@0 SF -2.3 --.15(ev a)108 100.8 T(l).15 E F0([)2.5 E/F2 10/Times-Italic@0 SF(ar)A(g) --.37 E F0(...])2.5 E(The)144 112.8 Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa) -C .671(re read and concatenated together into a single command.)-3.171 F -.67(This command is then read)5.67 F .495(and e)144 124.8 R -.15(xe)-.15 -G .495(cuted by the shell, and its e).15 F .495 +-.2 F 3.495(wb)-.25 G .995(uiltin from a shared)-3.695 F(object.)144 240 +Q F1 -2.3 -.15(ev a)108 256.8 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 E F0 +(...])2.5 E(The)144 268.8 Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C .671 +(re read and concatenated together into a single command.)-3.171 F .67 +(This command is then read)5.67 F .495(and e)144 280.8 R -.15(xe)-.15 G +.495(cuted by the shell, and its e).15 F .495 (xit status is returned as the v)-.15 F .495(alue of)-.25 F F1 -2.3 -.15 (ev a)2.995 H(l).15 E F0 5.495(.I)C 2.995(ft)-5.495 G .495(here are no) --2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 136.8 Q +-2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 292.8 Q (guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1 -(exec)108 153.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-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 165.6 Q F2(command)3.006 E F0 .306 +-.37 E F0(]])A(If)144 321.6 Q F2(command)3.006 E F0 .306 (is speci\214ed, it replaces the shell.)3.576 F .305(No ne)5.305 F 2.805 (wp)-.25 G .305(rocess is created.)-2.805 F(The)5.305 E F2(ar)3.135 E -(guments)-.37 E F0(become)3.075 E .176(the ar)144 177.6 R .176 +(guments)-.37 E F0(become)3.075 E .176(the ar)144 333.6 R .176 (guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G (he)-2.676 E 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 189.6 R .5(gument passed to)-.18 +(ginning of)-.15 F .5(the zeroth ar)144 345.6 R .5(gument passed to)-.18 F F2(command)3 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2(lo)2.999 E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.499 E F12.999 E F0 -.499(option causes)2.999 F F2(com-)3.199 E(mand)144 201.6 Q F0 .638 +.499(option causes)2.999 F F2(com-)3.199 E(mand)144 357.6 Q F0 .638 (to be e)3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 (vironment. If)-.4 F 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 213.6 R 1.077(gument to the e)-.18 F -.15 +3.319 F 1.078(zeroth ar)144 369.6 R 1.077(gument to the e)-.18 F -.15 (xe)-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 1.077(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a) -.15 F(non-interacti)144 225.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F +.15 F(non-interacti)144 381.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F .576(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577 (shell option is enabled.)3.077 F .577(In that case, it returns f)5.577 -F(ail-)-.1 E 2.505(ure. An)144 237.6 R(interacti)2.505 E .305 -.15(ve s) --.25 H .005(hell returns f).15 F .005(ailure if the \214le cannot be e) --.1 F -.15(xe)-.15 G 2.505(cuted. If).15 F F2(command)2.705 E F0 .005 -(is not speci\214ed,)3.275 F(an)144 249.6 Q 3.036(yr)-.15 G .536 -(edirections tak)-3.036 F 3.036(ee)-.1 G -.25(ff)-3.036 G .536 -(ect in the current shell, and the return status is 0.).25 F .536 -(If there is a redirection)5.536 F(error)144 261.6 Q 2.5(,t)-.4 G -(he return status is 1.)-2.5 E F1(exit)108 278.4 Q F0([)2.5 E F2(n)A F0 -(])A .096(Cause the shell to e)144 278.4 R .096(xit with a status of) +F(ail-)-.1 E 3.32(ure. An)144 393.6 R(interacti)3.32 E 1.12 -.15(ve s) +-.25 H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1 +F -.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82 +(xits uncondi-)-.15 F .287(tionally if)144 405.6 R F1(exec)2.787 E F0 +-.1(fa)2.787 G 2.787(ils. If).1 F F2(command)2.987 E F0 .287 +(is not speci\214ed, an)3.557 F 2.788(yr)-.15 G .288(edirections tak) +-2.788 F 2.788(ee)-.1 G -.25(ff)-2.788 G .288(ect in the current shell,) +.25 F(and the return status is 0.)144 417.6 Q +(If there is a redirection error)5 E 2.5(,t)-.4 G +(he return status is 1.)-2.5 E F1(exit)108 434.4 Q F0([)2.5 E F2(n)A F0 +(])A .096(Cause the shell to e)144 434.4 R .096(xit with a status of) -.15 F F2(n)2.596 E F0 5.096(.I)C(f)-5.096 E F2(n)2.955 E F0 .095 (is omitted, the e)2.835 F .095(xit status is that of the last command) --.15 F -.15(exe)144 290.4 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9 -/Times-Bold@0 SF(EXIT)2.5 E F0(is e)2.25 E -.15(xe)-.15 G -(cuted before the shell terminates.).15 E F1(export)108 307.2 Q F0([)2.5 -E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E -F0(]] ...)A F1(export \255p)108 319.2 Q F0 .256(The supplied)144 331.2 R -F2(names)3.117 E F0 .257(are mark)3.027 F .257(ed for automatic e)-.1 F -.257(xport to the en)-.15 F .257(vironment of subsequently e)-.4 F -.15 -(xe)-.15 G(cuted).15 E 2.627(commands. If)144 343.2 R(the)2.627 E F1 -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 355.2 Q F0 .048 -(option is supplied, a list of names of all e)2.547 F .048(xported v) --.15 F .048(ariables is printed.)-.25 F(The)5.048 E F12.548 E F0 -.048(option causes the)2.548 F -.15(ex)144 367.2 S 1.447 -(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447 +-.15 F -.15(exe)144 446.4 S 2.5(cuted. A).15 F(trap on)2.5 E F3(EXIT)2.5 +E F0(is e)2.25 E -.15(xe)-.15 G(cuted before the shell terminates.).15 E +F1(export)108 463.2 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name) +-2.5 E F0([=)A F2(wor)A(d)-.37 E F0(]] ...)A F1(export \255p)108 475.2 Q +F0 .256(The supplied)144 487.2 R F2(names)3.117 E F0 .257(are mark)3.027 +F .257(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257 +(vironment of subsequently e)-.4 F -.15(xe)-.15 G(cuted).15 E 2.627 +(commands. If)144 499.2 R(the)2.627 E 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 379.2 S .741(lue of the v) +-.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 535.2 S .741(lue of the v) .25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1 (export)5.741 E F0 .742(returns an e)3.242 F .742 (xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is) -.25 F .032(encountered, one of the)144 391.2 R F2(names)2.532 E F0 .032 +.25 F .032(encountered, one of the)144 547.2 R F2(names)2.532 E F0 .032 (is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 F 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 403.2 Q F1(fc)108 420 Q F0([)2.5 E +(that)2.711 E(is not a function.)144 559.2 Q F1(fc)108 576 Q F0([)2.5 E 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 -432 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 +588 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 (cmd)-2.5 E F0(])A .431 -(The \214rst form selects a range of commands from)144 444 R F2<8c72> +(The \214rst form selects a range of commands from)144 600 R F2<8c72> 4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .432 (from the history list and displays or)3.612 F .142(edits and re-e)144 -456 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) +612 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) .45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141 (may be speci\214ed as a string \(to locate the last command)3.321 F(be) -144 468 Q .31(ginning with that string\) or as a number \(an inde)-.15 F +144 624 Q .31(ginning with that string\) or as a number \(an inde)-.15 F 2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05(ga) --.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .315(is used as an of) -144 480 R .315(fset from the current command number\).)-.25 F(If)5.315 E -F2(last)2.904 E F0 .314(is not speci\214ed it is set to the cur)3.494 F -(-)-.2 E .948(rent command for listing \(so that)144 492 R/F4 10 -/Courier@0 SF .948(fc \255l \25510)3.448 F F0 .948 -(prints the last 10 commands\) and to)3.448 F F2<8c72>5.359 E(st)-.1 E -F0(other)4.129 E(-)-.2 E 2.5(wise. If)144 504 R F2<8c72>4.41 E(st)-.1 E -F0(is not speci\214ed it is set to the pre)3.18 E -(vious command for editing and \25516 for listing.)-.25 E(The)144 528 Q +-.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .19(is used as an of) +144 636 R .19(fset from the current command number\).)-.25 F(If)5.19 E +F2(last)2.779 E F0 .189(is not speci\214ed, it is set to the cur)3.369 F +(-)-.2 E .948(rent command for listing \(so that)144 648 R F4 .948 +(fc \255l \25510)3.448 F F0 .948(prints the last 10 commands\) and to) +3.448 F F2<8c72>5.359 E(st)-.1 E F0(other)4.129 E(-)-.2 E 2.5(wise. If) +144 660 R F2<8c72>4.41 E(st)-.1 E F0 +(is not speci\214ed, it is set to the pre)3.18 E +(vious command for editing and \25516 for listing.)-.25 E(The)144 684 Q 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 540 R .438(If the)5.438 +(rses the order of).15 F .438(the commands.)144 696 R .438(If the)5.438 F 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 552 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2 +.335(the editor gi)144 708 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2 (ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do) .1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F (If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G -(n,).15 E .63(the v)144 564 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E F0 --.25(va)2.88 G .631(riable is used, and the v).25 F .631(alue of)-.25 F -F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631 -(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 576 R .951 -(ariable is set,)-.25 F F2(vi)5.117 E F0 .951(is used.)5.117 F .95 -(When editing is complete, the edited commands are echoed and)5.951 F --.15(exe)144 588 S(cuted.).15 E .788(In the second form,)144 612 R F2 -(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 -(cuted after each instance of).15 F F2(pat)3.288 E F0 .788 -(is replaced by)3.288 F F2 -.37(re)3.289 G(p).37 E F0(.)A F2(Com-)5.789 -E(mand)144 624 Q F0 .347(is intepreted the same as)2.847 F F2<8c72>2.847 -E(st)-.1 E F0(abo)2.847 E -.15(ve)-.15 G 5.347(.A).15 G .347 -(useful alias to use with this is)-2.5 F F4 .346(r='fc \255s')2.847 F F0 -2.846(,s)C 2.846(ot)-2.846 G(hat)-2.846 E(typing)144 636 Q F4 7.165(rc) -3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166 -(ginning with)-.15 F F4(cc)3.666 E F0 1.166(and typing)3.666 F F4(r) -3.666 E F0(re-e)3.666 E -.15(xe)-.15 G 1.166(cutes the last com-).15 F -(mand.)144 648 Q .142(If the \214rst form is used, the return v)144 672 -R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 -(lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322 -E F2(last)2.732 E F0 .454(specify history lines out of range.)144 684 R -.454(If the)5.454 F 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 696 R -.15(xe)-.15 G .788 -(cuted or f).15 F .787 -(ailure if an error occurs with the temporary \214le of commands.)-.1 F -.787(If the)5.787 F 1.135 -(second form is used, the return status is that of the command re-e)144 -708 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136 -(does not)4.406 F(specify a v)144 720 Q -(alid history line, in which case)-.25 E F1(fc)2.5 E F0(returns f)2.5 E -(ailure.)-.1 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(8)203.725 E 0 -Cg EP +(n,).15 E 1.668(the v)144 720 R 1.668(alue of the)-.25 F F3(FCEDIT)4.168 +E F0 -.25(va)3.918 G 1.668(riable is used, and the v).25 F 1.669 +(alue of)-.25 F F3(EDIT)4.169 E(OR)-.162 E F0(if)3.919 E F3(FCEDIT)4.169 +E F0 1.669(is not set.)3.919 F(If)6.669 E(GNU Bash 5.0)72 768 Q +(2004 Apr 20)149.565 E(8)203.725 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(fg)108 84 Q F0([)2.5 -E/F2 10/Times-Italic@0 SF(jobspec)A F0(])A(Resume)144 96 Q F2(jobspec) -5.654 E F0 1.413(in the fore)4.224 F 1.413(ground, and mak)-.15 F 3.913 -(ei)-.1 G 3.913(tt)-3.913 G 1.413(he current job)-3.913 F 6.413(.I)-.4 G -(f)-6.413 E F2(jobspec)5.653 E F0 1.413(is not present, the)4.223 F -(shell')144 108 Q 3.116(sn)-.55 G .616(otion of the)-3.116 F F2(curr) -3.116 E .616(ent job)-.37 F F0 .617(is used.)3.116 F .617(The return v) -5.617 F .617(alue is that of the command placed into the)-.25 F(fore)144 -120 Q .363(ground, or f)-.15 F .363 +E(UIL)-.1 E(TINS\(1\))-.92 E .187(neither v)144 84 R .187 +(ariable is set,)-.25 F/F1 10/Times-Italic@0 SF(vi)4.353 E F0 .187 +(is used.)4.353 F .187 +(When editing is complete, the edited commands are echoed and)5.187 F +-.15(exe)144 96 S(cuted.).15 E .788(In the second form,)144 120 R F1 +(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 +(cuted after each instance of).15 F F1(pat)3.288 E F0 .788 +(is replaced by)3.288 F F1 -.37(re)3.289 G(p).37 E F0(.)A F1(Com-)5.789 +E(mand)144 132 Q F0 .172(is interpreted the same as)2.672 F F1<8c72> +2.672 E(st)-.1 E F0(abo)2.672 E -.15(ve)-.15 G 5.172(.A).15 G .171 +(useful alias to use with this is)-2.5 F/F2 10/Courier@0 SF .171 +(r='fc \255s')2.671 F F0 2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E +(typing)144 144 Q F2 7.165(rc)3.665 G(c)-7.165 E F0 1.165 +(runs the last command be)3.665 F 1.166(ginning with)-.15 F F2(cc)3.666 +E F0 1.166(and typing)3.666 F F2(r)3.666 E F0(re-e)3.666 E -.15(xe)-.15 +G 1.166(cutes the last com-).15 F(mand.)144 156 Q .142 +(If the \214rst form is used, the return v)144 180 R .142 +(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 +(lid option is encountered or).25 F F1<8c72>4.552 E(st)-.1 E F0(or)3.322 +E F1(last)2.732 E F0 .454(specify history lines out of range.)144 192 R +.454(If the)5.454 F/F3 10/Times-Bold@0 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 +216 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F1(cmd)3.836 E F0 1.136 +(does not)4.406 F(specify a v)144 228 Q +(alid history line, in which case)-.25 E F3(fc)2.5 E F0(returns f)2.5 E +(ailure.)-.1 E F3(fg)108 244.8 Q F0([)2.5 E F1(jobspec)A F0(])A(Resume) +144 256.8 Q F1(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413 +(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413 +(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F1(jobspec)5.653 E F0 +1.413(is not present, the)4.223 F(shell')144 268.8 Q 3.116(sn)-.55 G +.616(otion of the)-3.116 F F1(curr)3.116 E .616(ent job)-.37 F F0 .617 +(is used.)3.116 F .617(The return v)5.617 F .617 +(alue is that of the command placed into the)-.25 F(fore)144 280.8 Q +.363(ground, or f)-.15 F .363 (ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362 -(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 132 Q -F0(does not specify a v)2.81 E(alid job or)-.25 E F2(jobspec)4.24 E F0 +(hen run with job control enabled, if)-2.862 F F1(jobspec)145.74 292.8 Q +F0(does not specify a v)2.81 E(alid job or)-.25 E F1(jobspec)4.24 E F0 (speci\214es a job that w)2.81 E(as started without job control.)-.1 E -F1(getopts)108 148.8 Q F2(optstring name)2.5 E F0([)2.5 E F2(ar)A(gs) --.37 E F0(])A F1(getopts)144 160.8 Q F0 .793 -(is used by shell procedures to parse positional parameters.)3.293 F F2 +F3(getopts)108 309.6 Q F1(optstring name)2.5 E F0([)2.5 E F1(ar)A(gs) +-.37 E F0(])A F3(getopts)144 321.6 Q F0 .793 +(is used by shell procedures to parse positional parameters.)3.293 F F1 (optstring)6.023 E F0 .793(contains the option)3.513 F .15 -(characters to be recognized; if a character is follo)144 172.8 R .149 +(characters to be recognized; if a character is follo)144 333.6 R .149 (wed by a colon, the option is e)-.25 F .149(xpected to ha)-.15 F .449 --.15(ve a)-.2 H(n).15 E(ar)144 184.8 Q .578 +-.15(ve a)-.2 H(n).15 E(ar)144 345.6 Q .578 (gument, which should be separated from it by white space.)-.18 F .579 (The colon and question mark char)5.579 F(-)-.2 E 1.665 -(acters may not be used as option characters.)144 196.8 R 1.665 -(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F1(getopts) +(acters may not be used as option characters.)144 357.6 R 1.665 +(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F3(getopts) 4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .796 -(option in the shell v)144 208.8 R(ariable)-.25 E F2(name)3.296 E F0 -3.296(,i).18 G(nitializing)-3.296 E F2(name)3.657 E F0 .797 +(option in the shell v)144 369.6 R(ariable)-.25 E F1(name)3.296 E F0 +3.296(,i).18 G(nitializing)-3.296 E F1(name)3.657 E F0 .797 (if it does not e)3.477 F .797(xist, and the inde)-.15 F 3.297(xo)-.15 G -3.297(ft)-3.297 G .797(he ne)-3.297 F(xt)-.15 E(ar)144 220.8 Q .085 -(gument to be processed into the v)-.18 F(ariable)-.25 E/F3 9 -/Times-Bold@0 SF(OPTIND)2.585 E/F4 9/Times-Roman@0 SF(.)A F3(OPTIND) +3.297(ft)-3.297 G .797(he ne)-3.297 F(xt)-.15 E(ar)144 381.6 Q .085 +(gument to be processed into the v)-.18 F(ariable)-.25 E/F4 9 +/Times-Bold@0 SF(OPTIND)2.585 E/F5 9/Times-Roman@0 SF(.)A F4(OPTIND) 4.585 E F0 .085(is initialized to 1 each time the shell)2.335 F .845 -(or a shell script is in)144 232.8 R -.2(vo)-.4 G -.1(ke).2 G 3.345 -(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F1 +(or a shell script is in)144 393.6 R -.2(vo)-.4 G -.1(ke).2 G 3.345 +(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F3 (getopts)3.346 E F0 .846(places that ar)3.346 F(gument)-.18 E .804 -(into the v)144 244.8 R(ariable)-.25 E F3(OPT)3.304 E(ARG)-.81 E F4(.)A -F0 .803(The shell does not reset)5.304 F F3(OPTIND)3.303 E F0 .803 +(into the v)144 405.6 R(ariable)-.25 E F4(OPT)3.304 E(ARG)-.81 E F5(.)A +F0 .803(The shell does not reset)5.304 F F4(OPTIND)3.303 E F0 .803 (automatically; it must be manually)3.053 F .293 -(reset between multiple calls to)144 256.8 R F1(getopts)2.793 E F0 .293 +(reset between multiple calls to)144 417.6 R F3(getopts)2.793 E F0 .293 (within the same shell in)2.793 F -.2(vo)-.4 G .293(cation if a ne).2 F -2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 268.8 -Q 2.044(When the end of options is encountered,)144 292.8 R F1(getopts) +2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 429.6 +Q 2.044(When the end of options is encountered,)144 453.6 R F3(getopts) 4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.043 -(alue greater than zero.)-.25 F F3(OPTIND)144 304.8 Q F0 +(alue greater than zero.)-.25 F F4(OPTIND)144 465.6 Q F0 (is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G -(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F2(name)2.5 E F0 -(is set to ?.)2.5 E F1(getopts)144 328.8 Q F0 2.392 +(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0 +(is set to ?.)2.5 E F3(getopts)144 489.6 Q F0 2.392 (normally parses the positional parameters, b)4.892 F 2.392 (ut if more ar)-.2 F 2.393(guments are gi)-.18 F -.15(ve)-.25 G 4.893 -(ni).15 G(n)-4.893 E F2(ar)4.893 E(gs)-.37 E F0(,).27 E F1(getopts)144 -340.8 Q F0(parses those instead.)2.5 E F1(getopts)144 364.8 Q F0 1.166 +(ni).15 G(n)-4.893 E F1(ar)4.893 E(gs)-.37 E F0(,).27 E F3(getopts)144 +501.6 Q F0(parses those instead.)2.5 E F3(getopts)144 525.6 Q F0 1.166 (can report errors in tw)3.666 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F -1.165(the \214rst character of)3.665 F F2(optstring)3.895 E F0 1.165 -(is a colon,)3.885 F F2(silent)4.005 E F0(error)4.345 E 1.07 -(reporting is used.)144 376.8 R 1.071 +1.165(the \214rst character of)3.665 F F1(optstring)3.895 E F0 1.165 +(is a colon,)3.885 F F1(silent)4.005 E F0(error)4.345 E 1.07 +(reporting is used.)144 537.6 R 1.071 (In normal operation, diagnostic messages are printed when in)6.07 F -.25(va)-.4 G 1.071(lid options or).25 F .394(missing option ar)144 -388.8 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F -(ariable)-.25 E F3(OPTERR)2.894 E F0 .394 -(is set to 0, no error messages)2.644 F(will be displayed, e)144 400.8 Q +549.6 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F +(ariable)-.25 E F4(OPTERR)2.894 E F0 .394 +(is set to 0, no error messages)2.644 F(will be displayed, e)144 561.6 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E -F2(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 424.8 R --.25(va)-.4 G .666(lid option is seen,).25 F F1(getopts)3.166 E F0 .667 -(places ? into)3.167 F F2(name)3.527 E F0 .667 +F1(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 585.6 R +-.25(va)-.4 G .666(lid option is seen,).25 F F3(getopts)3.166 E F0 .667 +(places ? into)3.167 F F1(name)3.527 E F0 .667 (and, if not silent, prints an error message)3.347 F .4(and unsets)144 -436.8 R F3(OPT)2.9 E(ARG)-.81 E F4(.)A F0(If)4.899 E F1(getopts)2.899 E -F0 .399(is silent, the option character found is placed in)2.899 F F3 +597.6 R F4(OPT)2.9 E(ARG)-.81 E F5(.)A F0(If)4.899 E F3(getopts)2.899 E +F0 .399(is silent, the option character found is placed in)2.899 F F4 (OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F -(diagnostic message is printed.)144 448.8 Q 1.241(If a required ar)144 -472.8 R 1.241(gument is not found, and)-.18 F F1(getopts)3.741 E F0 -1.241(is not silent, a question mark \()3.741 F F1(?).833 E F0 3.742 -(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F2(name)144 484.8 -Q F0(,).18 E F3(OPT)2.735 E(ARG)-.81 E F0 .234 -(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F1 -(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F1(:).833 E -F0(\)).833 E(is placed in)144 496.8 Q F2(name)2.86 E F0(and)2.68 E F3 -(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F1 -(getopts)144 520.8 Q F0 .902 +(diagnostic message is printed.)144 609.6 Q 1.241(If a required ar)144 +633.6 R 1.241(gument is not found, and)-.18 F F3(getopts)3.741 E F0 +1.241(is not silent, a question mark \()3.741 F F3(?).833 E F0 3.742 +(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F1(name)144 645.6 +Q F0(,).18 E F4(OPT)2.735 E(ARG)-.81 E F0 .234 +(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F3 +(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F3(:).833 E +F0(\)).833 E(is placed in)144 657.6 Q F1(name)2.86 E F0(and)2.68 E F4 +(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F3 +(getopts)144 681.6 Q F0 .902 (returns true if an option, speci\214ed or unspeci\214ed, is found.) 3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F -(options is encountered or an error occurs.)144 532.8 Q F1(hash)108 -549.6 Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1-2.5 E F2(\214lename) -2.5 E F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A -.858(Each time)144 561.6 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo) --.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F F2(name) -3.718 E F0 .858(is determined by searching)3.538 F .956 -(the directories in)144 573.6 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0 +(options is encountered or an error occurs.)144 693.6 Q(GNU Bash 5.0)72 +768 Q(2004 Apr 20)149.565 E(9)203.725 E 0 Cg EP +%%Page: 10 10 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(hash)108 84 Q F0([) +2.5 E F1(\255lr)A F0 2.5(][)C F1-2.5 E/F2 10/Times-Italic@0 SF +(\214lename)2.5 E F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 +E F0(])A .858(Each time)144 96 R F1(hash)3.358 E F0 .858(is in)3.358 F +-.2(vo)-.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F +F2(name)3.718 E F0 .858(is determined by searching)3.538 F .956 +(the directories in)144 108 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0 .956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956 -(viously-remembered pathname is discarded.)-.25 F .243(If the)144 585.6 -R F12.743 E F0 .243 +(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 597.6 R(The)6.711 E F14.211 E F0 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 609.6 R .833 +.833(option causes the shell to for)144 144 R .833 (get the remembered location of each)-.18 F F2(name)3.333 E F0 5.833(.I) C 3.333(ft)-5.833 G(he)-3.333 E F13.333 E F0 .833(option is sup-) -3.333 F .703(plied, the full pathname to which each)144 621.6 R F2(name) +3.333 F .703(plied, the full pathname to which each)144 156 R F2(name) 3.204 E F0 .704(corresponds is printed.)3.204 F .704(If multiple)5.704 F F2(name)3.204 E F0(ar)3.204 E(guments)-.18 E .795(are supplied with)144 -633.6 R 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 +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 -645.6 R .934(If no ar)5.934 F .935(guments are gi)-.18 F -.15(ve)-.25 G -.935(n, or if).15 F(only)144 657.6 Q F12.822 E F0 .322 +(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 669.6 Q F2(name)2.86 -E F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.) -.25 E F1(help)108 686.4 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2 +.321(The return status is true)5.321 F(unless a)144 204 Q F2(name)2.86 E +F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.) +.25 E F1(help)108 220.8 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2 (pattern)-2.5 E F0(])A .866(Display helpful information about b)144 -698.4 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 +232.8 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 .867(is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25 G 3.367(sd).15 G(etailed)-3.367 E .307(help on all commands matching)144 -710.4 R F2(pattern)2.807 E F0 2.807(;o).24 G .307 +244.8 R F2(pattern)2.807 E F0 2.807(;o).24 G .307 (therwise help for all the b)-2.807 F .306 -(uiltins and shell control struc-)-.2 F(tures is printed.)144 722.4 Q -(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(9)203.725 E 0 Cg EP -%%Page: 10 10 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0 -(Display a short description of each)180 84 Q/F2 10/Times-Italic@0 SF -(pattern)2.5 E F1144 96 Q F0(Display the description of each)180 -96 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G(ormat)-2.5 -E F1144 108 Q F0(Display only a short usage synopsis for each)180 -108 Q F2(pattern)2.5 E F0 -(The return status is 0 unless no command matches)144 124.8 Q F2 -(pattern)2.5 E F0(.).24 E F1(history [)108 141.6 Q F2(n)A F1(])A -(history \255c)108 153.6 Q(history \255d)108 165.6 Q F2(of)2.5 E(fset) --.18 E F1(history \255anrw)108 177.6 Q F0([)2.5 E F2(\214lename)A F0(])A -F1(history \255p)108 189.6 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5 -(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 201.6 Q F2(ar)2.5 E(g) +(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 -213.6 S .752 +410.4 S .752 (th no options, display the command history list with line numbers.).4 F .752(Lines listed with a)5.752 F F1(*)3.252 E F0(ha)3.252 E -.15(ve)-.2 -G .381(been modi\214ed.)144 225.6 R .38(An ar)5.38 F .38(gument of)-.18 +G .381(been modi\214ed.)144 422.4 R .38(An ar)5.38 F .38(gument of)-.18 F F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 (lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9 -/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 237.6 Q(T)-.855 E F0 .264 +/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 434.4 Q(T)-.855 E F0 .264 (is set and not null, it is used as a format string for)2.514 F F2 (strftime)2.765 E F0 .265(\(3\) to display the time stamp asso-)B 1.02 -(ciated with each displayed history entry)144 249.6 R 6.019(.N)-.65 G +(ciated with each displayed history entry)144 446.4 R 6.019(.N)-.65 G 3.519(oi)-6.019 G(nterv)-3.519 E 1.019 (ening blank is printed between the formatted)-.15 F .176 -(time stamp and the history line.)144 261.6 R(If)5.176 E F2(\214lename) +(time stamp and the history line.)144 458.4 R(If)5.176 E F2(\214lename) 2.676 E F0 .176 (is supplied, it is used as the name of the history \214le; if)2.676 F -(not, the v)144 273.6 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.) +(not, the v)144 470.4 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.) 2.25 E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 285.6 Q F0 -(Clear the history list by deleting all the entries.)180 285.6 Q F1 -144 297.6 Q F2(of)2.5 E(fset)-.18 E F0 -(Delete the history entry at position)180 309.6 Q F2(of)2.5 E(fset)-.18 -E F0(.)A F1144 321.6 Q F0 .565(Append the `)180 321.6 R(`ne)-.74 E -(w')-.25 E 3.065('h)-.74 G .564(istory lines to the history \214le.) --3.065 F .564(These are history lines entered since)5.564 F(the be)180 -333.6 Q(ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E -(ut not already appended to the history \214le.)-.2 E F1144 345.6 +(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 +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 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 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 578.4 Q F0 .564(Append the `)180 578.4 R(`ne)-.74 E(w')-.25 E 3.064 +('h)-.74 G .564(istory lines to the history \214le.)-3.064 F .565 +(These are history lines entered since)5.564 F(the be)180 590.4 Q +(ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E +(ut not already appended to the history \214le.)-.2 E F1144 602.4 Q F0 .854(Read the history lines not already read from the history \214\ -le into the current history list.)180 345.6 R .773 -(These are lines appended to the history \214le since the be)180 357.6 R -.772(ginning of the current)-.15 F F1(bash)3.272 E F0(ses-)3.272 E -(sion.)180 369.6 Q F1144 381.6 Q F0(Read the contents of the hist\ -ory \214le and append them to the current history list.)180 381.6 Q F1 -144 393.6 Q F0 -(Write the current history list to the history \214le, o)180 393.6 Q +le into the current history list.)180 602.4 R .772 +(These are lines appended to the history \214le since the be)180 614.4 R +.773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E +(sion.)180 626.4 Q 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 405.6 Q F0 .625 -(Perform history substitution on the follo)180 405.6 R(wing)-.25 E F2 -(ar)3.125 E(gs)-.37 E F0 .626(and display the result on the standard) -3.125 F 2.975(output. Does)180 417.6 R .475 +(ontents.)-2.5 E 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 674.4 R .475 (not store the results in the history list.)2.975 F(Each)5.475 E F2(ar) 2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F -(normal history e)180 429.6 Q(xpansion.)-.15 E F1144 441.6 Q F0 -.362(Store the)180 441.6 R F2(ar)3.192 E(gs)-.37 E F0 .363 -(in the history list as a single entry)3.132 F 5.363(.T)-.65 G .363 -(he last command in the history list is)-5.363 F(remo)180 453.6 Q -.15 +(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 710.4 Q -.15 (ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 -(are added.)2.77 E .146(If the)144 470.4 R F3(HISTTIMEFORMA)2.645 E(T) +(are added.)2.77 E .145(If the)144 727.2 R F3(HISTTIMEFORMA)2.645 E(T) -.855 E F0 -.25(va)2.395 G .145 (riable is set, the time stamp information associated with each history) -.25 F .668(entry is written to the history \214le, mark)144 482.4 R .669 -(ed with the history comment character)-.1 F 5.669(.W)-.55 G .669 -(hen the history)-5.669 F .956(\214le is read, lines be)144 494.4 R .956 -(ginning with the history comment character follo)-.15 F .955 -(wed immediately by a digit)-.25 F 1.795 -(are interpreted as timestamps for the follo)144 506.4 R 1.795 -(wing history entry)-.25 F 6.795(.T)-.65 G 1.795(he return v)-6.795 F -1.796(alue is 0 unless an)-.25 F(in)144 518.4 Q -.25(va)-.4 G .768(lid \ -option is encountered, an error occurs while reading or writing the his\ -tory \214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)144 530.4 Q(fset) --.18 E F0 1.031(is supplied as an ar)3.531 F 1.031(gument to)-.18 F F1 -3.531 E F0 3.531(,o)C 3.531(rt)-3.531 G 1.031(he history e)-3.531 -F 1.031(xpansion supplied as an ar)-.15 F 1.032(gument to)-.18 F F1 -3.532 E F0 -.1(fa)144 542.4 S(ils.).1 E F1(jobs)108 559.2 Q F0([) -2.5 E F1(\255lnprs)A F0 2.5(][)C F2(jobspec)A F0(... ])2.5 E F1 -(jobs \255x)108 571.2 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 -E F0(... ])2.5 E(The \214rst form lists the acti)144 583.2 Q .3 -.15 -(ve j)-.25 H 2.5(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E F1144 595.2 Q F0 -(List process IDs in addition to the normal information.)180 595.2 Q F1 -144 607.2 Q F0 .194(Display information only about jobs that ha) -180 607.2 R .494 -.15(ve c)-.2 H .193(hanged status since the user w).15 -F .193(as last noti-)-.1 F(\214ed of their status.)180 619.2 Q F1 -144 631.2 Q F0(List only the process ID of the job')180 631.2 Q 2.5(sp) --.55 G(rocess group leader)-2.5 E(.)-.55 E F1144 643.2 Q F0 -(Display only running jobs.)180 643.2 Q F1144 655.2 Q F0 -(Display only stopped jobs.)180 655.2 Q(If)144 672 Q F2(jobspec)4.553 E -F0 .313(is gi)3.123 F -.15(ve)-.25 G .313 -(n, output is restricted to information about that job).15 F 5.314(.T) --.4 G .314(he return status is 0 unless)-5.314 F(an in)144 684 Q -.25 -(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25 -E F2(jobspec)4.24 E F0(is supplied.)2.81 E .395(If the)144 700.8 R F1 -2.895 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0 -.394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in) -3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .394 -(with the corre-)3.164 F(sponding process group ID, and e)144 712.8 Q --.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar) -2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E -(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(10)198.725 E 0 Cg EP +.25 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(10)198.725 E 0 Cg EP %%Page: 11 11 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(kill)108 84 Q F0([) -2.5 E F1A/F2 10/Times-Italic@0 SF(sigspec)2.5 E F0(|)2.5 E F1 -2.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2(sigspec)A F0 2.5 -(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F1 -(kill \255l)108 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 .119(Send the signal named by)144 -108 R F2(sigspec)2.959 E F0(or)2.929 E F2(signum)2.959 E F0 .119 -(to the processes named by)2.939 F F2(pid)3.87 E F0(or)3.39 E F2 -(jobspec)2.62 E F0(.).31 E F2(sigspec)5.46 E F0(is)2.93 E .319 -(either a case-insensiti)144 120 R .619 -.15(ve s)-.25 H .319 -(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.819 E F0 .318 -(\(with or without the)2.569 F F3(SIG)2.818 E F0 .318 -(pre\214x\) or a signal)2.568 F(number;)144 132 Q F2(signum)4.188 E F0 -1.349(is a signal number)4.168 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec) +E(UIL)-.1 E(TINS\(1\))-.92 E .669 +(entry is written to the history \214le, mark)144 84 R .669 +(ed with the history comment character)-.1 F 5.668(.W)-.55 G .668 +(hen the history)-5.668 F .955(\214le is read, lines be)144 96 R .956 +(ginning with the history comment character follo)-.15 F .956 +(wed immediately by a digit)-.25 F 1.796 +(are interpreted as timestamps for the follo)144 108 R 1.795 +(wing history entry)-.25 F 6.795(.T)-.65 G 1.795(he return v)-6.795 F +1.795(alue is 0 unless an)-.25 F(in)144 120 Q -.25(va)-.4 G .768(lid op\ +tion is encountered, an error occurs while reading or writing the histo\ +ry \214le, an in).25 F -.25(va)-.4 G(lid).25 E/F1 10/Times-Italic@0 SF +(of)144 132 Q(fset)-.18 E F0 1.032(is supplied as an ar)3.532 F 1.031 +(gument to)-.18 F/F2 10/Times-Bold@0 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 379.2 Q F1(signum)4.189 E F0 +1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F1(sigspec) 4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0 -1.349(is assumed.)3.599 F(An)6.349 E(ar)144 144 Q .523(gument of)-.18 F -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 .378(gument to)-.18 F F1 -2.878 E F0 .378 -(is a number specifying either a signal number or the e)2.878 F .377 -(xit status of a process termi-)-.15 F .962(nated by a signal.)144 180 R -(The)5.962 E 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 +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 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 +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 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 192 Q(alse if an error occurs or an in)-.1 -E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 208.8 Q F2 -(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144 -220.8 Q F2(ar)3.027 E(g)-.37 E F0 .197(is an arithmetic e)2.917 F .197 -(xpression to be e)-.15 F -.25(va)-.25 G .196(luated \(see).25 F F3 .196 -(ARITHMETIC EV)2.696 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo) -2.446 E -.15(ve)-.15 G 2.696(\). If).15 F(the last)144 232.8 Q F2(ar) -2.83 E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F1(let)2.5 E F0 -(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 249.6 Q F0([)2.5 -E F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C -(.. | \255 ])-2.5 E -.15(Fo)144 261.6 S 2.56(re).15 G .06(ach ar)-2.56 F -.06(gument, a local v)-.18 F .06(ariable named)-.25 F F2(name)2.92 E F0 -.06(is created, and assigned)2.74 F F2(value)2.56 E F0 5.06(.T).18 G(he) --5.06 E F2(option)2.56 E F0 .06(can be)2.56 F(an)144 273.6 Q 3.153(yo) --.15 G 3.153(ft)-3.153 G .653(he options accepted by)-3.153 F F1(declar) -3.153 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F1(local)3.152 E F0 .652 +(successfully sent, or f)144 439.2 Q(alse if an error occurs or an in) +-.1 E -.25(va)-.4 G(lid option is encountered.).25 E F2(let)108 456 Q F1 +(ar)2.5 E(g)-.37 E F0([)2.5 E F1(ar)A(g)-.37 E F0(...])2.5 E(Each)144 +468 Q F1(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197 +(xpression to be e)-.15 F -.25(va)-.25 G .197(luated \(see).25 F F3 .197 +(ARITHMETIC EV)2.697 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo) +2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 480 Q F1(ar)2.83 +E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F2(let)2.5 E F0 +(returns 1; 0 is returned otherwise.)2.5 E F2(local)108 496.8 Q F0([)2.5 +E F1(option)A F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 2.5(].)C +(.. | \255 ])-2.5 E -.15(Fo)144 508.8 S 2.56(re).15 G .06(ach ar)-2.56 F +.06(gument, a local v)-.18 F .06(ariable named)-.25 F F1(name)2.92 E F0 +.06(is created, and assigned)2.74 F F1(value)2.56 E F0 5.06(.T).18 G(he) +-5.06 E F1(option)2.56 E F0 .06(can be)2.56 F(an)144 520.8 Q 3.152(yo) +-.15 G 3.152(ft)-3.152 G .652(he options accepted by)-3.152 F F2(declar) +3.152 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F2(local)3.152 E F0 .653 (is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 -285.6 Q F2(name)3.281 E F0 .421(to ha)3.101 F .721 -.15(ve a v)-.2 H +532.8 Q F1(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H .422(isible scope restricted to that function and its children.).15 F -(If)5.422 E F2(name)2.922 E F0 .422(is \255, the set)2.922 F 1.461 -(of shell options is made local to the function in which)144 297.6 R F1 -(local)3.961 E F0 1.461(is in)3.961 F -.2(vo)-.4 G -.1(ke).2 G 1.461 -(d: shell options changed).1 F 1.562(using the)144 309.6 R F1(set)4.062 -E F0 -.2(bu)4.062 G 1.563 -(iltin inside the function are restored to their original v).2 F 1.563 -(alues when the function)-.25 F 3.744(returns. W)144 321.6 R 1.244 -(ith no operands,)-.4 F F1(local)3.744 E F0 1.244 -(writes a list of local v)3.744 F 1.243 -(ariables to the standard output.)-.25 F 1.243(It is an)6.243 F .42 -(error to use)144 333.6 R F1(local)2.92 E F0 .42 +(If)5.421 E F1(name)2.921 E F0 .421(is \255, the set)2.921 F 1.461 +(of shell options is made local to the function in which)144 544.8 R F2 +(local)3.961 E F0 1.462(is in)3.961 F -.2(vo)-.4 G -.1(ke).2 G 1.462 +(d: shell options changed).1 F 1.563(using the)144 556.8 R F2(set)4.063 +E F0 -.2(bu)4.063 G 1.563 +(iltin inside the function are restored to their original v).2 F 1.562 +(alues when the function)-.25 F 3.743(returns. W)144 568.8 R 1.243 +(ith no operands,)-.4 F F2(local)3.743 E F0 1.243 +(writes a list of local v)3.743 F 1.244 +(ariables to the standard output.)-.25 F 1.244(It is an)6.244 F .42 +(error to use)144 580.8 R F2(local)2.92 E F0 .42 (when not within a function.)2.92 F .42(The return status is 0 unless) -5.42 F F1(local)2.92 E F0 .42(is used outside a)2.92 F(function, an in) -144 345.6 Q -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or) -2.68 E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout) -108 362.4 Q F0(Exit a login shell.)144 362.4 Q F1(map\214le)108 379.2 Q -F0([)2.5 E F1A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count) -2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1 --2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1 --2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E -F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E -(ay)-.15 E F0(])A F1 -.18(re)108 391.2 S(adarray).18 E F0([)2.5 E F1 -A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count)2.5 E F0 2.5 -(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1-2.5 E F2 -(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1-2.5 E F2 -(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][) -C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0 -(])A .351(Read lines from the standard input into the inde)144 403.2 R --.15(xe)-.15 G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F2 -(arr)2.85 E(ay)-.15 E F0 2.85(,o).32 G 2.85(rf)-2.85 G .35 -(rom \214le descriptor)-2.85 F F2(fd)2.85 E F0 1.248(if the)144 415.2 R -F13.748 E F0 1.248(option is supplied.)3.748 F 1.249(The v)6.249 F +5.42 F F2(local)2.92 E F0 .42(is used outside a)2.92 F(function, an in) +144 592.8 Q -.25(va)-.4 G(lid).25 E F1(name)2.86 E F0(is supplied, or) +2.68 E F1(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F2(logout) +108 609.6 Q F0(Exit a login shell.)144 609.6 Q F2(map\214le)108 626.4 Q +F0([)2.5 E 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 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.749 E(ay)-.15 E F0 6.249(.O)C 1.249(ptions, if supplied,) --6.249 F(ha)144 427.2 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 439.2 Q F0(The \214rst character of) -180 439.2 Q F2(delim)2.5 E F0 -(is used to terminate each input line, rather than ne)2.5 E(wline.)-.25 -E F1144 451.2 Q F0(Cop)180 451.2 Q 2.5(ya)-.1 G 2.5(tm)-2.5 G(ost) --2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count)2.5 E F0 -(is 0, all lines are copied.)2.5 E F1144 463.2 Q F0(Be)180 463.2 Q -(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 E(x) --.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E 2.5(xi) --.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 475.2 Q F0 -(Discard the \214rst)180 475.2 Q F2(count)2.5 E F0(lines read.)2.5 E F1 -144 487.2 Q F0(Remo)180 487.2 Q .3 -.15(ve a t)-.15 H(railing).15 -E F2(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E -(wline\) from each line read.)-.25 E F1144 499.2 Q F0 -(Read lines from \214le descriptor)180 499.2 Q F2(fd)2.5 E F0 -(instead of the standard input.)2.5 E F1144 511.2 Q F0(Ev)180 -511.2 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2 -(quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F12.5 E F0 -(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1144 523.2 -Q F0(Specify the number of lines read between each call to)180 523.2 Q -F2(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 540 Q F12.968 E F0 .467 +E F1(arr)3.748 E(ay)-.15 E F0 6.248(.O)C 1.248(ptions, if supplied,) +-6.248 F(ha)144 674.4 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E 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 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 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 552 R 2.761(xo)-.15 G -2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be assig\ -ned and the line to be assigned to that element)-.15 F .275 -(as additional ar)144 564 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E +(luated, it is sup-).25 F .261(plied the inde)144 172.8 R 2.761(xo)-.15 +G 2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be ass\ +igned and the line to be assigned to that element)-.15 F .275 +(as additional ar)144 184.8 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E F0 .275(is e)2.775 F -.25(va)-.25 G .274 (luated after the line is read b).25 F .274 -(ut before the array element is)-.2 F(assigned.)144 576 Q -(If not supplied with an e)144 592.8 Q(xplicit origin,)-.15 E F1 +(ut before the array element is)-.2 F(assigned.)144 196.8 Q +(If not supplied with an e)144 213.6 Q(xplicit origin,)-.15 E F1 (map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0 -(before assigning to it.)2.5 E F1(map\214le)144 609.6 Q F0 1.905 +(before assigning to it.)2.5 E F1(map\214le)144 230.4 Q F0 1.905 (returns successfully unless an in)4.405 F -.25(va)-.4 G 1.905 (lid option or option ar).25 F 1.906(gument is supplied,)-.18 F F2(arr) -4.406 E(ay)-.15 E F0(is)4.406 E(in)144 621.6 Q -.25(va)-.4 G +4.406 E(ay)-.15 E F0(is)4.406 E(in)144 242.4 Q -.25(va)-.4 G (lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0 (is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E -F1(popd)108 638.4 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 -2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 650.4 Q -.15(ve)-.15 G 2.8(se) +F1(popd)108 259.2 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 +2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 271.2 Q -.15(ve)-.15 G 2.8(se) .15 G .3(ntries from the directory stack.)-2.8 F -.4(Wi)5.299 G .299 (th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 G .299(he top directory from the)-2.799 F 1.478(stack, and performs a)144 -662.4 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479 +283.2 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479 (op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.479 (uments, if supplied, ha).18 F 1.779 -.15(ve t)-.2 H 1.479(he follo).15 -F(wing)-.25 E(meanings:)144 674.4 Q F1144 686.4 Q F0 .551 -(Suppresses the normal change of directory when remo)180 686.4 R .551 +F(wing)-.25 E(meanings:)144 295.2 Q 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 698.4 Q F1(+)144 710.4 Q F2(n)A -F0(Remo)180 710.4 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E +(that only the stack is manipulated.)180 319.2 Q F1(+)144 331.2 Q F2(n)A +F0(Remo)180 331.2 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E F0 .14(th entry counting from the left of the list sho)B .14(wn by)-.25 F F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 -722.4 S 2.5(re).15 G(xample:)-2.65 E/F4 10/Courier@0 SF(popd +0)2.5 E F0 +343.2 S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0 (remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,) --.65 E F4(popd +1)2.5 E F0(the second.)2.5 E(GNU Bash-4.2)72 768 Q -(2004 Apr 20)148.735 E(11)198.725 E 0 Cg EP -%%Page: 12 12 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q/F2 10 -/Times-Italic@0 SF(n)A F0(Remo)180 84 Q -.15(ve)-.15 G 3.76(st).15 G(he) --3.76 E F2(n)3.76 E F0 1.259 -(th entry counting from the right of the list sho)B 1.259(wn by)-.25 F -F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5(zero. F) -180 96 R(or e)-.15 E(xample:)-.15 E/F3 10/Courier@0 SF(popd -0)2.5 E F0 +-.65 E F3(popd +1)2.5 E F0(the second.)2.5 E 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 367.2 R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0 (remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 E F3(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .643(If the)144 -112.8 R F1(popd)3.143 E F0 .643(command is successful, a)3.143 F F1 -(dirs)3.143 E F0 .644(is performed as well, and the return status is 0.) -3.143 F F1(popd)5.644 E F0 .416(returns f)144 124.8 R .416 -(alse if an in)-.1 F -.25(va)-.4 G .415 +384 R F1(popd)3.143 E F0 .643(command is successful, a)3.143 F F1(dirs) +3.143 E F0 .644(is performed as well, and the return status is 0.)3.143 +F F1(popd)5.644 E F0 .416(returns f)144 396 R .416(alse if an in)-.1 F +-.25(va)-.4 G .415 (lid option is encountered, the directory stack is empty).25 F 2.915 (,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F -(tory stack entry is speci\214ed, or the directory change f)144 136.8 Q -(ails.)-.1 E F1(printf)108 153.6 Q F0([)2.5 E 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 165.6 R F2(ar)3.936 E(guments)-.37 E F0 1.437 +(Write the formatted)144 436.8 R F2(ar)3.936 E(guments)-.37 E F0 1.437 (to the standard output under the control of the)3.936 F F2(format)3.937 E F0 6.437(.T)C(he)-6.437 E F13.937 E F0 .126 -(option causes the output to be assigned to the v)144 177.6 R(ariable) +(option causes the output to be assigned to the v)144 448.8 R(ariable) -.25 E F2(var)2.626 E F0 .126(rather than being printed to the standard) -2.626 F(output.)144 189.6 Q(The)144 213.6 Q F2(format)3.017 E F0 .517(i\ +2.626 F(output.)144 460.8 Q(The)144 484.8 Q F2(format)3.017 E F0 .517(i\ s a character string which contains three types of objects: plain chara\ cters, which are)3.017 F .704(simply copied to standard output, charact\ -er escape sequences, which are con)144 225.6 R -.15(ve)-.4 G .703 +er escape sequences, which are con)144 496.8 R -.15(ve)-.4 G .703 (rted and copied to).15 F .036(the standard output, and format speci\ -\214cations, each of which causes printing of the ne)144 237.6 R .037 -(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 249.6 Q(gument)-.37 E F0 +\214cations, each of which causes printing of the ne)144 508.8 R .037 +(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 520.8 Q(gument)-.37 E F0 5.532(.I)C 3.032(na)-5.532 G .532(ddition to the standard)-3.032 F F2 (printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.031 -E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 261.6 Q -(xtensions:)-.15 E F1(%b)144 273.6 Q F0(causes)180 273.6 Q F1(printf) +E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 532.8 Q +(xtensions:)-.15 E F1(%b)144 544.8 Q F0(causes)180 544.8 Q F1(printf) 2.595 E F0 .096(to e)2.595 F .096 (xpand backslash escape sequences in the corresponding)-.15 F F2(ar) -2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 285.6 Q(ay as) --.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 297.6 Q F0(causes)180 297.6 Q +2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 556.8 Q(ay as) +-.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 568.8 Q F0(causes)180 568.8 Q F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E (gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F -(input.)180 309.6 Q F1(%\()144 321.6 Q F2(datefmt)A F1(\)T)A F0(causes) -180 333.6 Q F1(printf)4.403 E F0 1.904 +(input.)180 580.8 Q F1(%\()144 592.8 Q F2(datefmt)A F1(\)T)A F0(causes) +180 604.8 Q F1(printf)4.403 E F0 1.904 (to output the date-time string resulting from using)4.403 F F2(datefmt) -4.404 E F0 1.904(as a format)4.404 F .381(string for)180 345.6 R F2 +4.404 E F0 1.904(as a format)4.404 F .381(string for)180 616.8 R F2 (strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar) 2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381 -(ger representing the number)-.15 F .457(of seconds since the epoch.)180 -357.6 R -1 -.8(Tw o)5.458 H .458(special ar)3.758 F .458(gument v)-.18 F -.458(alues may be used: -1 represents the)-.25 F .848 -(current time, and -2 represents the time the shell w)180 369.6 R .847 -(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.347(d. If).1 F .847(no ar)3.347 -F .847(gument is speci-)-.18 F .354(\214ed, con)180 381.6 R -.15(ve)-.4 -G .354(rsion beha).15 F -.15(ve)-.2 G 2.854(sa).15 G 2.854(si)-2.854 G -2.854(f-)-2.854 G 2.854(1h)-2.854 G .354(ad been gi)-2.854 F -.15(ve) --.25 G 2.854(n. This).15 F .355(is an e)2.854 F .355 -(xception to the usual)-.15 F F1(printf)2.855 E F0(beha)180 393.6 Q -(vior)-.2 E(.)-.55 E(Ar)144 410.4 Q .464(guments to non-string format s\ -peci\214ers are treated as C constants, e)-.18 F .463 -(xcept that a leading plus or)-.15 F 1.258(minus sign is allo)144 422.4 -R 1.259 +(ger representing the number)-.15 F .292(of seconds since the epoch.)180 +628.8 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F +.293(alues may be used: \2551 represents the)-.25 F .694 +(current time, and \2552 represents the time the shell w)180 640.8 R +.693(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.193(d. If).1 F .693(no ar) +3.193 F .693(gument is speci-)-.18 F .21(\214ed, con)180 652.8 R -.15 +(ve)-.4 G .21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71 +G 2.71<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25 +G 2.71(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F +F1(printf)2.71 E F0(beha)180 664.8 Q(vior)-.2 E(.)-.55 E(Ar)144 681.6 Q +.464(guments to non-string format speci\214ers are treated as C constan\ +ts, e)-.18 F .463(xcept that a leading plus or)-.15 F 1.258 +(minus sign is allo)144 693.6 R 1.259 (wed, and if the leading character is a single or double quote, the v) --.25 F 1.259(alue is the)-.25 F(ASCII v)144 434.4 Q(alue of the follo) --.25 E(wing character)-.25 E(.)-.55 E(The)144 451.2 Q F2(format)3.424 E +-.25 F 1.259(alue is the)-.25 F(ASCII v)144 705.6 Q(alue of the follo) +-.25 E(wing character)-.25 E(.)-.55 E(The)144 722.4 Q F2(format)3.424 E F0 .923(is reused as necessary to consume all of the)3.424 F F2(ar)3.423 E(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format) -3.423 E F0 .923(requires more)3.423 F F2(ar)144 463.2 Q(guments)-.37 E -F0 .033(than are supplied, the e)2.533 F .033 +3.423 E F0 .923(requires more)3.423 F(GNU Bash 5.0)72 768 Q(2004 Apr 20) +149.565 E(12)198.725 E 0 Cg EP +%%Page: 13 13 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Italic@0 SF(ar)144 84 Q +(guments)-.37 E F0 .033(than are supplied, the e)2.533 F .033 (xtra format speci\214cations beha)-.15 F .333 -.15(ve a)-.2 H 2.533(si) .15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .034(alue or null string,) --.25 F(as appropriate, had been supplied.)144 475.2 Q(The return v)5 E -(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) -108 492 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C --2.5 E F2(n)A F0(])A F1(pushd)108 504 Q F0([)2.5 E F1A F0 2.5 -(][)C F2(dir)-2.5 E F0(])A .64(Adds a directory to the top of the direc\ -tory stack, or rotates the stack, making the ne)144 516 R 3.139(wt)-.25 -G .639(op of the)-3.139 F .416(stack the current w)144 528 R .416 -(orking directory)-.1 F 5.416(.W)-.65 G .416(ith no ar)-5.816 F -(guments,)-.18 E F1(pushd)2.916 E F0 -.15(ex)2.916 G .416 -(changes the top tw).15 F 2.917(od)-.1 G(irectories)-2.917 E 1.625 -(and returns 0, unless the directory stack is empty)144 540 R 6.625(.A) --.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 -.15 -(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 552 Q F1 -144 564 Q F0 1.811(Suppresses the normal change of directory when\ - rotating or adding directories to the)180 564 R -(stack, so that only the stack is manipulated.)180 576 Q F1(+)144 588 Q -F2(n)A F0 1.268(Rotates the stack so that the)180 588 R F2(n)3.768 E F0 -1.267(th directory \(counting from the left of the list sho)B 1.267 -(wn by)-.25 F F1(dirs)180 600 Q F0 2.5(,s)C -(tarting with zero\) is at the top.)-2.5 E F1144 612 Q F2(n)A F0 .92 -(Rotates the stack so that the)180 612 R F2(n)3.42 E F0 .92 +-.25 F(as appropriate, had been supplied.)144 96 Q(The return v)5 E +(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E/F2 10 +/Times-Bold@0 SF(pushd)108 112.8 Q F0([)2.5 E 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 F1(dirs)180 624 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 -E F2(dir)144.35 636 Q F0(Adds)180 636 Q F2(dir)3.138 E F0 .288 +F F2(dirs)180 244.8 Q F0 2.5(,s)C(tarting with zero\) is at the top.) +-2.5 E F1(dir)144.35 256.8 Q F0(Adds)180 256.8 Q F1(dir)3.138 E F0 .288 (to the directory stack at the top, making it the ne)3.518 F 2.787(wc) -.25 G .287(urrent w)-2.787 F .287(orking directory as)-.1 F -(if it had been supplied as the ar)180 648 Q(gument to the)-.18 E F1(cd) -2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 664.8 R F1(pushd)2.988 -E F0 .488(command is successful, a)2.988 F F1(dirs)2.988 E F0 .488 +(if it had been supplied as the ar)180 268.8 Q(gument to the)-.18 E F2 +(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 285.6 R F2(pushd) +2.988 E F0 .488(command is successful, a)2.988 F F2(dirs)2.988 E F0 .488 (is performed as well.)2.988 F .489(If the \214rst form is used,)5.488 F -F1(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 676.8 R F2(dir) +F2(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 297.6 R F1(dir) 3.89 E F0 -.1(fa)4.27 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4 -F F1(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846 -(stack is empty)144 688.8 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\ +F F2(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846 +(stack is empty)144 309.6 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\ directory stack element is speci\214ed, or the directory change to the) --.15 F(speci\214ed ne)144 700.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5 -E(ails.)-.1 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(12)198.725 E 0 -Cg EP -%%Page: 13 13 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(pwd)108 84 Q F0([)2.5 -E F1(\255LP)A F0(])A .845(Print the absolute pathname of the current w) -144 96 R .845(orking directory)-.1 F 5.844(.T)-.65 G .844 +-.15 F(speci\214ed ne)144 321.6 Q 2.5(wc)-.25 G(urrent directory f)-2.5 +E(ails.)-.1 E F2(pwd)108 338.4 Q F0([)2.5 E F2(\255LP)A F0(])A .845 +(Print the absolute pathname of the current w)144 350.4 R .845 +(orking directory)-.1 F 5.844(.T)-.65 G .844 (he pathname printed contains no)-5.844 F .181(symbolic links if the)144 -108 R 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 +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 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 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 -1.465(he second w)-3.965 F 1.465(ord to the second)-.1 F F2(name)3.965 E + reading the name of the current directory or an in)144 386.4 R -.25(va) +-.4 G(lid).25 E(option is supplied.)144 398.4 Q F2 -.18(re)108 415.2 S +(ad).18 E F0([)3.817 E F2(\255ers)A F0 3.817(][)C F2-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 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 F2 -.75(Wo)3.847 G 1.347(rd Splitting).75 F +F0 3.847(,a)C 1.347(nd the \214rst w)-3.847 F 1.347(ord is)-.1 F 1.465 +(assigned to the \214rst)144 463.2 R F1(name)3.965 E F0 3.965(,t).18 G +1.465(he second w)-3.965 F 1.465(ord to the second)-.1 F F1(name)3.965 E F0 3.965(,a).18 G 1.465(nd so on.)-3.965 F 1.465(If there are more)6.465 -F -.1(wo)144 220.8 S 1.112(rds than names, the remaining w).1 F 1.112 +F -.1(wo)144 475.2 S 1.112(rds than names, the remaining w).1 F 1.112 (ords and their interv)-.1 F 1.112 -(ening delimiters are assigned to the last)-.15 F F2(name)144 232.8 Q F0 +(ening delimiters are assigned to the last)-.15 F F1(name)144 487.2 Q F0 5.722(.I).18 G 3.222(ft)-5.722 G .722(here are fe)-3.222 F .722(wer w) -.25 F .723 (ords read from the input stream than names, the remaining names are)-.1 -F .532(assigned empty v)144 244.8 R 3.032(alues. The)-.25 F .532 +F .532(assigned empty v)144 499.2 R 3.032(alues. The)-.25 F .532 (characters in)3.032 F/F3 9/Times-Bold@0 SF(IFS)3.032 E F0 .531 (are used to split the line into w)2.782 F .531(ords using the same)-.1 -F .197(rules the shell uses for e)144 256.8 R .197 -(xpansion \(described abo)-.15 F .497 -.15(ve u)-.15 H(nder).15 E F1 +F .197(rules the shell uses for e)144 511.2 R .197 +(xpansion \(described abo)-.15 F .497 -.15(ve u)-.15 H(nder).15 E F2 -.75(Wo)2.697 G .197(rd Splitting).75 F F0 2.697(\). The)B .197 -(backslash charac-)2.697 F .157(ter \()144 268.8 R F1(\\)A F0 2.657(\)m) +(backslash charac-)2.697 F .157(ter \()144 523.2 R F2(\\)A F0 2.657(\)m) C .157(ay be used to remo)-2.657 F .457 -.15(ve a)-.15 H .457 -.15(ny s) .15 H .157(pecial meaning for the ne).15 F .156 (xt character read and for line continu-)-.15 F 2.5(ation. Options,)144 -280.8 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 292.8 Q F2(aname)2.5 E F0 1.049 -(The w)180 304.8 R 1.049 +535.2 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E 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 316.8 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25 -(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0(ar)2.5 -E(guments are ignored.)-.18 E F1144 328.8 Q F2(delim)2.5 E F0 -(The \214rst character of)180 340.8 Q F2(delim)2.5 E F0 -(is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E -F1144 352.8 Q F0 .373 -(If the standard input is coming from a terminal,)180 352.8 R F1 -.18 -(re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.872 E F0(abo) -2.622 E -.15(ve)-.15 G 2.872(\)i).15 G 2.872(su)-2.872 G(sed)-2.872 E -.218(to obtain the line.)180 364.8 R .218 +-.25 E F1(aname)3.55 E F0 3.55(,s).18 G 1.05(tarting at 0.)-3.55 F F1 +(aname)180.33 571.2 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25 +(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F1(name)2.5 E F0(ar)2.5 +E(guments are ignored.)-.18 E 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 F1(delim)180 607.2 Q F0(is the empty string,)2.5 E F2 +-.18(re)2.5 G(ad).18 E F0 +(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F2 +144 619.2 Q F0 .372 +(If the standard input is coming from a terminal,)180 619.2 R F2 -.18 +(re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.873 E F0(abo) +2.623 E -.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G(sed)-2.873 E +.218(to obtain the line.)180 631.2 R .218 (Readline uses the current \(or def)5.218 F .218 (ault, if line editing w)-.1 F .218(as not pre)-.1 F(viously)-.25 E -(acti)180 376.8 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings.)-2.5 E -F1144 388.8 Q F2(te)2.5 E(xt)-.2 E F0(If)180 388.8 Q F1 -.18(re) -2.716 G(adline).18 E F0 .216(is being used to read the line,)2.716 F F2 -(te)2.716 E(xt)-.2 E F0 .216(is placed into the editing b)2.716 F(uf)-.2 -E .215(fer before edit-)-.25 F(ing be)180 400.8 Q(gins.)-.15 E F1 -144 412.8 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 424.8 S(ad).18 -E F0 1.394(returns after reading)3.894 F F2(nc)3.894 E(har)-.15 E(s)-.1 -E F0 1.395(characters rather than w)3.894 F 1.395 -(aiting for a complete line of)-.1 F(input, b)180 436.8 Q -(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15 -E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1 -144 448.8 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 460.8 S -(ad).18 E F0 1.269(returns after reading e)3.77 F(xactly)-.15 E F2(nc) -3.769 E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F -1.269(aiting for a complete)-.1 F .274 -(line of input, unless EOF is encountered or)180 472.8 R F1 -.18(re) -2.775 G(ad).18 E F0 .275(times out.)2.775 F .275 -(Delimiter characters encoun-)5.275 F 1.003 -(tered in the input are not treated specially and do not cause)180 484.8 -R F1 -.18(re)3.502 G(ad).18 E F0 1.002(to return until)3.502 F F2(nc) -3.502 E(har)-.15 E(s)-.1 E F0 .608(characters are read.)180 496.8 R .608 -(The result is not split on the characters in)5.608 F F1(IFS)3.108 E F0 -3.108(;t)C .609(he intent is that the)-3.108 F -.25(va)180 508.8 S .67 +(acti)180 643.2 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E +(ut uses Readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 E +(ault \214lename completion.)-.1 E 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 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 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(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 96 S(ad) +.18 E F0 1.269(returns after reading e)3.769 F(xactly)-.15 E F2(nc)3.769 +E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.27 +(aiting for a complete)-.1 F .275 +(line of input, unless EOF is encountered or)180 108 R F1 -.18(re)2.775 +G(ad).18 E F0 .274(times out.)2.774 F .274(Delimiter characters encoun-) +5.274 F 1.002 +(tered in the input are not treated specially and do not cause)180 120 R +F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc)3.503 +E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 132 R .608 +(The result is not split on the characters in)5.609 F F1(IFS)3.108 E F0 +3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 144 S .669 (riable is assigned e).25 F .669 -(xactly the characters read \(with the e)-.15 F .669 -(xception of backslash; see the)-.15 F F1180 520.8 Q F0 -(option belo)2.5 E(w\).)-.25 E F1144 532.8 Q F2(pr)2.5 E(ompt)-.45 -E F0(Display)180 544.8 Q F2(pr)3.66 E(ompt)-.45 E F0 1.161 -(on standard error)3.66 F 3.661(,w)-.4 G 1.161(ithout a trailing ne) --3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 556.8 Q -2.5(yi)-.15 G 2.5(nput. The)-2.5 F +(xactly the characters read \(with the e)-.15 F .67 +(xception of backslash; see the)-.15 F 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 568.8 Q F0 .544(Backslash does not act as an escape character) -180 568.8 R 5.543(.T)-.55 G .543 -(he backslash is considered to be part of)-5.543 F(the line.)180 580.8 Q -(In particular)5 E 2.5(,ab)-.4 G(ackslash-ne)-2.5 E -(wline pair may not be used as a line continuation.)-.25 E F1144 -592.8 Q F0(Silent mode.)180 592.8 Q +144 204 Q F0 .543(Backslash does not act as an escape character) +180 204 R 5.543(.T)-.55 G .544(he backslash is considered to be part of) +-5.543 F .493(the line.)180 216 R .493(In particular)5.493 F 2.993(,ab) +-.4 G(ackslash-ne)-2.993 E .493 +(wline pair may not then be used as a line continua-)-.25 F(tion.)180 +228 Q F1144 240 Q F0(Silent mode.)180 240 Q (If input is coming from a terminal, characters are not echoed.)5 E F1 -144 604.8 Q F2(timeout)2.5 E F0(Cause)180 616.8 Q F1 -.18(re)2.928 -G(ad).18 E F0 .428(to time out and return f)2.928 F .428 +144 252 Q F2(timeout)2.5 E F0(Cause)180 264 Q F1 -.18(re)2.928 G +(ad).18 E F0 .428(to time out and return f)2.928 F .428 (ailure if a complete line of input \(or a speci\214ed num-)-.1 F .561 -(ber of characters\) is not read within)180 628.8 R F2(timeout)3.061 E -F0(seconds.)3.061 E F2(timeout)5.561 E F0 .56(may be a decimal number) -3.061 F(with a fractional portion follo)180 640.8 Q +(ber of characters\) is not read within)180 276 R F2(timeout)3.061 E F0 +(seconds.)3.061 E F2(timeout)5.561 E F0 .56(may be a decimal number) +3.061 F(with a fractional portion follo)180 288 Q (wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E .3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ g input from a terminal, pipe, or other special \214le; it has no ef)180 -652.8 R .505(fect when reading)-.25 F .589(from re)180 664.8 R .589 +300 R .505(fect when reading)-.25 F .589(from re)180 312 R .589 (gular \214les.)-.15 F(If)5.589 E F1 -.18(re)3.089 G(ad).18 E F0 .589 (times out,)3.089 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve) -.2 G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .59 -(artial input read into the speci\214ed).15 F -.25(va)180 676.8 S -(riable).25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 -.27(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately) -2.77 F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 -G(ata.)-2.77 E 1.12(The e)180 688.8 R 1.12 -(xit status is 0 if input is a)-.15 F -.25(va)-.2 G 1.12 -(ilable on the speci\214ed \214le descriptor).25 F 3.62(,n)-.4 G 1.12 -(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 700.8 R -.15(ex)2.5 G -(it status is greater than 128 if the timeout is e).15 E(xceeded.)-.15 E -F1144 712.8 Q F2(fd)2.5 E F0(Read input from \214le descriptor)180 -712.8 Q F2(fd)2.5 E F0(.)A .477(If no)144 729.6 R F2(names)3.337 E F0 -.477(are supplied, the line read is assigned to the v)3.247 F(ariable) --.25 E F3(REPL)2.976 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A F0 .476 -(The e)4.976 F .476(xit status is zero,)-.15 F(GNU Bash-4.2)72 768 Q -(2004 Apr 20)148.735 E(13)198.725 E 0 Cg EP -%%Page: 14 14 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E .772(unless end-of-\214le is encountered,) -144 84 R/F1 10/Times-Bold@0 SF -.18(re)3.272 G(ad).18 E F0 .773 +(artial input read into the speci\214ed).15 F -.25(va)180 324 S(riable) +.25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 .27 +(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately)2.77 +F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 G +(ata.)-2.77 E 1.12(The e)180 336 R 1.12(xit status is 0 if input is a) +-.15 F -.25(va)-.2 G 1.12(ilable on the speci\214ed \214le descriptor) +.25 F 3.62(,n)-.4 G 1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 +348 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e) +.15 E(xceeded.)-.15 E F1144 360 Q F2(fd)2.5 E F0 +(Read input from \214le descriptor)180 360 Q F2(fd)2.5 E F0(.)A .477 +(If no)144 376.8 R F2(names)3.337 E F0 .477 +(are supplied, the line read is assigned to the v)3.247 F(ariable)-.25 E +/F3 9/Times-Bold@0 SF(REPL)2.976 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A +F0 .476(The e)4.976 F .476(xit status is zero,)-.15 F .772 +(unless end-of-\214le is encountered,)144 388.8 R F1 -.18(re)3.272 G(ad) +.18 E F0 .773 (times out \(in which case the status is greater than 128\), a)3.272 F --.25(va)144 96 S 2.004 +-.25(va)144 400.8 S 2.004 (riable assignment error \(such as assigning to a readonly v).25 F 2.004 (ariable\) occurs, or an in)-.25 F -.25(va)-.4 G 2.004(lid \214le).25 F -(descriptor is supplied as the ar)144 108 Q(gument to)-.18 E F12.5 -E F0(.)A F1 -.18(re)108 124.8 S(adonly).18 E F0([)2.5 E F1(\255aAf)A F0 -2.5(][)C F1-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(name)-2.5 E -F0([=)A F2(wor)A(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 136.8 R --.15(ve)-.25 G(n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77 -(ed readonly; the v)-.1 F .77(alues of these)-.25 F F2(names)3.63 E F0 -.77(may not be changed by subse-)3.54 F 1.097(quent assignment.)144 -148.8 R 1.097(If the)6.097 F F13.597 E F0 1.097 +(descriptor is supplied as the ar)144 412.8 Q(gument to)-.18 E F1 +2.5 E F0(.)A F1 -.18(re)108 429.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A +F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(wor)A +(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 441.6 R -.15(ve)-.25 G +(n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77(ed readonly; the v) +-.1 F .77(alues of these)-.25 F F2(names)3.63 E F0 .77 +(may not be changed by subse-)3.54 F 1.097(quent assignment.)144 453.6 R +1.097(If the)6.097 F F13.597 E F0 1.097 (option is supplied, the functions corresponding to the)3.597 F F2 -(names)3.596 E F0 1.096(are so)3.596 F(mark)144 160.8 Q 3.334(ed. The) +(names)3.596 E F0 1.096(are so)3.596 F(mark)144 465.6 Q 3.334(ed. The) -.1 F F13.334 E F0 .834(option restricts the v)3.334 F .834 (ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) -3.334 F F13.334 E F0 .834(option restricts the v)3.334 F(ari-) --.25 E .777(ables to associati)144 172.8 R 1.077 -.15(ve a)-.25 H 3.277 +-.25 E .777(ables to associati)144 477.6 R 1.077 -.15(ve a)-.25 H 3.277 (rrays. If).15 F .777(both options are supplied,)3.277 F F13.277 E F0(tak)3.277 E .776(es precedence.)-.1 F .776(If no)5.776 F F2(name) -3.636 E F0(ar)3.456 E(gu-)-.18 E .521(ments are gi)144 184.8 R -.15(ve) +3.636 E F0(ar)3.456 E(gu-)-.18 E .521(ments are gi)144 489.6 R -.15(ve) -.25 G .521(n, or if the).15 F F13.021 E F0 .521 (option is supplied, a list of all readonly names is printed.)3.021 F .522(The other)5.521 F .295(options may be used to restrict the output \ -to a subset of the set of readonly names.)144 196.8 R(The)5.295 E F1 +to a subset of the set of readonly names.)144 501.6 R(The)5.295 E F1 2.795 E F0(option)2.795 E .786 (causes output to be displayed in a format that may be reused as input.) -144 208.8 R .786(If a v)5.786 F .786(ariable name is fol-)-.25 F(lo)144 -220.8 Q .718(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) +144 513.6 R .786(If a v)5.786 F .786(ariable name is fol-)-.25 F(lo)144 +525.6 Q .718(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) -3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor) 3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in) -5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the) -144 232.8 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) +144 537.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) -.25 F .26(ariable name, or)-.25 F F12.76 E F0 .26 -(is supplied with a)2.76 F F2(name)144.36 244.8 Q F0 -(that is not a function.)2.68 E F1 -.18(re)108 261.6 S(tur).18 E(n)-.15 -E F0([)2.5 E F2(n)A F0(])A .021(Causes a function to stop e)144 273.6 R +(is supplied with a)2.76 F F2(name)144.36 549.6 Q F0 +(that is not a function.)2.68 E F1 -.18(re)108 566.4 S(tur).18 E(n)-.15 +E F0([)2.5 E F2(n)A F0(])A .021(Causes a function to stop e)144 578.4 R -.15(xe)-.15 G .021(cuting and return the v).15 F .021 (alue speci\214ed by)-.25 F F2(n)2.88 E F0 .02(to its caller)2.76 F 5.02 (.I)-.55 G(f)-5.02 E F2(n)2.88 E F0 .02(is omitted,)2.76 F .596 -(the return status is that of the last command e)144 285.6 R -.15(xe) +(the return status is that of the last command e)144 590.4 R -.15(xe) -.15 G .597(cuted in the function body).15 F 5.597(.I)-.65 G(f)-5.597 E F1 -.18(re)3.097 G(tur).18 E(n)-.15 E F0 .597(is e)3.097 F -.15(xe)-.15 -G(cuted).15 E 1.239(by a trap handler)144 297.6 R 3.738(,t)-.4 G 1.238 +G(cuted).15 E 1.239(by a trap handler)144 602.4 R 3.738(,t)-.4 G 1.238 (he last command used to determine the status is the last command e) --3.738 F -.15(xe)-.15 G(cuted).15 E 1.066(before the trap handler)144 -309.6 R 6.067(.i)-.55 G(f)-6.067 E F1 -.18(re)3.567 G(tur).18 E(n)-.15 E -F0 1.067(is e)3.567 F -.15(xe)-.15 G 1.067(cuted during a).15 F F1(DEB) -3.567 E(UG)-.1 E F0 1.067(trap, the last command used to)3.567 F .39 -(determine the status is the last command e)144 321.6 R -.15(xe)-.15 G +-3.738 F -.15(xe)-.15 G(cuted).15 E 1.032(before the trap handler)144 +614.4 R 6.032(.I)-.55 G(f)-6.032 E F1 -.18(re)3.532 G(tur).18 E(n)-.15 E +F0 1.032(is e)3.532 F -.15(xe)-.15 G 1.032(cuted during a).15 F F1(DEB) +3.533 E(UG)-.1 E F0 1.033(trap, the last command used to)3.533 F .39 +(determine the status is the last command e)144 626.4 R -.15(xe)-.15 G .389(cuted by the trap handler before).15 F F1 -.18(re)2.889 G(tur).18 E (n)-.15 E F0 -.1(wa)2.889 G 2.889(si).1 G -1.9 -.4(nv o)-2.889 H -.1(ke) -.4 G(d.).1 E(If)144 333.6 Q F1 -.18(re)2.583 G(tur).18 E(n)-.15 E F0 +.4 G(d.).1 E(If)144 638.4 Q F1 -.18(re)2.583 G(tur).18 E(n)-.15 E F0 .084(is used outside a function, b)2.583 F .084(ut during e)-.2 F -.15 (xe)-.15 G .084(cution of a script by the).15 F F1(.)2.584 E F0(\()5.084 E F1(sour)A(ce)-.18 E F0 2.584(\)c)C .084(ommand, it)-2.584 F .589 -(causes the shell to stop e)144 345.6 R -.15(xe)-.15 G .589 +(causes the shell to stop e)144 650.4 R -.15(xe)-.15 G .589 (cuting that script and return either).15 F F2(n)3.448 E F0 .588 (or the e)3.328 F .588(xit status of the last com-)-.15 F .325(mand e) -144 357.6 R -.15(xe)-.15 G .325(cuted within the script as the e).15 F +144 662.4 R -.15(xe)-.15 G .325(cuted within the script as the e).15 F .326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .326 (is supplied, the return v)2.826 F .326(alue is)-.25 F .445 -(its least signi\214cant 8 bits.)144 369.6 R .444 +(its least signi\214cant 8 bits.)144 674.4 R .444 (The return status is non-zero if)5.445 F F1 -.18(re)2.944 G(tur).18 E (n)-.15 E F0 .444(is supplied a non-numeric ar)2.944 F(gu-)-.18 E .381 -(ment, or is used outside a function and not during e)144 381.6 R -.15 +(ment, or is used outside a function and not during e)144 686.4 R -.15 (xe)-.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E F1(sour)2.881 E(ce)-.18 E F0 5.381(.A)C .681 -.15(ny c)-5.381 H(om-).15 -E .75(mand associated with the)144 393.6 R F1(RETURN)3.249 E F0 .749 +E .75(mand associated with the)144 698.4 R F1(RETURN)3.249 E F0 .749 (trap is e)3.249 F -.15(xe)-.15 G .749(cuted before e).15 F -.15(xe)-.15 -G .749(cution resumes after the function).15 F(or script.)144 405.6 Q F1 -(set)108 422.4 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C -F1-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E -F0(...])2.5 E F1(set)108 434.4 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 +G .749(cution resumes after the function).15 F(or script.)144 710.4 Q +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(14)198.725 E 0 Cg EP +%%Page: 15 15 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(set)108 84 Q F0([)2.5 +E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1-2.5 E/F2 10 +/Times-Italic@0 SF(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 +E F0(...])2.5 E F1(set)108 96 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1(+o)-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E -(g)-.37 E F0(...])2.5 E -.4(Wi)144 446.4 S .835 +(g)-.37 E F0(...])2.5 E -.4(Wi)144 108 S .835 (thout options, the name and v).4 F .835(alue of each shell v)-.25 F .836(ariable are displayed in a format that can be)-.25 F .784 -(reused as input for setting or resetting the currently-set v)144 458.4 -R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .783 -(riables cannot be).25 F 2.911(reset. In)144 470.4 R F2(posix)2.911 E F0 -.412(mode, only shell v)2.912 F .412(ariables are listed.)-.25 F .412 -(The output is sorted according to the current)5.412 F 3.531 -(locale. When)144 482.4 R 1.031(options are speci\214ed, the)3.531 F -3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.53(utes. An) --.2 F 3.53(ya)-.15 G -.18(rg)-3.53 G 1.03(uments remaining).18 F 1.623 -(after option processing are treated as v)144 494.4 R 1.624 +(reused as input for setting or resetting the currently-set v)144 120 R +3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .783(riables cannot be) +.25 F 2.946(reset. In)144 132 R F2 .447(posix mode)2.946 F F0 2.947(,o)C +.447(nly shell v)-2.947 F .447(ariables are listed.)-.25 F .447 +(The output is sorted according to the current)5.447 F 3.531 +(locale. When)144 144 R 1.031(options are speci\214ed, the)3.531 F 3.531 +(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.53(utes. An)-.2 F +3.53(ya)-.15 G -.18(rg)-3.53 G 1.03(uments remaining).18 F 1.623 +(after option processing are treated as v)144 156 R 1.624 (alues for the positional parameters and are assigned, in)-.25 F(order) -144 506.4 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A -F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 518.4 Q -F0 1.378(Each v)184 518.4 R 1.377 +144 168 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A F1 +2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 -.15 +(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 180 Q F0 +1.378(Each v)184 180 R 1.377 (ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve) -.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.377(xport attrib)-.15 F -1.377(ute and)-.2 F(mark)184 530.4 Q(ed for e)-.1 E(xport to the en)-.15 -E(vironment of subsequent commands.)-.4 E F1144 542.4 Q F0 .131 -(Report the status of terminated background jobs immediately)184 542.4 R +1.377(ute and)-.2 F(mark)184 192 Q(ed for e)-.1 E(xport to the en)-.15 E +(vironment of subsequent commands.)-.4 E F1144 204 Q F0 .131 +(Report the status of terminated background jobs immediately)184 204 R 2.632(,r)-.65 G .132(ather than before the ne)-2.632 F(xt)-.15 E -(primary prompt.)184 554.4 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) --.25 H(nly when job control is enabled.).15 E F1144 566.4 Q F0 -.088(Exit immediately if a)184 566.4 R F2(pipeline)2.588 E F0 .087 +(primary prompt.)184 216 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o)-.25 +H(nly when job control is enabled.).15 E F1144 228 Q F0 .088 +(Exit immediately if a)184 228 R F2(pipeline)2.588 E F0 .087 (\(which may consist of a single)2.588 F F2 .087(simple command)2.587 F -F0 .087(\), a)B F2(list)2.587 E F0 2.587(,o)C(r)-2.587 E(a)184 578.4 Q -F2 1.52(compound command)4.02 F F0(\(see)4.021 E/F3 9/Times-Bold@0 SF -1.521(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e) -.15 F 1.521(xits with a non-zero status.)-.15 F .08 -(The shell does not e)184 590.4 R .079(xit if the command that f)-.15 F -.079(ails is part of the command list immediately)-.1 F(follo)184 602.4 -Q 1.654(wing a)-.25 F F1(while)4.154 E F0(or)4.154 E F1(until)4.154 E F0 +F0 .087(\), a)B F2(list)2.587 E F0 2.587(,o)C(r)-2.587 E(a)184 240 Q F2 +1.52(compound command)4.02 F F0(\(see)4.021 E/F3 9/Times-Bold@0 SF 1.521 +(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e).15 F +1.521(xits with a non-zero status.)-.15 F .08(The shell does not e)184 +252 R .079(xit if the command that f)-.15 F .079 +(ails is part of the command list immediately)-.1 F(follo)184 264 Q +1.654(wing a)-.25 F F1(while)4.154 E F0(or)4.154 E F1(until)4.154 E F0 -.1(ke)4.154 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.655 (wing the)-.25 F F1(if)4.155 E F0(or)4.155 E F1(elif)4.155 E F0(reserv) -4.155 E(ed)-.15 E -.1(wo)184 614.4 S .582(rds, part of an).1 F 3.082(yc) +4.155 E(ed)-.15 E -.1(wo)184 276 S .582(rds, part of an).1 F 3.082(yc) -.15 G .582(ommand e)-3.082 F -.15(xe)-.15 G .581(cuted in a).15 F F1 (&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .581(list e)3.081 F .581 -(xcept the command follo)-.15 F(wing)-.25 E .917(the \214nal)184 626.4 R +(xcept the command follo)-.15 F(wing)-.25 E .917(the \214nal)184 288 R F1(&&)3.417 E F0(or)3.417 E F1(||)3.417 E F0 3.417(,a)C 1.217 -.15(ny c) -3.417 H .918(ommand in a pipeline b).15 F .918 (ut the last, or if the command')-.2 F 3.418(sr)-.55 G(eturn)-3.418 E --.25(va)184 638.4 S .661(lue is being in).25 F -.15(ve)-.4 G .661 +-.25(va)184 300 S .661(lue is being in).25 F -.15(ve)-.4 G .661 (rted with).15 F F1(!)3.161 E F0 5.661(.I)C 3.161(fac)-5.661 G .66 (ompound command other than a subshell returns a)-3.161 F 1.112 -(non-zero status because a command f)184 650.4 R 1.112(ailed while)-.1 F +(non-zero status because a command f)184 312 R 1.112(ailed while)-.1 F F13.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.113 -(eing ignored, the shell does)-3.612 F .178(not e)184 662.4 R 2.678 +(eing ignored, the shell does)-3.612 F .178(not e)184 324 R 2.678 (xit. A)-.15 F .178(trap on)2.678 F F1(ERR)2.678 E F0 2.678(,i)C 2.678 (fs)-2.678 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178 (cuted before the shell e).15 F 2.677(xits. This)-.15 F .177 -(option applies to)2.677 F .617(the shell en)184 674.4 R .617 +(option applies to)2.677 F .617(the shell en)184 336 R .617 (vironment and each subshell en)-.4 F .617(vironment separately \(see) --.4 F F3 .618(COMMAND EXE-)3.118 F .643(CUTION ENVIR)184 686.4 R(ONMENT) +-.4 F F3 .618(COMMAND EXE-)3.118 F .643(CUTION ENVIR)184 348 R(ONMENT) -.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 (\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15 -(xe)-.15 G .642(cuting all).15 F(the commands in the subshell.)184 698.4 -Q 2.042(If a compound command or shell function e)184 716.4 R -.15(xe) --.15 G 2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F14.542 -E F0 2.043(is being)4.543 F 1.436(ignored, none of the commands e)184 -728.4 R -.15(xe)-.15 G 1.435 -(cuted within the compound command or function).15 F(GNU Bash-4.2)72 768 -Q(2004 Apr 20)148.735 E(14)198.725 E 0 Cg EP -%%Page: 15 15 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E .193(body will be af)184 84 R .193 -(fected by the)-.25 F/F1 10/Times-Bold@0 SF2.693 E F0 .193 -(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1 -2.693 E F0 .194(is set and a command returns a f)2.693 F(ailure)-.1 E -3.39(status. If)184 96 R 3.39(ac)3.39 G .89 +(xe)-.15 G .642(cuting all).15 F(the commands in the subshell.)184 360 Q +2.042(If a compound command or shell function e)184 378 R -.15(xe)-.15 G +2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F14.542 E F0 +2.043(is being)4.543 F 1.436(ignored, none of the commands e)184 390 R +-.15(xe)-.15 G 1.435(cuted within the compound command or function).15 F +.193(body will be af)184 402 R .193(fected by the)-.25 F F12.693 E +F0 .193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1 +2.693 E F0 .194(is set and a command returns a f)2.693 F(ailure) +-.1 E 3.39(status. If)184 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 108 Q F13.153 E F0 .653 +(where)184 426 Q F13.153 E F0 .653 (is ignored, that setting will not ha)3.153 F .954 -.15(ve a)-.2 H .954 -.15(ny e).15 H -.25(ff).15 G .654(ect until the compound command).25 F -(or the command containing the function call completes.)184 120 Q F1 -144 132 Q F0(Disable pathname e)184 132 Q(xpansion.)-.15 E F1 -144 144 Q F0 2.239(Remember the location of commands as the)184 -144 R 4.738(ya)-.15 G 2.238(re look)-4.738 F 2.238(ed up for e)-.1 F +(or the command containing the function call completes.)184 438 Q F1 +144 450 Q F0(Disable pathname e)184 450 Q(xpansion.)-.15 E F1 +144 462 Q F0 2.239(Remember the location of commands as the)184 +462 R 4.738(ya)-.15 G 2.238(re look)-4.738 F 2.238(ed up for e)-.1 F -.15(xe)-.15 G 4.738(cution. This).15 F(is)4.738 E(enabled by def)184 -156 Q(ault.)-.1 E F1144 168 Q F0 .513(All ar)184 168 R .514 +474 Q(ault.)-.1 E F1144 486 Q F0 .513(All ar)184 486 R .514 (guments in the form of assignment statements are placed in the en)-.18 F .514(vironment for a)-.4 F -(command, not just those that precede the command name.)184 180 Q F1 -144 192 Q F0 .149(Monitor mode.)184 192 R .149 +(command, not just those that precede the command name.)184 498 Q F1 +144 510 Q F0 .149(Monitor mode.)184 510 R .149 (Job control is enabled.)5.149 F .148(This option is on by def)5.149 F .148(ault for interacti)-.1 F .448 -.15(ve s)-.25 H(hells).15 E .65 -(on systems that support it \(see)184 204 R/F2 9/Times-Bold@0 SF .651 -(JOB CONTR)3.151 F(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151 -(\). All).15 F .651(processes run in a separate)3.151 F .679 -(process group.)184 216 R .678(When a background job completes, the she\ -ll prints a line containing its)5.679 F -.15(ex)184 228 S(it status.).15 -E F1144 240 Q F0 .652(Read commands b)184 240 R .652(ut do not e) --.2 F -.15(xe)-.15 G .652(cute them.).15 F .653 -(This may be used to check a shell script for)5.652 F(syntax errors.)184 -252 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 E -F1144 264 Q/F3 10/Times-Italic@0 SF(option\255name)2.5 E F0(The) -184 276 Q F3(option\255name)2.5 E F0(can be one of the follo)2.5 E -(wing:)-.25 E F1(allexport)184 288 Q F0(Same as)224 300 Q F12.5 E -F0(.)A F1(braceexpand)184 312 Q F0(Same as)224 324 Q F12.5 E F0(.) -A F1(emacs)184 336 Q F0 .089 -(Use an emacs-style command line editing interf)224 336 R 2.589 +(on systems that support it \(see)184 522 R F3 .651(JOB CONTR)3.151 F +(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .651 +(processes run in a separate)3.151 F .679(process group.)184 534 R .678 +(When a background job completes, the shell prints a line containing it\ +s)5.679 F -.15(ex)184 546 S(it status.).15 E F1144 558 Q F0 .652 +(Read commands b)184 558 R .652(ut do not e)-.2 F -.15(xe)-.15 G .652 +(cute them.).15 F .653(This may be used to check a shell script for) +5.652 F(syntax errors.)184 570 Q(This is ignored by interacti)5 E .3 +-.15(ve s)-.25 H(hells.).15 E 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 348 R -.15(ve)-.25 G 3.45(,u).15 G .95 +(when the shell is interacti)224 666 R -.15(ve)-.25 G 3.45(,u).15 G .95 (nless the shell is started with the)-3.45 F F1(\255\255noediting)3.45 E -F0 2.5(option. This)224 360 R(also af)2.5 E(fects the editing interf) +F0 2.5(option. This)224 678 R(also af)2.5 E(fects the editing interf) -.25 E(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(err) -184 372 Q(exit)-.18 E F0(Same as)224 372 Q F12.5 E F0(.)A F1 -(errtrace)184 384 Q F0(Same as)224 384 Q F12.5 E F0(.)A F1 -(functrace)184 396 Q F0(Same as)224 408 Q F12.5 E F0(.)A F1 -(hashall)184 420 Q F0(Same as)224 420 Q F12.5 E F0(.)A F1 -(histexpand)184 432 Q F0(Same as)224 444 Q F12.5 E F0(.)A F1 -(history)184 456 Q F0 .587(Enable command history)224 456 R 3.087(,a) --.65 G 3.087(sd)-3.087 G .587(escribed abo)-3.087 F .887 -.15(ve u)-.15 -H(nder).15 E F2(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F4 9/Times-Roman@0 SF -(.)A F0 .587(This option is)5.087 F(on by def)224 468 Q -(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 -480 Q(eeof)-.18 E F0 1.656(The ef)224 492 R 1.656 -(fect is as if the shell command)-.25 F/F5 10/Courier@0 SF(IGNOREEOF=10) -4.157 E F0 1.657(had been e)4.157 F -.15(xe)-.15 G(cuted).15 E(\(see)224 -504 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).) -.15 E F1 -.1(ke)184 516 S(yw).1 E(ord)-.1 E F0(Same as)224 528 Q F1 -2.5 E F0(.)A F1(monitor)184 540 Q F0(Same as)224 540 Q F12.5 -E F0(.)A F1(noclob)184 552 Q(ber)-.1 E F0(Same as)224 564 Q F12.5 -E F0(.)A F1(noexec)184 576 Q F0(Same as)224 576 Q F12.5 E F0(.)A -F1(noglob)184 588 Q F0(Same as)224 588 Q F12.5 E F0(.)A F1(nolog) -184 600 Q F0(Currently ignored.)224 600 Q F1(notify)184 612 Q F0 -(Same as)224 612 Q F12.5 E F0(.)A F1(nounset)184 624 Q F0(Same as) -224 624 Q F12.5 E F0(.)A F1(onecmd)184 636 Q F0(Same as)224 636 Q -F12.5 E F0(.)A F1(ph)184 648 Q(ysical)-.15 E F0(Same as)224 648 Q -F12.5 E F0(.)A F1(pipefail)184 660 Q F0 1.03(If set, the return v) -224 660 R 1.029(alue of a pipeline is the v)-.25 F 1.029 -(alue of the last \(rightmost\) com-)-.25 F 1.136(mand to e)224 672 R -1.136 -(xit with a non-zero status, or zero if all commands in the pipeline) --.15 F -.15(ex)224 684 S(it successfully).15 E 5(.T)-.65 G -(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 696 Q F0 -2.091(Change the beha)224 696 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 -2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 -(fers from the)-.25 F 1.212(POSIX standard to match the standard \()224 -708 R F3 1.212(posix mode)B F0 3.712(\). See)B F2 1.212(SEE ALSO)3.712 F -F0(belo)3.463 E(w)-.25 E 2.307 -(for a reference to a document that details ho)224 720 R 4.806(wp)-.25 G -2.306(osix mode af)-4.806 F 2.306(fects bash')-.25 F(s)-.55 E -(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(15)198.725 E 0 Cg EP +184 690 Q(exit)-.18 E F0(Same as)224 690 Q 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 BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E(beha)224 84 Q(vior)-.2 E(.)-.55 E/F1 10 -/Times-Bold@0 SF(pri)184 96 Q(vileged)-.1 E F0(Same as)224 108 Q F1 -2.5 E F0(.)A F1 -.1(ve)184 120 S(rbose).1 E F0(Same as)224 120 Q -F12.5 E F0(.)A F1(vi)184 132 Q F0 1.465 -(Use a vi-style command line editing interf)224 132 R 3.966(ace. This) +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(functrace)184 84 Q F0 +(Same as)224 96 Q 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 .587 +(Enable command history)224 144 R 3.087(,a)-.65 G 3.087(sd)-3.087 G .587 +(escribed abo)-3.087 F .887 -.15(ve u)-.15 H(nder).15 E/F2 9 +/Times-Bold@0 SF(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F3 9/Times-Roman@0 SF +(.)A F0 .587(This option is)5.087 F(on by def)224 156 Q +(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 +168 Q(eeof)-.18 E F0 1.656(The ef)224 180 R 1.656 +(fect is as if the shell command)-.25 F/F4 10/Courier@0 SF(IGNOREEOF=10) +4.157 E F0 1.657(had been e)4.157 F -.15(xe)-.15 G(cuted).15 E(\(see)224 +192 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).) +.15 E F1 -.1(ke)184 204 S(yw).1 E(ord)-.1 E F0(Same as)224 216 Q F1 +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.03(If set, the return v) +224 348 R 1.029(alue of a pipeline is the v)-.25 F 1.029 +(alue of the last \(rightmost\) com-)-.25 F 1.136(mand to e)224 360 R +1.136 +(xit with a non-zero status, or zero if all commands in the pipeline) +-.15 F -.15(ex)224 372 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 384 Q F0 +2.091(Change the beha)224 384 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 +2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 +(fers from the)-.25 F 1.212(POSIX standard to match the standard \()224 +396 R/F5 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B F2 +1.212(SEE ALSO)3.712 F F0(belo)3.463 E(w)-.25 E 2.307 +(for a reference to a document that details ho)224 408 R 4.806(wp)-.25 G +2.306(osix mode af)-4.806 F 2.306(fects bash')-.25 F(s)-.55 E(beha)224 +420 Q(vior)-.2 E(.)-.55 E F1(pri)184 432 Q(vileged)-.1 E F0(Same as)224 +444 Q 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.465 +(Use a vi-style command line editing interf)224 468 R 3.966(ace. This) -.1 F 1.466(also af)3.966 F 1.466(fects the editing)-.25 F(interf)224 -144 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 -(xtrace)184 156 Q F0(Same as)224 156 Q F12.5 E F0(.)A(If)184 174 Q -F13.053 E F0 .553(is supplied with no)3.053 F/F2 10/Times-Italic@0 -SF(option\255name)3.053 E F0 3.053(,t)C .553(he v)-3.053 F .552 +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.053 E F0 .553(is supplied with no)3.053 F F5(option\255name) +3.053 E F0 3.053(,t)C .553(he v)-3.053 F .552 (alues of the current options are printed.)-.25 F(If)5.552 E F1(+o)184 -186 Q F0 1.071(is supplied with no)3.571 F F2(option\255name)3.571 E F0 +522 Q F0 1.071(is supplied with no)3.571 F F5(option\255name)3.571 E F0 3.571(,as)C 1.071(eries of)-3.571 F F1(set)3.572 E F0 1.072 (commands to recreate the current)3.572 F -(option settings is displayed on the standard output.)184 198 Q F1 -144 210 Q F0 -.45(Tu)184 210 S 1.072(rn on).45 F F2(privile)4.822 E -.1 +(option settings is displayed on the standard output.)184 534 Q F1 +144 546 Q F0 -.45(Tu)184 546 S 1.072(rn on).45 F F5(privile)4.822 E -.1 (ge)-.4 G(d).1 E F0 3.572(mode. In)4.342 F 1.072(this mode, the)3.572 F -/F3 9/Times-Bold@0 SF($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV) --.27 E F0 1.071(\214les are not pro-)3.322 F 1.5 -(cessed, shell functions are not inherited from the en)184 222 R 1.501 -(vironment, and the)-.4 F F3(SHELLOPTS)4.001 E/F4 9/Times-Roman@0 SF(,)A -F3 -.27(BA)184 234 S(SHOPTS).27 E F4(,)A F3(CDP)2.775 E -.855(AT)-.666 G -(H).855 E F4(,)A F0(and)2.775 E F3(GLOBIGNORE)3.025 E F0 -.25(va)2.775 G -.524(riables, if the).25 F 3.024(ya)-.15 G .524(ppear in the en)-3.024 F -(vironment,)-.4 E .379(are ignored.)184 246 R .379 +F2($ENV)3.572 E F0(and)3.322 E F2($B)3.572 E(ASH_ENV)-.27 E F0 1.071 +(\214les are not pro-)3.322 F 1.5 +(cessed, shell functions are not inherited from the en)184 558 R 1.501 +(vironment, and the)-.4 F F2(SHELLOPTS)4.001 E F3(,)A F2 -.27(BA)184 570 +S(SHOPTS).27 E F3(,)A F2(CDP)2.775 E -.855(AT)-.666 G(H).855 E F3(,)A F0 +(and)2.775 E F2(GLOBIGNORE)3.025 E F0 -.25(va)2.775 G .524 +(riables, if the).25 F 3.024(ya)-.15 G .524(ppear in the en)-3.024 F +(vironment,)-.4 E .379(are ignored.)184 582 R .379 (If the shell is started with the ef)5.379 F(fecti)-.25 E .679 -.15 (ve u)-.25 H .38(ser \(group\) id not equal to the real).15 F .462 -(user \(group\) id, and the)184 258 R 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 .461 -(en and the ef)-.1 F(fec-)-.25 E(ti)184 270 Q .694 -.15(ve u)-.25 H .394 +(en and the ef)-.1 F(fec-)-.25 E(ti)184 606 Q .694 -.15(ve u)-.25 H .394 (ser id is set to the real user id.).15 F .395(If the)5.395 F F1 2.895 E F0 .395(option is supplied at startup, the ef)2.895 F(fecti)-.25 -E -.15(ve)-.25 G .387(user id is not reset.)184 282 R -.45(Tu)5.387 G +E -.15(ve)-.25 G .387(user id is not reset.)184 618 R -.45(Tu)5.387 G .387(rning this option of).45 F 2.886(fc)-.25 G .386(auses the ef)-2.886 F(fecti)-.25 E .686 -.15(ve u)-.25 H .386(ser and group ids to be).15 F -(set to the real user and group ids.)184 294 Q F1144 306 Q F0 -(Exit after reading and e)184 306 Q -.15(xe)-.15 G(cuting one command.) -.15 E F1144 318 Q F0 -.35(Tr)184 318 S .043(eat unset v).35 F .044 +(set to the real user and group ids.)184 630 Q 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 .043(eat unset v).35 F .044 (ariables and parameters other than the special parameters "@" and "*" \ -as an)-.25 F .183(error when performing parameter e)184 330 R 2.683 +as an)-.25 F .183(error when performing parameter e)184 666 R 2.683 (xpansion. If)-.15 F -.15(ex)2.683 G .182 (pansion is attempted on an unset v).15 F(ari-)-.25 E .746 -(able or parameter)184 342 R 3.246(,t)-.4 G .746 +(able or parameter)184 678 R 3.246(,t)-.4 G .746 (he shell prints an error message, and, if not interacti)-3.246 F -.15 (ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184 -354 Q F1144 366 Q F0(Print shell input lines as the)184 366 Q 2.5 -(ya)-.15 G(re read.)-2.5 E F1144 378 Q F0 .315(After e)184 378 R -.315(xpanding each)-.15 F F2 .315(simple command)2.815 F F0(,)A F1 -.25 +690 Q 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.235(or arithmetic)184 -390 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F -1.236(xpanded v)-.15 F 1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0 -(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 402 Q -(xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1 -144 414 Q F0 2.579(The shell performs brace e)184 414 R 2.578 +2.815 E F1(select)2.815 E F0(command,)2.815 E 3.259(or arithmetic)184 +726 R F1 -.25(fo)5.759 G(r).25 E F0 3.26(command, display the e)5.759 F +3.26(xpanded v)-.15 F 3.26(alue of)-.25 F F2(PS4)5.76 E F3(,)A F0(follo) +5.51 E 3.26(wed by the)-.25 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 +E(16)198.725 E 0 Cg EP +%%Page: 17 17 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E(command and its e)184 84 Q(xpanded ar)-.15 +E(guments or associated w)-.18 E(ord list.)-.1 E/F1 10/Times-Bold@0 SF +144 96 Q F0 2.579(The shell performs brace e)184 96 R 2.578 (xpansion \(see)-.15 F F1 2.578(Brace Expansion)5.078 F F0(abo)5.078 E --.15(ve)-.15 G 5.078(\). This).15 F 2.578(is on by)5.078 F(def)184 426 Q -(ault.)-.1 E F1144 438 Q F0 .213(If set,)184 438 R F1(bash)2.713 E +-.15(ve)-.15 G 5.078(\). This).15 F 2.578(is on by)5.078 F(def)184 108 Q +(ault.)-.1 E F1144 120 Q F0 .213(If set,)184 120 R F1(bash)2.713 E F0 .213(does not o)2.713 F -.15(ve)-.15 G .214(rwrite an e).15 F .214 (xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0 2.714(,a)C(nd)-2.714 E F1(<>)2.714 E F0 .214(redirection opera-)2.714 F -3.054(tors. This)184 450 R .553(may be o)3.053 F -.15(ve)-.15 G .553 +3.054(tors. This)184 132 R .553(may be o)3.053 F -.15(ve)-.15 G .553 (rridden when creating output \214les by using the redirection opera-) -.15 F(tor)184 462 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 -144 474 Q F0 .103(If set, an)184 474 R 2.603(yt)-.15 G .103 +.15 F(tor)184 144 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 156 Q F0 .103(If set, an)184 156 R 2.603(yt)-.15 G .103 (rap on)-2.603 F F1(ERR)2.603 E F0 .104 (is inherited by shell functions, command substitutions, and com-)2.603 -F .839(mands e)184 486 R -.15(xe)-.15 G .839(cuted in a subshell en).15 +F .839(mands e)184 168 R -.15(xe)-.15 G .839(cuted in a subshell en).15 F 3.339(vironment. The)-.4 F F1(ERR)3.338 E F0 .838 -(trap is normally not inherited in)3.338 F(such cases.)184 498 Q F1 -144 510 Q F0(Enable)184 510 Q F1(!)3.031 E F0 .531 +(trap is normally not inherited in)3.338 F(such cases.)184 180 Q F1 +144 192 Q F0(Enable)184 192 Q F1(!)3.031 E F0 .531 (style history substitution.)5.531 F .531(This option is on by def)5.531 -F .532(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 522 Q -.15 -(ve)-.25 G(.).15 E F1144 534 Q F0 .96 -(If set, the shell does not resolv)184 534 R 3.459(es)-.15 G .959 +F .532(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 204 Q -.15 +(ve)-.25 G(.).15 E F1144 216 Q F0 .96 +(If set, the shell does not resolv)184 216 R 3.459(es)-.15 G .959 (ymbolic links when e)-3.459 F -.15(xe)-.15 G .959 (cuting commands such as).15 F F1(cd)3.459 E F0 2.821 -(that change the current w)184 546 R 2.822(orking directory)-.1 F 7.822 +(that change the current w)184 228 R 2.822(orking directory)-.1 F 7.822 (.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.822 -(ysical directory structure)-.05 F 2.686(instead. By)184 558 R(def)2.686 +(ysical directory structure)-.05 F 2.686(instead. By)184 240 R(def)2.686 E(ault,)-.1 E F1(bash)2.686 E F0(follo)2.686 E .186 (ws the logical chain of directories when performing com-)-.25 F -(mands which change the current directory)184 570 Q(.)-.65 E F1144 -582 Q F0 .89(If set, an)184 582 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1 +(mands which change the current directory)184 252 Q(.)-.65 E 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 594 R -.15(xe)-.15 G 1.932 +(substitutions, and commands e)184 276 R -.15(xe)-.15 G 1.932 (cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E -(UG)-.1 E F0(and)4.432 E F1(RETURN)184 606 Q F0 -(traps are normally not inherited in such cases.)2.5 E F1144 618 Q -F0 .4(If no ar)184 618 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401 +(UG)-.1 E F0(and)4.432 E F1(RETURN)184 288 Q F0 +(traps are normally not inherited in such cases.)2.5 E F1144 300 Q +F0 .4(If no ar)184 300 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401 (his option, then the positional parameters are unset.)-2.901 F -(Otherwise,)5.401 E(the positional parameters are set to the)184 630 Q -F2(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G -(ome of them be)-2.5 E(gin with a)-.15 E F12.5 E F0(.)A F1144 -642 Q F0 1.945(Signal the end of options, cause all remaining)184 642 R -F2(ar)4.444 E(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.444(ea)-4.444 G -1.944(ssigned to the positional)-4.444 F 3.445(parameters. The)184 654 R -F13.445 E F0(and)3.445 E F13.445 E F0 .945 +(Otherwise,)5.401 E(the positional parameters are set to the)184 312 Q +/F2 10/Times-Italic@0 SF(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5 +(ni).15 G 2.5(fs)-2.5 G(ome of them be)-2.5 E(gin with a)-.15 E F1 +2.5 E F0(.)A F1144 324 Q F0 1.945 +(Signal the end of options, cause all remaining)184 324 R F2(ar)4.444 E +(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.444(ea)-4.444 G 1.944 +(ssigned to the positional)-4.444 F 3.445(parameters. The)184 336 R F1 +3.445 E F0(and)3.445 E F13.445 E F0 .945 (options are turned of)3.445 F 3.445(f. If)-.25 F .946(there are no) 3.445 F F2(ar)3.446 E(g)-.37 E F0 .946(s, the positional)B -(parameters remain unchanged.)184 666 Q .425(The options are of)144 -682.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 +(parameters remain unchanged.)184 348 Q .425(The options are of)144 +364.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 (ault unless otherwise noted.)-.1 F .425 (Using + rather than \255 causes these options)5.425 F .177 -(to be turned of)144 694.8 R 2.677(f. The)-.25 F .178 +(to be turned of)144 376.8 R 2.677(f. The)-.25 F .178 (options can also be speci\214ed as ar)2.678 F .178(guments to an in) -.18 F -.2(vo)-.4 G .178(cation of the shell.).2 F(The)5.178 E .066 -(current set of options may be found in)144 706.8 R F1<24ad>2.566 E F0 +(current set of options may be found in)144 388.8 R F1<24ad>2.566 E F0 5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066 (ys true unless an in).1 F -.25(va)-.4 G .066(lid option).25 F -(is encountered.)144 718.8 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E -(16)198.725 E 0 Cg EP -%%Page: 17 17 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(shift)108 84 Q F0([) -2.5 E/F2 10/Times-Italic@0 SF(n)A F0(])A .428 -(The positional parameters from)144 96 R F2(n)2.928 E F0 .429 -(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.429 G .429 -(rameters represented by the num-).15 F(bers)144 108 Q F1($#)2.583 E F0 -(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0A F2(n)A F0 .083 +(is encountered.)144 400.8 Q F1(shift)108 417.6 Q F0([)2.5 E F2(n)A F0 +(])A .428(The positional parameters from)144 429.6 R F2(n)2.928 E F0 +.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.429 G +.429(rameters represented by the num-).15 F(bers)144 441.6 Q F1($#)2.583 +E F0(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0A F2(n)A F0 .083 (+1 are unset.)B F2(n)5.443 E F0 .083(must be a non-ne)2.823 F -.05(ga) -.15 G(ti).05 E .382 -.15(ve n)-.25 H .082(umber less than or equal to) .15 F F1($#)2.582 E F0 5.082(.I)C(f)-5.082 E F2(n)2.942 E F0 .06 -(is 0, no parameters are changed.)144 120 R(If)5.06 E F2(n)2.92 E F0 .06 -(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F(If) -5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56(,t) -C(he)-2.56 E .144(positional parameters are not changed.)144 132 R .144 -(The return status is greater than zero if)5.144 F F2(n)3.003 E F0 .143 -(is greater than)2.883 F F1($#)2.643 E F0 -(or less than zero; otherwise 0.)144 144 Q F1(shopt)108 160.8 Q F0([)2.5 -E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(optname)-2.5 E -F0(...])2.5 E -.8(To)144 172.8 S .639(ggle the v).8 F .639 +(is 0, no parameters are changed.)144 453.6 R(If)5.06 E F2(n)2.92 E F0 +.06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F +(If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56 +(,t)C(he)-2.56 E .144(positional parameters are not changed.)144 465.6 R +.144(The return status is greater than zero if)5.144 F F2(n)3.003 E F0 +.143(is greater than)2.883 F F1($#)2.643 E F0 +(or less than zero; otherwise 0.)144 477.6 Q F1(shopt)108 494.4 Q F0([) +2.5 E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(optname) +-2.5 E F0(...])2.5 E -.8(To)144 506.4 S .639(ggle the v).8 F .639 (alues of settings controlling optional shell beha)-.25 F(vior)-.2 E 5.639(.T)-.55 G .64(he settings can be either those)-5.639 F .375 -(listed belo)144 184.8 R 1.675 -.65(w, o)-.25 H 1.175 -.4(r, i).65 H +(listed belo)144 518.4 R 1.675 -.65(w, o)-.25 H 1.175 -.4(r, i).65 H 2.875(ft).4 G(he)-2.875 E F12.875 E F0 .375 (option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 F F12.875 E F0 .374(option to the)2.875 F F1(set)2.874 E F0 -.2 -(bu)2.874 G .374(iltin com-).2 F 3.325(mand. W)144 196.8 R .825 +(bu)2.874 G .374(iltin com-).2 F 3.325(mand. W)144 530.4 R .825 (ith no options, or with the)-.4 F F13.325 E F0 .826 (option, a list of all settable options is displayed, with an)3.325 F -.945(indication of whether or not each is set.)144 208.8 R(The)5.945 E -F13.445 E F0 .945(option causes output to be displayed in a form) -3.445 F(that may be reused as input.)144 220.8 Q(Other options ha)5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 232.8 Q -F0(Enable \(set\) each)180 232.8 Q F2(optname)2.5 E F0(.)A F1144 -244.8 Q F0(Disable \(unset\) each)180 244.8 Q F2(optname)2.5 E F0(.)A F1 -144 256.8 Q F0 .003(Suppresses normal output \(quiet mode\); the \ -return status indicates whether the)180 256.8 R F2(optname)2.504 E F0 -(is)2.504 E .256(set or unset.)180 268.8 R .256(If multiple)5.256 F F2 -(optname)2.756 E F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G -2.756(nw).15 G(ith)-2.756 E F12.756 E F0 2.755(,t)C .255 -(he return status is zero if)-2.755 F(all)180 280.8 Q F2(optnames)2.5 E -F0(are enabled; non-zero otherwise.)2.5 E F1144 292.8 Q F0 -(Restricts the v)180 292.8 Q(alues of)-.25 E F2(optname)2.5 E F0 +.552(indication of whether or not each is set; if)144 542.4 R F2 +(optnames)3.052 E F0 .551 +(are supplied, the output is restricted to those)3.052 F 2.549 +(options. The)144 554.4 R F12.549 E F0 .049(option causes output \ +to be displayed in a form that may be reused as input.)2.549 F(Other) +5.05 E(options ha)144 566.4 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E 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.503 E F0(is)2.503 E +.255(set or unset.)180 614.4 R .255(If multiple)5.255 F F2(optname)2.755 +E F0(ar)2.755 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G +(ith)-2.756 E F12.756 E F0 2.756(,t)C .256 +(he return status is zero if)-2.756 F(all)180 626.4 Q F2(optnames)2.5 E +F0(are enabled; non-zero otherwise.)2.5 E 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 309.6 R F1 -3.124 E F0(or)3.124 E F13.124 E F0 .624(is used with no) +E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .625(If either)144 655.2 R F1 +3.125 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 321.6 R -.15(ve)-.25 G(ly).15 E 7.234(.U) +E F0(sho)3.124 E .624(ws only those options which are)-.25 F 2.233 +(set or unset, respecti)144 667.2 R -.15(ve)-.25 G(ly).15 E 7.234(.U) -.65 G 2.234(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0 -2.234(options are disabled \(unset\) by)4.734 F(def)144 333.6 Q(ault.) +2.234(options are disabled \(unset\) by)4.734 F(def)144 679.2 Q(ault.) -.1 E 1.544(The return status when listing options is zero if all)144 -350.4 R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.) -4.045 F .696 +696 R F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.) +4.044 F .696 (When setting or unsetting options, the return status is zero unless an) -144 362.4 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695 -(alid shell)-.25 F(option.)144 374.4 Q(The list of)144 391.2 Q F1(shopt) -2.5 E F0(options is:)2.5 E F1(autocd)144 409.2 Q F0 .199 -(If set, a command name that is the name of a directory is e)184 409.2 R --.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E -(ment to the)184 421.2 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F +144 708 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696(alid shell) +-.25 F(option.)144 720 Q(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(17) +198.725 E 0 Cg EP +%%Page: 18 18 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E(The list of)144 84 Q/F1 10/Times-Bold@0 SF +(shopt)2.5 E F0(options is:)2.5 E F1(assoc_expand_once)144 102 Q F0 +1.945(If set, the shell suppresses multiple e)184 114 R -.25(va)-.25 G +1.944(luation of associati).25 F 2.244 -.15(ve a)-.25 H 1.944 +(rray subscripts during).15 F 2.556(arithmetic e)184 126 R 2.556 +(xpression e)-.15 F -.25(va)-.25 G 2.556(luation, while e).25 F -.15(xe) +-.15 G 2.557(cuting b).15 F 2.557(uiltins that can perform v)-.2 F +(ariable)-.25 E(assignments, and while e)184 138 Q -.15(xe)-.15 G +(cuting b).15 E(uiltins that perform array dereferencing.)-.2 E F1 +(autocd)144 150 Q F0 .2 +(If set, a command name that is the name of a directory is e)184 150 R +-.15(xe)-.15 G .199(cuted as if it were the ar).15 F(gu-)-.18 E +(ment to the)184 162 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F (option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E -F1(cdable_v)144 433.2 Q(ars)-.1 E F0 .156(If set, an ar)184 445.2 R .156 -(gument to the)-.18 F F1(cd)2.656 E F0 -.2(bu)2.656 G .155 +F1(cdable_v)144 174 Q(ars)-.1 E F0 .155(If set, an ar)184 186 R .155 +(gument to the)-.18 F F1(cd)2.655 E F0 -.2(bu)2.655 G .156 (iltin command that is not a directory is assumed to be the).2 F -(name of a v)184 457.2 Q(ariable whose v)-.25 E -(alue is the directory to change to.)-.25 E F1(cdspell)144 469.2 Q F0 +(name of a v)184 198 Q(ariable whose v)-.25 E +(alue is the directory to change to.)-.25 E F1(cdspell)144 210 Q F0 1.055 (If set, minor errors in the spelling of a directory component in a)184 -469.2 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 -(corrected. The)184 481.2 R 1.488(errors check)3.988 F 1.487 -(ed for are transposed characters, a missing character)-.1 F 3.987(,a) --.4 G(nd)-3.987 E .77(one character too man)184 493.2 R 4.57 -.65(y. I) +210 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987 +(corrected. The)184 222 R 1.487(errors check)3.987 F 1.487 +(ed for are transposed characters, a missing character)-.1 F 3.988(,a) +-.4 G(nd)-3.988 E .77(one character too man)184 234 R 4.57 -.65(y. I) -.15 H 3.27(fac).65 G .77 (orrection is found, the corrected \214lename is printed, and)-3.27 F -(the command proceeds.)184 505.2 Q -(This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(checkhash)144 517.2 Q F0 .737(If set,)184 529.2 R F1(bash)3.237 -E F0 .736(checks that a command found in the hash table e)3.237 F .736 -(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 -541.2 Q(If a hashed command no longer e)5 E -(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 553.2 -Q F0 .448(If set,)184 565.2 R F1(bash)2.948 E F0 .448 -(lists the status of an)2.948 F 2.949(ys)-.15 G .449 -(topped and running jobs before e)-2.949 F .449(xiting an interacti)-.15 -F -.15(ve)-.25 G 3.439(shell. If)184 577.2 R(an)3.439 E 3.439(yj)-.15 G -.938(obs are running, this causes the e)-3.439 F .938 -(xit to be deferred until a second e)-.15 F .938(xit is)-.15 F 2.203 -(attempted without an interv)184 589.2 R 2.203(ening command \(see)-.15 -F/F3 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E --.15(ve)-.15 G 4.703(\). The).15 F(shell)4.704 E(al)184 601.2 Q -.1(wa) --.1 G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G -(obs are stopped.)-2.5 E F1(checkwinsize)144 613.2 Q F0 .797(If set,)184 -625.2 R F1(bash)3.297 E F0 .797(checks the windo)3.297 F 3.297(ws)-.25 G -.796(ize after each command and, if necessary)-3.297 F 3.296(,u)-.65 G -.796(pdates the)-3.296 F -.25(va)184 637.2 S(lues of).25 E F3(LINES)2.5 -E F0(and)2.25 E F3(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF(.)A F1(cmdhist) -144 649.2 Q F0 1.202(If set,)184 649.2 R F1(bash)3.702 E F0 1.202 +(the command proceeds.)184 246 Q(This option is only used by interacti)5 +E .3 -.15(ve s)-.25 H(hells.).15 E F1(checkhash)144 258 Q F0 .736 +(If set,)184 270 R F1(bash)3.236 E F0 .736 +(checks that a command found in the hash table e)3.236 F .737 +(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 282 +Q(If a hashed command no longer e)5 E +(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 294 Q +F0 .449(If set,)184 306 R F1(bash)2.949 E F0 .449 +(lists the status of an)2.949 F 2.949(ys)-.15 G .448 +(topped and running jobs before e)-2.949 F .448(xiting an interacti)-.15 +F -.15(ve)-.25 G 3.438(shell. If)184 318 R(an)3.438 E 3.438(yj)-.15 G +.938(obs are running, this causes the e)-3.438 F .938 +(xit to be deferred until a second e)-.15 F .939(xit is)-.15 F 2.203 +(attempted without an interv)184 330 R 2.203(ening command \(see)-.15 F +/F2 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E +-.15(ve)-.15 G 4.703(\). The).15 F(shell)4.703 E(al)184 342 Q -.1(wa)-.1 +G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G +(obs are stopped.)-2.5 E F1(checkwinsize)144 354 Q F0 1.09(If set,)184 +366 R F1(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09 +(ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09 +(uiltin\) command and, if)-.2 F(necessary)184 378 Q 4.694(,u)-.65 G +2.194(pdates the v)-4.694 F 2.194(alues of)-.25 F F2(LINES)4.694 E F0 +(and)4.444 E F2(COLUMNS)4.693 E/F3 9/Times-Roman@0 SF(.)A F0 2.193 +(This option is enabled by)6.693 F(def)184 390 Q(ault.)-.1 E F1(cmdhist) +144 402 Q F0 1.202(If set,)184 402 R F1(bash)3.702 E F0 1.202 (attempts to sa)3.702 F 1.502 -.15(ve a)-.2 H 1.202 (ll lines of a multiple-line command in the same history).15 F(entry)184 -661.2 Q 5(.T)-.65 G(his allo)-5 E -(ws easy re-editing of multi-line commands.)-.25 E F1(compat31)144 673.2 -Q F0 .42(If set,)184 685.2 R F1(bash)2.92 E F0 .42(changes its beha)2.92 -F .419(vior to that of v)-.2 F .419 +414 Q 6.133(.T)-.65 G 1.133(his allo)-6.133 F 1.133 +(ws easy re-editing of multi-line commands.)-.25 F 1.132 +(This option is enabled by)6.132 F(def)184 426 Q .613(ault, b)-.1 F .613 +(ut only has an ef)-.2 F .614 +(fect if command history is enabled, as described abo)-.25 F .914 -.15 +(ve u)-.15 H(nder).15 E F2(HIST)184 438 Q(OR)-.162 E(Y)-.315 E F3(.)A F1 +(compat31)144 450 Q F0 .42(If set,)184 462 R F1(bash)2.92 E F0 .42 +(changes its beha)2.92 F .419(vior to that of v)-.2 F .419 (ersion 3.1 with respect to quoted ar)-.15 F(guments)-.18 E .461(to the) -184 697.2 R F1([[)2.961 E F0 .462(conditional command')2.962 F(s)-.55 E -F1(=~)2.962 E F0 .462 +184 474 R F1([[)2.961 E F0 .462(conditional command')2.962 F(s)-.55 E F1 +(=~)2.962 E F0 .462 (operator and locale-speci\214c string comparison when)2.962 F .71 -(using the)184 709.2 R F1([[)3.21 E F0 .71(conditional command')3.21 F -(s)-.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash) +(using the)184 486 R F1([[)3.21 E F0 .71(conditional command')3.21 F(s) +-.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash) 3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .82 -(use ASCII collation and)184 721.2 R F2(str)3.321 E(cmp)-.37 E F0 .821 -(\(3\); bash-4.1 and later use the current locale').19 F 3.321(sc)-.55 G -(ollation)-3.321 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(17) -198.725 E 0 Cg EP -%%Page: 18 18 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E(sequence and)184 84 Q/F1 10/Times-Italic@0 -SF(str)2.5 E(coll)-.37 E F0(\(3\).).51 E/F2 10/Times-Bold@0 SF(compat32) -144 96 Q F0 1.41(If set,)184 108 R F2(bash)3.91 E F0 1.41 -(changes its beha)3.91 F 1.409(vior to that of v)-.2 F 1.409 +(use ASCII collation and)184 498 R/F4 10/Times-Italic@0 SF(str)3.321 E +(cmp)-.37 E F0 .821(\(3\); bash-4.1 and later use the current locale') +.19 F 3.321(sc)-.55 G(ollation)-3.321 E(sequence and)184 510 Q F4(str) +2.5 E(coll)-.37 E F0(\(3\).).51 E F1(compat32)144 522 Q F0 1.41(If set,) +184 534 R F1(bash)3.91 E F0 1.41(changes its beha)3.91 F 1.409 +(vior to that of v)-.2 F 1.409 (ersion 3.2 with respect to locale-speci\214c)-.15 F .422 -(string comparison when using the)184 120 R F2([[)2.922 E F0 .422 -(conditional command')2.922 F(s)-.55 E F2(<)2.922 E F0(and)2.922 E F2(>) +(string comparison when using the)184 546 R F1([[)2.922 E F0 .422 +(conditional command')2.922 F(s)-.55 E F1(<)2.922 E F0(and)2.922 E F1(>) 2.923 E F0 .423(operators \(see pre-)2.923 F .481 -(vious item\) and the ef)184 132 R .481 +(vious item\) and the ef)184 558 R .481 (fect of interrupting a command list.)-.25 F .48(Bash v)5.481 F .48 -(ersions 3.2 and earlier)-.15 F(continue with the ne)184 144 Q +(ersions 3.2 and earlier)-.15 F(continue with the ne)184 570 Q (xt command in the list after one terminates due to an interrupt.)-.15 E -F2(compat40)144 156 Q F0 1.409(If set,)184 168 R F2(bash)3.909 E F0 +F1(compat40)144 582 Q F0 1.409(If set,)184 594 R F1(bash)3.909 E F0 1.409(changes its beha)3.909 F 1.409(vior to that of v)-.2 F 1.41 (ersion 4.0 with respect to locale-speci\214c)-.15 F 2.008 -(string comparison when using the)184 180 R F2([[)4.508 E F0 2.007 -(conditional command')4.508 F(s)-.55 E F2(<)4.507 E F0(and)4.507 E F2(>) -4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 192 R -F2(compat31)3.269 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 +(string comparison when using the)184 606 R F1([[)4.508 E F0 2.007 +(conditional command')4.508 F(s)-.55 E F1(<)4.507 E F0(and)4.507 E F1(>) +4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 618 R +F1(compat31)3.269 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 (fect of interrupting a command list.)-.25 F .77(Bash v)5.77 F(ersions) -.15 E .087(4.0 and later interrupt the list as if the shell recei)184 -204 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F .086 -(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 216 Q -(xt command in the list.)-.15 E F2(compat41)144 228 Q F0 1.483(If set,) -184 240 R F2(bash)3.983 E F0 3.983(,w)C 1.483(hen in)-3.983 F F1(posix) -3.983 E F0 1.484 -(mode, treats a single quote in a double-quoted parameter)3.983 F -.15 -(ex)184 252 S .959(pansion as a special character).15 F 5.959(.T)-.55 G -.958(he single quotes must match \(an e)-5.959 F -.15(ve)-.25 G 3.458 -(nn).15 G .958(umber\) and)-3.458 F .59 -(the characters between the single quotes are considered quoted.)184 264 +630 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F .086 +(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 642 Q +(xt command in the list.)-.15 E F1(compat41)144 654 Q F0 1.523(If set,) +184 666 R F1(bash)4.023 E F0 4.023(,w)C 1.523(hen in)-4.023 F F4 1.523 +(posix mode)4.023 F F0 4.024(,t)C 1.524 +(reats a single quote in a double-quoted parameter)-4.024 F -.15(ex)184 +678 S .959(pansion as a special character).15 F 5.959(.T)-.55 G .958 +(he single quotes must match \(an e)-5.959 F -.15(ve)-.25 G 3.458(nn).15 +G .958(umber\) and)-3.458 F .59 +(the characters between the single quotes are considered quoted.)184 690 R .59(This is the beha)5.59 F .59(vior of)-.2 F .59 -(posix mode through v)184 276 R .589(ersion 4.1.)-.15 F .589(The def) +(posix mode through v)184 702 R .589(ersion 4.1.)-.15 F .589(The def) 5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .589 -(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 288 Q F2(compat42)144 300 Q -F0 1.796(If set,)184 312 R F2(bash)4.296 E F0 1.796 +(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 714 Q(GNU Bash 5.0)72 768 Q +(2004 Apr 20)149.565 E(18)198.725 E 0 Cg EP +%%Page: 19 19 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(compat42)144 84 Q F0 +1.796(If set,)184 96 R F1(bash)4.296 E F0 1.796 (does not process the replacement string in the pattern substitution w) -4.296 F(ord)-.1 E -.15(ex)184 324 S(pansion using quote remo).15 E -.25 -(va)-.15 G(l.).25 E F2(compat43)144 336 Q F0 .141(If set,)184 348 R F2 +4.296 F(ord)-.1 E -.15(ex)184 108 S(pansion using quote remo).15 E -.25 +(va)-.15 G(l.).25 E F1(compat43)144 120 Q F0 .141(If set,)184 132 R F1 (bash)2.641 E F0 .141(does not print a w)2.641 F .14 (arning message if an attempt is made to use a quoted com-)-.1 F .912 -(pound array assignment as an ar)184 360 R .912(gument to)-.18 F F2 +(pound array assignment as an ar)184 144 R .912(gument to)-.18 F F1 (declar)3.413 E(e)-.18 E F0 3.413(,m)C(ak)-3.413 E .913(es w)-.1 F .913 -(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 372 S .353 +(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 156 S .353 (tal errors that cause the current command to f).1 F .353(ail \(the def) -.1 F .352(ault beha)-.1 F .352(vior is to mak)-.2 F 2.852(et)-.1 G(hem) --2.852 E -.1(fa)184 384 S 1.057(tal errors that cause the shell to e).1 +-2.852 E -.1(fa)184 168 S 1.057(tal errors that cause the shell to e).1 F 1.058(xit\), and does not reset the loop state when a shell)-.15 F -.375(function is e)184 396 R -.15(xe)-.15 G .375(cuted \(this allo).15 F -(ws)-.25 E F2(br)2.875 E(eak)-.18 E F0(or)2.875 E F2(continue)2.875 E F0 +.375(function is e)184 180 R -.15(xe)-.15 G .375(cuted \(this allo).15 F +(ws)-.25 E F1(br)2.875 E(eak)-.18 E F0(or)2.875 E F1(continue)2.875 E F0 .374(in a shell function to af)2.875 F .374(fect loops in)-.25 F -(the caller')184 408 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F2 -(complete_fullquote)144 420 Q F0 .653(If set,)184 432 R F2(bash)3.153 E -F0 .653(quotes all shell metacharacters in \214lenames and directory na\ -mes when per)3.153 F(-)-.2 E 1.525(forming completion.)184 444 R 1.524 -(If not set,)6.525 F F2(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 G -4.024(sm).15 G 1.524(etacharacters such as the dollar sign)-4.024 F -2.667(from the set of characters that will be quoted in completed \214l\ -enames when these)184 456 R .029(metacharacters appear in shell v)184 -468 R .028(ariable references in w)-.25 F .028(ords to be completed.)-.1 -F .028(This means)5.028 F 1.072(that dollar signs in v)184 480 R 1.073 +(the caller')184 192 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1 +(compat44)144 204 Q F0 .441(If set,)184 216 R F1(bash)2.941 E F0(sa) +2.942 E -.15(ve)-.2 G 2.942(st).15 G .442(he positional parameters to B) +-2.942 F .442(ASH_ARGV and B)-.35 F .442(ASH_ARGC before)-.35 F(the)184 +228 Q 2.5(ya)-.15 G(re used, re)-2.5 E -.05(ga)-.15 G +(rdless of whether or not e).05 E(xtended deb)-.15 E +(ugging mode is enabled.)-.2 E F1(complete_fullquote)144 240 Q F0 .654 +(If set,)184 252 R F1(bash)3.153 E F0 .653(quotes all shell metacharact\ +ers in \214lenames and directory names when per)3.153 F(-)-.2 E 1.524 +(forming completion.)184 264 R 1.524(If not set,)6.524 F F1(bash)4.024 E +F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524 +(etacharacters such as the dollar sign)-4.024 F 2.667(from the set of c\ +haracters that will be quoted in completed \214lenames when these)184 +276 R .028(metacharacters appear in shell v)184 288 R .028 +(ariable references in w)-.25 F .029(ords to be completed.)-.1 F .029 +(This means)5.029 F 1.073(that dollar signs in v)184 300 R 1.073 (ariable names that e)-.25 F 1.073 (xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25 -(ev e)184 492 T 1.923 -.4(r, a).25 H 1.423 -.15(ny d).4 H 1.123 +(ev e)184 312 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 (ollar signs appearing in \214lenames will not be quoted, either).15 F -6.123(.T)-.55 G 1.122(his is acti)-6.123 F -.15(ve)-.25 G .59 +6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59 (only when bash is using backslashes to quote completed \214lenames.)184 -504 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 516 Q +324 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 336 Q (ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E -(ersions through 4.2.)-.15 E F2(dir)144 528 Q(expand)-.18 E F0 .487 -(If set,)184 540 R F2(bash)2.987 E F0 .486 +(ersions through 4.2.)-.15 E F1(dir)144 348 Q(expand)-.18 E F0 .486 +(If set,)184 360 R F1(bash)2.986 E F0 .486 (replaces directory names with the results of w)2.986 F .486(ord e)-.1 F -.486(xpansion when perform-)-.15 F .179(ing \214lename completion.)184 -552 R .179(This changes the contents of the readline editing b)5.179 F -(uf)-.2 E(fer)-.25 E 5.18(.I)-.55 G 2.68(fn)-5.18 G(ot)-2.68 E(set,)184 -564 Q F2(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G -(hat the user typed.)-2.5 E F2(dirspell)144 576 Q F0 .859(If set,)184 -576 R F2(bash)3.359 E F0 .858 -(attempts spelling correction on directory names during w)3.359 F .858 +.487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184 +372 R .179(This changes the contents of the readline editing b)5.18 F +(uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,) +184 384 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G +(hat the user typed.)-2.5 E F1(dirspell)144 396 Q F0 .858(If set,)184 +396 R F1(bash)3.358 E F0 .858 +(attempts spelling correction on directory names during w)3.358 F .859 (ord completion if)-.1 F -(the directory name initially supplied does not e)184 588 Q(xist.)-.15 E -F2(dotglob)144 600 Q F0(If set,)184 600 Q F2(bash)2.5 E F0 -(includes \214lenames be)2.5 E(ginning with a `.)-.15 E 2.5('i)-.7 G 2.5 -(nt)-2.5 G(he results of pathname e)-2.5 E(xpansion.)-.15 E F2(execfail) -144 612 Q F0 1.386(If set, a non-interacti)184 612 R 1.686 -.15(ve s) --.25 H 1.386(hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15 -(xe)-.15 G 1.387(cute the \214le speci\214ed as an).15 F(ar)184 624 Q -(gument to the)-.18 E F2(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E -(An interacti)5 E .3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 -E F2(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F2(expand_aliases)144 636 Q F0 -.717(If set, aliases are e)184 648 R .717(xpanded as described abo)-.15 -F 1.017 -.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(ALIASES)3.217 E -/F4 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F -(by def)184 660 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) -.15 E F2(extdeb)144 672 Q(ug)-.2 E F0 .671(If set at shell in)184 684 R +(the directory name initially supplied does not e)184 408 Q(xist.)-.15 E +F1(dotglob)144 420 Q F0 .165(If set,)184 420 R F1(bash)2.665 E F0 .165 +(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665('i) +-.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F +(xpansion.)-.15 E(The \214lenames)184 432 Q F1 -.63(``)2.5 G -.55(.').63 +G(')-.08 E F0(and)5 E F1 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0 +(must al)5.63 E -.1(wa)-.1 G(ys be matched e).1 E(xplicitly)-.15 E 2.5 +(,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F1(dotglob)2.5 E F0 +(is set.)2.5 E F1(execfail)144 444 Q F0 1.386(If set, a non-interacti) +184 444 R 1.686 -.15(ve s)-.25 H 1.386(hell will not e).15 F 1.386 +(xit if it cannot e)-.15 F -.15(xe)-.15 G 1.387 +(cute the \214le speci\214ed as an).15 F(ar)184 456 Q(gument to the)-.18 +E F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E(An interacti)5 E .3 +-.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 E F1(exec)2.5 E F0 +-.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 468 Q F0 .717 +(If set, aliases are e)184 480 R .717(xpanded as described abo)-.15 F +1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E +/F3 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F +(by def)184 492 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) +.15 E F1(extdeb)144 504 Q(ug)-.2 E F0 .671(If set at shell in)184 516 R -.2(vo)-.4 G .671(cation, arrange to e).2 F -.15(xe)-.15 G .671 (cute the deb).15 F .672(ugger pro\214le before the shell starts,)-.2 F -.221(identical to the)184 696 R F22.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 708 Q -(uggers is enabled:)-.2 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E -(18)198.725 E 0 Cg EP -%%Page: 19 19 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(1.)184 84 Q F0(The) -220 84 Q 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 96 Q -(gument.)-.18 E F1(2.)184 108 Q F0 1.667(If the command run by the)220 -108 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F -1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 120 -Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 132 Q F0 .84 -(If the command run by the)220 132 R F1(DEB)3.34 E(UG)-.1 E F0 .841 +(cation, beha).2 F .22(vior intended for use by)-.2 F(deb)184 540 Q +(uggers is enabled:)-.2 E F1(1.)184 552 Q F0(The)220 552 Q 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 564 Q +(gument.)-.18 E F1(2.)184 576 Q F0 1.667(If the command run by the)220 +576 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F +1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 588 +Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 600 Q F0 .84 +(If the command run by the)220 600 R F1(DEB)3.34 E(UG)-.1 E F0 .841 (trap returns a v)3.341 F .841(alue of 2, and the shell is)-.25 F -.15 -(exe)220 144 S .488 +(exe)220 612 S .488 (cuting in a subroutine \(a shell function or a shell script e).15 F -.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1 -(sour)220 156 Q(ce)-.18 E F0 -.2(bu)2.5 G +(sour)220 624 Q(ce)-.18 E F0 -.2(bu)2.5 G (iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E -(n)-.15 E F0(.)A F1(4.)184 168 Q/F2 9/Times-Bold@0 SF -.27(BA)220 168 S -(SH_ARGC).27 E F0(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904 -(are updated as described in their descriptions)3.154 F(abo)220 180 Q --.15(ve)-.15 G(.).15 E F1(5.)184 192 Q F0 1.637(Function tracing is ena\ -bled: command substitution, shell functions, and sub-)220 192 R -(shells in)220 204 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 -(\()2.5 E/F3 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0 +(n)-.15 E F0(.)A F1(4.)184 636 Q F2 -.27(BA)220 636 S(SH_ARGC).27 E F0 +(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904 +(are updated as described in their descriptions)3.154 F(abo)220 648 Q +-.15(ve)-.15 G(.).15 E F1(5.)184 660 Q F0 1.637(Function tracing is ena\ +bled: command substitution, shell functions, and sub-)220 660 R +(shells in)220 672 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 +(\()2.5 E/F4 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0 (inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0 -(traps.)2.5 E F1(6.)184 216 Q F0 1.082(Error tracing is enabled: comman\ -d substitution, shell functions, and subshells)220 216 R(in)220 228 Q --.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F3(command) +(traps.)2.5 E F1(6.)184 684 Q F0 1.082(Error tracing is enabled: comman\ +d substitution, shell functions, and subshells)220 684 R(in)220 696 Q +-.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F4(command) 2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)2.5 E F1 -(extglob)144 240 Q F0 .4(If set, the e)184 240 R .4 +(extglob)144 708 Q F0 .4(If set, the e)184 708 R .4 (xtended pattern matching features described abo)-.15 F .7 -.15(ve u) --.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 252 Q -F0(are enabled.)2.5 E F1(extquote)144 264 Q F0 2.473(If set,)184 276 R -F1($)4.973 E F0<08>A F3(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 -E F0(")A F3(string)A F0 4.973("q)C 2.473(uoting is performed within) --4.973 F F1(${)4.973 E F3(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G -(pansions).15 E(enclosed in double quotes.)184 288 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 300 Q F0 -1.425(If set, patterns which f)184 300 R 1.425 -(ail to match \214lenames during pathname e)-.1 F 1.424 -(xpansion result in an)-.15 F -.15(ex)184 312 S(pansion error).15 E(.) --.55 E F1 -.25(fo)144 324 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.936(If set, the suf)184 336 R<8c78>-.25 E .936(es speci\214ed by the) --.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w) --.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 348 R .32 -(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32 -(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947 -(pletions. See)184 360 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 -(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2 -(FIGNORE)2.948 E/F4 9/Times-Roman@0 SF(.)A F0 .448(This option is)4.948 -F(enabled by def)184 372 Q(ault.)-.1 E F1(globasciiranges)144 384 Q F0 -2.519(If set, range e)184 396 R 2.519 -(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518 -(xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E -(Matching)184 408 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha) --3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214 -(nt)-3.214 G .714(he traditional C locale when performing comparisons.) --3.214 F 1.02(That is, the current locale')184 420 R 3.52(sc)-.55 G 1.02 +-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 720 Q +F0(are enabled.)2.5 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(19) +198.725 E 0 Cg EP +%%Page: 20 20 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(extquote)144 84 Q F0 +2.473(If set,)184 96 R F1($)4.973 E F0<08>A/F2 10/Times-Italic@0 SF +(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 E F0(")A F2(string)A F0 +4.973("q)C 2.473(uoting is performed within)-4.973 F F1(${)4.973 E F2 +(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G(pansions).15 E +(enclosed in double quotes.)184 108 Q(This option is enabled by def)5 E +(ault.)-.1 E F1(failglob)144 120 Q F0 1.425(If set, patterns which f)184 +120 R 1.425(ail to match \214lenames during pathname e)-.1 F 1.424 +(xpansion result in an)-.15 F -.15(ex)184 132 S(pansion error).15 E(.) +-.55 E F1 -.25(fo)144 144 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.936(If set, the suf)184 156 R<8c78>-.25 E .936(es speci\214ed by the) +-.15 F/F3 9/Times-Bold@0 SF(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936 +(ariable cause w)-.25 F .937(ords to be ignored)-.1 F .32 +(when performing w)184 168 R .32(ord completion e)-.1 F -.15(ve)-.25 G +2.82(ni).15 G 2.82(ft)-2.82 G .32(he ignored w)-2.82 F .32 +(ords are the only possible com-)-.1 F 2.947(pletions. See)184 180 R F3 +.447(SHELL V)2.947 F(ARIABLES)-1.215 E F0(abo)2.697 E .747 -.15(ve f) +-.15 H .448(or a description of).15 F F3(FIGNORE)2.948 E/F4 9 +/Times-Roman@0 SF(.)A F0 .448(This option is)4.948 F(enabled by def)184 +192 Q(ault.)-.1 E F1(globasciiranges)144 204 Q F0 2.519(If set, range e) +184 216 R 2.519(xpressions used in pattern matching brack)-.15 F 2.518 +(et e)-.1 F 2.518(xpressions \(see)-.15 F F3 -.09(Pa)5.018 G(tter).09 E +(n)-.135 E(Matching)184 228 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b) +.15 G(eha)-3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 +G 3.214(nt)-3.214 G .714 +(he traditional C locale when performing comparisons.)-3.214 F 1.02 +(That is, the current locale')184 240 R 3.52(sc)-.55 G 1.02 (ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F F1 -(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 432 R F1(A) +(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 252 R F1(A) 3.456 E F0(and)3.456 E F1(B)3.456 E F0 3.457(,a)C .957(nd upper)-3.457 F .957(-case and lo)-.2 F(wer)-.25 E .957 -(-case ASCII characters will collate)-.2 F(together)184 444 Q(.)-.55 E -F1(globstar)144 456 Q F0 .519(If set, the pattern)184 456 R F1(**)3.019 +(-case ASCII characters will collate)-.2 F(together)184 264 Q(.)-.55 E +F1(globstar)144 276 Q F0 .519(If set, the pattern)184 276 R F1(**)3.019 E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .518 (xt will match all \214les and zero)-.15 F .431 -(or more directories and subdirectories.)184 468 R .431 +(or more directories and subdirectories.)184 288 R .431 (If the pattern is follo)5.431 F .432(wed by a)-.25 F F1(/)2.932 E F0 2.932(,o)C .432(nly directories)-2.932 F(and subdirectories match.)184 -480 Q F1(gnu_errfmt)144 492 Q F0(If set, shell error messages are writt\ -en in the standard GNU error message format.)184 504 Q F1(histappend)144 -516 Q F0 .676 +300 Q F1(gnu_errfmt)144 312 Q F0(If set, shell error messages are writt\ +en in the standard GNU error message format.)184 324 Q F1(histappend)144 +336 Q F0 .676 (If set, the history list is appended to the \214le named by the v)184 -528 R .676(alue of the)-.25 F F2(HISTFILE)3.176 E F0 -.25(va)2.926 G -(ri-).25 E(able when the shell e)184 540 Q(xits, rather than o)-.15 E --.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 552 Q(eedit)-.18 -E F0 .575(If set, and)184 564 R F1 -.18(re)3.075 G(adline).18 E F0 .575 +348 R .676(alue of the)-.25 F F3(HISTFILE)3.176 E F0 -.25(va)2.926 G +(ri-).25 E(able when the shell e)184 360 Q(xits, rather than o)-.15 E +-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 372 Q(eedit)-.18 +E F0 .575(If set, and)184 384 R F1 -.18(re)3.075 G(adline).18 E F0 .575 (is being used, a user is gi)3.075 F -.15(ve)-.25 G 3.075(nt).15 G .576 (he opportunity to re-edit a f)-3.075 F .576(ailed his-)-.1 F -(tory substitution.)184 576 Q F1(histv)144 588 Q(erify)-.1 E F0 .403 -(If set, and)184 600 R F1 -.18(re)2.903 G(adline).18 E F0 .403 +(tory substitution.)184 396 Q F1(histv)144 408 Q(erify)-.1 E F0 .403 +(If set, and)184 420 R F1 -.18(re)2.903 G(adline).18 E F0 .403 (is being used, the results of history substitution are not immediately) -2.903 F .661(passed to the shell parser)184 612 R 5.661(.I)-.55 G .662 +2.903 F .661(passed to the shell parser)184 432 R 5.661(.I)-.55 G .662 (nstead, the resulting line is loaded into the)-5.661 F F1 -.18(re)3.162 -G(adline).18 E F0(editing)3.162 E -.2(bu)184 624 S -.25(ff).2 G(er).25 E +G(adline).18 E F0(editing)3.162 E -.2(bu)184 444 S -.25(ff).2 G(er).25 E 2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1 -(hostcomplete)144 636 Q F0 1.182(If set, and)184 648 R F1 -.18(re)3.682 +(hostcomplete)144 456 Q F0 1.182(If set, and)184 468 R F1 -.18(re)3.682 G(adline).18 E F0 1.182(is being used,)3.682 F F1(bash)3.682 E F0 1.181 (will attempt to perform hostname completion)3.681 F 1.38(when a w)184 -660 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381 +480 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381 (is being completed \(see)3.881 F F1(Completing)3.881 E F0(under)3.881 E -F2(READLINE)3.881 E F0(abo)184 672 Q -.15(ve)-.15 G 2.5(\). This).15 F -(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 684 Q F0(If set,) -184 696 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 +F3(READLINE)3.881 E F0(abo)184 492 Q -.15(ve)-.15 G 2.5(\). This).15 F +(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 504 Q F0(If set,) +184 516 Q F1(bash)2.5 E F0(will send)2.5 E F3(SIGHUP)2.5 E F0 (to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e) -.15 E(xits.)-.15 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(19) -198.725 E 0 Cg EP -%%Page: 20 20 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(inherit_err)144 84 Q -(exit)-.18 E F0 .22(If set, command substitution inherits the v)184 96 R -.219(alue of the)-.25 F F1(err)2.719 E(exit)-.18 E F0 .219 -(option, instead of unsetting)2.719 F(it in the subshell en)184 108 Q -2.5(vironment. This)-.4 F(option is enabled when)2.5 E/F2 10 -/Times-Italic@0 SF(posix mode)2.5 E F0(is enabled.)2.5 E F1(interacti) -144 120 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 132 R 2.83 -(waw)-.25 G .33(ord be)-2.93 F .33(ginning with)-.15 F F1(#)2.83 E F0 -.33(to cause that w)2.83 F .33(ord and all remaining characters on)-.1 F -.967(that line to be ignored in an interacti)184 144 R 1.267 -.15(ve s) --.25 H .967(hell \(see).15 F/F3 9/Times-Bold@0 SF(COMMENTS)3.467 E F0 -(abo)3.217 E -.15(ve)-.15 G 3.467(\). This).15 F .967(option is)3.467 F -(enabled by def)184 156 Q(ault.)-.1 E F1(lastpipe)144 168 Q F0 .066 -(If set, and job control is not acti)184 168 R -.15(ve)-.25 G 2.566(,t) +.15 E(xits.)-.15 E F1(inherit_err)144 528 Q(exit)-.18 E F0 .22 +(If set, command substitution inherits the v)184 540 R .219(alue of the) +-.25 F F1(err)2.719 E(exit)-.18 E F0 .219(option, instead of unsetting) +2.719 F(it in the subshell en)184 552 Q 2.5(vironment. This)-.4 F +(option is enabled when)2.5 E F2(posix mode)2.5 E F0(is enabled.)2.5 E +F1(interacti)144 564 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo) +184 576 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33(ginning with)-.15 F F1 +(#)2.83 E F0 .33(to cause that w)2.83 F .33 +(ord and all remaining characters on)-.1 F .967 +(that line to be ignored in an interacti)184 588 R 1.267 -.15(ve s)-.25 +H .967(hell \(see).15 F F3(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)-.15 +G 3.467(\). This).15 F .967(option is)3.467 F(enabled by def)184 600 Q +(ault.)-.1 E F1(lastpipe)144 612 Q F0 .066 +(If set, and job control is not acti)184 612 R -.15(ve)-.25 G 2.566(,t) .15 G .066(he shell runs the last command of a pipeline not e)-2.566 F -.15(xe)-.15 G(-).15 E(cuted in the background in the current shell en) -184 180 Q(vironment.)-.4 E F1(lithist)144 192 Q F0 .655(If set, and the) -184 192 R F1(cmdhist)3.155 E F0 .654 +184 624 Q(vironment.)-.4 E F1(lithist)144 636 Q F0 .655(If set, and the) +184 636 R F1(cmdhist)3.155 E F0 .654 (option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G 3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F -(with embedded ne)184 204 Q +(with embedded ne)184 648 Q (wlines rather than using semicolon separators where possible.)-.25 E F1 -(login_shell)144 216 Q F0 .486 +(localv)144 660 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 672 R +.422(ariables inherit the v)-.25 F .422(alue and attrib)-.25 F .422 +(utes of a v)-.2 F .422(ariable of the same name that)-.25 F -.15(ex)184 +684 S .174(ists at a pre).15 F .174(vious scope before an)-.25 F 2.673 +(yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .173 +(The nameref attrib)5.173 F .173(ute is not)-.2 F(inherited.)184 696 Q +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(20)198.725 E 0 Cg EP +%%Page: 21 21 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(localv)144 84 Q +(ar_unset)-.1 E F0 .328(If set, calling)184 96 R F1(unset)2.828 E F0 +.328(on local v)2.828 F .329(ariables in pre)-.25 F .329 +(vious function scopes marks them so subse-)-.25 F .543(quent lookups \ +\214nd them unset until that function returns. This is identical to the\ + beha)184 108 R(v-)-.2 E(ior of unsetting local v)184 120 Q +(ariables at the current function scope.)-.25 E F1(login_shell)144 132 Q +F0 .486 (The shell sets this option if it is started as a login shell \(see)184 -228 R F3(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve) --.15 G 2.987(\). The).15 F -.25(va)184 240 S(lue may not be changed.).25 -E F1(mailwar)144 252 Q(n)-.15 E F0 .815(If set, and a \214le that)184 -264 R F1(bash)3.315 E F0 .814 +144 R/F2 9/Times-Bold@0 SF(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo) +2.737 E -.15(ve)-.15 G 2.987(\). The).15 F -.25(va)184 156 S +(lue may not be changed.).25 E F1(mailwar)144 168 Q(n)-.15 E F0 .815 +(If set, and a \214le that)184 180 R F1(bash)3.315 E F0 .814 (is checking for mail has been accessed since the last time it)3.315 F --.1(wa)184 276 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E -(`The mail in)-.74 E F2(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i) --.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 288 -Q F0 .324(If set, and)184 300 R F1 -.18(re)2.824 G(adline).18 E F0 .324 -(is being used,)2.824 F F1(bash)2.824 E F0 .324 -(will not attempt to search the)2.824 F F3 -.666(PA)2.825 G(TH)-.189 E -F0 .325(for possible)2.575 F -(completions when completion is attempted on an empty line.)184 312 Q F1 -(nocaseglob)144 324 Q F0 .437(If set,)184 336 R F1(bash)2.937 E F0 .436 +-.1(wa)184 192 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E +(`The mail in)-.74 E/F3 10/Times-Italic@0 SF(mail\214le)2.5 E F0 +(has been read')2.5 E 2.5('i)-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1 +(no_empty_cmd_completion)144 204 Q F0 .324(If set, and)184 216 R F1 -.18 +(re)2.824 G(adline).18 E F0 .324(is being used,)2.824 F F1(bash)2.824 E +F0 .324(will not attempt to search the)2.824 F F2 -.666(PA)2.825 G(TH) +-.189 E F0 .325(for possible)2.575 F +(completions when completion is attempted on an empty line.)184 228 Q F1 +(nocaseglob)144 240 Q F0 .437(If set,)184 252 R F1(bash)2.937 E F0 .436 (matches \214lenames in a case\255insensiti)2.937 F .736 -.15(ve f)-.25 -H .436(ashion when performing pathname).05 F -.15(ex)184 348 S +H .436(ashion when performing pathname).05 F -.15(ex)184 264 S (pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E --.15(ve)-.15 G(\).).15 E F1(nocasematch)144 360 Q F0 1.193(If set,)184 -372 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti) +-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 276 Q F0 1.193(If set,)184 +288 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti) 3.693 F 1.494 -.15(ve f)-.25 H 1.194(ashion when performing matching).05 -F .551(while e)184 384 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0 +F .551(while e)184 300 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0 (or)3.051 E F1([[)3.051 E F0 .551 (conditional commands, when performing pattern substitution)3.051 F -.1 -(wo)184 396 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ -le completions as part of programmable com-)-.15 F(pletion.)184 408 Q F1 -(nullglob)144 420 Q F0 .855(If set,)184 432 R F1(bash)3.355 E F0(allo) +(wo)184 312 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ +le completions as part of programmable com-)-.15 F(pletion.)184 324 Q F1 +(nullglob)144 336 Q F0 .855(If set,)184 348 R F1(bash)3.355 E F0(allo) 3.355 E .855(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa) 3.354 G .854(thname Expansion).1 F F0(abo)3.354 E -.15(ve)-.15 G 3.354 -(\)t).15 G(o)-3.354 E -.15(ex)184 444 S +(\)t).15 G(o)-3.354 E -.15(ex)184 360 S (pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 -456 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 -468 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677 +372 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 +384 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677 (ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E -(are enabled.)184 480 Q(This option is enabled by def)5 E(ault.)-.1 E F1 -(pr)144 492 Q(omptv)-.18 E(ars)-.1 E F0 1.448 -(If set, prompt strings under)184 504 R 1.448(go parameter e)-.18 F -1.447(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 516 -S .17(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 -(fter being e)-2.67 F .17(xpanded as described in)-.15 F F3(PR)2.671 E -(OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G(.).15 E -(This option is enabled by def)184 528 Q(ault.)-.1 E F1 -.18(re)144 540 +(are enabled.)184 396 Q(This option is enabled by def)5 E(ault.)-.1 E F1 +(pr)144 408 Q(ogcomp_alias)-.18 E F0 2.124 +(If set, and programmable completion is enabled,)184 420 R F1(bash)4.624 +E F0 2.124(treats a command name that)4.624 F(doesn')184 432 Q 3.288(th) +-.18 G -2.25 -.2(av e)-3.288 H(an)3.488 E 3.288(yc)-.15 G .789 +(ompletions as a possible alias and attempts alias e)-3.288 F .789 +(xpansion. If it has)-.15 F 1.473(an alias,)184 444 R F1(bash)3.973 E F0 +1.473(attempts programmable completion using the command w)3.973 F 1.473 +(ord resulting)-.1 F(from the e)184 456 Q(xpanded alias.)-.15 E F1(pr) +144 468 Q(omptv)-.18 E(ars)-.1 E F0 1.447(If set, prompt strings under) +184 480 R 1.448(go parameter e)-.18 F 1.448 +(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 492 S +.171(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 +(fter being e)-2.67 F .17(xpanded as described in)-.15 F F2(PR)2.67 E +(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G(.).15 E +(This option is enabled by def)184 504 Q(ault.)-.1 E F1 -.18(re)144 516 S(stricted_shell).18 E F0 1.069 (The shell sets this option if it is started in restricted mode \(see) -184 552 R F3 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 564 Q 2.86 +184 528 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 540 Q 2.86 (w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36 (This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G -(-).15 E(cuted, allo)184 576 Q(wing the startup \214les to disco)-.25 E +(-).15 E(cuted, allo)184 552 Q(wing the startup \214les to disco)-.25 E -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E -F1(shift_v)144 588 Q(erbose)-.1 E F0 .502(If set, the)184 600 R F1 -(shift)3.002 E F0 -.2(bu)3.002 G .501 -(iltin prints an error message when the shift count e).2 F .501 -(xceeds the number)-.15 F(of positional parameters.)184 612 Q F1(sour) -144 624 Q(cepath)-.18 E F0 .77(If set, the)184 636 R F1(sour)3.27 E(ce) --.18 E F0(\()3.27 E F1(.)A F0 3.27(\)b)C .77(uiltin uses the v)-3.47 F -.771(alue of)-.25 F F3 -.666(PA)3.271 G(TH)-.189 E F0 .771 -(to \214nd the directory containing the)3.021 F -(\214le supplied as an ar)184 648 Q 2.5(gument. This)-.18 F -(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 660 Q F0 -(If set, the)184 672 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E -(xpands backslash-escape sequences by def)-.15 E(ault.)-.1 E F1(suspend) -108 688.8 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 700.8 R --.15(xe)-.15 G 1.002(cution of this shell until it recei).15 F -.15(ve) --.25 G 3.501(sa).15 G F3(SIGCONT)A F0 3.501(signal. A)3.251 F 1.001 -(login shell cannot be)3.501 F .022(suspended; the)144 712.8 R F1 -2.522 E F0 .022(option can be used to o)2.522 F -.15(ve)-.15 G .022 -(rride this and force the suspension.).15 F .023(The return status is) -5.023 F 2.5(0u)144 724.8 S(nless the shell is a login shell and)-2.5 E +F1(shift_v)144 564 Q(erbose)-.1 E F0 .501(If set, the)184 576 R F1 +(shift)3.001 E F0 -.2(bu)3.001 G .501 +(iltin prints an error message when the shift count e).2 F .502 +(xceeds the number)-.15 F(of positional parameters.)184 588 Q F1(sour) +144 600 Q(cepath)-.18 E F0 .771(If set, the)184 612 R F1(sour)3.271 E +(ce)-.18 E F0(\()3.271 E F1(.)A F0 3.271(\)b)C .771(uiltin uses the v) +-3.471 F .771(alue of)-.25 F F2 -.666(PA)3.27 G(TH)-.189 E F0 .77 +(to \214nd the directory containing the)3.02 F(\214le supplied as an ar) +184 624 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.) +-.1 E F1(xpg_echo)144 636 Q F0(If set, the)184 648 Q F1(echo)2.5 E F0 +-.2(bu)2.5 G(iltin e).2 E(xpands backslash-escape sequences by def)-.15 +E(ault.)-.1 E F1(suspend)108 664.8 Q F0([)2.5 E F1A F0(])A 1.001 +(Suspend the e)144 676.8 R -.15(xe)-.15 G 1.001 +(cution of this shell until it recei).15 F -.15(ve)-.25 G 3.501(sa).15 G +F2(SIGCONT)A F0 3.502(signal. A)3.252 F 1.002(login shell cannot be) +3.502 F .023(suspended; the)144 688.8 R F12.523 E F0 .023 +(option can be used to o)2.523 F -.15(ve)-.15 G .022 +(rride this and force the suspension.).15 F .022(The return status is) +5.022 F 2.5(0u)144 700.8 S(nless the shell is a login shell and)-2.5 E F12.5 E F0(is not supplied, or if job control is not enabled.)2.5 -E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(20)198.725 E 0 Cg EP -%%Page: 21 21 +E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(21)198.725 E 0 Cg EP +%%Page: 22 22 %%BeginPageSetup BP %%EndPageSetup @@ -2639,22 +2744,22 @@ BP (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(test)108 84 Q/F2 10 /Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([)108 96 Q F2 -.2(ex)2.5 G -(pr).2 E F1(])2.5 E F0 .878(Return a status of 0 \(true\) or 1 \(f)144 -96 R .877(alse\) depending on the e)-.1 F -.25(va)-.25 G .877 +(pr).2 E F1(])2.5 E F0 .877(Return a status of 0 \(true\) or 1 \(f)144 +96 R .878(alse\) depending on the e)-.1 F -.25(va)-.25 G .878 (luation of the conditional e).25 F(xpression)-.15 E F2 -.2(ex)144 108 S (pr).2 E F0 5.53(.E).73 G .53 (ach operator and operand must be a separate ar)-5.53 F 3.03 -(gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.08 -(primaries described abo)144 120 R 3.38 -.15(ve u)-.15 H(nder).15 E/F3 9 -/Times-Bold@0 SF(CONDITION)5.58 E 3.079(AL EXPRESSIONS)-.18 F/F4 9 -/Times-Roman@0 SF(.)A F1(test)7.579 E F0 3.079(does not accept an)5.579 -F(y)-.15 E(options, nor does it accept and ignore an ar)144 132 Q +(gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.079 +(primaries described abo)144 120 R 3.379 -.15(ve u)-.15 H(nder).15 E/F3 +9/Times-Bold@0 SF(CONDITION)5.579 E 3.079(AL EXPRESSIONS)-.18 F/F4 9 +/Times-Roman@0 SF(.)A F1(test)7.579 E F0 3.08(does not accept an)5.58 F +(y)-.15 E(options, nor does it accept and ignore an ar)144 132 Q (gument of)-.18 E F12.5 E F0(as signifying the end of options.)2.5 -E .785(Expressions may be combined using the follo)144 150 R .786 -(wing operators, listed in decreasing order of prece-)-.25 F 3.412 -(dence. The)144 162 R -.25(eva)3.412 G .912 -(luation depends on the number of ar).25 F .911(guments; see belo)-.18 F -4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F +E .786(Expressions may be combined using the follo)144 150 R .785 +(wing operators, listed in decreasing order of prece-)-.25 F 3.411 +(dence. The)144 162 R -.25(eva)3.411 G .911 +(luation depends on the number of ar).25 F .912(guments; see belo)-.18 F +4.712 -.65(w. O)-.25 H .912(perator precedence is).65 F (used when there are \214v)144 174 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G(ore ar) -2.5 E(guments.)-.18 E F1(!)144 186 Q F2 -.2(ex)2.5 G(pr).2 E F0 -.35 (Tr)180 186 S(ue if).35 E F2 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E(alse.) @@ -2677,9 +2782,9 @@ F0 -.25(eva)2.5 G(luate conditional e).25 E E 2.5(2a)144 340.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) 180 352.8 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 F .37(xpression is true if and only if the second ar)-.15 F .37 -(gument is null.)-.18 F .379(If the \214rst ar)180 364.8 R .38 -(gument is one of the unary conditional operators listed abo)-.18 F .68 --.15(ve u)-.15 H(nder).15 E F3(CONDI-)2.88 E(TION)180 376.8 Q .553 +(gument is null.)-.18 F .38(If the \214rst ar)180 364.8 R .38 +(gument is one of the unary conditional operators listed abo)-.18 F .679 +-.15(ve u)-.15 H(nder).15 E F3(CONDI-)2.879 E(TION)180 376.8 Q .552 (AL EXPRESSIONS)-.18 F F4(,)A F0 .552(the e)2.802 F .552 (xpression is true if the unary test is true.)-.15 F .552 (If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 388.8 Q @@ -2690,27 +2795,27 @@ F .37(xpression is true if and only if the second ar)-.15 F .37 (If the second ar)5.236 F .236(gument is one of)-.18 F .855 (the binary conditional operators listed abo)180 424.8 R 1.155 -.15 (ve u)-.15 H(nder).15 E F3(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F -F4(,)A F0(the)3.104 E .578(result of the e)180 436.8 R .578(xpression i\ +F4(,)A F0(the)3.105 E .579(result of the e)180 436.8 R .578(xpression i\ s the result of the binary test using the \214rst and third ar)-.15 F -(guments)-.18 E 1.333(as operands.)180 448.8 R(The)6.333 E F13.833 -E F0(and)3.833 E F13.832 E F0 1.332 +(guments)-.18 E 1.332(as operands.)180 448.8 R(The)6.332 E F13.832 +E F0(and)3.832 E F13.832 E F0 1.333 (operators are considered binary operators when there are)3.832 F .558 (three ar)180 460.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 F .558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F .558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F -(o-ar)-.1 E(gument)-.18 E .521(test using the second and third ar)180 -472.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .52 -(gument is e)-.18 F(xactly)-.15 E F1(\()3.02 E F0 .52(and the third)3.02 -F(ar)180 484.8 Q .485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 -2.985(,t)C .485(he result is the one-ar)-2.985 F .485 +(o-ar)-.1 E(gument)-.18 E .52(test using the second and third ar)180 +472.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .521 +(gument is e)-.18 F(xactly)-.15 E F1(\()3.021 E F0 .521(and the third) +3.021 F(ar)180 484.8 Q .485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 +E F0 2.985(,t)C .485(he result is the one-ar)-2.985 F .485 (gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E (wise, the e)180 496.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 -508.8 S -.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 520.8 R -.385(gument is)-.18 F F1(!)2.885 E F0 2.885(,t)C .385 -(he result is the ne)-2.885 F -.05(ga)-.15 G .384(tion of the three-ar) -.05 F .384(gument e)-.18 F .384(xpression com-)-.15 F 1.647 +508.8 S -.18(rg)-2.5 G(uments).18 E .384(If the \214rst ar)180 520.8 R +.384(gument is)-.18 F F1(!)2.884 E F0 2.885(,t)C .385 +(he result is the ne)-2.885 F -.05(ga)-.15 G .385(tion of the three-ar) +.05 F .385(gument e)-.18 F .385(xpression com-)-.15 F 1.648 (posed of the remaining ar)180 532.8 R 4.147(guments. Otherwise,)-.18 F -1.647(the e)4.147 F 1.648(xpression is parsed and e)-.15 F -.25(va)-.25 +1.647(the e)4.147 F 1.647(xpression is parsed and e)-.15 F -.25(va)-.25 G(luated).25 E(according to precedence using the rules listed abo)180 544.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 556.8 S 2.5(rm)-2.5 G(ore ar) -2.5 E(guments)-.18 E 1.635(The e)180 568.8 R 1.635 @@ -2723,79 +2828,80 @@ F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 E F1 1.229(Print the accumulated user and system times for the shell and for\ processes run from the shell.)144 615.6 R(The return status is 0.)144 627.6 Q F1(trap)108 644.4 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E -F2(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...])2.5 E .703(The command) -144 656.4 R F2(ar)3.533 E(g)-.37 E F0 .703(is to be read and e)3.423 F +F2(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...])2.5 E .702(The command) +144 656.4 R F2(ar)3.532 E(g)-.37 E F0 .702(is to be read and e)3.422 F -.15(xe)-.15 G .702(cuted when the shell recei).15 F -.15(ve)-.25 G -3.202(ss).15 G(ignal\(s\))-3.202 E F2(sigspec)3.202 E F0 5.702(.I).31 G -(f)-5.702 E F2(ar)3.532 E(g)-.37 E F0(is)3.422 E .608 +3.203(ss).15 G(ignal\(s\))-3.203 E F2(sigspec)3.203 E F0 5.703(.I).31 G +(f)-5.703 E F2(ar)3.533 E(g)-.37 E F0(is)3.423 E .609 (absent \(and there is a single)144 668.4 R F2(sigspec)3.108 E F0 3.108 (\)o)C(r)-3.108 E 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 680.4 R .659(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658 +.658(\(the v)144 680.4 R .658(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .659 (is the null string the signal speci\214ed by each)3.378 F F2(sigspec) -144.34 692.4 Q F0 .58(is ignored by the shell and by the commands it in) -3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E -F0 .581(is not present and)3.301 F F13.081 E F0(has)3.081 E 1.215 +144.34 692.4 Q F0 .581 +(is ignored by the shell and by the commands it in)3.391 F -.2(vo)-.4 G +-.1(ke).2 G 3.08(s. If).1 F F2(ar)3.41 E(g)-.37 E F0 .58 +(is not present and)3.3 F F13.08 E F0(has)3.08 E 1.214 (been supplied, then the trap commands associated with each)144 704.4 R -F2(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 +F2(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215 F(gu-)-.18 E .86(ments are supplied or if only)144 716.4 R 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 4.327 -(signal. The)144 728.4 R F14.327 E F0 1.826(option causes the she\ -ll to print a list of signal names and their corresponding)4.327 F -(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(21)198.725 E 0 Cg EP -%%Page: 22 22 +(prints the list of commands associated with each)3.36 F 4.326 +(signal. The)144 728.4 R F14.326 E F0 1.826(option causes the she\ +ll to print a list of signal names and their corresponding)4.326 F +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(22)198.725 E 0 Cg EP +%%Page: 23 23 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E 3.125(numbers. Each)144 84 R/F1 10 -/Times-Italic@0 SF(sigspec)3.465 E F0 .625 -(is either a signal name de\214ned in <)3.435 F F1(signal.h)A F0 .626 -(>, or a signal number)B 5.626(.S)-.55 G(ignal)-5.626 E +E(UIL)-.1 E(TINS\(1\))-.92 E 3.126(numbers. Each)144 84 R/F1 10 +/Times-Italic@0 SF(sigspec)3.466 E F0 .625 +(is either a signal name de\214ned in <)3.436 F F1(signal.h)A F0 .625 +(>, or a signal number)B 5.625(.S)-.55 G(ignal)-5.625 E (names are case insensiti)144 96 Q .3 -.15(ve a)-.25 H(nd the).15 E/F2 9 -/Times-Bold@0 SF(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.649(If a) -144 114 R F1(sigspec)4.489 E F0(is)4.459 E F2(EXIT)4.149 E F0 1.649 -(\(0\) the command)3.899 F F1(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F --.15(xe)-.15 G 1.649(cuted on e).15 F 1.648(xit from the shell.)-.15 F -1.648(If a)6.648 F F1(sigspec)4.488 E F0(is)4.458 E F2(DEB)144 126 Q(UG) --.09 E/F3 9/Times-Roman@0 SF(,)A F0 1.167(the command)3.417 F F1(ar) -3.997 E(g)-.37 E F0 1.167(is e)3.887 F -.15(xe)-.15 G 1.167 -(cuted before e).15 F -.15(ve)-.25 G(ry).15 E F1 1.168(simple command) -3.667 F F0(,)A F1(for)3.668 E F0(command,)3.668 E F1(case)3.668 E F0 -(com-)3.668 E(mand,)144 138 Q F1(select)2.647 E F0 .147(command, e)2.647 -F -.15(ve)-.25 G .147(ry arithmetic).15 F F1(for)2.647 E F0 .146 -(command, and before the \214rst command e)2.647 F -.15(xe)-.15 G .146 -(cutes in a).15 F .145(shell function \(see)144 150 R F2 .145 -(SHELL GRAMMAR)2.645 F F0(abo)2.395 E -.15(ve)-.15 G 2.646(\). Refer).15 +/Times-Bold@0 SF(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.648(If a) +144 114 R F1(sigspec)4.488 E F0(is)4.458 E F2(EXIT)4.148 E F0 1.648 +(\(0\) the command)3.898 F F1(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F +-.15(xe)-.15 G 1.649(cuted on e).15 F 1.649(xit from the shell.)-.15 F +1.649(If a)6.649 F F1(sigspec)4.489 E F0(is)4.459 E F2(DEB)144 126 Q(UG) +-.09 E/F3 9/Times-Roman@0 SF(,)A F0 1.168(the command)3.418 F F1(ar) +3.998 E(g)-.37 E F0 1.168(is e)3.888 F -.15(xe)-.15 G 1.167 +(cuted before e).15 F -.15(ve)-.25 G(ry).15 E F1 1.167(simple command) +3.667 F F0(,)A F1(for)3.667 E F0(command,)3.667 E F1(case)3.667 E F0 +(com-)3.667 E(mand,)144 138 Q F1(select)2.646 E F0 .146(command, e)2.646 +F -.15(ve)-.25 G .146(ry arithmetic).15 F F1(for)2.646 E F0 .147 +(command, and before the \214rst command e)2.646 F -.15(xe)-.15 G .147 +(cutes in a).15 F .146(shell function \(see)144 150 R F2 .146 +(SHELL GRAMMAR)2.646 F F0(abo)2.396 E -.15(ve)-.15 G 2.646(\). Refer).15 F .146(to the description of the)2.646 F/F4 10/Times-Bold@0 SF(extdeb) -2.646 E(ug)-.2 E F0 .146(option to)2.646 F(the)144 162 Q F4(shopt)3.201 -E F0 -.2(bu)3.201 G .7(iltin for details of its ef).2 F .7(fect on the) --.25 F F4(DEB)3.2 E(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F1(sigspec) -3.54 E F0(is)3.51 E F2(RETURN)3.2 E F3(,)A F0 .7(the com-)2.95 F(mand) -144 174 Q F1(ar)3.473 E(g)-.37 E F0 .643(is e)3.363 F -.15(xe)-.15 G -.643(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G -.644(cuted with the).15 F F4(.)3.144 E F0(or)3.144 E F4(sour)3.144 E(ce) --.18 E F0 -.2(bu)3.144 G(iltins).2 E(\214nishes e)144 186 Q -.15(xe)-.15 -G(cuting.).15 E .961(If a)144 204 R F1(sigspec)3.801 E F0(is)3.771 E F2 -(ERR)3.461 E F3(,)A F0 .961(the command)3.211 F F1(ar)3.791 E(g)-.37 E -F0 .961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 -G 3.461(ra).15 G .96(pipeline \(which may consist of a)-.001 F .185(sin\ -gle simple command\), a list, or a compound command returns a non\255ze\ -ro e)144 216 R .185(xit status, subject to)-.15 F .452(the follo)144 228 -R .452(wing conditions.)-.25 F(The)5.452 E F2(ERR)2.952 E F0 .451 -(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .451 -(ailed command is part of the com-)-.1 F .387 -(mand list immediately follo)144 240 R .387(wing a)-.25 F F4(while)2.887 -E F0(or)2.887 E F4(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 -(ord, part of the test in an)-.1 F F1(if)2.898 E F0 .388 -(statement, part)4.848 F .778(of a command e)144 252 R -.15(xe)-.15 G +2.645 E(ug)-.2 E F0 .145(option to)2.645 F(the)144 162 Q F4(shopt)3.2 E +F0 -.2(bu)3.2 G .7(iltin for details of its ef).2 F .7(fect on the)-.25 +F F4(DEB)3.2 E(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F1(sigspec)3.54 E +F0(is)3.51 E F2(RETURN)3.2 E F3(,)A F0 .701(the com-)2.951 F(mand)144 +174 Q F1(ar)3.474 E(g)-.37 E F0 .644(is e)3.364 F -.15(xe)-.15 G .643 +(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G +.643(cuted with the).15 F F4(.)3.143 E F0(or)3.143 E F4(sour)3.143 E(ce) +-.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 186 Q -.15(xe)-.15 +G(cuting.).15 E .96(If a)144 204 R F1(sigspec)3.8 E F0(is)3.77 E F2(ERR) +3.46 E F3(,)A F0 .96(the command)3.21 F F1(ar)3.791 E(g)-.37 E F0 .961 +(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 G 3.461 +(rap).15 G .961(ipeline \(which may consist of a)-3.461 F .185(single s\ +imple command\), a list, or a compound command returns a non\255zero e) +144 216 R .184(xit status, subject to)-.15 F .451(the follo)144 228 R +.451(wing conditions.)-.25 F(The)5.451 E F2(ERR)2.951 E F0 .451 +(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .452 +(ailed command is part of the com-)-.1 F .388 +(mand list immediately follo)144 240 R .388(wing a)-.25 F F4(while)2.888 +E F0(or)2.888 E F4(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 +(ord, part of the test in an)-.1 F F1(if)2.897 E F0 .387 +(statement, part)4.847 F .777(of a command e)144 252 R -.15(xe)-.15 G .778(cuted in a).15 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E F0 .778 (list e)3.278 F .778(xcept the command follo)-.15 F .778 -(wing the \214nal)-.25 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.277 E F0 -3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 264 R 1.28 +(wing the \214nal)-.25 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E F0 +3.278(,a)C -.15(ny)-3.278 G 1.28(command in a pipeline b)144 264 R 1.28 (ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v)-3.78 F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F F4(!) 3.78 E F0(.)A(These are the same conditions obe)144 276 Q(yed by the) @@ -2804,76 +2910,75 @@ F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F F4(!) (Signals ignored upon entry to the shell cannot be trapped or reset.)144 294 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 (being ignored are reset to their original v)144 306 R .662 -(alues in a subshell or subshell en)-.25 F .662(vironment when one is) +(alues in a subshell or subshell en)-.25 F .661(vironment when one is) -.4 F 2.5(created. The)144 318 R(return status is f)2.5 E(alse if an)-.1 E(y)-.15 E F1(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G (lid; otherwise).25 E F4(trap)2.5 E F0(returns true.)2.5 E F4(type)108 334.8 Q F0([)2.5 E F4(\255aftpP)A F0(])A F1(name)2.5 E F0([)2.5 E F1 -(name)A F0(...])2.5 E -.4(Wi)144 346.8 S .174 -(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F1(name) -3.034 E F0 -.1(wo)2.854 G .173 -(uld be interpreted if used as a command name.).1 F .173(If the)5.173 F -F4144 358.8 Q F0 .842(option is used,)3.342 F F4(type)3.342 E F0 +(name)A F0(...])2.5 E -.4(Wi)144 346.8 S .173 +(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F1(name) +3.033 E F0 -.1(wo)2.853 G .174 +(uld be interpreted if used as a command name.).1 F .174(If the)5.174 F +F4144 358.8 Q F0 .843(option is used,)3.343 F F4(type)3.343 E F0 .843(prints a string which is one of)3.343 F F1(alias)3.343 E F0(,).27 E F1 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F1(function)3.343 E F0 -(,).24 E F1 -.2(bu)3.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F1 -(\214le)5.253 E F0(if)3.523 E F1(name)144.36 370.8 Q F0 .087 -(is an alias, shell reserv)2.767 F .087(ed w)-.15 F .087 -(ord, function, b)-.1 F .086(uiltin, or disk \214le, respecti)-.2 F -.15 -(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F1 -(name)2.946 E F0 .086(is not)2.766 F .118 +(,).24 E F1 -.2(bu)3.342 G(iltin).2 E F0 3.342(,o).24 G(r)-3.342 E F1 +(\214le)5.252 E F0(if)3.522 E F1(name)144.36 370.8 Q F0 .086 +(is an alias, shell reserv)2.766 F .086(ed w)-.15 F .086 +(ord, function, b)-.1 F .087(uiltin, or disk \214le, respecti)-.2 F -.15 +(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F1 +(name)2.947 E F0 .087(is not)2.767 F .119 (found, then nothing is printed, and an e)144 382.8 R .118 -(xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F -F42.619 E F0 .119(option is used,)2.619 F F4(type)2.619 E F0 .855 +(xit status of f)-.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F +F42.618 E F0 .118(option is used,)2.618 F F4(type)2.618 E F0 .855 (either returns the name of the disk \214le that w)144 394.8 R .855 (ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F1(name)3.715 E F0 -.855(were speci\214ed as a com-)3.535 F .64(mand name, or nothing if)144 -406.8 R/F5 10/Courier@0 SF .64(type -t name)3.14 F F0 -.1(wo)3.14 G .641 -(uld not return).1 F F1(\214le)3.141 E F0 5.641(.T).18 G(he)-5.641 E F4 -3.141 E F0 .641(option forces a)3.141 F F2 -.666(PA)3.141 G(TH) --.189 E F0 .113(search for each)144 418.8 R F1(name)2.613 E F0 2.613(,e) -C -.15(ve)-2.863 G 2.613(ni).15 G(f)-2.613 E F5 .113(type -t name)2.613 -F F0 -.1(wo)2.613 G .113(uld not return).1 F F1(\214le)2.613 E F0 5.113 -(.I).18 G 2.613(fa)-5.113 G .112(command is hashed,)-.001 F F4 -2.612 E F0(and)144 430.8 Q F43.23 E F0 .73(print the hashed v)3.23 -F .731 -(alue, which is not necessarily the \214le that appears \214rst in)-.25 -F F2 -.666(PA)3.231 G(TH)-.189 E F3(.)A F0 .731(If the)5.231 F F4 -144 442.8 Q F0 1.749(option is used,)4.249 F F4(type)4.248 E F0 1.748 -(prints all of the places that contain an e)4.248 F -.15(xe)-.15 G 1.748 -(cutable named).15 F F1(name)4.248 E F0 6.748(.T).18 G(his)-6.748 E .744 -(includes aliases and functions, if and only if the)144 454.8 R F4 -3.244 E F0 .744(option is not also used.)3.244 F .744 +.855(were speci\214ed as a com-)3.535 F .641(mand name, or nothing if) +144 406.8 R/F5 10/Courier@0 SF .641(type -t name)3.141 F F0 -.1(wo)3.141 +G .641(uld not return).1 F F1(\214le)3.14 E F0 5.64(.T).18 G(he)-5.64 E +F43.14 E F0 .64(option forces a)3.14 F F2 -.666(PA)3.14 G(TH)-.189 +E F0 .112(search for each)144 418.8 R F1(name)2.612 E F0 2.612(,e)C -.15 +(ve)-2.862 G 2.613(ni).15 G(f)-2.613 E F5 .113(type -t name)2.613 F F0 +-.1(wo)2.613 G .113(uld not return).1 F F1(\214le)2.613 E F0 5.113(.I) +.18 G 2.613(fac)-5.113 G .113(ommand is hashed,)-2.613 F F42.613 E +F0(and)144 430.8 Q F43.231 E F0 .731(print the hashed v)3.231 F +.73(alue, which is not necessarily the \214le that appears \214rst in) +-.25 F F2 -.666(PA)3.23 G(TH)-.189 E F3(.)A F0 .73(If the)5.23 F F4 +144 442.8 Q F0 1.748(option is used,)4.248 F F4(type)4.248 E F0 +1.748(prints all of the places that contain an e)4.248 F -.15(xe)-.15 G +1.748(cutable named).15 F F1(name)4.249 E F0 6.749(.T).18 G(his)-6.749 E +.744(includes aliases and functions, if and only if the)144 454.8 R F4 +3.244 E F0 .744(option is not also used.)3.244 F .743 (The table of hashed)5.744 F 1.223(commands is not consulted when using) 144 466.8 R 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 478.8 R F4(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F4(type) -5.325 E F0 .325(returns true if all of the ar)2.825 F .326 -(guments are found, f)-.18 F .326(alse if an)-.1 F 2.826(ya)-.15 G .326 -(re not)-2.826 F(found.)144 490.8 Q F4(ulimit)108 507.6 Q F0([)2.5 E F4 +1.223(option suppresses shell function lookup, as)3.723 F .326(with the) +144 478.8 R F4(command)2.826 E F0 -.2(bu)2.826 G(iltin.).2 E F4(type) +5.326 E F0 .326(returns true if all of the ar)2.826 F .325 +(guments are found, f)-.18 F .325(alse if an)-.1 F 2.825(ya)-.15 G .325 +(re not)-2.825 F(found.)144 490.8 Q F4(ulimit)108 507.6 Q F0([)2.5 E F4 (\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F1(limit)A F0(]])A(Pro)144 -519.6 Q .244(vides control o)-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244 -(he resources a)-2.744 F -.25(va)-.2 G .244 +519.6 Q .243(vides control o)-.15 F -.15(ve)-.15 G 2.743(rt).15 G .243 +(he resources a)-2.743 F -.25(va)-.2 G .244 (ilable to the shell and to processes started by it, on systems).25 F -.943(that allo)144 531.6 R 3.443(ws)-.25 G .943(uch control.)-3.443 F -(The)5.943 E F43.443 E F0(and)3.443 E F43.444 E F0 .944 +.944(that allo)144 531.6 R 3.444(ws)-.25 G .944(uch control.)-3.444 F +(The)5.944 E F43.444 E F0(and)3.444 E F43.444 E F0 .943 (options specify that the hard or soft limit is set for the)3.444 F(gi) -144 543.6 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 +144 543.6 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208 (hard limit cannot be increased by a non-root user once it is set; a so\ -ft limit may)2.709 F .425(be increased up to the v)144 555.6 R .425 -(alue of the hard limit.)-.25 F .426(If neither)5.425 F 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 +ft limit may)2.708 F .426(be increased up to the v)144 555.6 R .426 +(alue of the hard limit.)-.25 F .425(If neither)5.426 F F42.925 E +F0(nor)2.925 E F42.925 E F0 .425 +(is speci\214ed, both the soft and)2.925 F .139(hard limits are set.)144 567.6 R .139(The v)5.139 F .139(alue of)-.25 F F1(limit)2.729 E F0 .139 (can be a number in the unit speci\214ed for the resource or one)3.319 F -.741(of the special v)144 579.6 R(alues)-.25 E F4(hard)3.241 E F0(,)A F4 +.742(of the special v)144 579.6 R(alues)-.25 E F4(hard)3.242 E F0(,)A F4 (soft)3.241 E F0 3.241(,o)C(r)-3.241 E F4(unlimited)3.241 E F0 3.241(,w) C .741(hich stand for the current hard limit, the current)-3.241 F .78 (soft limit, and no limit, respecti)144 591.6 R -.15(ve)-.25 G(ly).15 E 5.78(.I)-.65 G(f)-5.78 E F1(limit)3.37 E F0 .78 (is omitted, the current v)3.96 F .78(alue of the soft limit of the)-.25 -F .498(resource is printed, unless the)144 603.6 R F42.999 E F0 -.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .499 +F .499(resource is printed, unless the)144 603.6 R F42.999 E F0 +.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .498 (more than one resource is speci\214ed, the)2.999 F (limit name and unit are printed before the v)144 615.6 Q 2.5 (alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F4 @@ -2889,8 +2994,8 @@ Q F0(The maximum size of a process')180 663.6 Q 2.5(sd)-.55 G(ata se) 687.6 Q F4144 699.6 Q F0(The maximum number of pending signals)180 699.6 Q F4144 711.6 Q F0 (The maximum number of kqueues that may be allocated)180 711.6 Q -(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(22)198.725 E 0 Cg EP -%%Page: 23 23 +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(23)198.725 E 0 Cg EP +%%Page: 24 24 %%BeginPageSetup BP %%EndPageSetup @@ -2901,7 +3006,7 @@ E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0 144 96 Q F0(The maximum resident set size \(man)180 96 Q 2.5(ys) -.15 G(ystems do not honor this limit\))-2.5 E F1144 108 Q F0 .791 (The maximum number of open \214le descriptors \(most systems do not al\ -lo)180 108 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F +lo)180 108 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F (be set\))180 120 Q F1144 132 Q F0 (The pipe size in 512-byte blocks \(this may not be set\))180 132 Q F1 144 144 Q F0(The maximum number of bytes in POSIX message queues) @@ -2920,18 +3025,18 @@ Q/F2 10/Times-Italic@0 SF(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve) -.25 G .468(n, and the).15 F 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 280.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 -292.8 R F14.089 E F0 4.089(,w)C 1.589 +E .045(no option is gi)144 280.8 R -.15(ve)-.25 G .045(n, then).15 F F1 +2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 +(lues are in 1024-byte increments, e)1.11 F .044(xcept for)-.15 F F1 +2.544 E F0 2.544(,w)C .044(hich is)-2.544 F 1.588(in seconds;)144 +292.8 R F14.088 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 304.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 316.8 R +4.089 E F0 4.089(,a)C(nd)-4.089 E F14.089 E F0 4.089(,w)C +1.589(hich are)-4.089 F 1.476(unscaled v)144 304.8 R 1.476 +(alues; and, when in posix mode,)-.25 F 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 316.8 R -.25(va)-.4 G .404(lid option or ar).25 F .404 (gument is supplied, or an error occurs while setting)-.18 F 2.5(an)144 328.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 345.6 Q F0([)2.5 E @@ -2941,15 +3046,15 @@ F1A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(mode)-2.5 E F0(])A (gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\ therwise it is interpreted as a symbolic mode mask similar to that acce\ pted by)144 369.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -381.6 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 +381.6 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382 (alue of the mask is printed.)-.25 F(The)5.382 E F12.882 E F0 .382 (option causes the mask to be)2.882 F .547 (printed in symbolic form; the def)144 393.6 R .547 (ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G (he)-3.047 E F13.047 E F0 .547(option is supplied, and)3.047 F F2 -(mode)144.38 405.6 Q F0 .551 -(is omitted, the output is in a form that may be reused as input.)3.231 -F .552(The return status is 0 if the)5.552 F(mode w)144 417.6 Q +(mode)144.38 405.6 Q F0 .552 +(is omitted, the output is in a form that may be reused as input.)3.232 +F .551(The return status is 0 if the)5.551 F(mode w)144 417.6 Q (as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E (gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1 (unalias)108 434.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 @@ -2960,59 +3065,72 @@ F(remo)144 458.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E (alue is true unless a supplied)-.25 E F2(name)2.86 E F0 (is not a de\214ned alias.)2.68 E F1(unset)108 475.2 Q F0<5bad>2.5 E F1 (fv)A F0 2.5(][)C-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...]) -2.5 E -.15(Fo)144 487.2 S 3.827(re).15 G(ach)-3.827 E F2(name)3.827 E F0 -3.827(,r).18 G(emo)-3.827 E 1.627 -.15(ve t)-.15 H 1.327 +2.5 E -.15(Fo)144 487.2 S 3.828(re).15 G(ach)-3.828 E F2(name)3.828 E F0 +3.828(,r).18 G(emo)-3.828 E 1.628 -.15(ve t)-.15 H 1.328 (he corresponding v).15 F 1.327(ariable or function.)-.25 F 1.327 -(If the)6.327 F 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 499.2 Q F0 1.551 -(refers to a shell v)4.231 F 1.551(ariable, and that v)-.25 F 1.551 -(ariable is remo)-.25 F -.15(ve)-.15 G 4.05(d. Read-only).15 F -.25(va) -4.05 G 1.55(riables may not be).25 F 4.641(unset. If)144 511.2 R F1 -4.641 E F0 2.141(is speci\214ed, each)4.641 F F2(name)5.001 E F0 +(If the)6.327 F F13.827 E F0 1.327(option is gi)3.827 F -.15(ve) +-.25 G 1.327(n, each).15 F F2(name)144.36 499.2 Q F0 1.55 +(refers to a shell v)4.23 F 1.551(ariable, and that v)-.25 F 1.551 +(ariable is remo)-.25 F -.15(ve)-.15 G 4.051(d. Read-only).15 F -.25(va) +4.051 G 1.551(riables may not be).25 F 4.642(unset. If)144 511.2 R F1 +4.642 E F0 2.142(is speci\214ed, each)4.642 F F2(name)5.001 E F0 2.141(refers to a shell function, and the function de\214nition is)4.821 -F(remo)144 523.2 Q -.15(ve)-.15 G 2.538(d. If).15 F(the)2.537 E F1 +F(remo)144 523.2 Q -.15(ve)-.15 G 2.537(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 +F0(attrib)2.537 E(ute,)-.2 E F2(name)2.537 E F0(will)2.538 E .492 (be unset rather than the v)144 535.2 R .492(ariable it references.)-.25 F 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 547.2 R F2(name)2.721 E F0 .221 -(refers to a v)2.721 F .22(ariable; if there is no v)-.25 F .22 -(ariable by that name, an)-.25 F 2.72(yf)-.15 G(unc-)-2.72 E 1.188 +2.992 E F0 .492(option is supplied.)2.992 F .492(If no)5.492 F .22 +(options are supplied, each)144 547.2 R F2(name)2.72 E F0 .22 +(refers to a v)2.72 F .221(ariable; if there is no v)-.25 F .221 +(ariable by that name, an)-.25 F 2.721(yf)-.15 G(unc-)-2.721 E 1.189 (tion with that name is unset.)144 559.2 R 1.189(Each unset v)6.189 F -1.189(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.689(df).15 G -1.189(rom the en)-3.689 F(vironment)-.4 E 3.206 +1.189(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.688(df).15 G +1.188(rom the en)-3.688 F(vironment)-.4 E 3.205 (passed to subsequent commands.)144 571.2 R 3.206(If an)8.206 F 5.706 (yo)-.15 G(f)-5.706 E/F3 9/Times-Bold@0 SF(COMP_W)5.706 E(ORDBREAKS)-.09 -E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM)5.455 E F4(,)A F3(SECONDS)5.455 E -F4(,)A F3(LINENO)144 583.2 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) -4.347 E(AME)-.18 E F4(,)A F3(GR)4.347 E(OUPS)-.27 E F4(,)A F0(or)4.348 E +E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM)5.456 E F4(,)A F3(SECONDS)5.456 E +F4(,)A F3(LINENO)144 583.2 Q F4(,)A F3(HISTCMD)4.348 E F4(,)A F3(FUNCN) +4.348 E(AME)-.18 E F4(,)A F3(GR)4.348 E(OUPS)-.27 E F4(,)A F0(or)4.348 E F3(DIRST)4.598 E -.495(AC)-.81 G(K).495 E F0 2.098(are unset, the)4.348 -F 4.598(yl)-.15 G 2.098(ose their special)-4.598 F(properties, e)144 +F 4.597(yl)-.15 G 2.097(ose their special)-4.597 F(properties, e)144 595.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 G(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a) -.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 612 Q -F0([)2.5 E F1A F0 2.5(][)C F2 2.5(n.)-2.5 G(..)-2.5 E F0(])A -.8 -(Wa)144 624 S .027(it for each speci\214ed child process and return its\ - termination status.).8 F(Each)5.026 E F2(n)2.886 E F0 .026 -(may be a process ID)2.766 F .256 -(or a job speci\214cation; if a job spec is gi)144 636 R -.15(ve)-.25 G -.256(n, all processes in that job').15 F 2.756(sp)-.55 G .256 -(ipeline are w)-2.756 F .256(aited for)-.1 F 5.256(.I)-.55 G(f)-5.256 E -F2(n)3.116 E F0 .318(is not gi)144 648 R -.15(ve)-.25 G .318 -(n, all currently acti).15 F .618 -.15(ve c)-.25 H .318 -(hild processes are w).15 F .318(aited for)-.1 F 2.818(,a)-.4 G .318 -(nd the return status is zero.)-2.818 F .317(If the)5.317 F F1144 -660 Q F0 .361(option is supplied,)2.861 F F1(wait)2.861 E F0 -.1(wa) -2.861 G .361(its for an).1 F 2.862(yj)-.15 G .362 -(ob to terminate and returns its e)-2.862 F .362(xit status.)-.15 F(If) -5.362 E F2(n)3.222 E F0(speci\214es)3.102 E 2.596(an)144 672 S(on-e) --2.596 E .096(xistent process or job, the return status is 127.)-.15 F -.095(Otherwise, the return status is the e)5.095 F .095(xit status)-.15 -F(of the last process or job w)144 684 Q(aited for)-.1 E(.)-.55 E/F5 -10.95/Times-Bold@0 SF(SEE ALSO)72 700.8 Q F0(bash\(1\), sh\(1\))108 -712.8 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(23)198.725 E 0 Cg EP +F0([)2.5 E F1(\255fn)A F0 2.5(][)C F2(id ...)-2.5 E F0(])A -.8(Wa)144 +624 S .659(it for each speci\214ed child process and return its termina\ +tion status.).8 F(Each)5.659 E F2(id)3.169 E F0 .659(may be a process) +3.929 F .009(ID or a job speci\214cation; if a job spec is gi)144 636 R +-.15(ve)-.25 G .008(n, all processes in that job').15 F 2.508(sp)-.55 G +.008(ipeline are w)-2.508 F .008(aited for)-.1 F 5.008(.I)-.55 G(f) +-5.008 E F2(id)144.01 648 Q F0 .521(is not gi)3.791 F -.15(ve)-.25 G +.521(n, all currently acti).15 F .821 -.15(ve c)-.25 H .521 +(hild processes are w).15 F .521(aited for)-.1 F 3.021(,a)-.4 G .521 +(nd the return status is zero.)-3.021 F(If)5.522 E(the)144 660 Q F1 +3.057 E F0 .557(option is supplied,)3.057 F F1(wait)3.057 E F0 -.1 +(wa)3.057 G .557(its for an).1 F 3.057(yj)-.15 G .557 +(ob to terminate and returns its e)-3.057 F .557(xit status.)-.15 F .556 +(If the)5.556 F F13.056 E F0 .586 +(option is supplied, and job control is enabled,)144 672 R F1(wait)3.086 +E F0(forces)3.086 E F2(id)3.086 E F0 .587 +(to terminate before returning its sta-)3.086 F .756 +(tus, instead of returning when it changes status.)144 684 R(If)5.756 E +F2(id)3.266 E F0 .755(speci\214es a non-e)4.026 F .755 +(xistent process or job, the)-.15 F .365(return status is 127.)144 696 R +.365(Otherwise, the return status is the e)5.365 F .365 +(xit status of the last process or job w)-.15 F(aited)-.1 E(for)144 708 +Q(.)-.55 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(24)198.725 E 0 Cg +EP +%%Page: 25 25 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10.95/Times-Bold@0 SF(SEE ALSO)72 84 Q +F0(bash\(1\), sh\(1\))108 96 Q(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 +E(25)198.725 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/rbash.ps b/doc/rbash.ps index 244a49904..885aef042 100644 --- a/doc/rbash.ps +++ b/doc/rbash.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.3 -%%CreationDate: Wed Aug 31 10:24:00 2016 +%%CreationDate: Wed Jan 2 09:14:38 2019 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%DocumentSuppliedResources: procset grops 1.22 3 diff --git a/doc/version.texi b/doc/version.texi index 90bdb3e1f..12462477f 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -1,11 +1,11 @@ @ignore -Copyright (C) 1988-2016 Free Software Foundation, Inc. +Copyright (C) 1988-2018 Free Software Foundation, Inc. @end ignore -@set LASTCHANGE Wed Sep 7 17:12:22 EDT 2016 +@set LASTCHANGE Fri Dec 7 09:49:07 EST 2018 -@set EDITION 4.4 -@set VERSION 4.4 +@set EDITION 5.0 +@set VERSION 5.0 -@set UPDATED 7 September 2016 -@set UPDATED-MONTH September 2016 +@set UPDATED 7 December 2018 +@set UPDATED-MONTH December 2018 diff --git a/error.c b/error.c index b05c39eb1..417c902e9 100644 --- a/error.c +++ b/error.c @@ -44,6 +44,7 @@ extern int errno; #include "bashintl.h" #include "shell.h" +#include "execute_cmd.h" #include "flags.h" #include "input.h" @@ -53,8 +54,6 @@ extern int errno; extern int executing_line_number __P((void)); -extern int last_command_exit_value; -extern char *shell_name; #if defined (JOB_CONTROL) extern pid_t shell_pgrp; extern int give_terminal_to __P((pid_t, int)); diff --git a/eval.c b/eval.c index db863e72f..f02d6e40e 100644 --- a/eval.c +++ b/eval.c @@ -35,6 +35,7 @@ #include "bashintl.h" #include "shell.h" +#include "parser.h" #include "flags.h" #include "trap.h" @@ -47,16 +48,6 @@ # include "bashhist.h" #endif -extern int EOF_reached; -extern int indirection_level; -extern int posixly_correct; -extern int subshell_environment, running_under_emacs; -extern int last_command_exit_value, stdin_redir; -extern int need_here_doc; -extern int current_command_number, current_command_line_count, line_number; -extern int expand_aliases; -extern char *ps0_prompt; - #if defined (HAVE_POSIX_SIGNALS) extern sigset_t top_level_mask; #endif @@ -78,6 +69,9 @@ reader_loop () our_indirection_level = ++indirection_level; + if (just_one_command) + reset_readahead_token (); + while (EOF_Reached == 0) { int code; @@ -90,7 +84,7 @@ reader_loop () /* XXX - why do we set this every time through the loop? And why do it if SIGINT is trapped in an interactive shell? */ - if (interactive_shell && signal_is_ignored (SIGINT) == 0) + if (interactive_shell && signal_is_ignored (SIGINT) == 0 && signal_is_trapped (SIGINT) == 0) set_signal_handler (SIGINT, sigint_sighandler); if (code != NOT_JUMPED) @@ -157,10 +151,6 @@ reader_loop () else if (current_command = global_command) { global_command = (COMMAND *)NULL; - current_command_number++; - - executing = 1; - stdin_redir = 0; /* If the shell is interactive, expand and display $PS0 after reading a command (possibly a list or pipeline) and before executing it. */ @@ -177,6 +167,11 @@ reader_loop () free (ps0_string); } + current_command_number++; + + executing = 1; + stdin_redir = 0; + execute_command (current_command); exec_done: @@ -202,6 +197,47 @@ reader_loop () return (last_command_exit_value); } +/* Pretty print shell scripts */ +int +pretty_print_loop () +{ + COMMAND *current_command; + char *command_to_print; + int code; + int global_posix_mode, last_was_newline; + + global_posix_mode = posixly_correct; + last_was_newline = 0; + while (EOF_Reached == 0) + { + code = setjmp_nosigs (top_level); + if (code) + return (EXECUTION_FAILURE); + if (read_command() == 0) + { + current_command = global_command; + global_command = 0; + posixly_correct = 1; /* print posix-conformant */ + if (current_command && (command_to_print = make_command_string (current_command))) + { + printf ("%s\n", command_to_print); /* for now */ + last_was_newline = 0; + } + else if (last_was_newline == 0) + { + printf ("\n"); + last_was_newline = 1; + } + posixly_correct = global_posix_mode; + dispose_command (current_command); + } + else + return (EXECUTION_FAILURE); + } + + return (EXECUTION_SUCCESS); +} + static sighandler alrm_catcher(i) int i; @@ -228,6 +264,15 @@ send_pwd_to_eterm () free (f); } +static void +execute_prompt_command () +{ + char *command_to_execute; + + command_to_execute = get_string_value ("PROMPT_COMMAND"); + if (command_to_execute) + execute_variable_command (command_to_execute, "PROMPT_COMMAND"); +} /* Call the YACC-generated parser and return the status of the parse. Input is read from the current input stream (bash_input). yyparse leaves the parsed command in the global variable GLOBAL_COMMAND. @@ -236,7 +281,6 @@ int parse_command () { int r; - char *command_to_execute; need_here_doc = 0; run_pending_traps (); @@ -249,9 +293,7 @@ parse_command () actually printed. */ if (interactive && bash_input.type != st_string && parser_expanding_alias() == 0) { - command_to_execute = get_string_value ("PROMPT_COMMAND"); - if (command_to_execute) - execute_variable_command (command_to_execute, "PROMPT_COMMAND"); + execute_prompt_command (); if (running_under_emacs == 2) send_pwd_to_eterm (); /* Yuck */ diff --git a/examples/INDEX.html b/examples/INDEX.html index bd06b2566..bcca1f9e0 100644 --- a/examples/INDEX.html +++ b/examples/INDEX.html @@ -43,45 +43,29 @@ A more ksh-compatible 'autoload' (with lazy load). ksh + + ./functions/autoload.v3 + An updated ksh-compatible 'autoload'. + ksh + ./functions/basename A replacement for basename(1). basename - - ./functions/basename2 - Fast basename(1) and dirname(1) functions for BASH/SH. - basename, dirname - - - ./functions/coproc.bash - Start, control, and end coprocesses. - - - ./functions/coshell.bash - Control shell coprocesses (see coprocess.bash). - - - ./functions/coshell.README - README for coshell and coproc. - ./functions/csh-compat A C-shell compatibility package. csh - - ./functions/dirfuncs - Directory manipulation functions from the book 'The Korn Shell'. - ./functions/dirname A replacement for dirname(1). dirname - ./functions/emptydir - Find out if a directory is empty. + ./functions/dirstack + Directory stack functions. ./functions/exitstat @@ -100,18 +84,6 @@ Front end to sync TERM changes to both stty(1) and readline 'bind'. stty.bash - - ./functions/func - Print out definitions for functions named by arguments. - - - ./functions/gethtml - Get a web page from a remote server (wget(1) in bash!). - - - ./functions/getoptx.bash - getopt function that parses long-named options. - ./functions/inetaddr Internet address conversion (inet2hex & hex2inet). @@ -121,10 +93,6 @@ Return zero if the argument is in the path and executable. inpath - - ./functions/isnum.bash - Test user input on numeric or character value. - ./functions/isnum2 Test user input on numeric values, with floating point. @@ -133,18 +101,6 @@ ./functions/isvalidip Test user input for valid IP Addresses. - - ./functions/jdate.bash - Julian date conversion. - - - ./functions/jj.bash - Look for running jobs. - - - ./functions/keep - Try to keep some programs in the foreground and running. - ./functions/ksh-cd ksh-like 'cd': cd [-LP] [dir [change]]. @@ -164,47 +120,14 @@ ./functions/login Replace the 'login' and 'newgrp' builtins in old Bourne shells. - - ./functions/lowercase - Rename files to lower case. - rename lower - - - ./functions/manpage - Find and print a manual page. - fman - - - ./functions/mhfold - Print MH folders, useful only because folders(1) doesn't print mod date/times. - ./functions/notify.bash Notify when jobs change status. - - ./functions/pathfuncs - Path related functions (no_path, add_path, pre-path, del_path). - path - ./functions/README README - - ./functions/recurse - Recursive directory traverser. - - - ./functions/repeat2 - A clone of C shell builtin 'repeat'. - repeat, csh - - - ./functions/repeat3 - A clone of C shell builtin 'repeat'. - repeat, csh - ./functions/seq Generate a sequence from m to n, m defaults to 1. @@ -237,10 +160,6 @@ A function to emulate the ancient ksh builtin. ksh - - ./functions/term - A shell function to set the terminal type interactively or not. - ./functions/whatis An implementation of the 10th Edition Unix sh builtin 'whatis(1)' command. @@ -253,17 +172,6 @@ ./functions/which An emulation of 'which(1)' as it appears in FreeBSD. - - ./functions/xalias.bash - Convert csh alias commands to bash functions. - csh, aliasconv - - - ./functions/xfind.bash - A 'find(1)' clone. - - - ./loadables/ Example loadable replacements @@ -278,26 +186,18 @@ cat(1) replacement with no options - the way cat was intended. cat, readline pager - - ./loadables/cut.c - cut(1) replacement. - ./loadables/dirname.c Return directory portion of pathname. dirname - ./loadables/finfo.c - Print file info. + ./loadables/fdflags.c + Display or modify file descriptor flags - ./loadables/getconf.c - POSIX.2 getconf utility. - - - ./loadables/getconf.h - Replacement definitions for ones the system doesn't provide. + ./loadables/finfo.c + Print file info. ./loadables/head.c @@ -323,10 +223,18 @@ ./loadables/Makefile.in Simple makefile for the sample loadable builtins. + + ./loadables/Makefile.inc.in + Sample makefile to use for loadable builtin development. + ./loadables/mkdir.c Make directories. + + ./loadables/mypid.c + Demonstrate how a loadable builtin can create and delete shell variables. + ./loadables/necho.c echo without options or argument interpretation. @@ -355,14 +263,26 @@ ./loadables/realpath.c Canonicalize pathnames, resolving symlinks. + + ./loadables/rm.c + Remove file. + ./loadables/rmdir.c Remove directory. + + ./loadables/setpgid.c + Set a child process's process group. + ./loadables/sleep.c sleep for fractions of a second. + + ./loadables/stat.c + Load an associative array with stat information about a file. + ./loadables/strftime.c Loadable builtin interface to strftime(3). @@ -430,221 +350,12 @@ ./misc/README README - - ./misc/suncmd.termcap - SunView TERMCAP string. - - - - - ./scripts.noah - Noah Friedman's collection of scripts (updated to bash v2 syntax by Chet Ramey) - - - ./scripts.noah/aref.bash - Pseudo-arrays and substring indexing examples. - - - ./scripts.noah/bash.sub.bash - Library functions used by require.bash. - - - ./scripts.noah/bash_version.bash - A function to slice up $BASH_VERSION. - - - ./scripts.noah/meta.bash - Enable and disable eight-bit readline input. - - - ./scripts.noah/mktmp.bash - Make a temporary file with a unique name. - - - ./scripts.noah/number.bash - A fun hack to translate numerals into English. - - - ./scripts.noah/PERMISSION - Permissions to use the scripts in this directory. - - - ./scripts.noah/prompt.bash - A way to set PS1 to some predefined strings. - - - ./scripts.noah/README - README - - - ./scripts.noah/remap_keys.bash - A front end to 'bind' to redo readline bindings. - - - ./scripts.noah/require.bash - Lisp-like require/provide library functions for bash. - - - ./scripts.noah/send_mail.bash - Replacement SMTP client written in bash. - - - ./scripts.noah/shcat.bash - Bash replacement for 'cat(1)'. - cat - - - ./scripts.noah/source.bash - Replacement for source that uses current directory. - - - ./scripts.noah/string.bash - The string(3) functions at the shell level. - - - ./scripts.noah/stty.bash - Front-end to stty(1) that changes readline bindings too. - fstty - - - ./scripts.noah/y_or_n_p.bash - Prompt for a yes/no/quit answer. - ask - - - - - ./scripts.v2 - John DuBois' ksh script collection (converted to bash v2 syntax by Chet Ramey). - - - ./scripts.v2/arc2tarz - Convert an "arc" archive to a compressed tar archive. - - - ./scripts.v2/bashrand - Random number generator with upper and lower bounds and optional seed. - random - - - ./scripts.v2/cal2day.bash - Convert a day number to a name. - - - ./scripts.v2/cdhist.bash - cd replacement with a directory stack added. - - - ./scripts.v2/corename - Tell what produced a core file. - - - ./scripts.v2/fman - Fast man(1) replacement. - manpage - - - ./scripts.v2/frcp - Copy files using ftp(1) but with rcp-type command line syntax. - - - ./scripts.v2/lowercase - Change filenames to lower case. - rename lower - - - ./scripts.v2/ncp - A nicer front end for cp(1) (has -i, etc.). - - - ./scripts.v2/newext - Change the extension of a group of files. - rename - - - ./scripts.v2/nmv - A nicer front end for mv(1) (has -i, etc.). - rename - - - ./scripts.v2/pages - Print specified pages from files. - - - ./scripts.v2/PERMISSION - Permissions to use the scripts in this directory. - - - ./scripts.v2/pf - A pager front end that handles compressed files. - - - ./scripts.v2/pmtop - Poor man's 'top(1)' for SunOS 4.x and BSD/OS. - - - ./scripts.v2/README - README - - - ./scripts.v2/ren - Rename files by changing parts of filenames that match a pattern. - rename - - - ./scripts.v2/rename - Change the names of files that match a pattern. - rename - - - ./scripts.v2/repeat - Execute a command multiple times. - repeat - - - ./scripts.v2/shprof - Line profiler for bash scripts. - - - ./scripts.v2/untar - Unarchive a (possibly compressed) tarfile into a directory. - - - ./scripts.v2/uudec - Carefully uudecode(1) multiple files. - - - ./scripts.v2/uuenc - uuencode(1) multiple files. - - - ./scripts.v2/vtree - Print a visual display of a directory tree. - tree - - - ./scripts.v2/where - Show where commands that match a pattern are. - ./scripts Example scripts - - ./scripts/adventure.sh - Text adventure game in bash! - - - ./scripts/bcsh.sh - Bourne shell cshell-emulator. - csh - - - ./scripts/bash-hexdump.sh - hexdump(1) in bash - hexdump -C, hd ./scripts/cat.sh Readline-based pager. @@ -654,65 +365,15 @@ ./scripts/center Center - center a group of lines. - - ./scripts/dd-ex.sh - Line editor using only /bin/sh, /bin/dd and /bin/rm. - - - ./scripts/fixfiles.bash - Recurse a tree and fix files containing various "bad" chars. - - - ./scripts/hanoi.bash - The inevitable Towers of Hanoi in bash. - ./scripts/inpath Search $PATH for a file the same name as $1; return TRUE if found. inpath - - ./scripts/krand.bash - Produces a random number within integer limits. - random - - - ./scripts/line-input.bash - Line input routine for GNU Bourne-Again Shell plus terminal-control primitives. - - - ./scripts/nohup.bash - bash version of 'nohup' command. - - - ./scripts/precedence - Test relative precedences for '&&' and '||' operators. - - - ./scripts/randomcard.bash - Print a random card from a card deck. - random - ./scripts/README README - - ./scripts/scrollbar - Display scrolling text. - - - ./scripts/scrollbar2 - Display scrolling text. - - - ./scripts/self-repro - A self-reproducing script (careful!) - - - ./scripts/showperm.bash - Convert ls(1) symbolic permissions into octal mode. - ./scripts/shprompt Display a prompt and get an answer satisfying certain criteria. @@ -722,37 +383,6 @@ ./scripts/spin.bash Display a 'spinning wheel' to show progress. - - ./scripts/timeout - Give rsh(1) a shorter timeout. - - - ./scripts/timeout2 - Execute a given command with a timeout. - - - ./scripts/timeout3 - Execute a given command with a timeout. - - - ./scripts/vtree2 - Display a tree printout of dir in 1k blocks. - tree - - - ./scripts/vtree3 - Display a graphical tree printout of dir. - tree - - - ./scripts/vtree3a - Display a graphical tree printout of dir. - tree - - - ./scripts/websrv.sh - A web server in bash! - ./scripts/xterm_title Print the contents of the xterm title bar. @@ -793,36 +423,4 @@ - - ./startup-files/apple - Example Start-up files for Mac OS X. - - - ./startup-files/apple/aliases - Sample aliases for Mac OS X. - - - ./startup-files/apple/bash.defaults - Sample User preferences file. - - - ./startup-files/apple/environment - Sample Bourne Again Shell environment file. - - - ./startup-files/apple/login - Sample login wrapper. - - - ./startup-files/apple/logout - Sample logout wrapper. - - - ./startup-files/apple/rc - Sample Bourne Again Shell config file. - - - ./startup-files/apple/README - README - diff --git a/examples/INDEX.txt b/examples/INDEX.txt index 4b5478eee..b47e2113a 100644 --- a/examples/INDEX.txt +++ b/examples/INDEX.txt @@ -9,43 +9,25 @@ Path Description X-Ref ./functions/autoload An almost ksh-compatible 'autoload' (no lazy load). ksh ./functions/autoload.v2 An almost ksh-compatible 'autoload' (no lazy load). ksh ./functions/autoload.v3 A more ksh-compatible 'autoload' (with lazy load). ksh +./functions/autoload.v4 An updated ksh-compatible 'autoload'. ksh ./functions/basename A replacement for basename(1). basename -./functions/basename2 Fast basename(1) and dirname(1) functions for BASH/SH. basename, dirname -./functions/coproc.bash Start, control, and end coprocesses. -./functions/coshell.bash Control shell coprocesses (see coprocess.bash). -./functions/coshell.README README for coshell and coproc. ./functions/csh-compat A C-shell compatibility package. csh -./functions/dirfuncs Directory manipulation functions from the book 'The Korn Shell'. ./functions/dirname A replacement for dirname(1). dirname -./functions/emptydir Find out if a directory is empty. +./functions/dirstack Directory stack functions. ./functions/exitstat Display the exit status of processes. ./functions/external Like 'command' but FORCES use of external command. ./functions/fact Recursive factorial function. ./functions/fstty Front end to sync TERM changes to both stty(1) and readline 'bind'. stty.bash -./functions/func Print out definitions for functions named by arguments. -./functions/gethtml Get a web page from a remote server (wget(1) in bash!). -./functions/getoptx.bash getopt function that parses long-named options. ./functions/inetaddr Internet address conversion (inet2hex & hex2inet). ./functions/inpath Return zero if the argument is in the path and executable. inpath -./functions/isnum.bash Test user input on numeric or character value. ./functions/isnum2 Test user input on numeric values, with floating point. ./functions/isvalidip Test user input for valid IP Addresses. -./functions/jdate.bash Julian date conversion. -./functions/jj.bash Look for running jobs. -./functions/keep Try to keep some programs in the foreground and running. ./functions/ksh-cd ksh-like 'cd': cd [-LP] [dir [change]]. ksh ./functions/ksh-compat-test ksh-like arithmetic test replacements. ksh ./functions/kshenv Functions and aliases to provide the beginnings of a ksh environment for bash. ksh ./functions/login Replace the 'login' and 'newgrp' builtins in old Bourne shells. -./functions/lowercase Rename files to lower case. rename lower -./functions/manpage Find and print a manual page. fman -./functions/mhfold Print MH folders, useful only because folders(1) doesn't print mod date/times. ./functions/notify.bash Notify when jobs change status. -./functions/pathfuncs Path related functions (no_path, add_path, pre-path, del_path). path ./functions/README README -./functions/recurse Recursive directory traverser. -./functions/repeat2 A clone of C shell builtin 'repeat'. repeat, csh -./functions/repeat3 A clone of C shell builtin 'repeat'. repeat, csh ./functions/seq Generate a sequence from m to n, m defaults to 1. ./functions/seq2 Generate a sequence from m to n, m defaults to 1. ./functions/shcat Readline-based pager. cat, readline pager @@ -53,28 +35,25 @@ Path Description X-Ref ./functions/sort-pos-params Sort the positional parameters. ./functions/substr A function to emulate the ancient ksh builtin. ksh ./functions/substr2 A function to emulate the ancient ksh builtin. ksh -./functions/term A shell function to set the terminal type interactively or not. ./functions/whatis An implementation of the 10th Edition Unix sh builtin 'whatis(1)' command. ./functions/whence An almost-ksh compatible 'whence(1)' command. ./functions/which An emulation of 'which(1)' as it appears in FreeBSD. -./functions/xalias.bash Convert csh alias commands to bash functions. csh, aliasconv -./functions/xfind.bash A 'find(1)' clone. ./loadables/ Example loadable replacements ./loadables/basename.c Return non-directory portion of pathname. basename ./loadables/cat.c cat(1) replacement with no options - the way cat was intended. cat, readline pager -./loadables/cut.c cut(1) replacement. ./loadables/dirname.c Return directory portion of pathname. dirname +./loadables/fdflags.c Display or modify file descriptor flags ./loadables/finfo.c Print file info. -./loadables/getconf.c POSIX.2 getconf utility. -./loadables/getconf.h Replacement definitions for ones the system doesn't provide. ./loadables/head.c Copy first part of files. ./loadables/hello.c Obligatory "Hello World" / sample loadable. ./loadables/id.c POSIX.2 user identity. ./loadables/ln.c Make links. ./loadables/logname.c Print login name of current user. ./loadables/Makefile.in Simple makefile for the sample loadable builtins. +./loadables/Makefile.inc.in Sample makefile to use for loadable builtin development. ./loadables/mkdir.c Make directories. +./loadables/mypid.c Demonstrate how a loadable builtin can create and delete shell variables. ./loadables/necho.c echo without options or argument interpretation. ./loadables/pathchk.c Check pathnames for validity and portability. ./loadables/print.c Loadable ksh-93 style print builtin. @@ -82,8 +61,11 @@ Path Description X-Ref ./loadables/push.c Anyone remember TOPS-20? ./loadables/README README ./loadables/realpath.c Canonicalize pathnames, resolving symlinks. +./loadables/rm.c Remove file. ./loadables/rmdir.c Remove directory. +./loadables/setpgid.c Set a child process's process group. ./loadables/sleep.c sleep for fractions of a second. +./loadables/stat.c Load an associative array with stat information about a file. ./loadables/strftime.c Loadable builtin interface to strftime(3). ./loadables/sync.c Sync the disks by forcing pending filesystem writes to complete. ./loadables/tee.c Duplicate standard input. @@ -101,83 +83,13 @@ Path Description X-Ref ./misc/aliasconv.sh Convert csh aliases to bash aliases and functions. csh, xalias ./misc/cshtobash Convert csh aliases, environment variables, and variables to bash equivalents. csh, xalias ./misc/README README -./misc/suncmd.termcap SunView TERMCAP string. - -./scripts.noah Noah Friedman's collection of scripts (updated to bash v2 syntax by Chet Ramey) -./scripts.noah/aref.bash Pseudo-arrays and substring indexing examples. -./scripts.noah/bash.sub.bash Library functions used by require.bash. -./scripts.noah/bash_version.bash A function to slice up $BASH_VERSION. -./scripts.noah/meta.bash Enable and disable eight-bit readline input. -./scripts.noah/mktmp.bash Make a temporary file with a unique name. -./scripts.noah/number.bash A fun hack to translate numerals into English. -./scripts.noah/PERMISSION Permissions to use the scripts in this directory. -./scripts.noah/prompt.bash A way to set PS1 to some predefined strings. -./scripts.noah/README README -./scripts.noah/remap_keys.bash A front end to 'bind' to redo readline bindings. -./scripts.noah/require.bash Lisp-like require/provide library functions for bash. -./scripts.noah/send_mail.bash Replacement SMTP client written in bash. -./scripts.noah/shcat.bash Bash replacement for 'cat(1)'. cat -./scripts.noah/source.bash Replacement for source that uses current directory. -./scripts.noah/string.bash The string(3) functions at the shell level. -./scripts.noah/stty.bash Front-end to stty(1) that changes readline bindings too. fstty -./scripts.noah/y_or_n_p.bash Prompt for a yes/no/quit answer. ask - -./scripts.v2 John DuBois' ksh script collection (converted to bash v2 syntax by Chet Ramey). -./scripts.v2/arc2tarz Convert an "arc" archive to a compressed tar archive. -./scripts.v2/bashrand Random number generator with upper and lower bounds and optional seed. random -./scripts.v2/cal2day.bash Convert a day number to a name. -./scripts.v2/cdhist.bash cd replacement with a directory stack added. -./scripts.v2/corename Tell what produced a core file. -./scripts.v2/fman Fast man(1) replacement. manpage -./scripts.v2/frcp Copy files using ftp(1) but with rcp-type command line syntax. -./scripts.v2/lowercase Change filenames to lower case. rename lower -./scripts.v2/ncp A nicer front end for cp(1) (has -i, etc.). -./scripts.v2/newext Change the extension of a group of files. rename -./scripts.v2/nmv A nicer front end for mv(1) (has -i, etc.). rename -./scripts.v2/pages Print specified pages from files. -./scripts.v2/PERMISSION Permissions to use the scripts in this directory. -./scripts.v2/pf A pager front end that handles compressed files. -./scripts.v2/pmtop Poor man's 'top(1)' for SunOS 4.x and BSD/OS. -./scripts.v2/README README -./scripts.v2/ren Rename files by changing parts of filenames that match a pattern. rename -./scripts.v2/rename Change the names of files that match a pattern. rename -./scripts.v2/repeat Execute a command multiple times. repeat -./scripts.v2/shprof Line profiler for bash scripts. -./scripts.v2/untar Unarchive a (possibly compressed) tarfile into a directory. -./scripts.v2/uudec Carefully uudecode(1) multiple files. -./scripts.v2/uuenc uuencode(1) multiple files. -./scripts.v2/vtree Print a visual display of a directory tree. tree -./scripts.v2/where Show where commands that match a pattern are. ./scripts Example scripts -./scripts/adventure.sh Text adventure game in bash! -./scripts/bash-hexdump.sh hexdump(1) in bash -./scripts/bcsh.sh Bourne shell cshell-emulator. csh ./scripts/cat.sh Readline-based pager. cat, readline pager ./scripts/center Center - center a group of lines. -./scripts/dd-ex.sh Line editor using only /bin/sh, /bin/dd and /bin/rm. -./scripts/fixfiles.bash Recurse a tree and fix files containing various "bad" chars. -./scripts/hanoi.bash The inevitable Towers of Hanoi in bash. ./scripts/inpath Search $PATH for a file the same name as $1; return TRUE if found. inpath -./scripts/krand.bash Produces a random number within integer limits. random -./scripts/line-input.bash Line input routine for GNU Bourne-Again Shell plus terminal-control primitives. -./scripts/nohup.bash bash version of 'nohup' command. -./scripts/precedence Test relative precedences for '&&' and '||' operators. -./scripts/randomcard.bash Print a random card from a card deck. random -./scripts/README README -./scripts/scrollbar Display scrolling text. -./scripts/scrollbar2 Display scrolling text. -./scripts/self-repro A self-reproducing script (careful!) -./scripts/showperm.bash Convert ls(1) symbolic permissions into octal mode. ./scripts/shprompt Display a prompt and get an answer satisfying certain criteria. ask ./scripts/spin.bash Display a 'spinning wheel' to show progress. -./scripts/timeout Give rsh(1) a shorter timeout. -./scripts/timeout2 Execute a given command with a timeout. -./scripts/timeout3 Execute a given command with a timeout. -./scripts/vtree2 Display a tree printout of dir in 1k blocks. tree -./scripts/vtree3 Display a graphical tree printout of dir. tree -./scripts/vtree3a Display a graphical tree printout of dir. tree -./scripts/websrv.sh A web server in bash! ./scripts/xterm_title Print the contents of the xterm title bar. ./scripts/zprintf Emulate printf (obsolete since it's now a bash builtin). @@ -189,11 +101,3 @@ Path Description X-Ref ./startup-files/Bashrc.bfox Sample Bourne Again SHell init file (Fox). ./startup-files/README README -./startup-files/apple Example Start-up files for Mac OS X. -./startup-files/apple/aliases Sample aliases for Mac OS X. -./startup-files/apple/bash.defaults Sample User preferences file. -./startup-files/apple/environment Sample Bourne Again Shell environment file. -./startup-files/apple/login Sample login wrapper. -./startup-files/apple/logout Sample logout wrapper. -./startup-files/apple/rc Sample Bourne Again Shell config file. -./startup-files/apple/README README diff --git a/examples/bash-completion/README b/examples/bash-completion/README new file mode 100644 index 000000000..fb5e7654d --- /dev/null +++ b/examples/bash-completion/README @@ -0,0 +1,7 @@ +Master source: https://github.com/scop/bash-completion + +This is the latest version of the bash-completion package, which provides +programmable completion specifications for a large number of commands. + +If you are a vendor installing bash or preparing a package containing bash, +please install the latest version of bash-completion when installing bash. diff --git a/examples/bash-completion/bash-completion-2.5.tar.xz b/examples/bash-completion/bash-completion-2.5.tar.xz new file mode 100644 index 000000000..f5b90790c Binary files /dev/null and b/examples/bash-completion/bash-completion-2.5.tar.xz differ diff --git a/examples/functions/arrayops.bash b/examples/functions/arrayops.bash new file mode 100644 index 000000000..d34353ae2 --- /dev/null +++ b/examples/functions/arrayops.bash @@ -0,0 +1,146 @@ +# arrayops.bash --- hide some of the nasty syntax for manipulating bash arrays +# Author: Noah Friedman +# Created: 2016-07-08 +# Public domain + +# $Id: arrayops.bash,v 1.3 2016/07/28 15:38:55 friedman Exp $ + +# Commentary: + +# These functions try to tame the syntactic nightmare that is bash array +# syntax, which makes perl's almost look reasonable. +# +# For example the apush function below lets you write: +# +# apush arrayvar newval +# +# instead of +# +# ${arrayvar[${#arrayvar[@]}]}=newval +# +# Because seriously, you've got to be kidding me. + +# These functions avoid the use of local variables as much as possible +# (especially wherever modification occurs) because those variable names +# might shadow the array name passed in. Dynamic scope! + +# Code: + +#:docstring apush: +# Usage: apush arrayname val1 {val2 {...}} +# +# Appends VAL1 and any remaining arguments to the end of the array +# ARRAYNAME as new elements. +#:end docstring: +apush() +{ + eval "$1=(\"\${$1[@]}\" \"\${@:2}\")" +} + +#:docstring apop: +# Usage: apop arrayname {n} +# +# Removes the last element from ARRAYNAME. +# Optional argument N means remove the last N elements. +#:end docstring: +apop() +{ + eval "$1=(\"\${$1[@]:0:\${#$1[@]}-${2-1}}\")" +} + +#:docstring aunshift: +# Usage: aunshift arrayname val1 {val2 {...}} +# +# Prepends VAL1 and any remaining arguments to the beginning of the array +# ARRAYNAME as new elements. The new elements will appear in the same order +# as given to this function, rather than inserting them one at a time. +# +# For example: +# +# foo=(a b c) +# aunshift foo 1 2 3 +# => foo is now (1 2 3 a b c) +# but +# +# foo=(a b c) +# aunshift foo 1 +# aunshift foo 2 +# aunshift foo 3 +# => foo is now (3 2 1 a b c) +# +#:end docstring: +aunshift() +{ + eval "$1=(\"\${@:2}\" \"\${$1[@]}\")" +} + +#:docstring ashift: +# Usage: ashift arrayname {n} +# +# Removes the first element from ARRAYNAME. +# Optional argument N means remove the first N elements. +#:end docstring: +ashift() +{ + eval "$1=(\"\${$1[@]: -\${#$1[@]}+${2-1}}\")" +} + +#:docstring aset: +# Usage: aset arrayname idx newval +# +# Assigns ARRAYNAME[IDX]=NEWVAL +#:end docstring: +aset() +{ + eval "$1[\$2]=${@:3}" +} + +#:docstring aref: +# Usage: aref arrayname idx {idx2 {...}} +# +# Echoes the value of ARRAYNAME at index IDX to stdout. +# If more than one IDX is specified, each one is echoed. +# +# Unfortunately bash functions cannot return arbitrary values in the usual way. +#:end docstring: +aref() +{ + eval local "v=(\"\${$1[@]}\")" + local x + for x in ${@:2} ; do echo "${v[$x]}"; done +} + +#:docstring aref: +# Usage: alen arrayname +# +# Echoes the length of the number of elements in ARRAYNAME. +# +# It also returns number as a numeric value, but return values are limited +# by a maximum of 255 so don't rely on this unless you know your arrays are +# relatively small. +#:end docstring: +alen() +{ + eval echo "\${#$1[@]}" + eval return "\${#$1[@]}" +} + +#:docstring anreverse: +# Usage: anreverse arrayname +# +# Reverse the order of the elements in ARRAYNAME. +# The array variable is altered by this operation. +#:end docstring: +anreverse() +{ + eval set $1 "\"\${$1[@]}\"" + eval unset $1 + while [ $# -gt 1 ]; do + eval "$1=(\"$2\" \"\${$1[@]}\")" + set $1 "${@:3}" + done +} + +#provide arrayops + +# arrayops.bash ends here diff --git a/examples/functions/autoload b/examples/functions/autoload index a563a7791..cb3a673ec 100644 --- a/examples/functions/autoload +++ b/examples/functions/autoload @@ -22,7 +22,7 @@ # # Declare a function ($1) to be autoloaded from a file ($2) when it is first # called. This defines a `temporary' function that will `.' the file -# containg the real function definition, then execute that new definition with +# containing the real function definition, then execute that new definition with # the arguments given to this `fake' function. The autoload function defined # by the file and the file itself *must* be named identically. # diff --git a/examples/functions/autoload.v4 b/examples/functions/autoload.v4 new file mode 100644 index 000000000..a172e6120 --- /dev/null +++ b/examples/functions/autoload.v4 @@ -0,0 +1,556 @@ +## -*- sh -*- + +# The psuedo-ksh autoloader. + +# How to use: +# o One function per file. +# o File and function name match exactly. +# o File is located in a directory that is in FPATH. +# o This script (autoload) must be sourced in as early as possible. This +# implies that any code in this script should NOT rely on any library of local +# or self-defined functions having already been loaded. +# o autoload must be called for each function before the function can be used. If +# autoloads are in directories where there are nothing but autoloads, then +# 'autoload /path/to/files/*' suffices (but see options -a and -f). +# o The call must be made in the current environment, not a subshell. +# o The command line suffices as "current environment". If you have autoload +# calls in a script, that script must be dotted into the process. + +# The first cut of this was by Bill Trost, trost@reed.bitnet. +# The second cut came from Chet Ramey, chet@ins.CWRU.Edu +# The third cut came from Mark Kennedy, mtk@ny.ubs.com. 1998/08/25 +# The fourth cut came from Matthew Persico, matthew.persico@gmail.com 2017/August + +autoload_calc_shimsize () +{ + echo $((AUTOLOAD_SHIM_OVERHEAD + 3 * ${#1})) +} + +_autoload_split_fpath () +{ + (IFS=':'; set -- ${FPATH}; echo "$@") +} + +_aload() +{ + local opt OPTIND + local doexport=0 + local doreload=0 + local doverbose=0 + local doevalshim=0 + local loadthese + local optimize=0 + local loaded=0 + local exported=0 + local optimized=0 + local summary=0 + local dofpath=0 + while getopts xrvla:oyf opt; do + case $opt in + x) doexport=1;; + r) doreload=1;; + v) doverbose=1;; + l) doevalshim=1;; + a) loadthese=$(find $OPTARG -maxdepth 1 -type f -printf '%f ');; + o) optimize=1;; + y) summary=1;; + f) loadthese=$(find $(_autoload_split_fpath) -maxdepth 1 -type f -printf '%f ');; + *) echo "_aload: usage: _aload [-xrvlyf] [-a dir] [function ...]" >&2; return;; + esac + done + + shift $(($OPTIND-1)) + + [ -z "$loadthese" ] && loadthese="$@" + + local func + for func in $loadthese; do + local exists_fn + exists_fn=$(declare -F $func) + if [ -n "$exists_fn" ] && ((doreload==0)) && ((doevalshim==0)) + then + if ((doverbose)) + then + echo "autoload: function '$func' already exists" + fi + else + local andevaled='' + local andexported='' + local evalstat=0 + local doshim=1 + local funcfile + funcfile=$(_autoload_resolve $func) + if [[ $funcfile ]] ; then + ## The file was found for $func. Process it. + + if ((optimize)); then + ## For the first function loaded, we will not know + ## AUTOLOAD_SHIM_OVERHEAD. We can only calculate it after + ## we have loaded one function. + if [[ $AUTOLOAD_SHIM_OVERHEAD ]]; then + local size=$(wc -c $funcfile| sed 's/ .*//') + local shimsize=$(autoload_calc_shimsize $func) + if (( size <= shimsize)); then + doshim=0 + andevaled=', optimized' + ((optimized+=1)) + fi + fi + fi + + if ((doevalshim)); then + doshim=0 + andevaled=', evaled' + fi + + ## 'brand' as in branding a cow with a mark. We add a local + ## variable to each function we autoload so that we can tell + ## later on it is an autoloaded function without having to + ## maintain some bash array or hash that cannot be passed to + ## and used by subshells. + local brandtext + brandtext="eval \"\$(type $func | sed -e 1d -e 4ilocal\\ AUTOLOADED=\'$func\')\"" + if ((doshim)); then + ## Don't bother trying to save space by shoving all the + ## eval text below onto one unreadable line; new lines will + ## be added at your semicolons and any indentation below + ## seems to be ignored anyway if you export the function; + ## look at its BASH_FUNCTION representation. + eval $func '() + { + local IS_SHIM="$func" + local file=$(_autoload_resolve '$func') + if [[ $file ]] + then + . $file + '$brandtext' + '$func' "$@" + return $? + else + return 1; + fi + }' + else + . $funcfile + eval "$brandtext" + fi + evalstat=$? + if((evalstat==0)) + then + ((loaded+=1)) + ((doexport)) && export -f $func && andexported=', exported' && ((exported+=1)) + ((doverbose)) && echo "$func autoloaded${andexported}${andevaled}" + if [[ ! $AUTOLOAD_SHIM_OVERHEAD ]] && ((doshim)); then + ## ...we have just loaded the first function shim into + ## memory. Let's calc the AUTOLOAD_SHIM_OVERHEAD size + ## to use going forward. In theory, we could check + ## again here to see if we should optimize and source + ## in this function, now that we now the + ## AUTOLOAD_SHIM_OVERHEAD. In practice, it's not worth + ## duping that code or creating a function to do so for + ## one function. + AUTOLOAD_SHIM_OVERHEAD=$(type $func | grep -v -E "^$1 is a function" | sed "s/$func//g"| wc -c) + export AUTOLOAD_SHIM_OVERHEAD + fi + else + echo "$func failed to load" >&2 + fi + fi + fi + done + ((summary)) && echo "autoload: loaded:$loaded exported:$exported optimized:$optimized overhead:$AUTOLOAD_SHIM_OVERHEAD bytes" +} + +_autoload_dump() +{ + local opt OPTIND + local opt_p='' + local opt_s='' + while getopts ps opt + do + case $opt in + p ) opt_p=1;; + s ) opt_s=1;; + esac + done + + shift $(($OPTIND-1)) + + local exported='' + local executed='' + local func + for func in $(declare | grep -E 'local\\{0,1} AUTOLOADED' | sed -e "s/.*AUTOLOADED=//" -e 's/\\//g' -e 's/[");]//g' -e "s/'//g") + do + if [ -n "$opt_p" ]; then echo -n "autoload "; fi + if [ -n "$opt_s" ] + then + exported=$(declare -F | grep -E "${func}$" | sed 's/declare -f\(x\{0,1\}\).*/\1/') + [ "$exported" = 'x' ] && exported=' exported' || exported=' not exported' + executed=$(type $func | grep 'local IS_SHIM') + [ -z "$executed" ] && executed=' executed' || executed=' not executed' + fi + echo "${func}${exported}${executed}" + done +} + +_autoload_resolve() +{ + if [[ ! "$FPATH" ]]; then + echo "autoload: FPATH not set or null" >&2 + return + fi + + local p # for 'path'. The $() commands in the for loop split the FPATH + # string into its constituents so that each one may be processed. + + for p in $( _autoload_split_fpath ); do + p=${p:-.} + if [ -f $p/$1 ]; then echo $p/$1; return; fi + done + + echo "autoload: $1: function source file not found" >&2 +} + +_autoload_edit() +{ + [ -z "$EDITOR" ] && echo "Error: no EDITOR defined" && return 1 + local toedit + local func + for func in "$@" + do + local file=$(_autoload_resolve $func) + if [[ $file ]] + then + toedit="$toedit $file" + else + echo "$funcname not found in FPATH funcfile. Skipping." + fi + done + + [ -z "$toedit" ] && return 1 + + local timemarker=$(mktemp) + + $EDITOR $toedit + + local i + for i in $toedit + do + if [ $i -nt $timemarker ] + then + local f=$(basename $i) + echo Reloading $f + autoload -r $f + fi + done +} + +_autoload_page() +{ + [ -z "$PAGER" ] && echo "Error: no PAGER defined" && return 1 + local topage + local func + for func in "$@" + do + local file=$(_autoload_resolve $func) + if [[ $file ]] + then + topage="$topage $file" + else + echo "$funcname not found in FPATH funcfile. Skipping." + fi + done + + [ -z "$topage" ] && return 1 + + $PAGER $topage +} + +_autoload_remove() +{ + unset -f "$@" +} + +_autoload_help() +{ + cat <&2; return;; + esac + done + + shift $(($OPTIND-1)) + if [ -n "$dumpopt" ] + then + _autoload_dump $dumpopt + else + _aload $passthru "$@" + fi +} + +autoreload () +{ + autoload -r "$@" +} + +## When we source in autoload, we export (but NOT autoload) the autoload +## functions so that they are available in subshells and you don't have to +## source in the autoload file in subshells. +export -f _aload \ + _autoload_dump \ + _autoload_edit \ + _autoload_help \ + _autoload_page \ + _autoload_resolve \ + _autoload_split_fpath \ + autoload \ + autoload_calc_shimsize \ + autoreload diff --git a/examples/functions/autoload.v4.t b/examples/functions/autoload.v4.t new file mode 100644 index 000000000..6d35d1411 --- /dev/null +++ b/examples/functions/autoload.v4.t @@ -0,0 +1,184 @@ +#!/bin/bash + +workdir=$(mktemp -d) + +cp autoload $workdir + +cd $workdir +pwd + +. ./autoload + +funclist='ALTEST_func1 ALTEST_funcexport ALTEST_funcu' +for funcname in $funclist; do + cat < $funcname +$funcname () +{ +echo this is $funcname + +} +EOFFUNC + +done + +export FPATH=$workdir + +autoload ALTEST_func1 ALTEST_funcu +autoload -x ALTEST_funcexport + +ok=0 +failed=0 + +for funcname in $funclist; do + + testname="$funcname loaded" + got=$(type $funcname 2>&1) + if [[ $got =~ "$funcname: not found" ]]; then + echo "## Failed $testname" + ((failed+=1)) + else + echo "ok - $testname" + ((ok+=1)) + + testname="$funcname is a shim" + if [[ ! $got =~ "IS_SHIM" ]]; then + echo "## Failed $testname" + ((failed+=1)) + else + echo "ok - $testname" + ((ok+=1)) + + testname="$funcname shim executed" + $funcname > /dev/null + got=$(type $funcname 2>&1) + if [[ $got =~ "IS_SHIM" ]]; then + echo "## Failed $testname" + ((failed+=1)) + else + echo "ok - $testname" + ((ok+=1)) + fi + fi + fi +done + +funcname=ALTEST_func1 +testname="$funcname shim reloaded" +autoload -r $funcname +got=$(type $funcname 2>&1) +if [[ ! $got =~ "IS_SHIM" ]]; then + echo "## Failed $testname" + ((failed+=1)) +else + echo "ok - $testname" + ((ok+=1)) +fi + +funcname=ALTEST_funcu +testname="$funcname shim unloaded" +autoload -u $funcname +got=$(type $funcname 2>&1) +if [[ ! $got =~ "$funcname: not found" ]]; then + echo "## Failed $testname" + ((failed+=1)) +else + echo "ok - $testname" + ((ok+=1)) +fi + +testname="autoload -p" +got=$(autoload -p | grep ALTEST) +if [[ ! $got =~ "autoload ALTEST_func1" ]] || \ + [[ ! $got =~ "autoload ALTEST_funcexport" ]] ; then +echo "## Failed $testname" + ((failed+=1)) +else + echo "ok - $testname" + ((ok+=1)) +fi + +testname="autoload -s" +echo "Executing $testname, could take a long time..." +got=$(autoload -s | grep ALTEST) +if [[ ! $got =~ "ALTEST_func1 not exported not executed" ]] || \ + [[ ! $got =~ "ALTEST_funcexport exported executed" ]] ; then + echo "## Failed $testname" + echo "## got: $got" + ((failed+=1)) +else + echo "ok - $testname" + ((ok+=1)) +fi + +testname="autoload -r -a $FPATH" +autoload -r -a $FPATH +localfailed=0 +localok=0 +for funcname in $funclist; do + got=$(type $funcname 2>&1) + if [[ $got =~ "$funcname: not found" ]]; then + echo "## Failed $testname - $funcname" + ((localfailed+=1)) + else + ((localok+=1)) + if [[ ! $got =~ "IS_SHIM" ]]; then + ((localfailed+=1)) + else + ((localok+=1)) + fi + fi +done +if ((localfailed==0)); then + echo "ok - $testname" + ((ok+=1)) +else + ((failed+=1)) +fi + +testname="autoload -u $funclist" +autoload -u $funclist +localfailed=0 +localok=0 +for funcname in $funclist; do + got=$(type $funcname 2>&1) + if [[ ! $got =~ "$funcname: not found" ]]; then + echo "## Failed $testname - $funcname" + ((localfailed+=1)) + else + ((localok+=1)) + fi +done +if ((localfailed==0)); then + echo "ok - $testname" + ((ok+=1)) +else + ((failed+=1)) +fi + +testname="autoload -r -f" +autoload -r -f +localfailed=0 +localok=0 +for funcname in $funclist; do + got=$(type $funcname 2>&1) + if [[ $got =~ "$funcname: not found" ]]; then + echo "## Failed $testname - $funcname" + ((localfailed+=1)) + else + ((localok+=1)) + if [[ ! $got =~ "IS_SHIM" ]]; then + ((localfailed+=1)) + else + ((localok+=1)) + fi + fi +done +if ((localfailed==0)); then + echo "ok - $testname" + ((ok+=1)) +else + ((failed+=1)) +fi + +echo $ok passed, $failed failed +exit $failed diff --git a/examples/loadables/Makefile.in b/examples/loadables/Makefile.in index ec305cdaf..cc3d3a7f3 100644 --- a/examples/loadables/Makefile.in +++ b/examples/loadables/Makefile.in @@ -100,10 +100,10 @@ INC = -I. -I.. -I$(topdir) -I$(topdir)/lib -I$(topdir)/builtins -I${srcdir} \ $(SHOBJ_CC) $(SHOBJ_CFLAGS) $(CCFLAGS) $(INC) -c -o $@ $< -ALLPROG = print truefalse sleep finfo logname basename dirname \ +ALLPROG = print truefalse sleep finfo logname basename dirname fdflags \ tty pathchk tee head mkdir rmdir printenv id whoami \ - uname sync push ln unlink realpath strftime mypid setpgid -OTHERPROG = necho hello cat pushd + uname sync push ln unlink realpath strftime mypid setpgid seq +OTHERPROG = necho hello cat pushd stat rm all: $(SHOBJ_STATUS) @@ -142,6 +142,15 @@ finfo: finfo.o cat: cat.o $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ cat.o $(SHOBJ_LIBS) +rm: rm.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ rm.o $(SHOBJ_LIBS) + +fdflags: fdflags.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ fdflags.o $(SHOBJ_LIBS) + +seq: seq.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ seq.o $(SHOBJ_LIBS) + logname: logname.o $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ logname.o $(SHOBJ_LIBS) @@ -202,10 +211,12 @@ strftime: strftime.o mypid: mypid.o $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ mypid.o $(SHOBJ_LIBS) - setpgid: setpgid.o $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ setpgid.o $(SHOBJ_LIBS) +stat: stat.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ stat.o $(SHOBJ_LIBS) + # pushd is a special case. We use the same source that the builtin version # uses, with special compilation options. # @@ -236,6 +247,7 @@ installdirs: install-dev: installdirs @$(INSTALL_DATA) Makefile.inc $(DESTDIR)$(loadablesdir)/Makefile.inc + @$(INSTALL_DATA) $(srcdir)/loadables.h $(DESTDIR)$(loadablesdir)/loadables.h @( cd $(BUILD_DIR) && ${MAKE} ${MFLAGS} DESTDIR="$(DESTDIR)" install-headers) install-supported: all installdirs install-dev @@ -246,7 +258,7 @@ install-supported: all installdirs install-dev done uninstall-dev: - -$(RM) $(DESTDIR)$(loadablesdir)/Makefile.inc + -$(RM) $(DESTDIR)$(loadablesdir)/Makefile.inc $(DESTDIR)$(loadablesdir)/loadables.h -( cd $(BUILD_DIR) && ${MAKE} ${MFLAGS} DESTDIR="$(DESTDIR)" uninstall-headers) uninstall-supported: uninstall-dev @@ -283,3 +295,6 @@ mkdir.o: mkdir.c realpath.o: realpath.c strftime.o: strftime.c setpgid.o: setpgid.c +stat.o: stat.c +fdflags.o: fdflags.c +seq.o: seq.c diff --git a/examples/loadables/README b/examples/loadables/README index 2eae9cc66..f9bcfac64 100644 --- a/examples/loadables/README +++ b/examples/loadables/README @@ -32,28 +32,39 @@ the canonical example. There is no real `builtin writers' programming guide'. The file template.c provides a template to use for creating new loadable builtins. +The file "Makefile.inc" is created using the same values that configure +writes into Makefile.in, and is installed in the same directory as the +rest of the example builtins. It's intended to be a start at something +that can be modified or included to help you build your own loadables +without having to search for the right CFLAGS and LDFLAGS. + basename.c Return non-directory portion of pathname. cat.c cat(1) replacement with no options - the way cat was intended. dirname.c Return directory portion of pathname. +fdflags.c Change the flag associated with one of bash's open file desriptors. finfo.c Print file info. head.c Copy first part of files. hello.c Obligatory "Hello World" / sample loadable. id.c POSIX.2 user identity. ln.c Make links. -loadables.h Start at a file loadable builtins can include for shell definitions +loadables.h File loadable builtins can include for shell definitions. logname.c Print login name of current user. Makefile.in Simple makefile for the sample loadable builtins. +Makefile.inc.in Sample makefile to use for loadable builtin development. mkdir.c Make directories. -mypid.c Add $MYPID variable, demonstrate use of unload hook function +mypid.c Add $MYPID variable, demonstrate use of unload hook functio.n necho.c echo without options or argument interpretation. pathchk.c Check pathnames for validity and portability. print.c Loadable ksh-93 style print builtin. printenv.c Minimal builtin clone of BSD printenv(1). push.c Anyone remember TOPS-20? -README README realpath.c Canonicalize pathnames, resolving symlinks. +rm.c Remove files and directories. rmdir.c Remove directory. +seq.c Print a sequence of decimal or floating point numbers. +setpgid.c Set a process's pgrp; example of how to wrap a system call. sleep.c sleep for fractions of a second. +stat.c populate an associative array with information about a file strftime.c Loadable builtin interface to strftime(3). sync.c Sync the disks by forcing pending filesystem writes to complete. tee.c Duplicate standard input. diff --git a/examples/loadables/basename.c b/examples/loadables/basename.c index 3ca184418..0734322d1 100644 --- a/examples/loadables/basename.c +++ b/examples/loadables/basename.c @@ -30,6 +30,7 @@ #include "builtins.h" #include "shell.h" #include "common.h" +#include "bashgetopt.h" int basename_builtin (list) @@ -46,6 +47,7 @@ basename_builtin (list) if (no_options (list)) return (EX_USAGE); + list = loptend; string = list->word->word; suffix = (char *)NULL; diff --git a/examples/loadables/cat.c b/examples/loadables/cat.c index 1ce2e2dc4..be99c4cd9 100644 --- a/examples/loadables/cat.c +++ b/examples/loadables/cat.c @@ -56,6 +56,7 @@ int fd; return 0; } +int cat_main (argc, argv) int argc; char **argv; @@ -88,6 +89,7 @@ char **argv; return (r); } +int cat_builtin(list) WORD_LIST *list; { diff --git a/examples/loadables/dirname.c b/examples/loadables/dirname.c index 69019cbc3..d802ca77c 100644 --- a/examples/loadables/dirname.c +++ b/examples/loadables/dirname.c @@ -30,6 +30,7 @@ #include "builtins.h" #include "shell.h" #include "common.h" +#include "bashgetopt.h" int dirname_builtin (list) @@ -38,15 +39,16 @@ dirname_builtin (list) int slen; char *string; + if (no_options (list)) + return (EX_USAGE); + list = loptend; + if (list == 0 || list->next) { builtin_usage (); return (EX_USAGE); } - if (no_options (list)) - return (EX_USAGE); - string = list->word->word; slen = strlen (string); diff --git a/examples/loadables/fdflags.c b/examples/loadables/fdflags.c new file mode 100644 index 000000000..f3094666b --- /dev/null +++ b/examples/loadables/fdflags.c @@ -0,0 +1,336 @@ +/* Loadable builtin to get and set file descriptor flags. */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 2017 Free Software Foundation, Inc. + + This file is part of GNU Bash. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif +#include +#include +#include "bashansi.h" +#include + +#include "loadables.h" + +static const struct +{ + const char *name; + int value; +} file_flags[] = +{ +#ifdef O_APPEND + { "append", O_APPEND }, +#endif +#ifdef O_ASYNC + { "async", O_ASYNC }, +#endif +#ifdef O_SYNC + { "sync", O_SYNC }, +#endif +#ifdef O_NONBLOCK + { "nonblock", O_NONBLOCK }, +#endif +#ifdef O_FSYNC + { "fsync", O_FSYNC }, +#endif +#ifdef O_DSYNC + { "dsync", O_DSYNC }, +#endif +#ifdef O_RSYNC + { "rsync", O_RSYNC }, +#endif +#ifdef O_ALT_IO + { "altio", O_ALT_IO }, +#endif +#ifdef O_DIRECT + { "direct", O_DIRECT }, +#endif +#ifdef O_NOATIME + { "noatime", O_NOATIME }, +#endif +#ifdef O_NOSIGPIPE + { "nosigpipe", O_NOSIGPIPE }, +#endif +#ifdef O_CLOEXEC + { "cloexec", O_CLOEXEC }, +#endif +}; + +#define N_FLAGS (sizeof (file_flags) / sizeof (file_flags[0])) + +#ifndef errno +extern int errno; +#endif + +/* FIX THIS */ +static int +getallflags () +{ + int i, allflags; + + for (i = allflags = 0; i < N_FLAGS; i++) + allflags |= file_flags[i].value; + return allflags; +} + +static int +getflags(int fd, int p) +{ + int c, f; + int allflags; + + if ((c = fcntl(fd, F_GETFD)) == -1) + { + if (p) + builtin_error("can't get status for fd %d: %s", fd, strerror(errno)); + return -1; + } + + if ((f = fcntl(fd, F_GETFL)) == -1) + { + if (p) + builtin_error("Can't get flags for fd %d: %s", fd, strerror(errno)); + return -1; + } + + if (c) + f |= O_CLOEXEC; + + return f & getallflags(); +} + +static void +printone(int fd, int p, int verbose) +{ + int f; + size_t i; + + if ((f = getflags(fd, p)) == -1) + return; + + printf ("%d:", fd); + + for (i = 0; i < N_FLAGS; i++) + { + if (f & file_flags[i].value) + { + printf ("%s%s", verbose ? "+" : "", file_flags[i].name); + f &= ~file_flags[i].value; + } + else if (verbose) + printf ( "-%s", file_flags[i].name); + else + continue; + + if (f || (verbose && i != N_FLAGS - 1)) + putchar (','); + } + printf ("\n"); +} + +static int +parseflags(char *s, int *p, int *n) +{ + int f, *v; + size_t i; + + f = 0; + *p = *n = 0; + + for (s = strtok(s, ","); s; s = strtok(NULL, ",")) + { + switch (*s) + { + case '+': + v = p; + s++; + break; + case '-': + v = n; + s++; + break; + default: + v = &f; + break; + } + + for (i = 0; i < N_FLAGS; i++) + if (strcmp(s, file_flags[i].name) == 0) + { + *v |= file_flags[i].value; + break; + } + if (i == N_FLAGS) + builtin_error("invalid flag `%s'", s); + } + + return f; +} + +static void +setone(int fd, char *v, int verbose) +{ + int f, n, pos, neg, cloexec; + + f = getflags(fd, 1); + if (f == -1) + return; + + parseflags(v, &pos, &neg); + + cloexec = -1; + if ((pos & O_CLOEXEC) && (f & O_CLOEXEC) == 0) + cloexec = FD_CLOEXEC; + if ((neg & O_CLOEXEC) && (f & O_CLOEXEC)) + cloexec = 0; + if (cloexec != -1 && fcntl(fd, F_SETFD, cloexec) == -1) + builtin_error("can't set status for fd %d: %s", fd, strerror(errno)); + + pos &= ~O_CLOEXEC; + neg &= ~O_CLOEXEC; + f &= ~O_CLOEXEC; + + n = f; + n |= pos; + n &= ~neg; + + if (n != f && fcntl(fd, F_SETFL, n) == -1) + builtin_error("can't set flags for fd %d: %s", fd, strerror(errno)); +} + +static int +getmaxfd () +{ + int maxfd, ignore; + +#ifdef F_MAXFD + maxfd = fcntl (0, F_MAXFD); + if (maxfd > 0) + return maxfd; +#endif + + maxfd = getdtablesize (); + if (maxfd <= 0) + maxfd = HIGH_FD_MAX; + for (maxfd--; maxfd > 0; maxfd--) + if (fcntl (maxfd, F_GETFD, &ignore) != -1) + break; + + return maxfd; +} + +int +fdflags_builtin (WORD_LIST *list) +{ + int opt, maxfd, i, num, verbose, setflag; + char *setspec; + WORD_LIST *l; + intmax_t inum; + + setflag = verbose = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "s:v")) != -1) + { + switch (opt) + { + case 's': + setflag = 1; + setspec = list_optarg; + break; + case 'v': + verbose = 1; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + + } + list = loptend; + + /* Maybe we could provide some default here, but we don't yet. */ + if (list == 0 && setflag) + return (EXECUTION_SUCCESS); + + if (list == 0) + { + maxfd = getmaxfd (); + if (maxfd < 0) + { + builtin_error ("can't get max fd: %s", strerror (errno)); + return (EXECUTION_FAILURE); + } + for (i = 0; i < maxfd; i++) + printone (i, 0, verbose); + return (EXECUTION_SUCCESS); + } + + opt = EXECUTION_SUCCESS; + for (l = list; l; l = l->next) + { + if (legal_number (l->word->word, &inum) == 0 || inum < 0) + { + builtin_error ("%s: invalid file descriptor", l->word->word); + opt = EXECUTION_FAILURE; + continue; + } + num = inum; /* truncate to int */ + if (setflag) + setone (num, setspec, verbose); + else + printone (num, 1, verbose); + } + + return (opt); +} + +char *fdflags_doc[] = +{ + "Display and modify file descriptor flags.", + "", + "Display or, if the -s option is supplied, set flags for each file", + "descriptor supplied as an argument. If the -v option is supplied,", + "the display is verbose, including each settable option name in the", + "form of a string such as that accepted by the -s option.", + "", + "The -s option accepts a string with a list of flag names, each preceded", + "by a `+' (set) or `-' (unset). Those changes are applied to each file", + "descriptor supplied as an argument.", + "", + "If no file descriptor arguments are supplied, the displayed information", + "consists of the status of flags for each of the shell's open files.", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. The flags must include BUILTIN_ENABLED so the + builtin can be used. */ +struct builtin fdflags_struct = { + "fdflags", /* builtin name */ + fdflags_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + fdflags_doc, /* array of long documentation strings. */ + "fdflags [-v] [-s flags_string] [fd ...]", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/examples/loadables/finfo.c b/examples/loadables/finfo.c index 00833f680..4273aa595 100644 --- a/examples/loadables/finfo.c +++ b/examples/loadables/finfo.c @@ -336,9 +336,9 @@ int flags; } else if (flags & OPT_DEV) printf("%d\n", st->st_dev); else if (flags & OPT_INO) - printf("%d\n", st->st_ino); + printf("%lu\n", (unsigned long)st->st_ino); else if (flags & OPT_FID) - printf("%d:%ld\n", st->st_dev, st->st_ino); + printf("%d:%lu\n", st->st_dev, (unsigned long)st->st_ino); else if (flags & OPT_NLINK) printf("%d\n", st->st_nlink); else if (flags & OPT_LNKNAM) { diff --git a/examples/loadables/head.c b/examples/loadables/head.c index 748bb83ed..1edca6c55 100644 --- a/examples/loadables/head.c +++ b/examples/loadables/head.c @@ -117,6 +117,7 @@ head_builtin (list) return (EX_USAGE); } break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/id.c b/examples/loadables/id.c index 877334941..f857b5475 100644 --- a/examples/loadables/id.c +++ b/examples/loadables/id.c @@ -91,6 +91,7 @@ id_builtin (list) case 'n': id_flags |= ID_USENAME; break; case 'r': id_flags |= ID_USEREAL; break; case 'u': id_flags |= ID_USERONLY; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/ln.c b/examples/loadables/ln.c index a853bc995..93764a35e 100644 --- a/examples/loadables/ln.c +++ b/examples/loadables/ln.c @@ -76,6 +76,7 @@ ln_builtin (list) case 'n': flags |= LN_NOFOLLOW; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/mkdir.c b/examples/loadables/mkdir.c index 39ae07f9a..b38111994 100644 --- a/examples/loadables/mkdir.c +++ b/examples/loadables/mkdir.c @@ -52,12 +52,12 @@ int mkdir_builtin (list) WORD_LIST *list; { - int opt, pflag, omode, rval, nmode, parent_mode; + int opt, pflag, mflag, omode, rval, nmode, parent_mode; char *mode; WORD_LIST *l; reset_internal_getopt (); - pflag = 0; + pflag = mflag = 0; mode = (char *)NULL; while ((opt = internal_getopt(list, "m:p")) != -1) switch (opt) @@ -66,8 +66,10 @@ mkdir_builtin (list) pflag = 1; break; case 'm': + mflag = 1; mode = list_optarg; break; + CASE_HELPOPT; default: builtin_usage(); return (EX_USAGE); @@ -114,7 +116,7 @@ mkdir_builtin (list) for (rval = EXECUTION_SUCCESS, l = list; l; l = l->next) { - if (pflag && make_path (l->word->word, nmode, parent_mode)) + if (pflag && make_path (l->word->word, mflag, nmode, parent_mode)) { rval = EXECUTION_FAILURE; continue; @@ -132,8 +134,9 @@ mkdir_builtin (list) this changes the process's umask; make sure that all paths leading to a return reset it to ORIGINAL_UMASK */ static int -make_path (path, nmode, parent_mode) +make_path (path, user_mode, nmode, parent_mode) char *path; + int user_mode; int nmode, parent_mode; { int oumask; @@ -148,7 +151,7 @@ make_path (path, nmode, parent_mode) return 1; } - if (chmod (path, nmode)) + if (user_mode && chmod (path, nmode)) { builtin_error ("%s: %s", path, strerror (errno)); return 1; @@ -172,13 +175,20 @@ make_path (path, nmode, parent_mode) *p = '\0'; if (stat (npath, &sb) != 0) { - if (mkdir (npath, parent_mode)) + if (mkdir (npath, 0)) { builtin_error ("cannot create directory `%s': %s", npath, strerror (errno)); umask (original_umask); free (npath); return 1; } + if (chmod (npath, parent_mode) != 0) + { + builtin_error ("cannot chmod directory `%s': %s", npath, strerror (errno)); + umask (original_umask); + free (npath); + return 1; + } } else if (S_ISDIR (sb.st_mode) == 0) { diff --git a/examples/loadables/necho.c b/examples/loadables/necho.c index ee65f184c..dd2092b07 100644 --- a/examples/loadables/necho.c +++ b/examples/loadables/necho.c @@ -38,7 +38,7 @@ WORD_LIST *list; char *necho_doc[] = { "Display arguments.", "", - "Print the arguments to the standard ouput separated", + "Print the arguments to the standard output separated", "by space characters and terminated with a newline.", (char *)NULL }; diff --git a/examples/loadables/pathchk.c b/examples/loadables/pathchk.c index 85e8a04c7..c1151db42 100644 --- a/examples/loadables/pathchk.c +++ b/examples/loadables/pathchk.c @@ -112,6 +112,7 @@ pathchk_builtin (list) case 'p': pflag = 1; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -135,7 +136,7 @@ char *pathchk_doc[] = { "Check pathnames for validity.", "", "Check each pathname argument for validity (i.e., it may be used to", - "create or access a file without casuing syntax errors) and portability", + "create or access a file without causing syntax errors) and portability", "(i.e., no filename truncation will result). If the `-p' option is", "supplied, more extensive portability checks are performed.", (char *)NULL diff --git a/examples/loadables/print.c b/examples/loadables/print.c index e17597b3b..0120dbf41 100644 --- a/examples/loadables/print.c +++ b/examples/loadables/print.c @@ -122,6 +122,7 @@ print_builtin (list) case 'f': pfmt = list_optarg; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/printenv.c b/examples/loadables/printenv.c index 8d3a05df4..8c7f72019 100644 --- a/examples/loadables/printenv.c +++ b/examples/loadables/printenv.c @@ -46,6 +46,7 @@ printenv_builtin (list) { switch (opt) { + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/push.c b/examples/loadables/push.c index b07607338..9bcd5c324 100644 --- a/examples/loadables/push.c +++ b/examples/loadables/push.c @@ -51,6 +51,7 @@ push_builtin (list) { switch (opt) { + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/realpath.c b/examples/loadables/realpath.c index b19b87fb6..9892ddb8b 100644 --- a/examples/loadables/realpath.c +++ b/examples/loadables/realpath.c @@ -86,15 +86,19 @@ WORD_LIST *list; case 'v': vflag = 1; break; + CASE_HELPOPT; default: builtin_usage(); + return (EX_USAGE); } } list = loptend; - if (list == 0) + if (list == 0) { builtin_usage(); + return (EX_USAGE); + } for (es = EXECUTION_SUCCESS; list; list = list->next) { p = list->word->word; diff --git a/examples/loadables/rm.c b/examples/loadables/rm.c new file mode 100644 index 000000000..adfbffdc3 --- /dev/null +++ b/examples/loadables/rm.c @@ -0,0 +1,177 @@ +/* rm - remove files and directories with -r */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 2016 Free Software Foundation, Inc. + + This file is part of GNU Bash. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include +#include +#include +#include "builtins.h" +#include "shell.h" +#include "common.h" +#include "bashgetopt.h" + +#if !defined (errno) +extern int errno; +#endif + +static int rm_file(const char *fname); + +static int force, recursive; + +static int +_remove_directory(const char *dirname) +{ + DIR *dir; + struct dirent *dp; + size_t dirlen; + int err; + + dirlen = strlen (dirname); + err = 0; + + if ((dir = opendir(dirname))) + { + while ((dp = readdir(dir))) + { +#ifdef __GNUC__ + char fname[dirlen + 1 + strlen (dp->d_name) + 1]; +#else + char *fname; + int fnsize; +#endif + + if (*dp->d_name == '.' && (dp->d_name[1] == 0 || (dp->d_name[1] == '.' && dp->d_name[2] == 0))) + continue; + +#ifdef __GNUC__ + snprintf(fname, sizeof (fname), "%s/%s", dirname, dp->d_name); +#else + fnsize = dirlen + 1 + strlen (dp->d_name) + 1; + fname = xmalloc (fnsize); + snprintf(fname, fnsize, "%s/%s", dirname, dp->d_name); +#endif + + if (rm_file (fname) && force == 0) + err = 1; +#ifndef __GNUC__ + free (fname); +#endif + } + + closedir(dir); + + if (err == 0 && rmdir (dirname) && force == 0) + err = 1; + } + else if (force == 0) + err = 1; + + if (err) + builtin_error ("%s: %s", dirname, strerror (errno)); + + return err; +} + +static int +rm_file(const char *fname) +{ + if (unlink (fname) == 0) + return 0; + + /* If FNAME is a directory glibc returns EISDIR but correct POSIX value + would be EPERM. If we get that error and FNAME is a directory and -r + was supplied, recursively remove the directory and its contents */ + if ((errno == EISDIR || errno == EPERM) && recursive && file_isdir (fname)) + return _remove_directory(fname); + else if (force) + return 0; + + builtin_error ("%s: %s", fname, strerror (errno)); + return 1; +} + +int +rm_builtin (list) + WORD_LIST *list; +{ + const char *name; + WORD_LIST *l; + int rval, opt; + + recursive = force = 0; + rval = EXECUTION_SUCCESS; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "Rrfi")) != -1) + { + switch (opt) + { + case 'R': + case 'r': + recursive = 1; + break; + case 'f': + force = 1; + break; + case 'i': + return (EX_DISKFALLBACK); + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (list == 0) + { + builtin_usage (); + return (EXECUTION_FAILURE); + } + + for (l = list; l; l = l->next) + { + if (rm_file(l->word->word) && force == 0) + rval = EXECUTION_FAILURE; + } + + return rval; +} + +char *rm_doc[] = { + "Remove files.", + "", + "rm removes the files specified as arguments.", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. */ +struct builtin rm_struct = { + "rm", /* builtin name */ + rm_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + rm_doc, /* array of long documentation strings. */ + "rm [-rf] file ...", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/examples/loadables/seq.c b/examples/loadables/seq.c new file mode 100644 index 000000000..d8f3e0a02 --- /dev/null +++ b/examples/loadables/seq.c @@ -0,0 +1,490 @@ +/* seq - print sequence of numbers to standard output. + Copyright (C) 2018 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written as bash builtin by Chet Ramey. Portions from seq.c by Ulrich Drepper. */ + +#include + +#include + +#ifdef HAVE_UNISTD_H +# include +#endif + +#include +#include + +#include "bashansi.h" +#include "loadables.h" +#include "bashintl.h" + +#ifndef errno +extern int errno; +#endif + +#if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD && !defined(STRTOLD_BROKEN) +typedef long double floatmax_t; +# define FLOATMAX_CONV "L" +# define strtofltmax strtold +# define FLOATMAX_FMT "%Lg" +# define FLOATMAX_WFMT "%0.Lf" +# define USE_LONG_DOUBLE +#else +typedef double floatmax_t; +# define FLOATMAX_CONV "" +# define strtofltmax strtod +# define FLOATMAX_FMT "%g" +# define FLOATMAX_WFMT "%0.f" +#endif +static floatmax_t getfloatmax __P((const char *)); +static char *genformat __P((floatmax_t, floatmax_t, floatmax_t)); + +#define MAX(a, b) (((a) < (b))? (b) : (a)) + +static int conversion_error = 0; + +/* If true print all number with equal width. */ +static int equal_width; + +/* The string used to separate two numbers. */ +static char const *separator; + +/* The string output after all numbers have been output. */ +static char const terminator[] = "\n"; + +static char decimal_point; + +/* Pretty much the same as the version in builtins/printf.def */ +static floatmax_t +getfloatmax (arg) + const char *arg; +{ + floatmax_t ret; + char *ep; + + errno = 0; + ret = strtofltmax (arg, &ep); + + if (*ep) + { + sh_invalidnum ((char *)arg); + conversion_error = 1; + } + else if (errno == ERANGE) + { + builtin_error ("warning: %s: %s", arg, strerror(ERANGE)); + conversion_error = 1; + } + + if (ret == -0.0) + ret = 0.0; + + return (ret); +} + +/* If FORMAT is a valid printf format for a double argument, return + its long double equivalent, allocated from dynamic storage. This + was written by Ulrich Drepper, taken from coreutils:seq.c */ +static char * +long_double_format (char const *fmt) +{ + size_t i; + size_t length_modifier_offset; + int has_L; + + for (i = 0; ! (fmt[i] == '%' && fmt[i + 1] != '%'); i += (fmt[i] == '%') + 1) + { + if (!fmt[i]) + { + builtin_error ("format %s has no %% directive", fmt); + return 0; + } + } + + i++; + i += strspn (fmt + i, "-+#0 '"); /* zero or more flags */ + i += strspn (fmt + i, "0123456789"); /* optional minimum field width */ + if (fmt[i] == '.') /* optional precision */ + { + i++; + i += strspn (fmt + i, "0123456789"); + } + + length_modifier_offset = i; /* optional length modifier */ + /* we could ignore an 'l' length modifier here */ + has_L = (fmt[i] == 'L'); + i += has_L; + switch (fmt[i]) + { + case '\0': + builtin_error ("format %s ends in %%", fmt); + return 0; + case 'A': + case 'a': + case 'e': + case 'E': + case 'f': + case 'F': + case 'g': + case 'G': + break; + default: + builtin_error ("format %s has unknown `%%%c' directive", fmt, fmt[i]); + return 0; + } + for (i++; ; i += (fmt[i] == '%') + 1) + if (fmt[i] == '%' && fmt[i + 1] != '%') + { + builtin_error ("format %s has too many %% directives", fmt); + return 0; + } + else if (fmt[i] == 0) + { + size_t format_size = i + 1; + char *ldfmt = xmalloc (format_size + 1); + memcpy (ldfmt, fmt, length_modifier_offset); +#ifdef USE_LONG_DOUBLE + ldfmt[length_modifier_offset] = 'L'; + strcpy (ldfmt + length_modifier_offset + 1, + fmt + length_modifier_offset + has_L); +#else + strcpy (ldfmt + length_modifier_offset, fmt + length_modifier_offset); +#endif + return ldfmt; + } +} + +/* Return the number of digits following the decimal point in NUMBUF */ +static int +getprec (numbuf) + const char *numbuf; +{ + int p; + char *dp; + + if (dp = strchr (numbuf, decimal_point)) + dp++; /* skip over decimal point */ + for (p = 0; dp && *dp && ISDIGIT (*dp); dp++) + p++; + return p; +} + +/* Return the default format given FIRST, INCR, and LAST. */ +static char * +genformat (first, incr, last) + floatmax_t first, incr, last; +{ + static char buf[6 + 2 * INT_STRLEN_BOUND (int)]; + int wfirst, wlast, width; + int iprec, fprec, lprec, prec; + + if (equal_width == 0) + return (FLOATMAX_FMT); + + /* OK, we have to figure out the largest number of decimal places. This is + a little more expensive than using the original strings. */ + snprintf (buf, sizeof (buf), FLOATMAX_FMT, incr); + iprec = getprec (buf); + + wfirst = snprintf (buf, sizeof (buf), FLOATMAX_FMT, first); + fprec = getprec (buf); + + prec = MAX (fprec, iprec); + + wlast = snprintf (buf, sizeof (buf), FLOATMAX_FMT, last); + lprec = getprec (buf); + + /* increase first width by any increased precision in increment */ + wfirst += (prec - fprec); + + /* adjust last width to use precision from first/incr */ + wlast += (prec - lprec); + + if (lprec && prec == 0) + wlast--; /* no decimal point */ + if (lprec == 0 && prec) + wlast++; /* include decimal point */ + if (fprec == 0 && prec) + wfirst++; /* include decimal point */ + + width = MAX (wfirst, wlast); + if (width) + sprintf (buf, "%%0%d.%d%sf", width, prec, FLOATMAX_CONV); + else + sprintf (buf, "%%.%d%sf", prec, FLOATMAX_CONV); + + return buf; +} + +int +print_fltseq (fmt, first, last, incr) + const char *fmt; + floatmax_t first, last, incr; +{ + int n; + floatmax_t next; + const char *s; + + n = 0; /* interation counter */ + s = ""; + for (next = first; incr >= 0 ? (next <= last) : (next >= last); next = first + n * incr) + { + QUIT; + if (*s && fputs (s, stdout) == EOF) + return (sh_chkwrite (EXECUTION_FAILURE)); + if (printf (fmt, next) < 0) + return (sh_chkwrite (EXECUTION_FAILURE)); + s = separator; + n++; + } + + if (n > 0 && fputs (terminator, stdout) == EOF) + return (sh_chkwrite (EXECUTION_FAILURE)); + return (sh_chkwrite (EXECUTION_SUCCESS)); +} + +/* must be <= INT_STRLEN_BOUND(intmax_t) */ +int +width_needed (num) + intmax_t num; +{ + int ret; + + ret = num < 0; /* sign */ + if (ret) + num = -num; + do + ret++; + while (num /= 10); + return ret; +} + +int +print_intseq (ifirst, ilast, iincr) + intmax_t ifirst, ilast, iincr; +{ + char intwfmt[6 + INT_STRLEN_BOUND(int) + sizeof (PRIdMAX)]; + const char *s; + intmax_t i, next; + + /* compute integer format string */ + if (equal_width) /* -w supplied */ + { + int wfirst, wlast, width; + + wfirst = width_needed (ifirst); + wlast = width_needed (ilast); + width = MAX(wfirst, wlast); + + /* The leading %s is for the separator */ + snprintf (intwfmt, sizeof (intwfmt), "%%s%%0%u" PRIdMAX, width); + } + + /* We could use braces.c:mkseq here but that allocates lots of memory */ + s = ""; + for (i = ifirst; (ifirst <= ilast) ? (i <= ilast) : (i >= ilast); i = next) + { + QUIT; + /* The leading %s is for the separator */ + if (printf (equal_width ? intwfmt : "%s%" PRIdMAX, s, i) < 0) + return (sh_chkwrite (EXECUTION_FAILURE)); + s = separator; + next = i + iincr; + } + + if (fputs (terminator, stdout) == EOF) + return (sh_chkwrite (EXECUTION_FAILURE)); + return (sh_chkwrite (EXECUTION_SUCCESS)); +} + +int +seq_builtin (list) + WORD_LIST *list; +{ + floatmax_t first, last, incr; + intmax_t ifirst, ilast, iincr; + WORD_LIST *l; + int opt, nargs, intseq, freefmt; + char *first_str, *incr_str, *last_str; + char const *fmtstr; /* The printf(3) format used for output. */ + + equal_width = 0; + separator = "\n"; + fmtstr = NULL; + + first = 1.0; + last = 0.0; + incr = 0.0; /* set later */ + ifirst = ilast = iincr = 0; + first_str = incr_str = last_str = 0; + + intseq = freefmt = 0; + opt = 0; + + reset_internal_getopt (); + while (opt != -1) + { + l = lcurrent ? lcurrent : list; + if (l && l->word && l->word->word && l->word->word[0] == '-' && + (l->word->word[1] == '.' || DIGIT (l->word->word[1]))) + { + loptend = l; + break; /* negative number */ + } + if ((opt = internal_getopt (list, "f:s:w")) == -1) + break; + + switch (opt) + { + case 'f': + fmtstr = list_optarg; + break; + case 's': + separator = list_optarg; + break; + case 'w': + equal_width = 1; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (list == 0) + { + builtin_usage (); + return (EXECUTION_FAILURE); + } + + for (nargs = 1, l = list; l->next; l = l->next) + nargs++; + if (nargs > 3) + { + builtin_usage (); + return (EXECUTION_FAILURE); + } + + /* LAST */ + conversion_error = 0; + last = getfloatmax (last_str = l->word->word); + if (conversion_error) + return (EXECUTION_FAILURE); + + /* FIRST LAST */ + if (nargs > 1) + { + conversion_error = 0; + first = getfloatmax (first_str = list->word->word); + if (conversion_error) + return (EXECUTION_FAILURE); + } + + /* FIRST INCR LAST */ + if (nargs > 2) + { + conversion_error = 0; + incr = getfloatmax (incr_str = list->next->word->word); + if (conversion_error) + return (EXECUTION_FAILURE); + if (incr == 0.0) + { + builtin_error ("zero %screment", (first < last) ? "in" : "de"); + return (EXECUTION_FAILURE); + } + } + + /* Sanitize arguments */ + if (incr == 0.0) + incr = (first <= last) ? 1.0 : -1.0; + if ((incr < 0.0 && first < last) || (incr > 0 && first > last)) + { + builtin_error ("incorrect %screment", (first < last) ? "in" : "de"); + return (EXECUTION_FAILURE); + } + + /* validate format here */ + if (fmtstr) + { + fmtstr = long_double_format (fmtstr); + freefmt = 1; + if (fmtstr == 0) + return (EXECUTION_FAILURE); + } + + if (fmtstr != NULL && equal_width) + { + builtin_warning ("-w ignored when the format string is specified"); + equal_width = 0; + } + + /* Placeholder for later additional conditions */ + if (last_str && all_digits (last_str) && + (first_str == 0 || all_digits (first_str)) && + (incr_str == 0 || all_digits (incr_str)) && + fmtstr == NULL) + intseq = 1; + + if (intseq) + { + ifirst = (intmax_t)first; /* truncation */ + ilast = (intmax_t)last; + iincr = (intmax_t)incr; + + return (print_intseq (ifirst, ilast, iincr)); + } + + decimal_point = locale_decpoint (); + if (fmtstr == NULL) + fmtstr = genformat (first, incr, last); + + print_fltseq (fmtstr, first, last, incr); + + if (freefmt) + free ((void *)fmtstr); + return sh_chkwrite (EXECUTION_SUCCESS); +} + +/* Taken largely from GNU seq. */ +char *seq_doc[] = { + "Print numbers from FIRST to LAST, in steps of INCREMENT.", + "", + "-f FORMAT use printf style floating-point FORMAT", + "-s STRING use STRING to separate numbers (default: \\n)", + "-w equalize width by padding with leading zeroes", + "", + "If FIRST or INCREMENT is omitted, it defaults to 1. However, an", + "omitted INCREMENT defaults to -1 when LAST is smaller than FIRST.", + "The sequence of numbers ends when the sum of the current number and", + "INCREMENT would become greater than LAST.", + "FIRST, INCREMENT, and LAST are interpreted as floating point values.", + "", + "FORMAT must be suitable for printing one argument of type 'double';", + "it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point", + "decimal numbers with maximum precision PREC, and to %g otherwise.", + (char *)NULL +}; + +struct builtin seq_struct = { + "seq", + seq_builtin, + BUILTIN_ENABLED, + seq_doc, + "seq [-f format] [-s separator] [-w] [FIRST [INCR]] LAST", + 0 +}; 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/examples/loadables/stat.c b/examples/loadables/stat.c new file mode 100644 index 000000000..52b9580fb --- /dev/null +++ b/examples/loadables/stat.c @@ -0,0 +1,430 @@ +/* stat - load up an associative array with stat information about a file */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 2016 Free Software Foundation, Inc. + + This file is part of GNU Bash. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#include +#include "posixstat.h" +#include +#include +#include +#include +#include "posixtime.h" + +#include "bashansi.h" +#include "shell.h" +#include "builtins.h" +#include "common.h" +#include "bashgetopt.h" + +#ifndef errno +extern int errno; +#endif + +#define ST_NAME 0 +#define ST_DEV 1 +#define ST_INO 2 +#define ST_MODE 3 +#define ST_NLINK 4 +#define ST_UID 5 +#define ST_GID 6 +#define ST_RDEV 7 +#define ST_SIZE 8 +#define ST_ATIME 9 +#define ST_MTIME 10 +#define ST_CTIME 11 +#define ST_BLKSIZE 12 +#define ST_BLOCKS 13 +#define ST_CHASELINK 14 +#define ST_PERMS 15 + +#define ST_END 16 + +static char *arraysubs[] = + { + "name", "device", "inode", "type", "nlink", "uid", "gid", "rdev", + "size", "atime", "mtime", "ctime", "blksize", "blocks", "link", "perms", + 0 + }; + +static int +getstat (fname, flags, sp) + const char *fname; + int flags; + struct stat *sp; +{ + intmax_t lfd; + int fd, r; + + if (strncmp (fname, "/dev/fd/", 8) == 0) + { + if ((legal_number(fname + 8, &lfd) == 0) || (int)lfd != lfd) + { + errno = EINVAL; + return -1; + } + fd = lfd; + r = fstat(fd, sp); + } +#ifdef HAVE_LSTAT + else if (flags & 1) + r = lstat(fname, sp); +#endif + else + r = stat(fname, sp); + + return r; +} + +static char * +statlink (fname, sp) + char *fname; + struct stat *sp; +{ +#if defined (HAVE_READLINK) + char linkbuf[PATH_MAX]; + int n; + + if (fname && S_ISLNK (sp->st_mode) && (n = readlink (fname, linkbuf, PATH_MAX)) > 0) + { + linkbuf[n] = '\0'; + return (savestring (linkbuf)); + } + else +#endif + return (savestring (fname)); +} + +static char * +octalperms (m) + int m; +{ + int operms; + char *ret; + + operms = 0; + + if (m & S_IRUSR) + operms |= 0400; + if (m & S_IWUSR) + operms |= 0200; + if (m & S_IXUSR) + operms |= 0100; + + if (m & S_IRGRP) + operms |= 0040; + if (m & S_IWGRP) + operms |= 0020; + if (m & S_IXGRP) + operms |= 0010; + + if (m & S_IROTH) + operms |= 0004; + if (m & S_IWOTH) + operms |= 0002; + if (m & S_IXOTH) + operms |= 0001; + + if (m & S_ISUID) + operms |= 04000; + if (m & S_ISGID) + operms |= 02000; + if (m & S_ISVTX) + operms |= 01000; + + ret = (char *)xmalloc (16); + snprintf (ret, 16, "%04o", operms); + return ret; +} + +static char * +statperms (m) + int m; +{ + char ubits[4], gbits[4], obits[4]; /* u=rwx,g=rwx,o=rwx */ + int i; + char *ret; + + i = 0; + if (m & S_IRUSR) + ubits[i++] = 'r'; + if (m & S_IWUSR) + ubits[i++] = 'w'; + if (m & S_IXUSR) + ubits[i++] = 'x'; + ubits[i] = '\0'; + + i = 0; + if (m & S_IRGRP) + gbits[i++] = 'r'; + if (m & S_IWGRP) + gbits[i++] = 'w'; + if (m & S_IXGRP) + gbits[i++] = 'x'; + gbits[i] = '\0'; + + i = 0; + if (m & S_IROTH) + obits[i++] = 'r'; + if (m & S_IWOTH) + obits[i++] = 'w'; + if (m & S_IXOTH) + obits[i++] = 'x'; + obits[i] = '\0'; + + if (m & S_ISUID) + ubits[2] = (m & S_IXUSR) ? 's' : 'S'; + if (m & S_ISGID) + gbits[2] = (m & S_IXGRP) ? 's' : 'S'; + if (m & S_ISVTX) + obits[2] = (m & S_IXOTH) ? 't' : 'T'; + + ret = (char *)xmalloc (32); + snprintf (ret, 32, "u=%s,g=%s,o=%s", ubits, gbits, obits); + return ret; +} + +static char * +statmode(mode) + int mode; +{ + char *modestr, *m; + + modestr = m = (char *)xmalloc (8); + if (S_ISBLK (mode)) + *m++ = 'b'; + if (S_ISCHR (mode)) + *m++ = 'c'; + if (S_ISDIR (mode)) + *m++ = 'd'; + if (S_ISREG(mode)) + *m++ = '-'; + if (S_ISFIFO(mode)) + *m++ = 'p'; + if (S_ISLNK(mode)) + *m++ = 'l'; + if (S_ISSOCK(mode)) + *m++ = 's'; + +#ifdef S_ISDOOR + if (S_ISDOOR (mode)) + *m++ = 'D'; +#endif +#ifdef S_ISWHT + if (S_ISWHT(mode)) + *m++ = 'W'; +#endif +#ifdef S_ISNWK + if (S_ISNWK(mode)) + *m++ = 'n'; +#endif +#ifdef S_ISMPC + if (S_ISMPC (mode)) + *m++ = 'm'; +#endif + + *m = '\0'; + return (modestr); +} + +static char * +stattime (t) + time_t t; +{ + char *tbuf, *ret; + size_t tlen; + + tbuf = ctime (&t); + tlen = strlen (tbuf); + ret = savestring (tbuf); + ret[tlen-1] = '\0'; + return ret; +} + +static char * +statval (which, fname, flags, sp) + int which; + char *fname; + int flags; + struct stat *sp; +{ + int temp; + + switch (which) + { + case ST_NAME: + return savestring (fname); + case ST_DEV: + return itos (sp->st_dev); + case ST_INO: + return itos (sp->st_ino); + case ST_MODE: + return (statmode (sp->st_mode)); + case ST_NLINK: + return itos (sp->st_nlink); + case ST_UID: + return itos (sp->st_uid); + case ST_GID: + return itos (sp->st_gid); + case ST_RDEV: + return itos (sp->st_rdev); + case ST_SIZE: + return itos (sp->st_size); + case ST_ATIME: + return ((flags & 2) ? stattime (sp->st_atime) : itos (sp->st_atime)); + case ST_MTIME: + return ((flags & 2) ? stattime (sp->st_mtime) : itos (sp->st_mtime)); + case ST_CTIME: + return ((flags & 2) ? stattime (sp->st_ctime) : itos (sp->st_ctime)); + case ST_BLKSIZE: + return itos (sp->st_blksize); + case ST_BLOCKS: + return itos (sp->st_blocks); + case ST_CHASELINK: + return (statlink (fname, sp)); + case ST_PERMS: + temp = sp->st_mode & (S_IRWXU|S_IRWXG|S_IRWXO|S_ISUID|S_ISGID); + return (flags & 2) ? statperms (temp) : octalperms (temp); + default: + return savestring ("42"); + } +} + +static int +loadstat (vname, var, fname, flags, sp) + char *vname; + SHELL_VAR *var; + char *fname; + int flags; + struct stat *sp; +{ + int i; + char *key, *value; + SHELL_VAR *v; + + for (i = 0; arraysubs[i]; i++) + { + key = savestring (arraysubs[i]); + value = statval (i, fname, flags, sp); + v = bind_assoc_variable (var, vname, key, value, ASS_FORCE); + } + return 0; +} + +int +stat_builtin (list) + WORD_LIST *list; +{ + int opt, flags; + char *aname, *fname; + struct stat st; + SHELL_VAR *v; + + aname = "STAT"; + flags = 0; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "A:Ll")) != -1) + { + switch (opt) + { + case 'A': + aname = list_optarg; + break; + case 'L': + flags |= 1; /* operate on links rather than resolving them */ + break; + case 'l': + flags |= 2; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + + list = loptend; + if (list == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + fname = list->word->word; + + if (getstat (fname, flags, &st) < 0) + { + builtin_error ("%s: cannot stat: %s", fname, strerror (errno)); + return (EXECUTION_FAILURE); + } + + unbind_variable (aname); + v = make_new_assoc_variable (aname); + if (v == 0) + { + builtin_error ("%s: cannot create variable", aname); + return (EXECUTION_FAILURE); + } + if (loadstat (aname, v, fname, flags, &st) < 0) + { + builtin_error ("%s: cannot assign file status information", aname); + unbind_variable (aname); + return (EXECUTION_FAILURE); + } + + return (EXECUTION_SUCCESS); +} + +/* An array of strings forming the `long' documentation for a builtin xxx, + which is printed by `help xxx'. It must end with a NULL. By convention, + the first line is a short description. */ +char *stat_doc[] = { + "Load an associative array with file status information.", + "", + "Take a filename and load the status information returned by a", + "stat(2) call on that file into the associative array specified", + "by the -A option. The default array name is STAT. If the -L", + "option is supplied, stat does not resolve symbolic links and", + "reports information about the link itself. The -l option results", + "in longer-form listings for some of the fields. The exit status is 0", + "unless the stat fails or assigning the array is unsuccessful.", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. The flags must include BUILTIN_ENABLED so the + builtin can be used. */ +struct builtin stat_struct = { + "stat", /* builtin name */ + stat_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + stat_doc, /* array of long documentation strings. */ + "stat [-lL] [-A aname] file", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/examples/loadables/tee.c b/examples/loadables/tee.c index 9462cda04..819d83aef 100644 --- a/examples/loadables/tee.c +++ b/examples/loadables/tee.c @@ -84,6 +84,7 @@ tee_builtin (list) case 'i': nointr = 1; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/template.c b/examples/loadables/template.c index 8cfd571d7..094b80ce9 100644 --- a/examples/loadables/template.c +++ b/examples/loadables/template.c @@ -31,6 +31,7 @@ template_builtin (list) { switch (opt) { + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/tty.c b/examples/loadables/tty.c index 1adc5b599..febf518ba 100644 --- a/examples/loadables/tty.c +++ b/examples/loadables/tty.c @@ -46,6 +46,7 @@ tty_builtin (list) case 's': sflag = 1; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/uname.c b/examples/loadables/uname.c index 339ec3dde..106a1c8db 100644 --- a/examples/loadables/uname.c +++ b/examples/loadables/uname.c @@ -95,6 +95,7 @@ uname_builtin (list) case 'v': uname_flags |= FLAG_VERSION; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/whoami.c b/examples/loadables/whoami.c index 5aa73828d..3e7e36e4b 100644 --- a/examples/loadables/whoami.c +++ b/examples/loadables/whoami.c @@ -39,6 +39,7 @@ whoami_builtin (list) { switch (opt) { + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/execute_cmd.c b/execute_cmd.c index 76a807669..8b3c83aa8 100644 --- a/execute_cmd.c +++ b/execute_cmd.c @@ -1,6 +1,6 @@ /* execute_cmd.c -- Execute a COMMAND structure. */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -66,6 +66,7 @@ extern int errno; #include "memalloc.h" #include "shell.h" #include /* use <...> so we pick it up from the build directory */ +#include "parser.h" #include "flags.h" #include "builtins.h" #include "hashlib.h" @@ -105,28 +106,13 @@ extern int errno; # include /* mbschr */ #endif -extern int dollar_dollar_pid; -extern int posixly_correct; -extern int expand_aliases; -extern int autocd; -extern int breaking, continuing, loop_level; -extern int parse_and_execute_level, running_trap, sourcelevel; -extern int command_string_index, line_number; -extern int dot_found_in_search; -extern int already_making_children; -extern int tempenv_assign_error; -extern char *the_printed_command, *shell_name; -extern pid_t last_command_subst_pid; -extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; -extern char **subshell_argv, **subshell_envp; -extern int subshell_argc; +extern int command_string_index; +extern char *the_printed_command; extern time_t shell_start_time; #if 0 extern char *glob_argv_flags; #endif -extern int job_control; /* XXX */ - extern int close __P((int)); /* Static functions defined and used in this file. */ @@ -197,6 +183,7 @@ static char *getinterp __P((char *, int, int *)); static void initialize_subshell __P((void)); static int execute_in_subshell __P((COMMAND *, int, int, int, struct fd_bitmap *)); #if defined (COPROCESS_SUPPORT) +static void coproc_setstatus __P((struct coproc *, int)); static int execute_coproc __P((COMMAND *, int, int, struct fd_bitmap *)); #endif @@ -285,6 +272,8 @@ static int function_line_number; report the correct line number. Kind of a hack. */ static int showing_function_line; +static int connection_count; + /* $LINENO ($BASH_LINENO) for use by an ERR trap. Global so parse_and_execute can save and restore it. */ int line_number_for_err_trap; @@ -293,7 +282,7 @@ int line_number_for_err_trap; int funcnest = 0; int funcnest_max = 0; -int evalnest = 0; /* bash-4.4/bash-5.0 */ +int evalnest = 0; int evalnest_max = EVALNEST_MAX; int sourcenest = 0; @@ -410,7 +399,7 @@ execute_command (command) #if defined (PROCESS_SUBSTITUTION) /* don't unlink fifos if we're in a shell function; wait until the function returns. */ - if (variable_context == 0) + if (variable_context == 0 && executing_list == 0) unlink_fifo_list (); #endif /* PROCESS_SUBSTITUTION */ @@ -461,6 +450,16 @@ cleanup_redirects (list) dispose_redirects (list); } +void +undo_partial_redirects () +{ + if (redirection_undo_list) + { + cleanup_redirects (redirection_undo_list); + redirection_undo_list = (REDIRECT *)NULL; + } +} + #if 0 /* Function to unwind_protect the redirections for functions and builtins. */ static void @@ -481,6 +480,16 @@ dispose_exec_redirects () } } +void +dispose_partial_redirects () +{ + if (redirection_undo_list) + { + dispose_redirects (redirection_undo_list); + redirection_undo_list = (REDIRECT *)NULL; + } +} + #if defined (JOB_CONTROL) /* A function to restore the signal mask to its proper value when the shell is interrupted or errors occur while creating a pipeline. */ @@ -552,7 +561,6 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, int exec_result, user_subshell, invert, ignore_return, was_error_trap; REDIRECT *my_undo_list, *exec_undo_list; char *tcmd; - volatile int last_pid; volatile int save_line_number; #if defined (PROCESS_SUBSTITUTION) volatile int ofifo, nfifo, osize, saved_fifo; @@ -590,11 +598,21 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, #if defined (COPROCESS_SUPPORT) if (command->type == cm_coproc) - return (execute_coproc (command, pipe_in, pipe_out, fds_to_close)); + return (last_command_exit_value = execute_coproc (command, pipe_in, pipe_out, fds_to_close)); #endif user_subshell = command->type == cm_subshell || ((command->flags & CMD_WANT_SUBSHELL) != 0); +#if defined (TIME_BEFORE_SUBSHELL) + if ((command->flags & CMD_TIME_PIPELINE) && user_subshell && asynchronous == 0) + { + command->flags |= CMD_FORCE_SUBSHELL; + exec_result = time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close); + currently_executing_command = (COMMAND *)NULL; + return (exec_result); + } +#endif + if (command->type == cm_subshell || (command->flags & (CMD_WANT_SUBSHELL|CMD_FORCE_SUBSHELL)) || (shell_control_structure (command->type) && @@ -602,12 +620,15 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, { pid_t paren_pid; int s; + char *p; /* Fork a subshell, turn off the subshell bit, turn off job control and call execute_command () on the command again. */ - line_number_for_err_trap = line_number; /* XXX - save value? */ + if (command->type == cm_subshell) + line_number_for_err_trap = line_number = command->value.Subshell->line; /* XXX - save value? */ + /* Otherwise we defer setting line_number */ tcmd = make_command_string (command); - paren_pid = make_child (savestring (tcmd), asynchronous); + paren_pid = make_child (p = savestring (tcmd), asynchronous); if (user_subshell && signal_is_trapped (ERROR_TRAP) && signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) @@ -618,6 +639,9 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, if (paren_pid == 0) { +#if defined (JOB_CONTROL) + FREE (p); /* child doesn't use pointer */ +#endif /* We want to run the exit trap for forced {} subshells, and we want to note this before execute_in_subshell modifies the COMMAND struct. Need to keep in mind that execute_in_subshell @@ -722,7 +746,11 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, stdin_redir = stdin_redirects (command->redirects); #if defined (PROCESS_SUBSTITUTION) - if (variable_context != 0) +# if !defined (HAVE_DEV_FD) + reap_procsubs (); +# endif + + if (variable_context != 0) /* XXX - also if sourcelevel != 0? */ { ofifo = num_fifos (); ofifo_list = copy_fifo_list ((int *)&osize); @@ -738,38 +766,45 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, redirection.) */ if (do_redirections (command->redirects, RX_ACTIVE|RX_UNDOABLE) != 0) { - cleanup_redirects (redirection_undo_list); - redirection_undo_list = (REDIRECT *)NULL; + undo_partial_redirects (); dispose_exec_redirects (); #if defined (PROCESS_SUBSTITUTION) if (saved_fifo) - { + { free ((void *)ofifo_list); - discard_unwind_frame ("internal_fifos"); - } + discard_unwind_frame ("internal_fifos"); + } #endif return (last_command_exit_value = EXECUTION_FAILURE); } +#if 0 if (redirection_undo_list) { /* XXX - why copy here? */ my_undo_list = (REDIRECT *)copy_redirects (redirection_undo_list); - dispose_redirects (redirection_undo_list); - redirection_undo_list = (REDIRECT *)NULL; + dispose_partial_redirects (); } else my_undo_list = (REDIRECT *)NULL; +#else + my_undo_list = redirection_undo_list; + redirection_undo_list = (REDIRECT *)NULL; +#endif +#if 0 if (exec_redirection_undo_list) { /* XXX - why copy here? */ exec_undo_list = (REDIRECT *)copy_redirects (exec_redirection_undo_list); - dispose_redirects (exec_redirection_undo_list); - exec_redirection_undo_list = (REDIRECT *)NULL; + dispose_exec_redirects (); } else exec_undo_list = (REDIRECT *)NULL; +#else + exec_undo_list = exec_redirection_undo_list; + exec_redirection_undo_list = (REDIRECT *)NULL; +#endif if (my_undo_list || exec_undo_list) begin_unwind_frame ("loop_redirections"); @@ -795,7 +830,6 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, #if defined (RECYCLES_PIDS) last_made_pid = NO_PID; #endif - last_pid = last_made_pid; was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0; if (ignore_return && command->value.Simple) @@ -855,8 +889,13 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, } /* 2009/02/13 -- pipeline failure is processed elsewhere. This handles - only the failure of a simple command. */ - if (was_error_trap && ignore_return == 0 && invert == 0 && pipe_in == NO_PIPE && pipe_out == NO_PIPE && exec_result != EXECUTION_SUCCESS) + only the failure of a simple command. We don't want to run the error + trap if the command run by the `command' builtin fails; we want to + defer that until the command builtin itself returns failure. */ + if (was_error_trap && ignore_return == 0 && invert == 0 && + pipe_in == NO_PIPE && pipe_out == NO_PIPE && + (command->value.Simple->flags & CMD_COMMAND_BUILTIN) == 0 && + exec_result != EXECUTION_SUCCESS) { last_command_exit_value = exec_result; line_number = line_number_for_err_trap; @@ -1047,10 +1086,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, } if (my_undo_list) - { - do_redirections (my_undo_list, RX_ACTIVE); - dispose_redirects (my_undo_list); - } + cleanup_redirects (my_undo_list); if (exec_undo_list) dispose_redirects (exec_undo_list); @@ -1090,6 +1126,8 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, # endif set_pipestatus_from_exit (exec_result); break; + default: + break; } #endif @@ -1116,19 +1154,6 @@ extern int timeval_to_cpu __P((struct timeval *, struct timeval *, struct timeva static const int precs[] = { 0, 100, 10, 1 }; -#if defined (HAVE_LOCALE_H) && defined (HAVE_LOCALECONV) -static int -decpoint () -{ - struct lconv *lv; - - lv = localeconv (); - return (lv && lv->decimal_point && lv->decimal_point[0]) ? lv->decimal_point[0] : '.'; -} -#else -# define decpoint() '.' -#endif - /* Expand one `%'-prefixed escape sequence from a time format string. */ static int mkfmt (buf, prec, lng, sec, sec_fraction) @@ -1173,7 +1198,7 @@ mkfmt (buf, prec, lng, sec, sec_fraction) and 999. */ if (prec != 0) { - buf[ind++] = decpoint (); + buf[ind++] = locale_decpoint (); for (aind = 1; aind <= prec; aind++) { buf[ind++] = (sec_fraction / precs[aind]) + '0'; @@ -1357,8 +1382,10 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close) command->flags &= ~(CMD_TIME_PIPELINE|CMD_TIME_POSIX); code = setjmp_nosigs (top_level); if (code == NOT_JUMPED) - rv = execute_command_internal (command, asynchronous, pipe_in, pipe_out, fds_to_close); - command->flags = old_flags; + { + rv = execute_command_internal (command, asynchronous, pipe_in, pipe_out, fds_to_close); + command->flags = old_flags; + } COPY_PROCENV (save_top_level, top_level); rs = us = ss = 0; @@ -1415,6 +1442,7 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close) else time_format = BASH_TIMEFORMAT; } + if (time_format && *time_format) print_formatted_time (stderr, time_format, rs, rsf, us, usf, ss, ssf, cpu); @@ -1435,9 +1463,8 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) int pipe_in, pipe_out; struct fd_bitmap *fds_to_close; { - int user_subshell, return_code, function_value, should_redir_stdin, invert; - int ois, user_coproc; - int result; + volatile int user_subshell, user_coproc, invert; + int return_code, function_value, should_redir_stdin, ois, result; volatile COMMAND *tcom; USE_VAR(user_subshell); @@ -1497,8 +1524,17 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) /* Subshells are neither login nor interactive. */ login_shell = interactive = 0; + /* And we're no longer in a loop. See Posix interp 842 (we are not in the + "same execution environment"). */ + if (shell_compatibility_level > 44) + loop_level = 0; + if (user_subshell) - subshell_environment = SUBSHELL_PAREN; /* XXX */ + { + subshell_environment = SUBSHELL_PAREN; /* XXX */ + if (asynchronous) + subshell_environment |= SUBSHELL_ASYNC; + } else { subshell_environment = 0; /* XXX */ @@ -1517,6 +1553,15 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) trap strings if we run trap to change a signal disposition. */ reset_signal_handlers (); subshell_environment |= SUBSHELL_RESETTRAP; +#if 0 /* TAG:bash-5.1 */ + /* We are in a subshell, so forget that we are running a trap handler or + that the signal handler has changed (we haven't changed it!) */ + if (running_trap > 0) + { + run_trap_cleanup (running_trap - 1); + running_trap = 0; + } +#endif /* Make sure restore_original_signals doesn't undo the work done by make_child to ensure that asynchronous children are immune to SIGINT @@ -1527,18 +1572,16 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) setup_async_signals (); asynchronous = 0; } + else + set_sigint_handler (); #if defined (JOB_CONTROL) set_sigchld_handler (); #endif /* JOB_CONTROL */ - set_sigint_handler (); - -#if defined (JOB_CONTROL) /* Delete all traces that there were any jobs running. This is only for subshells. */ without_job_control (); -#endif /* JOB_CONTROL */ if (fds_to_close) close_fd_bitmap (fds_to_close); @@ -1572,6 +1615,12 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) if (should_redir_stdin && stdin_redir == 0) async_redirect_stdin (); +#if 0 + /* XXX - TAG:bash-5.1 */ + if (user_subshell && command->type == cm_subshell) + optimize_subshell_command (command->value.Subshell->command); +#endif + /* Do redirections, then dispose of them before recursive call. */ if (command->redirects) { @@ -1639,6 +1688,7 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) return_code = (return_code == EXECUTION_SUCCESS) ? EXECUTION_FAILURE : EXECUTION_SUCCESS; + /* If we were explicitly placed in a subshell with (), we need to do the `shell cleanup' things, such as running traps[0]. */ if (user_subshell && signal_is_trapped (0)) @@ -1880,6 +1930,17 @@ cpl_searchbyname (name) return (struct cpelement *)NULL; } +static pid_t +cpl_firstactive () +{ + struct cpelement *cpe; + + for (cpe = coproc_list.head ; cpe; cpe = cpe->next) + if ((cpe->coproc->c_flags & COPROC_DEAD) == 0) + return cpe->coproc->c_pid; + return (pid_t)NO_PID; +} + #if 0 static void cpl_prune () @@ -2123,6 +2184,21 @@ coproc_fdrestore (cp) cp->c_wfd = cp->c_wsave; } +static void +coproc_setstatus (cp, status) + struct coproc *cp; + int status; +{ + cp->c_lock = 4; + cp->c_status = status; + cp->c_flags |= COPROC_DEAD; + cp->c_flags &= ~COPROC_RUNNING; + /* Don't dispose the coproc or unset the COPROC_XXX variables because + this is executed in a signal handler context. Wait until coproc_reap + takes care of it. */ + cp->c_lock = 0; +} + void coproc_pidchk (pid, status) pid_t pid; @@ -2133,24 +2209,26 @@ coproc_pidchk (pid, status) #if MULTIPLE_COPROCS struct cpelement *cpe; - cpe = cpl_delete (pid); + /* We're not disposing the coproc because this is executed in a signal + handler context */ + cpe = cpl_search (pid); cp = cpe ? cpe->coproc : 0; #else cp = getcoprocbypid (pid); #endif if (cp) - { - cp->c_lock = 4; - cp->c_status = status; - cp->c_flags |= COPROC_DEAD; - cp->c_flags &= ~COPROC_RUNNING; - /* Don't dispose the coproc or unset the COPROC_XXX variables because - this is executed in a signal handler context. Wait until coproc_reap - takes care of it. */ - cp->c_lock = 0; - } + coproc_setstatus (cp, status); } +pid_t +coproc_active () +{ +#if MULTIPLE_COPROCS + return (cpl_firstactive ()); +#else + return ((sh_coproc.c_flags & COPROC_DEAD) ? NO_PID : sh_coproc.c_pid); +#endif +} void coproc_setvars (cp) struct coproc *cp; @@ -2185,7 +2263,10 @@ coproc_setvars (cp) { v = find_variable_nameref_for_create (cp->c_name, 1); if (v == INVALID_NAMEREF_VALUE) - return; + { + free (namevar); + return; + } if (v && nameref_p (v)) { free (cp->c_name); @@ -2198,6 +2279,7 @@ coproc_setvars (cp) { if (readonly_p (v)) err_readonly (cp->c_name); + free (namevar); return; } if (v == 0) @@ -2212,7 +2294,7 @@ coproc_setvars (cp) t = itos (cp->c_wfd); ind = 1; - bind_array_variable (cp->c_name, ind, t, 0); + v = bind_array_variable (cp->c_name, ind, t, 0); free (t); #else sprintf (namevar, "%s_READ", cp->c_name); @@ -2227,7 +2309,7 @@ coproc_setvars (cp) sprintf (namevar, "%s_PID", cp->c_name); t = itos (cp->c_pid); - bind_variable (namevar, t, 0); + v = bind_variable (namevar, t, 0); free (t); free (namevar); @@ -2270,17 +2352,32 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close) int rpipe[2], wpipe[2], estat, invert; pid_t coproc_pid; Coproc *cp; - char *tcmd; + char *tcmd, *p, *name; sigset_t set, oset; /* XXX -- can be removed after changes to handle multiple coprocs */ #if !MULTIPLE_COPROCS - if (sh_coproc.c_pid != NO_PID) + if (sh_coproc.c_pid != NO_PID && (sh_coproc.c_rfd >= 0 || sh_coproc.c_wfd >= 0)) internal_warning (_("execute_coproc: coproc [%d:%s] still exists"), sh_coproc.c_pid, sh_coproc.c_name); coproc_init (&sh_coproc); #endif invert = (command->flags & CMD_INVERT_RETURN) != 0; + + /* expand name without splitting - could make this dependent on a shopt option */ + name = expand_string_unsplit_to_string (command->value.Coproc->name, 0); + /* Optional check -- could be relaxed */ + if (legal_identifier (name) == 0) + { + internal_error (_("`%s': not a valid identifier"), name); + return (invert ? EXECUTION_SUCCESS : EXECUTION_FAILURE); + } + else + { + free (command->value.Coproc->name); + command->value.Coproc->name = name; + } + command_string_index = 0; tcmd = make_command_string (command); @@ -2289,13 +2386,17 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close) BLOCK_SIGNAL (SIGCHLD, set, oset); - coproc_pid = make_child (savestring (tcmd), 1); + coproc_pid = make_child (p = savestring (tcmd), 1); if (coproc_pid == 0) { close (rpipe[0]); close (wpipe[1]); +#if defined (JOB_CONTROL) + FREE (p); +#endif + UNBLOCK_SIGNAL (oset); estat = execute_in_subshell (command, 1, wpipe[0], rpipe[1], fds_to_close); @@ -2308,11 +2409,12 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close) close (rpipe[1]); close (wpipe[0]); - /* XXX - possibly run Coproc->name through word expansion? */ cp = coproc_alloc (command->value.Coproc->name, coproc_pid); cp->c_rfd = rpipe[0]; cp->c_wfd = wpipe[1]; + cp->c_flags |= COPROC_RUNNING; + SET_CLOSE_ON_EXEC (cp->c_rfd); SET_CLOSE_ON_EXEC (cp->c_wfd); @@ -2321,7 +2423,7 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close) UNBLOCK_SIGNAL (oset); #if 0 - itrace ("execute_coproc: [%d] %s", coproc_pid, the_printed_command); + itrace ("execute_coproc (%s): [%d] %s", command->value.Coproc->name, coproc_pid, the_printed_command); #endif close_pipes (pipe_in, pipe_out); @@ -2349,7 +2451,7 @@ static void lastpipe_cleanup (s) int s; { - unfreeze_jobs_list (); + set_jobs_list_frozen (s); } static int @@ -2359,7 +2461,7 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close) struct fd_bitmap *fds_to_close; { int prev, fildes[2], new_bitmap_size, dummyfd, ignore_return, exec_result; - int lstdin, lastpipe_flag, lastpipe_jid; + int lstdin, lastpipe_flag, lastpipe_jid, old_frozen; COMMAND *cmd; struct fd_bitmap *fd_bitmap; pid_t lastpid; @@ -2474,9 +2576,9 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close) prev = NO_PIPE; add_unwind_protect (restore_stdin, lstdin); lastpipe_flag = 1; - freeze_jobs_list (); + old_frozen = freeze_jobs_list (); lastpipe_jid = stop_pipeline (0, (COMMAND *)NULL); /* XXX */ - add_unwind_protect (lastpipe_cleanup, lastpipe_jid); + add_unwind_protect (lastpipe_cleanup, old_frozen); } if (cmd) cmd->flags |= CMD_LASTPIPE; @@ -2522,9 +2624,9 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close) else if (pipefail_opt) exec_result = exec_result | lstdin; /* XXX */ /* otherwise we use exec_result */ - #endif - unfreeze_jobs_list (); + + set_jobs_list_frozen (old_frozen); } discard_unwind_frame ("lastpipe-exec"); @@ -2779,8 +2881,10 @@ execute_for_command (for_command) sh_invalidid (list->word->word); v = 0; } + else if (readonly_p (v)) + err_readonly (name_cell (v)); else - v = bind_variable_value (v, list->word->word, 0); + v = bind_variable_value (v, list->word->word, ASS_NAMEREF); } else v = bind_variable (identifier, list->word->word, 0); @@ -2835,7 +2939,7 @@ execute_for_command (for_command) { SHELL_VAR *new_value; - new_value = bind_variable (identifier, value_cell(old_value), 0); + new_value = bind_variable (identifier, value_cell (old_value), 0); new_value->attributes = old_value->attributes; dispose_variable (old_value); } @@ -2881,7 +2985,7 @@ eval_arith_for_expr (l, okp) command_string_index = 0; print_arith_command (new); - if (signal_in_progress (DEBUG_TRAP) == 0) + if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) { FREE (the_printed_command_except_trap); the_printed_command_except_trap = savestring (the_printed_command); @@ -2892,7 +2996,7 @@ eval_arith_for_expr (l, okp) skip the command. */ #if defined (DEBUGGER) if (debugging_mode == 0 || r == EXECUTION_SUCCESS) - expresult = evalexp (new->word->word, okp); + expresult = evalexp (new->word->word, EXP_EXPANDED, okp); else { expresult = 0; @@ -2900,7 +3004,7 @@ eval_arith_for_expr (l, okp) *okp = 1; } #else - expresult = evalexp (new->word->word, okp); + expresult = evalexp (new->word->word, EXP_EXPANDED, okp); #endif dispose_words (new); } @@ -2933,11 +3037,12 @@ execute_arith_for_command (arith_for_command) line_number before executing each expression -- for $LINENO and the DEBUG trap. */ line_number = arith_lineno = arith_for_command->line; - if (variable_context && interactive_shell) + if (variable_context && interactive_shell && sourcelevel == 0) { - line_number -= function_line_number; - if (line_number < 0) - line_number = 0; + /* line numbers in a function start at 1 */ + line_number -= function_line_number - 1; + if (line_number <= 0) + line_number = 1; } /* Evaluate the initialization expression. */ @@ -3142,12 +3247,7 @@ select_query (list, list_len, prompt, print_menu) WORD_LIST *l; char *repl_string, *t; -#if 0 - t = get_string_value ("LINES"); - LINES = (t && *t) ? atoi (t) : 24; -#endif - t = get_string_value ("COLUMNS"); - COLS = (t && *t) ? atoi (t) : 80; + COLS = default_columns (); #if 0 t = get_string_value ("TABSIZE"); @@ -3350,7 +3450,7 @@ execute_case_command (case_command) WORD_LIST *wlist, *es; PATTERN_LIST *clauses; char *word, *pattern; - int retval, match, ignore_return, save_line_number; + int retval, match, ignore_return, save_line_number, qflags; save_line_number = line_number; line_number = case_command->line; @@ -3382,8 +3482,20 @@ execute_case_command (case_command) } #endif - wlist = expand_word_unsplit (case_command->word, 0); - word = wlist ? string_list (wlist) : savestring (""); + /* Use the same expansions (the ones POSIX specifies) as the patterns; + dequote the resulting string (as POSIX specifies) since the quotes in + patterns are handled specially below. We have to do it in this order + because we're not supposed to perform word splitting. */ + wlist = expand_word_leave_quoted (case_command->word, 0); + if (wlist) + { + char *t; + t = string_list (wlist); + word = dequote_string (t); + free (t); + } + else + word = savestring (""); dispose_words (wlist); retval = EXECUTION_SUCCESS; @@ -3402,7 +3514,18 @@ execute_case_command (case_command) es = expand_word_leave_quoted (list->word, 0); if (es && es->word && es->word->word && *(es->word->word)) - pattern = quote_string_for_globbing (es->word->word, QGLOB_CVTNULL); + { + /* Convert quoted null strings into empty strings. */ + qflags = QGLOB_CVTNULL; + + /* We left CTLESC in place quoting CTLESC and CTLNUL after the + call to expand_word_leave_quoted; tell quote_string_for_globbing + to remove those here. This works for both unquoted portions of + the word (which call quote_escapes) and quoted portions + (which call quote_string). */ + qflags |= QGLOB_CTLESC; + pattern = quote_string_for_globbing (es->word->word, qflags); + } else { pattern = (char *)xmalloc (1); @@ -3581,19 +3704,20 @@ execute_arith_command (arith_command) save_line_number = line_number; this_command_name = "(("; /* )) */ - line_number = arith_command->line; + line_number_for_err_trap = line_number = arith_command->line; /* If we're in a function, update the line number information. */ - if (variable_context && interactive_shell) + if (variable_context && interactive_shell && sourcelevel == 0) { - line_number -= function_line_number; - if (line_number < 0) - line_number = 0; + /* line numbers in a function start at 1 */ + line_number -= function_line_number - 1; + if (line_number <= 0) + line_number = 1; } command_string_index = 0; print_arith_command (arith_command->exp); - if (signal_in_progress (DEBUG_TRAP) == 0) + if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) { FREE (the_printed_command_except_trap); the_printed_command_except_trap = savestring (the_printed_command); @@ -3623,7 +3747,7 @@ execute_arith_command (arith_command) if (new) { exp = new->next ? string_list (new) : new->word->word; - expresult = evalexp (exp, &expok); + expresult = evalexp (exp, EXP_EXPANDED, &expok); line_number = save_line_number; if (exp != new->word->word) free (exp); @@ -3779,22 +3903,22 @@ execute_cond_command (cond_command) { int retval, save_line_number; - retval = EXECUTION_SUCCESS; save_line_number = line_number; this_command_name = "[["; - line_number = cond_command->line; + line_number_for_err_trap = line_number = cond_command->line; /* If we're in a function, update the line number information. */ - if (variable_context && interactive_shell) + if (variable_context && interactive_shell && sourcelevel == 0) { - line_number -= function_line_number; - if (line_number < 0) - line_number = 0; + /* line numbers in a function start at 1 */ + line_number -= function_line_number - 1; + if (line_number <= 0) + line_number = 1; } command_string_index = 0; print_cond_command (cond_command); - if (signal_in_progress (DEBUG_TRAP) == 0) + if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) { FREE (the_printed_command_except_trap); the_printed_command_except_trap = savestring (the_printed_command); @@ -3849,7 +3973,11 @@ execute_null_command (redirects, pipe_in, pipe_out, async) REDIRECT *rd; for (forcefork = 0, rd = redirects; rd; rd = rd->next) - forcefork += rd->rflags & REDIR_VARASSIGN; + { + forcefork += rd->rflags & REDIR_VARASSIGN; + /* Safety */ + forcefork += (rd->redirector.dest == 0 || fd_is_bash_input (rd->redirector.dest)) && (INPUT_REDIRECT (rd->instruction) || TRANSLATE_REDIRECT (rd->instruction) || rd->instruction == r_close_this); + } if (forcefork || pipe_in != NO_PIPE || pipe_out != NO_PIPE || async) { @@ -3866,6 +3994,8 @@ execute_null_command (redirects, pipe_in, pipe_out, async) coproc_closeall (); #endif + interactive = 0; /* XXX */ + subshell_environment = 0; if (async) subshell_environment |= SUBSHELL_ASYNC; @@ -3962,9 +4092,14 @@ fix_assignment_words (words) /* If we have an assignment builtin that does not create local variables, make sure we create global variables even if we internally call - `declare' */ + `declare'. The CHKLOCAL flag means to set attributes or values on + an existing local variable, if there is one. */ if (b && ((b->flags & (ASSIGNMENT_BUILTIN|LOCALVAR_BUILTIN)) == ASSIGNMENT_BUILTIN)) - w->word->flags |= W_ASSNGLOBAL; + w->word->flags |= W_ASSNGLOBAL|W_CHKLOCAL; +#if 0 + else if (b && (b->flags & ASSIGNMENT_BUILTIN) && (b->flags & LOCALVAR_BUILTIN)) + w->word->flags |= W_CHKLOCAL; +#endif } #if defined (ARRAY_VARS) /* Note that we saw an associative array option to a builtin that takes @@ -4032,9 +4167,10 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) /* If we're in a function, update the line number information. */ if (variable_context && interactive_shell && sourcelevel == 0) { - line_number -= function_line_number; - if (line_number < 0) - line_number = 0; + /* line numbers in a function start at 1 */ + line_number -= function_line_number - 1; + if (line_number <= 0) + line_number = 1; } /* Remember what this command line looks like at invocation. */ @@ -4067,7 +4203,7 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) last_command_subst_pid = NO_PID; old_last_async_pid = last_asynchronous_pid; - already_forked = dofork = 0; + already_forked = 0; /* If we're in a pipeline or run in the background, set DOFORK so we make the child early, before word expansion. This keeps assignment @@ -4085,13 +4221,15 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) if (dofork) { + char *p; + /* Do this now, because execute_disk_command will do it anyway in the vast majority of cases. */ maybe_make_export_env (); /* Don't let a DEBUG trap overwrite the command string to be saved with the process/job associated with this child. */ - if (make_child (savestring (the_printed_command_except_trap), async) == 0) + if (make_child (p = savestring (the_printed_command_except_trap), async) == 0) { already_forked = 1; simple_command->flags |= CMD_NO_FORK; @@ -4124,6 +4262,10 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) if (async) subshell_level++; /* not for pipes yet */ + +#if defined (JOB_CONTROL) + FREE (p); /* child doesn't use pointer */ +#endif } else { @@ -4133,14 +4275,18 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) result = last_command_exit_value; close_pipes (pipe_in, pipe_out); #if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD) +#if 0 /* Close /dev/fd file descriptors in the parent after forking the last child in a (possibly one-element) pipeline. Defer this until any running shell function completes. */ if (pipe_out == NO_PIPE && variable_context == 0) /* XXX */ unlink_fifo_list (); /* XXX */ +#endif #endif command_line = (char *)NULL; /* don't free this. */ +#if 0 bind_lastarg ((char *)NULL); +#endif return (result); } } @@ -4345,10 +4491,18 @@ run_builtin: last_command_exit_value = EXECUTION_FAILURE; jump_to_top_level (ERREXIT); } + break; + case EX_DISKFALLBACK: + /* XXX - experimental */ + executing_builtin = old_builtin; + executing_command_builtin = old_command_builtin; + builtin = 0; + /* XXX - redirections will have to be performed again */ + goto execute_from_filesystem; } result = builtin_status (result); if (builtin_is_special) - special_builtin_failed = 1; + special_builtin_failed = 1; /* XXX - take command builtin into account? */ } /* In POSIX mode, if there are assignment statements preceding a special builtin, they persist after the builtin @@ -4379,6 +4533,7 @@ run_builtin: goto run_builtin; } +execute_from_filesystem: if (command_line == 0) command_line = savestring (the_printed_command_except_trap ? the_printed_command_except_trap : ""); @@ -4439,11 +4594,12 @@ execute_builtin (builtin, words, flags, subshell) WORD_LIST *words; int flags, subshell; { - int result, eval_unwind, ignexit_flag, old_e_flag; - int isbltinenv; + int result, eval_unwind, ignexit_flag; + int isbltinenv, should_keep; char *error_trap; error_trap = 0; + should_keep = 0; /* The eval builtin calls parse_and_execute, which does not know about the setting of flags, and always calls the execution functions with @@ -4479,7 +4635,18 @@ execute_builtin (builtin, words, flags, subshell) problem only with the `unset', `source' and `eval' builtins. `mapfile' is a special case because it uses evalstring (same as eval or source) to run its callbacks. */ + /* SHOULD_KEEP is for the pop_scope call below; it only matters when + posixly_correct is set, but we should propagate the temporary environment + to the enclosing environment only for special builtins. */ isbltinenv = (builtin == source_builtin || builtin == eval_builtin || builtin == unset_builtin || builtin == mapfile_builtin); + should_keep = isbltinenv && builtin != mapfile_builtin; +#if defined (HISTORY) && defined (READLINE) + if (builtin == fc_builtin || builtin == read_builtin) + { + isbltinenv = 1; + should_keep = 0; + } +#endif if (isbltinenv) { @@ -4489,8 +4656,10 @@ execute_builtin (builtin, words, flags, subshell) if (temporary_env) { push_scope (VC_BLTNENV, temporary_env); + if (flags & CMD_COMMAND_BUILTIN) + should_keep = 0; if (subshell == 0) - add_unwind_protect (pop_scope, (flags & CMD_COMMAND_BUILTIN) ? 0 : "1"); + add_unwind_protect (pop_scope, should_keep ? "1" : 0); temporary_env = (HASH_TABLE *)NULL; } } @@ -4523,8 +4692,10 @@ execute_builtin (builtin, words, flags, subshell) /* `return' does a longjmp() back to a saved environment in execute_function. If a variable assignment list preceded the command, and the shell is running in POSIX mode, we need to merge that into the shell_variables - table, since `return' is a POSIX special builtin. */ - if (posixly_correct && subshell == 0 && builtin == return_builtin && temporary_env) + table, since `return' is a POSIX special builtin. We don't do this if + it's being run by the `command' builtin, since that's supposed to inhibit + the special builtin properties. */ + if (posixly_correct && subshell == 0 && builtin == return_builtin && (flags & CMD_COMMAND_BUILTIN) == 0 && temporary_env) { begin_unwind_frame ("return_temp_env"); add_unwind_protect (merge_temporary_env, (char *)NULL); @@ -4549,7 +4720,7 @@ execute_builtin (builtin, words, flags, subshell) if (error_trap) { set_error_trap (error_trap); - xfree (error_trap); + free (error_trap); } discard_unwind_frame ("eval_builtin"); } @@ -4561,8 +4732,6 @@ static void maybe_restore_getopt_state (gs) sh_getopt_state_t *gs; { - SHELL_VAR *v; - /* If we have a local copy of OPTIND and it's at the right (current) context, then we restore getopt's internal state. If not, we just let it go. We know there is a local OPTIND if gs->gs_flags & 1. @@ -4638,6 +4807,12 @@ execute_function (var, words, flags, fds_to_close, async, subshell) if (subshell == 0) { begin_unwind_frame ("function_calling"); + /* If the shell is in posix mode, this will push the variables in + the temporary environment to the "current shell environment" (the + global scope), and dispose the temporary env before setting it to + NULL later. This behavior has disappeared from the latest edition + of the standard, so I will eventually remove it from variables.c: + push_var_context. */ push_context (var->name, subshell, temporary_env); /* This has to be before the pop_context(), because the unwinding of local variables may cause the restore of a local declaration of @@ -4698,11 +4873,7 @@ execute_function (var, words, flags, fds_to_close, async, subshell) /* Shell functions inherit the RETURN trap if function tracing is on globally or on individually for this function. */ -#if 0 - if (return_trap && ((trace_p (var) == 0) && function_trace_mode == 0)) -#else if (return_trap && (signal_in_progress (DEBUG_TRAP) || ((trace_p (var) == 0) && function_trace_mode == 0))) -#endif { if (subshell == 0) { @@ -4741,6 +4912,11 @@ execute_function (var, words, flags, fds_to_close, async, subshell) /* The temporary environment for a function is supposed to apply to all commands executed within the function body. */ + /* Initialize BASH_ARGC and BASH_ARGV before we blow away the positional + parameters */ + if (debugging_mode || shell_compatibility_level <= 44) + init_bash_argv (); + remember_args (words->next, 1); /* Update BASH_ARGV and BASH_ARGC */ @@ -4911,6 +5087,8 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var, without_job_control (); set_sigchld_handler (); +#else + without_job_control (); #endif /* JOB_CONTROL */ set_sigint_handler (); @@ -4947,6 +5125,15 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var, fflush (stdout); if (r == EX_USAGE) r = EX_BADUSAGE; + /* XXX - experimental */ + else if (r == EX_DISKFALLBACK) + { + char *command_line; + + command_line = savestring (the_printed_command_except_trap ? the_printed_command_except_trap : ""); + r = execute_disk_command (words, (REDIRECT *)0, command_line, + -1, -1, async, (struct fd_bitmap *)0, flags|CMD_NO_FORK); + } sh_exit (r); } } @@ -4995,8 +5182,7 @@ execute_builtin_or_function (words, builtin, var, redirects, if (do_redirections (redirects, RX_ACTIVE|RX_UNDOABLE) != 0) { - cleanup_redirects (redirection_undo_list); - redirection_undo_list = (REDIRECT *)NULL; + undo_partial_redirects (); dispose_exec_redirects (); #if defined (PROCESS_SUBSTITUTION) free (ofifo_list); @@ -5063,11 +5249,7 @@ execute_builtin_or_function (words, builtin, var, redirects, discard_unwind_frame ("saved-redirects"); } - if (redirection_undo_list) - { - cleanup_redirects (redirection_undo_list); - redirection_undo_list = (REDIRECT *)NULL; - } + undo_partial_redirects (); #if defined (PROCESS_SUBSTITUTION) /* Close any FIFOs created by this builtin or function. */ @@ -5139,7 +5321,7 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, struct fd_bitmap *fds_to_close; int cmdflags; { - char *pathname, *command, **args; + char *pathname, *command, **args, *p; int nofork, stdpath, result; pid_t pid; SHELL_VAR *hookf; @@ -5149,6 +5331,7 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, nofork = (cmdflags & CMD_NO_FORK); /* Don't fork, just exec, if no pipes */ pathname = words->word->word; + p = 0; result = EXECUTION_SUCCESS; #if defined (RESTRICTED_SHELL) command = (char *)NULL; @@ -5168,9 +5351,15 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, #endif /* RESTRICTED_SHELL */ command = search_for_command (pathname, CMDSRCH_HASH|(stdpath ? CMDSRCH_STDPATH : 0)); + QUIT; if (command) { + /* If we're optimizing out the fork (implicit `exec'), decrement the + shell level like `exec' would do. */ + if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE) + adjust_shell_level (-1); + maybe_make_export_env (); put_command_name_into_env (command); } @@ -5182,7 +5371,7 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE) pid = 0; else - pid = make_child (savestring (command_line), async); + pid = make_child (p = savestring (command_line), async); if (pid == 0) { @@ -5194,6 +5383,10 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, CHECK_SIGTERM; +#if defined (JOB_CONTROL) + FREE (p); +#endif + /* restore_original_signals may have undone the work done by make_child to ensure that SIGINT and SIGQUIT are ignored in asynchronous children. */ @@ -5246,9 +5439,13 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, exit (EX_NOTFOUND); /* Posix.2 says the exit status is 127 */ } + /* We don't want to manage process groups for processes we start + from here, so we turn off job control and don't attempt to + manipulate the terminal's process group. */ + without_job_control (); + #if defined (JOB_CONTROL) - /* May need to reinitialize more of the job control state here. */ - kill_current_pipeline (); + set_sigchld_handler (); #endif wl = make_word_list (make_word (NOTFOUND_HOOK), words); @@ -5271,8 +5468,10 @@ parent_return: /* Make sure that the pipes are closed in the parent. */ close_pipes (pipe_in, pipe_out); #if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD) +#if 0 if (variable_context == 0) unlink_fifo_list (); +#endif #endif FREE (command); return (result); @@ -5619,6 +5818,7 @@ execute_intern_function (name, funcdef) FUNCTION_DEF *funcdef; { SHELL_VAR *var; + char *t; if (check_identifier (name, posixly_correct) == 0) { @@ -5630,6 +5830,13 @@ execute_intern_function (name, funcdef) return (EXECUTION_FAILURE); } + if (strchr (name->word, CTLESC)) /* WHY? */ + { + t = dequote_escapes (name->word); + free (name->word); + name->word = t; + } + /* Posix interpretation 383 */ if (posixly_correct && find_special_builtin (name->word)) { @@ -5647,7 +5854,7 @@ execute_intern_function (name, funcdef) } #if defined (DEBUGGER) - bind_function_def (name->word, funcdef); + bind_function_def (name->word, funcdef, 1); #endif bind_function (name->word, funcdef->command); diff --git a/execute_cmd.h b/execute_cmd.h index 62bec829d..dc2f15ec6 100644 --- a/execute_cmd.h +++ b/execute_cmd.h @@ -1,6 +1,6 @@ /* execute_cmd.h - functions from execute_cmd.c. */ -/* Copyright (C) 1993-2015 Free Software Foundation, Inc. +/* Copyright (C) 1993-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -35,6 +35,40 @@ struct func_array_state }; #endif +/* Placeholder for later expansion to include more execution state */ +/* XXX - watch out for pid_t */ +struct execstate + { + pid_t pid; + int subshell_env; + }; + + +/* Variables delared in execute_cmd.c, used by many other files */ +extern int return_catch_flag; +extern int return_catch_value; +extern volatile int last_command_exit_value; +extern int last_command_exit_signal; +extern int builtin_ignoring_errexit; +extern int executing_builtin; +extern int executing_list; +extern int comsub_ignore_return; +extern int subshell_level; +extern int match_ignore_case; +extern int executing_command_builtin; +extern int funcnest, funcnest_max; +extern int evalnest, evalnest_max; +extern int sourcenest, sourcenest_max; +extern int stdin_redir; +extern int line_number_for_err_trap; + +extern char *the_printed_command_except_trap; + +extern char *this_command_name; +extern SHELL_VAR *this_shell_function; + +/* Functions delared in execute_cmd.c, used by many other files */ + extern struct fd_bitmap *new_fd_bitmap __P((int)); extern void dispose_fd_bitmap __P((struct fd_bitmap *)); extern void close_fd_bitmap __P((struct fd_bitmap *)); @@ -43,7 +77,10 @@ extern int execute_command __P((COMMAND *)); extern int execute_command_internal __P((COMMAND *, int, int, int, struct fd_bitmap *)); extern int shell_execve __P((char *, char **, char **)); extern void setup_async_signals __P((void)); -extern void dispose_exec_redirects __P ((void)); + +extern void undo_partial_redirects __P((void)); +extern void dispose_partial_redirects __P((void)); +extern void dispose_exec_redirects __P((void)); extern int execute_shell_function __P((SHELL_VAR *, WORD_LIST *)); @@ -57,6 +94,7 @@ extern void coproc_flush __P((void)); extern void coproc_close __P((struct coproc *)); extern void coproc_closeall __P((void)); extern void coproc_reap __P((void)); +extern pid_t coproc_active __P((void)); extern void coproc_rclose __P((struct coproc *, int)); extern void coproc_wclose __P((struct coproc *, int)); diff --git a/expr.c b/expr.c index 172964a24..9edc8d9cd 100644 --- a/expr.c +++ b/expr.c @@ -26,8 +26,8 @@ order of decreasing precedence. "id++", "id--" [post-increment and post-decrement] - "++id", "--id" [pre-increment and pre-decrement] "-", "+" [(unary operators)] + "++id", "--id" [pre-increment and pre-decrement] "!", "~" "**" [(exponentiation)] "*", "/", "%" @@ -82,6 +82,10 @@ #include "bashintl.h" #include "shell.h" +#include "arrayfunc.h" +#include "execute_cmd.h" +#include "flags.h" +#include "subst.h" #include "typemax.h" /* INTMAX_MAX, INTMAX_MIN */ /* Because of the $((...)) construct, expressions may include newlines. @@ -171,6 +175,9 @@ static intmax_t tokval; /* current token value */ static int noeval; /* set to 1 if no assignment to be done */ static procenv_t evalbuf; +/* set to 1 if the expression has already been run through word expansion */ +static int already_expanded; + static struct lvalue curlval = {0, 0, 0, -1}; static struct lvalue lastlval = {0, 0, 0, -1}; @@ -207,7 +214,7 @@ static intmax_t exp5 __P((void)); static intmax_t exp4 __P((void)); static intmax_t expshift __P((void)); static intmax_t exp3 __P((void)); -static intmax_t exp2 __P((void)); +static intmax_t expmuldiv __P((void)); static intmax_t exppower __P((void)); static intmax_t exp1 __P((void)); static intmax_t exp0 __P((void)); @@ -217,9 +224,6 @@ static EXPR_CONTEXT **expr_stack; static int expr_depth; /* Location in the stack. */ static int expr_stack_size; /* Number of slots already allocated. */ -extern char *this_command_name; -extern int unbound_vars_is_error, last_command_exit_value; - #if defined (ARRAY_VARS) extern const char * const bash_badsub_errmsg; #endif @@ -279,8 +283,13 @@ popexp () { EXPR_CONTEXT *context; - if (expr_depth == 0) - evalerror (_("recursion stack underflow")); + if (expr_depth <= 0) + { + /* See the comment at the top of evalexp() for an explanation of why + this is done. */ + expression = lasttp = 0; + evalerror (_("recursion stack underflow")); + } context = expr_stack[--expr_depth]; @@ -303,7 +312,8 @@ expr_unwind () free (expr_stack[expr_depth]); } - free (expr_stack[expr_depth]); /* free the allocated EXPR_CONTEXT */ + if (expr_depth == 0) + free (expr_stack[expr_depth]); /* free the allocated EXPR_CONTEXT */ noeval = 0; /* XXX */ } @@ -313,14 +323,44 @@ expr_bind_variable (lhs, rhs) char *lhs, *rhs; { SHELL_VAR *v; + int aflags; - v = bind_int_variable (lhs, rhs); + if (lhs == 0 || *lhs == 0) + return; /* XXX */ + +#if defined (ARRAY_VARS) + aflags = (assoc_expand_once && already_expanded) ? ASS_NOEXPAND : 0; +#else + aflags = 0; +#endif + v = bind_int_variable (lhs, rhs, aflags); if (v && (readonly_p (v) || noassign_p (v))) sh_longjmp (evalbuf, 1); /* variable assignment error */ stupidly_hack_special_variables (lhs); } #if defined (ARRAY_VARS) +/* This is similar to the logic in arrayfunc.c:valid_array_subscript when + you pass VA_NOEXPAND. */ +static int +expr_skipsubscript (vp, cp) + char *vp, *cp; +{ + int flags, isassoc; + SHELL_VAR *entry; + + isassoc = 0; + entry = 0; + if (assoc_expand_once & already_expanded) + { + *cp = '\0'; + isassoc = legal_identifier (vp) && (entry = find_variable (vp)) && assoc_p (entry); + *cp = '['; /* ] */ + } + flags = (isassoc && assoc_expand_once && already_expanded) ? VA_NOEXPAND : 0; + return (skipsubscript (cp, 0, flags)); +} + /* Rewrite tok, which is of the form vname[expression], to vname[ind], where IND is the already-calculated value of expression. */ static void @@ -334,7 +374,7 @@ expr_bind_array_element (tok, ind, rhs) char ibuf[INT_STRLEN_BOUND (arrayind_t) + 1], *istr; istr = fmtumax (ind, 10, ibuf, sizeof (ibuf), 0); - vname = array_variable_name (tok, (char **)NULL, (int *)NULL); + vname = array_variable_name (tok, 0, (char **)NULL, (int *)NULL); llen = strlen (vname) + sizeof (ibuf) + 3; lhs = xmalloc (llen); @@ -362,8 +402,9 @@ expr_bind_array_element (tok, ind, rhs) safe to let the loop terminate when expr_depth == 0, without freeing up any of the expr_depth[0] stuff. */ intmax_t -evalexp (expr, validp) +evalexp (expr, flags, validp) char *expr; + int flags; int *validp; { intmax_t val; @@ -372,6 +413,7 @@ evalexp (expr, validp) val = 0; noeval = 0; + already_expanded = (flags&EXP_EXPANDED); FASTCOPY (evalbuf, oevalbuf, sizeof (evalbuf)); @@ -384,6 +426,10 @@ evalexp (expr, validp) tokstr = expression = (char *)NULL; expr_unwind (); + expr_depth = 0; /* XXX - make sure */ + + /* We copy in case we've called evalexp recursively */ + FASTCOPY (oevalbuf, evalbuf, sizeof (evalbuf)); if (validp) *validp = 0; @@ -480,6 +526,9 @@ expassign () lvalue = value; } + if (tokstr == 0) + evalerror (_("syntax error in variable assignment")); + /* XXX - watch out for pointer aliasing issues here */ lhs = savestring (tokstr); /* save ind in case rhs is string var and evaluation overwrites it */ @@ -809,14 +858,14 @@ exp3 () { register intmax_t val1, val2; - val1 = exp2 (); + val1 = expmuldiv (); while ((curtok == PLUS) || (curtok == MINUS)) { int op = curtok; readtok (); - val2 = exp2 (); + val2 = expmuldiv (); if (op == PLUS) val1 += val2; @@ -828,7 +877,7 @@ exp3 () } static intmax_t -exp2 () +expmuldiv () { register intmax_t val1, val2; #if defined (HAVE_IMAXDIV) @@ -987,7 +1036,8 @@ exp0 () expr_bind_array_element (curlval.tokstr, curlval.ind, vincdec); else #endif - expr_bind_variable (tokstr, vincdec); + if (tokstr) + expr_bind_variable (tokstr, vincdec); } free (vincdec); val = v2; @@ -1093,19 +1143,28 @@ expr_streval (tok, e, lvalue) SHELL_VAR *v; char *value; intmax_t tval; + int initial_depth; #if defined (ARRAY_VARS) arrayind_t ind; + int tflag, aflag; #endif -/*itrace("expr_streval: %s: noeval = %d", tok, noeval);*/ +/*itrace("expr_streval: %s: noeval = %d expanded=%d", tok, noeval, already_expanded);*/ /* If we are suppressing evaluation, just short-circuit here instead of going through the rest of the evaluator. */ if (noeval) return (0); + initial_depth = expr_depth; + +#if defined (ARRAY_VARS) + tflag = assoc_expand_once && already_expanded; /* for a start */ +#endif + /* [[[[[ */ #if defined (ARRAY_VARS) - v = (e == ']') ? array_variable_part (tok, (char **)0, (int *)0) : find_variable (tok); + aflag = (tflag) ? AV_NOEXPAND : 0; + v = (e == ']') ? array_variable_part (tok, tflag, (char **)0, (int *)0) : find_variable (tok); #else v = find_variable (tok); #endif @@ -1113,7 +1172,7 @@ expr_streval (tok, e, lvalue) if ((v == 0 || invisible_p (v)) && unbound_vars_is_error) { #if defined (ARRAY_VARS) - value = (e == ']') ? array_variable_name (tok, (char **)0, (int *)0) : tok; + value = (e == ']') ? array_variable_name (tok, tflag, (char **)0, (int *)0) : tok; #else value = tok; #endif @@ -1141,15 +1200,23 @@ expr_streval (tok, e, lvalue) #if defined (ARRAY_VARS) ind = -1; - /* Second argument of 0 to get_array_value means that we don't allow - references like array[@]. In this case, get_array_value is just - like get_variable_value in that it does not return newly-allocated - memory or quote the results. */ - value = (e == ']') ? get_array_value (tok, 0, (int *)NULL, &ind) : get_variable_value (v); + /* If the second argument to get_array_value doesn't include AV_ALLOWALL, + we don't allow references like array[@]. In this case, get_array_value + is just like get_variable_value in that it does not return newly-allocated + memory or quote the results. AFLAG is set above and is either AV_NOEXPAND + or 0. */ + value = (e == ']') ? get_array_value (tok, aflag, (int *)NULL, &ind) : get_variable_value (v); #else value = get_variable_value (v); #endif + if (expr_depth < initial_depth) + { + if (no_longjmp_on_fatal_error && interactive_shell) + sh_longjmp (evalbuf, 1); + return (0); + } + tval = (value && *value) ? subexpr (value) : 0; if (lvalue) @@ -1270,7 +1337,7 @@ readtok () #if defined (ARRAY_VARS) if (c == '[') { - e = skipsubscript (cp, 0, 0); + e = expr_skipsubscript (tp, cp); /* XXX - was skipsubscript */ if (cp[e] == ']') { cp += e + 1; @@ -1371,6 +1438,14 @@ readtok () c = POWER; else if ((c == '-' || c == '+') && c1 == c && curtok == STR) c = (c == '-') ? POSTDEC : POSTINC; + else if ((c == '-' || c == '+') && c1 == c && curtok == NUM && (lasttok == PREINC || lasttok == PREDEC)) + { + /* This catches something like --FOO++ */ + if (c == '-') + evalerror ("--: assignment requires lvalue"); + else + evalerror ("++: assignment requires lvalue"); + } else if ((c == '-' || c == '+') && c1 == c) { /* Quickly scan forward to see if this is followed by optional @@ -1381,7 +1456,20 @@ readtok () if (legal_variable_starter ((unsigned char)*xp)) c = (c == '-') ? PREDEC : PREINC; else + /* Could force parsing as preinc or predec and throw an error */ +#if 0 + { + /* Posix says unary plus and minus have higher priority than + preinc and predec. */ + /* This catches something like --4++ */ + if (c == '-') + evalerror ("--: assignment requires lvalue"); + else + evalerror ("++: assignment requires lvalue"); + } +#else cp--; /* not preinc or predec, so unget the character */ +#endif } else if (c1 == EQ && member (c, "*/%+-&^|")) { @@ -1417,11 +1505,11 @@ evalerror (msg) char *name, *t; name = this_command_name; - for (t = expression; whitespace (*t); t++) + for (t = expression; t && whitespace (*t); t++) ; internal_error (_("%s%s%s: %s (error token is \"%s\")"), - name ? name : "", name ? ": " : "", t, - msg, (lasttp && *lasttp) ? lasttp : ""); + name ? name : "", name ? ": " : "", + t ? t : "", msg, (lasttp && *lasttp) ? lasttp : ""); sh_longjmp (evalbuf, 1); } @@ -1544,7 +1632,7 @@ main (argc, argv) for (i = 1; i < argc; i++) { - v = evalexp (argv[i], &expok); + v = evalexp (argv[i], 0, &expok); if (expok == 0) fprintf (stderr, _("%s: expression error\n"), argv[i]); else diff --git a/externs.h b/externs.h index fa0603d34..72df33d16 100644 --- a/externs.h +++ b/externs.h @@ -27,7 +27,9 @@ #include "stdc.h" /* Functions from expr.c. */ -extern intmax_t evalexp __P((char *, int *)); +#define EXP_EXPANDED 0x01 + +extern intmax_t evalexp __P((char *, int, int *)); /* Functions from print_cmd.c. */ #define FUNC_MULTILINE 0x01 @@ -92,6 +94,7 @@ extern void get_current_user_info __P((void)); /* Functions from eval.c. */ extern int reader_loop __P((void)); +extern int pretty_print_loop __P((void)); extern int parse_command __P((void)); extern int read_command __P((void)); @@ -106,6 +109,7 @@ extern int return_EOF __P((void)); extern void push_token __P((int)); extern char *xparse_dolparen __P((char *, char *, int *, int)); extern void reset_parser __P((void)); +extern void reset_readahead_token __P((void)); extern WORD_LIST *parse_string_to_word_list __P((char *, int, const char *)); extern int parser_in_command_position __P((void)); @@ -137,6 +141,9 @@ extern char *get_locale_var __P((char *)); extern char *localetrans __P((char *, int, int *)); extern char *mk_msgstr __P((char *, int *)); extern char *localeexpand __P((char *, int, int, int, int *)); +#ifndef locale_decpoint +extern int locale_decpoint __P((void)); +#endif /* Declarations for functions defined in list.c. */ extern void list_walk __P((GENERIC_LIST *, sh_glist_func_t *)); @@ -336,7 +343,7 @@ extern char *dirspell __P((char *)); /* declarations for functions defined in lib/sh/strcasecmp.c */ #if !defined (HAVE_STRCASECMP) -extern int strncasecmp __P((const char *, const char *, int)); +extern int strncasecmp __P((const char *, const char *, size_t)); extern int strcasecmp __P((const char *, const char *)); #endif /* HAVE_STRCASECMP */ @@ -479,6 +486,14 @@ extern unsigned int fsleep __P((unsigned int, unsigned int)); extern int u32cconv __P((unsigned long, char *)); extern void u32reset __P((void)); +/* declarations for functions defined in lib/sh/utf8.c */ +extern char *utf8_mbschr __P((const char *, int)); +extern int utf8_mbscmp __P((const char *, const char *)); +extern char *utf8_mbsmbchar __P((const char *)); +extern int utf8_mbsnlen __P((const char *, size_t, int)); +extern int utf8_mblen __P((const char *, size_t)); +extern size_t utf8_mbstrlen __P((const char *)); + /* declarations for functions defined in lib/sh/wcsnwidth.c */ #if defined (HANDLE_MULTIBYTE) extern int wcsnwidth __P((const wchar_t *, size_t, int)); diff --git a/findcmd.c b/findcmd.c index 7ff349ce8..c3f00a408 100644 --- a/findcmd.c +++ b/findcmd.c @@ -1,6 +1,6 @@ /* findcmd.c -- Functions to search for commands by name. */ -/* Copyright (C) 1997-2015 Free Software Foundation, Inc. +/* Copyright (C) 1997-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -38,6 +38,7 @@ #include "memalloc.h" #include "shell.h" +#include "execute_cmd.h" #include "flags.h" #include "hashlib.h" #include "pathexp.h" @@ -50,9 +51,6 @@ extern int errno; #endif -extern int posixly_correct; -extern int last_command_exit_value; - /* Static functions defined and used in this file. */ static char *_find_user_command_internal __P((const char *, int)); static char *find_user_command_internal __P((const char *, int)); @@ -339,7 +337,7 @@ search_for_command (pathname, flags) const char *pathname; int flags; { - char *hashed_file, *command, *pathlist; + char *hashed_file, *command, *path_list; int temp_path, st; SHELL_VAR *path; @@ -380,13 +378,13 @@ search_for_command (pathname, flags) else { if (flags & CMDSRCH_STDPATH) - pathlist = conf_standard_path (); + path_list = conf_standard_path (); else if (temp_path || path) - pathlist = value_cell (path); + path_list = value_cell (path); else - pathlist = 0; + path_list = 0; - command = find_user_command_in_path (pathname, pathlist, FS_EXEC_PREFERRED|FS_NODIRS); + command = find_user_command_in_path (pathname, path_list, FS_EXEC_PREFERRED|FS_NODIRS); if (command && hashing_enabled && temp_path == 0 && (flags & CMDSRCH_HASH)) { @@ -404,7 +402,7 @@ search_for_command (pathname, flags) } if (flags & CMDSRCH_STDPATH) - free (pathlist); + free (path_list); } return (command); diff --git a/findcmd.h b/findcmd.h index bc4a41afb..34b491495 100644 --- a/findcmd.h +++ b/findcmd.h @@ -39,4 +39,9 @@ extern char *search_for_command __P((const char *, int)); extern char *user_command_matches __P((const char *, int, int)); extern void setup_exec_ignore __P((char *)); +extern int dot_found_in_search; + +/* variables managed via shopt */ +extern int check_hashed_filenames; + #endif /* _FINDCMD_H_ */ diff --git a/flags.c b/flags.c index 4b94fb030..6e208419f 100644 --- a/flags.c +++ b/flags.c @@ -25,6 +25,7 @@ #endif #include "shell.h" +#include "execute_cmd.h" #include "flags.h" #if defined (BANG_HISTORY) @@ -35,16 +36,6 @@ extern int set_job_control __P((int)); #endif -#if defined (RESTRICTED_SHELL) -extern char *shell_name; -#endif - -extern int shell_initialized; -extern int builtin_ignoring_errexit; - -/* -c, -s invocation options -- not really flags, but they show up in $- */ -extern int want_pending_command, read_from_stdin; - /* **************************************************************** */ /* */ /* The Standard sh Flags. */ @@ -130,11 +121,8 @@ int hashing_enabled = 1; #if defined (BANG_HISTORY) /* Non-zero means that we are doing history expansion. The default. This means !22 gets the 22nd line of history. */ -# if defined (STRICT_POSIX) -int history_expansion = 0; -# else -int history_expansion = 1; -# endif +int history_expansion = HISTEXPAND_DEFAULT; +int histexp_flag = 0; #endif /* BANG_HISTORY */ /* Non-zero means that we allow comments to appear in interactive commands. */ @@ -211,7 +199,7 @@ const struct flags_alist shell_flags[] = { { 'C', &noclobber }, { 'E', &error_trace_mode }, #if defined (BANG_HISTORY) - { 'H', &history_expansion }, + { 'H', &histexp_flag }, #endif /* BANG_HISTORY */ { 'I', &no_invisible_vars }, { 'P', &no_symbolic_links }, @@ -265,6 +253,7 @@ change_flag (flag, on_or_off) { #if defined (BANG_HISTORY) case 'H': + history_expansion = histexp_flag; if (on_or_off == FLAG_ON) bash_initialize_history (); break; diff --git a/flags.h b/flags.h index d5ed334e1..fdbf7f975 100644 --- a/flags.h +++ b/flags.h @@ -50,6 +50,9 @@ extern int asynchronous_notification, interactive_comments, no_symbolic_links, function_trace_mode, error_trace_mode, pipefail_opt; +/* -c, -s invocation options -- not really flags, but they show up in $- */ +extern int want_pending_command, read_from_stdin; + #if 0 extern int lexical_scoping; #endif @@ -60,6 +63,7 @@ extern int brace_expansion; #if defined (BANG_HISTORY) extern int history_expansion; +extern int histexp_flag; #endif /* BANG_HISTORY */ #if defined (RESTRICTED_SHELL) diff --git a/general.c b/general.c index 2d327add6..9542963aa 100644 --- a/general.c +++ b/general.c @@ -39,9 +39,14 @@ #include "bashintl.h" #include "shell.h" +#include "parser.h" +#include "flags.h" +#include "findcmd.h" #include "test.h" #include "trap.h" +#include "builtins/common.h" + #if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) # include /* mbschr */ #endif @@ -52,13 +57,9 @@ extern int errno; #endif /* !errno */ -extern int expand_aliases; -extern int interactive_comments; -extern int check_hashed_filenames; -extern int source_uses_path; -extern int source_searches_cwd; -extern int posixly_correct; -extern int inherit_errexit; +#ifdef __CYGWIN__ +# include +#endif static char *bash_special_tilde_expansions __P((char *)); static int unquoted_tilde_word __P((const char *)); @@ -67,7 +68,33 @@ static void initialize_group_array __P((void)); /* A standard error message to use when getcwd() returns NULL. */ const char * const bash_getcwd_errstr = N_("getcwd: cannot access parent directories"); -/* Do whatever is necessary to initialize `Posix mode'. */ +/* Do whatever is necessary to initialize `Posix mode'. This currently + modifies the following variables which are controlled via shopt: + interactive_comments + source_uses_path + expand_aliases + inherit_errexit + print_shift_error + + and the following variables which cannot be user-modified: + + source_searches_cwd + + If we add to the first list, we need to change the table and functions + below */ + +static struct { + int *posix_mode_var; +} posix_vars[] = +{ + &interactive_comments, + &source_uses_path, + &expand_aliases, + &inherit_errexit, + &print_shift_error, + 0 +}; + void posix_initialize (on) int on; @@ -78,6 +105,8 @@ posix_initialize (on) interactive_comments = source_uses_path = expand_aliases = 1; inherit_errexit = 1; source_searches_cwd = 0; + print_shift_error = 1; + } /* Things that should be turned on when posix mode is disabled. */ @@ -85,9 +114,39 @@ posix_initialize (on) { source_searches_cwd = 1; expand_aliases = interactive_shell; + print_shift_error = 0; } } +int +num_posix_options () +{ + return ((sizeof (posix_vars) / sizeof (posix_vars[0])) - 1); +} + +char * +get_posix_options (bitmap) + char *bitmap; +{ + register int i; + + if (bitmap == 0) + bitmap = (char *)xmalloc (num_posix_options ()); /* no trailing NULL */ + for (i = 0; posix_vars[i].posix_mode_var; i++) + bitmap[i] = *(posix_vars[i].posix_mode_var); + return bitmap; +} + +void +set_posix_options (bitmap) + const char *bitmap; +{ + register int i; + + for (i = 0; posix_vars[i].posix_mode_var; i++) + *(posix_vars[i].posix_mode_var) = bitmap[i]; +} + /* **************************************************************** */ /* */ /* Functions to convert to and from and display non-standard types */ @@ -265,7 +324,7 @@ check_selfref (name, value, flags) #if defined (ARRAY_VARS) if (valid_array_reference (value, 0)) { - t = array_variable_name (value, (char **)NULL, (int *)NULL); + t = array_variable_name (value, 0, (char **)NULL, (int *)NULL); if (t && STREQ (name, t)) { free (t); @@ -349,7 +408,8 @@ legal_alias_name (string, flags) } /* Returns non-zero if STRING is an assignment statement. The returned value - is the index of the `=' sign. */ + is the index of the `=' sign. If FLAGS&1 we are expecting a compound assignment + and don't want an array subscript before the `='. */ int assignment (string, flags) const char *string; @@ -361,7 +421,7 @@ assignment (string, flags) c = string[indx = 0]; #if defined (ARRAY_VARS) - if ((legal_variable_starter (c) == 0) && (flags == 0 || c != '[')) /* ] */ + if ((legal_variable_starter (c) == 0) && ((flags&1) == 0 || c != '[')) /* ] */ #else if (legal_variable_starter (c) == 0) #endif @@ -377,7 +437,9 @@ assignment (string, flags) #if defined (ARRAY_VARS) if (c == '[') { - newi = skipsubscript (string, indx, 0); + newi = skipsubscript (string, indx, (flags & 2) ? 1 : 0); + /* XXX - why not check for blank subscripts here, if we do in + valid_array_reference? */ if (string[newi++] != ']') return (0); if (string[newi] == '+' && string[newi+1] == '=') @@ -400,6 +462,20 @@ assignment (string, flags) return (0); } +int +line_isblank (line) + const char *line; +{ + register int i; + + if (line == 0) + return 0; /* XXX */ + for (i = 0; line[i]; i++) + if (isblank ((unsigned char)line[i]) == 0) + break; + return (line[i] == '\0'); +} + /* **************************************************************** */ /* */ /* Functions to manage files and file descriptors */ @@ -447,6 +523,14 @@ sh_unset_nodelay_mode (fd) return 0; } +/* Just a wrapper for the define in include/filecntl.h */ +int +sh_setclexec (fd) + int fd; +{ + return (SET_CLOSE_ON_EXEC (fd)); +} + /* Return 1 if file descriptor FD is valid; 0 otherwise. */ int sh_validfd (fd) @@ -718,7 +802,8 @@ make_absolute (string, dot_path) { char pathbuf[PATH_MAX + 1]; - cygwin_conv_to_full_posix_path (string, pathbuf); + /* WAS cygwin_conv_to_full_posix_path (string, pathbuf); */ + cygwin_conv_path (CCP_WIN_A_TO_POSIX, string, pathbuf, PATH_MAX); result = savestring (pathbuf); } #else @@ -1321,3 +1406,26 @@ conf_standard_path () # endif /* !CS_PATH */ #endif /* !_CS_PATH || !HAVE_CONFSTR */ } + +int +default_columns () +{ + char *v; + int c; + + c = -1; + v = get_string_value ("COLUMNS"); + if (v && *v) + { + c = atoi (v); + if (c > 0) + return c; + } + + if (check_window_size) + get_new_window_size (0, (int *)0, &c); + + return (c > 0 ? c : 80); +} + + diff --git a/general.h b/general.h index 819634ce2..638d23727 100644 --- a/general.h +++ b/general.h @@ -92,15 +92,34 @@ extern char *strcpy __P((char *, const char *)); /* Nonzero if the integer type T is signed. */ #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) +/* The width in bits of the integer type or expression T. + Padding bits are not supported; this is checked at compile-time below. */ +#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) + +/* Bound on length of the string representing an unsigned integer + value representable in B bits. log10 (2.0) < 146/485. The + smallest value of B where this bound is not tight is 2621. */ +#define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485) + /* Bound on length of the string representing an integer value of type T. Subtract one for the sign bit if T is signed; 302 / 1000 is log10 (2) rounded up; add one for integer division truncation; add one more for a minus sign if t is signed. */ #define INT_STRLEN_BOUND(t) \ - ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 \ + ((TYPE_WIDTH (t) - TYPE_SIGNED (t)) * 302 / 1000 \ + 1 + TYPE_SIGNED (t)) +/* Updated version adapted from gnulib/intprops.h, not used right now. + Changes the approximation of log10(2) from 302/1000 to 146/485. */ +#if 0 +#define INT_STRLEN_BOUND(t) \ + (INT_BITS_STRLEN_BOUND (TYPE_WIDTH (t) - TYPE_SIGNED (t)) + TYPE_SIGNED(t)) +#endif + +/* Bound on buffer size needed to represent an integer type or expression T, + including the terminating null. */ +#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) /* Define exactly what a legal shell identifier consists of. */ #define legal_variable_starter(c) (ISALPHA(c) || (c == '_')) @@ -278,6 +297,10 @@ extern void xfree __P((void *)); /* Declarations for functions defined in general.c */ extern void posix_initialize __P((int)); +extern int num_posix_options __P((void)); +extern char *get_posix_options __P((char *)); +extern void set_posix_options __P((const char *)); + #if defined (RLIMTYPE) extern RLIMTYPE string_to_rlimtype __P((char *)); extern void print_rlimtype __P((RLIMTYPE, int)); @@ -292,9 +315,11 @@ extern int check_identifier __P((WORD_DESC *, int)); extern int valid_nameref_value __P((const char *, int)); extern int check_selfref __P((const char *, char *, int)); extern int legal_alias_name __P((const char *, int)); +extern int line_isblank __P((const char *)); extern int assignment __P((const char *, int)); extern int sh_unset_nodelay_mode __P((int)); +extern int sh_setclexec __P((int)); extern int sh_validfd __P((int)); extern int fd_ispipe __P((int)); extern void check_dev_tty __P((void)); @@ -333,5 +358,6 @@ extern char **get_group_list __P((int *)); extern int *get_group_array __P((int *)); extern char *conf_standard_path __P((void)); +extern int default_columns __P((void)); #endif /* _GENERAL_H_ */ diff --git a/hashcmd.c b/hashcmd.c index fc0bfbe27..c53764f11 100644 --- a/hashcmd.c +++ b/hashcmd.c @@ -31,11 +31,10 @@ #include "bashansi.h" #include "shell.h" +#include "flags.h" #include "findcmd.h" #include "hashcmd.h" -extern int hashing_enabled; - HASH_TABLE *hashed_filenames = (HASH_TABLE *)NULL; static void phash_freedata __P((PTR_T)); diff --git a/hashlib.c b/hashlib.c index e23641c32..8adbe221b 100644 --- a/hashlib.c +++ b/hashlib.c @@ -125,6 +125,20 @@ hash_copy (table, cpdata) return new_table; } +/* This is the best 32-bit string hash function I found. It's one of the + Fowler-Noll-Vo family (FNV-1). + + The magic is in the interesting relationship between the special prime + 16777619 (2^24 + 403) and 2^32 and 2^8. */ + +#define FNV_OFFSET 2166136261 +#define FNV_PRIME 16777619 + +/* If you want to use 64 bits, use +FNV_OFFSET 14695981039346656037 +FNV_PRIMT 1099511628211 +*/ + /* The `khash' check below requires that strings that compare equally with strcmp hash to the same value. */ unsigned int @@ -133,14 +147,9 @@ hash_string (s) { register unsigned int i; - /* This is the best string hash function I found. - - The magic is in the interesting relationship between the special prime - 16777619 (2^24 + 403) and 2^32 and 2^8. */ - - for (i = 0; *s; s++) + for (i = FNV_OFFSET; *s; s++) { - i *= 16777619; + i *= FNV_PRIME; i ^= *s; } diff --git a/include/shmbutil.h b/include/shmbutil.h index dbaaba86f..36902f16b 100644 --- a/include/shmbutil.h +++ b/include/shmbutil.h @@ -37,6 +37,7 @@ extern size_t mbstrlen __P((const char *)); extern char *xstrchr __P((const char *, int)); extern int locale_mb_cur_max; /* XXX */ +extern int locale_utf8locale; /* XXX */ #ifndef MB_INVALIDCH #define MB_INVALIDCH(x) ((x) == (size_t)-1 || (x) == (size_t)-2) @@ -49,6 +50,10 @@ extern int locale_mb_cur_max; /* XXX */ #define MBLEN(s, n) ((MB_CUR_MAX > 1) ? mblen ((s), (n)) : 1) #define MBRLEN(s, n, p) ((MB_CUR_MAX > 1) ? mbrlen ((s), (n), (p)) : 1) +#define UTF8_SINGLEBYTE(c) (((c) & 0x80) == 0) +#define UTF8_MBFIRSTCHAR(c) (((c) & 0xc0) == 0xc0) +#define UTF8_MBCHAR(c) (((c) & 0xc0) == 0x80) + #else /* !HANDLE_MULTIBYTE */ #undef MB_LEN_MAX @@ -74,6 +79,9 @@ extern int locale_mb_cur_max; /* XXX */ # define wchar_t int #endif +#define UTF8_SINGLEBYTE(c) (1) +#define UTF8_MBFIRSTCHAR(c) (0) + #endif /* !HANDLE_MULTIBYTE */ /* Declare and initialize a multibyte state. Call must be terminated @@ -109,6 +117,8 @@ extern int locale_mb_cur_max; /* XXX */ _f = is_basic ((_str)[_i]); \ if (_f) \ mblength = 1; \ + else if (locale_utf8locale && (((_str)[_i] & 0x80) == 0)) \ + mblength = (_str)[_i] != 0; \ else \ { \ state_bak = state; \ @@ -149,6 +159,8 @@ extern int locale_mb_cur_max; /* XXX */ _f = is_basic (*(_str)); \ if (_f) \ mblength = 1; \ + else if (locale_utf8locale && ((*(_str) & 0x80) == 0)) \ + mblength = *(_str) != 0; \ else \ { \ state_bak = state; \ @@ -267,6 +279,8 @@ extern int locale_mb_cur_max; /* XXX */ _k = is_basic (*(_src)); \ if (_k) \ mblength = 1; \ + else if (locale_utf8locale && ((*(_src) & 0x80) == 0)) \ + mblength = *(_src) != 0; \ else \ { \ state_bak = state; \ @@ -440,6 +454,8 @@ extern int locale_mb_cur_max; /* XXX */ i = is_basic (*((_src) + (_si))); \ if (i) \ mblength = 1; \ + else if (locale_utf8locale && (((_src)[_si] & 0x80) == 0)) \ + mblength = (_src)[_si] != 0; \ else \ { \ state_bak = state; \ @@ -478,6 +494,8 @@ extern int locale_mb_cur_max; /* XXX */ i = is_basic (*((_src) + (_si))); \ if (i) \ mblength = 1; \ + else if (locale_utf8locale && (((_src)[_si] & 0x80) == 0)) \ + mblength = (_src)[_si] != 0; \ else \ { \ state_bak = state; \ diff --git a/include/stdc.h b/include/stdc.h index d2fd4b258..c66492f03 100644 --- a/include/stdc.h +++ b/include/stdc.h @@ -36,6 +36,16 @@ # endif #endif +/* New definition to use, moving away from __P since it's part of a reserved + namespace */ +#if !defined (PARAMS) +# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) || defined (PROTOTYPES) +# define PARAMS(protos) protos +# else +# define PARAMS(protos) () +# endif +#endif + /* Fortify, at least, has trouble with this definition */ #if defined (HAVE_STRINGIZE) # define CPP_STRING(x) #x diff --git a/include/typemax.h b/include/typemax.h index aa21c9c66..0f696388b 100644 --- a/include/typemax.h +++ b/include/typemax.h @@ -35,14 +35,23 @@ # define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) #endif +#ifndef TYPE_SIGNED_MAGNITUDE +# define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1) +#endif + +#ifndef TYPE_WIDTH +# define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) +#endif + #ifndef TYPE_MINIMUM -# define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \ - ? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) \ - : (t) 0)) +# define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t)) #endif #ifndef TYPE_MAXIMUM -# define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t))) +# define TYPE_MAXIMUM(t) \ + ((t) (! TYPE_SIGNED (t) \ + ? (t) -1 \ + : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1))) #endif #ifdef HAVE_LONG_LONG diff --git a/input.c b/input.c index 308b87e42..8b3e4259b 100644 --- a/input.c +++ b/input.c @@ -1,6 +1,6 @@ /* input.c -- functions to perform buffered input with synchronization. */ -/* Copyright (C) 1992-2009 Free Software Foundation, Inc. +/* Copyright (C) 1992-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -36,12 +36,9 @@ #include "bashansi.h" #include "bashintl.h" -#include "command.h" -#include "general.h" +#include "shell.h" #include "input.h" -#include "error.h" #include "externs.h" -#include "quit.h" #include "trap.h" #if !defined (errno) @@ -153,8 +150,6 @@ ungetc_with_restart (c, stream) #endif #define min(a, b) ((a) > (b) ? (b) : (a)) -extern int interactive_shell; - int bash_input_fd_changed; /* This provides a way to map from a file descriptor to the buffer @@ -277,6 +272,8 @@ save_bash_input (fd, new_fd) /* What's this? A stray buffer without an associated open file descriptor? Free up the buffer and report the error. */ internal_error (_("save_bash_input: buffer already exists for new fd %d"), nfd); + if (buffers[nfd]->b_flag & B_SHAREDBUF) + buffers[nfd]->b_buffer = (char *)NULL; free_buffered_stream (buffers[nfd]); } @@ -356,6 +353,12 @@ duplicate_buffered_stream (fd1, fd2) /* If the two objects share the same b_buffer, don't free it. */ if (buffers[fd1] && buffers[fd1]->b_buffer && buffers[fd1]->b_buffer == buffers[fd2]->b_buffer) buffers[fd2] = (BUFFERED_STREAM *)NULL; + /* If this buffer is shared with another fd, don't free the buffer */ + else if (buffers[fd2]->b_flag & B_SHAREDBUF) + { + buffers[fd2]->b_buffer = (char *)NULL; + free_buffered_stream (buffers[fd2]); + } else free_buffered_stream (buffers[fd2]); } @@ -370,6 +373,9 @@ duplicate_buffered_stream (fd1, fd2) buffers[fd2]->b_flag |= B_WASBASHINPUT; } + if (fd_is_bash_input (fd1) || (buffers[fd1] && (buffers[fd1]->b_flag & B_SHAREDBUF))) + buffers[fd2]->b_flag |= B_SHAREDBUF; + return (fd2); } @@ -441,6 +447,8 @@ close_buffered_stream (bp) if (!bp) return (0); fd = bp->b_fd; + if (bp->b_flag & B_SHAREDBUF) + bp->b_buffer = (char *)NULL; free_buffered_stream (bp); return (close (fd)); } @@ -504,7 +512,7 @@ b_fill_buffer (bp) nr = zread (bp->b_fd, bp->b_buffer, bp->b_size); if (nr <= 0) { - bp->b_used = 0; + bp->b_used = bp->b_inputp = 0; bp->b_buffer[0] = 0; if (nr == 0) bp->b_flag |= B_EOF; @@ -530,7 +538,7 @@ bufstream_ungetc(c, bp) int c; BUFFERED_STREAM *bp; { - if (c == EOF || bp->b_inputp == 0) + if (c == EOF || bp == 0 || bp->b_inputp == 0) return (EOF); bp->b_buffer[--bp->b_inputp] = c; @@ -561,6 +569,9 @@ buffered_getchar () { CHECK_TERMSIG; + if (bash_input.location.buffered_fd < 0 || buffers[bash_input.location.buffered_fd] == 0) + return EOF; + #if !defined (DJGPP) return (bufstream_getc (buffers[bash_input.location.buffered_fd])); #else diff --git a/input.h b/input.h index 0cbfcbee7..6aef12692 100644 --- a/input.h +++ b/input.h @@ -1,6 +1,6 @@ /* input.h -- Structures and unions used for reading input. */ -/* Copyright (C) 1993-2009 Free Software Foundation, Inc. +/* Copyright (C) 1993-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -49,6 +49,7 @@ enum stream_type {st_none, st_stdin, st_stream, st_string, st_bstream}; #define B_UNBUFF 0x04 #define B_WASBASHINPUT 0x08 #define B_TEXT 0x10 +#define B_SHAREDBUF 0x20 /* shared input buffer */ /* A buffered stream. Like a FILE *, but with our own buffering and synchronization. Look in input.c for the implementation. */ @@ -67,6 +68,7 @@ extern BUFFERED_STREAM **buffers; #endif extern int default_buffered_input; +extern int bash_input_fd_changed; #endif /* BUFFERED_INPUT */ diff --git a/jobs.c b/jobs.c index 5ee21e103..ce2bdf248 100644 --- a/jobs.c +++ b/jobs.c @@ -3,7 +3,7 @@ /* This file works with both POSIX and BSD systems. It implements job control. */ -/* Copyright (C) 1989-2015 Free Software Foundation, Inc. +/* Copyright (C) 1989-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -68,10 +68,13 @@ #include "bashansi.h" #include "bashintl.h" #include "shell.h" +#include "parser.h" #include "jobs.h" #include "execute_cmd.h" #include "flags.h" +#include "typemax.h" + #include "builtins/builtext.h" #include "builtins/common.h" @@ -92,7 +95,7 @@ extern int killpg __P((pid_t, int)); #endif #if !MAX_CHILD_MAX -# define MAX_CHILD_MAX 8192 +# define MAX_CHILD_MAX 32768 #endif #if !defined (DEBUG) @@ -162,19 +165,7 @@ extern int killpg __P((pid_t, int)); typedef int sh_job_map_func_t __P((JOB *, int, int, int)); /* Variables used here but defined in other files. */ -extern int subshell_environment, line_number; -extern int posixly_correct, shell_level; -extern int last_command_exit_value, last_command_exit_signal; -extern int loop_level, breaking; -extern int executing_list; -extern int sourcelevel; -extern int running_trap; -extern sh_builtin_func_t *this_shell_builtin; -extern char *shell_name, *this_command_name; extern sigset_t top_level_mask; -extern procenv_t wait_intr_buf; -extern int wait_intr_flag; -extern int wait_signal_received; extern WORD_LIST *subst_assign_varlist; extern SigHandler **original_signals; @@ -217,14 +208,6 @@ pid_t pipeline_pgrp = (pid_t)0; int pgrp_pipe[2] = { -1, -1 }; #endif -#if 0 -/* The job which is current; i.e. the one that `%+' stands for. */ -int current_job = NO_JOB; - -/* The previous job; i.e. the one that `%-' stands for. */ -int previous_job = NO_JOB; -#endif - /* Last child made by the shell. */ volatile pid_t last_made_pid = NO_PID; @@ -251,6 +234,8 @@ PROCESS *last_procsub_child = (PROCESS *)NULL; /* Functions local to this file. */ +void debug_print_pgrps (void); + static sighandler wait_sigint_handler __P((int)); static sighandler sigchld_handler __P((int)); static sighandler sigcont_sighandler __P((int)); @@ -315,6 +300,8 @@ static int bgp_delete __P((pid_t)); static void bgp_clear __P((void)); static int bgp_search __P((pid_t)); +static struct pipeline_saver *alloc_pipeline_saver __P((void)); + static ps_index_t bgp_getindex __P((void)); static void bgp_resize __P((void)); /* XXX */ @@ -468,7 +455,7 @@ discard_last_procsub_child () discard_pipeline (disposer); } -struct pipeline_saver * +static struct pipeline_saver * alloc_pipeline_saver () { struct pipeline_saver *ret; @@ -645,6 +632,8 @@ stop_pipeline (async, deferred) pipeline_pgrp = 0; newjob->flags = 0; + if (pipefail_opt) + newjob->flags |= J_PIPEFAIL; /* Flag to see if in another pgrp. */ if (job_control) @@ -703,7 +692,7 @@ stop_pipeline (async, deferred) { newjob->flags |= J_FOREGROUND; /* - * !!!!! NOTE !!!!! (chet@ins.cwru.edu) + * !!!!! NOTE !!!!! (chet@po.cwru.edu) * * The currently-accepted job control wisdom says to set the * terminal's process group n+1 times in an n-step pipeline: @@ -751,7 +740,7 @@ stop_pipeline (async, deferred) static void bgp_resize () { - ps_index_t nsize; + ps_index_t nsize, nsize_cur, nsize_max; ps_index_t psi; if (bgpids.nalloc == 0) @@ -765,10 +754,19 @@ bgp_resize () else nsize = bgpids.nalloc; - while (nsize < js.c_childmax) - nsize *= 2; + nsize_max = TYPE_MAXIMUM (ps_index_t); + nsize_cur = (ps_index_t)js.c_childmax; + if (nsize_cur < 0) /* overflow */ + nsize_cur = MAX_CHILD_MAX; + + while (nsize > 0 && nsize < nsize_cur) /* > 0 should catch overflow */ + nsize <<= 1; + if (nsize > nsize_max || nsize <= 0) /* overflow? */ + nsize = nsize_max; + if (nsize > MAX_CHILD_MAX) + nsize = nsize_max = MAX_CHILD_MAX; /* hard cap */ - if (bgpids.nalloc < js.c_childmax) + if (bgpids.nalloc < nsize_cur && bgpids.nalloc < nsize_max) { bgpids.storage = (struct pidstat *)xrealloc (bgpids.storage, nsize * sizeof (struct pidstat)); @@ -785,9 +783,7 @@ bgp_resize () static ps_index_t bgp_getindex () { - ps_index_t psi; - - if (bgpids.nalloc < js.c_childmax || bgpids.head >= bgpids.nalloc) + if (bgpids.nalloc < (ps_index_t)js.c_childmax || bgpids.head >= bgpids.nalloc) bgp_resize (); pshash_delindex (bgpids.head); /* XXX - clear before reusing */ @@ -871,7 +867,7 @@ pshash_delindex (psi) *bucket = ps->bucket_next; /* deleting chain head in hash table */ } - /* clear out this cell, just in case */ + /* clear out this cell, in case it gets reused. */ ps->pid = NO_PID; ps->bucket_next = ps->bucket_prev = NO_PIDSTAT; } @@ -1010,6 +1006,7 @@ cleanup_dead_jobs () { register int i; int os; + PROCESS *discard; if (js.j_jobslots == 0 || jobs_list_frozen) return; @@ -1034,8 +1031,9 @@ cleanup_dead_jobs () if (last_procsub_child && last_procsub_child->running == PS_DONE) { bgp_add (last_procsub_child->pid, process_exit_status (last_procsub_child->status)); /* XXX */ - discard_pipeline (last_procsub_child); + discard = last_procsub_child; last_procsub_child = (PROCESS *)NULL; + discard_pipeline (discard); } #endif @@ -1997,6 +1995,9 @@ make_child (command, async_p) signals to the default state for a new process. */ pid_t mypid; + /* If this ends up being changed to modify or use `command' in the + child process, go back and change callers who free `command' in + the child process when this returns. */ mypid = getpid (); #if defined (BUFFERED_INPUT) /* Close default_buffered_input if it's > 0. We don't close it if it's @@ -2369,8 +2370,8 @@ find_last_pid (job, block) This low-level function prints an error message if PID is not a child of this shell. It returns -1 if it fails, or whatever wait_for returns otherwise. If the child is not found in the - jobs table, it returns 127. If FLAGS doesn't include 1, we - suppress the error message if PID isn't found. */ + jobs table, it returns 127. If FLAGS doesn't include JWAIT_PERROR, + we suppress the error message if PID isn't found. */ int wait_for_single_pid (pid, flags) @@ -2379,7 +2380,7 @@ wait_for_single_pid (pid, flags) { register PROCESS *child; sigset_t set, oset; - int r, job; + int r, job, alive; BLOCK_CHILD (set, oset); child = find_pipeline (pid, 0, (int *)NULL); @@ -2394,12 +2395,23 @@ wait_for_single_pid (pid, flags) if (child == 0) { - if (flags & 1) + if (flags & JWAIT_PERROR) internal_error (_("wait: pid %ld is not a child of this shell"), (long)pid); return (127); } - r = wait_for (pid); + alive = 0; + do + { + r = wait_for (pid); + if ((flags & JWAIT_FORCE) == 0) + break; + + BLOCK_CHILD (set, oset); + alive = PALIVE (child); + UNBLOCK_CHILD (oset); + } + while (alive); /* POSIX.2: if we just waited for a job, we can remove it from the jobs table. */ @@ -2423,11 +2435,12 @@ wait_for_single_pid (pid, flags) void wait_for_background_pids () { - register int i, r, waited_for; + register int i, r; + int any_stopped, check_async; sigset_t set, oset; pid_t pid; - for (waited_for = 0;;) + for (any_stopped = 0, check_async = 1;;) { BLOCK_CHILD (set, oset); @@ -2441,6 +2454,12 @@ wait_for_background_pids () if (i > js.j_lastj && jobs[i]) itrace("wait_for_background_pids: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); #endif + if (jobs[i] && STOPPED (i)) + { + builtin_warning ("job %d[%d] stopped", i+1, find_last_pid (i, 0)); + any_stopped = 1; + } + if (jobs[i] && RUNNING (i) && IS_FOREGROUND (i) == 0) break; } @@ -2455,17 +2474,36 @@ wait_for_background_pids () UNBLOCK_CHILD (oset); QUIT; errno = 0; /* XXX */ - r = wait_for_single_pid (pid, 1); - if (r == -1) + r = wait_for_single_pid (pid, JWAIT_PERROR); + if (r == -1 && errno == ECHILD) { /* If we're mistaken about job state, compensate. */ - if (errno == ECHILD) - mark_all_jobs_as_dead (); + check_async = 0; + mark_all_jobs_as_dead (); } - else - waited_for++; } +#if defined (PROCESS_SUBSTITUTION) + if (last_procsub_child && last_procsub_child->pid != NO_PID) + r = wait_for (last_procsub_child->pid); + wait_procsubs (); + reap_procsubs (); +#if 1 + /* We don't want to wait indefinitely if we have stopped children. */ + /* XXX - should add a loop that goes through the list of process + substitutions and waits for each proc in turn before this code. */ + if (any_stopped == 0) + { + /* Check whether or not we have any unreaped children. */ + while ((r = wait_for (ANY_PID)) >= 0) + { + QUIT; + CHECK_WAIT_INTR; + } + } +#endif +#endif + /* POSIX.2 says the shell can discard the statuses of all completed jobs if `wait' is called with no arguments. */ mark_dead_jobs_as_notified (1); @@ -2605,7 +2643,11 @@ raw_job_exit_status (job) int fail; WAIT ret; +#if 0 if (pipefail_opt) +#else + if (jobs[job]->flags & J_PIPEFAIL) +#endif { fail = 0; p = jobs[job]->pipe; @@ -2728,7 +2770,7 @@ wait_for (pid) job to finish. Otherwise, we are waiting for the child to finish. We check for JDEAD in case the job state has been set by waitchld after receipt of a SIGCHLD. */ - if (job == NO_JOB) /* XXX -- && pid != ANY_PID ? */ + if (job == NO_JOB && pid != ANY_PID) /* XXX -- && pid != ANY_PID ? */ job = find_job (pid, 0, NULL); /* waitchld() takes care of setting the state of the job. If the job @@ -2774,7 +2816,8 @@ itrace("wait_for: blocking wait for %d returns %d child = %p", (int)pid, r, chil if (r == -1 && errno == ECHILD && this_shell_builtin == wait_builtin) { termination_state = -1; - /* XXX - restore sigint handler here? */ + /* XXX - restore sigint handler here */ + restore_sigint_handler (); goto wait_for_return; } @@ -2818,9 +2861,12 @@ itrace("wait_for: blocking wait for %d returns %d child = %p", (int)pid, r, chil CHECK_WAIT_INTR; if (pid == ANY_PID) - /* XXX - could set child but we don't have a handle on what waitchld - reaps. Leave termination_state alone. */ - goto wait_for_return; + { + /* XXX - could set child but we don't have a handle on what waitchld + reaps. Leave termination_state alone. */ + restore_sigint_handler (); + goto wait_for_return; + } } while (PRUNNING (child) || (job != NO_JOB && RUNNING (job))); @@ -2927,6 +2973,10 @@ if (job == NO_JOB) loop. */ else if (signal_is_trapped (SIGINT) && loop_level) ADDINTERRUPT; + /* If an interactive shell with job control enabled is sourcing + a file, allow the interrupt to terminate the file sourcing. */ + else if (interactive_shell && signal_is_trapped (SIGINT) == 0 && sourcelevel) + ADDINTERRUPT; else { putchar ('\n'); @@ -2951,8 +3001,20 @@ if (job == NO_JOB) kill (getpid (), SIGINT); } } - else if (interactive_shell == 0 && IS_FOREGROUND (job) && check_window_size) - get_new_window_size (0, (int *)0, (int *)0); + else if (interactive_shell == 0 && subshell_environment == 0 && IS_FOREGROUND (job)) + { + s = job_signal_status (job); + + /* If we are non-interactive, but job control is enabled, and the job + died due to SIGINT, pretend we got the SIGINT */ + if (job_control && IS_JOBCONTROL (job) && WIFSIGNALED (s) && WTERMSIG (s) == SIGINT) + { + ADDINTERRUPT; /* For now */ + } + + if (check_window_size) + get_new_window_size (0, (int *)0, (int *)0); + } /* Moved here from set_job_status_and_cleanup, which is in the SIGCHLD signal handler path */ @@ -2976,22 +3038,39 @@ wait_for_return: /* Wait for the last process in the pipeline for JOB. Returns whatever wait_for returns: the last process's termination state or -1 if there - are no unwaited-for child processes or an error occurs. */ + are no unwaited-for child processes or an error occurs. If FLAGS + includes JWAIT_FORCE, we wait for the job to terminate, no just change + state */ int -wait_for_job (job) - int job; +wait_for_job (job, flags) + int job, flags; { pid_t pid; - int r; + int r, state; sigset_t set, oset; BLOCK_CHILD(set, oset); - if (JOBSTATE (job) == JSTOPPED) + state = JOBSTATE (job); + if (state == JSTOPPED) internal_warning (_("wait_for_job: job %d is stopped"), job+1); pid = find_last_pid (job, 0); UNBLOCK_CHILD(oset); - r = wait_for (pid); + + do + { + r = wait_for (pid); + if (r == -1 && errno == ECHILD) + mark_all_jobs_as_dead (); + + if ((flags & JWAIT_FORCE) == 0) + break; + + BLOCK_CHILD (set, oset); + state = (job != NO_JOB && jobs[job]) ? JOBSTATE (job) : JDEAD; + UNBLOCK_CHILD (oset); + } + while (state != JDEAD); /* POSIX.2: we can remove the job from the jobs table if we just waited for it. */ @@ -3008,10 +3087,11 @@ wait_for_job (job) the next exiting job, -1 if there are no background jobs. The caller is responsible for translating -1 into the right return value. */ int -wait_for_any_job () +wait_for_any_job (flags) + int flags; { pid_t pid; - int i, r, waited_for; + int i, r; sigset_t set, oset; if (jobs_list_frozen) @@ -3038,7 +3118,7 @@ return_job: /* At this point, we have no dead jobs in the jobs table. Wait until we get one, even if it takes multiple pids exiting. */ - for (waited_for = 0;;) + for (;;) { /* Make sure there is a background job to wait for */ BLOCK_CHILD (set, oset); @@ -3489,6 +3569,7 @@ waitchld (wpid, block) WAIT status; PROCESS *child; pid_t pid; + int ind; int call_set_current, last_stopped_job, job, children_exited, waitpid_flags; static int wcontinued = WCONTINUED; /* run-time fix for glibc problem */ @@ -3595,6 +3676,14 @@ itrace("waitchld: waitpid returns %d block = %d children_exited = %d", pid, bloc coproc_pidchk (pid, WSTATUS(status)); #endif +#if defined (PROCESS_SUBSTITUTION) + /* Only manipulate the list of process substitutions while SIGCHLD + is blocked. */ + if ((ind = find_procsub_child (pid)) >= 0) + set_procsub_status (ind, pid, WSTATUS (status)); + /* XXX - save in bgpids list? */ +#endif + /* It is not an error to have a child terminate that we did not have a record of. This child could have been part of a pipeline in backquote substitution. Even so, I'm not @@ -3640,7 +3729,7 @@ itrace("waitchld: waitpid returns %d block = %d children_exited = %d", pid, bloc } /* Call a SIGCHLD trap handler for each child that exits, if one is set. */ - if (job_control && children_exited && + if (children_exited && (signal_is_trapped (SIGCHLD) || trap_list[SIGCHLD] == (char *)IMPOSSIBLE_TRAP_HANDLER) && trap_list[SIGCHLD] != (char *)IGNORE_SIG) { @@ -3986,20 +4075,20 @@ notify_of_job_status () ((DEADJOB (job) && IS_FOREGROUND (job) == 0) || STOPPED (job))) continue; -#if 0 - /* If job control is disabled, don't print the status messages. - Mark dead jobs as notified so that they get cleaned up. If - startup_state == 2, we were started to run `-c command', so - don't print anything. */ - if ((job_control == 0 && interactive_shell) || startup_state == 2) -#else /* If job control is disabled, don't print the status messages. Mark dead jobs as notified so that they get cleaned up. If startup_state == 2 and subshell_environment has the SUBSHELL_COMSUB bit turned on, we were started to run a command - substitution, so don't print anything. */ + substitution, so don't print anything. + Otherwise, if the shell is not interactive, POSIX says that `jobs' + is the only way to notify of job status. */ +#if 1 if ((job_control == 0 && interactive_shell) || (startup_state == 2 && (subshell_environment & SUBSHELL_COMSUB))) +#else /* TAG:bash-5.1 */ + if ((job_control == 0 && interactive_shell) || + (startup_state == 2 && (subshell_environment & SUBSHELL_COMSUB)) || + (startup_state == 2 && posixly_correct && (subshell_environment & SUBSHELL_COMSUB) == 0)) #endif { /* POSIX.2 compatibility: if the shell is not interactive, @@ -4092,7 +4181,7 @@ initialize_job_control (force) int force; { pid_t t; - int t_errno; + int t_errno, tty_sigs; t_errno = -1; shell_pgrp = getpgid (0); @@ -4142,15 +4231,24 @@ initialize_job_control (force) tcsetpgrp (shell_tty, shell_pgrp); } + tty_sigs = 0; while ((terminal_pgrp = tcgetpgrp (shell_tty)) != -1) { if (shell_pgrp != terminal_pgrp) { SigHandler *ottin; + CHECK_TERMSIG; ottin = set_signal_handler (SIGTTIN, SIG_DFL); kill (0, SIGTTIN); set_signal_handler (SIGTTIN, ottin); + if (tty_sigs++ > 16) + { + sys_error (_("initialize_job_control: no job control in background")); + job_control = 0; + original_pgrp = terminal_pgrp; /* for eventual give_terminal_to */ + goto just_bail; + } continue; } break; @@ -4210,6 +4308,7 @@ initialize_job_control (force) internal_error (_("no job control in this shell")); } +just_bail: running_in_background = terminal_pgrp != shell_pgrp; if (shell_tty != fileno (stderr)) @@ -4678,6 +4777,13 @@ unfreeze_jobs_list () jobs_list_frozen = 0; } +void +set_jobs_list_frozen (s) + int s; +{ + jobs_list_frozen = s; +} + /* Allow or disallow job control to take place. Returns the old value of job_control. */ int @@ -4732,7 +4838,7 @@ without_job_control () void end_job_control () { - if (interactive_shell || job_control) /* XXX - should it be just job_control? */ + if (job_control) { terminate_stopped_jobs (); diff --git a/jobs.h b/jobs.h index 6df0607ed..ddea88b14 100644 --- a/jobs.h +++ b/jobs.h @@ -1,6 +1,6 @@ /* jobs.h -- structures and definitions used by the jobs.c file. */ -/* Copyright (C) 1993-2015 Free Software Foundation, Inc. +/* Copyright (C) 1993-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -38,6 +38,10 @@ /* I looked it up. For pretty_print_job (). The real answer is 24. */ #define LONGEST_SIGNAL_DESC 24 +/* Defines for the wait_for functions and for the wait builtin to use */ +#define JWAIT_PERROR 0x01 +#define JWAIT_FORCE 0x02 + /* The max time to sleep while retrying fork() on EAGAIN failure */ #define FORKSLEEP_MAX 16 @@ -99,6 +103,7 @@ typedef enum { JNONE = -1, JRUNNING = 1, JSTOPPED = 2, JDEAD = 4, JMIXED = 8 } J #define J_NOHUP 0x08 /* Don't send SIGHUP to job if shell gets SIGHUP. */ #define J_STATSAVED 0x10 /* A process in this job had had status saved via $! */ #define J_ASYNC 0x20 /* Job was started asynchronously */ +#define J_PIPEFAIL 0x40 /* pipefail set when job was started */ #define IS_FOREGROUND(j) ((jobs[j]->flags & J_FOREGROUND) != 0) #define IS_NOTIFIED(j) ((jobs[j]->flags & J_NOTIFIED) != 0) @@ -185,6 +190,11 @@ extern pid_t original_pgrp, shell_pgrp, pipeline_pgrp; extern volatile pid_t last_made_pid, last_asynchronous_pid; extern int asynchronous_notification; +extern int already_making_children; +extern int running_in_background; + +extern PROCESS *last_procsub_child; + extern JOB **jobs; extern void making_children __P((void)); @@ -234,8 +244,8 @@ extern int job_exit_signal __P((int)); extern int wait_for_single_pid __P((pid_t, int)); extern void wait_for_background_pids __P((void)); extern int wait_for __P((pid_t)); -extern int wait_for_job __P((int)); -extern int wait_for_any_job __P((void)); +extern int wait_for_job __P((int, int)); +extern int wait_for_any_job __P((int)); extern void wait_sigint_cleanup __P((void)); @@ -251,6 +261,7 @@ extern void run_sigchld_trap __P((int)); extern int freeze_jobs_list __P((void)); extern void unfreeze_jobs_list __P((void)); +extern void set_jobs_list_frozen __P((int)); extern int set_job_control __P((int)); extern void without_job_control __P((void)); extern void end_job_control __P((void)); diff --git a/lib/glob/Makefile.in b/lib/glob/Makefile.in index 23bf8c8b0..314622f13 100644 --- a/lib/glob/Makefile.in +++ b/lib/glob/Makefile.in @@ -53,7 +53,7 @@ BASHINCDIR = ${topdir}/include INCLUDES = -I. -I../.. -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib CCFLAGS = $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) ${INCLUDES} $(CPPFLAGS) \ - $(LOCAL_CFLAGS) $(CFLAGS) + $(LOCAL_CFLAGS) $(CFLAGS) ${ADDON_CFLAGS} # Here is a rule for making .o files from .c files that doesn't force # the type of the machine (like -sun3) into the flags. @@ -164,4 +164,5 @@ xmbsrtowcs.o: xmbsrtowcs.c # dependencies for C files that include other C files glob.o: glob_loop.c +gmisc.o: gm_loop.c smatch.o: sm_loop.c diff --git a/lib/glob/glob.c b/lib/glob/glob.c index 7f6eafe7d..22d90a5cd 100644 --- a/lib/glob/glob.c +++ b/lib/glob/glob.c @@ -1,6 +1,6 @@ /* glob.c -- file-name wildcard pattern matching for Bash. - Copyright (C) 1985-2009 Free Software Foundation, Inc. + Copyright (C) 1985-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne-Again SHell. @@ -123,10 +123,14 @@ static char **glob_dir_to_array __P((char *, char **, int)); extern char *glob_patscan __P((char *, char *, int)); extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int)); +/* And this from gmisc.c/gm_loop.c */ +extern int wextglob_pattern_p __P((wchar_t *)); + extern char *glob_dirscan __P((char *, int)); /* Compile `glob_loop.c' for single-byte characters. */ -#define CHAR unsigned char +#define GCHAR unsigned char +#define CHAR char #define INT int #define L(CS) CS #define INTERNAL_GLOB_PATTERN_P internal_glob_pattern_p @@ -135,6 +139,7 @@ extern char *glob_dirscan __P((char *, int)); /* Compile `glob_loop.c' again for multibyte characters. */ #if HANDLE_MULTIBYTE +#define GCHAR wchar_t #define CHAR wchar_t #define INT wint_t #define L(CS) L##CS @@ -182,9 +187,10 @@ extglob_skipname (pat, dname, flags) int flags; { char *pp, *pe, *t, *se; - int n, r, negate; + int n, r, negate, wild; negate = *pat == '!'; + wild = *pat == '*' || *pat == '?'; pp = pat + 2; se = pp + strlen (pp) - 1; /* end of string */ pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */ @@ -203,14 +209,19 @@ extglob_skipname (pat, dname, flags) r = skipname (pp, dname, flags); /*(*/ #endif *pe = ')'; + if (wild && pe[1]) /* if we can match zero instances, check further */ + return (skipname (pe+1, dname, flags)); return r; } /* check every subpattern */ while (t = glob_patscan (pp, pe, '|')) { - n = t[-1]; - t[-1] = '\0'; + n = t[-1]; /* ( */ + if (extglob_pattern_p (pp) && n == ')') + t[-1] = n; /* no-op for now */ + else + t[-1] = '\0'; #if defined (HANDLE_MULTIBYTE) r = mbskipname (pp, dname, flags); #else @@ -222,12 +233,14 @@ extglob_skipname (pat, dname, flags) pp = t; } /*(*/ - /* glob_patscan might find end of pattern */ + /* glob_patscan might find end of string */ if (pp == se) return r; /* but if it doesn't then we didn't match a leading dot */ - return 0; + if (wild && *pe) /* if we can match zero instances, check further */ + return (skipname (pe, dname, flags)); + return 1; } #endif @@ -263,22 +276,23 @@ skipname (pat, dname, flags) #if HANDLE_MULTIBYTE static int -wchkname (pat_wc, dn_wc) - wchar_t *pat_wc, *dn_wc; +wskipname (pat, dname, flags) + wchar_t *pat, *dname; + int flags; { /* If a leading dot need not be explicitly matched, and the pattern doesn't start with a `.', don't match `.' or `..' */ - if (noglob_dot_filenames == 0 && pat_wc[0] != L'.' && - (pat_wc[0] != L'\\' || pat_wc[1] != L'.') && - (dn_wc[0] == L'.' && - (dn_wc[1] == L'\0' || (dn_wc[1] == L'.' && dn_wc[2] == L'\0')))) + if (noglob_dot_filenames == 0 && pat[0] != L'.' && + (pat[0] != L'\\' || pat[1] != L'.') && + (dname[0] == L'.' && + (dname[1] == L'\0' || (dname[1] == L'.' && dname[2] == L'\0')))) return 1; /* If a leading dot must be explicitly matched, check to see if the pattern and dirname both have one. */ - else if (noglob_dot_filenames && dn_wc[0] == L'.' && - pat_wc[0] != L'.' && - (pat_wc[0] != L'\\' || pat_wc[1] != L'.')) + else if (noglob_dot_filenames && dname[0] == L'.' && + pat[0] != L'.' && + (pat[0] != L'\\' || pat[1] != L'.')) return 1; return 0; @@ -291,9 +305,10 @@ wextglob_skipname (pat, dname, flags) { #if EXTENDED_GLOB wchar_t *pp, *pe, *t, n, *se; - int r, negate; + int r, negate, wild; negate = *pat == L'!'; + wild = *pat == L'*' || *pat == L'?'; pp = pat + 2; se = pp + wcslen (pp) - 1; /*(*/ pe = glob_patscan_wc (pp, se, 0); @@ -301,17 +316,22 @@ wextglob_skipname (pat, dname, flags) if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0) { *pe = L'\0'; - r = wchkname (pp, dname); /*(*/ + r = wskipname (pp, dname, flags); /*(*/ *pe = L')'; + if (wild && pe[1] != L'\0') + return (wskipname (pe+1, dname, flags)); return r; } /* check every subpattern */ while (t = glob_patscan_wc (pp, pe, '|')) { - n = t[-1]; - t[-1] = L'\0'; - r = wchkname (pp, dname); + n = t[-1]; /* ( */ + if (wextglob_pattern_p (pp) && n == L')') + t[-1] = n; /* no-op for now */ + else + t[-1] = L'\0'; + r = wskipname (pp, dname, flags); t[-1] = n; if (r == 0) return 0; @@ -322,9 +342,11 @@ wextglob_skipname (pat, dname, flags) return r; /* but if it doesn't then we didn't match a leading dot */ - return 0; + if (wild && *pe != L'\0') + return (wskipname (pe, dname, flags)); + return 1; #else - return (wchkname (pat, dname)); + return (wskipname (pat, dname, flags)); #endif } @@ -355,7 +377,7 @@ mbskipname (pat, dname, flags) ret = 0; if (pat_n != (size_t)-1 && dn_n !=(size_t)-1) - ret = ext ? wextglob_skipname (pat_wc, dn_wc, flags) : wchkname (pat_wc, dn_wc); + ret = ext ? wextglob_skipname (pat_wc, dn_wc, flags) : wskipname (pat_wc, dn_wc, flags); else ret = skipname (pat, dname, flags); @@ -455,7 +477,7 @@ dequote_pathname (pathname) # endif /* AFS */ #endif /* !HAVE_LSTAT */ -/* Return 0 if DIR is a directory, -1 otherwise. */ +/* Return 0 if DIR is a directory, -2 if DIR is a symlink, -1 otherwise. */ static int glob_testdir (dir, flags) char *dir; @@ -473,6 +495,11 @@ glob_testdir (dir, flags) if (r < 0) return (-1); +#if defined (S_ISLNK) + if (S_ISLNK (finfo.st_mode)) + return (-2); +#endif + if (S_ISDIR (finfo.st_mode) == 0) return (-1); @@ -590,6 +617,8 @@ glob_vector (pat, dir, flags) firstmalloc = 0; nalloca = 0; + name_vector = NULL; + /*itrace("glob_vector: pat = `%s' dir = `%s' flags = 0x%x", pat, dir, flags);*/ /* If PAT is empty, skip the loop, but return one (empty) filename. */ if (pat == 0 || *pat == '\0') @@ -778,6 +807,15 @@ glob_vector (pat, dir, flags) } } + /* When FLAGS includes GX_ALLDIRS, we want to skip a symlink + to a directory, since we will pick the directory up later. */ + if (isdir == -2 && glob_testdir (subdir, 0) == 0) + { + free (subdir); + continue; + } + + /* XXX - should we even add this if it's not a directory? */ nextlink = (struct globval *) malloc (sizeof (struct globval)); if (firstmalloc == 0) firstmalloc = nextlink; @@ -1018,7 +1056,7 @@ glob_filename (pathname, flags) char *pathname; int flags; { - char **result; + char **result, **new_result; unsigned int result_size; char *directory_name, *filename, *dname, *fn; unsigned int directory_len; @@ -1248,16 +1286,16 @@ glob_filename (pathname, flags) while (array[l] != NULL) ++l; - result = - (char **)realloc (result, (result_size + l) * sizeof (char *)); + new_result = (char **)realloc (result, (result_size + l) * sizeof (char *)); - if (result == NULL) + if (new_result == NULL) { for (l = 0; array[l]; ++l) free (array[l]); free ((char *)array); goto memory_error; } + result = new_result; for (l = 0; array[l] != NULL; ++l) result[result_size++ - 1] = array[l]; diff --git a/lib/glob/glob_loop.c b/lib/glob/glob_loop.c index 89e86af57..5f319cc2e 100644 --- a/lib/glob/glob_loop.c +++ b/lib/glob/glob_loop.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2005 Free Software Foundation, Inc. +/* Copyright (C) 1991-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -16,16 +16,16 @@ along with Bash. If not, see . */ -static int INTERNAL_GLOB_PATTERN_P __P((const CHAR *)); +static int INTERNAL_GLOB_PATTERN_P __P((const GCHAR *)); /* Return nonzero if PATTERN has any special globbing chars in it. Compiled twice, once each for single-byte and multibyte characters. */ static int INTERNAL_GLOB_PATTERN_P (pattern) - const CHAR *pattern; + const GCHAR *pattern; { - register const CHAR *p; - register CHAR c; + register const GCHAR *p; + register GCHAR c; int bopen; p = pattern; @@ -54,8 +54,17 @@ INTERNAL_GLOB_PATTERN_P (pattern) continue; case L('\\'): +#if 0 + /* Don't let the pattern end in a backslash (GMATCH returns no match + if the pattern ends in a backslash anyway), but otherwise return 1, + since the matching engine uses backslash as an escape character + and it can be removed. */ + return (*p != L('\0')); +#else + /* The pattern may not end with a backslash. */ if (*p++ == L('\0')) return 0; +#endif } return 0; @@ -65,3 +74,4 @@ INTERNAL_GLOB_PATTERN_P (pattern) #undef L #undef INT #undef CHAR +#undef GCHAR diff --git a/lib/glob/gm_loop.c b/lib/glob/gm_loop.c new file mode 100644 index 000000000..ac516f82c --- /dev/null +++ b/lib/glob/gm_loop.c @@ -0,0 +1,208 @@ +/* Copyright (C) 1991-2017 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if EXTENDED_GLOB +int +EXTGLOB_PATTERN_P (pat) + const CHAR *pat; +{ + switch (pat[0]) + { + case L('*'): + case L('+'): + case L('!'): + case L('@'): + case L('?'): + return (pat[1] == L('(')); /* ) */ + default: + return 0; + } + + return 0; +} +#endif + +/* Return 1 of the first character of STRING could match the first + character of pattern PAT. Compiled to both single and wiide character + versions. FLAGS is a subset of strmatch flags; used to do case-insensitive + matching for now. */ +int +MATCH_PATTERN_CHAR (pat, string, flags) + CHAR *pat, *string; + int flags; +{ + CHAR c; + + if (*string == 0) + return (*pat == L('*')); /* XXX - allow only * to match empty string */ + + switch (c = *pat++) + { + default: + return (FOLD(*string) == FOLD(c)); + case L('\\'): + return (FOLD(*string) == FOLD(*pat)); + case L('?'): + return (*pat == L('(') ? 1 : (*string != L'\0')); + case L('*'): + return (1); + case L('+'): + case L('!'): + case L('@'): + return (*pat == L('(') ? 1 : (FOLD(*string) == FOLD(c))); + case L('['): + return (*string != L('\0')); + } +} + +int +MATCHLEN (pat, max) + CHAR *pat; + size_t max; +{ + CHAR c; + int matlen, bracklen, t, in_cclass, in_collsym, in_equiv; + + if (*pat == 0) + return (0); + + matlen = in_cclass = in_collsym = in_equiv = 0; + while (c = *pat++) + { + switch (c) + { + default: + matlen++; + break; + case L('\\'): + if (*pat == 0) + return ++matlen; + else + { + matlen++; + pat++; + } + break; + case L('?'): + if (*pat == LPAREN) + return (matlen = -1); /* XXX for now */ + else + matlen++; + break; + case L('*'): + return (matlen = -1); + case L('+'): + case L('!'): + case L('@'): + if (*pat == LPAREN) + return (matlen = -1); /* XXX for now */ + else + matlen++; + break; + case L('['): + /* scan for ending `]', skipping over embedded [:...:] */ + bracklen = 1; + c = *pat++; + do + { + if (c == 0) + { + pat--; /* back up to NUL */ + matlen += bracklen; + goto bad_bracket; + } + else if (c == L('\\')) + { + /* *pat == backslash-escaped character */ + bracklen++; + /* If the backslash or backslash-escape ends the string, + bail. The ++pat skips over the backslash escape */ + if (*pat == 0 || *++pat == 0) + { + matlen += bracklen; + goto bad_bracket; + } + } + else if (c == L('[') && *pat == L(':')) /* character class */ + { + pat++; + bracklen++; + in_cclass = 1; + } + else if (in_cclass && c == L(':') && *pat == L(']')) + { + pat++; + bracklen++; + in_cclass = 0; + } + else if (c == L('[') && *pat == L('.')) /* collating symbol */ + { + pat++; + bracklen++; + if (*pat == L(']')) /* right bracket can appear as collating symbol */ + { + pat++; + bracklen++; + } + in_collsym = 1; + } + else if (in_collsym && c == L('.') && *pat == L(']')) + { + pat++; + bracklen++; + in_collsym = 0; + } + else if (c == L('[') && *pat == L('=')) /* equivalence class */ + { + pat++; + bracklen++; + if (*pat == L(']')) /* right bracket can appear as equivalence class */ + { + pat++; + bracklen++; + } + in_equiv = 1; + } + else if (in_equiv && c == L('=') && *pat == L(']')) + { + pat++; + bracklen++; + in_equiv = 0; + } + else + bracklen++; + } + while ((c = *pat++) != L(']')); + matlen++; /* bracket expression can only match one char */ +bad_bracket: + break; + } + } + + return matlen; +} + +#undef EXTGLOB_PATTERN_P +#undef MATCH_PATTERN_CHAR +#undef MATCHLEN +#undef FOLD +#undef L +#undef LPAREN +#undef RPAREN +#undef INT +#undef CHAR diff --git a/lib/glob/gmisc.c b/lib/glob/gmisc.c index 31906a4f2..a2bca9659 100644 --- a/lib/glob/gmisc.c +++ b/lib/glob/gmisc.c @@ -1,6 +1,6 @@ /* gmisc.c -- miscellaneous pattern matching utility functions for Bash. - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne-Again SHell. @@ -35,367 +35,44 @@ #ifndef FNM_CASEFOLD # include "strmatch.h" #endif - -#ifndef LPAREN -# define LPAREN '(' -#endif -#ifndef RPAREN -# define RPAREN ')' -#endif - -#if defined (HANDLE_MULTIBYTE) -#define WLPAREN L'(' -#define WRPAREN L')' +#include "glob.h" /* Make sure these names continue to agree with what's in smatch.c */ extern char *glob_patscan __P((char *, char *, int)); -extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int)); - -#define FOLD(c) ((flags & FNM_CASEFOLD) && iswupper (c) ? towlower (c) : (c)) - -/* Return 1 of the first character of WSTRING could match the first - character of pattern WPAT. Wide character version. FLAGS is a - subset of strmatch flags; used to do case-insensitive matching for now. */ -int -match_pattern_wchar (wpat, wstring, flags) - wchar_t *wpat, *wstring; - int flags; -{ - wchar_t wc; - - if (*wstring == 0) - return (*wpat == L'*'); /* XXX - allow only * to match empty string */ - - switch (wc = *wpat++) - { - default: - return (FOLD(*wstring) == FOLD(wc)); - case L'\\': - return (FOLD(*wstring) == FOLD(*wpat)); - case L'?': - return (*wpat == WLPAREN ? 1 : (*wstring != L'\0')); - case L'*': - return (1); - case L'+': - case L'!': - case L'@': - return (*wpat == WLPAREN ? 1 : (FOLD(*wstring) == FOLD(wc))); - case L'[': - return (*wstring != L'\0'); - } -} - -int -wmatchlen (wpat, wmax) - wchar_t *wpat; - size_t wmax; -{ - wchar_t wc; - int matlen, bracklen, t, in_cclass, in_collsym, in_equiv; - - if (*wpat == 0) - return (0); - - matlen = in_cclass = in_collsym = in_equiv = 0; - while (wc = *wpat++) - { - switch (wc) - { - default: - matlen++; - break; - case L'\\': - if (*wpat == 0) - return ++matlen; - else - { - matlen++; - wpat++; - } - break; - case L'?': - if (*wpat == WLPAREN) - return (matlen = -1); /* XXX for now */ - else - matlen++; - break; - case L'*': - return (matlen = -1); - case L'+': - case L'!': - case L'@': - if (*wpat == WLPAREN) - return (matlen = -1); /* XXX for now */ - else - matlen++; - break; - case L'[': - /* scan for ending `]', skipping over embedded [:...:] */ - bracklen = 1; - wc = *wpat++; - do - { - if (wc == 0) - { - wpat--; /* back up to NUL */ - matlen += bracklen; - goto bad_bracket; - } - else if (wc == L'\\') - { - /* *wpat == backslash-escaped character */ - bracklen++; - /* If the backslash or backslash-escape ends the string, - bail. The ++wpat skips over the backslash escape */ - if (*wpat == 0 || *++wpat == 0) - { - matlen += bracklen; - goto bad_bracket; - } - } - else if (wc == L'[' && *wpat == L':') /* character class */ - { - wpat++; - bracklen++; - in_cclass = 1; - } - else if (in_cclass && wc == L':' && *wpat == L']') - { - wpat++; - bracklen++; - in_cclass = 0; - } - else if (wc == L'[' && *wpat == L'.') /* collating symbol */ - { - wpat++; - bracklen++; - if (*wpat == L']') /* right bracket can appear as collating symbol */ - { - wpat++; - bracklen++; - } - in_collsym = 1; - } - else if (in_collsym && wc == L'.' && *wpat == L']') - { - wpat++; - bracklen++; - in_collsym = 0; - } - else if (wc == L'[' && *wpat == L'=') /* equivalence class */ - { - wpat++; - bracklen++; - if (*wpat == L']') /* right bracket can appear as equivalence class */ - { - wpat++; - bracklen++; - } - in_equiv = 1; - } - else if (in_equiv && wc == L'=' && *wpat == L']') - { - wpat++; - bracklen++; - in_equiv = 0; - } - else - bracklen++; - } - while ((wc = *wpat++) != L']'); - matlen++; /* bracket expression can only match one char */ -bad_bracket: - break; - } - } - return matlen; -} -#endif - -int -extglob_pattern_p (pat) - char *pat; -{ - switch (pat[0]) - { - case '*': - case '+': - case '!': - case '@': - case '?': - return (pat[1] == LPAREN); - default: - return 0; - } - - return 0; -} - -#undef FOLD +/* Compile `gm_loop.c' for single-byte characters. */ +#define CHAR char +#define INT int +#define L(CS) CS +#define EXTGLOB_PATTERN_P extglob_pattern_p +#define MATCH_PATTERN_CHAR match_pattern_char +#define MATCHLEN umatchlen #define FOLD(c) ((flags & FNM_CASEFOLD) \ ? TOLOWER ((unsigned char)c) \ : ((unsigned char)c)) +#ifndef LPAREN +#define LPAREN '(' +#define RPAREN ')' +#endif +#include "gm_loop.c" -/* Return 1 of the first character of STRING could match the first - character of pattern PAT. Used to avoid n2 calls to strmatch(). - FLAGS is a subset of strmatch flags; used to do case-insensitive - matching for now. */ -int -match_pattern_char (pat, string, flags) - char *pat, *string; - int flags; -{ - char c; +/* Compile `gm_loop.c' again for multibyte characters. */ +#if HANDLE_MULTIBYTE - if (*string == 0) - return (*pat == '*'); /* XXX - allow only * to match empty string */ +#define CHAR wchar_t +#define INT wint_t +#define L(CS) L##CS +#define EXTGLOB_PATTERN_P wextglob_pattern_p +#define MATCH_PATTERN_CHAR match_pattern_wchar +#define MATCHLEN wmatchlen - switch (c = *pat++) - { - default: - return (FOLD(*string) == FOLD(c)); - case '\\': - return (FOLD(*string) == FOLD(*pat)); - case '?': - return (*pat == LPAREN ? 1 : (*string != '\0')); - case '*': - return (1); - case '+': - case '!': - case '@': - return (*pat == LPAREN ? 1 : (FOLD(*string) == FOLD(c))); - case '[': - return (*string != '\0'); - } -} - -int -umatchlen (pat, max) - char *pat; - size_t max; -{ - char c; - int matlen, bracklen, t, in_cclass, in_collsym, in_equiv; +#define FOLD(c) ((flags & FNM_CASEFOLD) && iswupper (c) ? towlower (c) : (c)) +#define LPAREN L'(' +#define RPAREN L')' +#include "gm_loop.c" - if (*pat == 0) - return (0); +#endif /* HANDLE_MULTIBYTE */ - matlen = in_cclass = in_collsym = in_equiv = 0; - while (c = *pat++) - { - switch (c) - { - default: - matlen++; - break; - case '\\': - if (*pat == 0) - return ++matlen; - else - { - matlen++; - pat++; - } - break; - case '?': - if (*pat == LPAREN) - return (matlen = -1); /* XXX for now */ - else - matlen++; - break; - case '*': - return (matlen = -1); - case '+': - case '!': - case '@': - if (*pat == LPAREN) - return (matlen = -1); /* XXX for now */ - else - matlen++; - break; - case '[': - /* scan for ending `]', skipping over embedded [:...:] */ - bracklen = 1; - c = *pat++; - do - { - if (c == 0) - { - pat--; /* back up to NUL */ - matlen += bracklen; - goto bad_bracket; - } - else if (c == '\\') - { - /* *pat == backslash-escaped character */ - bracklen++; - /* If the backslash or backslash-escape ends the string, - bail. The ++pat skips over the backslash escape */ - if (*pat == 0 || *++pat == 0) - { - matlen += bracklen; - goto bad_bracket; - } - } - else if (c == '[' && *pat == ':') /* character class */ - { - pat++; - bracklen++; - in_cclass = 1; - } - else if (in_cclass && c == ':' && *pat == ']') - { - pat++; - bracklen++; - in_cclass = 0; - } - else if (c == '[' && *pat == '.') /* collating symbol */ - { - pat++; - bracklen++; - if (*pat == ']') /* right bracket can appear as collating symbol */ - { - pat++; - bracklen++; - } - in_collsym = 1; - } - else if (in_collsym && c == '.' && *pat == ']') - { - pat++; - bracklen++; - in_collsym = 0; - } - else if (c == '[' && *pat == '=') /* equivalence class */ - { - pat++; - bracklen++; - if (*pat == ']') /* right bracket can appear as equivalence class */ - { - pat++; - bracklen++; - } - in_equiv = 1; - } - else if (in_equiv && c == '=' && *pat == ']') - { - pat++; - bracklen++; - in_equiv = 0; - } - else - bracklen++; - } - while ((c = *pat++) != ']'); - matlen++; /* bracket expression can only match one char */ -bad_bracket: - break; - } - } - - return matlen; -} #if defined (EXTENDED_GLOB) /* Skip characters in PAT and return the final occurrence of DIRSEP. This diff --git a/lib/glob/sm_loop.c b/lib/glob/sm_loop.c index 65179e244..cc14fb16c 100644 --- a/lib/glob/sm_loop.c +++ b/lib/glob/sm_loop.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2011 Free Software Foundation, Inc. +/* Copyright (C) 1991-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -16,9 +16,15 @@ along with Bash. If not, see . */ +struct STRUCT +{ + CHAR *pattern; + CHAR *string; +}; + int FCT __P((CHAR *, CHAR *, int)); -static int GMATCH __P((CHAR *, CHAR *, CHAR *, CHAR *, int)); +static int GMATCH __P((CHAR *, CHAR *, CHAR *, CHAR *, struct STRUCT *, int)); static CHAR *PARSE_COLLSYM __P((CHAR *, INT *)); static CHAR *BRACKMATCH __P((CHAR *, U_CHAR, int)); static int EXTMATCH __P((INT, CHAR *, CHAR *, CHAR *, CHAR *, int)); @@ -39,15 +45,16 @@ FCT (pattern, string, flags) se = string + STRLEN ((XCHAR *)string); pe = pattern + STRLEN ((XCHAR *)pattern); - return (GMATCH (string, se, pattern, pe, flags)); + return (GMATCH (string, se, pattern, pe, (struct STRUCT *)NULL, flags)); } /* Match STRING against the filename pattern PATTERN, returning zero if it matches, FNM_NOMATCH if not. */ static int -GMATCH (string, se, pattern, pe, flags) +GMATCH (string, se, pattern, pe, ends, flags) CHAR *string, *se; CHAR *pattern, *pe; + struct STRUCT *ends; int flags; { CHAR *p, *n; /* pattern, string */ @@ -103,6 +110,9 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); break; case L('\\'): /* backslash escape removes special meaning */ + if (p == pe && sc == '\\' && (n+1 == se)) + break; + if (p == pe) return FNM_NOMATCH; @@ -118,7 +128,16 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); return FNM_NOMATCH; break; - case '*': /* Match zero or more characters */ + case L('*'): /* Match zero or more characters */ + /* See below for the reason for using this. It avoids backtracking + back to a previous `*'. Picked up from glibc. */ + if (ends != NULL) + { + ends->pattern = p - 1; + ends->string = n; + return (0); + } + if ((flags & FNM_PERIOD) && sc == L('.') && (n == string || ((flags & FNM_PATHNAME) && n[-1] == L('/')))) /* `*' cannot match a `.' if it is the first character of the @@ -141,17 +160,9 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); { CHAR *newn; -#if 0 - for (newn = n; newn < se; ++newn) - { - if (EXTMATCH (c, newn, se, p, pe, flags) == 0) - return (0); - } -#else /* We can match 0 or 1 times. If we match, return success */ if (EXTMATCH (c, n, se, p, pe, flags) == 0) return (0); -#endif /* We didn't match the extended glob pattern, but that's OK, since we can match 0 or 1 occurrences. @@ -241,7 +252,7 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); { while (n < se && *n != L('/')) ++n; - if (n < se && *n == L('/') && (GMATCH (n+1, se, p, pe, flags) == 0)) + if (n < se && *n == L('/') && (GMATCH (n+1, se, p, pe, NULL, flags) == 0)) return 0; return FNM_NOMATCH; /* XXX */ } @@ -250,10 +261,13 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); { U_CHAR c1; const CHAR *endp; + struct STRUCT end; + end.pattern = NULL; endp = MEMCHR (n, (flags & FNM_PATHNAME) ? L('/') : L('\0'), se - n); if (endp == 0) endp = se; + c1 = ((flags & FNM_NOESCAPE) == 0 && c == L('\\')) ? *p : c; c1 = FOLD (c1); for (--p; n < endp; ++n) @@ -272,9 +286,24 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); continue; /* Otherwise, we just recurse. */ - if (GMATCH (n, se, p, pe, flags & ~FNM_PERIOD) == 0) - return (0); + if (GMATCH (n, se, p, pe, &end, flags & ~FNM_PERIOD) == 0) + { + if (end.pattern == NULL) + return (0); + break; + } } + /* This is a clever idea from glibc, used to avoid backtracking + to a `*' that appears earlier in the pattern. We get away + without saving se and pe because they are always the same, + even in the recursive calls to gmatch */ + if (end.pattern != NULL) + { + p = end.pattern; + n = end.string; + continue; + } + return FNM_NOMATCH; } @@ -355,11 +384,13 @@ BRACKMATCH (p, test, flags) { register CHAR cstart, cend, c; register int not; /* Nonzero if the sense of the character class is inverted. */ - int brcnt, forcecoll; + int brcnt, brchr, forcecoll, isrange; INT pc; CHAR *savep; + U_CHAR orig_test; - test = FOLD (test); + orig_test = test; + test = FOLD (orig_test); savep = p; @@ -424,12 +455,23 @@ BRACKMATCH (p, test, flags) { bcopy (p + 1, ccname, (close - p - 1) * sizeof (CHAR)); *(ccname + (close - p - 1)) = L('\0'); - pc = IS_CCLASS (test, (XCHAR *)ccname); + pc = IS_CCLASS (orig_test, (XCHAR *)ccname); } if (pc == -1) - pc = 0; + { + /* CCNAME is not a valid character class in the current + locale. In addition to noting no match (pc = 0), we have + a choice about what to do with the invalid charclass. + Posix leaves the behavior unspecified, but we're going + to skip over the charclass and keep going instead of + testing ORIG_TEST against each character in the class + string. If we don't want to do that, take out the update + of P. */ + pc = 0; + p = close + 2; + } else - p = close + 2; + p = close + 2; /* move past the closing `]' */ free (ccname); } @@ -477,6 +519,7 @@ BRACKMATCH (p, test, flags) } cstart = cend = FOLD (cstart); + isrange = 0; /* POSIX.2 2.8.3.1.2 says: `An expression containing a `[' that is not preceded by a backslash and is not part of a bracket @@ -531,10 +574,18 @@ BRACKMATCH (p, test, flags) c = FOLD (c); continue; } + isrange = 1; } +#if 0 /* TAG: bash-5.1 */ + if (isrange == 0 && test == cstart) + goto matched; + if (isrange && RANGECMP (test, cstart, forcecoll) >= 0 && RANGECMP (test, cend, forcecoll) <= 0) + goto matched; +#else if (RANGECMP (test, cstart, forcecoll) >= 0 && RANGECMP (test, cend, forcecoll) <= 0) goto matched; +#endif if (c == L(']')) break; @@ -546,16 +597,26 @@ matched: /* Skip the rest of the [...] that already matched. */ c = *--p; brcnt = 1; + brchr = 0; while (brcnt > 0) { + int oc; + /* A `[' without a matching `]' is just another character to match. */ if (c == L('\0')) return ((test == L('[')) ? savep : (CHAR *)0); + oc = c; c = *p++; if (c == L('[') && (*p == L('=') || *p == L(':') || *p == L('.'))) - brcnt++; - else if (c == L(']')) + { + brcnt++; + brchr = *p; + } + /* we only want to check brchr if we set it above */ + else if (c == L(']') && brcnt > 1 && brchr != 0 && oc == brchr) + brcnt--; + else if (c == L(']') && brcnt == 1) brcnt--; else if (!(flags & FNM_NOESCAPE) && c == L('\\')) { @@ -748,7 +809,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); /* If we can get away with no matches, don't even bother. Just call GMATCH on the rest of the pattern and return success if it succeeds. */ - if (xc == L('*') && (GMATCH (s, se, prest, pe, flags) == 0)) + if (xc == L('*') && (GMATCH (s, se, prest, pe, NULL, flags) == 0)) return 0; /* OK, we have to do this the hard way. First, we make sure one of @@ -761,7 +822,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); { /* Match this substring (S -> SREST) against this subpattern (psub -> pnext - 1) */ - m1 = GMATCH (s, srest, psub, pnext - 1, flags) == 0; + m1 = GMATCH (s, srest, psub, pnext - 1, NULL, flags) == 0; /* OK, we matched a subpattern, so make sure the rest of the string matches the rest of the pattern. Also handle multiple matches of the pattern. */ @@ -769,8 +830,8 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); { /* if srest > s, we are not at start of string */ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; - m2 = (GMATCH (srest, se, prest, pe, xflags) == 0) || - (s != srest && GMATCH (srest, se, p - 1, pe, xflags) == 0); + m2 = (GMATCH (srest, se, prest, pe, NULL, xflags) == 0) || + (s != srest && GMATCH (srest, se, p - 1, pe, NULL, xflags) == 0); } if (m1 && m2) return (0); @@ -785,7 +846,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); /* If we can get away with no matches, don't even bother. Just call gmatch on the rest of the pattern and return success if it succeeds. */ - if (xc == L('?') && (GMATCH (s, se, prest, pe, flags) == 0)) + if (xc == L('?') && (GMATCH (s, se, prest, pe, NULL, flags) == 0)) return 0; /* OK, we have to do this the hard way. First, we see if one of @@ -799,8 +860,8 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); { /* if srest > s, we are not at start of string */ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; - if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 && - GMATCH (srest, se, prest, pe, xflags) == 0) + if (GMATCH (s, srest, psub, pnext - 1, NULL, flags) == 0 && + GMATCH (srest, se, prest, pe, NULL, xflags) == 0) return (0); } if (pnext == prest) @@ -816,14 +877,21 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); { pnext = PATSCAN (psub, pe, L('|')); /* If one of the patterns matches, just bail immediately. */ - if (m1 = (GMATCH (s, srest, psub, pnext - 1, flags) == 0)) + if (m1 = (GMATCH (s, srest, psub, pnext - 1, NULL, flags) == 0)) break; if (pnext == prest) break; } + + /* If nothing matched, but the string starts with a period and we + need to match periods explicitly, don't return this as a match, + even for negation. Might need to do this only if srest == s. */ + if (m1 == 0 && *s == '.' && (flags & FNM_PERIOD)) + return (FNM_NOMATCH); + /* if srest > s, we are not at start of string */ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; - if (m1 == 0 && GMATCH (srest, se, prest, pe, xflags) == 0) + if (m1 == 0 && GMATCH (srest, se, prest, pe, NULL, xflags) == 0) return (0); } return (FNM_NOMATCH); @@ -847,6 +915,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); #undef PATSCAN #undef STRCOMPARE #undef EXTMATCH +#undef STRUCT #undef BRACKMATCH #undef STRCHR #undef STRCOLL diff --git a/lib/glob/smatch.c b/lib/glob/smatch.c index edc5b95d0..64fdbbb7d 100644 --- a/lib/glob/smatch.c +++ b/lib/glob/smatch.c @@ -1,7 +1,7 @@ /* strmatch.c -- ksh-like extended pattern matching for the shell and filename globbing. */ -/* Copyright (C) 1991-2011 Free Software Foundation, Inc. +/* Copyright (C) 1991-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -30,6 +30,12 @@ #include "shmbutil.h" #include "xmalloc.h" +#include + +#if !defined (errno) +extern int errno; +#endif + /* First, compile `sm_loop.c' for single-byte characters. */ #define CHAR unsigned char #define U_CHAR unsigned char @@ -82,7 +88,7 @@ rangecmp (c1, c2, forcecoll) if ((ret = strcoll (s1, s2)) != 0) return ret; - return (c1 - c2); + return (c1 - c2); /* impose total ordering */ } #else /* !HAVE_STRCOLL */ # define rangecmp(c1, c2, f) ((int)(c1) - (int)(c2)) @@ -144,25 +150,33 @@ static char const *const cclass_name[] = #define N_CHAR_CLASS (sizeof(cclass_name) / sizeof (cclass_name[0])) -static int -is_cclass (c, name) - int c; +static enum char_class +is_valid_cclass (name) const char *name; { - enum char_class char_class = CC_NO_CLASS; - int i, result; + enum char_class ret; + int i; + + ret = CC_NO_CLASS; for (i = 1; i < N_CHAR_CLASS; i++) { if (STREQ (name, cclass_name[i])) { - char_class = (enum char_class)i; + ret = (enum char_class)i; break; } } - if (char_class == 0) - return -1; + return ret; +} + +static int +cclass_test (c, char_class) + int c; + enum char_class char_class; +{ + int result; switch (char_class) { @@ -215,6 +229,22 @@ is_cclass (c, name) return result; } + +static int +is_cclass (c, name) + int c; + const char *name; +{ + enum char_class char_class; + int result; + + char_class = is_valid_cclass (name); + if (char_class == CC_NO_CLASS) + return -1; + + result = cclass_test (c, char_class); + return (result); +} /* Now include `sm_loop.c' for single-byte characters. */ /* The result of FOLD is an `unsigned char' */ @@ -230,6 +260,7 @@ is_cclass (c, name) #define PATSCAN glob_patscan #define STRCOMPARE strcompare #define EXTMATCH extmatch +#define STRUCT smat_struct #define STRCHR(S, C) strchr((S), (C)) #define MEMCHR(S, C, N) memchr((S), (C), (N)) #define STRCOLL(S1, S2) strcoll((S1), (S2)) @@ -257,6 +288,41 @@ is_cclass (c, name) extern char *mbsmbchar __P((const char *)); +#if FNMATCH_EQUIV_FALLBACK +/* We don't include in order to avoid namespace collisions; the + internal strmatch still uses the FNM_ constants. */ +extern int fnmatch (const char *, const char *, int); + +/* Construct a string w1 = "c1" and a pattern w2 = "[[=c2=]]" and pass them + to fnmatch to see if wide characters c1 and c2 collate as members of the + same equivalence class. We can't really do this portably any other way */ +static int +_fnmatch_fallback_wc (c1, c2) + wchar_t c1, c2; /* string char, patchar */ +{ + char w1[MB_LEN_MAX+1]; /* string */ + char w2[MB_LEN_MAX+8]; /* constructed pattern */ + int l1, l2; + + l1 = wctomb (w1, c1); + if (l1 == -1) + return (2); + w1[l1] = '\0'; + + /* reconstruct the pattern */ + w2[0] = w2[1] = '['; + w2[2] = '='; + l2 = wctomb (w2+3, c2); + if (l2 == -1) + return (2); + w2[l2+3] = '='; + w2[l2+4] = w2[l2+5] = ']'; + w2[l2+6] = '\0'; + + return (fnmatch ((const char *)w2, (const char *)w1, 0)); +} +#endif + static int rangecmp_wc (c1, c2, forcecoll) wint_t c1, c2; @@ -264,6 +330,7 @@ rangecmp_wc (c1, c2, forcecoll) { static wchar_t s1[2] = { L' ', L'\0' }; static wchar_t s2[2] = { L' ', L'\0' }; + int r, oerrno; if (c1 == c2) return 0; @@ -274,14 +341,38 @@ rangecmp_wc (c1, c2, forcecoll) s1[0] = c1; s2[0] = c2; +#if 0 /* TAG:bash-5.1 */ + /* We impose a total ordering here by returning c1-c2 if wcscoll returns 0, + as we do above in the single-byte case. If we do this, we can no longer + use this code in collequiv_wc */ + if ((r = wcscoll (s1, s2)) != 0) + return r; + return ((int)(c1 - c2)); /* impose total ordering */ +#else return (wcscoll (s1, s2)); +#endif } +/* Returns non-zero on success */ static int collequiv_wc (c, equiv) wint_t c, equiv; { - return (c == equiv); + wchar_t s, p; + + if (rangecmp_wc (c, equiv, 1) == 0) + return 1; +#if FNMATCH_EQUIV_FALLBACK +/* We check explicitly for success (fnmatch returns 0) to avoid problems if + our local definition of FNM_NOMATCH (strmatch.h) doesn't match the + system's (fnmatch.h). We don't care about error return values here. */ + + s = c; + p = equiv; + return (_fnmatch_fallback_wc (s, p) == 0); +#else + return 0; +#endif } /* Helper function for collating symbol. */ @@ -355,6 +446,50 @@ is_wcclass (wc, name) return (iswctype (wc, desc)); } +/* Return 1 if there are no char class [:class:] expressions (degenerate case) + or only posix-specified (C locale supported) char class expressions in + PATTERN. These are the ones where it's safe to punt to the single-byte + code, since wide character support allows locale-defined char classes. + This only uses single-byte code, but is only needed to support multibyte + locales. */ +static int +posix_cclass_only (pattern) + char *pattern; +{ + char *p, *p1; + char cc[16]; /* sufficient for all valid posix char class names */ + enum char_class valid; + + p = pattern; + while (p = strchr (p, '[')) + { + if (p[1] != ':') + { + p++; + continue; + } + p += 2; /* skip past "[:" */ + /* Find end of char class expression */ + for (p1 = p; *p1; p1++) + if (*p1 == ':' && p1[1] == ']') + break; + if (*p1 == 0) /* no char class expression found */ + break; + /* Find char class name and validate it against posix char classes */ + if ((p1 - p) >= sizeof (cc)) + return 0; + bcopy (p, cc, p1 - p); + cc[p1 - p] = '\0'; + valid = is_valid_cclass (cc); + if (valid == CC_NO_CLASS) + return 0; /* found unrecognized char class name */ + + p = p1 + 2; /* found posix char class name */ + } + + return 1; /* no char class names or only posix */ +} + /* Now include `sm_loop.c' for multibyte characters. */ #define FOLD(c) ((flags & FNM_CASEFOLD) && iswupper (c) ? towlower (c) : (c)) #define FCT internal_wstrmatch @@ -365,6 +500,7 @@ is_wcclass (wc, name) #define PATSCAN glob_patscan_wc #define STRCOMPARE wscompare #define EXTMATCH extmatch_wc +#define STRUCT wcsmat_struct #define STRCHR(S, C) wcschr((S), (C)) #define MEMCHR(S, C, N) wmemchr((S), (C), (N)) #define STRCOLL(S1, S2) wcscoll((S1), (S2)) @@ -390,10 +526,10 @@ xstrmatch (pattern, string, flags) wchar_t *wpattern, *wstring; size_t plen, slen, mplen, mslen; - if (mbsmbchar (string) == 0 && mbsmbchar (pattern) == 0) + if (MB_CUR_MAX == 1) return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags)); - if (MB_CUR_MAX == 1) + if (mbsmbchar (string) == 0 && mbsmbchar (pattern) == 0 && posix_cclass_only (pattern) ) return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags)); n = xdupmbstowcs (&wpattern, NULL, pattern); diff --git a/lib/glob/strmatch.h b/lib/glob/strmatch.h index 5c99e0cae..aee00cc8e 100644 --- a/lib/glob/strmatch.h +++ b/lib/glob/strmatch.h @@ -46,6 +46,8 @@ #define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */ #define FNM_EXTMATCH (1 << 5) /* Use ksh-like extended matching. */ +#define FNM_FIRSTCHAR (1 << 6) /* Match only the first character */ + /* Value returned by `strmatch' if STRING does not match PATTERN. */ #undef FNM_NOMATCH diff --git a/lib/malloc/malloc.c b/lib/malloc/malloc.c index 053305fcd..5621adf41 100644 --- a/lib/malloc/malloc.c +++ b/lib/malloc/malloc.c @@ -81,9 +81,13 @@ #else # include #endif - +#include #include +#if defined (HAVE_MMAP) +#include +#endif + /* Define getpagesize () if the system does not. */ #ifndef HAVE_GETPAGESIZE # include "getpagesize.h" @@ -100,11 +104,18 @@ # include "watch.h" #endif +#ifdef powerof2 +# undef powerof2 +#endif +/* Could also use (((x) & -(x)) == (x)) */ +#define powerof2(x) ((((x) - 1) & (x)) == 0) + /* System-specific omissions. */ #ifdef HPUX # define NO_VALLOC #endif +/* SIZEOF_LONG * 4 - 2, usable bins from 1..NBUCKETS-1 */ #define NBUCKETS 30 #define ISALLOC ((char) 0xf7) /* magic byte that implies allocation */ @@ -191,6 +202,23 @@ typedef union _malloc_guard { #define STARTBUCK 1 +/* Should we use mmap for large allocations? */ +#if defined (HAVE_MMAP) +# if !defined (MAP_ANON) && defined (MAP_ANONYMOUS) +# define MAP_ANON MAP_ANONYMOUS +# endif +#endif + +#if defined (HAVE_MMAP) && defined (MAP_ANON) +# define USE_MMAP +#endif + +#if defined (USE_MMAP) +# define MMAP_THRESHOLD 14 /* must be >= SPLIT_MAX, COMBINE_MAX */ +#else +# define MMAP_THRESHOLD (8 * SIZEOF_LONG) +#endif + /* Flags for the internal functions. */ #define MALLOC_WRAPPER 0x01 /* wrapper function */ #define MALLOC_INTERNAL 0x02 /* internal function calling another */ @@ -240,6 +268,10 @@ static const unsigned long binsizes[NBUCKETS] = { /* binsizes[x] == (1 << ((x) + 3)) */ #define binsize(x) binsizes[(x)] +#if !defined (errno) +extern int errno; +#endif + /* Declarations for internal functions */ static PTR_T internal_malloc __P((size_t, const char *, int, int)); static PTR_T internal_realloc __P((PTR_T, size_t, const char *, int, int)); @@ -278,6 +310,9 @@ int malloc_flags = 0; /* future use */ int malloc_trace = 0; /* trace allocations and frees to stderr */ int malloc_register = 0; /* future use */ +/* Use a variable in case we want to dynamically adapt it in the future */ +int malloc_mmap_threshold = MMAP_THRESHOLD; + #ifdef MALLOC_TRACE char _malloc_trace_buckets[NBUCKETS]; @@ -584,7 +619,7 @@ morecore (nu) /* Try to split a larger block here, if we're within the range of sizes to split. */ - if (nu >= SPLIT_MIN) + if (nu >= SPLIT_MIN && nu <= malloc_mmap_threshold) { bsplit (nu); if (nextf[nu] != 0) @@ -593,7 +628,7 @@ morecore (nu) /* Try to coalesce two adjacent blocks from the free list on nextf[nu - 1], if we can, and we're within the range of the block coalescing limits. */ - if (nu >= COMBINE_MIN && nu < COMBINE_MAX && busy[nu - 1] == 0 && nextf[nu - 1]) + if (nu >= COMBINE_MIN && nu < COMBINE_MAX && nu <= malloc_mmap_threshold && busy[nu - 1] == 0 && nextf[nu - 1]) { bcoalesce (nu); if (nextf[nu] != 0) @@ -622,6 +657,25 @@ morecore (nu) nblks = 1; } +#if defined (USE_MMAP) + if (nu > malloc_mmap_threshold) + { + mp = (union mhead *)mmap (0, sbrk_amt, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + if ((void *)mp == MAP_FAILED) + goto morecore_done; + nextf[nu] = mp; + mp->mh_alloc = ISFREE; + mp->mh_index = nu; + CHAIN (mp) = 0; +#ifdef MALLOC_STATS + _mstats.nmmap++; + _mstats.tmmap += sbrk_amt; +#endif + goto morecore_done; + } +#endif + + #ifdef MALLOC_STATS _mstats.nsbrk++; _mstats.tsbrk += sbrk_amt; @@ -905,6 +959,17 @@ internal_free (mem, file, line, flags) if (mg.i != p->mh_nbytes) xbotch (mem, ERR_ASSERT_FAILED, _("free: start and end chunk sizes differ"), file, line); +#if defined (USE_MMAP) + if (nunits > malloc_mmap_threshold) + { + munmap (p, binsize (nunits)); +#if defined (MALLOC_STATS) + _mstats.nlesscore[nunits]++; +#endif + goto free_return; + } +#endif + #if GLIBC21 if (nunits >= LESSCORE_MIN && ((char *)p + binsize(nunits) == sbrk (0))) #else @@ -1033,18 +1098,19 @@ internal_realloc (mem, n, file, line, flags) _mstats.bytesreq += (n < tocopy) ? 0 : n - tocopy; #endif + /* If we're reallocating to the same size as previously, return now */ + if (n == p->mh_nbytes) + return mem; + /* See if desired size rounds to same power of 2 as actual size. */ nbytes = ALLOCATED_BYTES(n); /* If ok, use the same block, just marking its size as changed. */ - if (RIGHT_BUCKET(nbytes, nunits)) + if (RIGHT_BUCKET(nbytes, nunits) || RIGHT_BUCKET(nbytes, nunits-1)) { -#if 0 - m = (char *)mem + p->mh_nbytes; -#else /* Compensate for increment above. */ m -= 4; -#endif + *m++ = 0; *m++ = 0; *m++ = 0; *m++ = 0; m = (char *)mem + (p->mh_nbytes = n); @@ -1062,6 +1128,8 @@ internal_realloc (mem, n, file, line, flags) _mstats.nrcopy++; #endif + /* If we are using mmap and have mremap, we could use it here. */ + if ((m = internal_malloc (n, file, line, MALLOC_INTERNAL|MALLOC_NOTRACE|MALLOC_NOREG)) == 0) return 0; FASTCOPY (mem, m, tocopy); @@ -1106,11 +1174,7 @@ internal_memalign (alignment, size, file, line, flags) if (((long) ptr & (alignment - 1)) == 0) return ptr; /* Otherwise, get address of byte in the block that has that alignment. */ -#if 0 - aligned = (char *) (((long) ptr + alignment - 1) & -alignment); -#else aligned = (char *) (((long) ptr + alignment - 1) & (~alignment + 1)); -#endif /* Store a suitable indication of how to free the block, so that free can find the true beginning of it. */ @@ -1121,6 +1185,57 @@ internal_memalign (alignment, size, file, line, flags) return aligned; } +int +posix_memalign (memptr, alignment, size) + void **memptr; + size_t alignment, size; +{ + void *mem; + + /* Perform posix-mandated error checking here */ + if ((alignment % sizeof (void *) != 0) || alignment == 0) + return EINVAL; + else if (powerof2 (alignment) == 0) + return EINVAL; + + mem = internal_memalign (alignment, size, (char *)0, 0, 0); + if (mem != 0) + { + *memptr = mem; + return 0; + } + return ENOMEM; +} + +size_t +malloc_usable_size (mem) + void *mem; +{ + register union mhead *p; + register char *ap; + register int maxbytes; + + + if ((ap = (char *)mem) == 0) + return 0; + + /* Find the true start of the memory block to discover which bin */ + p = (union mhead *) ap - 1; + if (p->mh_alloc == ISMEMALIGN) + { + ap -= p->mh_nbytes; + p = (union mhead *) ap - 1; + } + + /* XXX - should we return 0 if ISFREE? */ + maxbytes = binsize(p->mh_index); + + /* So the usable size is the maximum number of bytes in the bin less the + malloc overhead */ + maxbytes -= MOVERHEAD + MSLOP; + return (maxbytes); +} + #if !defined (NO_VALLOC) /* This runs into trouble with getpagesize on HPUX, and Multimax machines. Patching out seems cleaner than the ugly fix needed. */ 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/Makefile.in b/lib/readline/Makefile.in index 1291249d5..b2358c67a 100644 --- a/lib/readline/Makefile.in +++ b/lib/readline/Makefile.in @@ -64,7 +64,8 @@ LOCAL_DEFS = @LOCAL_DEFS@ INCLUDES = -I. -I$(BUILD_DIR) -I$(topdir) -I$(topdir)/lib -CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(APP_CFLAGS) $(CPPFLAGS) ${INCLUDES} $(LOCAL_CFLAGS) $(CFLAGS) +CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(APP_CFLAGS) $(CPPFLAGS) ${INCLUDES} \ + $(LOCAL_CFLAGS) $(CFLAGS) ${ADDON_CFLAGS} .c.o: ${RM} $@ diff --git a/lib/readline/bind.c b/lib/readline/bind.c index f1098c48b..57ae10f73 100644 --- a/lib/readline/bind.c +++ b/lib/readline/bind.c @@ -1,6 +1,6 @@ /* bind.c -- key binding and startup file support for the readline library. */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -80,6 +80,8 @@ static void _rl_init_file_error (const char *, ...) __attribute__((__format__ ( static void _rl_init_file_error (); #endif +static rl_command_func_t *_rl_function_of_keyseq_internal PARAMS((const char *, size_t, Keymap, int *)); + static char *_rl_read_file PARAMS((char *, size_t *)); static int _rl_read_init_file PARAMS((const char *, int)); static int glean_key_from_name PARAMS((char *)); @@ -87,14 +89,30 @@ static int glean_key_from_name PARAMS((char *)); static int find_boolean_var PARAMS((const char *)); static int find_string_var PARAMS((const char *)); +static const char *boolean_varname PARAMS((int)); +static const char *string_varname PARAMS((int)); + static char *_rl_get_string_variable_value PARAMS((const char *)); static int substring_member_of_array PARAMS((const char *, const char * const *)); +static int _rl_get_keymap_by_name PARAMS((const char *)); +static int _rl_get_keymap_by_map PARAMS((Keymap)); + static int currently_reading_init_file; /* used only in this file */ static int _rl_prefer_visible_bell = 1; +#define OP_EQ 1 +#define OP_NE 2 +#define OP_GT 3 +#define OP_GE 4 +#define OP_LT 5 +#define OP_LE 6 + +#define OPSTART(c) ((c) == '=' || (c) == '!' || (c) == '<' || (c) == '>') +#define CMPSTART(c) ((c) == '=' || (c) == '!') + /* **************************************************************** */ /* */ /* Binding keys */ @@ -105,10 +123,7 @@ static int _rl_prefer_visible_bell = 1; Add NAME to the list of named functions. Make FUNCTION be the function that gets called. If KEY is not -1, then bind it. */ int -rl_add_defun (name, function, key) - const char *name; - rl_command_func_t *function; - int key; +rl_add_defun (const char *name, rl_command_func_t *function, int key) { if (key != -1) rl_bind_key (key, function); @@ -118,9 +133,7 @@ rl_add_defun (name, function, key) /* Bind KEY to FUNCTION. Returns non-zero if KEY is out of range. */ int -rl_bind_key (key, function) - int key; - rl_command_func_t *function; +rl_bind_key (int key, rl_command_func_t *function) { char keyseq[3]; int l; @@ -168,10 +181,7 @@ rl_bind_key (key, function) /* Bind KEY to FUNCTION in MAP. Returns non-zero in case of invalid KEY. */ int -rl_bind_key_in_map (key, function, map) - int key; - rl_command_func_t *function; - Keymap map; +rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map) { int result; Keymap oldmap; @@ -184,57 +194,44 @@ rl_bind_key_in_map (key, function, map) } /* Bind key sequence KEYSEQ to DEFAULT_FUNC if KEYSEQ is unbound. Right - now, this is always used to attempt to bind the arrow keys, hence the - check for rl_vi_movement_mode. */ + now, this is always used to attempt to bind the arrow keys. */ int -rl_bind_key_if_unbound_in_map (key, default_func, kmap) - int key; - rl_command_func_t *default_func; - Keymap kmap; +rl_bind_key_if_unbound_in_map (int key, rl_command_func_t *default_func, Keymap kmap) { - char keyseq[2]; + char *keyseq; - keyseq[0] = (unsigned char)key; - keyseq[1] = '\0'; + keyseq = rl_untranslate_keyseq ((unsigned char)key); return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap)); } int -rl_bind_key_if_unbound (key, default_func) - int key; - rl_command_func_t *default_func; +rl_bind_key_if_unbound (int key, rl_command_func_t *default_func) { - char keyseq[2]; + char *keyseq; - keyseq[0] = (unsigned char)key; - keyseq[1] = '\0'; + keyseq = rl_untranslate_keyseq ((unsigned char)key); return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap)); } /* Make KEY do nothing in the currently selected keymap. - Returns non-zero in case of error. */ + Returns non-zero in case of error. This is not the same as self-insert; + this makes it a dead key. */ int -rl_unbind_key (key) - int key; +rl_unbind_key (int key) { return (rl_bind_key (key, (rl_command_func_t *)NULL)); } -/* Make KEY do nothing in MAP. - Returns non-zero in case of error. */ +/* Make KEY do nothing in MAP. Returns non-zero in case of error. */ int -rl_unbind_key_in_map (key, map) - int key; - Keymap map; +rl_unbind_key_in_map (int key, Keymap map) { return (rl_bind_key_in_map (key, (rl_command_func_t *)NULL, map)); } /* Unbind all keys bound to FUNCTION in MAP. */ int -rl_unbind_function_in_map (func, map) - rl_command_func_t *func; - Keymap map; +rl_unbind_function_in_map (rl_command_func_t *func, Keymap map) { register int i, rval; @@ -249,10 +246,9 @@ rl_unbind_function_in_map (func, map) return rval; } +/* Unbind all keys bound to COMMAND, which is a bindable command name, in MAP */ int -rl_unbind_command_in_map (command, map) - const char *command; - Keymap map; +rl_unbind_command_in_map (const char *command, Keymap map) { rl_command_func_t *func; @@ -266,9 +262,7 @@ rl_unbind_command_in_map (command, map) FUNCTION, starting in the current keymap. This makes new keymaps as necessary. */ int -rl_bind_keyseq (keyseq, function) - const char *keyseq; - rl_command_func_t *function; +rl_bind_keyseq (const char *keyseq, rl_command_func_t *function) { return (rl_generic_bind (ISFUNC, keyseq, (char *)function, _rl_keymap)); } @@ -277,20 +271,14 @@ rl_bind_keyseq (keyseq, function) FUNCTION. This makes new keymaps as necessary. The initial place to do bindings is in MAP. */ int -rl_bind_keyseq_in_map (keyseq, function, map) - const char *keyseq; - rl_command_func_t *function; - Keymap map; +rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map) { return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map)); } /* Backwards compatibility; equivalent to rl_bind_keyseq_in_map() */ int -rl_set_key (keyseq, function, map) - const char *keyseq; - rl_command_func_t *function; - Keymap map; +rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map) { return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map)); } @@ -299,16 +287,24 @@ rl_set_key (keyseq, function, map) now, this is always used to attempt to bind the arrow keys, hence the check for rl_vi_movement_mode. */ int -rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap) - const char *keyseq; - rl_command_func_t *default_func; - Keymap kmap; +rl_bind_keyseq_if_unbound_in_map (const char *keyseq, rl_command_func_t *default_func, Keymap kmap) { rl_command_func_t *func; + char *keys; + int keys_len; if (keyseq) { - func = rl_function_of_keyseq (keyseq, kmap, (int *)NULL); + /* Handle key sequences that require translations and `raw' ones that + don't. This might be a problem with backslashes. */ + keys = (char *)xmalloc (1 + (2 * strlen (keyseq))); + if (rl_translate_keyseq (keyseq, keys, &keys_len)) + { + xfree (keys); + return -1; + } + func = rl_function_of_keyseq_len (keys, keys_len, kmap, (int *)NULL); + xfree (keys); #if defined (VI_MODE) if (!func || func == rl_do_lowercase_version || func == rl_vi_movement_mode) #else @@ -322,9 +318,7 @@ rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap) } int -rl_bind_keyseq_if_unbound (keyseq, default_func) - const char *keyseq; - rl_command_func_t *default_func; +rl_bind_keyseq_if_unbound (const char *keyseq, rl_command_func_t *default_func) { return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap)); } @@ -333,9 +327,7 @@ rl_bind_keyseq_if_unbound (keyseq, default_func) the string of characters MACRO. This makes new keymaps as necessary. The initial place to do bindings is in MAP. */ int -rl_macro_bind (keyseq, macro, map) - const char *keyseq, *macro; - Keymap map; +rl_macro_bind (const char *keyseq, const char *macro, Keymap map) { char *macro_keys; int macro_keys_len; @@ -357,16 +349,13 @@ rl_macro_bind (keyseq, macro, map) a macro (ISMACR), or a keymap (ISKMAP). This makes new keymaps as necessary. The initial place to do bindings is in MAP. */ int -rl_generic_bind (type, keyseq, data, map) - int type; - const char *keyseq; - char *data; - Keymap map; +rl_generic_bind (int type, const char *keyseq, char *data, Keymap map) { char *keys; - int keys_len; + int keys_len, prevkey; register int i; KEYMAP_ENTRY k; + Keymap prevmap; k.function = 0; @@ -389,12 +378,18 @@ rl_generic_bind (type, keyseq, data, map) return -1; } + prevmap = map; + prevkey = keys[0]; + /* Bind keys, making new keymaps as necessary. */ for (i = 0; i < keys_len; i++) { unsigned char uc = keys[i]; int ic; + if (i > 0) + prevkey = ic; + ic = uc; if (ic < 0 || ic >= KEYMAP_SIZE) { @@ -406,7 +401,10 @@ rl_generic_bind (type, keyseq, data, map) { ic = UNMETA (ic); if (map[ESC].type == ISKMAP) - map = FUNCTION_TO_KEYMAP (map, ESC); + { + prevmap = map; + map = FUNCTION_TO_KEYMAP (map, ESC); + } } if ((i + 1) < keys_len) @@ -425,6 +423,7 @@ rl_generic_bind (type, keyseq, data, map) map[ic].type = ISKMAP; map[ic].function = KEYMAP_TO_FUNCTION (rl_make_bare_keymap()); } + prevmap = map; map = FUNCTION_TO_KEYMAP (map, ic); /* The dispatch code will return this function if no matching key sequence is found in the keymap. This (with a little @@ -444,6 +443,7 @@ rl_generic_bind (type, keyseq, data, map) xfree ((char *)map[ic].function); else if (map[ic].type == ISKMAP) { + prevmap = map; map = FUNCTION_TO_KEYMAP (map, ic); ic = ANYOTHERKEY; /* If we're trying to override a keymap with a null function @@ -460,7 +460,28 @@ rl_generic_bind (type, keyseq, data, map) } rl_binding_keymap = map; + } + + /* If we unbound a key (type == ISFUNC, data == 0), and the prev keymap + points to the keymap where we unbound the key (sanity check), and the + current binding keymap is empty (rl_empty_keymap() returns non-zero), + and the binding keymap has ANYOTHERKEY set with type == ISFUNC + (overridden function), delete the now-empty keymap, take the previously- + overridden function and remove the override. */ + /* Right now, this only works one level back. */ + if (type == ISFUNC && data == 0 && + prevmap[prevkey].type == ISKMAP && + (FUNCTION_TO_KEYMAP(prevmap, prevkey) == rl_binding_keymap) && + rl_binding_keymap[ANYOTHERKEY].type == ISFUNC && + rl_empty_keymap (rl_binding_keymap)) + { + prevmap[prevkey].type = rl_binding_keymap[ANYOTHERKEY].type; + prevmap[prevkey].function = rl_binding_keymap[ANYOTHERKEY].function; + rl_discard_keymap (rl_binding_keymap); + rl_binding_keymap = prevmap; + } + xfree (keys); return 0; } @@ -469,10 +490,7 @@ rl_generic_bind (type, keyseq, data, map) an array of characters. LEN gets the final length of ARRAY. Return non-zero if there was an error parsing SEQ. */ int -rl_translate_keyseq (seq, array, len) - const char *seq; - char *array; - int *len; +rl_translate_keyseq (const char *seq, char *array, int *len) { register int i, c, l, temp; @@ -483,7 +501,10 @@ rl_translate_keyseq (seq, array, len) c = seq[++i]; if (c == 0) - break; + { + array[l++] = '\\'; /* preserve trailing backslash */ + break; + } /* Handle \C- and \M- prefixes. */ if ((c == 'C' || c == 'M') && seq[i + 1] == '-') @@ -494,8 +515,6 @@ rl_translate_keyseq (seq, array, len) array[l++] = ESC; /* ESC is meta-prefix */ i += 5; array[l++] = CTRL (_rl_to_upper (seq[i])); - if (seq[i] == '\0') - i--; } else if (c == 'M') { @@ -524,6 +543,8 @@ rl_translate_keyseq (seq, array, len) /* Special hack for C-?... */ array[l++] = (seq[i] == '?') ? RUBOUT : CTRL (_rl_to_upper (seq[i])); } + if (seq[i] == '\0') + break; continue; } @@ -596,8 +617,7 @@ rl_translate_keyseq (seq, array, len) } static int -_rl_isescape (c) - int c; +_rl_isescape (int c) { switch (c) { @@ -613,8 +633,7 @@ _rl_isescape (c) } static int -_rl_escchar (c) - int c; +_rl_escchar (int c) { switch (c) { @@ -630,8 +649,7 @@ _rl_escchar (c) } char * -rl_untranslate_keyseq (seq) - int seq; +rl_untranslate_keyseq (int seq) { static char kseq[16]; int i, c; @@ -681,9 +699,7 @@ rl_untranslate_keyseq (seq) } char * -_rl_untranslate_macro_value (seq, use_escapes) - char *seq; - int use_escapes; +_rl_untranslate_macro_value (char *seq, int use_escapes) { char *ret, *r, *s; int c; @@ -742,8 +758,7 @@ _rl_untranslate_macro_value (seq, use_escapes) If STRING doesn't have a matching function, then a NULL pointer is returned. */ rl_command_func_t * -rl_named_function (string) - const char *string; +rl_named_function (const char *string) { register int i; @@ -760,18 +775,15 @@ rl_named_function (string) used. TYPE, if non-NULL, is a pointer to an int which will receive the type of the object pointed to. One of ISFUNC (function), ISKMAP (keymap), or ISMACR (macro). */ -rl_command_func_t * -rl_function_of_keyseq (keyseq, map, type) - const char *keyseq; - Keymap map; - int *type; +static rl_command_func_t * +_rl_function_of_keyseq_internal (const char *keyseq, size_t len, Keymap map, int *type) { register int i; if (map == 0) map = _rl_keymap; - for (i = 0; keyseq && keyseq[i]; i++) + for (i = 0; keyseq && i < len; i++) { unsigned char ic = keyseq[i]; @@ -823,6 +835,18 @@ rl_function_of_keyseq (keyseq, map, type) return ((rl_command_func_t *) NULL); } +rl_command_func_t * +rl_function_of_keyseq (const char *keyseq, Keymap map, int *type) +{ + return _rl_function_of_keyseq_internal (keyseq, strlen (keyseq), map, type); +} + +rl_command_func_t * +rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type) +{ + return _rl_function_of_keyseq_internal (keyseq, len, map, type); +} + /* The last key bindings file read. */ static char *last_readline_init_file = (char *)NULL; @@ -835,17 +859,20 @@ static int current_readline_init_lineno; The size of the buffer is returned in *SIZEP. Returns NULL if any errors were encountered. */ static char * -_rl_read_file (filename, sizep) - char *filename; - size_t *sizep; +_rl_read_file (char *filename, size_t *sizep) { struct stat finfo; size_t file_size; char *buffer; int i, file; - if ((stat (filename, &finfo) < 0) || (file = open (filename, O_RDONLY, 0666)) < 0) - return ((char *)NULL); + file = -1; + if (((file = open (filename, O_RDONLY, 0666)) < 0) || (fstat (file, &finfo) < 0)) + { + if (file >= 0) + close (file); + return ((char *)NULL); + } file_size = (size_t)finfo.st_size; @@ -882,8 +909,7 @@ _rl_read_file (filename, sizep) /* Re-read the current keybindings file. */ int -rl_re_read_init_file (count, ignore) - int count, ignore; +rl_re_read_init_file (int count, int ignore) { int r; r = rl_read_init_file ((const char *)NULL); @@ -900,8 +926,7 @@ rl_re_read_init_file (count, ignore) If the file existed and could be opened and read, 0 is returned, otherwise errno is returned. */ int -rl_read_init_file (filename) - const char *filename; +rl_read_init_file (const char *filename) { /* Default the filename. */ if (filename == 0) @@ -926,9 +951,7 @@ rl_read_init_file (filename) } static int -_rl_read_init_file (filename, include_level) - const char *filename; - int include_level; +_rl_read_init_file (const char *filename, int include_level) { register int i; char *buffer, *openname, *line, *end; @@ -1025,6 +1048,62 @@ _rl_init_file_error (va_alist) va_end (args); } +/* **************************************************************** */ +/* */ +/* Parser Helper Functions */ +/* */ +/* **************************************************************** */ + +static int +parse_comparison_op (s, indp) + const char *s; + int *indp; +{ + int i, peekc, op; + + if (OPSTART (s[*indp]) == 0) + return -1; + i = *indp; + peekc = s[i] ? s[i+1] : 0; + op = -1; + + if (s[i] == '=') + { + op = OP_EQ; + if (peekc == '=') + i++; + i++; + } + else if (s[i] == '!' && peekc == '=') + { + op = OP_NE; + i += 2; + } + else if (s[i] == '<' && peekc == '=') + { + op = OP_LE; + i += 2; + } + else if (s[i] == '>' && peekc == '=') + { + op = OP_GE; + i += 2; + } + else if (s[i] == '<') + { + op = OP_LT; + i += 1; + } + else if (s[i] == '>') + { + op = OP_GT; + i += 1; + } + + *indp = i; + return op; +} + /* **************************************************************** */ /* */ /* Parser Directives */ @@ -1055,10 +1134,11 @@ static int if_stack_size; /* Push _rl_parsing_conditionalized_out, and set parser state based on ARGS. */ static int -parser_if (args) - char *args; +parser_if (char *args) { - register int i; + int i, llen, boolvar, strvar; + + boolvar = strvar = -1; /* Push parser state. */ if (if_stack_depth + 1 >= if_stack_size) @@ -1075,6 +1155,8 @@ parser_if (args) if (_rl_parsing_conditionalized_out) return 0; + llen = strlen (args); + /* Isolate first argument. */ for (i = 0; args[i] && !whitespace (args[i]); i++); @@ -1117,10 +1199,138 @@ parser_if (args) _rl_parsing_conditionalized_out = mode != rl_editing_mode; } #endif /* VI_MODE */ + else if (_rl_strnicmp (args, "version", 7) == 0) + { + int rlversion, versionarg, op, previ, major, minor; + + _rl_parsing_conditionalized_out = 1; + rlversion = RL_VERSION_MAJOR*10 + RL_VERSION_MINOR; + /* if "version" is separated from the operator by whitespace, or the + operand is separated from the operator by whitespace, restore it. + We're more liberal with allowed whitespace for this variable. */ + if (i > 0 && i <= llen && args[i-1] == '\0') + args[i-1] = ' '; + args[llen] = '\0'; /* just in case */ + for (i = 7; whitespace (args[i]); i++) + ; + if (OPSTART(args[i]) == 0) + { + _rl_init_file_error ("comparison operator expected, found `%s'", args[i] ? args + i : "end-of-line"); + return 0; + } + previ = i; + op = parse_comparison_op (args, &i); + if (op <= 0) + { + _rl_init_file_error ("comparison operator expected, found `%s'", args+previ); + return 0; + } + for ( ; args[i] && whitespace (args[i]); i++) + ; + if (args[i] == 0 || _rl_digit_p (args[i]) == 0) + { + _rl_init_file_error ("numeric argument expected, found `%s'", args+i); + return 0; + } + major = minor = 0; + previ = i; + for ( ; args[i] && _rl_digit_p (args[i]); i++) + major = major*10 + _rl_digit_value (args[i]); + if (args[i] == '.') + { + if (args[i + 1] && _rl_digit_p (args [i + 1]) == 0) + { + _rl_init_file_error ("numeric argument expected, found `%s'", args+previ); + return 0; + } + for (++i; args[i] && _rl_digit_p (args[i]); i++) + minor = minor*10 + _rl_digit_value (args[i]); + } + /* optional - check for trailing garbage on the line, allow whitespace + and a trailing comment */ + previ = i; + for ( ; args[i] && whitespace (args[i]); i++) + ; + if (args[i] && args[i] != '#') + { + _rl_init_file_error ("trailing garbage on line: `%s'", args+previ); + return 0; + } + versionarg = major*10 + minor; + + switch (op) + { + case OP_EQ: + _rl_parsing_conditionalized_out = rlversion == versionarg; + break; + case OP_NE: + _rl_parsing_conditionalized_out = rlversion != versionarg; + break; + case OP_GT: + _rl_parsing_conditionalized_out = rlversion > versionarg; + break; + case OP_GE: + _rl_parsing_conditionalized_out = rlversion >= versionarg; + break; + case OP_LT: + _rl_parsing_conditionalized_out = rlversion < versionarg; + break; + case OP_LE: + _rl_parsing_conditionalized_out = rlversion <= versionarg; + break; + } + } /* Check to see if the first word in ARGS is the same as the value stored in rl_readline_name. */ else if (_rl_stricmp (args, rl_readline_name) == 0) _rl_parsing_conditionalized_out = 0; + else if ((boolvar = find_boolean_var (args)) >= 0 || (strvar = find_string_var (args)) >= 0) + { + int op, previ; + size_t vlen; + const char *vname; + char *valuearg, *vval, prevc; + + _rl_parsing_conditionalized_out = 1; + vname = (boolvar >= 0) ? boolean_varname (boolvar) : string_varname (strvar); + vlen = strlen (vname); + if (i > 0 && i <= llen && args[i-1] == '\0') + args[i-1] = ' '; + args[llen] = '\0'; /* just in case */ + for (i = vlen; whitespace (args[i]); i++) + ; + if (CMPSTART(args[i]) == 0) + { + _rl_init_file_error ("equality comparison operator expected, found `%s'", args[i] ? args + i : "end-of-line"); + return 0; + } + previ = i; + op = parse_comparison_op (args, &i); + if (op != OP_EQ && op != OP_NE) + { + _rl_init_file_error ("equality comparison operator expected, found `%s'", args+previ); + return 0; + } + for ( ; args[i] && whitespace (args[i]); i++) + ; + if (args[i] == 0) + { + _rl_init_file_error ("argument expected, found `%s'", args+i); + return 0; + } + previ = i; + valuearg = args + i; + for ( ; args[i] && whitespace (args[i]) == 0; i++) + ; + prevc = args[i]; + args[i] = '\0'; /* null-terminate valuearg */ + vval = rl_variable_value (vname); + if (op == OP_EQ) + _rl_parsing_conditionalized_out = _rl_stricmp (vval, valuearg) != 0; + else if (op == OP_NE) + _rl_parsing_conditionalized_out = _rl_stricmp (vval, valuearg) == 0; + args[i] = prevc; + } else _rl_parsing_conditionalized_out = 1; return 0; @@ -1128,8 +1338,7 @@ parser_if (args) /* Invert the current parser state if there is anything on the stack. */ static int -parser_else (args) - char *args; +parser_else (char *args) { register int i; @@ -1159,8 +1368,7 @@ parser_else (args) /* Terminate a conditional, popping the value of _rl_parsing_conditionalized_out from the stack. */ static int -parser_endif (args) - char *args; +parser_endif (char *args) { if (if_stack_depth) _rl_parsing_conditionalized_out = if_stack[--if_stack_depth]; @@ -1170,8 +1378,7 @@ parser_endif (args) } static int -parser_include (args) - char *args; +parser_include (char *args) { const char *old_init_file; char *e; @@ -1211,8 +1418,7 @@ static const struct { /* Handle a parser directive. STATEMENT is the line of the directive without any leading `$'. */ static int -handle_parser_directive (statement) - char *statement; +handle_parser_directive (char *statement) { register int i; char *directive, *args; @@ -1249,9 +1455,7 @@ handle_parser_directive (statement) /* Start at STRING[START] and look for DELIM. Return I where STRING[I] == DELIM or STRING[I] == 0. DELIM is usually a double quote. */ static int -_rl_skip_to_delim (string, start, delim) - char *string; - int start, delim; +_rl_skip_to_delim (char *string, int start, int delim) { int i, c, passc; @@ -1283,8 +1487,7 @@ _rl_skip_to_delim (string, start, delim) a variable binding command looks like: set variable value. A new-style keybinding looks like "\C-x\C-x": exchange-point-and-mark. */ int -rl_parse_and_bind (string) - char *string; +rl_parse_and_bind (char *string) { char *funname, *kname; register int c, i; @@ -1328,6 +1531,12 @@ rl_parse_and_bind (string) /* Advance to the colon (:) or whitespace which separates the two objects. */ for (; (c = string[i]) && c != ':' && c != ' ' && c != '\t'; i++ ); + if (i == 0) + { + _rl_init_file_error ("`%s': invalid key binding: missing key sequence", string); + return 1; + } + equivalency = (c == ':' && string[i + 1] == '='); foundsep = c != 0; @@ -1406,6 +1615,11 @@ remove_trailing: i = _rl_skip_to_delim (string, i+1, *funname); if (string[i]) i++; + else + { + _rl_init_file_error ("`%s': missing closing quote for macro", funname); + return 1; + } } /* Advance to the end of the string. */ @@ -1583,8 +1797,7 @@ static const struct { }; static int -find_boolean_var (name) - const char *name; +find_boolean_var (const char *name) { register int i; @@ -1594,12 +1807,17 @@ find_boolean_var (name) return -1; } +static const char * +boolean_varname (int i) +{ + return ((i >= 0) ? boolean_varlist[i].name : (char *)NULL); +} + /* Hooks for handling special boolean variables, where a function needs to be called or another variable needs to be changed when they're changed. */ static void -hack_special_boolean_var (i) - int i; +hack_special_boolean_var (int i) { const char *name; @@ -1668,8 +1886,7 @@ static const struct { }; static int -find_string_var (name) - const char *name; +find_string_var (const char *name) { register int i; @@ -1679,12 +1896,17 @@ find_string_var (name) return -1; } +static const char * +string_varname (int i) +{ + return ((i >= 0) ? string_varlist[i].name : (char *)NULL); +} + /* A boolean value that can appear in a `set variable' command is true if the value is null or empty, `on' (case-insensitive), or "1". Any other values result in 0 (false). */ static int -bool_to_int (value) - const char *value; +bool_to_int (const char *value) { return (value == 0 || *value == '\0' || (_rl_stricmp (value, "on") == 0) || @@ -1692,8 +1914,7 @@ bool_to_int (value) } char * -rl_variable_value (name) - const char *name; +rl_variable_value (const char *name) { register int i; @@ -1711,8 +1932,7 @@ rl_variable_value (name) } int -rl_variable_bind (name, value) - const char *name, *value; +rl_variable_bind (const char *name, const char *value) { register int i; int v; @@ -1743,8 +1963,7 @@ rl_variable_bind (name, value) } static int -sv_editmode (value) - const char *value; +sv_editmode (const char *value) { if (_rl_strnicmp (value, "vi", 2) == 0) { @@ -1764,8 +1983,7 @@ sv_editmode (value) } static int -sv_combegin (value) - const char *value; +sv_combegin (const char *value) { if (value && *value) { @@ -1777,8 +1995,7 @@ sv_combegin (value) } static int -sv_dispprefix (value) - const char *value; +sv_dispprefix (const char *value) { int nval = 0; @@ -1793,8 +2010,7 @@ sv_dispprefix (value) } static int -sv_compquery (value) - const char *value; +sv_compquery (const char *value) { int nval = 100; @@ -1809,8 +2025,7 @@ sv_compquery (value) } static int -sv_compwidth (value) - const char *value; +sv_compwidth (const char *value) { int nval = -1; @@ -1822,8 +2037,7 @@ sv_compwidth (value) } static int -sv_histsize (value) - const char *value; +sv_histsize (const char *value) { int nval; @@ -1842,8 +2056,7 @@ sv_histsize (value) } static int -sv_keymap (value) - const char *value; +sv_keymap (const char *value) { Keymap kmap; @@ -1857,8 +2070,7 @@ sv_keymap (value) } static int -sv_seqtimeout (value) - const char *value; +sv_seqtimeout (const char *value) { int nval; @@ -1874,8 +2086,7 @@ sv_seqtimeout (value) } static int -sv_bell_style (value) - const char *value; +sv_bell_style (const char *value) { if (value == 0 || *value == '\0') _rl_bell_preference = AUDIBLE_BELL; @@ -1891,8 +2102,7 @@ sv_bell_style (value) } static int -sv_isrchterm (value) - const char *value; +sv_isrchterm (const char *value) { int beg, end, delim; char *v; @@ -1929,8 +2139,7 @@ sv_isrchterm (value) extern char *_rl_emacs_mode_str; static int -sv_emacs_modestr (value) - const char *value; +sv_emacs_modestr (const char *value) { if (value && *value) { @@ -1958,8 +2167,7 @@ sv_emacs_modestr (value) } static int -sv_viins_modestr (value) - const char *value; +sv_viins_modestr (const char *value) { if (value && *value) { @@ -1987,8 +2195,7 @@ sv_viins_modestr (value) } static int -sv_vicmd_modestr (value) - const char *value; +sv_vicmd_modestr (const char *value) { if (value && *value) { @@ -2039,8 +2246,7 @@ static const assoc_list name_key_alist[] = { }; static int -glean_key_from_name (name) - char *name; +glean_key_from_name (char *name) { register int i; @@ -2052,10 +2258,12 @@ glean_key_from_name (name) } /* Auxiliary functions to manage keymaps. */ -static const struct { - const char * const name; +struct name_and_keymap { + char *name; Keymap map; -} keymap_names[] = { +}; + +static struct name_and_keymap builtin_keymap_names[] = { { "emacs", emacs_standard_keymap }, { "emacs-standard", emacs_standard_keymap }, { "emacs-meta", emacs_meta_keymap }, @@ -2069,45 +2277,116 @@ static const struct { { (char *)0x0, (Keymap)0x0 } }; -Keymap -rl_get_keymap_by_name (name) - const char *name; +/* -1 for NULL entry */ +#define NUM_BUILTIN_KEYMAPS (sizeof (builtin_keymap_names) / sizeof (builtin_keymap_names[0]) - 1) + +static struct name_and_keymap *keymap_names = builtin_keymap_names; + +static int +_rl_get_keymap_by_name (const char *name) { register int i; for (i = 0; keymap_names[i].name; i++) if (_rl_stricmp (name, keymap_names[i].name) == 0) - return (keymap_names[i].map); - return ((Keymap) NULL); + return (i); + return -1; } -char * -rl_get_keymap_name (map) - Keymap map; +Keymap +rl_get_keymap_by_name (const char *name) +{ + int i; + + i = _rl_get_keymap_by_name (name); + return ((i >= 0) ? keymap_names[i].map : (Keymap) NULL); +} + +static int +_rl_get_keymap_by_map (Keymap map) { register int i; + for (i = 0; keymap_names[i].name; i++) if (map == keymap_names[i].map) - return ((char *)keymap_names[i].name); - return ((char *)NULL); + return (i); + return -1; } - + +char * +rl_get_keymap_name (Keymap map) +{ + int i; + + i = _rl_get_keymap_by_map (map); + return ((i >= 0) ? keymap_names[i].name : (char *)NULL); +} + +int +rl_set_keymap_name (const char *name, Keymap map) +{ + int i, ni, mi; + + /* First check whether or not we're trying to rename a builtin keymap */ + mi = _rl_get_keymap_by_map (map); + if (mi >= 0 && mi < NUM_BUILTIN_KEYMAPS) + return -1; + + /* Then reject attempts to set one of the builtin names to a new map */ + ni = _rl_get_keymap_by_name (name); + if (ni >= 0 && ni < NUM_BUILTIN_KEYMAPS) + return -1; + + /* Renaming a keymap we already added */ + if (mi >= 0) /* XXX - could be >= NUM_BUILTIN_KEYMAPS */ + { + xfree (keymap_names[mi].name); + keymap_names[mi].name = savestring (name); + return mi; + } + + /* Associating new keymap with existing name */ + if (ni >= 0) + { + keymap_names[ni].map = map; + return ni; + } + + for (i = 0; keymap_names[i].name; i++) + ; + + if (keymap_names == builtin_keymap_names) + { + keymap_names = xmalloc ((i + 2) * sizeof (struct name_and_keymap)); + memcpy (keymap_names, builtin_keymap_names, i * sizeof (struct name_and_keymap)); + } + else + keymap_names = xrealloc (keymap_names, (i + 2) * sizeof (struct name_and_keymap)); + + keymap_names[i].name = savestring (name); + keymap_names[i].map = map; + + keymap_names[i+1].name = NULL; + keymap_names[i+1].map = NULL; + + return i; +} + void -rl_set_keymap (map) - Keymap map; +rl_set_keymap (Keymap map) { if (map) _rl_keymap = map; } Keymap -rl_get_keymap () +rl_get_keymap (void) { return (_rl_keymap); } void -rl_set_keymap_from_edit_mode () +rl_set_keymap_from_edit_mode (void) { if (rl_editing_mode == emacs_mode) _rl_keymap = emacs_standard_keymap; @@ -2118,7 +2397,7 @@ rl_set_keymap_from_edit_mode () } char * -rl_get_keymap_name_from_edit_mode () +rl_get_keymap_name_from_edit_mode (void) { if (rl_editing_mode == emacs_mode) return "emacs"; @@ -2143,7 +2422,7 @@ rl_get_keymap_name_from_edit_mode () /* Print the names of functions known to Readline. */ void -rl_list_funmap_names () +rl_list_funmap_names (void) { register int i; const char **funmap_names; @@ -2160,8 +2439,7 @@ rl_list_funmap_names () } static char * -_rl_get_keyname (key) - int key; +_rl_get_keyname (int key) { char *keyname; int i, c; @@ -2236,9 +2514,7 @@ _rl_get_keyname (key) /* Return a NULL terminated array of strings which represent the key sequences that are used to invoke FUNCTION in MAP. */ char ** -rl_invoking_keyseqs_in_map (function, map) - rl_command_func_t *function; - Keymap map; +rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map) { register int key; char **result; @@ -2345,8 +2621,7 @@ rl_invoking_keyseqs_in_map (function, map) /* Return a NULL terminated array of strings which represent the key sequences that can be used to invoke FUNCTION using the current keymap. */ char ** -rl_invoking_keyseqs (function) - rl_command_func_t *function; +rl_invoking_keyseqs (rl_command_func_t *function) { return (rl_invoking_keyseqs_in_map (function, _rl_keymap)); } @@ -2355,8 +2630,7 @@ rl_invoking_keyseqs (function) PRINT_READABLY is non-zero, then print the output in such a way that it can be read back in. */ void -rl_function_dumper (print_readably) - int print_readably; +rl_function_dumper (int print_readably) { register int i; const char **names; @@ -2427,8 +2701,7 @@ rl_function_dumper (print_readably) rl_outstream. If an explicit argument is given, then print the output in such a way that it can be read back in. */ int -rl_dump_functions (count, key) - int count, key; +rl_dump_functions (int count, int key) { if (rl_dispatching) fprintf (rl_outstream, "\r\n"); @@ -2438,10 +2711,7 @@ rl_dump_functions (count, key) } static void -_rl_macro_dumper_internal (print_readably, map, prefix) - int print_readably; - Keymap map; - char *prefix; +_rl_macro_dumper_internal (int print_readably, Keymap map, char *prefix) { register int key; char *keyname, *out; @@ -2500,15 +2770,13 @@ _rl_macro_dumper_internal (print_readably, map, prefix) } void -rl_macro_dumper (print_readably) - int print_readably; +rl_macro_dumper (int print_readably) { _rl_macro_dumper_internal (print_readably, _rl_keymap, (char *)NULL); } int -rl_dump_macros (count, key) - int count, key; +rl_dump_macros (int count, int key) { if (rl_dispatching) fprintf (rl_outstream, "\r\n"); @@ -2518,8 +2786,7 @@ rl_dump_macros (count, key) } static char * -_rl_get_string_variable_value (name) - const char *name; +_rl_get_string_variable_value (const char *name) { static char numbuf[32]; char *ret; @@ -2599,8 +2866,7 @@ _rl_get_string_variable_value (name) } void -rl_variable_dumper (print_readably) - int print_readably; +rl_variable_dumper (int print_readably) { int i; char *v; @@ -2631,8 +2897,7 @@ rl_variable_dumper (print_readably) rl_outstream. If an explicit argument is given, then print the output in such a way that it can be read back in. */ int -rl_dump_variables (count, key) - int count, key; +rl_dump_variables (int count, int key) { if (rl_dispatching) fprintf (rl_outstream, "\r\n"); @@ -2643,9 +2908,7 @@ rl_dump_variables (count, key) /* Return non-zero if any members of ARRAY are a substring in STRING. */ static int -substring_member_of_array (string, array) - const char *string; - const char * const *array; +substring_member_of_array (const char *string, const char * const *array) { while (*array) { diff --git a/lib/readline/callback.c b/lib/readline/callback.c index cc3ce11f1..a466cf9b6 100644 --- a/lib/readline/callback.c +++ b/lib/readline/callback.c @@ -1,6 +1,6 @@ /* callback.c -- functions to use readline as an X `callback' mechanism. */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -60,7 +60,7 @@ int rl_persistent_signal_handlers = 0; /* **************************************************************** */ /* */ -/* Callback Readline Functions */ +/* Callback Readline Functions */ /* */ /* **************************************************************** */ @@ -80,7 +80,7 @@ static int in_handler; /* terminal_prepped and signals set? */ /* Make sure the terminal is set up, initialize readline, and prompt. */ static void -_rl_callback_newline () +_rl_callback_newline (void) { rl_initialize (); @@ -103,9 +103,7 @@ _rl_callback_newline () /* Install a readline handler, set up the terminal, and issue the prompt. */ void -rl_callback_handler_install (prompt, linefunc) - const char *prompt; - rl_vcpfunc_t *linefunc; +rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *linefunc) { rl_set_prompt (prompt); RL_SETSTATE (RL_STATE_CALLBACK); @@ -126,7 +124,7 @@ rl_callback_handler_install (prompt, linefunc) /* Read one character, and dispatch to the handler if it ends the line. */ void -rl_callback_read_char () +rl_callback_read_char (void) { char *line; int eof, jcode; @@ -299,7 +297,7 @@ rl_callback_read_char () /* Remove the handler, and make sure the terminal is in its normal state. */ void -rl_callback_handler_remove () +rl_callback_handler_remove (void) { rl_linefunc = NULL; RL_UNSETSTATE (RL_STATE_CALLBACK); @@ -316,8 +314,7 @@ rl_callback_handler_remove () } _rl_callback_generic_arg * -_rl_callback_data_alloc (count) - int count; +_rl_callback_data_alloc (int count) { _rl_callback_generic_arg *arg; @@ -330,15 +327,14 @@ _rl_callback_data_alloc (count) } void -_rl_callback_data_dispose (arg) - _rl_callback_generic_arg *arg; +_rl_callback_data_dispose (_rl_callback_generic_arg *arg) { xfree (arg); } /* Make sure that this agrees with cases in rl_callback_read_char */ void -rl_callback_sigcleanup () +rl_callback_sigcleanup (void) { if (RL_ISSTATE (RL_STATE_CALLBACK) == 0) return; diff --git a/lib/readline/colors.c b/lib/readline/colors.c index 7859f5d2b..53758e0e7 100644 --- a/lib/readline/colors.c +++ b/lib/readline/colors.c @@ -2,7 +2,7 @@ Modified by Chet Ramey for Readline. - Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015 + Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015, 2017 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -37,6 +37,10 @@ #include "posixstat.h" // stat related macros (S_ISREG, ...) #include // S_ISUID +#ifndef S_ISDIR +# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) +#endif + // strlen() #if defined (HAVE_STRING_H) # include @@ -66,7 +70,8 @@ COLOR_EXT_TYPE *_rl_color_ext_list = 0; /* Output a color indicator (which may contain nulls). */ void -_rl_put_indicator (const struct bin_str *ind) { +_rl_put_indicator (const struct bin_str *ind) +{ fwrite (ind->string, ind->len, 1, rl_outstream); } @@ -183,11 +188,17 @@ _rl_print_color_indicator (const char *f) { colored_filetype = C_FILE; +#if defined (S_ISUID) if ((mode & S_ISUID) != 0 && is_colored (C_SETUID)) colored_filetype = C_SETUID; - else if ((mode & S_ISGID) != 0 && is_colored (C_SETGID)) + else +#endif +#if defined (S_ISGID) + if ((mode & S_ISGID) != 0 && is_colored (C_SETGID)) colored_filetype = C_SETGID; - else if (is_colored (C_CAP) && 0) //f->has_capability) + else +#endif + if (is_colored (C_CAP) && 0) //f->has_capability) colored_filetype = C_CAP; else if ((mode & S_IXUGO) != 0 && is_colored (C_EXEC)) colored_filetype = C_EXEC; @@ -211,12 +222,16 @@ _rl_print_color_indicator (const char *f) colored_filetype = C_STICKY; #endif } +#if defined (S_ISLNK) else if (S_ISLNK (mode)) colored_filetype = C_LINK; +#endif else if (S_ISFIFO (mode)) colored_filetype = C_FIFO; +#if defined (S_ISSOCK) else if (S_ISSOCK (mode)) colored_filetype = C_SOCK; +#endif else if (S_ISBLK (mode)) colored_filetype = C_BLK; else if (S_ISCHR (mode)) diff --git a/lib/readline/compat.c b/lib/readline/compat.c index 2af51207a..3ade3629a 100644 --- a/lib/readline/compat.c +++ b/lib/readline/compat.c @@ -1,6 +1,6 @@ /* compat.c -- backwards compatibility functions. */ -/* Copyright (C) 2000-2009 Free Software Foundation, Inc. +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -46,68 +46,61 @@ extern char *rl_filename_completion_function PARAMS((const char *, int)); /* Provide backwards-compatible entry points for old function names. */ void -free_undo_list () +free_undo_list (void) { rl_free_undo_list (); } int -maybe_replace_line () +maybe_replace_line (void) { return rl_maybe_replace_line (); } int -maybe_save_line () +maybe_save_line (void) { return rl_maybe_save_line (); } int -maybe_unsave_line () +maybe_unsave_line (void) { return rl_maybe_unsave_line (); } int -ding () +ding (void) { return rl_ding (); } int -crlf () +crlf (void) { return rl_crlf (); } int -alphabetic (c) - int c; +alphabetic (int c) { return rl_alphabetic (c); } char ** -completion_matches (s, f) - const char *s; - rl_compentry_func_t *f; +completion_matches (const char *s, rl_compentry_func_t *f) { return rl_completion_matches (s, f); } char * -username_completion_function (s, i) - const char *s; - int i; +username_completion_function (const char *s, int i) { return rl_username_completion_function (s, i); } char * -filename_completion_function (s, i) - const char *s; - int i; +filename_completion_function (const char *s, int i) { return rl_filename_completion_function (s, i); } diff --git a/lib/readline/complete.c b/lib/readline/complete.c index 0a81129b8..adce0d69a 100644 --- a/lib/readline/complete.c +++ b/lib/readline/complete.c @@ -1,6 +1,6 @@ /* complete.c -- filename completion for readline. */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -198,15 +198,6 @@ int _rl_completion_prefix_display_length = 0; matches. If < 0 or > _rl_screenwidth, it is ignored. */ int _rl_completion_columns = -1; -/* Global variables available to applications using readline. */ - -#if defined (VISIBLE_STATS) -/* Non-zero means add an additional character to each filename displayed - during listing completion iff rl_filename_completion_desired which helps - to indicate the type of file being listed. */ -int rl_visible_stats = 0; -#endif /* VISIBLE_STATS */ - #if defined (COLOR_SUPPORT) /* Non-zero means to use colors to indicate file type when listing possible completions. The colors used are taken from $LS_COLORS, if set. */ @@ -227,6 +218,15 @@ int _rl_skip_completed_text = 0; cycle of possible completions instead of the last. */ int _rl_menu_complete_prefix_first = 0; +/* Global variables available to applications using readline. */ + +#if defined (VISIBLE_STATS) +/* Non-zero means add an additional character to each filename displayed + during listing completion iff rl_filename_completion_desired which helps + to indicate the type of file being listed. */ +int rl_visible_stats = 0; +#endif /* VISIBLE_STATS */ + /* If non-zero, then this is the address of a function to call when completing on a directory name. The function is called with the address of a string (the current directory name) as an arg. */ @@ -422,8 +422,7 @@ static int _rl_complete_display_matches_interrupt = 0; that does the initial simple matching selection algorithm (see rl_completion_matches ()). The default is to do filename completion. */ int -rl_complete (ignore, invoking_key) - int ignore, invoking_key; +rl_complete (int ignore, int invoking_key) { rl_completion_invoking_key = invoking_key; @@ -441,16 +440,14 @@ rl_complete (ignore, invoking_key) /* List the possible completions. See description of rl_complete (). */ int -rl_possible_completions (ignore, invoking_key) - int ignore, invoking_key; +rl_possible_completions (int ignore, int invoking_key) { rl_completion_invoking_key = invoking_key; return (rl_complete_internal ('?')); } int -rl_insert_completions (ignore, invoking_key) - int ignore, invoking_key; +rl_insert_completions (int ignore, int invoking_key) { rl_completion_invoking_key = invoking_key; return (rl_complete_internal ('*')); @@ -462,8 +459,7 @@ rl_insert_completions (ignore, invoking_key) an application-specific completion function to honor the show-all-if-ambiguous readline variable. */ int -rl_completion_mode (cfunc) - rl_command_func_t *cfunc; +rl_completion_mode (rl_command_func_t *cfunc) { if (rl_last_func == cfunc && !completion_changed_buffer) return '?'; @@ -483,16 +479,14 @@ rl_completion_mode (cfunc) /* Reset readline state on a signal or other event. */ void -_rl_reset_completion_state () +_rl_reset_completion_state (void) { rl_completion_found_quote = 0; rl_completion_quote_character = 0; } static void -_rl_complete_sigcleanup (sig, ptr) - int sig; - void *ptr; +_rl_complete_sigcleanup (int sig, void *ptr) { if (sig == SIGINT) /* XXX - for now */ { @@ -504,8 +498,7 @@ _rl_complete_sigcleanup (sig, ptr) /* Set default values for readline word completion. These are the variables that application completion functions can change or inspect. */ static void -set_completion_defaults (what_to_do) - int what_to_do; +set_completion_defaults (int what_to_do) { /* Only the completion entry function can change these. */ rl_filename_completion_desired = 0; @@ -523,8 +516,7 @@ set_completion_defaults (what_to_do) /* The user must press "y" or "n". Non-zero return means "y" pressed. */ static int -get_y_or_n (for_pager) - int for_pager; +get_y_or_n (int for_pager) { int c; @@ -557,8 +549,7 @@ get_y_or_n (for_pager) } static int -_rl_internal_pager (lines) - int lines; +_rl_internal_pager (int lines) { int i; @@ -575,8 +566,7 @@ _rl_internal_pager (lines) } static int -path_isdir (filename) - const char *filename; +path_isdir (const char *filename) { struct stat finfo; @@ -593,8 +583,7 @@ path_isdir (filename) `%' for character special devices `#' for block special devices */ static int -stat_char (filename) - char *filename; +stat_char (char *filename) { struct stat finfo; int character, r; @@ -625,7 +614,10 @@ stat_char (filename) #endif if (r == -1) - return (0); + { + xfree (f); + return (0); + } character = 0; if (S_ISDIR (finfo.st_mode)) @@ -675,29 +667,28 @@ stat_char (filename) #if defined (COLOR_SUPPORT) static int -colored_stat_start (filename) - const char *filename; +colored_stat_start (const char *filename) { _rl_set_normal_color (); return (_rl_print_color_indicator (filename)); } static void -colored_stat_end () +colored_stat_end (void) { _rl_prep_non_filename_text (); _rl_put_indicator (&_rl_color_indicator[C_CLR_TO_EOL]); } static int -colored_prefix_start () +colored_prefix_start (void) { _rl_set_normal_color (); return (_rl_print_prefix_color ()); } static void -colored_prefix_end () +colored_prefix_end (void) { colored_stat_end (); /* for now */ } @@ -712,8 +703,7 @@ colored_prefix_end () for the previous slash and return the portion following that. If there's no previous slash, we just return what we were passed. */ static char * -printable_part (pathname) - char *pathname; +printable_part (char *pathname) { char *temp, *x; @@ -747,8 +737,7 @@ printable_part (pathname) /* Compute width of STRING when displayed on screen by print_filename */ static int -fnwidth (string) - const char *string; +fnwidth (const char *string) { int width, pos; #if defined (HANDLE_MULTIBYTE) @@ -800,10 +789,7 @@ fnwidth (string) #define ELLIPSIS_LEN 3 static int -fnprint (to_print, prefix_bytes, real_pathname) - const char *to_print; - int prefix_bytes; - const char *real_pathname; +fnprint (const char *to_print, int prefix_bytes, const char *real_pathname) { int printed_len, w; const char *s; @@ -818,6 +804,8 @@ fnprint (to_print, prefix_bytes, real_pathname) print_len = strlen (to_print); end = to_print + print_len + 1; memset (&ps, 0, sizeof (mbstate_t)); +#else + print_len = strlen (to_print); #endif printed_len = common_prefix_len = 0; @@ -929,9 +917,7 @@ fnprint (to_print, prefix_bytes, real_pathname) filenames. Return the number of characters we output. */ static int -print_filename (to_print, full_pathname, prefix_bytes) - char *to_print, *full_pathname; - int prefix_bytes; +print_filename (char *to_print, char *full_pathname, int prefix_bytes) { int printed_len, extension_char, slen, tlen; char *s, c, *new_full_pathname, *dn; @@ -988,7 +974,6 @@ print_filename (to_print, full_pathname, prefix_bytes) slen--; else new_full_pathname[slen] = '/'; - new_full_pathname[slen] = '/'; strcpy (new_full_pathname + slen + 1, to_print); #if defined (VISIBLE_STATS) @@ -1049,10 +1034,7 @@ print_filename (to_print, full_pathname, prefix_bytes) } static char * -rl_quote_filename (s, rtype, qcp) - char *s; - int rtype; - char *qcp; +rl_quote_filename (char *s, int rtype, char *qcp) { char *r; @@ -1080,8 +1062,7 @@ rl_quote_filename (s, rtype, qcp) the value of the delimiter character that caused a word break. */ char -_rl_find_completion_word (fp, dp) - int *fp, *dp; +_rl_find_completion_word (int *fp, int *dp) { int scan, end, found_quote, delimiter, pass_next, isbrk; char quote_char, *brkchars; @@ -1213,11 +1194,7 @@ _rl_find_completion_word (fp, dp) } static char ** -gen_completion_matches (text, start, end, our_func, found_quote, quote_char) - char *text; - int start, end; - rl_compentry_func_t *our_func; - int found_quote, quote_char; +gen_completion_matches (char *text, int start, int end, rl_compentry_func_t *our_func, int found_quote, int quote_char) { char **matches; @@ -1261,8 +1238,7 @@ gen_completion_matches (text, start, end, our_func, found_quote, quote_char) /* Filter out duplicates in MATCHES. This frees up the strings in MATCHES. */ static char ** -remove_duplicate_matches (matches) - char **matches; +remove_duplicate_matches (char **matches) { char *lowest_common; int i, j, newlen; @@ -1322,10 +1298,7 @@ remove_duplicate_matches (matches) /* Find the common prefix of the list of matches, and put it into matches[0]. */ static int -compute_lcd_of_matches (match_list, matches, text) - char **match_list; - int matches; - const char *text; +compute_lcd_of_matches (char **match_list, int matches, const char *text) { register int i, c1, c2, si; int low; /* Count of max-matched characters. */ @@ -1451,7 +1424,8 @@ compute_lcd_of_matches (match_list, matches, text) } /* sort the list to get consistent answers. */ - qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare); + if (rl_sort_completion_matches) + qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare); si = strlen (text); lx = (si <= low) ? si : low; /* check shorter of text and matches */ @@ -1481,9 +1455,7 @@ compute_lcd_of_matches (match_list, matches, text) } static int -postprocess_matches (matchesp, matching_filenames) - char ***matchesp; - int matching_filenames; +postprocess_matches (char ***matchesp, int matching_filenames) { char *t, **matches, **temp_matches; int nmatch, i; @@ -1537,7 +1509,7 @@ postprocess_matches (matchesp, matching_filenames) } static int -complete_get_screenwidth () +complete_get_screenwidth (void) { int cols; char *envcols; @@ -1558,9 +1530,7 @@ complete_get_screenwidth () of strings, in argv format, LEN is the number of strings in MATCHES, and MAX is the length of the longest string in MATCHES. */ void -rl_display_match_list (matches, len, max) - char **matches; - int len, max; +rl_display_match_list (char **matches, int len, int max) { int count, limit, printed_len, lines, cols; int i, j, k, l, common_length, sind; @@ -1717,8 +1687,7 @@ rl_display_match_list (matches, len, max) and ask the user if he wants to see the list if there are more matches than RL_COMPLETION_QUERY_ITEMS. */ static void -display_matches (matches) - char **matches; +display_matches (char **matches) { int len, max, i; char *temp; @@ -1784,11 +1753,9 @@ display_matches (matches) rl_display_fixed = 1; } +/* qc == pointer to quoting character, if any */ static char * -make_quoted_replacement (match, mtype, qc) - char *match; - int mtype; - char *qc; /* Pointer to quoting character, if any */ +make_quoted_replacement (char *match, int mtype, char *qc) { int should_quote, do_replace; char *replacement; @@ -1830,10 +1797,7 @@ make_quoted_replacement (match, mtype, qc) } static void -insert_match (match, start, mtype, qc) - char *match; - int start, mtype; - char *qc; +insert_match (char *match, int start, int mtype, char *qc) { char *replacement, *r; char oqc; @@ -1890,9 +1854,7 @@ insert_match (match, start, mtype, qc) value of _rl_complete_mark_symlink_dirs, but may be modified by an application's completion function). */ static int -append_to_match (text, delimiter, quote_char, nontrivial_match) - char *text; - int delimiter, quote_char, nontrivial_match; +append_to_match (char *text, int delimiter, int quote_char, int nontrivial_match) { char temp_string[4], *filename, *fn; int temp_string_index, s; @@ -1959,10 +1921,7 @@ append_to_match (text, delimiter, quote_char, nontrivial_match) } static void -insert_all_matches (matches, point, qc) - char **matches; - int point; - char *qc; +insert_all_matches (char **matches, int point, char *qc) { int i; char *rp; @@ -1998,8 +1957,7 @@ insert_all_matches (matches, point, qc) } void -_rl_free_match_list (matches) - char **matches; +_rl_free_match_list (char **matches) { register int i; @@ -2021,17 +1979,14 @@ _rl_free_match_list (matches) `@' means to do standard completion, and list all possible completions if there is more than one and partial completion is not possible. */ int -rl_complete_internal (what_to_do) - int what_to_do; +rl_complete_internal (int what_to_do) { char **matches; rl_compentry_func_t *our_func; int start, end, delimiter, found_quote, i, nontrivial_lcd; char *text, *saved_line_buffer; char quote_char; -#if 1 int tlen, mlen; -#endif RL_SETSTATE(RL_STATE_COMPLETING); @@ -2206,9 +2161,7 @@ rl_complete_internal (what_to_do) when there are no more matches. */ char ** -rl_completion_matches (text, entry_function) - const char *text; - rl_compentry_func_t *entry_function; +rl_completion_matches (const char *text, rl_compentry_func_t *entry_function) { register int i; @@ -2276,9 +2229,7 @@ rl_completion_matches (text, entry_function) TEXT contains a partial username preceded by a random character (usually `~'). */ char * -rl_username_completion_function (text, state) - const char *text; - int state; +rl_username_completion_function (const char *text, int state) { #if defined (__WIN32__) || defined (__OPENNT) return (char *)NULL; @@ -2340,11 +2291,7 @@ rl_username_completion_function (text, state) _rl_completion_case_map is set, make `-' and `_' equivalent. CONVFN is the possibly-converted directory entry; FILENAME is what the user typed. */ static int -complete_fncmp (convfn, convlen, filename, filename_len) - const char *convfn; - int convlen; - const char *filename; - int filename_len; +complete_fncmp (const char *convfn, int convlen, const char *filename, int filename_len) { register char *s1, *s2; int d, len; @@ -2472,9 +2419,7 @@ complete_fncmp (convfn, convlen, filename, filename_len) because of all the pathnames that must be followed when looking up the completion for a command. */ char * -rl_filename_completion_function (text, state) - const char *text; - int state; +rl_filename_completion_function (const char *text, int state) { static DIR *directory = (DIR *)NULL; static char *filename = (char *)NULL; @@ -2702,8 +2647,7 @@ rl_filename_completion_function (text, state) hit the end of the match list, we restore the original unmatched text, ring the bell, and reset the counter to zero. */ int -rl_old_menu_complete (count, invoking_key) - int count, invoking_key; +rl_old_menu_complete (int count, int invoking_key) { rl_compentry_func_t *our_func; int matching_filenames, found_quote; @@ -2824,9 +2768,17 @@ rl_old_menu_complete (count, invoking_key) return (0); } +/* The current version of menu completion. + The differences between this function and the original are: + +1. It honors the maximum number of completions variable (completion-query-items) +2. It appends to the word as usual if there is only one match +3. It displays the common prefix if there is one, and makes it the first menu + choice if the menu-complete-display-prefix option is enabled +*/ + int -rl_menu_complete (count, ignore) - int count, ignore; +rl_menu_complete (int count, int ignore) { rl_compentry_func_t *our_func; int matching_filenames, found_quote; @@ -2998,8 +2950,7 @@ rl_menu_complete (count, ignore) } int -rl_backward_menu_complete (count, key) - int count, key; +rl_backward_menu_complete (int count, int key) { /* Positive arguments to backward-menu-complete translate into negative arguments for menu-complete, and vice versa. */ diff --git a/lib/readline/display.c b/lib/readline/display.c index 2d2e768a9..4c6cc00ea 100644 --- a/lib/readline/display.c +++ b/lib/readline/display.c @@ -1,6 +1,6 @@ /* display.c -- readline redisplay facility. */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -124,7 +124,6 @@ static int _rl_col_width PARAMS((const char *, int, int, int)); #define PROMPT_ENDING_INDEX \ ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) ? prompt_physical_chars : prompt_last_invisible+1) - /* **************************************************************** */ /* */ /* Display stuff */ @@ -159,9 +158,6 @@ rl_voidfunc_t *rl_redisplay_function = rl_redisplay; /* What YOU turn on when you have handled all redisplay yourself. */ int rl_display_fixed = 0; -int _rl_suppress_redisplay = 0; -int _rl_want_redisplay = 0; - /* The stuff that gets printed out before the actual text of the line. This is usually pointing to rl_prompt. */ char *rl_display_prompt = (char *)NULL; @@ -178,6 +174,10 @@ int _rl_vi_cmd_modestr_len; /* Pseudo-global variables declared here. */ +/* Hints for other parts of readline to give to the display engine. */ +int _rl_suppress_redisplay = 0; +int _rl_want_redisplay = 0; + /* The visible cursor position. If you print some text, adjust this. */ /* NOTE: _rl_last_c_pos is used as a buffer index when not in a locale supporting multibyte characters, and an absolute cursor position when @@ -186,14 +186,24 @@ int _rl_vi_cmd_modestr_len; int _rl_last_c_pos = 0; int _rl_last_v_pos = 0; +/* Number of physical lines consumed by the current line buffer currently + on screen minus 1. */ +int _rl_vis_botlin = 0; + +/* This is a hint update_line gives to rl_redisplay that it has adjusted the + value of _rl_last_c_pos *and* taken the presence of any invisible chars in + the prompt into account. rl_redisplay notes this and does not do the + adjustment itself. */ static int cpos_adjusted; + +/* The index into the line buffer corresponding to the cursor position */ static int cpos_buffer_position; + +/* A flag to note when we're displaying the first line of the prompt */ static int displaying_prompt_first_line; +/* The number of multibyte characters in the prompt, if any */ static int prompt_multibyte_chars; -/* Number of lines currently on screen minus 1. */ -int _rl_vis_botlin = 0; - static int _rl_inv_botlin = 0; /* Variables used only in this file. */ @@ -216,7 +226,11 @@ static int line_size = 1024; static char *local_prompt, *local_prompt_prefix; static int local_prompt_len; -static int prompt_visible_length, prompt_prefix_length; +static int prompt_prefix_length; +/* Number of chars in the buffer that contribute to visible chars on the screen. + This might be different from the number of physical chars in the presence + of multibyte characters */ +static int prompt_visible_length; /* The number of invisible characters in the line currently being displayed on the screen. */ @@ -242,16 +256,26 @@ static int prompt_last_screen_line; static int prompt_physical_chars; +/* An array of indexes into the prompt string where we will break physical + screen lines. It's easier to compute in expand_prompt and use later in + rl_redisplay instead of having rl_redisplay try to guess about invisible + characters in the prompt or use heuristics about where they are. */ +static int *local_prompt_newlines; + /* set to a non-zero value by rl_redisplay if we are marking modified history lines and the current line is so marked. */ static int modmark; +static int line_totbytes; + /* Variables to save and restore prompt and display information. */ /* These are getting numerous enough that it's time to create a struct. */ static char *saved_local_prompt; static char *saved_local_prefix; +static int *saved_local_prompt_newlines; + static int saved_last_invisible; static int saved_visible_length; static int saved_prefix_length; @@ -262,8 +286,7 @@ static int saved_physical_chars; /* Return a string indicating the editing mode, for use in the prompt. */ static char * -prompt_modestr (lenp) - int *lenp; +prompt_modestr (int *lenp) { if (rl_editing_mode == emacs_mode) { @@ -291,7 +314,8 @@ prompt_modestr (lenp) index of the last invisible character in the returned string. NIFLP, if non-zero, is a place to store the number of invisible characters in the first prompt line. The previous are used as byte counts -- indexes - into a character buffer. */ + into a character buffer. *VLP gets the number of physical characters in + the expanded prompt (visible length) */ /* Current implementation: \001 (^A) start non-visible characters @@ -304,15 +328,16 @@ prompt_modestr (lenp) PMT_MULTILINE caller indicates that this is part of a multiline prompt */ +/* This approximates the number of lines the prompt will take when displayed */ +#define APPROX_DIV(n, d) (((n) < (d)) ? 1 : ((n) / (d)) + 1) + static char * -expand_prompt (pmt, flags, lp, lip, niflp, vlp) - char *pmt; - int flags; - int *lp, *lip, *niflp, *vlp; +expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp) { char *r, *ret, *p, *igstart, *nprompt, *ms; int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars; - int mlen; + int mlen, newlines, newlines_guess, bound; + int mb_cur_max; /* We only expand the mode string for the last line of a multiline prompt (a prompt with embedded newlines). */ @@ -327,29 +352,54 @@ expand_prompt (pmt, flags, lp, lip, niflp, vlp) else nprompt = pmt; - /* Short-circuit if we can. */ - if ((MB_CUR_MAX <= 1 || rl_byte_oriented) && strchr (nprompt, RL_PROMPT_START_IGNORE) == 0) + mb_cur_max = MB_CUR_MAX; + + if (_rl_screenwidth == 0) + _rl_get_screen_size (0, 0); /* avoid division by zero */ + + /* Short-circuit if we can. We can do this if we are treating the prompt as + a sequence of bytes and there are no invisible characters in the prompt + to deal with. Since we populate local_prompt_newlines, we have to run + through the rest of the function if this prompt looks like it's going to + be longer than one screen line. */ + if ((mb_cur_max <= 1 || rl_byte_oriented) && strchr (nprompt, RL_PROMPT_START_IGNORE) == 0) { - r = (nprompt == pmt) ? savestring (pmt) : nprompt; + l = strlen (nprompt); + if (l < (_rl_screenwidth > 0 ? _rl_screenwidth : 80)) + { + r = (nprompt == pmt) ? savestring (pmt) : nprompt; + if (lp) + *lp = l; + if (lip) + *lip = 0; + if (niflp) + *niflp = 0; + if (vlp) + *vlp = l; + + local_prompt_newlines = (int *) xrealloc (local_prompt_newlines, sizeof (int) * 2); + local_prompt_newlines[0] = 0; + local_prompt_newlines[1] = -1; - if (lp) - *lp = strlen (r); - if (lip) - *lip = 0; - if (niflp) - *niflp = 0; - if (vlp) - *vlp = lp ? *lp : strlen (r); - return r; + return r; + } } l = strlen (nprompt); /* XXX */ r = ret = (char *)xmalloc (l + 1); + /* Guess at how many screen lines the prompt will take to size the array that + keeps track of where the line wraps happen */ + newlines_guess = (_rl_screenwidth > 0) ? APPROX_DIV(l, _rl_screenwidth) : APPROX_DIV(l, 80); + local_prompt_newlines = (int *) xrealloc (local_prompt_newlines, sizeof (int) * (newlines_guess + 1)); + local_prompt_newlines[newlines = 0] = 0; + for (rl = 1; rl <= newlines_guess; rl++) + local_prompt_newlines[rl] = -1; + rl = physchars = 0; /* mode string now part of nprompt */ - invfl = 0; /* invisible chars in first line of prompt */ - invflset = 0; /* we only want to set invfl once */ - igstart = 0; + invfl = 0; /* invisible chars in first line of prompt */ + invflset = 0; /* we only want to set invfl once */ + igstart = 0; /* we're not ignoring any characters yet */ for (ignoring = last = ninvis = 0, p = nprompt; p && *p; p++) { @@ -371,7 +421,7 @@ expand_prompt (pmt, flags, lp, lip, niflp, vlp) else { #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) { pind = p - nprompt; ind = _rl_find_next_mbchar (nprompt, pind, 1, MB_FIND_NONZERO); @@ -405,11 +455,29 @@ expand_prompt (pmt, flags, lp, lip, niflp, vlp) ninvis++; /* invisible chars byte counter */ } - if (invflset == 0 && rl >= _rl_screenwidth) + if (invflset == 0 && physchars >= _rl_screenwidth) { invfl = ninvis; invflset = 1; } + + if (physchars >= (bound = (newlines + 1) * _rl_screenwidth) && local_prompt_newlines[newlines+1] == -1) + { + int new; + if (physchars > bound) /* should rarely happen */ + { +#if defined (HANDLE_MULTIBYTE) + *r = '\0'; /* need null-termination for strlen */ + if (mb_cur_max > 1 && rl_byte_oriented == 0) + new = _rl_find_prev_mbchar (ret, r - ret, MB_FIND_ANY); + else +#endif + new = r - ret - (physchars - bound); /* XXX */ + } + else + new = r - ret; + local_prompt_newlines[++newlines] = new; + } } } @@ -435,8 +503,7 @@ expand_prompt (pmt, flags, lp, lip, niflp, vlp) /* Just strip out RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE from PMT and return the rest of PMT. */ char * -_rl_strip_prompt (pmt) - char *pmt; +_rl_strip_prompt (char *pmt) { char *ret; @@ -445,7 +512,7 @@ _rl_strip_prompt (pmt) } void -_rl_reset_prompt () +_rl_reset_prompt (void) { rl_visible_prompt_length = rl_expand_prompt (rl_prompt); } @@ -461,15 +528,20 @@ _rl_reset_prompt () * prompt_visible_length = number of visible characters in local_prompt * prompt_prefix_length = number of visible characters in local_prompt_prefix * + * It also tries to keep track of the number of invisible characters in the + * prompt string, and where they are. + * * This function is called once per call to readline(). It may also be * called arbitrarily to expand the primary prompt. * * The return value is the number of visible characters on the last line - * of the (possibly multi-line) prompt. + * of the (possibly multi-line) prompt. In this case, multi-line means + * there are embedded newlines in the prompt string itself, not that the + * number of physical characters exceeds the screen width and the prompt + * wraps. */ int -rl_expand_prompt (prompt) - char *prompt; +rl_expand_prompt (char *prompt) { char *p, *t; int c; @@ -527,8 +599,7 @@ rl_expand_prompt (prompt) increased. If the lines have already been allocated, this ensures that they can hold at least MINSIZE characters. */ static void -init_line_structures (minsize) - int minsize; +init_line_structures (int minsize) { register int n; @@ -575,9 +646,9 @@ init_line_structures (minsize) line_structures_initialized = 1; } -/* Basic redisplay algorithm. */ +/* Basic redisplay algorithm. See comments inline. */ void -rl_redisplay () +rl_redisplay (void) { register int in, out, c, linenum, cursor_linenum; register char *line; @@ -638,6 +709,10 @@ rl_redisplay () one passed to readline()), use the values we have already expanded. If not, use what's already in rl_display_prompt. WRAP_OFFSET is the number of non-visible characters in the prompt string. */ + /* This is where we output the characters in the prompt before the last + newline, if any. If there aren't any embedded newlines, we don't + write anything. Copy the last line of the prompt string into the line in + any case */ if (rl_display_prompt == rl_prompt || local_prompt) { if (local_prompt_prefix && forced_display) @@ -692,6 +767,7 @@ rl_redisplay () wrap_offset = prompt_invis_chars_first_line = 0; } +#if defined (HANDLE_MULTIBYTE) #define CHECK_INV_LBREAKS() \ do { \ if (newlines >= (inv_lbsize - 2)) \ @@ -699,7 +775,22 @@ rl_redisplay () inv_lbsize *= 2; \ inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ } \ + if (newlines >= (line_state_invisible->wbsize - 2)) \ + { \ + line_state_invisible->wbsize *= 2; \ + line_state_invisible->wrapped_line = (int *)xrealloc (line_state_invisible->wrapped_line, line_state_invisible->wbsize * sizeof(int)); \ + } \ } while (0) +#else +#define CHECK_INV_LBREAKS() \ + do { \ + if (newlines >= (inv_lbsize - 2)) \ + { \ + inv_lbsize *= 2; \ + inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ + } \ + } while (0) +#endif /* !HANDLE_MULTIBYTE */ #if defined (HANDLE_MULTIBYTE) #define CHECK_LPOS() \ @@ -713,7 +804,7 @@ rl_redisplay () inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ } \ inv_lbreaks[++newlines] = out; \ - if (newlines >= (line_state_invisible->wbsize - 1)) \ + if (newlines >= (line_state_invisible->wbsize - 2)) \ { \ line_state_invisible->wbsize *= 2; \ line_state_invisible->wrapped_line = (int *)xrealloc (line_state_invisible->wrapped_line, line_state_invisible->wbsize * sizeof(int)); \ @@ -742,7 +833,10 @@ rl_redisplay () /* inv_lbreaks[i] is where line i starts in the buffer. */ inv_lbreaks[newlines = 0] = 0; /* lpos is a physical cursor position, so it needs to be adjusted by the - number of invisible characters in the prompt, per line */ + number of invisible characters in the prompt, per line. We compute + the line breaks in the prompt string in expand_prompt, taking invisible + characters into account, and if lpos exceeds the screen width, we copy + the data in the loop below. */ lpos = prompt_physical_chars + modmark; #if defined (HANDLE_MULTIBYTE) @@ -752,92 +846,38 @@ rl_redisplay () /* prompt_invis_chars_first_line is the number of invisible characters in the first physical line of the prompt. - wrap_offset - prompt_invis_chars_first_line is the number of invis - chars on the second (or, more generally, last) line. */ + wrap_offset - prompt_invis_chars_first_line is usually the number of + invis chars on the second (or, more generally, last) line. */ /* This is zero-based, used to set the newlines */ prompt_lines_estimate = lpos / _rl_screenwidth; /* what if lpos is already >= _rl_screenwidth before we start drawing the contents of the command line? */ - while (lpos >= _rl_screenwidth) - { - int z, p; - int nocorrect, wadjust; - - nocorrect = 0; - /* Adjust depending on the invisible characters in the line. We use a - heuristic based on experience: invisible characters nearly always - appear in the first and last lines of the prompt */ - wadjust = (newlines == 0) - ? prompt_invis_chars_first_line - : ((newlines == prompt_lines_estimate) - ? (wrap_offset - prompt_invis_chars_first_line) - : 0); - - /* fix from Darin Johnson for prompt string with - invisible characters that is longer than the screen width. The - prompt_invis_chars_first_line variable could be made into an array - saying how many invisible characters there are per line, but that's - probably too much work for the benefit gained. How many people have - prompts that exceed two physical lines? - Additional logic fix from Edward Catmur */ -#if defined (HANDLE_MULTIBYTE) - if (mb_cur_max > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0) - { - nocorrect = 1; - n0 = num; - temp = local_prompt_len; - while (num < temp) - { - /* This has to take invisible characters in the prompt into - account. */ - z = _rl_col_width (local_prompt, n0, num, 1) - wadjust; - if (z > _rl_screenwidth) - { - num = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY); - break; - } - else if (z == _rl_screenwidth) - { - /* If we are in the middle or at the end of a multibyte - character, we want to move to the start, then find out - where it ends so we know where to insert the newline. - If this isn't a multibyte character, its the same as num++ */ - p = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY); - num = _rl_find_next_mbchar (local_prompt, p, 1, MB_FIND_ANY); - break; - } - num++; - } - temp = num; - } - else -#endif /* !HANDLE_MULTIBYTE */ - temp = ((newlines + 1) * _rl_screenwidth); + if (lpos >= _rl_screenwidth) + { + temp = 0; - /* Now account for invisible characters in the current line. */ - /* XXX - this assumes that the invisible characters may be split, but only - between the first and the last lines. */ - if (nocorrect == 0) - temp += wadjust; + /* first copy the linebreaks array we computed in expand_prompt */ + while (local_prompt_newlines[newlines+1] != -1) + { + temp = local_prompt_newlines[newlines+1]; + inv_lbreaks[++newlines] = temp; + } - inv_lbreaks[++newlines] = temp; -#if defined (HANDLE_MULTIBYTE) - /* lpos is a physical cursor position, so it needs to take the invisible - characters into account. */ + /* Now set lpos from the last newline */ if (mb_cur_max > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0) - lpos -= _rl_col_width (local_prompt, n0, num, 1) - wadjust; + lpos = _rl_col_width (local_prompt, temp, local_prompt_len, 1) - (wrap_offset - prompt_invis_chars_first_line); else -#endif - lpos -= _rl_screenwidth; /* all physical cursor positions */ + lpos -= (_rl_screenwidth * newlines); } prompt_last_screen_line = newlines; /* Draw the rest of the line (after the prompt) into invisible_line, keeping - track of where the cursor is (cpos_buffer_position), the number of the line containing - the cursor (lb_linenum), the last line number (lb_botlin and inv_botlin). + track of where the cursor is (cpos_buffer_position), the number of the + line containing the cursor (lb_linenum), the last line number (lb_botlin + and inv_botlin). It maintains an array of line breaks for display (inv_lbreaks). This handles expanding tabs for display and displaying meta characters. */ lb_linenum = 0; @@ -846,8 +886,13 @@ rl_redisplay () if (mb_cur_max > 1 && rl_byte_oriented == 0) { memset (&ps, 0, sizeof (mbstate_t)); - /* XXX - what if wc_bytes ends up <= 0? check for MB_INVALIDCH */ - wc_bytes = mbrtowc (&wc, rl_line_buffer, rl_end, &ps); + if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[0])) + { + wc = (wchar_t)rl_line_buffer[0]; + wc_bytes = 1; + } + else + wc_bytes = mbrtowc (&wc, rl_line_buffer, rl_end, &ps); } else wc_bytes = 1; @@ -909,6 +954,9 @@ rl_redisplay () temp = _rl_screenwidth - lpos; CHECK_INV_LBREAKS (); inv_lbreaks[++newlines] = out + temp; +#if defined (HANDLE_MULTIBYTE) + line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn; +#endif lpos = 4 - temp; } else @@ -939,6 +987,9 @@ rl_redisplay () temp2 = _rl_screenwidth - lpos; CHECK_INV_LBREAKS (); inv_lbreaks[++newlines] = out + temp2; +#if defined (HANDLE_MULTIBYTE) + line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn; +#endif lpos = temp - temp2; while (out < newout) line[out++] = ' '; @@ -956,6 +1007,9 @@ rl_redisplay () line[out++] = '\0'; /* XXX - sentinel */ CHECK_INV_LBREAKS (); inv_lbreaks[++newlines] = out; +#if defined (HANDLE_MULTIBYTE) + line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn; +#endif lpos = 0; } else if (CTRL_CHAR (c) || c == RUBOUT) @@ -1007,15 +1061,21 @@ rl_redisplay () if (mb_cur_max > 1 && rl_byte_oriented == 0) { in += wc_bytes; - /* XXX - what if wc_bytes ends up <= 0? check for MB_INVALIDCH */ - wc_bytes = mbrtowc (&wc, rl_line_buffer + in, rl_end - in, &ps); + if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[in])) + { + wc = (wchar_t)rl_line_buffer[in]; + wc_bytes = 1; + memset (&ps, 0, sizeof (mbstate_t)); /* re-init state */ + } + else + wc_bytes = mbrtowc (&wc, rl_line_buffer + in, rl_end - in, &ps); } else in++; #endif - } line[out] = '\0'; + line_totbytes = out; if (cpos_buffer_position < 0) { cpos_buffer_position = out; @@ -1025,6 +1085,10 @@ rl_redisplay () inv_botlin = lb_botlin = _rl_inv_botlin = newlines; CHECK_INV_LBREAKS (); inv_lbreaks[newlines+1] = out; +#if defined (HANDLE_MULTIBYTE) + /* This should be 0 anyway */ + line_state_invisible->wrapped_line[newlines+1] = _rl_wrapped_multicolumn; +#endif cursor_linenum = lb_linenum; /* CPOS_BUFFER_POSITION == position in buffer where cursor should be placed. @@ -1092,8 +1156,8 @@ rl_redisplay () /* update_line potentially changes _rl_last_c_pos, but doesn't take invisible characters into account, since _rl_last_c_pos - is an absolute cursor position in a multibyte locale. See - if compensating here is the right thing, or if we have to + is an absolute cursor position in a multibyte locale. We + choose to (mostly) compensate for that here, rather than change update_line itself. There are several cases in which update_line adjusts _rl_last_c_pos itself (so it can pass _rl_move_cursor_relative accurate values); it communicates @@ -1104,11 +1168,16 @@ rl_redisplay () wrap_offset. */ if (linenum == 0 && (mb_cur_max > 1 && rl_byte_oriented == 0) && OLD_CPOS_IN_PROMPT()) _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */ - else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth && + else if (cpos_adjusted == 0 && + linenum == prompt_last_screen_line && + prompt_physical_chars > _rl_screenwidth && (mb_cur_max > 1 && rl_byte_oriented == 0) && - cpos_adjusted == 0 && _rl_last_c_pos != o_cpos && - _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line)) + _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line)) /* XXX - rethink this last one */ + /* This assumes that all the invisible characters are split + between the first and last lines of the prompt, if the + prompt consumes more than two lines. It's usually right */ + /* XXX - not sure this is ever executed */ _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line); /* If this is the line with the prompt, we might need to @@ -1178,6 +1247,9 @@ rl_redisplay () _rl_last_c_pos += wrap_offset; } + /* Now we move the cursor to where it needs to be. First, make + sure we are on the correct line (cursor_linenum). */ + /* We have to reprint the prompt if it contains invisible characters, since it's not generally OK to just reprint the characters from the current cursor position. But we @@ -1219,9 +1291,10 @@ rl_redisplay () position that doesn't take invisible characters in the prompt into account. We use a fudge factor to compensate. */ - /* Since _rl_backspace() doesn't know about invisible characters in the - prompt, and there's no good way to tell it, we compensate for - those characters here and call _rl_backspace() directly. */ + /* Since _rl_backspace() doesn't know about invisible characters in + the prompt, and there's no good way to tell it, we compensate for + those characters here and call _rl_backspace() directly if + necessary */ if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos) { /* TX == new physical cursor position in multibyte locale. */ @@ -1246,7 +1319,7 @@ rl_redisplay () _rl_move_cursor_relative (nleft, &invisible_line[pos]); } } - else /* Do horizontal scrolling. */ + else /* Do horizontal scrolling. Much simpler */ { #define M_OFFSET(margin, offset) ((margin) == 0 ? offset : 0) int lmargin, ndisp, nleft, phys_c_pos, t; @@ -1306,7 +1379,7 @@ rl_redisplay () right edge of the screen. If LMARGIN is 0, we need to take the wrap offset into account. */ t = lmargin + M_OFFSET (lmargin, wrap_offset) + _rl_screenwidth; - if (t < out) + if (t > 0 && t < out) line[t - 1] = '>'; if (rl_display_fixed == 0 || forced_display || lmargin != last_lmargin) @@ -1384,9 +1457,7 @@ new: eddie> Oh, my little buggy says to me, as lurgid as Could be made even smarter, but this works well enough */ static void -update_line (old, new, current_line, omax, nmax, inv_botlin) - register char *old, *new; - int current_line, omax, nmax, inv_botlin; +update_line (char *old, char *new, int current_line, int omax, int nmax, int inv_botlin) { register char *ofd, *ols, *oe, *nfd, *nls, *ne; int temp, lendiff, wsatend, od, nd, twidth, o_cpos; @@ -1411,52 +1482,145 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode && _rl_last_v_pos == current_line - 1) { + /* We're going to wrap around by writing the first character of NEW to + the screen and dealing with changes to what's visible by modifying + OLD to match it. Complicated by the presence of multi-width + characters at the end of the line or beginning of the new one. */ + /* old is always somewhere in visible_line; new is always somewhere in + invisible_line. These should always be null-terminated. */ #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0) { wchar_t wc; mbstate_t ps; - int tempwidth, bytes; + int oldwidth, newwidth; + int oldbytes, newbytes; size_t ret; /* This fixes only double-column characters, but if the wrapped character consumes more than three columns, spaces will be inserted in the string buffer. */ - if (current_line < line_state_visible->wbsize && line_state_visible->wrapped_line[current_line] > 0) - _rl_clear_to_eol (line_state_visible->wrapped_line[current_line]); + /* XXX remember that we are working on the invisible line right now; + we don't swap visible and invisible until just before rl_redisplay + returns */ + /* This will remove the extra placeholder space we added with + _rl_wrapped_multicolumn */ + if (current_line < line_state_invisible->wbsize && line_state_invisible->wrapped_line[current_line] > 0) + _rl_clear_to_eol (line_state_invisible->wrapped_line[current_line]); + + /* 1. how many screen positions does first char in old consume? */ + memset (&ps, 0, sizeof (mbstate_t)); + ret = mbrtowc (&wc, old, mb_cur_max, &ps); + oldbytes = ret; + if (MB_INVALIDCH (ret)) + { + oldwidth = 1; + oldbytes = 1; + } + else if (MB_NULLWCH (ret)) + oldwidth = 0; + else + oldwidth = WCWIDTH (wc); + if (oldwidth < 0) + oldwidth = 1; + /* 2. how many screen positions does the first char in new consume? */ memset (&ps, 0, sizeof (mbstate_t)); ret = mbrtowc (&wc, new, mb_cur_max, &ps); + newbytes = ret; if (MB_INVALIDCH (ret)) { - tempwidth = 1; - ret = 1; + newwidth = 1; + newbytes = 1; } else if (MB_NULLWCH (ret)) - tempwidth = 0; + newwidth = 0; else - tempwidth = WCWIDTH (wc); + newwidth = WCWIDTH (wc); + if (newwidth < 0) + newwidth = 1; + + /* 3. if the new width is less than the old width, we need to keep + going in new until we have consumed at least that many screen + positions, and figure out how many bytes that will take */ + while (newbytes < nmax && newwidth < oldwidth) + { + int t; - if (tempwidth > 0) + ret = mbrtowc (&wc, new+newbytes, mb_cur_max, &ps); + if (MB_INVALIDCH (ret)) + { + newwidth += 1; + newbytes += 1; + } + else if (MB_NULLWCH (ret)) + break; + else + { + t = WCWIDTH (wc); + newwidth += (t >= 0) ? t : 1; + newbytes += ret; + } + } + /* 4. If the new width is more than the old width, keep going in old + until we have consumed exactly that many screen positions, and + figure out how many bytes that will take. This is an optimization */ + while (oldbytes < omax && oldwidth < newwidth) { - int count, i; - bytes = ret; - for (count = 0; count < bytes; count++) - putc (new[count], rl_outstream); - _rl_last_c_pos = tempwidth; + int t; + + ret = mbrtowc (&wc, old+oldbytes, mb_cur_max, &ps); + if (MB_INVALIDCH (ret)) + { + oldwidth += 1; + oldbytes += 1; + } + else if (MB_NULLWCH (ret)) + break; + else + { + t = WCWIDTH (wc); + oldwidth += (t >= 0) ? t : 1; + oldbytes += ret; + } + } + /* 5. write the first newbytes of new, which takes newwidth. This is + where the screen wrapping takes place, and we are now writing + characters onto the new line. We need to fix up old so it + accurately reflects what is on the screen after the + _rl_output_some_chars below. */ + if (newwidth > 0) + { + int count, i, j; + char *optr; + + _rl_output_some_chars (new, newbytes); + _rl_last_c_pos = newwidth; _rl_last_v_pos++; - memset (&ps, 0, sizeof (mbstate_t)); - ret = mbrtowc (&wc, old, mb_cur_max, &ps); - if (ret != 0 && bytes != 0) + + /* 5a. If the number of screen positions doesn't match, punt + and do a dumb update. */ + if (newwidth != oldwidth) { - if (MB_INVALIDCH (ret)) - ret = 1; - memmove (old+bytes, old+ret, strlen (old+ret)); - memcpy (old, new, bytes); + ne = new + nmax; + nd = newbytes; + nfd = new + nd; + goto dumb_update; + } + if (oldbytes != 0 && newbytes != 0) + { + /* We have written as many bytes from new as we need to + consume the first character of old. Fix up `old' so it + reflects the new screen contents. We use +1 in the + memmove call to copy the trailing NUL. */ + memmove (old+newbytes, old+oldbytes, strlen (old+oldbytes) + 1); + memcpy (old, new, newbytes); + j = newbytes - oldbytes; + + omax += j; /* Fix up indices if we copy data from one line to another */ - omax += bytes - ret; for (i = current_line+1; i <= inv_botlin+1; i++) - vis_lbreaks[i] += bytes - ret; + vis_lbreaks[i] += j; } } else @@ -1482,7 +1646,6 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) } } - /* Find first difference. */ #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0) @@ -1501,6 +1664,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) memset (&ps_new, 0, sizeof(mbstate_t)); memset (&ps_old, 0, sizeof(mbstate_t)); + /* Are the old and new lines the same? */ if (omax == nmax && STREQN (new, old, omax)) { old_offset = omax; @@ -1510,6 +1674,8 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) } else { + /* Go through the line from the beginning and find the first + difference. */ new_offset = old_offset = 0; for (ofd = old, nfd = new; (ofd - old < omax) && *ofd && @@ -1565,6 +1731,8 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) wsatend = 1; /* flag for trailing whitespace */ #if defined (HANDLE_MULTIBYTE) + /* Find the last character that is the same between the two lines. This + bounds the region that needs to change. */ if (mb_cur_max > 1 && rl_byte_oriented == 0) { ols = old + _rl_find_prev_mbchar (old, oe - old, MB_FIND_ANY); @@ -1724,12 +1892,29 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) nd = lendiff; /* Do a dumb update and return */ +dumb_update: temp = ne - nfd; if (temp > 0) { _rl_output_some_chars (nfd, temp); if (mb_cur_max > 1 && rl_byte_oriented == 0) - _rl_last_c_pos += _rl_col_width (new, nd, ne - new, 1); + { + _rl_last_c_pos += _rl_col_width (new, nd, ne - new, 1); + /* Need to adjust here based on wrap_offset. Guess that if + this is the line containing the last line of the prompt + we need to adjust by + wrap_offset-prompt_invis_chars_first_line + on the assumption that this is the number of invisible + characters in the last line of the prompt. */ + if (wrap_offset > prompt_invis_chars_first_line && + current_line == prompt_last_screen_line && + prompt_physical_chars > _rl_screenwidth && + _rl_horizontal_scroll_mode == 0) + { + _rl_last_c_pos -= wrap_offset - prompt_invis_chars_first_line; + cpos_adjusted = 1; + } + } else _rl_last_c_pos += temp; } @@ -1804,6 +1989,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) { /* Non-zero if we're increasing the number of lines. */ int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin; + /* If col_lendiff is > 0, implying that the new string takes up more screen real estate than the old, but lendiff is < 0, meaning that it takes fewer bytes, we need to just output the characters starting @@ -1819,7 +2005,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) cpos_adjusted to let the caller know. */ if (current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible)) { - _rl_last_c_pos -= wrap_offset; + _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */ cpos_adjusted = 1; } return; @@ -1872,7 +2058,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) and set cpos_adjusted to let the caller know. */ if ((mb_cur_max > 1 && rl_byte_oriented == 0) && current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible)) { - _rl_last_c_pos -= wrap_offset; + _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */ cpos_adjusted = 1; } return; @@ -1885,7 +2071,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) and set cpos_adjusted to let the caller know. */ if ((mb_cur_max > 1 && rl_byte_oriented == 0) && current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible)) { - _rl_last_c_pos -= wrap_offset; + _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */ cpos_adjusted = 1; } } @@ -1952,12 +2138,26 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) _rl_last_c_pos += _rl_col_width (nfd, 0, bytes_to_insert, 1); if (current_line == 0 && wrap_offset && displaying_prompt_first_line && - _rl_last_c_pos > wrap_offset && + _rl_last_c_pos >= wrap_offset && /* XXX was > */ ((nfd - new) <= prompt_last_invisible)) { - _rl_last_c_pos -= wrap_offset; + _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */ cpos_adjusted = 1; } + +#if 1 +#ifdef HANDLE_MULTIBYTE + /* If we write a non-space into the last screen column, + remove the note that we added a space to compensate for + a multibyte double-width character that didn't fit, since + it's only valid for what was previously there. */ + /* XXX - watch this */ + if (_rl_last_c_pos == _rl_screenwidth && + line_state_invisible->wrapped_line[current_line+1] && + nfd[bytes_to_insert-1] != ' ') + line_state_invisible->wrapped_line[current_line+1] = 0; +#endif +#endif } else _rl_last_c_pos += bytes_to_insert; @@ -1989,7 +2189,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) _rl_last_c_pos > wrap_offset && ((nfd - new) <= prompt_last_invisible)) { - _rl_last_c_pos -= wrap_offset; + _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */ cpos_adjusted = 1; } } @@ -2019,7 +2219,7 @@ clear_rest_of_line: /* Tell the update routines that we have moved onto a new (empty) line. */ int -rl_on_new_line () +rl_on_new_line (void) { if (visible_line) visible_line[0] = '\0'; @@ -2035,7 +2235,7 @@ rl_on_new_line () /* Clear all screen lines occupied by the current readline line buffer (visible line) */ int -rl_clear_visible_line () +rl_clear_visible_line (void) { int curr_line; @@ -2063,9 +2263,10 @@ rl_clear_visible_line () /* Tell the update routines that we have moved onto a new line with the prompt already displayed. Code originally from the version of readline distributed with CLISP. rl_expand_prompt must have already been called - (explicitly or implicitly). This still doesn't work exactly right. */ + (explicitly or implicitly). This still doesn't work exactly right; it + should use expand_prompt() */ int -rl_on_new_line_with_prompt () +rl_on_new_line_with_prompt (void) { int prompt_size, i, l, real_screenwidth, newlines; char *prompt_last_line, *lprompt; @@ -2121,7 +2322,7 @@ rl_on_new_line_with_prompt () /* Actually update the display, period. */ int -rl_forced_update_display () +rl_forced_update_display (void) { register char *temp; @@ -2139,7 +2340,7 @@ rl_forced_update_display () /* Redraw only the last line of a multi-line prompt. */ void -rl_redraw_prompt_last_line () +rl_redraw_prompt_last_line (void) { char *t; @@ -2157,9 +2358,7 @@ rl_redraw_prompt_last_line () the movement is being done. DATA is always the visible line or the invisible line */ void -_rl_move_cursor_relative (new, data) - int new; - const char *data; +_rl_move_cursor_relative (int new, const char *data) { register int i; int woff; /* number of invisible chars on current line */ @@ -2316,8 +2515,7 @@ _rl_move_cursor_relative (new, data) /* PWP: move the cursor up or down. */ void -_rl_move_vert (to) - int to; +_rl_move_vert (int to) { register int delta, i; @@ -2357,8 +2555,7 @@ _rl_move_vert (to) /* Physically print C on rl_outstream. This is for functions which know how to optimize the display. Return the number of characters output. */ int -rl_show_char (c) - int c; +rl_show_char (int c) { int n = 1; if (META_CHAR (c) && (_rl_output_meta_chars == 0)) @@ -2385,8 +2582,7 @@ rl_show_char (c) } int -rl_character_len (c, pos) - register int c, pos; +rl_character_len (int c, int pos) { unsigned char uc; @@ -2521,7 +2717,7 @@ rl_message (format, arg1, arg2) /* How to clear things from the "echo-area". */ int -rl_clear_message () +rl_clear_message (void) { rl_display_prompt = rl_prompt; if (msg_saved_prompt) @@ -2534,7 +2730,7 @@ rl_clear_message () } int -rl_reset_line_state () +rl_reset_line_state (void) { rl_on_new_line (); @@ -2543,8 +2739,12 @@ rl_reset_line_state () return 0; } +/* Save all of the variables associated with the prompt and its display. Most + of the complexity is dealing with the invisible characters in the prompt + string and where they are. There are enough of these that I should consider + a struct. */ void -rl_save_prompt () +rl_save_prompt (void) { saved_local_prompt = local_prompt; saved_local_prefix = local_prompt_prefix; @@ -2554,22 +2754,28 @@ rl_save_prompt () saved_visible_length = prompt_visible_length; saved_invis_chars_first_line = prompt_invis_chars_first_line; saved_physical_chars = prompt_physical_chars; + saved_local_prompt_newlines = local_prompt_newlines; local_prompt = local_prompt_prefix = (char *)0; local_prompt_len = 0; + local_prompt_newlines = (int *)0; + prompt_last_invisible = prompt_visible_length = prompt_prefix_length = 0; prompt_invis_chars_first_line = prompt_physical_chars = 0; } void -rl_restore_prompt () +rl_restore_prompt (void) { FREE (local_prompt); FREE (local_prompt_prefix); + FREE (local_prompt_newlines); local_prompt = saved_local_prompt; local_prompt_prefix = saved_local_prefix; local_prompt_len = saved_local_length; + local_prompt_newlines = saved_local_prompt_newlines; + prompt_prefix_length = saved_prefix_length; prompt_last_invisible = saved_last_invisible; prompt_visible_length = saved_visible_length; @@ -2581,11 +2787,11 @@ rl_restore_prompt () saved_local_length = 0; saved_last_invisible = saved_visible_length = saved_prefix_length = 0; saved_invis_chars_first_line = saved_physical_chars = 0; + saved_local_prompt_newlines = 0; } char * -_rl_make_prompt_for_search (pchar) - int pchar; +_rl_make_prompt_for_search (int pchar) { int len; char *pmt, *p; @@ -2623,8 +2829,7 @@ _rl_make_prompt_for_search (pchar) /* Quick redisplay hack when erasing characters at the end of the line. */ void -_rl_erase_at_end_of_line (l) - int l; +_rl_erase_at_end_of_line (int l) { register int i; @@ -2638,10 +2843,10 @@ _rl_erase_at_end_of_line (l) } /* Clear to the end of the line. COUNT is the minimum - number of character spaces to clear, */ + number of character spaces to clear, but we use a terminal escape + sequence if available. */ void -_rl_clear_to_eol (count) - int count; +_rl_clear_to_eol (int count) { #ifndef __MSDOS__ if (_rl_term_clreol) @@ -2655,36 +2860,33 @@ _rl_clear_to_eol (count) /* Clear to the end of the line using spaces. COUNT is the minimum number of character spaces to clear, */ static void -space_to_eol (count) - int count; +space_to_eol (int count) { register int i; for (i = 0; i < count; i++) - putc (' ', rl_outstream); + putc (' ', rl_outstream); _rl_last_c_pos += count; } void -_rl_clear_screen () +_rl_clear_screen (void) { -#ifndef __DJGPP__ +#if defined (__DJGPP__) + ScreenClear (); + ScreenSetCursor (0, 0); +#else if (_rl_term_clrpag) tputs (_rl_term_clrpag, 1, _rl_output_character_function); else rl_crlf (); -#else - ScreenClear (); - ScreenSetCursor (0, 0); #endif /* __DJGPP__ */ } /* Insert COUNT characters from STRING to the output stream at column COL. */ static void -insert_some_chars (string, count, col) - char *string; - int count, col; +insert_some_chars (char *string, int count, int col) { open_some_spaces (col); _rl_output_some_chars (string, count); @@ -2694,8 +2896,7 @@ insert_some_chars (string, count, col) ncurses documentation and use either im/ei with explicit spaces, or IC/ic by itself. We assume there will either be ei or we don't need to use it. */ static void -open_some_spaces (col) - int col; +open_some_spaces (int col) { #if !defined (__MSDOS__) && (!defined (__MINGW32__) || defined (NCURSES_VERSION)) char *buffer; @@ -2731,8 +2932,7 @@ open_some_spaces (col) /* Delete COUNT characters from the display line. */ static void -delete_chars (count) - int count; +delete_chars (int count) { if (count > _rl_screenwidth) /* XXX */ return; @@ -2754,9 +2954,9 @@ delete_chars (count) } void -_rl_update_final () +_rl_update_final (void) { - int full_lines; + int full_lines, woff, botline_length; full_lines = 0; /* If the cursor is the only thing on an otherwise-blank last line, @@ -2768,26 +2968,34 @@ _rl_update_final () full_lines = 1; } _rl_move_vert (_rl_vis_botlin); + woff = W_OFFSET(_rl_vis_botlin, wrap_offset); + botline_length = VIS_LLEN(_rl_vis_botlin) - woff; /* If we've wrapped lines, remove the final xterm line-wrap flag. */ - if (full_lines && _rl_term_autowrap && (VIS_LLEN(_rl_vis_botlin) == _rl_screenwidth)) + if (full_lines && _rl_term_autowrap && botline_length == _rl_screenwidth) { char *last_line; - last_line = &visible_line[vis_lbreaks[_rl_vis_botlin]]; + /* LAST_LINE includes invisible characters, so if you want to get the + last character of the first line, you have to take WOFF into account. + This needs to be done for both calls to _rl_move_cursor_relative, + which takes a buffer position as the first argument, and any direct + subscripts of LAST_LINE. */ + last_line = &visible_line[vis_lbreaks[_rl_vis_botlin]]; /* = VIS_CHARS(_rl_vis_botlin); */ cpos_buffer_position = -1; /* don't know where we are in buffer */ - _rl_move_cursor_relative (_rl_screenwidth - 1, last_line); /* XXX */ + _rl_move_cursor_relative (_rl_screenwidth - 1 + woff, last_line); /* XXX */ _rl_clear_to_eol (0); - putc (last_line[_rl_screenwidth - 1], rl_outstream); + putc (last_line[_rl_screenwidth - 1 + woff], rl_outstream); } _rl_vis_botlin = 0; - rl_crlf (); + if (botline_length > 0 || _rl_last_c_pos > 0) + rl_crlf (); fflush (rl_outstream); rl_display_fixed++; } /* Move to the start of the current line. */ static void -cr () +cr (void) { if (_rl_term_cr) { @@ -2804,8 +3012,7 @@ cr () terminal escape sequences. Called with the cursor at column 0 of the line to draw the prompt on. */ static void -redraw_prompt (t) - char *t; +redraw_prompt (char *t) { char *oldp; @@ -2829,7 +3036,7 @@ redraw_prompt (t) /* Redisplay the current line after a SIGWINCH is received. */ void -_rl_redisplay_after_sigwinch () +_rl_redisplay_after_sigwinch (void) { char *t; @@ -2874,7 +3081,7 @@ _rl_redisplay_after_sigwinch () } void -_rl_clean_up_for_exit () +_rl_clean_up_for_exit (void) { if (_rl_echoing_p) { @@ -2887,7 +3094,7 @@ _rl_clean_up_for_exit () } void -_rl_erase_entire_line () +_rl_erase_entire_line (void) { cr (); _rl_clear_to_eol (0); @@ -2896,7 +3103,7 @@ _rl_erase_entire_line () } void -_rl_ttyflush () +_rl_ttyflush (void) { fflush (rl_outstream); } @@ -2904,7 +3111,7 @@ _rl_ttyflush () /* return the `current display line' of the cursor -- the number of lines to move up to get to the first screen line of the current readline line. */ int -_rl_current_display_line () +_rl_current_display_line (void) { int ret, nleft; @@ -2928,9 +3135,7 @@ _rl_current_display_line () In the case of multibyte characters with stateful encoding, we have to scan from the beginning of the string to take the state into account. */ static int -_rl_col_width (str, start, end, flags) - const char *str; - int start, end, flags; +_rl_col_width (const char *str, int start, int end, int flags) { wchar_t wc; mbstate_t ps; @@ -2963,7 +3168,13 @@ _rl_col_width (str, start, end, flags) while (point < start) { - tmp = mbrlen (str + point, max, &ps); + if (_rl_utf8locale && UTF8_SINGLEBYTE(str[point])) + { + memset (&ps, 0, sizeof (mbstate_t)); + tmp = 1; + } + else + tmp = mbrlen (str + point, max, &ps); if (MB_INVALIDCH ((size_t)tmp)) { /* In this case, the bytes are invalid or too short to compose a @@ -2992,7 +3203,13 @@ _rl_col_width (str, start, end, flags) while (point < end) { - tmp = mbrtowc (&wc, str + point, max, &ps); + if (_rl_utf8locale && UTF8_SINGLEBYTE(str[point])) + { + tmp = 1; + wc = (wchar_t) str[point]; + } + else + tmp = mbrtowc (&wc, str + point, max, &ps); if (MB_INVALIDCH ((size_t)tmp)) { /* In this case, the bytes are invalid or too short to compose a diff --git a/lib/readline/doc/hstech.texi b/lib/readline/doc/hstech.texi index bba7b590e..dbc21c14d 100644 --- a/lib/readline/doc/hstech.texi +++ b/lib/readline/doc/hstech.texi @@ -166,6 +166,9 @@ parameters managing the list itself. @deftypefun void add_history (const char *string) Place @var{string} at the end of the history list. The associated data field (if any) is set to @code{NULL}. +If the maximum number of history entries has been set using +@code{stifle_history()}, and the new number of history entries would exceed +that maximum, the oldest history entry is removed. @end deftypefun @deftypefun void add_history_time (const char *string) @@ -198,6 +201,7 @@ Clear the history list by deleting all the entries. @deftypefun void stifle_history (int max) Stifle the history list, remembering only the last @var{max} entries. +The history list will contain only @var{max} entries at a time. @end deftypefun @deftypefun int unstifle_history (void) @@ -234,10 +238,12 @@ pointer. @end deftypefun @deftypefun {HIST_ENTRY *} history_get (int offset) -Return the history entry at position @var{offset}, starting from -@code{history_base} (@pxref{History Variables}). -If there is no entry there, or if @var{offset} -is greater than the history length, return a @code{NULL} pointer. +Return the history entry at position @var{offset}. +The range of valid +values of @var{offset} starts at @code{history_base} and ends at +@var{history_length} - 1 (@pxref{History Variables}). +If there is no entry there, or if @var{offset} is outside the valid +range, return a @code{NULL} pointer. @end deftypefun @deftypefun time_t history_get_time (HIST_ENTRY *entry) @@ -397,7 +403,7 @@ to the ``normal'' terminating characters. Return an array of tokens parsed out of @var{string}, much as the shell might. The tokens are split on the characters in the @var{history_word_delimiters} variable, -and shell quoting conventions are obeyed. +and shell quoting conventions are obeyed as described below. @end deftypefun @deftypefun {char *} history_arg_extract (int first, int last, const char *string) @@ -470,8 +476,24 @@ carriage return, and @samp{=}. @end deftypevar @deftypevar int history_quotes_inhibit_expansion -If non-zero, double-quoted words are not scanned for the history expansion -character or the history comment character. The default value is 0. +If non-zero, the history expansion code implements shell-like quoting: +single-quoted words are not scanned for the history expansion +character or the history comment character, and double-quoted words may +have history expansion performed, since single quotes are not special +within double quotes. +The default value is 0. +@end deftypevar + +@deftypevar int history_quoting_state +An application may set this variable to indicate that the current line +being expanded is subject to existing quoting. If set to @samp{'}, the +history expansion function will assume that the line is single-quoted and +inhibit expansion until it reads an unquoted closing single quote; if set +to @samp{"}, history expansion will assume the line is double quoted until +it reads an unquoted closing double quote. If set to zero, the default, +the history expansion function will assume the line is not quoted and +treat quote characters within the line as described above. +This is only effective if @var{history_quotes_inhibit_expansion} is set. @end deftypevar @deftypevar {rl_linebuf_func_t *} history_inhibit_expansion_function diff --git a/lib/readline/doc/hsuser.texi b/lib/readline/doc/hsuser.texi index 04e192eb9..521ccc708 100644 --- a/lib/readline/doc/hsuser.texi +++ b/lib/readline/doc/hsuser.texi @@ -1,7 +1,7 @@ @ignore This file documents the user interface to the GNU History library. -Copyright (C) 1988--2016 Free Software Foundation, Inc. +Copyright (C) 1988--2018 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. Permission is granted to make and distribute verbatim copies of this manual @@ -124,7 +124,7 @@ The @code{lithist} shell option causes the shell to save the command with embedded newlines instead of semicolons. The @code{shopt} builtin is used to set these options. -@xref{Bash Builtins}, for a description of @code{shopt}. +@xref{The Shopt Builtin}, for a description of @code{shopt}. @node Bash History Builtins @section Bash History Builtins @@ -149,8 +149,8 @@ Both @var{first} and @var{last} may be specified as a string (to locate the most recent command beginning with that string) or as a number (an index into the history list, where a negative number is used as an offset from the -current command number). If @var{last} is not specified it is set to -@var{first}. If @var{first} is not specified it is set to the previous +current command number). If @var{last} is not specified, it is set to +@var{first}. If @var{first} is not specified, it is set to the previous command for editing and @minus{}16 for listing. If the @option{-l} flag is given, the commands are listed on standard output. The @option{-n} flag suppresses the command numbers when listing. The @option{-r} flag @@ -176,6 +176,7 @@ and typing @samp{r} re-executes the last command (@pxref{Aliases}). history [@var{n}] history -c history -d @var{offset} +history -d @var{start}-@var{end} history [-anrw] [@var{filename}] history -ps @var{arg} @end example @@ -198,8 +199,17 @@ with the other options to replace the history list completely. @item -d @var{offset} Delete the history entry at position @var{offset}. -@var{offset} should be specified as it appears when the history is -displayed. +If @var{offset} is positive, it should be specified as it appears when +the history is displayed. +If @var{offset} is negative, it is interpreted as relative to one greater +than the last history position, so negative indices count back from the +end of the history, and an index of @samp{-1} refers to the current +@code{history -d} command. + +@item -d @var{start}-@var{end} +Delete the history entries between positions @var{start} and @var{end}, +inclusive. Positive and negative values for @var{start} and @var{end} +are interpreted as described above. @item -a Append the new history lines to the history file. @@ -251,7 +261,9 @@ fix errors in previous commands quickly. @ifset BashFeatures History expansion is performed immediately after a complete line -is read, before the shell breaks it into words. +is read, before the shell breaks it into words, and is performed +on each line individually. Bash attempts to inform the history +expansion functions about quoting still in effect from previous lines. @end ifset History expansion takes place in two parts. The first is to determine @@ -265,16 +277,26 @@ that Bash does, so that several words surrounded by quotes are considered one word. History expansions are introduced by the appearance of the history expansion character, which is @samp{!} by default. + +History expansion implements shell-like quoting conventions: +a backslash can be used to remove the special handling for the next character; +single quotes enclose verbatim sequences of characters, and can be used to +inhibit history expansion; +and characters enclosed within double quotes may be subject to history +expansion, since backslash can escape the history expansion character, +but single quotes may not, since they are not treated specially within +double quotes. + @ifset BashFeatures -Only @samp{\} and @samp{'} may be used to escape the history expansion -character, but the history expansion character is +When using the shell, only @samp{\} and @samp{'} may be used to escape the +history expansion character, but the history expansion character is also treated as quoted if it immediately precedes the closing double quote in a double-quoted string. @end ifset @ifset BashFeatures Several shell options settable with the @code{shopt} -builtin (@pxref{Bash Builtins}) may be used to tailor +builtin (@pxref{The Shopt Builtin}) may be used to tailor the behavior of history expansion. If the @code{histverify} shell option is enabled, and Readline is being used, history substitutions are not immediately passed to diff --git a/lib/readline/doc/rltech.texi b/lib/readline/doc/rltech.texi index b8ce90f95..28a02d996 100644 --- a/lib/readline/doc/rltech.texi +++ b/lib/readline/doc/rltech.texi @@ -90,6 +90,12 @@ If @code{readline} encounters an @code{EOF} while reading the line, and the line is empty at that point, then @code{(char *)NULL} is returned. Otherwise, the line is ended just as if a newline had been typed. +Readline performs some expansion on the @var{prompt} before it is +displayed on the screen. See the description of @code{rl_expand_prompt} +(@pxref{Redisplay}) for additional details, especially if @var{prompt} +will contain characters that do not consume physical screen space when +displayed. + If you want the user to be able to get at the line later, (with @key{C-p} for example), you must call @code{add_history()} to save the line away in a @dfn{history} list of such lines. @@ -688,6 +694,11 @@ Free all storage associated with @var{keymap}. This calls @code{rl_discard_keymap} to free subordindate keymaps and macros. @end deftypefun +@deftypefun int rl_empty_keymap (Keymap keymap) +Return non-zero if there are no keys bound to functions in @var{keymap}; +zero if there are any keys bound. +@end deftypefun + Readline has several internal keymaps. These functions allow you to change which keymap is active. @@ -709,6 +720,24 @@ Return the name matching @var{keymap}. @var{name} is one which would be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}). @end deftypefun +@deftypefun int rl_set_keymap_name (const char *name, Keymap keymap) +Set the name of @var{keymap}. This name will then be "registered" and +available for use in a @code{set keymap} inputrc directive +@pxref{Readline Init File}). +The @var{name} may not be one of Readline's builtin keymap names; +you may not add a different name for one of Readline's builtin keymaps. +You may replace the name associated with a given keymap by calling this +function more than once with the same @var{keymap} argument. +You may associate a registered @var{name} with a new keymap by calling this +function more than once with the same @var{name} argument. +There is no way to remove a named keymap once the name has been +registered. +Readline will make a copy of @var{name}. +The return value is greater than zero unless @var{name} is one of +Readline's builtin keymap names or @var{keymap} is one of Readline's +builtin keymaps. +@end deftypefun + @node Binding Keys @subsection Binding Keys @@ -835,6 +864,16 @@ Return the function invoked by @var{keyseq} in keymap @var{map}. If @var{map} is @code{NULL}, the current keymap is used. If @var{type} is not @code{NULL}, the type of the object is returned in the @code{int} variable it points to (one of @code{ISFUNC}, @code{ISKMAP}, or @code{ISMACR}). +It takes a "translated" key sequence and should not be used if the key sequence +can include NUL. +@end deftypefun + +@deftypefun {rl_command_func_t *} rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type) +Return the function invoked by @var{keyseq} of length @var{len} +in keymap @var{map}. Equivalent to @code{rl_function_of_keyseq} with the +addition of the @var{len} parameter. +It takes a "translated" key sequence and should be used if the key sequence +can include NUL. @end deftypefun @deftypefun {char **} rl_invoking_keyseqs (rl_command_func_t *function) @@ -1679,6 +1718,19 @@ handlers, depending on the values of @code{rl_catch_signals} and @code{rl_catch_sigwinch}. @end deftypefun +If an application wants to force Readline to handle any signals that +have arrived while it has been executing, @code{rl_check_signals()} +will call Readline's internal signal handler if there are any pending +signals. This is primarily intended for those applications that use +a custom @code{rl_getc_function} (@pxref{Readline Variables}) and wish +to handle signals received while waiting for input. + +@deftypefun void rl_check_signals (void) +If there are any pending signals, call Readline's internal signal handling +functions to process them. @code{rl_pending_signal()} can be used independently +to determine whether or not there are any pending signals. +@end deftypefun + If an application does not wish Readline to catch @code{SIGWINCH}, it may call @code{rl_resize_terminal()} or @code{rl_set_screen_size()} to force Readline to update its idea of the terminal size when a @code{SIGWINCH} @@ -2094,6 +2146,8 @@ character (@samp{\0}) prevents anything being appended automatically. This can be changed in application-specific completion functions to provide the ``most sensible word separator character'' according to an application-specific command line syntax specification. +It is set to the default before any application-specific completion function +is called, and may only be changed within such a function. @end deftypevar @deftypevar int rl_completion_suppress_append diff --git a/lib/readline/doc/rluser.texi b/lib/readline/doc/rluser.texi index 4c094c88c..a59bd1446 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 @@ -524,7 +525,8 @@ set to either @samp{emacs} or @samp{vi}. @item emacs-mode-string @vindex emacs-mode-string -This string is displayed immediately before the last line of the primary +If the @var{show-mode-in-prompt} variable is enabled, +this string is displayed immediately before the last line of the primary prompt when emacs editing mode is active. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. @@ -604,7 +606,7 @@ If this variable has not been given a value, the characters @key{ESC} and @item keymap @vindex keymap Sets Readline's idea of the current keymap for key binding commands. -Acceptable @code{keymap} names are +Built-in @code{keymap} names are @code{emacs}, @code{emacs-standard}, @code{emacs-meta}, @@ -615,6 +617,7 @@ Acceptable @code{keymap} names are @code{vi-insert}. @code{vi} is equivalent to @code{vi-command} (@code{vi-move} is also a synonym); @code{emacs} is equivalent to @code{emacs-standard}. +Applications may add additional names. The default value is @code{emacs}. The value of the @code{editing-mode} variable also affects the default keymap. @@ -714,9 +717,9 @@ The default value is @samp{off}. @item show-mode-in-prompt @vindex show-mode-in-prompt -If set to @samp{on}, add a character to the beginning of the prompt +If set to @samp{on}, add a string to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi insertion. -The mode strings are user-settable. +The mode strings are user-settable (e.g., @var{emacs-mode-string}). The default value is @samp{off}. @item skip-completed-text @@ -735,7 +738,8 @@ The default value is @samp{off}. @item vi-cmd-mode-string @vindex vi-cmd-mode-string -This string is displayed immediately before the last line of the primary +If the @var{show-mode-in-prompt} variable is enabled, +this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and @@ -747,7 +751,8 @@ The default is @samp{(cmd)}. @item vi-ins-mode-string @vindex vi-ins-mode-string -This string is displayed immediately before the last line of the primary +If the @var{show-mode-in-prompt} variable is enabled, +this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and @@ -799,7 +804,7 @@ Meta-Rubout: backward-kill-word Control-o: "> output" @end example -In the above example, @kbd{C-u} is bound to the function +In the example above, @kbd{C-u} is bound to the function @code{universal-argument}, @kbd{M-DEL} is bound to the function @code{backward-kill-word}, and @kbd{C-o} is bound to run the macro @@ -914,8 +919,9 @@ of tests. There are four parser directives used. @item $if The @code{$if} construct allows bindings to be made based on the editing mode, the terminal being used, or the application using -Readline. The text of the test extends to the end of the line; -no characters are required to isolate it. +Readline. The text of the test, after any comparison operator, +extends to the end of the line; +unless otherwise noted, no characters are required to isolate it. @table @code @item mode @@ -935,6 +941,27 @@ the portion of the terminal name before the first @samp{-}. This allows @code{sun} to match both @code{sun} and @code{sun-cmd}, for instance. +@item version +The @code{version} test may be used to perform comparisons against +specific Readline versions. +The @code{version} expands to the current Readline version. +The set of comparison operators includes +@samp{=} (and @samp{==}), @samp{!=}, @samp{<=}, @samp{>=}, @samp{<}, +and @samp{>}. +The version number supplied on the right side of the operator consists +of a major version number, an optional decimal point, and an optional +minor version (e.g., @samp{7.1}). If the minor version is omitted, it +is assumed to be @samp{0}. +The operator may be separated from the string @code{version} and +from the version number argument by whitespace. +The following example sets a variable if the Readline version being used +is 7.0 or newer: +@example +$if version >= 7.0 +set show-mode-in-prompt on +$endif +@end example + @item application The @var{application} construct is used to include application-specific settings. Each program using the Readline @@ -949,6 +976,23 @@ $if Bash "\C-xq": "\eb\"\ef\"" $endif @end example + +@item variable +The @var{variable} construct provides simple equality tests for Readline +variables and values. +The permitted comparison operators are @samp{=}, @samp{==}, and @samp{!=}. +The variable name must be separated from the comparison operator by +whitespace; the operator may be separated from the value on the right hand +side by whitespace. +Both string and boolean variables may be tested. Boolean variables must be +tested against the values @var{on} and @var{off}. +The following example is equivalent to the @code{mode=emacs} test described +above: +@example +$if editing-mode == emacs +set show-mode-in-prompt on +$endif +@end example @end table @item $endif @@ -1138,6 +1182,19 @@ Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. @end ifset +@item previous-screen-line () +Attempt to move point to the same physical screen column on the previous +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if point is not +greater than the length of the prompt plus the screen width. + +@item next-screen-line () +Attempt to move point to the same physical screen column on the next +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if the length +of the current Readline line is not greater than the length of the prompt +plus the screen width. + @item clear-screen (C-l) Clear the screen and redraw the current line, leaving the current line at the top of the screen. @@ -1216,14 +1273,14 @@ The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. -@item history-substr-search-forward () +@item history-substring-search-forward () Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. -@item history-substr-search-backward () +@item history-substring-search-backward () Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. @@ -1297,7 +1354,7 @@ This function is intended to be bound to the "bracketed paste" escape sequence sent by some terminals, and such a binding is assigned by default. It allows Readline to insert the pasted text as a single unit without treating each character as if it had been read from the keyboard. The characters -are inserted as if each one was bound to @code{self-insert}) instead of +are inserted as if each one was bound to @code{self-insert} instead of executing any editing commands. @item transpose-chars (C-t) @@ -1590,9 +1647,10 @@ Abort the current editing command and ring the terminal's bell (subject to the setting of @code{bell-style}). -@item do-uppercase-version (M-a, M-b, M-@var{x}, @dots{}) -If the metafied character @var{x} is lowercase, run the command -that is bound to the corresponding uppercase character. +@item do-lowercase-version (M-A, M-B, M-@var{x}, @dots{}) +If the metafied character @var{x} is upper case, run the command +that is bound to the corresponding metafied lower case character. +The behavior is undefined if @var{x} is already lower case. @item prefix-meta (@key{ESC}) Metafy the next character typed. This is for keyboards @@ -1718,10 +1776,11 @@ A synonym for @code{yank-last-arg}. @item operate-and-get-next (C-o) Accept the current line for execution and fetch the next line -relative to the current line from the history for editing. Any -argument is ignored. +relative to the current line from the history for editing. +A numeric argument, if supplied, specifies the history entry to use instead +of the current line. -@item edit-and-execute-command (C-xC-e) +@item edit-and-execute-command (C-x C-e) Invoke an editor on the current command line, and execute the result as shell commands. Bash attempts to invoke @@ -1792,6 +1851,9 @@ If no compspec is found for the full pathname, an attempt is made to find a compspec for the portion following the final slash. If those searches do not result in a compspec, any compspec defined with the @option{-D} option to @code{complete} is used as the default. +If there is no default compspec, Bash attempts alias expansion +on the command word as a final resort, and attempts to find a compspec +for the command word from any successful expansion Once a compspec has been found, it is used to generate the list of matching words. @@ -1816,7 +1878,9 @@ Next, the string specified as the argument to the @option{-W} option is considered. The string is first split using the characters in the @env{IFS} special variable as delimiters. -Shell quoting is honored. +Shell quoting is honored within the string, in order to provide a +mechanism for the words to contain shell metacharacters or characters +in the value of @env{IFS}. Each word is then expanded using brace expansion, tilde expansion, parameter and variable expansion, command substitution, and arithmetic expansion, @@ -1960,10 +2024,10 @@ matches were generated. @item complete @btindex complete @example -@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-DE] [-A @var{action}] [-G @var{globpat}] [-W @var{wordlist}] -[-F @var{function}] [-C @var{command}] [-X @var{filterpat}] +@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-DEI] [-A @var{action}] [-G @var{globpat}] +[-W @var{wordlist}] [-F @var{function}] [-C @var{command}] [-X @var{filterpat}] [-P @var{prefix}] [-S @var{suffix}] @var{name} [@var{name} @dots{}]} -@code{complete -pr [-DE] [@var{name} @dots{}]} +@code{complete -pr [-DEI] [@var{name} @dots{}]} @end example Specify how arguments to each @var{name} should be completed. @@ -1973,16 +2037,24 @@ reused as input. The @option{-r} option removes a completion specification for each @var{name}, or, if no @var{name}s are supplied, all completion specifications. -The @option{-D} option indicates that the remaining options and actions should +The @option{-D} option indicates that other supplied options and actions should apply to the ``default'' command completion; that is, completion attempted on a command for which no completion has previously been defined. -The @option{-E} option indicates that the remaining options and actions should +The @option{-E} option indicates that other supplied options and actions should apply to ``empty'' command completion; that is, completion attempted on a blank line. +The @option{-I} option indicates that other supplied options and actions should +apply to completion on the inital non-assignment word on the line, or after a +command delimiter such as @samp{;} or @samp{|}, which is usually command +name completion. +If multiple options are supplied, the @option{-D} option takes precedence +over @option{-E}, and both take precedence over @option{-I}. +If any of @option{-D}, @option{-E}, or @option{-I} are supplied, any other +@var{name} arguments are ignored; these completions only apply to the case +specified by the option. The process of applying these completion specifications when word completion -is attempted is described above (@pxref{Programmable Completion}). The -@option{-D} option takes precedence over @option{-E}. +is attempted is described above (@pxref{Programmable Completion}). Other options, if specified, have the following meanings. The arguments to the @option{-G}, @option{-W}, and @option{-X} options @@ -2012,7 +2084,7 @@ Perform directory name completion if the compspec generates no matches. @item filenames Tell Readline that the compspec generates filenames, so it can perform any -filename-specific processing (like adding a slash to directory names +filename-specific processing (like adding a slash to directory names, quoting special characters, or suppressing trailing spaces). This option is intended to be used with shell functions specified with @option{-F}. @@ -2167,7 +2239,7 @@ an error occurs adding a completion specification. @item compopt @btindex compopt @example -@code{compopt} [-o @var{option}] [-DE] [+o @var{option}] [@var{name}] +@code{compopt} [-o @var{option}] [-DEI] [+o @var{option}] [@var{name}] @end example Modify completion options for each @var{name} according to the @var{option}s, or for the currently-executing completion if no @var{name}s @@ -2176,14 +2248,19 @@ If no @var{option}s are given, display the completion options for each @var{name} or the current completion. The possible values of @var{option} are those valid for the @code{complete} builtin described above. -The @option{-D} option indicates that the remaining options should +The @option{-D} option indicates that other supplied options should apply to the ``default'' command completion; that is, completion attempted on a command for which no completion has previously been defined. -The @option{-E} option indicates that the remaining options should +The @option{-E} option indicates that other supplied options should apply to ``empty'' command completion; that is, completion attempted on a blank line. +The @option{-I} option indicates that other supplied options should +apply to completion on the inital non-assignment word on the line, or after a +command delimiter such as @samp{;} or @samp{|}, which is usually command +name completion. -The @option{-D} option takes precedence over @option{-E}. +If multiple options are supplied, the @option{-D} option takes precedence +over @option{-E}, and both take precedence over @option{-I} The return value is true unless an invalid option is supplied, an attempt is made to modify the options for a @var{name} for which no completion @@ -2200,7 +2277,7 @@ a shell function and bind it to a particular command using @code{complete -F}. The following function provides completions for the @code{cd} builtin. It is a reasonably good example of what shell functions must do when -used for completion. This function uses the word passsed as @code{$2} +used for completion. This function uses the word passed as @code{$2} to determine the directory name to complete. You can also use the @code{COMP_WORDS} array variable; the current word is indexed by the @code{COMP_CWORD} variable. @@ -2230,7 +2307,7 @@ _comp_cd() local cur _skipdot _cdpath local i j k - # Tilde expansion, with side effect of expanding tilde to full pathname + # Tilde expansion, which also expands tilde to full pathname case "$2" in \~*) eval cur="$2" ;; *) cur=$2 ;; diff --git a/lib/readline/doc/version.texi b/lib/readline/doc/version.texi index 9dc2998ab..576c35c83 100644 --- a/lib/readline/doc/version.texi +++ b/lib/readline/doc/version.texi @@ -1,10 +1,10 @@ @ignore -Copyright (C) 1988-2016 Free Software Foundation, Inc. +Copyright (C) 1988-2018 Free Software Foundation, Inc. @end ignore -@set EDITION 7.0 -@set VERSION 7.0 -@set UPDATED 16 July 2016 -@set UPDATED-MONTH July 2016 +@set EDITION 8.0 +@set VERSION 8.0 +@set UPDATED 30 November 2018 +@set UPDATED-MONTH November 2018 -@set LASTCHANGE Sat Jul 16 13:43:15 EDT 2016 +@set LASTCHANGE Fri Nov 30 22:50:53 EST 2018 diff --git a/lib/readline/emacs_keymap.c b/lib/readline/emacs_keymap.c index cb6e140a2..b5e53f494 100644 --- a/lib/readline/emacs_keymap.c +++ b/lib/readline/emacs_keymap.c @@ -1,6 +1,6 @@ /* emacs_keymap.c -- the keymap for emacs_mode in readline (). */ -/* Copyright (C) 1987-2009 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. diff --git a/lib/readline/examples/rlcat.c b/lib/readline/examples/rlcat.c index fa9e06ff7..b4942413f 100644 --- a/lib/readline/examples/rlcat.c +++ b/lib/readline/examples/rlcat.c @@ -137,7 +137,7 @@ fcopy(fp) if (vflag && isascii ((unsigned char)c) && isprint((unsigned char)c) == 0) { x = rl_untranslate_keyseq (c); - if (fputs (x, stdout) != 0) + if (fputs (x, stdout) == EOF) return 1; } else if (putchar (c) == EOF) diff --git a/lib/readline/funmap.c b/lib/readline/funmap.c index 34b1d6ba7..aaf144de9 100644 --- a/lib/readline/funmap.c +++ b/lib/readline/funmap.c @@ -1,6 +1,6 @@ /* funmap.c -- attach names to functions. */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -110,6 +110,7 @@ static const FUNMAP default_funmap[] = { { "menu-complete", rl_menu_complete }, { "menu-complete-backward", rl_backward_menu_complete }, { "next-history", rl_get_next_history }, + { "next-screen-line", rl_next_screen_line }, { "non-incremental-forward-search-history", rl_noninc_forward_search }, { "non-incremental-reverse-search-history", rl_noninc_reverse_search }, { "non-incremental-forward-search-history-again", rl_noninc_forward_search_again }, @@ -121,6 +122,7 @@ static const FUNMAP default_funmap[] = { #endif { "possible-completions", rl_possible_completions }, { "previous-history", rl_get_previous_history }, + { "previous-screen-line", rl_previous_screen_line }, { "print-last-kbd-macro", rl_print_last_kbd_macro }, { "quoted-insert", rl_quoted_insert }, { "re-read-init-file", rl_re_read_init_file }, @@ -204,9 +206,7 @@ static const FUNMAP default_funmap[] = { }; int -rl_add_funmap_entry (name, function) - const char *name; - rl_command_func_t *function; +rl_add_funmap_entry (const char *name, rl_command_func_t *function) { if (funmap_entry + 2 >= funmap_size) { @@ -226,7 +226,7 @@ static int funmap_initialized; /* Make the funmap contain all of the default entries. */ void -rl_initialize_funmap () +rl_initialize_funmap (void) { register int i; @@ -244,7 +244,7 @@ rl_initialize_funmap () is sorted. The array itself is allocated, but not the strings inside. You should free () the array when you done, but not the pointers. */ const char ** -rl_funmap_names () +rl_funmap_names (void) { const char **result; int result_size, result_index; diff --git a/lib/readline/histexpand.c b/lib/readline/histexpand.c index b84a6b8ac..adcf5dcb4 100644 --- a/lib/readline/histexpand.c +++ b/lib/readline/histexpand.c @@ -1,6 +1,6 @@ /* histexpand.c -- history expansion. */ -/* Copyright (C) 1989-2015 Free Software Foundation, Inc. +/* Copyright (C) 1989-2018 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -55,6 +55,8 @@ #define slashify_in_quotes "\\`\"$" +#define fielddelim(c) (whitespace(c) || (c) == '\n') + typedef int _hist_search_func_t PARAMS((const char *, int)); static char error_pointer; @@ -107,6 +109,8 @@ char *history_word_delimiters = HISTORY_WORD_DELIMITERS; particular history expansion should be performed. */ rl_linebuf_func_t *history_inhibit_expansion_function; +int history_quoting_state = 0; + /* **************************************************************** */ /* */ /* History Expansion */ @@ -132,10 +136,7 @@ static char *search_match; So you might call this function like: line = get_history_event ("!echo:p", &index, 0); */ char * -get_history_event (string, caller_index, delimiting_quote) - const char *string; - int *caller_index; - int delimiting_quote; +get_history_event (const char *string, int *caller_index, int delimiting_quote) { register int i; register char c; @@ -316,9 +317,7 @@ get_history_event (string, caller_index, delimiting_quote) to the closing single quote. FLAGS currently used to allow backslash to escape a single quote (e.g., for bash $'...'). */ static void -hist_string_extract_single_quoted (string, sindex, flags) - char *string; - int *sindex, flags; +hist_string_extract_single_quoted (char *string, int *sindex, int flags) { register int i; @@ -332,8 +331,7 @@ hist_string_extract_single_quoted (string, sindex, flags) } static char * -quote_breaks (s) - char *s; +quote_breaks (char *s) { register char *p, *r; char *ret; @@ -374,9 +372,7 @@ quote_breaks (s) } static char * -hist_error(s, start, current, errtype) - char *s; - int start, current, errtype; +hist_error(char *s, int start, int current, int errtype) { char *temp; const char *emsg; @@ -433,9 +429,7 @@ hist_error(s, start, current, errtype) subst_rhs is allowed to be set to the empty string. */ static char * -get_subst_pattern (str, iptr, delimiter, is_rhs, lenptr) - char *str; - int *iptr, delimiter, is_rhs, *lenptr; +get_subst_pattern (char *str, int *iptr, int delimiter, int is_rhs, int *lenptr) { register int si, i, j, k; char *s; @@ -490,7 +484,7 @@ get_subst_pattern (str, iptr, delimiter, is_rhs, lenptr) } static void -postproc_subst_rhs () +postproc_subst_rhs (void) { char *new; int i, j, new_size; @@ -526,12 +520,9 @@ postproc_subst_rhs () if the `p' modifier was supplied and the caller should just print the returned string. Returns the new index into string in *END_INDEX_PTR, and the expanded specifier in *RET_STRING. */ +/* need current line for !# */ static int -history_expand_internal (string, start, qc, end_index_ptr, ret_string, current_line) - char *string; - int start, qc, *end_index_ptr; - char **ret_string; - char *current_line; /* for !# */ +history_expand_internal (char *string, int start, int qc, int *end_index_ptr, char **ret_string, char *current_line) { int i, n, starting_index; int substitute_globally, subst_bywords, want_quotes, print_only; @@ -780,7 +771,7 @@ history_expand_internal (string, start, qc, end_index_ptr, ret_string, current_l the last time. */ if (subst_bywords && si > we) { - for (; temp[si] && whitespace (temp[si]); si++) + for (; temp[si] && fielddelim (temp[si]); si++) ; ws = si; we = history_tokenize_word (temp, si); @@ -908,9 +899,7 @@ history_expand_internal (string, start, qc, end_index_ptr, ret_string, current_l while (0) int -history_expand (hstring, output) - char *hstring; - char **output; +history_expand (char *hstring, char **output) { register int j; int i, r, l, passc, cc, modified, eindex, only_printing, dquote, squote, flag; @@ -976,7 +965,22 @@ history_expand (hstring, output) /* `!' followed by one of the characters in history_no_expand_chars is NOT an expansion. */ - for (i = dquote = squote = 0; string[i]; i++) + dquote = history_quoting_state == '"'; + squote = history_quoting_state == '\''; + + /* If the calling application tells us we are already reading a + single-quoted string, consume the rest of the string right now + and then go on. */ + i = 0; + if (squote && history_quotes_inhibit_expansion) + { + hist_string_extract_single_quoted (string, &i, 0); + squote = 0; + if (string[i]) + i++; + } + + for ( ; string[i]; i++) { #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) @@ -1064,7 +1068,29 @@ history_expand (hstring, output) } /* Extract and perform the substitution. */ - for (passc = dquote = squote = i = j = 0; i < l; i++) + dquote = history_quoting_state == '"'; + squote = history_quoting_state == '\''; + + /* If the calling application tells us we are already reading a + single-quoted string, consume the rest of the string right now + and then go on. */ + i = j = 0; + if (squote && history_quotes_inhibit_expansion) + { + int c; + + hist_string_extract_single_quoted (string, &i, 0); + squote = 0; + for (c = 0; c < i; c++) + ADD_CHAR (string[c]); + if (string[i]) + { + ADD_CHAR (string[i]); + i++; + } + } + + for (passc = 0; i < l; i++) { int qc, tchar = string[i]; @@ -1249,9 +1275,7 @@ history_expand (hstring, output) CALLER_INDEX is the offset in SPEC to start looking; it is updated to point to just after the last character parsed. */ static char * -get_history_word_specifier (spec, from, caller_index) - char *spec, *from; - int *caller_index; +get_history_word_specifier (char *spec, char *from, int *caller_index) { register int i = *caller_index; int first, last; @@ -1357,9 +1381,7 @@ get_history_word_specifier (spec, from, caller_index) tokens, so that FIRST = -1 means the next to last token on the line). If LAST is `$' the last arg from STRING is used. */ char * -history_arg_extract (first, last, string) - int first, last; - const char *string; +history_arg_extract (int first, int last, const char *string) { register int i, len; char *result; @@ -1418,9 +1440,7 @@ history_arg_extract (first, last, string) } static int -history_tokenize_word (string, ind) - const char *string; - int ind; +history_tokenize_word (const char *string, int ind) { register int i, j; int delimiter, nestdelim, delimopen; @@ -1428,7 +1448,7 @@ history_tokenize_word (string, ind) i = ind; delimiter = nestdelim = 0; - if (member (string[i], "()\n")) + if (member (string[i], "()\n")) /* XXX - included \n, but why? been here forever */ { i++; return i; @@ -1450,11 +1470,11 @@ history_tokenize_word (string, ind) } } - if (member (string[i], "<>;&|$")) + if (member (string[i], "<>;&|")) { int peek = string[i + 1]; - if (peek == string[i] && peek != '$') + if (peek == string[i]) { if (peek == '<' && string[i + 2] == '-') i++; @@ -1477,9 +1497,8 @@ history_tokenize_word (string, ind) i += 2; return i; } - /* XXX - separated out for later -- bash-4.2 */ - else if ((peek == '(' && (string[i] == '>' || string[i] == '<')) || /* ) */ - (peek == '(' && string[i] == '$')) /*)*/ + /* XXX - process substitution -- separated out for later -- bash-4.2 */ + else if (peek == '(' && (string[i] == '>' || string[i] == '<')) /*)*/ { i += 2; delimopen = '('; @@ -1487,34 +1506,9 @@ history_tokenize_word (string, ind) nestdelim = 1; goto get_word; } -#if 0 - else if (peek == '\'' && string[i] == '$') - { - i += 2; /* XXX */ - return i; - } -#endif - if (string[i] != '$') - { - i++; - return i; - } - } - - /* same code also used for $(...)/<(...)/>(...) above */ - if (member (string[i], "!@?+*")) - { - int peek = string[i + 1]; - - if (peek == '(') /*)*/ - { - /* Shell extended globbing patterns */ - i += 2; - delimopen = '('; - delimiter = ')'; /* XXX - not perfect */ - nestdelim = 1; - } + i++; + return i; } get_word: @@ -1559,6 +1553,16 @@ get_word: continue; } + /* Command and process substitution; shell extended globbing patterns */ + if (nestdelim == 0 && delimiter == 0 && member (string[i], "<>$!@?+*") && string[i+1] == '(') /*)*/ + { + i += 2; + delimopen = '('; + delimiter = ')'; + nestdelim = 1; + continue; + } + if (delimiter == 0 && (member (string[i], history_word_delimiters))) break; @@ -1570,9 +1574,7 @@ get_word: } static char * -history_substring (string, start, end) - const char *string; - int start, end; +history_substring (const char *string, int start, int end) { register int len; register char *result; @@ -1589,9 +1591,7 @@ history_substring (string, start, end) WIND. The position in the returned array of strings is returned in *INDP. */ static char ** -history_tokenize_internal (string, wind, indp) - const char *string; - int wind, *indp; +history_tokenize_internal (const char *string, int wind, int *indp) { char **result; register int i, start, result_index, size; @@ -1606,7 +1606,7 @@ history_tokenize_internal (string, wind, indp) for (i = result_index = size = 0, result = (char **)NULL; string[i]; ) { /* Skip leading whitespace. */ - for (; string[i] && whitespace (string[i]); i++) + for (; string[i] && fielddelim (string[i]); i++) ; if (string[i] == 0 || string[i] == history_comment_char) return (result); @@ -1644,17 +1644,14 @@ history_tokenize_internal (string, wind, indp) /* Return an array of tokens, much as the shell might. The tokens are parsed out of STRING. */ char ** -history_tokenize (string) - const char *string; +history_tokenize (const char *string) { return (history_tokenize_internal (string, -1, (int *)NULL)); } /* Free members of WORDS from START to an empty string */ static void -freewords (words, start) - char **words; - int start; +freewords (char **words, int start) { register int i; @@ -1666,9 +1663,7 @@ freewords (words, start) in the history line LINE. Used to save the word matched by the last history !?string? search. */ static char * -history_find_word (line, ind) - char *line; - int ind; +history_find_word (char *line, int ind) { char **words, *s; int i, wind; diff --git a/lib/readline/histfile.c b/lib/readline/histfile.c index 5b057cdef..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-2016 Free Software Foundation, Inc. +/* Copyright (C) 1989-2018 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -143,8 +143,7 @@ static int histfile_restore PARAMS((const char *, const char *)); filename. This only matters when you don't specify the filename to read_history (), or write_history (). */ static char * -history_filename (filename) - const char *filename; +history_filename (const char *filename) { char *return_val; const char *home; @@ -179,8 +178,7 @@ history_filename (filename) } static char * -history_backupfile (filename) - const char *filename; +history_backupfile (const char *filename) { const char *fn; char *ret, linkbuf[PATH_MAX+1]; @@ -208,8 +206,7 @@ history_backupfile (filename) } static char * -history_tempfile (filename) - const char *filename; +history_tempfile (const char *filename) { const char *fn; char *ret, linkbuf[PATH_MAX+1]; @@ -251,8 +248,7 @@ history_tempfile (filename) If FILENAME is NULL, then read from ~/.history. Returns 0 if successful, or errno if not. */ int -read_history (filename) - const char *filename; +read_history (const char *filename) { return (read_history_range (filename, 0, -1)); } @@ -263,9 +259,7 @@ read_history (filename) until the end of the file. If FILENAME is NULL, then read from ~/.history. Returns 0 if successful, or errno if not. */ int -read_history_range (filename, from, to) - const char *filename; - int from, to; +read_history_range (const char *filename, int from, int to) { register char *line_start, *line_end, *p; char *input, *buffer, *bufend, *last_ts; @@ -289,6 +283,16 @@ read_history_range (filename, from, to) if ((file < 0) || (fstat (file, &finfo) == -1)) goto error_and_exit; + if (S_ISREG (finfo.st_mode) == 0) + { +#ifdef EFTYPE + errno = EFTYPE; +#else + errno = EINVAL; +#endif + goto error_and_exit; + } + file_size = (size_t)finfo.st_size; /* check for overflow on very large files */ @@ -298,6 +302,12 @@ read_history_range (filename, from, to) goto error_and_exit; } + if (file_size == 0) + { + free (input); + return 0; /* don't waste time if we don't have to */ + } + #ifdef HISTORY_USE_MMAP /* We map read/write and private so we can change newlines to NULs without affecting the underlying object. */ @@ -344,6 +354,7 @@ read_history_range (filename, from, to) /* Start at beginning of file, work to end. */ bufend = buffer + chars_read; + *bufend = '\0'; /* null-terminate buffer for timestamp checks */ current_line = 0; /* Heuristic: the history comment character rarely changes, so assume we @@ -385,7 +396,7 @@ read_history_range (filename, from, to) { if (HIST_TIMESTAMP_START(line_start) == 0) { - if (last_ts == NULL && history_multiline_entries) + if (last_ts == NULL && history_length > 0 && history_multiline_entries) _hs_append_history_line (history_length - 1, line_start); else add_history (line_start); @@ -427,9 +438,7 @@ read_history_range (filename, from, to) /* Save FILENAME to BACK, handling case where FILENAME is a symlink (e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */ static int -histfile_backup (filename, back) - const char *filename; - const char *back; +histfile_backup (const char *filename, const char *back) { #if defined (HAVE_READLINK) char linkbuf[PATH_MAX+1]; @@ -448,9 +457,7 @@ histfile_backup (filename, back) /* Restore ORIG from BACKUP handling case where ORIG is a symlink (e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */ static int -histfile_restore (backup, orig) - const char *backup; - const char *orig; +histfile_restore (const char *backup, const char *orig) { #if defined (HAVE_READLINK) char linkbuf[PATH_MAX+1]; @@ -470,9 +477,7 @@ histfile_restore (backup, orig) If FNAME is NULL, then use ~/.history. Writes a new file and renames it to the original name. Returns 0 on success, errno on failure. */ int -history_truncate_file (fname, lines) - const char *fname; - int lines; +history_truncate_file (const char *fname, int lines) { char *buffer, *filename, *tempname, *bp, *bp1; /* bp1 == bp+1 */ int file, chars_read, rv, orig_lines, exists, r; @@ -606,12 +611,14 @@ history_truncate_file (fname, lines) history_lines_written_to_file = 0; } +#if defined (HAVE_CHOWN) /* Make sure the new filename is owned by the same user as the old. If one user is running this, it's a no-op. If the shell is running after sudo with a shared history file, we don't want to leave the history file owned by root. */ if (rv == 0 && exists) r = chown (filename, finfo.st_uid, finfo.st_gid); +#endif xfree (filename); FREE (tempname); @@ -623,9 +630,7 @@ history_truncate_file (fname, lines) from the history list to FILENAME. OVERWRITE is non-zero if you wish to replace FILENAME with the entries. */ static int -history_do_write (filename, nelements, overwrite) - const char *filename; - int nelements, overwrite; +history_do_write (const char *filename, int nelements, int overwrite) { register int i; char *output, *tempname, *histname; @@ -753,12 +758,14 @@ mmap_error: history_lines_written_to_file = 0; } +#if defined (HAVE_CHOWN) /* Make sure the new filename is owned by the same user as the old. If one user is running this, it's a no-op. If the shell is running after sudo with a shared history file, we don't want to leave the history file owned by root. */ if (rv == 0 && exists) mode = chown (histname, finfo.st_uid, finfo.st_gid); +#endif FREE (histname); FREE (tempname); @@ -769,9 +776,7 @@ mmap_error: /* Append NELEMENT entries to FILENAME. The entries appended are from the end of the list minus NELEMENTs up to the end of the list. */ int -append_history (nelements, filename) - int nelements; - const char *filename; +append_history (int nelements, const char *filename) { return (history_do_write (filename, nelements, HISTORY_APPEND)); } @@ -780,8 +785,7 @@ append_history (nelements, filename) then write the history list to ~/.history. Values returned are as in read_history ().*/ int -write_history (filename) - const char *filename; +write_history (const char *filename) { return (history_do_write (filename, history_length, HISTORY_OVERWRITE)); } diff --git a/lib/readline/histlib.h b/lib/readline/histlib.h index 28cad14a5..9627b2450 100644 --- a/lib/readline/histlib.h +++ b/lib/readline/histlib.h @@ -51,9 +51,9 @@ #endif #ifndef member -# ifndef strchr +# if !defined (strchr) && !defined (__STDC__) extern char *strchr (); -# endif +# endif /* !strchr && !__STDC__ */ #define member(c, s) ((c) ? ((char *)strchr ((s), (c)) != (char *)NULL) : 0) #endif @@ -69,11 +69,17 @@ extern char *strchr (); #define NO_PREV_SUBST 4 /* Possible definitions for history starting point specification. */ -#define ANCHORED_SEARCH 1 -#define NON_ANCHORED_SEARCH 0 +#define NON_ANCHORED_SEARCH 0 +#define ANCHORED_SEARCH 0x01 +#define PATTERN_SEARCH 0x02 /* Possible definitions for what style of writing the history file we want. */ #define HISTORY_APPEND 0 #define HISTORY_OVERWRITE 1 +/* internal extern function declarations used by other parts of the library */ + +/* histsearch.c */ +extern int _hs_history_patsearch PARAMS((const char *, int, int)); + #endif /* !_HISTLIB_H_ */ diff --git a/lib/readline/history.c b/lib/readline/history.c index 129c57a30..67158b14b 100644 --- a/lib/readline/history.c +++ b/lib/readline/history.c @@ -1,6 +1,6 @@ /* history.c -- standalone history library */ -/* Copyright (C) 1989-2015 Free Software Foundation, Inc. +/* Copyright (C) 1989-2017 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -97,7 +97,7 @@ int history_base = 1; /* Return the current HISTORY_STATE of the history. */ HISTORY_STATE * -history_get_history_state () +history_get_history_state (void) { HISTORY_STATE *state; @@ -115,8 +115,7 @@ history_get_history_state () /* Set the state of the current history array to STATE. */ void -history_set_history_state (state) - HISTORY_STATE *state; +history_set_history_state (HISTORY_STATE *state) { the_history = state->entries; history_offset = state->offset; @@ -129,7 +128,7 @@ history_set_history_state (state) /* Begin a session in which the history functions might be used. This initializes interactive variables. */ void -using_history () +using_history (void) { history_offset = history_length; } @@ -138,7 +137,7 @@ using_history () This just adds up the lengths of the_history->lines and the associated timestamps. */ int -history_total_bytes () +history_total_bytes (void) { register int i, result; @@ -151,7 +150,7 @@ history_total_bytes () /* Returns the magic number which says what history element we are looking at now. In this implementation, it returns history_offset. */ int -where_history () +where_history (void) { return (history_offset); } @@ -159,8 +158,7 @@ where_history () /* Make the current history item be the one at POS, an absolute index. Returns zero if POS is out of range, else non-zero. */ int -history_set_pos (pos) - int pos; +history_set_pos (int pos) { if (pos > history_length || pos < 0 || !the_history) return (0); @@ -172,7 +170,7 @@ history_set_pos (pos) is the actual array of data, and could be bashed or made corrupt easily. The array is terminated with a NULL pointer. */ HIST_ENTRY ** -history_list () +history_list (void) { return (the_history); } @@ -180,7 +178,7 @@ history_list () /* Return the history entry at the current position, as determined by history_offset. If there is no entry there, return a NULL pointer. */ HIST_ENTRY * -current_history () +current_history (void) { return ((history_offset == history_length) || the_history == 0) ? (HIST_ENTRY *)NULL @@ -191,7 +189,7 @@ current_history () a pointer to that entry. If there is no previous entry then return a NULL pointer. */ HIST_ENTRY * -previous_history () +previous_history (void) { return history_offset ? the_history[--history_offset] : (HIST_ENTRY *)NULL; } @@ -200,7 +198,7 @@ previous_history () a pointer to that entry. If there is no next entry then return a NULL pointer. */ HIST_ENTRY * -next_history () +next_history (void) { return (history_offset == history_length) ? (HIST_ENTRY *)NULL : the_history[++history_offset]; } @@ -208,8 +206,7 @@ next_history () /* Return the history entry which is logically at OFFSET in the history array. OFFSET is relative to history_base. */ HIST_ENTRY * -history_get (offset) - int offset; +history_get (int offset) { int local_index; @@ -220,9 +217,7 @@ history_get (offset) } HIST_ENTRY * -alloc_history_entry (string, ts) - char *string; - char *ts; +alloc_history_entry (char *string, char *ts) { HIST_ENTRY *temp; @@ -236,8 +231,7 @@ alloc_history_entry (string, ts) } time_t -history_get_time (hist) - HIST_ENTRY *hist; +history_get_time (HIST_ENTRY *hist) { char *ts; time_t t; @@ -255,7 +249,7 @@ history_get_time (hist) } static char * -hist_inittime () +hist_inittime (void) { time_t t; char ts[64], *ret; @@ -275,8 +269,7 @@ hist_inittime () /* Place STRING at the end of the history list. The data field is set to NULL. */ void -add_history (string) - const char *string; +add_history (const char *string) { HIST_ENTRY *temp; int new_length; @@ -335,8 +328,7 @@ add_history (string) /* Change the time stamp of the most recent history entry to STRING. */ void -add_history_time (string) - const char *string; +add_history_time (const char *string) { HIST_ENTRY *hs; @@ -350,8 +342,7 @@ add_history_time (string) /* Free HIST and return the data so the calling application can free it if necessary and desired. */ histdata_t -free_history_entry (hist) - HIST_ENTRY *hist; +free_history_entry (HIST_ENTRY *hist) { histdata_t x; @@ -365,8 +356,7 @@ free_history_entry (hist) } HIST_ENTRY * -copy_history_entry (hist) - HIST_ENTRY *hist; +copy_history_entry (HIST_ENTRY *hist) { HIST_ENTRY *ret; char *ts; @@ -388,10 +378,7 @@ copy_history_entry (hist) the old entry so you can dispose of the data. In the case of an invalid WHICH, a NULL pointer is returned. */ HIST_ENTRY * -replace_history_entry (which, line, data) - int which; - const char *line; - histdata_t data; +replace_history_entry (int which, const char *line, histdata_t data) { HIST_ENTRY *temp, *old_value; @@ -413,17 +400,26 @@ replace_history_entry (which, line, data) end of the current line first. This can be used to construct multi-line history entries while reading lines from the history file. */ void -_hs_append_history_line (which, line) - int which; - const char *line; +_hs_append_history_line (int which, const char *line) { HIST_ENTRY *hent; - size_t newlen, curlen; + size_t newlen, curlen, minlen; char *newline; hent = the_history[which]; curlen = strlen (hent->line); - newlen = curlen + strlen (line) + 2; + minlen = curlen + strlen (line) + 2; /* min space needed */ + if (curlen > 256) /* XXX - for now */ + { + newlen = 512; /* now realloc in powers of 2 */ + /* we recalcluate every time; the operations are cheap */ + while (newlen < minlen) + newlen <<= 1; + } + else + newlen = minlen; + /* Assume that realloc returns the same pointer and doesn't try a new + alloc/copy if the new size is the same as the one last passed. */ newline = realloc (hent->line, newlen); if (newline) { @@ -440,9 +436,7 @@ _hs_append_history_line (which, line) WHICH >= 0 means to replace that particular history entry's data, as long as it matches OLD. */ void -_hs_replace_history_data (which, old, new) - int which; - histdata_t *old, *new; +_hs_replace_history_data (int which, histdata_t *old, histdata_t *new) { HIST_ENTRY *entry; register int i, last; @@ -482,29 +476,76 @@ _hs_replace_history_data (which, old, new) element is returned to you so you can free the line, data, and containing structure. */ HIST_ENTRY * -remove_history (which) - int which; +remove_history (int which) { HIST_ENTRY *return_value; register int i; +#if 1 + int nentries; + HIST_ENTRY **start, **end; +#endif if (which < 0 || which >= history_length || history_length == 0 || the_history == 0) return ((HIST_ENTRY *)NULL); return_value = the_history[which]; +#if 1 + /* Copy the rest of the entries, moving down one slot. Copy includes + trailing NULL. */ + nentries = history_length - which; + start = the_history + which; + end = start + 1; + memmove (start, end, nentries * sizeof (HIST_ENTRY *)); +#else for (i = which; i < history_length; i++) the_history[i] = the_history[i + 1]; +#endif history_length--; return (return_value); } +HIST_ENTRY ** +remove_history_range (int first, int last) +{ + HIST_ENTRY **return_value; + register int i; + int nentries; + HIST_ENTRY **start, **end; + + if (the_history == 0 || history_length == 0) + return ((HIST_ENTRY **)NULL); + if (first < 0 || first >= history_length || last < 0 || last >= history_length) + return ((HIST_ENTRY **)NULL); + if (first > last) + return (HIST_ENTRY **)NULL; + + nentries = last - first + 1; + return_value = (HIST_ENTRY **)malloc ((nentries + 1) * sizeof (HIST_ENTRY *)); + if (return_value == 0) + return return_value; + + /* Return all the deleted entries in a list */ + for (i = first ; i <= last; i++) + return_value[i - first] = the_history[i]; + return_value[i - first] = (HIST_ENTRY *)NULL; + + /* Copy the rest of the entries, moving down NENTRIES slots. Copy includes + trailing NULL. */ + start = the_history + first; + end = the_history + last + 1; + memmove (start, end, (history_length - last) * sizeof (HIST_ENTRY *)); + + history_length -= nentries; + + return (return_value); +} + /* Stifle the history list, remembering only MAX number of lines. */ void -stifle_history (max) - int max; +stifle_history (int max) { register int i, j; @@ -532,7 +573,7 @@ stifle_history (max) number of history entries. The value is positive if the history was stifled, negative if it wasn't. */ int -unstifle_history () +unstifle_history (void) { if (history_stifled) { @@ -544,13 +585,13 @@ unstifle_history () } int -history_is_stifled () +history_is_stifled (void) { return (history_stifled); } void -clear_history () +clear_history (void) { register int i; @@ -562,4 +603,5 @@ clear_history () } history_offset = history_length = 0; + history_base = 1; /* reset history base to default */ } diff --git a/lib/readline/history.h b/lib/readline/history.h index 8ce7c805d..cc3de29a6 100644 --- a/lib/readline/history.h +++ b/lib/readline/history.h @@ -86,11 +86,13 @@ extern void add_history PARAMS((const char *)); STRING. */ extern void add_history_time PARAMS((const char *)); -/* A reasonably useless function, only here for completeness. WHICH - is the magic number that tells us which element to delete. The - elements are numbered from 0. */ +/* Remove an entry from the history list. WHICH is the magic number that + tells us which element to delete. The elements are numbered from 0. */ extern HIST_ENTRY *remove_history PARAMS((int)); +/* Remove a set of entries from the history list: FIRST to LAST, inclusive */ +extern HIST_ENTRY **remove_history_range PARAMS((int, int)); + /* Allocate a history entry consisting of STRING and TIMESTAMP and return a pointer to it. */ extern HIST_ENTRY *alloc_history_entry PARAMS((char *, char *)); @@ -259,7 +261,9 @@ extern char *history_word_delimiters; extern char history_comment_char; extern char *history_no_expand_chars; extern char *history_search_delimiter_chars; + extern int history_quotes_inhibit_expansion; +extern int history_quoting_state; extern int history_write_timestamps; diff --git a/lib/readline/histsearch.c b/lib/readline/histsearch.c index 1ad55d22d..7a426c967 100644 --- a/lib/readline/histsearch.c +++ b/lib/readline/histsearch.c @@ -1,6 +1,6 @@ /* histsearch.c -- searching the history list. */ -/* Copyright (C) 1989, 1992-2009 Free Software Foundation, Inc. +/* Copyright (C) 1989, 1992-2009,2017 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -39,8 +39,13 @@ # include #endif +#if defined (HAVE_FNMATCH) +# include +#endif + #include "history.h" #include "histlib.h" +#include "xmalloc.h" /* The list of alternate characters that can delimit a history search string. */ @@ -59,18 +64,22 @@ static int history_search_internal PARAMS((const char *, int, int)); returned. */ static int -history_search_internal (string, direction, anchored) - const char *string; - int direction, anchored; +history_search_internal (const char *string, int direction, int flags) { register int i, reverse; register char *line; register int line_index; - int string_len; + int string_len, anchored, patsearch; HIST_ENTRY **the_history; /* local */ i = history_offset; reverse = (direction < 0); + anchored = (flags & ANCHORED_SEARCH); +#if defined (HAVE_FNMATCH) + patsearch = (flags & PATTERN_SEARCH); +#else + patsearch = 0; +#endif /* Take care of trivial cases first. */ if (string == 0 || *string == '\0') @@ -98,7 +107,7 @@ history_search_internal (string, direction, anchored) line_index = strlen (line); /* If STRING is longer than line, no match. */ - if (string_len > line_index) + if (patsearch == 0 && (string_len > line_index)) { NEXT_LINE (); continue; @@ -107,6 +116,17 @@ history_search_internal (string, direction, anchored) /* Handle anchored searches first. */ if (anchored == ANCHORED_SEARCH) { +#if defined (HAVE_FNMATCH) + if (patsearch) + { + if (fnmatch (string, line, 0) == 0) + { + history_offset = i; + return (0); + } + } + else +#endif if (STREQN (string, line, string_len)) { history_offset = i; @@ -120,10 +140,21 @@ history_search_internal (string, direction, anchored) /* Do substring search. */ if (reverse) { - line_index -= string_len; + line_index -= (patsearch == 0) ? string_len : 1; while (line_index >= 0) { +#if defined (HAVE_FNMATCH) + if (patsearch) + { + if (fnmatch (string, line + line_index, 0) == 0) + { + history_offset = i; + return (line_index); + } + } + else +#endif if (STREQN (string, line + line_index, string_len)) { history_offset = i; @@ -141,6 +172,17 @@ history_search_internal (string, direction, anchored) while (line_index < limit) { +#if defined (HAVE_FNMATCH) + if (patsearch) + { + if (fnmatch (string, line + line_index, 0) == 0) + { + history_offset = i; + return (line_index); + } + } + else +#endif if (STREQN (string, line + line_index, string_len)) { history_offset = i; @@ -153,20 +195,73 @@ history_search_internal (string, direction, anchored) } } +int +_hs_history_patsearch (const char *string, int direction, int flags) +{ + char *pat; + size_t len, start; + int ret, unescaped_backslash; + +#if defined (HAVE_FNMATCH) + /* Assume that the string passed does not have a leading `^' and any + anchored search request is captured in FLAGS */ + len = strlen (string); + ret = len - 1; + /* fnmatch is required to reject a pattern that ends with an unescaped + backslash */ + if (unescaped_backslash = (string[ret] == '\\')) + { + while (ret > 0 && string[--ret] == '\\') + unescaped_backslash = 1 - unescaped_backslash; + } + if (unescaped_backslash) + return -1; + pat = (char *)xmalloc (len + 3); + /* If the search string is not anchored, we'll be calling fnmatch (assuming + we have it). Prefix a `*' to the front of the search string so we search + anywhere in the line. */ + if ((flags & ANCHORED_SEARCH) == 0 && string[0] != '*') + { + pat[0] = '*'; + start = 1; + len++; + } + else + { + start = 0; + } + + /* Attempt to reduce the number of searches by tacking a `*' onto the end + of a pattern that doesn't have one. Assume a pattern that ends in a + backslash contains an even number of trailing backslashes; we check + above */ + strcpy (pat + start, string); + if (pat[len - 1] != '*') + { + pat[len] = '*'; /* XXX */ + pat[len+1] = '\0'; + } +#else + pat = string; +#endif + + ret = history_search_internal (pat, direction, flags|PATTERN_SEARCH); + + if (pat != string) + free (pat); + return ret; +} + /* Do a non-anchored search for STRING through the history in DIRECTION. */ int -history_search (string, direction) - const char *string; - int direction; +history_search (const char *string, int direction) { return (history_search_internal (string, direction, NON_ANCHORED_SEARCH)); } /* Do an anchored search for string through the history in DIRECTION. */ int -history_search_prefix (string, direction) - const char *string; - int direction; +history_search_prefix (const char *string, int direction) { return (history_search_internal (string, direction, ANCHORED_SEARCH)); } @@ -175,9 +270,7 @@ history_search_prefix (string, direction) backwards. POS is an absolute index into the history list at which point to begin searching. */ int -history_search_pos (string, dir, pos) - const char *string; - int dir, pos; +history_search_pos (const char *string, int dir, int pos) { int ret, old; diff --git a/lib/readline/input.c b/lib/readline/input.c index 286897d77..d4d57a810 100644 --- a/lib/readline/input.c +++ b/lib/readline/input.c @@ -1,6 +1,6 @@ /* input.c -- character input functions for readline. */ -/* Copyright (C) 1994-2015 Free Software Foundation, Inc. +/* Copyright (C) 1994-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -76,6 +76,10 @@ extern int errno; # define O_NDELAY O_NONBLOCK /* Posix style */ #endif +#if defined (HAVE_PSELECT) +extern sigset_t _rl_orig_sigset; +#endif + /* Non-null means it is a pointer to a function to run while waiting for character input. */ rl_hook_func_t *rl_event_hook = (rl_hook_func_t *)NULL; @@ -99,13 +103,28 @@ static int rl_gather_tyi PARAMS((void)); device, so we need to perform additional checks. */ #if defined (_WIN32) && !defined (__CYGWIN__) #include +#include #define WIN32_LEAN_AND_MEAN 1 #include int win32_isatty (int fd) { - return (_isatty (fd) ? ((((long) (HANDLE) _get_osfhandle (fd)) & 3) == 3) : 0); + if (_isatty(fd)) + { + HANDLE h; + DWORD ignored; + + if ((h = (HANDLE) _get_osfhandle (fd)) == INVALID_HANDLE_VALUE) + { + errno = EBADF; + return 0; + } + if (GetConsoleMode (h, &ignored) != 0) + return 1; + } + errno = ENOTTY; + return 0; } #define isatty(x) win32_isatty(x) @@ -124,13 +143,13 @@ static int ibuffer_len = sizeof (ibuffer) - 1; #define any_typein (push_index != pop_index) int -_rl_any_typein () +_rl_any_typein (void) { return any_typein; } int -_rl_pushed_input_available () +_rl_pushed_input_available (void) { return (push_index != pop_index); } @@ -138,7 +157,7 @@ _rl_pushed_input_available () /* Return the amount of space available in the buffer for stuffing characters. */ static int -ibuffer_space () +ibuffer_space (void) { if (pop_index > push_index) return (pop_index - push_index - 1); @@ -150,8 +169,7 @@ ibuffer_space () Return the key in KEY. Result is non-zero if there was a key, or 0 if there wasn't. */ static int -rl_get_char (key) - int *key; +rl_get_char (int *key) { if (push_index == pop_index) return (0); @@ -171,8 +189,7 @@ rl_get_char (key) Returns non-zero if successful, zero if there is no space left in the buffer. */ int -_rl_unget_char (key) - int key; +_rl_unget_char (int key) { if (ibuffer_space ()) { @@ -189,7 +206,7 @@ _rl_unget_char (key) IBUFFER. Otherwise, just return. Returns number of characters read (0 if none available) and -1 on error (EIO). */ static int -rl_gather_tyi () +rl_gather_tyi (void) { int tty; register int tem, result; @@ -292,8 +309,7 @@ rl_gather_tyi () } int -rl_set_keyboard_input_timeout (u) - int u; +rl_set_keyboard_input_timeout (int u) { int o; @@ -310,7 +326,7 @@ rl_set_keyboard_input_timeout (u) the user, it should use _rl_input_queued(timeout_value_in_microseconds) instead. */ int -_rl_input_available () +_rl_input_available (void) { #if defined(HAVE_SELECT) fd_set readfds, exceptfds; @@ -352,8 +368,7 @@ _rl_input_available () } int -_rl_input_queued (t) - int t; +_rl_input_queued (int t) { int old_timeout, r; @@ -364,8 +379,7 @@ _rl_input_queued (t) } void -_rl_insert_typein (c) - int c; +_rl_insert_typein (int c) { int key, t, i; char *string; @@ -390,8 +404,7 @@ _rl_insert_typein (c) /* Add KEY to the buffer of characters to be read. Returns 1 if the character was stuffed correctly; 0 otherwise. */ int -rl_stuff_char (key) - int key; +rl_stuff_char (int key) { if (ibuffer_space () == 0) return 0; @@ -415,8 +428,7 @@ rl_stuff_char (key) /* Make C be the next command to be executed. */ int -rl_execute_next (c) - int c; +rl_execute_next (int c) { rl_pending_input = c; RL_SETSTATE (RL_STATE_INPUTPENDING); @@ -425,7 +437,7 @@ rl_execute_next (c) /* Clear any pending input pushed with rl_execute_next() */ int -rl_clear_pending_input () +rl_clear_pending_input (void) { rl_pending_input = 0; RL_UNSETSTATE (RL_STATE_INPUTPENDING); @@ -440,20 +452,20 @@ rl_clear_pending_input () /* Read a key, including pending input. */ int -rl_read_key () +rl_read_key (void) { int c, r; if (rl_pending_input) { - c = rl_pending_input; + c = rl_pending_input; /* XXX - cast to unsigned char if > 0? */ rl_clear_pending_input (); } else { /* If input is coming from a macro, then use that. */ if (c = _rl_next_macro_key ()) - return (c); + return ((unsigned char)c); /* If the user has an event function, then call it periodically. */ if (rl_event_hook) @@ -490,8 +502,7 @@ rl_read_key () } int -rl_getc (stream) - FILE *stream; +rl_getc (FILE *stream) { int result; unsigned char c; @@ -512,10 +523,15 @@ rl_getc (stream) #endif result = 0; #if defined (HAVE_PSELECT) - sigemptyset (&empty_set); FD_ZERO (&readfds); FD_SET (fileno (stream), &readfds); +# if defined (HANDLE_SIGNALS) + result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &_rl_orig_sigset); +# else + sigemptyset (&empty_set); + sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &empty_set); result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &empty_set); +# endif /* HANDLE_SIGNALS */ #endif if (result >= 0) result = read (fileno (stream), &c, sizeof (unsigned char)); @@ -602,9 +618,7 @@ handle_error: #if defined (HANDLE_MULTIBYTE) /* read multibyte char */ int -_rl_read_mbchar (mbchar, size) - char *mbchar; - int size; +_rl_read_mbchar (char *mbchar, int size) { int mb_len, c; size_t mbchar_bytes_length; @@ -653,12 +667,9 @@ _rl_read_mbchar (mbchar, size) may be FIRST. Used by the search functions, among others. Very similar to _rl_read_mbchar. */ int -_rl_read_mbstring (first, mb, mlen) - int first; - char *mb; - int mlen; +_rl_read_mbstring (int first, char *mb, int mlen) { - int i, c; + int i, c, n; mbstate_t ps; c = first; @@ -667,7 +678,8 @@ _rl_read_mbstring (first, mb, mlen) { mb[i] = (char)c; memset (&ps, 0, sizeof (mbstate_t)); - if (_rl_get_char_len (mb, &ps) == -2) + n = _rl_get_char_len (mb, &ps); + if (n == -2) { /* Read more for multibyte character */ RL_SETSTATE (RL_STATE_MOREINPUT); diff --git a/lib/readline/isearch.c b/lib/readline/isearch.c index 819fcbce4..d6c590417 100644 --- a/lib/readline/isearch.c +++ b/lib/readline/isearch.c @@ -6,7 +6,7 @@ /* */ /* **************************************************************** */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -78,8 +78,7 @@ static int last_isearch_string_len; static char * const default_isearch_terminators = "\033\012"; _rl_search_cxt * -_rl_scxt_alloc (type, flags) - int type, flags; +_rl_scxt_alloc (int type, int flags) { _rl_search_cxt *cxt; @@ -120,9 +119,7 @@ _rl_scxt_alloc (type, flags) } void -_rl_scxt_dispose (cxt, flags) - _rl_search_cxt *cxt; - int flags; +_rl_scxt_dispose (_rl_search_cxt *cxt, int flags) { FREE (cxt->search_string); FREE (cxt->allocated_line); @@ -134,8 +131,7 @@ _rl_scxt_dispose (cxt, flags) /* Search backwards through the history looking for a string which is typed interactively. Start with the current line. */ int -rl_reverse_search_history (sign, key) - int sign, key; +rl_reverse_search_history (int sign, int key) { return (rl_search_history (-sign, key)); } @@ -143,8 +139,7 @@ rl_reverse_search_history (sign, key) /* Search forwards through the history looking for a string which is typed interactively. Start with the current line. */ int -rl_forward_search_history (sign, key) - int sign, key; +rl_forward_search_history (int sign, int key) { return (rl_search_history (sign, key)); } @@ -155,9 +150,7 @@ rl_forward_search_history (sign, key) WHERE is the history list number of the current line. If it is -1, then this line is the starting one. */ static void -rl_display_search (search_string, flags, where) - char *search_string; - int flags, where; +rl_display_search (char *search_string, int flags, int where) { char *message; int msglen, searchlen; @@ -206,8 +199,7 @@ rl_display_search (search_string, flags, where) } static _rl_search_cxt * -_rl_isearch_init (direction) - int direction; +_rl_isearch_init (int direction) { _rl_search_cxt *cxt; register int i; @@ -267,11 +259,10 @@ _rl_isearch_init (direction) } static void -_rl_isearch_fini (cxt) - _rl_search_cxt *cxt; +_rl_isearch_fini (_rl_search_cxt *cxt) { /* First put back the original state. */ - strcpy (rl_line_buffer, cxt->lines[cxt->save_line]); + rl_replace_line (cxt->lines[cxt->save_line], 0); rl_restore_prompt (); @@ -301,13 +292,13 @@ _rl_isearch_fini (cxt) rl_point = cxt->sline_index; /* Don't worry about where to put the mark here; rl_get_previous_history and rl_get_next_history take care of it. */ + _rl_fix_point (0); rl_clear_message (); } int -_rl_search_getchar (cxt) - _rl_search_cxt *cxt; +_rl_search_getchar (_rl_search_cxt *cxt) { int c; @@ -334,11 +325,12 @@ _rl_search_getchar (cxt) -1 if the caller should just free the context and return, 0 if we should break out of the loop, and 1 if we should continue to read characters. */ int -_rl_isearch_dispatch (cxt, c) - _rl_search_cxt *cxt; - int c; +_rl_isearch_dispatch (_rl_search_cxt *cxt, int c) { - int n, wstart, wlen, limit, cval; + int n, wstart, wlen, limit, cval, incr; + char *paste; + size_t pastelen; + int j; rl_command_func_t *f; f = (rl_command_func_t *)NULL; @@ -409,6 +401,8 @@ add_character: cxt->lastc = -5; else if (c == CTRL ('Y') || f == rl_yank) /* XXX */ cxt->lastc = -6; + else if (f == rl_bracketed_paste_begin) + cxt->lastc = -7; } /* If we changed the keymap earlier while translating a key sequence into @@ -527,7 +521,7 @@ add_character: } return (1); } - else if (cxt->sflags & SF_REVERSE) + else if ((cxt->sflags & SF_REVERSE) && cxt->sline_index >= 0) cxt->sline_index--; else if (cxt->sline_index != cxt->sline_len) cxt->sline_index++; @@ -631,22 +625,44 @@ add_character: cxt->search_string[cxt->search_string_index] = '\0'; break; + case -7: /* bracketed paste */ + paste = _rl_bracketed_text (&pastelen); + if (paste == 0 || *paste == 0) + { + free (paste); + break; + } + if (cxt->search_string_index + pastelen + 1 >= cxt->search_string_size) + { + cxt->search_string_size += pastelen + 2; + cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); + } + strcpy (cxt->search_string + cxt->search_string_index, paste); + cxt->search_string_index += pastelen; + free (paste); + break; + /* Add character to search string and continue search. */ default: - if (cxt->search_string_index + 2 >= cxt->search_string_size) +#if defined (HANDLE_MULTIBYTE) + wlen = (cxt->mb[0] == 0 || cxt->mb[1] == 0) ? 1 : RL_STRLEN (cxt->mb); +#else + wlen = 1; +#endif + if (cxt->search_string_index + wlen + 1 >= cxt->search_string_size) { - cxt->search_string_size += 128; + cxt->search_string_size += 128; /* 128 much greater than MB_CUR_MAX */ cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); } #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { - int j, l; + int j; if (cxt->mb[0] == 0 || cxt->mb[1] == 0) cxt->search_string[cxt->search_string_index++] = cxt->mb[0]; else - for (j = 0, l = RL_STRLEN (cxt->mb); j < l; ) + for (j = 0; j < wlen; ) cxt->search_string[cxt->search_string_index++] = cxt->mb[j++]; } else @@ -676,6 +692,12 @@ add_character: } else cxt->sline_index += cxt->direction; + + if (cxt->sline_index < 0) + { + cxt->sline_index = 0; + break; + } } if (cxt->sflags & SF_FOUND) break; @@ -703,7 +725,12 @@ add_character: (cxt->search_string_index > cxt->sline_len)); if (cxt->sflags & SF_FAILED) - break; + { + /* XXX - reset sline_index if < 0 */ + if (cxt->sline_index < 0) + cxt->sline_index = 0; + break; + } /* Now set up the line for searching... */ cxt->sline_index = (cxt->sflags & SF_REVERSE) ? cxt->sline_len - cxt->search_string_index : 0; @@ -734,9 +761,7 @@ add_character: } int -_rl_isearch_cleanup (cxt, r) - _rl_search_cxt *cxt; - int r; +_rl_isearch_cleanup (_rl_search_cxt *cxt, int r) { if (r >= 0) _rl_isearch_fini (cxt); @@ -753,8 +778,7 @@ _rl_isearch_cleanup (cxt, r) DIRECTION is which direction to search; >= 0 means forward, < 0 means backwards. */ static int -rl_search_history (direction, invoking_key) - int direction, invoking_key; +rl_search_history (int direction, int invoking_key) { _rl_search_cxt *cxt; /* local for now, but saved globally */ int c, r; @@ -792,8 +816,7 @@ rl_search_history (direction, invoking_key) If _rl_isearch_dispatch finishes searching, this function is responsible for turning off RL_STATE_ISEARCH, which it does using _rl_isearch_cleanup. */ int -_rl_isearch_callback (cxt) - _rl_search_cxt *cxt; +_rl_isearch_callback (_rl_search_cxt *cxt) { int c, r; diff --git a/lib/readline/keymaps.c b/lib/readline/keymaps.c index 58661e298..4ade30bcd 100644 --- a/lib/readline/keymaps.c +++ b/lib/readline/keymaps.c @@ -1,6 +1,6 @@ /* keymaps.c -- Functions and keymaps for the GNU Readline library. */ -/* Copyright (C) 1988,1989-2009 Free Software Foundation, Inc. +/* Copyright (C) 1988,1989-2009,2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -54,7 +54,7 @@ /* Return a new, empty keymap. Free it with free() when you are done. */ Keymap -rl_make_bare_keymap () +rl_make_bare_keymap (void) { register int i; Keymap keymap; @@ -77,11 +77,25 @@ rl_make_bare_keymap () return (keymap); } +/* A convenience function that returns 1 if there are no keys bound to + functions in KEYMAP */ +int +rl_empty_keymap (Keymap keymap) +{ + int i; + + for (i = 0; i < ANYOTHERKEY; i++) + { + if (keymap[i].type != ISFUNC || keymap[i].function) + return 0; + } + return 1; +} + /* Return a new keymap which is a copy of MAP. Just copies pointers, does not copy text of macros or descend into child keymaps. */ Keymap -rl_copy_keymap (map) - Keymap map; +rl_copy_keymap (Keymap map) { register int i; Keymap temp; @@ -99,7 +113,7 @@ rl_copy_keymap (map) the uppercase Meta characters bound to run their lowercase equivalents, and the Meta digits bound to produce numeric arguments. */ Keymap -rl_make_keymap () +rl_make_keymap (void) { register int i; Keymap newmap; @@ -125,8 +139,7 @@ rl_make_keymap () /* Free the storage associated with MAP. */ void -rl_discard_keymap (map) - Keymap map; +rl_discard_keymap (Keymap map) { int i; @@ -154,8 +167,7 @@ rl_discard_keymap (map) /* Convenience function that discards, then frees, MAP. */ void -rl_free_keymap (map) - Keymap map; +rl_free_keymap (Keymap map) { rl_discard_keymap (map); xfree ((char *)map); diff --git a/lib/readline/keymaps.h b/lib/readline/keymaps.h index af8d5d997..1fa853d8c 100644 --- a/lib/readline/keymaps.h +++ b/lib/readline/keymaps.h @@ -90,6 +90,9 @@ extern Keymap rl_get_keymap PARAMS((void)); /* Set the current keymap to MAP. */ extern void rl_set_keymap PARAMS((Keymap)); +/* Set the name of MAP to NAME */ +extern int rl_set_keymap_name PARAMS((const char *, Keymap)); + #ifdef __cplusplus } #endif diff --git a/lib/readline/kill.c b/lib/readline/kill.c index 696f1938f..cf8ca9324 100644 --- a/lib/readline/kill.c +++ b/lib/readline/kill.c @@ -1,6 +1,6 @@ /* kill.c -- kill ring management. */ -/* Copyright (C) 1994-2015 Free Software Foundation, Inc. +/* Copyright (C) 1994-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -78,8 +78,7 @@ static int rl_yank_nth_arg_internal PARAMS((int, int, int)); /* How to say that you only want to save a certain amount of kill material. */ int -rl_set_retained_kills (num) - int num; +rl_set_retained_kills (int num) { return 0; } @@ -89,9 +88,7 @@ rl_set_retained_kills (num) non-zero, and the last command was a kill, the text is appended to the current kill ring slot, otherwise prepended. */ static int -_rl_copy_to_kill_ring (text, append) - char *text; - int append; +_rl_copy_to_kill_ring (char *text, int append) { char *old, *new; int slot; @@ -122,7 +119,7 @@ _rl_copy_to_kill_ring (text, append) else { slot = rl_kill_ring_length += 1; - rl_kill_ring = (char **)xrealloc (rl_kill_ring, slot * sizeof (char *)); + rl_kill_ring = (char **)xrealloc (rl_kill_ring, (slot + 1) * sizeof (char *)); } rl_kill_ring[--slot] = (char *)NULL; } @@ -131,7 +128,7 @@ _rl_copy_to_kill_ring (text, append) slot = rl_kill_ring_length - 1; /* If the last command was a kill, prepend or append. */ - if (_rl_last_command_was_kill && rl_editing_mode != vi_mode) + if (_rl_last_command_was_kill && rl_kill_ring[slot] && rl_editing_mode != vi_mode) { old = rl_kill_ring[slot]; new = (char *)xmalloc (1 + strlen (old) + strlen (text)); @@ -163,8 +160,7 @@ _rl_copy_to_kill_ring (text, append) last command was not a kill command, then a new slot is made for this kill. */ int -rl_kill_text (from, to) - int from, to; +rl_kill_text (int from, int to) { char *text; @@ -198,8 +194,7 @@ rl_kill_text (from, to) /* Delete the word at point, saving the text in the kill ring. */ int -rl_kill_word (count, key) - int count, key; +rl_kill_word (int count, int key) { int orig_point; @@ -222,17 +217,16 @@ rl_kill_word (count, key) /* Rubout the word before point, placing it on the kill ring. */ int -rl_backward_kill_word (count, ignore) - int count, ignore; +rl_backward_kill_word (int count, int key) { int orig_point; if (count < 0) - return (rl_kill_word (-count, ignore)); + return (rl_kill_word (-count, key)); else { orig_point = rl_point; - rl_backward_word (count, ignore); + rl_backward_word (count, key); if (rl_point != orig_point) rl_kill_text (orig_point, rl_point); @@ -246,17 +240,16 @@ rl_backward_kill_word (count, ignore) /* Kill from here to the end of the line. If DIRECTION is negative, kill back to the line start instead. */ int -rl_kill_line (direction, ignore) - int direction, ignore; +rl_kill_line (int direction, int key) { int orig_point; if (direction < 0) - return (rl_backward_kill_line (1, ignore)); + return (rl_backward_kill_line (1, key)); else { orig_point = rl_point; - rl_end_of_line (1, ignore); + rl_end_of_line (1, key); if (orig_point != rl_point) rl_kill_text (orig_point, rl_point); rl_point = orig_point; @@ -269,13 +262,12 @@ rl_kill_line (direction, ignore) /* Kill backwards to the start of the line. If DIRECTION is negative, kill forwards to the line end instead. */ int -rl_backward_kill_line (direction, ignore) - int direction, ignore; +rl_backward_kill_line (int direction, int key) { int orig_point; if (direction < 0) - return (rl_kill_line (1, ignore)); + return (rl_kill_line (1, key)); else { if (rl_point == 0) @@ -283,7 +275,7 @@ rl_backward_kill_line (direction, ignore) else { orig_point = rl_point; - rl_beg_of_line (1, ignore); + rl_beg_of_line (1, key); if (rl_point != orig_point) rl_kill_text (orig_point, rl_point); if (rl_editing_mode == emacs_mode) @@ -295,8 +287,7 @@ rl_backward_kill_line (direction, ignore) /* Kill the whole line, no matter where point is. */ int -rl_kill_full_line (count, ignore) - int count, ignore; +rl_kill_full_line (int count, int key) { rl_begin_undo_group (); rl_point = 0; @@ -313,8 +304,7 @@ rl_kill_full_line (count, ignore) /* This does what C-w does in Unix. We can't prevent people from using behaviour that they expect. */ int -rl_unix_word_rubout (count, key) - int count, key; +rl_unix_word_rubout (int count, int key) { int orig_point; @@ -332,7 +322,7 @@ rl_unix_word_rubout (count, key) rl_point--; while (rl_point && (whitespace (rl_line_buffer[rl_point - 1]) == 0)) - rl_point--; + rl_point--; /* XXX - multibyte? */ } rl_kill_text (orig_point, rl_point); @@ -346,8 +336,7 @@ rl_unix_word_rubout (count, key) /* This deletes one filename component in a Unix pathname. That is, it deletes backward to directory separator (`/') or whitespace. */ int -rl_unix_filename_rubout (count, key) - int count, key; +rl_unix_filename_rubout (int count, int key) { int orig_point, c; @@ -370,7 +359,7 @@ rl_unix_filename_rubout (count, key) while (rl_point && (whitespace (c) == 0) && c != '/') { - rl_point--; + rl_point--; /* XXX - multibyte? */ c = rl_line_buffer[rl_point - 1]; } } @@ -390,8 +379,7 @@ rl_unix_filename_rubout (count, key) into the line at all, and if you aren't, then you know what you are doing. */ int -rl_unix_line_discard (count, key) - int count, key; +rl_unix_line_discard (int count, int key) { if (rl_point == 0) rl_ding (); @@ -408,8 +396,7 @@ rl_unix_line_discard (count, key) /* Copy the text in the `region' to the kill ring. If DELETE is non-zero, delete the text from the line as well. */ static int -region_kill_internal (delete) - int delete; +region_kill_internal (int delete) { char *text; @@ -427,16 +414,14 @@ region_kill_internal (delete) /* Copy the text in the region to the kill ring. */ int -rl_copy_region_to_kill (count, ignore) - int count, ignore; +rl_copy_region_to_kill (int count, int key) { return (region_kill_internal (0)); } /* Kill the text between the point and mark. */ int -rl_kill_region (count, ignore) - int count, ignore; +rl_kill_region (int count, int key) { int r, npoint; @@ -450,8 +435,7 @@ rl_kill_region (count, ignore) /* Copy COUNT words to the kill ring. DIR says which direction we look to find the words. */ static int -_rl_copy_word_as_kill (count, dir) - int count, dir; +_rl_copy_word_as_kill (int count, int dir) { int om, op, r; @@ -479,8 +463,7 @@ _rl_copy_word_as_kill (count, dir) } int -rl_copy_forward_word (count, key) - int count, key; +rl_copy_forward_word (int count, int key) { if (count < 0) return (rl_copy_backward_word (-count, key)); @@ -489,8 +472,7 @@ rl_copy_forward_word (count, key) } int -rl_copy_backward_word (count, key) - int count, key; +rl_copy_backward_word (int count, int key) { if (count < 0) return (rl_copy_forward_word (-count, key)); @@ -500,8 +482,7 @@ rl_copy_backward_word (count, key) /* Yank back the last killed text. This ignores arguments. */ int -rl_yank (count, ignore) - int count, ignore; +rl_yank (int count, int key) { if (rl_kill_ring == 0) { @@ -519,8 +500,7 @@ rl_yank (count, ignore) delete that text from the line, rotate the index down, and yank back some other text. */ int -rl_yank_pop (count, key) - int count, key; +rl_yank_pop (int count, int key) { int l, n; @@ -552,8 +532,7 @@ rl_yank_pop (count, key) #if defined (VI_MODE) int -rl_vi_yank_pop (count, key) - int count, key; +rl_vi_yank_pop (int count, int key) { int l, n; @@ -587,8 +566,7 @@ rl_vi_yank_pop (count, key) /* Yank the COUNTh argument from the previous history line, skipping HISTORY_SKIP lines before looking for the `previous line'. */ static int -rl_yank_nth_arg_internal (count, ignore, history_skip) - int count, ignore, history_skip; +rl_yank_nth_arg_internal (int count, int key, int history_skip) { register HIST_ENTRY *entry; char *arg; @@ -629,7 +607,7 @@ rl_yank_nth_arg_internal (count, ignore, history_skip) inserts it right *after* rl_point. */ if (rl_editing_mode == vi_mode) { - rl_vi_append_mode (1, ignore); + rl_vi_append_mode (1, key); rl_insert_text (" "); } #endif /* VI_MODE */ @@ -643,18 +621,16 @@ rl_yank_nth_arg_internal (count, ignore, history_skip) /* Yank the COUNTth argument from the previous history line. */ int -rl_yank_nth_arg (count, ignore) - int count, ignore; +rl_yank_nth_arg (int count, int key) { - return (rl_yank_nth_arg_internal (count, ignore, 0)); + return (rl_yank_nth_arg_internal (count, key, 0)); } /* Yank the last argument from the previous history line. This `knows' how rl_yank_nth_arg treats a count of `$'. With an argument, this behaves the same as rl_yank_nth_arg. */ int -rl_yank_last_arg (count, key) - int count, key; +rl_yank_last_arg (int count, int key) { static int history_skip = 0; static int explicit_arg_p = 0; @@ -694,17 +670,16 @@ rl_yank_last_arg (count, key) `bracketed paste' sequence, read the rest of the pasted input until the closing sequence and insert the pasted text as a single unit without interpretation. */ -int -rl_bracketed_paste_begin (count, key) - int count, key; +char * +_rl_bracketed_text (size_t *lenp) { - int retval, c; + int c; size_t len, cap; char *buf; - retval = 1; len = 0; buf = xmalloc (cap = 64); + buf[0] = '\0'; RL_SETSTATE (RL_STATE_MOREINPUT); while ((c = rl_read_key ()) >= 0) @@ -733,20 +708,33 @@ rl_bracketed_paste_begin (count, key) if (len == cap) buf = xrealloc (buf, cap + 1); buf[len] = '\0'; - retval = rl_insert_text (buf); } + if (lenp) + *lenp = len; + return (buf); +} + +int +rl_bracketed_paste_begin (int count, int key) +{ + int retval, c; + size_t len, cap; + char *buf; + + buf = _rl_bracketed_text (&len); + retval = rl_insert_text (buf) == len ? 0 : 1; + xfree (buf); return (retval); } -/* A special paste command for Windows users.. */ +/* A special paste command for Windows users. */ #if defined (_WIN32) #include int -rl_paste_from_clipboard (count, key) - int count, key; +rl_paste_from_clipboard (int count, int key) { char *data, *ptr; int len; diff --git a/lib/readline/macro.c b/lib/readline/macro.c index c7017cc6b..92cc55c36 100644 --- a/lib/readline/macro.c +++ b/lib/readline/macro.c @@ -1,6 +1,6 @@ /* macro.c -- keyboard macros for readline. */ -/* Copyright (C) 1994-2009 Free Software Foundation, Inc. +/* Copyright (C) 1994-2009,2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -49,6 +49,8 @@ #include "rlprivate.h" #include "xmalloc.h" +#define MAX_MACRO_LEVEL 16 + /* **************************************************************** */ /* */ /* Hacking Keyboard Macros */ @@ -83,13 +85,24 @@ struct saved_macro { /* The list of saved macros. */ static struct saved_macro *macro_list = (struct saved_macro *)NULL; +static int macro_level = 0; + /* Set up to read subsequent input from STRING. STRING is free ()'ed when we are done with it. */ void -_rl_with_macro_input (string) - char *string; +_rl_with_macro_input (char *string) { - _rl_push_executing_macro (); + if (macro_level > MAX_MACRO_LEVEL) + { + _rl_errmsg ("maximum macro execution nesting level exceeded"); + _rl_abort_internal (); + return; + } + +#if 0 + if (rl_executing_macro) /* XXX - later */ +#endif + _rl_push_executing_macro (); rl_executing_macro = string; executing_macro_index = 0; RL_SETSTATE(RL_STATE_MACROINPUT); @@ -98,7 +111,7 @@ _rl_with_macro_input (string) /* Return the next character available from a macro, or 0 if there are no macro characters. */ int -_rl_next_macro_key () +_rl_next_macro_key (void) { int c; @@ -117,12 +130,26 @@ _rl_next_macro_key () _rl_pop_executing_macro (); return c; #else + /* XXX - consider doing the same as the callback code, just not testing + whether we're running in callback mode */ return (rl_executing_macro[executing_macro_index++]); #endif } int -_rl_prev_macro_key () +_rl_peek_macro_key (void) +{ + if (rl_executing_macro == 0) + return (0); + if (rl_executing_macro[executing_macro_index] == 0 && (macro_list == 0 || macro_list->string == 0)) + return (0); + if (rl_executing_macro[executing_macro_index] == 0 && macro_list && macro_list->string) + return (macro_list->string[0]); + return (rl_executing_macro[executing_macro_index]); +} + +int +_rl_prev_macro_key (void) { if (rl_executing_macro == 0) return (0); @@ -136,7 +163,7 @@ _rl_prev_macro_key () /* Save the currently executing macro on a stack of saved macros. */ void -_rl_push_executing_macro () +_rl_push_executing_macro (void) { struct saved_macro *saver; @@ -146,12 +173,14 @@ _rl_push_executing_macro () saver->string = rl_executing_macro; macro_list = saver; + + macro_level++; } /* Discard the current macro, replacing it with the one on the top of the stack of saved macros. */ void -_rl_pop_executing_macro () +_rl_pop_executing_macro (void) { struct saved_macro *macro; @@ -168,14 +197,15 @@ _rl_pop_executing_macro () xfree (macro); } + macro_level--; + if (rl_executing_macro == 0) RL_UNSETSTATE(RL_STATE_MACROINPUT); } /* Add a character to the macro being built. */ void -_rl_add_macro_char (c) - int c; +_rl_add_macro_char (int c) { if (current_macro_index + 1 >= current_macro_size) { @@ -190,7 +220,7 @@ _rl_add_macro_char (c) } void -_rl_kill_kbd_macro () +_rl_kill_kbd_macro (void) { if (current_macro) { @@ -213,8 +243,7 @@ _rl_kill_kbd_macro () definition to the end of the existing macro, and start by re-executing the existing macro. */ int -rl_start_kbd_macro (ignore1, ignore2) - int ignore1, ignore2; +rl_start_kbd_macro (int ignore1, int ignore2) { if (RL_ISSTATE (RL_STATE_MACRODEF)) { @@ -238,8 +267,7 @@ rl_start_kbd_macro (ignore1, ignore2) A numeric argument says to execute the macro right now, that many times, counting the definition as the first time. */ int -rl_end_kbd_macro (count, ignore) - int count, ignore; +rl_end_kbd_macro (int count, int ignore) { if (RL_ISSTATE (RL_STATE_MACRODEF) == 0) { @@ -258,8 +286,7 @@ rl_end_kbd_macro (count, ignore) /* Execute the most recently defined keyboard macro. COUNT says how many times to execute it. */ int -rl_call_last_kbd_macro (count, ignore) - int count, ignore; +rl_call_last_kbd_macro (int count, int ignore) { if (current_macro == 0) _rl_abort_internal (); @@ -277,8 +304,7 @@ rl_call_last_kbd_macro (count, ignore) } int -rl_print_last_kbd_macro (count, ignore) - int count, ignore; +rl_print_last_kbd_macro (int count, int ignore) { char *m; @@ -300,8 +326,7 @@ rl_print_last_kbd_macro (count, ignore) } void -rl_push_macro_input (macro) - char *macro; +rl_push_macro_input (char *macro) { _rl_with_macro_input (macro); } diff --git a/lib/readline/mbutil.c b/lib/readline/mbutil.c index 314a49b64..17716357f 100644 --- a/lib/readline/mbutil.c +++ b/lib/readline/mbutil.c @@ -1,6 +1,6 @@ /* mbutil.c -- readline multibyte character utility functions */ -/* Copyright (C) 2001-2015 Free Software Foundation, Inc. +/* Copyright (C) 2001-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -75,10 +75,59 @@ int _rl_utf8locale = 0; #if defined(HANDLE_MULTIBYTE) +/* **************************************************************** */ +/* */ +/* UTF-8 specific Character Utility Functions */ +/* */ +/* **************************************************************** */ + +/* Return the length in bytes of the possibly-multibyte character beginning + at S. Encoding is UTF-8. */ +static int +_rl_utf8_mblen (const char *s, size_t n) +{ + unsigned char c, c1; + + if (s == 0) + return (0); /* no shift states */ + if (n <= 0) + return (-1); + + c = (unsigned char)*s; + if (c < 0x80) + return (c != 0); + if (c >= 0xc2) + { + c1 = (unsigned char)s[1]; + if (c < 0xe0) + { + if (n >= 2 && (s[1] ^ 0x80) < 0x40) + return 2; + } + else if (c < 0xf0) + { + if (n >= 3 + && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40 + && (c >= 0xe1 || c1 >= 0xa0) + && (c != 0xed || c1 < 0xa0)) + return 3; + } + else if (c < 0xf8) + { + if (n >= 4 + && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40 + && (s[3] ^ 0x80) < 0x40 + && (c >= 0xf1 || c1 >= 0x90) + && (c < 0xf4 || (c == 0xf4 && c1 < 0x90))) + return 4; + } + } + /* invalid or incomplete multibyte character */ + return -1; +} + static int -_rl_find_next_mbchar_internal (string, seed, count, find_non_zero) - char *string; - int seed, count, find_non_zero; +_rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_zero) { size_t tmp, len; mbstate_t ps; @@ -94,6 +143,11 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero) return seed; point = seed + _rl_adjust_point (string, seed, &ps); + /* if _rl_adjust_point returns -1, the character or string is invalid. + treat as a byte. */ + if (point == seed - 1) /* invalid */ + return seed + 1; + /* if this is true, means that seed was not pointing to a byte indicating the beginning of a multibyte character. Correct the point and consume one char. */ @@ -105,7 +159,14 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero) len = strlen (string + point); if (len == 0) break; - tmp = mbrtowc (&wc, string+point, len, &ps); + if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point])) + { + tmp = 1; + wc = (wchar_t) string[point]; + memset(&ps, 0, sizeof(mbstate_t)); + } + else + tmp = mbrtowc (&wc, string+point, len, &ps); if (MB_INVALIDCH ((size_t)tmp)) { /* invalid bytes. assume a byte represents a character */ @@ -146,9 +207,7 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero) } /*static*/ int -_rl_find_prev_mbchar_internal (string, seed, find_non_zero) - char *string; - int seed, find_non_zero; +_rl_find_prev_mbchar_internal (char *string, int seed, int find_non_zero) { mbstate_t ps; int prev, non_zero_prev, point, length; @@ -166,10 +225,17 @@ _rl_find_prev_mbchar_internal (string, seed, find_non_zero) prev = non_zero_prev = point = 0; while (point < seed) { - tmp = mbrtowc (&wc, string + point, length - point, &ps); + if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point])) + { + tmp = 1; + wc = (wchar_t) string[point]; + memset(&ps, 0, sizeof(mbstate_t)); + } + else + tmp = mbrtowc (&wc, string + point, length - point, &ps); if (MB_INVALIDCH ((size_t)tmp)) { - /* in this case, bytes are invalid or shorted to compose + /* in this case, bytes are invalid or too short to compose multibyte char, so assume that the first byte represents a single character anyway. */ tmp = 1; @@ -206,16 +272,23 @@ _rl_find_prev_mbchar_internal (string, seed, find_non_zero) if an invalid multibyte sequence was encountered. It returns (size_t)(-2) if it couldn't parse a complete multibyte character. */ int -_rl_get_char_len (src, ps) - char *src; - mbstate_t *ps; +_rl_get_char_len (char *src, mbstate_t *ps) { - size_t tmp; + size_t tmp, l; + int mb_cur_max; - tmp = mbrlen((const char *)src, (size_t)strlen (src), ps); + /* Look at no more than MB_CUR_MAX characters */ + l = (size_t)strlen (src); + if (_rl_utf8locale && l > 0 && UTF8_SINGLEBYTE(*src)) + tmp = (*src != 0) ? 1 : 0; + else + { + mb_cur_max = MB_CUR_MAX; + tmp = mbrlen((const char *)src, (l < mb_cur_max) ? l : mb_cur_max, ps); + } if (tmp == (size_t)(-2)) { - /* shorted to compose multibyte char */ + /* too short to compose multibyte char */ if (ps) memset (ps, 0, sizeof(mbstate_t)); return -2; @@ -237,13 +310,7 @@ _rl_get_char_len (src, ps) /* compare the specified two characters. If the characters matched, return 1. Otherwise return 0. */ int -_rl_compare_chars (buf1, pos1, ps1, buf2, pos2, ps2) - char *buf1; - int pos1; - mbstate_t *ps1; - char *buf2; - int pos2; - mbstate_t *ps2; +_rl_compare_chars (char *buf1, int pos1, mbstate_t *ps1, char *buf2, int pos2, mbstate_t *ps2) { int i, w1, w2; @@ -263,18 +330,16 @@ _rl_compare_chars (buf1, pos1, ps1, buf2, pos2, ps2) /* adjust pointed byte and find mbstate of the point of string. adjusted point will be point <= adjusted_point, and returns differences of the byte(adjusted_point - point). - if point is invalied (point < 0 || more than string length), + if point is invalid (point < 0 || more than string length), it returns -1 */ int -_rl_adjust_point (string, point, ps) - char *string; - int point; - mbstate_t *ps; +_rl_adjust_point (char *string, int point, mbstate_t *ps) { - size_t tmp = 0; - int length; - int pos = 0; + size_t tmp; + int length, pos; + tmp = 0; + pos = 0; length = strlen(string); if (point < 0) return -1; @@ -283,10 +348,13 @@ _rl_adjust_point (string, point, ps) while (pos < point) { - tmp = mbrlen (string + pos, length - pos, ps); + if (_rl_utf8locale && UTF8_SINGLEBYTE(string[pos])) + tmp = 1; + else + tmp = mbrlen (string + pos, length - pos, ps); if (MB_INVALIDCH ((size_t)tmp)) { - /* in this case, bytes are invalid or shorted to compose + /* in this case, bytes are invalid or too short to compose multibyte char, so assume that the first byte represents a single character anyway. */ pos++; @@ -305,11 +373,7 @@ _rl_adjust_point (string, point, ps) } int -_rl_is_mbchar_matched (string, seed, end, mbchar, length) - char *string; - int seed, end; - char *mbchar; - int length; +_rl_is_mbchar_matched (char *string, int seed, int end, char *mbchar, int length) { int i; @@ -323,9 +387,7 @@ _rl_is_mbchar_matched (string, seed, end, mbchar, length) } wchar_t -_rl_char_value (buf, ind) - char *buf; - int ind; +_rl_char_value (char *buf, int ind) { size_t tmp; wchar_t wc; @@ -334,9 +396,13 @@ _rl_char_value (buf, ind) if (MB_LEN_MAX == 1 || rl_byte_oriented) return ((wchar_t) buf[ind]); + if (_rl_utf8locale && UTF8_SINGLEBYTE(buf[ind])) + return ((wchar_t) buf[ind]); l = strlen (buf); if (ind >= l - 1) return ((wchar_t) buf[ind]); + if (l < ind) /* Sanity check */ + l = strlen (buf+ind); memset (&ps, 0, sizeof (mbstate_t)); tmp = mbrtowc (&wc, buf + ind, l - ind, &ps); if (MB_INVALIDCH (tmp) || MB_NULLWCH (tmp)) @@ -350,9 +416,7 @@ _rl_char_value (buf, ind) characters. */ #undef _rl_find_next_mbchar int -_rl_find_next_mbchar (string, seed, count, flags) - char *string; - int seed, count, flags; +_rl_find_next_mbchar (char *string, int seed, int count, int flags) { #if defined (HANDLE_MULTIBYTE) return _rl_find_next_mbchar_internal (string, seed, count, flags); @@ -366,9 +430,7 @@ _rl_find_next_mbchar (string, seed, count, flags) we look for non-zero-width multibyte characters. */ #undef _rl_find_prev_mbchar int -_rl_find_prev_mbchar (string, seed, flags) - char *string; - int seed, flags; +_rl_find_prev_mbchar (char *string, int seed, int flags) { #if defined (HANDLE_MULTIBYTE) return _rl_find_prev_mbchar_internal (string, seed, flags); diff --git a/lib/readline/misc.c b/lib/readline/misc.c index f7acdee06..64b1457d2 100644 --- a/lib/readline/misc.c +++ b/lib/readline/misc.c @@ -1,6 +1,6 @@ /* misc.c -- miscellaneous bindable readline functions. */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -76,7 +76,7 @@ int _rl_history_saved_point = -1; /* **************************************************************** */ int -_rl_arg_overflow () +_rl_arg_overflow (void) { if (rl_numeric_arg > 1000000) { @@ -92,7 +92,7 @@ _rl_arg_overflow () } void -_rl_arg_init () +_rl_arg_init (void) { rl_save_prompt (); _rl_argcxt = 0; @@ -100,7 +100,7 @@ _rl_arg_init () } int -_rl_arg_getchar () +_rl_arg_getchar (void) { int c; @@ -116,9 +116,7 @@ _rl_arg_getchar () argument should be aborted, 0 if we should not read any more chars, and 1 if we should continue to read chars. */ int -_rl_arg_dispatch (cxt, c) - _rl_arg_cxt cxt; - int c; +_rl_arg_dispatch (_rl_arg_cxt cxt, int c) { int key, r; @@ -193,7 +191,7 @@ _rl_arg_dispatch (cxt, c) /* Handle C-u style numeric args, as well as M--, and M-digits. */ static int -rl_digit_loop () +rl_digit_loop (void) { int c, r; @@ -220,7 +218,7 @@ rl_digit_loop () /* Create a default argument. */ void -_rl_reset_argument () +_rl_reset_argument (void) { rl_numeric_arg = rl_arg_sign = 1; rl_explicit_arg = 0; @@ -229,8 +227,7 @@ _rl_reset_argument () /* Start a numeric argument with initial value KEY */ int -rl_digit_argument (ignore, key) - int ignore, key; +rl_digit_argument (int ignore, int key) { _rl_arg_init (); if (RL_ISSTATE (RL_STATE_CALLBACK)) @@ -250,8 +247,7 @@ rl_digit_argument (ignore, key) Read a key. If the key has nothing to do with arguments, then dispatch on it. If the key is the abort character then abort. */ int -rl_universal_argument (count, key) - int count, key; +rl_universal_argument (int count, int key) { _rl_arg_init (); rl_numeric_arg *= 4; @@ -260,8 +256,7 @@ rl_universal_argument (count, key) } int -_rl_arg_callback (cxt) - _rl_arg_cxt cxt; +_rl_arg_callback (_rl_arg_cxt cxt) { int c, r; @@ -280,12 +275,14 @@ _rl_arg_callback (cxt) } r = _rl_arg_dispatch (cxt, c); + if (r > 0) + rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg); return (r != 1); } /* What to do when you abort reading an argument. */ int -rl_discard_argument () +rl_discard_argument (void) { rl_ding (); rl_clear_message (); @@ -310,7 +307,7 @@ HIST_ENTRY *_rl_saved_line_for_history = (HIST_ENTRY *)NULL; /* Set the history pointer back to the last entry in the history. */ void -_rl_start_using_history () +_rl_start_using_history (void) { using_history (); if (_rl_saved_line_for_history) @@ -321,8 +318,7 @@ _rl_start_using_history () /* Free the contents (and containing structure) of a HIST_ENTRY. */ void -_rl_free_history_entry (entry) - HIST_ENTRY *entry; +_rl_free_history_entry (HIST_ENTRY *entry) { if (entry == 0) return; @@ -335,7 +331,7 @@ _rl_free_history_entry (entry) /* Perhaps put back the current line if it has changed. */ int -rl_maybe_replace_line () +rl_maybe_replace_line (void) { HIST_ENTRY *temp; @@ -353,7 +349,7 @@ rl_maybe_replace_line () /* Restore the _rl_saved_line_for_history if there is one. */ int -rl_maybe_unsave_line () +rl_maybe_unsave_line (void) { if (_rl_saved_line_for_history) { @@ -372,7 +368,7 @@ rl_maybe_unsave_line () /* Save the current line in _rl_saved_line_for_history. */ int -rl_maybe_save_line () +rl_maybe_save_line (void) { if (_rl_saved_line_for_history == 0) { @@ -386,7 +382,7 @@ rl_maybe_save_line () } int -_rl_free_saved_history_line () +_rl_free_saved_history_line (void) { if (_rl_saved_line_for_history) { @@ -397,7 +393,7 @@ _rl_free_saved_history_line () } static void -_rl_history_set_point () +_rl_history_set_point (void) { rl_point = (_rl_history_preserve_point && _rl_history_saved_point != -1) ? _rl_history_saved_point @@ -415,9 +411,7 @@ _rl_history_set_point () } void -rl_replace_from_history (entry, flags) - HIST_ENTRY *entry; - int flags; /* currently unused */ +rl_replace_from_history (HIST_ENTRY *entry, int flags) { /* Can't call with `1' because rl_undo_list might point to an undo list from a history entry, just like we're setting up here. */ @@ -441,7 +435,7 @@ rl_replace_from_history (entry, flags) intended to be called while actively editing, and the current line is not assumed to have been added to the history list. */ void -_rl_revert_all_lines () +_rl_revert_all_lines (void) { int hpos; HIST_ENTRY *entry; @@ -490,7 +484,7 @@ _rl_revert_all_lines () to an UNDO_LIST * saved as some history entry's data member. This should not be called while editing is active. */ void -rl_clear_history () +rl_clear_history (void) { HIST_ENTRY **hlist, *hent; register int i; @@ -524,16 +518,14 @@ rl_clear_history () /* Meta-< goes to the start of the history. */ int -rl_beginning_of_history (count, key) - int count, key; +rl_beginning_of_history (int count, int key) { return (rl_get_previous_history (1 + where_history (), key)); } /* Meta-> goes to the end of the history. (The current line). */ int -rl_end_of_history (count, key) - int count, key; +rl_end_of_history (int count, int key) { rl_maybe_replace_line (); using_history (); @@ -543,8 +535,7 @@ rl_end_of_history (count, key) /* Move down to the next history line. */ int -rl_get_next_history (count, key) - int count, key; +rl_get_next_history (int count, int key) { HIST_ENTRY *temp; @@ -582,15 +573,14 @@ rl_get_next_history (count, key) /* Get the previous item out of our interactive history, making it the current line. If there is no previous history, just ding. */ int -rl_get_previous_history (count, key) - int count, key; +rl_get_previous_history (int count, int key) { HIST_ENTRY *old_temp, *temp; if (count < 0) return (rl_get_next_history (-count, key)); - if (count == 0) + if (count == 0 || history_list () == 0) return 0; /* either not saved by rl_newline or at end of line, so set appropriately. */ @@ -620,7 +610,10 @@ rl_get_previous_history (count, key) temp = old_temp; if (temp == 0) - rl_ding (); + { + rl_maybe_unsave_line (); + rl_ding (); + } else { rl_replace_from_history (temp, 0); @@ -637,8 +630,7 @@ rl_get_previous_history (count, key) /* **************************************************************** */ /* How to toggle back and forth between editing modes. */ int -rl_vi_editing_mode (count, key) - int count, key; +rl_vi_editing_mode (int count, int key) { #if defined (VI_MODE) _rl_set_insert_mode (RL_IM_INSERT, 1); /* vi mode ignores insert mode */ @@ -650,8 +642,7 @@ rl_vi_editing_mode (count, key) } int -rl_emacs_editing_mode (count, key) - int count, key; +rl_emacs_editing_mode (int count, int key) { rl_editing_mode = emacs_mode; _rl_set_insert_mode (RL_IM_INSERT, 1); /* emacs mode default is insert mode */ @@ -665,8 +656,7 @@ rl_emacs_editing_mode (count, key) /* Function for the rest of the library to use to set insert/overwrite mode. */ void -_rl_set_insert_mode (im, force) - int im, force; +_rl_set_insert_mode (int im, int force) { #ifdef CURSOR_MODE _rl_set_cursor (im, force); @@ -678,8 +668,7 @@ _rl_set_insert_mode (im, force) /* Toggle overwrite mode. A positive explicit argument selects overwrite mode. A negative or zero explicit argument selects insert mode. */ int -rl_overwrite_mode (count, key) - int count, key; +rl_overwrite_mode (int count, int key) { if (rl_explicit_arg == 0) _rl_set_insert_mode (rl_insert_mode ^ 1, 0); diff --git a/lib/readline/nls.c b/lib/readline/nls.c index d3b36344f..d2f67e0d3 100644 --- a/lib/readline/nls.c +++ b/lib/readline/nls.c @@ -1,6 +1,6 @@ /* nls.c -- skeletal internationalization code. */ -/* Copyright (C) 1996-2009 Free Software Foundation, Inc. +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -74,6 +74,7 @@ static char *legal_lang_values[] = "iso88599", "iso885910", "koi8r", + "utf8", 0 }; @@ -85,8 +86,7 @@ static char *find_codeset PARAMS((char *, size_t *)); static char *_rl_get_locale_var PARAMS((const char *)); static char * -_rl_get_locale_var (v) - const char *v; +_rl_get_locale_var (const char *v) { char *lspec; @@ -100,8 +100,7 @@ _rl_get_locale_var (v) } static int -utf8locale (lspec) - char *lspec; +utf8locale (char *lspec) { char *cp; size_t len; @@ -118,16 +117,12 @@ utf8locale (lspec) #endif } -/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value - to decide the defaults for 8-bit character input and output. Returns - 1 if we set eight-bit mode. */ -int -_rl_init_eightbit () +/* Query the right environment variables and call setlocale() to initialize + the C library locale settings. */ +char * +_rl_init_locale (void) { -/* If we have setlocale(3), just check the current LC_CTYPE category - value, and go into eight-bit mode if it's not C or POSIX. */ -#if defined (HAVE_SETLOCALE) - char *lspec, *t; + char *ret, *lspec; /* Set the LC_CTYPE locale category from environment variables. */ lspec = _rl_get_locale_var ("LC_CTYPE"); @@ -140,10 +135,25 @@ _rl_init_eightbit () lspec = setlocale (LC_CTYPE, (char *)NULL); if (lspec == 0) lspec = ""; - t = setlocale (LC_CTYPE, lspec); + ret = setlocale (LC_CTYPE, lspec); /* ok, since it does not change locale */ + + _rl_utf8locale = (ret && *ret) ? utf8locale (ret) : 0; + + return ret; +} + +/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value + to decide the defaults for 8-bit character input and output. Returns + 1 if we set eight-bit mode. */ +int +_rl_init_eightbit (void) +{ +/* If we have setlocale(3), just check the current LC_CTYPE category + value, and go into eight-bit mode if it's not C or POSIX. */ +#if defined (HAVE_SETLOCALE) + char *lspec, *t; - if (t && *t) - _rl_utf8locale = utf8locale (t); + t = _rl_init_locale (); /* returns static pointer */ if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0)) { @@ -174,16 +184,17 @@ _rl_init_eightbit () _rl_output_meta_chars = 1; break; } + + _rl_utf8locale = *t ? STREQ (t, "utf8") : 0; + xfree (t); return (legal_lang_values[i] ? 1 : 0); - #endif /* !HAVE_SETLOCALE */ } #if !defined (HAVE_SETLOCALE) static char * -normalize_codeset (codeset) - char *codeset; +normalize_codeset (char *codeset) { size_t namelen, i; int len, all_digits; @@ -230,9 +241,7 @@ normalize_codeset (codeset) /* Isolate codeset portion of locale specification. */ static char * -find_codeset (name, lenp) - char *name; - size_t *lenp; +find_codeset (char *name, size_t *lenp) { char *cp, *language, *result; diff --git a/lib/readline/parens.c b/lib/readline/parens.c index ecc465c00..af4797736 100644 --- a/lib/readline/parens.c +++ b/lib/readline/parens.c @@ -1,6 +1,6 @@ /* parens.c -- implementation of matching parentheses feature. */ -/* Copyright (C) 1987, 1989, 1992-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987, 1989, 1992-2015, 2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -64,8 +64,7 @@ static int _paren_blink_usec = 500000; /* Change emacs_standard_keymap to have bindings for paren matching when ON_OR_OFF is 1, change them back to self_insert when ON_OR_OFF == 0. */ void -_rl_enable_paren_matching (on_or_off) - int on_or_off; +_rl_enable_paren_matching (int on_or_off) { if (on_or_off) { @@ -98,8 +97,7 @@ _rl_enable_paren_matching (on_or_off) } int -rl_set_paren_blink_timeout (u) - int u; +rl_set_paren_blink_timeout (int u) { int o; @@ -110,8 +108,7 @@ rl_set_paren_blink_timeout (u) } int -rl_insert_close (count, invoking_key) - int count, invoking_key; +rl_insert_close (int count, int invoking_key) { if (rl_explicit_arg || !rl_blink_matching_paren) _rl_insert_char (count, invoking_key); @@ -148,9 +145,7 @@ rl_insert_close (count, invoking_key) } static int -find_matching_open (string, from, closer) - char *string; - int from, closer; +find_matching_open (char *string, int from, int closer) { register int i; int opener, level, delimiter; diff --git a/lib/readline/parse-colors.c b/lib/readline/parse-colors.c index 98b2e9d10..05ec9bc36 100644 --- a/lib/readline/parse-colors.c +++ b/lib/readline/parse-colors.c @@ -2,8 +2,8 @@ Modified by Chet Ramey for Readline. - Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012 Free Software Foundation, - Inc. + Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2017 + Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -297,7 +297,7 @@ get_funky_string (char **dest, const char **src, bool equals_end, size_t *output } #endif /* COLOR_SUPPORT */ -void _rl_parse_colors() +void _rl_parse_colors(void) { #if defined (COLOR_SUPPORT) const char *p; /* Pointer to character being parsed */ diff --git a/lib/readline/readline.c b/lib/readline/readline.c index a05b35e5d..678f989c5 100644 --- a/lib/readline/readline.c +++ b/lib/readline/readline.c @@ -1,7 +1,7 @@ /* readline.c -- a general facility for reading lines of input with emacs style editing and completion. */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -214,6 +214,9 @@ int _rl_eof_char = CTRL ('D'); /* Non-zero makes this the next keystroke to read. */ int rl_pending_input = 0; +/* If non-zero when readline_internal returns, it means we found EOF */ +int _rl_eof_found = 0; + /* Pointer to a useful terminal name. */ const char *rl_terminal_name = (const char *)NULL; @@ -222,7 +225,7 @@ int _rl_horizontal_scroll_mode = 0; /* Non-zero means to display an asterisk at the starts of history lines which have been modified. */ -int _rl_mark_modified_lines = 0; +int _rl_mark_modified_lines = 0; /* The style of `bell' notification preferred. This can be set to NO_BELL, AUDIBLE_BELL, or VISIBLE_BELL. */ @@ -242,7 +245,7 @@ int rl_erase_empty_line = 0; /* Non-zero means to read only this many characters rather than up to a character bound to accept-line. */ -int rl_num_chars_to_read; +int rl_num_chars_to_read = 0; /* Line buffer and maintenance. */ char *rl_line_buffer = (char *)NULL; @@ -325,8 +328,7 @@ int _rl_meta_flag = 0; /* Forward declaration */ /* Set up the prompt and expand it. Called from readline() and rl_callback_handler_install (). */ int -rl_set_prompt (prompt) - const char *prompt; +rl_set_prompt (const char *prompt) { FREE (rl_prompt); rl_prompt = prompt ? savestring (prompt) : (char *)NULL; @@ -339,8 +341,7 @@ rl_set_prompt (prompt) /* Read a line of input. Prompt with PROMPT. An empty PROMPT means none. A return value of NULL means that EOF was encountered. */ char * -readline (prompt) - const char *prompt; +readline (const char *prompt) { char *value; #if 0 @@ -401,7 +402,7 @@ readline (prompt) #endif STATIC_CALLBACK void -readline_internal_setup () +readline_internal_setup (void) { char *nprompt; @@ -419,7 +420,10 @@ readline_internal_setup () #if defined (VI_MODE) if (rl_editing_mode == vi_mode) rl_vi_insertion_mode (1, 'i'); /* don't want to reset last */ + else #endif /* VI_MODE */ + if (_rl_show_mode_in_prompt) + _rl_reset_prompt (); /* If we're not echoing, we still want to at least print a prompt, because rl_redisplay will not do it for us. If the calling application has a @@ -450,8 +454,7 @@ readline_internal_setup () } STATIC_CALLBACK char * -readline_internal_teardown (eof) - int eof; +readline_internal_teardown (int eof) { char *temp; HIST_ENTRY *entry; @@ -493,7 +496,7 @@ readline_internal_teardown (eof) } void -_rl_internal_char_cleanup () +_rl_internal_char_cleanup (void) { #if defined (VI_MODE) /* In vi mode, when you exit insert mode, the cursor moves back @@ -524,13 +527,13 @@ _rl_internal_char_cleanup () STATIC_CALLBACK int #if defined (READLINE_CALLBACKS) -readline_internal_char () +readline_internal_char (void) #else -readline_internal_charloop () +readline_internal_charloop (void) #endif { static int lastc, eof_found; - int c, code, lk; + int c, code, lk, r; lastc = EOF; @@ -626,7 +629,7 @@ readline_internal_charloop () } lastc = c; - _rl_dispatch ((unsigned char)c, _rl_keymap); + r = _rl_dispatch ((unsigned char)c, _rl_keymap); RL_CHECK_SIGNALS (); /* If there was no change in _rl_last_command_was_kill, then no kill @@ -648,7 +651,7 @@ readline_internal_charloop () #if defined (READLINE_CALLBACKS) static int -readline_internal_charloop () +readline_internal_charloop (void) { int eof = 1; @@ -662,17 +665,15 @@ readline_internal_charloop () the global rl_outstream. If rl_prompt is non-null, then that is our prompt. */ static char * -readline_internal () +readline_internal (void) { - int eof; - readline_internal_setup (); - eof = readline_internal_charloop (); - return (readline_internal_teardown (eof)); + _rl_eof_found = readline_internal_charloop (); + return (readline_internal_teardown (_rl_eof_found)); } void -_rl_init_line_state () +_rl_init_line_state (void) { rl_point = rl_end = rl_mark = 0; the_line = rl_line_buffer; @@ -680,14 +681,14 @@ _rl_init_line_state () } void -_rl_set_the_line () +_rl_set_the_line (void) { the_line = rl_line_buffer; } #if defined (READLINE_CALLBACKS) _rl_keyseq_cxt * -_rl_keyseq_cxt_alloc () +_rl_keyseq_cxt_alloc (void) { _rl_keyseq_cxt *cxt; @@ -703,14 +704,13 @@ _rl_keyseq_cxt_alloc () } void -_rl_keyseq_cxt_dispose (cxt) - _rl_keyseq_cxt *cxt; +_rl_keyseq_cxt_dispose (_rl_keyseq_cxt *cxt) { xfree (cxt); } void -_rl_keyseq_chain_dispose () +_rl_keyseq_chain_dispose (void) { _rl_keyseq_cxt *cxt; @@ -724,8 +724,7 @@ _rl_keyseq_chain_dispose () #endif static int -_rl_subseq_getchar (key) - int key; +_rl_subseq_getchar (int key) { int k; @@ -742,8 +741,7 @@ _rl_subseq_getchar (key) #if defined (READLINE_CALLBACKS) int -_rl_dispatch_callback (cxt) - _rl_keyseq_cxt *cxt; +_rl_dispatch_callback (_rl_keyseq_cxt *cxt) { int nkey, r; @@ -794,19 +792,14 @@ _rl_dispatch_callback (cxt) If the associated command is really a keymap, then read another key, and dispatch into that map. */ int -_rl_dispatch (key, map) - register int key; - Keymap map; +_rl_dispatch (register int key, Keymap map) { _rl_dispatching_keymap = map; return _rl_dispatch_subseq (key, map, 0); } int -_rl_dispatch_subseq (key, map, got_subseq) - register int key; - Keymap map; - int got_subseq; +_rl_dispatch_subseq (register int key, Keymap map, int got_subseq) { int r, newkey; char *macro; @@ -920,6 +913,15 @@ _rl_dispatch_subseq (key, map, got_subseq) _rl_pushed_input_available () == 0 && _rl_input_queued ((_rl_keyseq_timeout > 0) ? _rl_keyseq_timeout*1000 : 0) == 0) return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key))); + /* This is a very specific test. It can possibly be generalized in + the future, but for now it handles a specific case of ESC being + the last character in a keyboard macro. */ + if (rl_editing_mode == vi_mode && key == ESC && map == vi_insertion_keymap && + (RL_ISSTATE (RL_STATE_INPUTPENDING) == 0) && + (RL_ISSTATE (RL_STATE_MACROINPUT) && _rl_peek_macro_key () == 0) && + _rl_pushed_input_available () == 0 && + _rl_input_queued ((_rl_keyseq_timeout > 0) ? _rl_keyseq_timeout*1000 : 0) == 0) + return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key))); #endif RESIZE_KEYSEQ_BUFFER (); @@ -1014,10 +1016,7 @@ _rl_dispatch_subseq (key, map, got_subseq) } static int -_rl_subseq_result (r, map, key, got_subseq) - int r; - Keymap map; - int key, got_subseq; +_rl_subseq_result (int r, Keymap map, int key, int got_subseq) { Keymap m; int type, nt; @@ -1091,11 +1090,11 @@ _rl_subseq_result (r, map, key, got_subseq) /* Initialize readline (and terminal if not already). */ int -rl_initialize () +rl_initialize (void) { /* If we have never been called before, initialize the terminal and data structures. */ - if (!rl_initialized) + if (rl_initialized == 0) { RL_SETSTATE(RL_STATE_INITIALIZING); readline_initialize_everything (); @@ -1103,6 +1102,8 @@ rl_initialize () rl_initialized++; RL_SETSTATE(RL_STATE_INITIALIZED); } + else + (void)_rl_init_locale (); /* check current locale */ /* Initialize the current line information. */ _rl_init_line_state (); @@ -1137,7 +1138,7 @@ rl_initialize () #if 0 #if defined (__EMX__) static void -_emx_build_environ () +_emx_build_environ (void) { TIB *tibp; PIB *pibp; @@ -1162,7 +1163,7 @@ _emx_build_environ () /* Initialize the entire state of the world. */ static void -readline_initialize_everything () +readline_initialize_everything (void) { #if 0 #if defined (__EMX__) @@ -1247,7 +1248,7 @@ readline_initialize_everything () input editing characters, then bind them to their readline equivalents, iff the characters are not bound to keymaps. */ static void -readline_default_bindings () +readline_default_bindings (void) { if (_rl_bind_stty_chars) rl_tty_set_default_bindings (_rl_keymap); @@ -1256,7 +1257,7 @@ readline_default_bindings () /* Reset the default bindings for the terminal special characters we're interested in back to rl_insert and read the new ones. */ static void -reset_default_bindings () +reset_default_bindings (void) { if (_rl_bind_stty_chars) { @@ -1267,8 +1268,7 @@ reset_default_bindings () /* Bind some common arrow key sequences in MAP. */ static void -bind_arrow_keys_internal (map) - Keymap map; +bind_arrow_keys_internal (Keymap map) { Keymap xkeymap; @@ -1296,6 +1296,15 @@ bind_arrow_keys_internal (map) rl_bind_keyseq_if_unbound ("\033OH", rl_beg_of_line); rl_bind_keyseq_if_unbound ("\033OF", rl_end_of_line); + /* Key bindings for control-arrow keys */ + rl_bind_keyseq_if_unbound ("\033[1;5C", rl_forward_word); + rl_bind_keyseq_if_unbound ("\033[1;5D", rl_backward_word); + rl_bind_keyseq_if_unbound ("\033[3;5~", rl_kill_word); + + /* Key bindings for alt-arrow keys */ + rl_bind_keyseq_if_unbound ("\033[1;3C", rl_forward_word); + rl_bind_keyseq_if_unbound ("\033[1;3D", rl_backward_word); + #if defined (__MINGW32__) rl_bind_keyseq_if_unbound ("\340H", rl_get_previous_history); rl_bind_keyseq_if_unbound ("\340P", rl_get_next_history); @@ -1324,7 +1333,7 @@ bind_arrow_keys_internal (map) the inputrc file a chance to bind them and create `real' keymaps for the arrow key prefix. */ static void -bind_arrow_keys () +bind_arrow_keys (void) { bind_arrow_keys_internal (emacs_standard_keymap); @@ -1339,7 +1348,7 @@ bind_arrow_keys () } static void -bind_bracketed_paste_prefix () +bind_bracketed_paste_prefix (void) { Keymap xkeymap; @@ -1361,8 +1370,7 @@ bind_bracketed_paste_prefix () /* **************************************************************** */ int -rl_save_state (sp) - struct readline_state *sp; +rl_save_state (struct readline_state *sp) { if (sp == 0) return -1; @@ -1402,8 +1410,7 @@ rl_save_state (sp) } int -rl_restore_state (sp) - struct readline_state *sp; +rl_restore_state (struct readline_state *sp) { if (sp == 0) return -1; diff --git a/lib/readline/readline.h b/lib/readline/readline.h index 924bbfb0f..da782716a 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. */ @@ -98,6 +98,9 @@ extern int rl_clear_screen PARAMS((int, int)); extern int rl_skip_csi_sequence PARAMS((int, int)); extern int rl_arrow_keys PARAMS((int, int)); +extern int rl_previous_screen_line PARAMS((int, int)); +extern int rl_next_screen_line PARAMS((int, int)); + /* Bindable commands for inserting and deleting text. */ extern int rl_insert PARAMS((int, int)); extern int rl_quoted_insert PARAMS((int, int)); @@ -329,6 +332,7 @@ extern char *rl_untranslate_keyseq PARAMS((int)); extern rl_command_func_t *rl_named_function PARAMS((const char *)); extern rl_command_func_t *rl_function_of_keyseq PARAMS((const char *, Keymap, int *)); +extern rl_command_func_t *rl_function_of_keyseq_len PARAMS((const char *, size_t, Keymap, int *)); extern void rl_list_funmap_names PARAMS((void)); extern char **rl_invoking_keyseqs_in_map PARAMS((rl_command_func_t *, Keymap)); @@ -343,6 +347,7 @@ extern int rl_parse_and_bind PARAMS((char *)); /* Functions for manipulating keymaps. */ extern Keymap rl_make_bare_keymap PARAMS((void)); +extern int rl_empty_keymap PARAMS((Keymap)); extern Keymap rl_copy_keymap PARAMS((Keymap)); extern Keymap rl_make_keymap PARAMS((void)); extern void rl_discard_keymap PARAMS((Keymap)); @@ -352,6 +357,9 @@ extern Keymap rl_get_keymap_by_name PARAMS((const char *)); extern char *rl_get_keymap_name PARAMS((Keymap)); extern void rl_set_keymap PARAMS((Keymap)); extern Keymap rl_get_keymap PARAMS((void)); + +extern int rl_set_keymap_name PARAMS((const char *, Keymap)); + /* Undocumented; used internally only. */ extern void rl_set_keymap_from_edit_mode PARAMS((void)); extern char *rl_get_keymap_name_from_edit_mode PARAMS((void)); @@ -413,6 +421,7 @@ extern void rl_deprep_terminal PARAMS((void)); extern void rl_tty_set_default_bindings PARAMS((Keymap)); extern void rl_tty_unset_default_bindings PARAMS((Keymap)); +extern int rl_tty_set_echoing PARAMS((int)); extern int rl_reset_terminal PARAMS((const char *)); extern void rl_resize_terminal PARAMS((void)); extern void rl_set_screen_size PARAMS((int, int)); @@ -443,6 +452,7 @@ extern void rl_reset_after_signal PARAMS((void)); extern void rl_free_line_state PARAMS((void)); extern int rl_pending_signal PARAMS((void)); +extern void rl_check_signals PARAMS((void)); extern void rl_echo_signal_char PARAMS((int)); diff --git a/lib/readline/rlconf.h b/lib/readline/rlconf.h index 98c970aab..b6d6a2f12 100644 --- a/lib/readline/rlconf.h +++ b/lib/readline/rlconf.h @@ -42,7 +42,7 @@ /* The next-to-last-ditch effort file name for a user-specific init file. */ #define DEFAULT_INPUTRC "~/.inputrc" -/* The ultimate last-ditch filenname for an init file -- system-wide. */ +/* The ultimate last-ditch filename for an init file -- system-wide. */ #define SYS_INPUTRC "/etc/inputrc" /* If defined, expand tabs to spaces. */ diff --git a/lib/readline/rlmbutil.h b/lib/readline/rlmbutil.h index 4748a610b..6fd03f6a0 100644 --- a/lib/readline/rlmbutil.h +++ b/lib/readline/rlmbutil.h @@ -172,6 +172,10 @@ _rl_wcwidth (wc) # define IS_COMBINING_CHAR(x) (WCWIDTH(x) == 0) #endif +#define UTF8_SINGLEBYTE(c) (((c) & 0x80) == 0) +#define UTF8_MBFIRSTCHAR(c) (((c) & 0xc0) == 0xc0) +#define UTF8_MBCHAR(c) (((c) & 0xc0) == 0x80) + #else /* !HANDLE_MULTIBYTE */ #undef MB_LEN_MAX @@ -196,6 +200,12 @@ _rl_wcwidth (wc) #define MB_INVALIDCH(x) (0) #define MB_NULLWCH(x) (0) +#define UTF8_SINGLEBYTE(c) (1) + +#if !defined (HAVE_WCHAR_T) && !defined (wchar_t) +# define wchar_t int +#endif + #endif /* !HANDLE_MULTIBYTE */ extern int rl_byte_oriented; diff --git a/lib/readline/rlprivate.h b/lib/readline/rlprivate.h index fc3856a1b..e85e4d812 100644 --- a/lib/readline/rlprivate.h +++ b/lib/readline/rlprivate.h @@ -26,6 +26,7 @@ #include "rlconf.h" /* for VISIBLE_STATS */ #include "rlstdc.h" #include "posixjmp.h" /* defines procenv_t */ +#include "rlmbutil.h" /* for HANDLE_MULTIBYTE */ /************************************************************************* * * @@ -64,6 +65,7 @@ #define SF_FOUND 0x02 #define SF_FAILED 0x04 #define SF_CHGKMAP 0x08 +#define SF_PATTERN 0x10 /* unused so far */ typedef struct __rl_search_context { @@ -305,10 +307,13 @@ extern int _rl_search_getchar PARAMS((_rl_search_cxt *)); #define BRACK_PASTE_SLEN 6 #define BRACK_PASTE_INIT "\033[?2004h" -#define BRACK_PASTE_FINI "\033[?2004l" +#define BRACK_PASTE_FINI "\033[?2004l\r" + +extern char *_rl_bracketed_text PARAMS((size_t *)); /* macro.c */ extern void _rl_with_macro_input PARAMS((char *)); +extern int _rl_peek_macro_key PARAMS((void)); extern int _rl_next_macro_key PARAMS((void)); extern int _rl_prev_macro_key PARAMS((void)); extern void _rl_push_executing_macro PARAMS((void)); @@ -330,6 +335,7 @@ extern void _rl_set_insert_mode PARAMS((int, int)); extern void _rl_revert_all_lines PARAMS((void)); /* nls.c */ +extern char *_rl_init_locale PARAMS((void)); extern int _rl_init_eightbit PARAMS((void)); /* parens.c */ @@ -378,6 +384,7 @@ extern void _rl_set_cursor PARAMS((int, int)); extern void _rl_fix_point PARAMS((int)); extern int _rl_replace_text PARAMS((const char *, int, int)); extern int _rl_forward_char_internal PARAMS((int)); +extern int _rl_backward_char_internal PARAMS((int)); extern int _rl_insert_char PARAMS((int, int)); extern int _rl_overwrite_char PARAMS((int, int)); extern int _rl_overwrite_rubout PARAMS((int, int)); @@ -507,6 +514,7 @@ extern FILE *_rl_in_stream; extern FILE *_rl_out_stream; extern int _rl_last_command_was_kill; extern int _rl_eof_char; +extern int _rl_eof_found; extern procenv_t _rl_top_level; extern _rl_keyseq_cxt *_rl_kscxt; extern int _rl_keyseq_timeout; @@ -534,6 +542,7 @@ extern int _rl_enable_keypad; extern int _rl_enable_meta; extern char *_rl_term_clreol; extern char *_rl_term_clrpag; +extern char *_rl_term_clrscroll; extern char *_rl_term_im; extern char *_rl_term_ic; extern char *_rl_term_ei; diff --git a/lib/readline/rltty.c b/lib/readline/rltty.c index b1c792941..d0cd57271 100644 --- a/lib/readline/rltty.c +++ b/lib/readline/rltty.c @@ -1,7 +1,7 @@ /* rltty.c -- functions to prepare and restore the terminal for readline's use. */ -/* Copyright (C) 1992-2016 Free Software Foundation, Inc. +/* Copyright (C) 1992-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -130,8 +130,7 @@ static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *)); static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t *)); static void -save_tty_chars (tiop) - TIOTYPE *tiop; +save_tty_chars (TIOTYPE *tiop) { _rl_last_tty_chars = _rl_tty_chars; @@ -168,9 +167,7 @@ save_tty_chars (tiop) } static int -get_tty_settings (tty, tiop) - int tty; - TIOTYPE *tiop; +get_tty_settings (int tty, TIOTYPE *tiop) { set_winsize (tty); @@ -200,9 +197,7 @@ get_tty_settings (tty, tiop) } static int -set_tty_settings (tty, tiop) - int tty; - TIOTYPE *tiop; +set_tty_settings (int tty, TIOTYPE *tiop) { if (tiop->flags & SGTTY_SET) { @@ -239,9 +234,7 @@ set_tty_settings (tty, tiop) } static void -prepare_terminal_settings (meta_flag, oldtio, tiop) - int meta_flag; - TIOTYPE oldtio, *tiop; +prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop) { _rl_echoing_p = (oldtio.sgttyb.sg_flags & ECHO); _rl_echoctl = (oldtio.sgttyb.sg_flags & ECHOCTL); @@ -357,8 +350,7 @@ static void _rl_bind_tty_special_chars PARAMS((Keymap, TIOTYPE)); #endif static void -save_tty_chars (tiop) - TIOTYPE *tiop; +save_tty_chars (TIOTYPE *tiop) { _rl_last_tty_chars = _rl_tty_chars; @@ -403,8 +395,7 @@ save_tty_chars (tiop) #if defined (_AIX) || defined (_AIX41) /* Currently this is only used on AIX */ static void -rltty_warning (msg) - char *msg; +rltty_warning (char *msg) { _rl_errmsg ("warning: %s", msg); } @@ -412,8 +403,7 @@ rltty_warning (msg) #if defined (_AIX) void -setopost(tp) -TIOTYPE *tp; +setopost (TIOTYPE *tp) { if ((tp->c_oflag & OPOST) == 0) { @@ -424,9 +414,7 @@ TIOTYPE *tp; #endif static int -_get_tty_settings (tty, tiop) - int tty; - TIOTYPE *tiop; +_get_tty_settings (int tty, TIOTYPE *tiop) { int ioctl_ret; @@ -457,9 +445,7 @@ _get_tty_settings (tty, tiop) } static int -get_tty_settings (tty, tiop) - int tty; - TIOTYPE *tiop; +get_tty_settings (int tty, TIOTYPE *tiop) { set_winsize (tty); @@ -475,9 +461,7 @@ get_tty_settings (tty, tiop) } static int -_set_tty_settings (tty, tiop) - int tty; - TIOTYPE *tiop; +_set_tty_settings (int tty, TIOTYPE *tiop) { while (SETATTR (tty, tiop) < 0) { @@ -489,9 +473,7 @@ _set_tty_settings (tty, tiop) } static int -set_tty_settings (tty, tiop) - int tty; - TIOTYPE *tiop; +set_tty_settings (int tty, TIOTYPE *tiop) { if (_set_tty_settings (tty, tiop) < 0) return -1; @@ -518,10 +500,11 @@ set_tty_settings (tty, tiop) } static void -prepare_terminal_settings (meta_flag, oldtio, tiop) - int meta_flag; - TIOTYPE oldtio, *tiop; +prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop) { + int sc; + Keymap kmap; + _rl_echoing_p = (oldtio.c_lflag & ECHO); #if defined (ECHOCTL) _rl_echoctl = (oldtio.c_lflag & ECHOCTL); @@ -578,6 +561,20 @@ prepare_terminal_settings (meta_flag, oldtio, tiop) tiop->c_cc[VDSUSP] = _POSIX_VDISABLE; #endif + /* Conditionally disable some other tty special characters if there is a + key binding for them in the current keymap. Readline ordinarily doesn't + bind these characters, but an application or user might. */ +#if defined (VI_MODE) + kmap = (rl_editing_mode == vi_mode) ? vi_insertion_keymap : _rl_keymap; +#else + kmap = _rl_keymap; +#endif +#if defined (VDISCARD) + sc = tiop->c_cc[VDISCARD]; + if (sc != _POSIX_VDISABLE && kmap[(unsigned char)sc].type == ISFUNC) + tiop->c_cc[VDISCARD] = _POSIX_VDISABLE; +#endif /* VDISCARD */ + #endif /* TERMIOS_TTY_DRIVER && _POSIX_VDISABLE */ } #endif /* !NEW_TTY_DRIVER */ @@ -585,21 +582,19 @@ prepare_terminal_settings (meta_flag, oldtio, tiop) /* Put the terminal in CBREAK mode so that we can detect key presses. */ #if defined (NO_TTY_DRIVER) void -rl_prep_terminal (meta_flag) - int meta_flag; +rl_prep_terminal (int meta_flag) { _rl_echoing_p = 1; } void -rl_deprep_terminal () +rl_deprep_terminal (void) { } #else /* ! NO_TTY_DRIVER */ void -rl_prep_terminal (meta_flag) - int meta_flag; +rl_prep_terminal (int meta_flag) { int tty, nprep; TIOTYPE tio; @@ -682,7 +677,7 @@ rl_prep_terminal (meta_flag) /* Restore the terminal's normal settings and modes. */ void -rl_deprep_terminal () +rl_deprep_terminal (void) { int tty; @@ -695,7 +690,11 @@ rl_deprep_terminal () tty = rl_instream ? fileno (rl_instream) : fileno (stdin); if (terminal_prepped & TPX_BRACKPASTE) - fprintf (rl_outstream, BRACK_PASTE_FINI); + { + fprintf (rl_outstream, BRACK_PASTE_FINI); + if (_rl_eof_found) + fprintf (rl_outstream, "\n"); + } if (_rl_enable_keypad) _rl_control_keypad (0); @@ -718,8 +717,7 @@ rl_deprep_terminal () /* Set readline's idea of whether or not it is echoing output to the terminal, returning the old value. */ int -rl_tty_set_echoing (u) - int u; +rl_tty_set_echoing (int u) { int o; @@ -735,8 +733,7 @@ rl_tty_set_echoing (u) /* **************************************************************** */ int -rl_restart_output (count, key) - int count, key; +rl_restart_output (int count, int key) { #if defined (__MINGW32__) return 0; @@ -773,8 +770,7 @@ rl_restart_output (count, key) } int -rl_stop_output (count, key) - int count, key; +rl_stop_output (int count, int key) { #if defined (__MINGW32__) return 0; @@ -822,11 +818,7 @@ rl_stop_output (count, key) #elif defined (NEW_TTY_DRIVER) static void -set_special_char (kmap, tiop, sc, func) - Keymap kmap; - TIOTYPE *tiop; - int sc; - rl_command_func_t *func; +set_special_char (Keymap kmap, TIOTYPE *tiop, int sc, rl_command_func_t *func) { if (sc != -1 && kmap[(unsigned char)sc].type == ISFUNC) kmap[(unsigned char)sc].function = func; @@ -837,9 +829,7 @@ set_special_char (kmap, tiop, sc, func) kmap[(unsigned char)c].function = rl_insert; static void -_rl_bind_tty_special_chars (kmap, ttybuff) - Keymap kmap; - TIOTYPE ttybuff; +_rl_bind_tty_special_chars (Keymap kmap, TIOTYPE ttybuff) { if (ttybuff.flags & SGTTY_SET) { @@ -858,11 +848,7 @@ _rl_bind_tty_special_chars (kmap, ttybuff) #else /* !NEW_TTY_DRIVER */ static void -set_special_char (kmap, tiop, sc, func) - Keymap kmap; - TIOTYPE *tiop; - int sc; - rl_command_func_t *func; +set_special_char (Keymap kmap, TIOTYPE *tiop, int sc, rl_command_func_t *func) { unsigned char uc; @@ -877,9 +863,7 @@ set_special_char (kmap, tiop, sc, func) kmap[uc].function = rl_insert; static void -_rl_bind_tty_special_chars (kmap, ttybuff) - Keymap kmap; - TIOTYPE ttybuff; +_rl_bind_tty_special_chars (Keymap kmap, TIOTYPE ttybuff) { SET_SPECIAL (VERASE, rl_rubout); SET_SPECIAL (VKILL, rl_unix_line_discard); @@ -903,8 +887,7 @@ _rl_bind_tty_special_chars (kmap, ttybuff) /* Set the system's default editing characters to their readline equivalents in KMAP. Should be static, now that we have rl_tty_set_default_bindings. */ void -rltty_set_default_bindings (kmap) - Keymap kmap; +rltty_set_default_bindings (Keymap kmap) { #if !defined (NO_TTY_DRIVER) TIOTYPE ttybuff; @@ -920,8 +903,7 @@ rltty_set_default_bindings (kmap) /* New public way to set the system default editing chars to their readline equivalents. */ void -rl_tty_set_default_bindings (kmap) - Keymap kmap; +rl_tty_set_default_bindings (Keymap kmap) { rltty_set_default_bindings (kmap); } @@ -931,8 +913,7 @@ rl_tty_set_default_bindings (kmap) chars with save_tty_chars(). This only works on POSIX termios or termio systems. */ void -rl_tty_unset_default_bindings (kmap) - Keymap kmap; +rl_tty_unset_default_bindings (Keymap kmap) { /* Don't bother before we've saved the tty special chars at least once. */ if (RL_ISSTATE(RL_STATE_TTYCSAVED) == 0) @@ -954,13 +935,13 @@ rl_tty_unset_default_bindings (kmap) #if defined (NEW_TTY_DRIVER) || defined (NO_TTY_DRIVER) int -_rl_disable_tty_signals () +_rl_disable_tty_signals (void) { return 0; } int -_rl_restore_tty_signals () +_rl_restore_tty_signals (void) { return 0; } @@ -970,7 +951,7 @@ static TIOTYPE sigstty, nosigstty; static int tty_sigs_disabled = 0; int -_rl_disable_tty_signals () +_rl_disable_tty_signals (void) { if (tty_sigs_disabled) return 0; @@ -991,7 +972,7 @@ _rl_disable_tty_signals () } int -_rl_restore_tty_signals () +_rl_restore_tty_signals (void) { int r; diff --git a/lib/readline/savestring.c b/lib/readline/savestring.c index af9853801..f4bb6aa1a 100644 --- a/lib/readline/savestring.c +++ b/lib/readline/savestring.c @@ -1,6 +1,6 @@ /* savestring.c - function version of savestring for backwards compatibility */ -/* Copyright (C) 1998,2003 Free Software Foundation, Inc. +/* Copyright (C) 1998,2003,2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -30,8 +30,7 @@ /* Backwards compatibility, now that savestring has been removed from all `public' readline header files. */ char * -savestring (s) - const char *s; +savestring (const char *s) { char *ret; diff --git a/lib/readline/search.c b/lib/readline/search.c index 45d95d2e7..c9c1f5d1d 100644 --- a/lib/readline/search.c +++ b/lib/readline/search.c @@ -1,6 +1,6 @@ /* search.c - code for non-incremental searching in emacs and vi modes. */ -/* Copyright (C) 1992-2015 Free Software Foundation, Inc. +/* Copyright (C) 1992-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -73,8 +73,8 @@ static char *history_search_string; static int history_string_size; static void make_history_line_current PARAMS((HIST_ENTRY *)); -static int noninc_search_from_pos PARAMS((char *, int, int)); -static int noninc_dosearch PARAMS((char *, int)); +static int noninc_search_from_pos PARAMS((char *, int, int, int, int *)); +static int noninc_dosearch PARAMS((char *, int, int)); static int noninc_search PARAMS((int, int)); static int rl_history_search_internal PARAMS((int, int)); static void rl_history_search_reinit PARAMS((int)); @@ -87,8 +87,7 @@ static int _rl_nsearch_dispatch PARAMS((_rl_search_cxt *, int)); current line. This doesn't do anything with rl_point; the caller must set it. */ static void -make_history_line_current (entry) - HIST_ENTRY *entry; +make_history_line_current (HIST_ENTRY *entry) { _rl_replace_text (entry->line, 0, rl_end); _rl_fix_point (1); @@ -112,11 +111,10 @@ make_history_line_current (entry) for STRING. DIR < 0 means to search backwards through the history list, DIR >= 0 means to search forward. */ static int -noninc_search_from_pos (string, pos, dir) - char *string; - int pos, dir; +noninc_search_from_pos (char *string, int pos, int dir, int flags, int *ncp) { - int ret, old; + int ret, old, sflags; + char *s; if (pos < 0) return -1; @@ -126,12 +124,28 @@ noninc_search_from_pos (string, pos, dir) return -1; RL_SETSTATE(RL_STATE_SEARCH); - if (*string == '^') + /* These functions return the match offset in the line; history_offset gives + the matching line in the history list */ + if (flags & SF_PATTERN) + { + s = string; + sflags = 0; /* Non-anchored search */ + if (*s == '^') + { + sflags |= ANCHORED_SEARCH; + s++; + } + ret = _hs_history_patsearch (s, dir, sflags); + } + else if (*string == '^') ret = history_search_prefix (string + 1, dir); else ret = history_search (string, dir); RL_UNSETSTATE(RL_STATE_SEARCH); + if (ncp) + *ncp = ret; /* caller will catch -1 to indicate no-op */ + if (ret != -1) ret = where_history (); @@ -143,9 +157,7 @@ noninc_search_from_pos (string, pos, dir) search is backwards through previous entries, else through subsequent entries. Returns 1 if the search was successful, 0 otherwise. */ static int -noninc_dosearch (string, dir) - char *string; - int dir; +noninc_dosearch (char *string, int dir, int flags) { int oldpos, pos; HIST_ENTRY *entry; @@ -156,7 +168,7 @@ noninc_dosearch (string, dir) return 0; } - pos = noninc_search_from_pos (string, noninc_history_pos + dir, dir); + pos = noninc_search_from_pos (string, noninc_history_pos + dir, dir, flags, (int *)0); if (pos == -1) { /* Search failed, current history position unchanged. */ @@ -188,8 +200,7 @@ noninc_dosearch (string, dir) } static _rl_search_cxt * -_rl_nsearch_init (dir, pchar) - int dir, pchar; +_rl_nsearch_init (int dir, int pchar) { _rl_search_cxt *cxt; char *p; @@ -197,6 +208,10 @@ _rl_nsearch_init (dir, pchar) cxt = _rl_scxt_alloc (RL_SEARCH_NSEARCH, 0); if (dir < 0) cxt->sflags |= SF_REVERSE; /* not strictly needed */ +#if defined (VI_MODE) + if (VI_COMMAND_MODE() && (pchar == '?' || pchar == '/')) + cxt->sflags |= SF_PATTERN; +#endif cxt->direction = dir; cxt->history_pos = cxt->save_line; @@ -224,9 +239,7 @@ _rl_nsearch_init (dir, pchar) } int -_rl_nsearch_cleanup (cxt, r) - _rl_search_cxt *cxt; - int r; +_rl_nsearch_cleanup (_rl_search_cxt *cxt, int r) { _rl_scxt_dispose (cxt, 0); _rl_nscxt = 0; @@ -237,8 +250,7 @@ _rl_nsearch_cleanup (cxt, r) } static void -_rl_nsearch_abort (cxt) - _rl_search_cxt *cxt; +_rl_nsearch_abort (_rl_search_cxt *cxt) { rl_maybe_unsave_line (); rl_clear_message (); @@ -253,10 +265,11 @@ _rl_nsearch_abort (cxt) if the caller should abort the search, 0 if we should break out of the loop, and 1 if we should continue to read characters. */ static int -_rl_nsearch_dispatch (cxt, c) - _rl_search_cxt *cxt; - int c; +_rl_nsearch_dispatch (_rl_search_cxt *cxt, int c) { + if (c < 0) + c = CTRL ('C'); + switch (c) { case CTRL('W'): @@ -306,8 +319,7 @@ _rl_nsearch_dispatch (cxt, c) using _rl_nsearch_cleanup (). Returns 1 if the search was successful, 0 otherwise. */ static int -_rl_nsearch_dosearch (cxt) - _rl_search_cxt *cxt; +_rl_nsearch_dosearch (_rl_search_cxt *cxt) { rl_mark = cxt->save_mark; @@ -340,7 +352,7 @@ _rl_nsearch_dosearch (cxt) } rl_restore_prompt (); - return (noninc_dosearch (noninc_search_string, cxt->direction)); + return (noninc_dosearch (noninc_search_string, cxt->direction, cxt->sflags&SF_PATTERN)); } /* Search non-interactively through the history list. DIR < 0 means to @@ -349,9 +361,7 @@ _rl_nsearch_dosearch (cxt) history list. PCHAR is the character to use for prompting when reading the search string; if not specified (0), it defaults to `:'. */ static int -noninc_search (dir, pchar) - int dir; - int pchar; +noninc_search (int dir, int pchar) { _rl_search_cxt *cxt; int c, r; @@ -367,6 +377,12 @@ noninc_search (dir, pchar) { c = _rl_search_getchar (cxt); + if (c < 0) + { + _rl_nsearch_abort (cxt); + return 1; + } + if (c == 0) break; @@ -384,8 +400,7 @@ noninc_search (dir, pchar) /* Search forward through the history list for a string. If the vi-mode code calls this, KEY will be `?'. */ int -rl_noninc_forward_search (count, key) - int count, key; +rl_noninc_forward_search (int count, int key) { return noninc_search (1, (key == '?') ? '?' : 0); } @@ -393,17 +408,16 @@ rl_noninc_forward_search (count, key) /* Reverse search the history list for a string. If the vi-mode code calls this, KEY will be `/'. */ int -rl_noninc_reverse_search (count, key) - int count, key; +rl_noninc_reverse_search (int count, int key) { return noninc_search (-1, (key == '/') ? '/' : 0); } /* Search forward through the history list for the last string searched - for. If there is no saved search string, abort. */ + for. If there is no saved search string, abort. If the vi-mode code + calls this, KEY will be `N'. */ int -rl_noninc_forward_search_again (count, key) - int count, key; +rl_noninc_forward_search_again (int count, int key) { int r; @@ -412,15 +426,20 @@ rl_noninc_forward_search_again (count, key) rl_ding (); return (1); } - r = noninc_dosearch (noninc_search_string, 1); +#if defined (VI_MODE) + if (VI_COMMAND_MODE() && key == 'N') + r = noninc_dosearch (noninc_search_string, 1, SF_PATTERN); + else +#endif + r = noninc_dosearch (noninc_search_string, 1, 0); return (r != 1); } /* Reverse search in the history list for the last string searched - for. If there is no saved search string, abort. */ + for. If there is no saved search string, abort. If the vi-mode code + calls this, KEY will be `n'. */ int -rl_noninc_reverse_search_again (count, key) - int count, key; +rl_noninc_reverse_search_again (int count, int key) { int r; @@ -429,18 +448,28 @@ rl_noninc_reverse_search_again (count, key) rl_ding (); return (1); } - r = noninc_dosearch (noninc_search_string, -1); +#if defined (VI_MODE) + if (VI_COMMAND_MODE() && key == 'n') + r = noninc_dosearch (noninc_search_string, -1, SF_PATTERN); + else +#endif + r = noninc_dosearch (noninc_search_string, -1, 0); return (r != 1); } #if defined (READLINE_CALLBACKS) int -_rl_nsearch_callback (cxt) - _rl_search_cxt *cxt; +_rl_nsearch_callback (_rl_search_cxt *cxt) { int c, r; c = _rl_search_getchar (cxt); + if (c <= 0) + { + if (c < 0) + _rl_nsearch_abort (cxt); + return 1; + } r = _rl_nsearch_dispatch (cxt, c); if (r != 0) return 1; @@ -451,11 +480,10 @@ _rl_nsearch_callback (cxt) #endif static int -rl_history_search_internal (count, dir) - int count, dir; +rl_history_search_internal (int count, int dir) { HIST_ENTRY *temp; - int ret, oldpos; + int ret, oldpos, newcol; char *t; rl_maybe_save_line (); @@ -469,7 +497,7 @@ rl_history_search_internal (count, dir) while (count) { RL_CHECK_SIGNALS (); - ret = noninc_search_from_pos (history_search_string, rl_history_search_pos + dir, dir); + ret = noninc_search_from_pos (history_search_string, rl_history_search_pos + dir, dir, 0, &newcol); if (ret == -1) break; @@ -512,12 +540,17 @@ rl_history_search_internal (count, dir) /* Copy the line we found into the current line buffer. */ make_history_line_current (temp); + /* decide where to put rl_point -- need to change this for pattern search */ if (rl_history_search_flags & ANCHORED_SEARCH) rl_point = rl_history_search_len; /* easy case */ else { - t = strstr (rl_line_buffer, history_search_string); +#if 0 + t = strstr (rl_line_buffer, history_search_string); /* XXX */ rl_point = t ? (int)(t - rl_line_buffer) + rl_history_search_len : rl_end; +#else + rl_point = (newcol >= 0) ? newcol : rl_end; +#endif } rl_mark = rl_end; @@ -525,8 +558,7 @@ rl_history_search_internal (count, dir) } static void -rl_history_search_reinit (flags) - int flags; +rl_history_search_reinit (int flags) { int sind; @@ -556,8 +588,7 @@ rl_history_search_reinit (flags) from the start of the line to rl_point. This is a non-incremental search. The search is anchored to the beginning of the history line. */ int -rl_history_search_forward (count, ignore) - int count, ignore; +rl_history_search_forward (int count, int ignore) { if (count == 0) return (0); @@ -575,8 +606,7 @@ rl_history_search_forward (count, ignore) from the start of the line to rl_point. This is a non-incremental search. */ int -rl_history_search_backward (count, ignore) - int count, ignore; +rl_history_search_backward (int count, int ignore) { if (count == 0) return (0); @@ -595,8 +625,7 @@ rl_history_search_backward (count, ignore) search. The search succeeds if the search string is present anywhere in the history line. */ int -rl_history_substr_search_forward (count, ignore) - int count, ignore; +rl_history_substr_search_forward (int count, int ignore) { if (count == 0) return (0); @@ -614,8 +643,7 @@ rl_history_substr_search_forward (count, ignore) from the start of the line to rl_point. This is a non-incremental search. */ int -rl_history_substr_search_backward (count, ignore) - int count, ignore; +rl_history_substr_search_backward (int count, int ignore) { if (count == 0) return (0); diff --git a/lib/readline/shell.c b/lib/readline/shell.c index 6947295e5..7fe2e97c9 100644 --- a/lib/readline/shell.c +++ b/lib/readline/shell.c @@ -1,7 +1,7 @@ /* shell.c -- readline utility functions that are normally provided by bash when readline is linked as part of the shell. */ -/* Copyright (C) 1997-2009 Free Software Foundation, Inc. +/* Copyright (C) 1997-2009,2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -92,8 +92,7 @@ extern struct passwd *getpwuid PARAMS((uid_t)); /* Does shell-like quoting using single quotes. */ char * -sh_single_quote (string) - char *string; +sh_single_quote (char *string) { register int c; char *result, *r, *s; @@ -127,8 +126,7 @@ static char putenv_buf1[INT_STRLEN_BOUND (int) + 6 + 1]; /* sizeof("LINES=") == static char putenv_buf2[INT_STRLEN_BOUND (int) + 8 + 1]; /* sizeof("COLUMNS=") == 8 */ void -sh_set_lines_and_columns (lines, cols) - int lines, cols; +sh_set_lines_and_columns (int lines, int cols) { #if defined (HAVE_SETENV) sprintf (setenv_buf, "%d", lines); @@ -148,14 +146,13 @@ sh_set_lines_and_columns (lines, cols) } char * -sh_get_env_value (varname) - const char *varname; +sh_get_env_value (const char *varname) { return ((char *)getenv (varname)); } char * -sh_get_home_dir () +sh_get_home_dir (void) { static char *home_dir = (char *)NULL; struct passwd *entry; @@ -188,8 +185,7 @@ sh_get_home_dir () #endif int -sh_unset_nodelay_mode (fd) - int fd; +sh_unset_nodelay_mode (int fd) { #if defined (HAVE_FCNTL) int flags, bflags; diff --git a/lib/readline/signals.c b/lib/readline/signals.c index 927f53230..76c5c4733 100644 --- a/lib/readline/signals.c +++ b/lib/readline/signals.c @@ -1,6 +1,6 @@ /* signals.c -- signal handling support for readline. */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -113,6 +113,10 @@ int _rl_susp_char = 0; static int signals_set_flag; static int sigwinch_set_flag; +#if defined (HAVE_POSIX_SIGNALS) +sigset_t _rl_orig_sigset; +#endif /* !HAVE_POSIX_SIGNALS */ + /* **************************************************************** */ /* */ /* Signal Handling */ @@ -134,8 +138,7 @@ void *_rl_sigcleanarg; /* Called from RL_CHECK_SIGNALS() macro */ RETSIGTYPE -_rl_signal_handler (sig) - int sig; +_rl_signal_handler (int sig) { _rl_caught_signal = 0; /* XXX */ @@ -158,8 +161,7 @@ _rl_signal_handler (sig) } static RETSIGTYPE -rl_signal_handler (sig) - int sig; +rl_signal_handler (int sig) { if (_rl_interrupt_immediately) { @@ -173,8 +175,7 @@ rl_signal_handler (sig) } static RETSIGTYPE -_rl_handle_signal (sig) - int sig; +_rl_handle_signal (int sig) { #if defined (HAVE_POSIX_SIGNALS) sigset_t set; @@ -248,9 +249,11 @@ _rl_handle_signal (sig) rl_cleanup_after_signal (); #if defined (HAVE_POSIX_SIGNALS) +# if defined (SIGTSTP) /* Unblock SIGTTOU blocked above */ if (sig == SIGTTIN || sig == SIGTSTP) sigprocmask (SIG_UNBLOCK, &set, (sigset_t *)NULL); +# endif sigemptyset (&set); sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set); @@ -289,8 +292,7 @@ _rl_handle_signal (sig) #if defined (SIGWINCH) static RETSIGTYPE -rl_sigwinch_handler (sig) - int sig; +rl_sigwinch_handler (int sig) { SigHandler *oh; @@ -321,9 +323,7 @@ rl_sigwinch_handler (sig) #if !defined (HAVE_POSIX_SIGNALS) static int -rl_sigaction (sig, nh, oh) - int sig; - sighandler_cxt *nh, *oh; +rl_sigaction (int sig, sighandler_cxt *nh, sighandler_cxt *oh) { oh->sa_handler = signal (sig, nh->sa_handler); return 0; @@ -334,10 +334,7 @@ rl_sigaction (sig, nh, oh) information in OHANDLER. Return the old signal handler, like signal(). */ static SigHandler * -rl_set_sighandler (sig, handler, ohandler) - int sig; - SigHandler *handler; - sighandler_cxt *ohandler; +rl_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler) { sighandler_cxt old_handler; #if defined (HAVE_POSIX_SIGNALS) @@ -368,10 +365,7 @@ rl_set_sighandler (sig, handler, ohandler) /* Set disposition of SIG to HANDLER, returning old state in OHANDLER. Don't change disposition if OHANDLER indicates the signal was ignored. */ static void -rl_maybe_set_sighandler (sig, handler, ohandler) - int sig; - SigHandler *handler; - sighandler_cxt *ohandler; +rl_maybe_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler) { sighandler_cxt dummy; SigHandler *oh; @@ -388,9 +382,7 @@ rl_maybe_set_sighandler (sig, handler, ohandler) disposition was changed using rl_maybe_set_sighandler or for which the SIG_IGN check was performed inline (e.g., SIGALRM below). */ static void -rl_maybe_restore_sighandler (sig, handler) - int sig; - sighandler_cxt *handler; +rl_maybe_restore_sighandler (int sig, sighandler_cxt *handler) { sighandler_cxt dummy; @@ -401,7 +393,7 @@ rl_maybe_restore_sighandler (sig, handler) } int -rl_set_signals () +rl_set_signals (void) { sighandler_cxt dummy; SigHandler *oh; @@ -442,8 +434,8 @@ rl_set_signals () if (rl_catch_signals && signals_set_flag == 0) { #if defined (HAVE_POSIX_SIGNALS) - sigemptyset (&oset); - sigprocmask (SIG_BLOCK, &bset, &oset); + sigemptyset (&_rl_orig_sigset); + sigprocmask (SIG_BLOCK, &bset, &_rl_orig_sigset); #endif rl_maybe_set_sighandler (SIGINT, rl_signal_handler, &old_int); @@ -484,7 +476,14 @@ rl_set_signals () signals_set_flag = 1; #if defined (HAVE_POSIX_SIGNALS) - sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); + sigprocmask (SIG_SETMASK, &_rl_orig_sigset, (sigset_t *)NULL); +#endif + } + else if (rl_catch_signals == 0) + { +#if defined (HAVE_POSIX_SIGNALS) + sigemptyset (&_rl_orig_sigset); + sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &_rl_orig_sigset); #endif } @@ -500,14 +499,12 @@ rl_set_signals () } int -rl_clear_signals () +rl_clear_signals (void) { sighandler_cxt dummy; if (rl_catch_signals && signals_set_flag == 1) { - sigemptyset (&dummy.sa_mask); - /* Since rl_maybe_set_sighandler doesn't override a SIG_IGN handler, we should in theory not have to restore a handler where old_xxx.sa_handler == SIG_IGN. That's what rl_maybe_restore_sighandler @@ -555,7 +552,7 @@ rl_clear_signals () /* Clean up the terminal and readline state after catching a signal, before resending it to the calling application. */ void -rl_cleanup_after_signal () +rl_cleanup_after_signal (void) { _rl_clean_up_for_exit (); if (rl_deprep_term_function) @@ -566,7 +563,7 @@ rl_cleanup_after_signal () /* Reset the terminal and readline state after a signal handler returns. */ void -rl_reset_after_signal () +rl_reset_after_signal (void) { if (rl_prep_term_function) (*rl_prep_term_function) (_rl_meta_flag); @@ -578,7 +575,7 @@ rl_reset_after_signal () numeric arguments in process) after catching a signal, before calling rl_cleanup_after_signal(). */ void -rl_free_line_state () +rl_free_line_state (void) { register HIST_ENTRY *entry; @@ -594,10 +591,16 @@ rl_free_line_state () } int -rl_pending_signal () +rl_pending_signal (void) { return (_rl_caught_signal); } + +void +rl_check_signals (void) +{ + RL_CHECK_SIGNALS (); +} #endif /* HANDLE_SIGNALS */ /* **************************************************************** */ @@ -622,7 +625,7 @@ static int sigwinch_blocked; /* Cause SIGINT to not be delivered until the corresponding call to release_sigint(). */ void -_rl_block_sigint () +_rl_block_sigint (void) { if (sigint_blocked) return; @@ -632,7 +635,7 @@ _rl_block_sigint () /* Allow SIGINT to be delivered. */ void -_rl_release_sigint () +_rl_release_sigint (void) { if (sigint_blocked == 0) return; @@ -644,7 +647,7 @@ _rl_release_sigint () /* Cause SIGWINCH to not be delivered until the corresponding call to release_sigwinch(). */ void -_rl_block_sigwinch () +_rl_block_sigwinch (void) { if (sigwinch_blocked) return; @@ -673,7 +676,7 @@ _rl_block_sigwinch () /* Allow SIGWINCH to be delivered. */ void -_rl_release_sigwinch () +_rl_release_sigwinch (void) { if (sigwinch_blocked == 0) return; @@ -703,8 +706,7 @@ _rl_release_sigwinch () /* */ /* **************************************************************** */ void -rl_echo_signal_char (sig) - int sig; +rl_echo_signal_char (int sig) { char cstr[3]; int cslen, c; diff --git a/lib/readline/terminal.c b/lib/readline/terminal.c index ef2884e0f..e55738977 100644 --- a/lib/readline/terminal.c +++ b/lib/readline/terminal.c @@ -1,6 +1,6 @@ /* terminal.c -- controlling the terminal with termcap. */ -/* Copyright (C) 1996-2015 Free Software Foundation, Inc. +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -112,6 +112,7 @@ char PC, *BC, *UP; /* Some strings to control terminal actions. These are output by tputs (). */ char *_rl_term_clreol; char *_rl_term_clrpag; +char *_rl_term_clrscroll; char *_rl_term_cr; char *_rl_term_backspace; char *_rl_term_goto; @@ -131,6 +132,7 @@ char *_rl_term_IC; char *_rl_term_dc; char *_rl_term_DC; +/* How to move forward a char, non-destructively */ char *_rl_term_forward_char; /* How to go up a line. */ @@ -188,8 +190,7 @@ int _rl_enable_meta = 1; #if defined (__EMX__) static void -_emx_get_screensize (swp, shp) - int *swp, *shp; +_emx_get_screensize (int *swp, int *shp) { int sz[2]; @@ -204,8 +205,7 @@ _emx_get_screensize (swp, shp) #if defined (__MINGW32__) static void -_win_get_screensize (swp, shp) - int *swp, *shp; +_win_get_screensize (int *swp, int *shp) { HANDLE hConOut; CONSOLE_SCREEN_BUFFER_INFO scr; @@ -227,8 +227,7 @@ _win_get_screensize (swp, shp) values of $LINES and $COLUMNS. The tests for TERM_STRING_BUFFER being non-null serve to check whether or not we have initialized termcap. */ void -_rl_get_screen_size (tty, ignore_env) - int tty, ignore_env; +_rl_get_screen_size (int tty, int ignore_env) { char *ss; #if defined (TIOCGWINSZ) @@ -318,8 +317,7 @@ _rl_get_screen_size (tty, ignore_env) } void -_rl_set_screen_size (rows, cols) - int rows, cols; +_rl_set_screen_size (int rows, int cols) { if (_rl_term_autowrap == -1) _rl_init_terminal_io (rl_terminal_name); @@ -338,15 +336,13 @@ _rl_set_screen_size (rows, cols) } void -rl_set_screen_size (rows, cols) - int rows, cols; +rl_set_screen_size (int rows, int cols) { _rl_set_screen_size (rows, cols); } void -rl_get_screen_size (rows, cols) - int *rows, *cols; +rl_get_screen_size (int *rows, int *cols) { if (rows) *rows = _rl_screenheight; @@ -355,19 +351,19 @@ rl_get_screen_size (rows, cols) } void -rl_reset_screen_size () +rl_reset_screen_size (void) { _rl_get_screen_size (fileno (rl_instream), 0); } void -_rl_sigwinch_resize_terminal () +_rl_sigwinch_resize_terminal (void) { _rl_get_screen_size (fileno (rl_instream), 1); } void -rl_resize_terminal () +rl_resize_terminal (void) { _rl_get_screen_size (fileno (rl_instream), 1); if (_rl_echoing_p) @@ -390,6 +386,7 @@ static const struct _tc_string tc_strings[] = { { "@7", &_rl_term_at7 }, { "DC", &_rl_term_DC }, + { "E3", &_rl_term_clrscroll }, { "IC", &_rl_term_IC }, { "ce", &_rl_term_clreol }, { "cl", &_rl_term_clrpag }, @@ -424,8 +421,7 @@ static const struct _tc_string tc_strings[] = /* Read the desired terminal capability strings into BP. The capabilities are described in the TC_STRINGS table. */ static void -get_term_capabilities (bp) - char **bp; +get_term_capabilities (char **bp) { #if !defined (__DJGPP__) /* XXX - doesn't DJGPP have a termcap library? */ register int i; @@ -437,15 +433,14 @@ get_term_capabilities (bp) } int -_rl_init_terminal_io (terminal_name) - const char *terminal_name; +_rl_init_terminal_io (const char *terminal_name) { const char *term; char *buffer; int tty, tgetent_ret; term = terminal_name ? terminal_name : sh_get_env_value ("TERM"); - _rl_term_clrpag = _rl_term_cr = _rl_term_clreol = (char *)NULL; + _rl_term_clrpag = _rl_term_cr = _rl_term_clreol = _rl_term_clrscroll = (char *)NULL; tty = rl_instream ? fileno (rl_instream) : 0; if (term == 0) @@ -458,7 +453,7 @@ _rl_init_terminal_io (terminal_name) _rl_term_mm = _rl_term_mo = (char *)NULL; _rl_terminal_can_insert = term_has_meta = _rl_term_autowrap = 0; _rl_term_cr = "\r"; - _rl_term_clreol = _rl_term_clrpag = _rl_term_backspace = (char *)NULL; + _rl_term_backspace = (char *)NULL; _rl_term_goto = _rl_term_pc = _rl_term_ip = (char *)NULL; _rl_term_ks = _rl_term_ke =_rl_term_vs = _rl_term_ve = (char *)NULL; _rl_term_kh = _rl_term_kH = _rl_term_at7 = _rl_term_kI = (char *)NULL; @@ -584,8 +579,7 @@ _rl_init_terminal_io (terminal_name) /* Bind the arrow key sequences from the termcap description in MAP. */ static void -bind_termcap_arrow_keys (map) - Keymap map; +bind_termcap_arrow_keys (Keymap map) { Keymap xkeymap; @@ -601,13 +595,13 @@ bind_termcap_arrow_keys (map) rl_bind_keyseq_if_unbound (_rl_term_at7, rl_end_of_line); /* End */ rl_bind_keyseq_if_unbound (_rl_term_kD, rl_delete); + rl_bind_keyseq_if_unbound (_rl_term_kI, rl_overwrite_mode); /* Insert */ _rl_keymap = xkeymap; } char * -rl_get_termcap (cap) - const char *cap; +rl_get_termcap (const char *cap) { register int i; @@ -624,8 +618,7 @@ rl_get_termcap (cap) /* Re-initialize the terminal considering that the TERM/TERMCAP variable has changed. */ int -rl_reset_terminal (terminal_name) - const char *terminal_name; +rl_reset_terminal (const char *terminal_name) { _rl_screenwidth = _rl_screenheight = 0; _rl_init_terminal_io (terminal_name); @@ -635,15 +628,13 @@ rl_reset_terminal (terminal_name) /* A function for the use of tputs () */ #ifdef _MINIX void -_rl_output_character_function (c) - int c; +_rl_output_character_function (int c) { putc (c, _rl_out_stream); } #else /* !_MINIX */ int -_rl_output_character_function (c) - int c; +_rl_output_character_function (int c) { return putc (c, _rl_out_stream); } @@ -651,17 +642,14 @@ _rl_output_character_function (c) /* Write COUNT characters from STRING to the output stream. */ void -_rl_output_some_chars (string, count) - const char *string; - int count; +_rl_output_some_chars (const char *string, int count) { fwrite (string, 1, count, _rl_out_stream); } /* Move the cursor back. */ int -_rl_backspace (count) - int count; +_rl_backspace (int count) { register int i; @@ -678,7 +666,7 @@ _rl_backspace (count) /* Move to the start of the next line. */ int -rl_crlf () +rl_crlf (void) { #if defined (NEW_TTY_DRIVER) || defined (__MINT__) if (_rl_term_cr) @@ -690,7 +678,7 @@ rl_crlf () /* Ring the terminal bell. */ int -rl_ding () +rl_ding (void) { if (_rl_echoing_p) { @@ -729,7 +717,7 @@ rl_ding () static int enabled_meta = 0; /* flag indicating we enabled meta mode */ void -_rl_enable_meta_key () +_rl_enable_meta_key (void) { #if !defined (__DJGPP__) if (term_has_meta && _rl_term_mm) @@ -741,7 +729,7 @@ _rl_enable_meta_key () } void -_rl_disable_meta_key () +_rl_disable_meta_key (void) { #if !defined (__DJGPP__) if (term_has_meta && _rl_term_mo && enabled_meta) @@ -753,8 +741,7 @@ _rl_disable_meta_key () } void -_rl_control_keypad (on) - int on; +_rl_control_keypad (int on) { #if !defined (__DJGPP__) if (on && _rl_term_ks) @@ -775,8 +762,7 @@ _rl_control_keypad (on) cursor. Overwrite mode gets a very visible cursor. Only does anything if we have both capabilities. */ void -_rl_set_cursor (im, force) - int im, force; +_rl_set_cursor (int im, int force) { #ifndef __MSDOS__ if (_rl_term_ve && _rl_term_vs) diff --git a/lib/readline/text.c b/lib/readline/text.c index c353252bc..cddaeebd2 100644 --- a/lib/readline/text.c +++ b/lib/readline/text.c @@ -1,6 +1,6 @@ /* text.c -- text handling commands for readline. */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -83,8 +83,7 @@ int _rl_optimize_typeahead = 1; /* rl_insert tries to read typeahead */ way that you should do insertion. _rl_insert_char () calls this function. Returns the number of characters inserted. */ int -rl_insert_text (string) - const char *string; +rl_insert_text (const char *string) { register int i, l; @@ -121,8 +120,7 @@ rl_insert_text (string) /* Delete the string between FROM and TO. FROM is inclusive, TO is not. Returns the number of characters deleted. */ int -rl_delete_text (from, to) - int from, to; +rl_delete_text (int from, int to) { register char *text; register int diff, i; @@ -172,8 +170,7 @@ rl_delete_text (from, to) } while (0) void -_rl_fix_point (fix_mark_too) - int fix_mark_too; +_rl_fix_point (int fix_mark_too) { _RL_FIX_POINT (rl_point); if (fix_mark_too) @@ -185,9 +182,7 @@ _rl_fix_point (fix_mark_too) TEXT. The operation is undoable. To replace the entire line in an undoable mode, use _rl_replace_text(text, 0, rl_end); */ int -_rl_replace_text (text, start, end) - const char *text; - int start, end; +_rl_replace_text (const char *text, int start, int end) { int n; @@ -206,9 +201,7 @@ _rl_replace_text (text, start, end) /* Replace the current line buffer contents with TEXT. If CLEAR_UNDO is non-zero, we free the current undo list. */ void -rl_replace_line (text, clear_undo) - const char *text; - int clear_undo; +rl_replace_line (const char *text, int clear_undo) { int len; @@ -259,8 +252,7 @@ rl_replace_line (text, clear_undo) /* Move forward COUNT bytes. */ int -rl_forward_byte (count, key) - int count, key; +rl_forward_byte (int count, int key) { if (count < 0) return (rl_backward_byte (-count, key)); @@ -292,8 +284,7 @@ rl_forward_byte (count, key) } int -_rl_forward_char_internal (count) - int count; +_rl_forward_char_internal (int count) { int point; @@ -306,21 +297,47 @@ _rl_forward_char_internal (count) #endif if (rl_end < 0) - rl_end = 0; + rl_end = 0; #else point = rl_point + count; +#endif + if (point > rl_end) point = rl_end; + return (point); +} + +int +_rl_backward_char_internal (int count) +{ + int point; + + point = rl_point; +#if defined (HANDLE_MULTIBYTE) + if (count > 0) + { + while (count > 0 && point > 0) + { + point = _rl_find_prev_mbchar (rl_line_buffer, point, MB_FIND_NONZERO); + count--; + } + if (count > 0) + return 0; /* XXX - rl_ding() here? */ + } +#else + if (count > 0) + point -= count; #endif + if (point < 0) + point = 0; return (point); } #if defined (HANDLE_MULTIBYTE) /* Move forward COUNT characters. */ int -rl_forward_char (count, key) - int count, key; +rl_forward_char (int count, int key) { int point; @@ -350,8 +367,7 @@ rl_forward_char (count, key) } #else /* !HANDLE_MULTIBYTE */ int -rl_forward_char (count, key) - int count, key; +rl_forward_char (int count, int key) { return (rl_forward_byte (count, key)); } @@ -359,16 +375,14 @@ rl_forward_char (count, key) /* Backwards compatibility. */ int -rl_forward (count, key) - int count, key; +rl_forward (int count, int key) { return (rl_forward_char (count, key)); } /* Move backward COUNT bytes. */ int -rl_backward_byte (count, key) - int count, key; +rl_backward_byte (int count, int key) { if (count < 0) return (rl_forward_byte (-count, key)); @@ -393,8 +407,7 @@ rl_backward_byte (count, key) #if defined (HANDLE_MULTIBYTE) /* Move backward COUNT characters. */ int -rl_backward_char (count, key) - int count, key; +rl_backward_char (int count, int key) { int point; @@ -426,8 +439,7 @@ rl_backward_char (count, key) } #else int -rl_backward_char (count, key) - int count, key; +rl_backward_char (int count, int key) { return (rl_backward_byte (count, key)); } @@ -435,16 +447,14 @@ rl_backward_char (count, key) /* Backwards compatibility. */ int -rl_backward (count, key) - int count, key; +rl_backward (int count, int key) { return (rl_backward_char (count, key)); } /* Move to the beginning of the line. */ int -rl_beg_of_line (count, key) - int count, key; +rl_beg_of_line (int count, int key) { rl_point = 0; return 0; @@ -452,8 +462,7 @@ rl_beg_of_line (count, key) /* Move to the end of the line. */ int -rl_end_of_line (count, key) - int count, key; +rl_end_of_line (int count, int key) { rl_point = rl_end; return 0; @@ -461,8 +470,7 @@ rl_end_of_line (count, key) /* Move forward a word. We do what Emacs does. Handles multibyte chars. */ int -rl_forward_word (count, key) - int count, key; +rl_forward_word (int count, int key) { int c; @@ -510,8 +518,7 @@ rl_forward_word (count, key) /* Move backward a word. We do what Emacs does. Handles multibyte chars. */ int -rl_backward_word (count, key) - int count, key; +rl_backward_word (int count, int key) { int c, p; @@ -560,8 +567,7 @@ rl_backward_word (count, key) /* Clear the current line. Numeric argument to C-l does this. */ int -rl_refresh_line (ignore1, ignore2) - int ignore1, ignore2; +rl_refresh_line (int ignore1, int ignore2) { int curr_line; @@ -582,8 +588,7 @@ rl_refresh_line (ignore1, ignore2) the prompt and the current input line. Given a numeric arg, redraw only the current line. */ int -rl_clear_screen (count, key) - int count, key; +rl_clear_screen (int count, int key) { if (rl_explicit_arg) { @@ -599,8 +604,25 @@ rl_clear_screen (count, key) } int -rl_skip_csi_sequence (count, key) - int count, key; +rl_previous_screen_line (int count, int key) +{ + int c; + + c = _rl_term_autowrap ? _rl_screenwidth : (_rl_screenwidth + 1); + return (rl_backward_char (c, key)); +} + +int +rl_next_screen_line (int count, int key) +{ + int c; + + c = _rl_term_autowrap ? _rl_screenwidth : (_rl_screenwidth + 1); + return (rl_forward_char (c, key)); +} + +int +rl_skip_csi_sequence (int count, int key) { int ch; @@ -614,8 +636,7 @@ rl_skip_csi_sequence (count, key) } int -rl_arrow_keys (count, c) - int count, c; +rl_arrow_keys (int count, int key) { int ch; @@ -672,8 +693,7 @@ static mbstate_t ps = {0}; If C introduces a multibyte sequence, we read the whole sequence and then insert the multibyte char into the line buffer. */ int -_rl_insert_char (count, c) - int count, c; +_rl_insert_char (int count, int c) { register int i; char *string; @@ -695,6 +715,12 @@ _rl_insert_char (count, c) incoming[1] = '\0'; incoming_length = 1; } + else if (_rl_utf8locale && (c & 0x80) == 0) + { + incoming[0] = c; + incoming[1] = '\0'; + incoming_length = 1; + } else { wchar_t wc; @@ -739,6 +765,12 @@ _rl_insert_char (count, c) effect of mbstate is undefined. */ memset (&ps, 0, sizeof (mbstate_t)); } + else if (ret == 1) + { + incoming[0] = pending_bytes[0]; + incoming[incoming_length = 1] = '\0'; + pending_bytes_length = 0; + } else { /* We successfully read a single multibyte character. */ @@ -761,8 +793,13 @@ _rl_insert_char (count, c) i = 0; while (i < string_size) { - strncpy (string + i, incoming, incoming_length); - i += incoming_length; + if (incoming_length == 1) + string[i++] = *incoming; + else + { + strncpy (string + i, incoming, incoming_length); + i += incoming_length; + } } incoming_length = 0; stored_count = 0; @@ -790,8 +827,13 @@ _rl_insert_char (count, c) i = 0; while (i < string_size) { - strncpy (string + i, incoming, incoming_length); - i += incoming_length; + if (incoming_length == 1) + string[i++] = *incoming; + else + { + strncpy (string + i, incoming, incoming_length); + i += incoming_length; + } } while (count) @@ -857,8 +899,7 @@ _rl_insert_char (count, c) If C introduces a multibyte character sequence, read the entire sequence before starting the overwrite loop. */ int -_rl_overwrite_char (count, c) - int count, c; +_rl_overwrite_char (int count, int c) { int i; #if defined (HANDLE_MULTIBYTE) @@ -891,8 +932,7 @@ _rl_overwrite_char (count, c) } int -rl_insert (count, c) - int count, c; +rl_insert (int count, int c) { int r, n, x; @@ -902,6 +942,7 @@ rl_insert (count, c) x = 0; n = (unsigned short)-2; while (_rl_optimize_typeahead && + rl_num_chars_to_read == 0 && (RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) && _rl_pushed_input_available () == 0 && _rl_input_queued (0) && @@ -941,8 +982,7 @@ rl_insert (count, c) /* Insert the next typed character verbatim. */ static int -_rl_insert_next (count) - int count; +_rl_insert_next (int count) { int c; @@ -966,24 +1006,37 @@ _rl_insert_next (count) #if defined (READLINE_CALLBACKS) static int -_rl_insert_next_callback (data) - _rl_callback_generic_arg *data; +_rl_insert_next_callback (_rl_callback_generic_arg *data) { - int count; + int count, r; count = data->count; + r = 0; + + if (count < 0) + { + data->count++; + r = _rl_insert_next (1); + _rl_want_redisplay = 1; + /* If we should keep going, leave the callback function installed */ + if (data->count < 0 && r == 0) + return r; + count = 0; /* data->count == 0 || r != 0; force break below */ + } /* Deregister function, let rl_callback_read_char deallocate data */ _rl_callback_func = 0; _rl_want_redisplay = 1; - + + if (count == 0) + return r; + return _rl_insert_next (count); } #endif int -rl_quoted_insert (count, key) - int count, key; +rl_quoted_insert (int count, int key) { /* Let's see...should the callback interface futz with signal handling? */ #if defined (HANDLE_SIGNALS) @@ -999,14 +1052,24 @@ rl_quoted_insert (count, key) return (0); } #endif - + + /* A negative count means to quote the next -COUNT characters. */ + if (count < 0) + { + int r; + + do + r = _rl_insert_next (1); + while (r == 0 && ++count < 0); + return r; + } + return _rl_insert_next (count); } /* Insert a tab character. */ int -rl_tab_insert (count, key) - int count, key; +rl_tab_insert (int count, int key) { return (_rl_insert_char (count, '\t')); } @@ -1015,8 +1078,7 @@ rl_tab_insert (count, key) KEY is the key that invoked this command. I guess it could have meaning in the future. */ int -rl_newline (count, key) - int count, key; +rl_newline (int count, int key) { rl_done = 1; @@ -1049,8 +1111,7 @@ rl_newline (count, key) is just a stub, you bind keys to it and the code in _rl_dispatch () is special cased. */ int -rl_do_lowercase_version (ignore1, ignore2) - int ignore1, ignore2; +rl_do_lowercase_version (int ignore1, int ignore2) { return 0; } @@ -1059,8 +1120,7 @@ rl_do_lowercase_version (ignore1, ignore2) rubout in overwrite mode has one oddity: it replaces a control character that's displayed as two characters (^X) with two spaces. */ int -_rl_overwrite_rubout (count, key) - int count, key; +_rl_overwrite_rubout (int count, int key) { int opoint; int i, l; @@ -1102,8 +1162,7 @@ _rl_overwrite_rubout (count, key) /* Rubout the character behind point. */ int -rl_rubout (count, key) - int count, key; +rl_rubout (int count, int key) { if (count < 0) return (rl_delete (-count, key)); @@ -1121,8 +1180,7 @@ rl_rubout (count, key) } int -_rl_rubout_char (count, key) - int count, key; +_rl_rubout_char (int count, int key) { int orig_point; unsigned char c; @@ -1167,8 +1225,7 @@ _rl_rubout_char (count, key) /* Delete the character under the cursor. Given a numeric argument, kill that many characters instead. */ int -rl_delete (count, key) - int count, key; +rl_delete (int count, int key) { int xpoint; @@ -1205,8 +1262,7 @@ rl_delete (count, key) behind the cursor is deleted. COUNT is obeyed and may be used to delete forward or backward that many characters. */ int -rl_rubout_or_delete (count, key) - int count, key; +rl_rubout_or_delete (int count, int key) { if (rl_end != 0 && rl_point == rl_end) return (_rl_rubout_char (count, key)); @@ -1216,8 +1272,7 @@ rl_rubout_or_delete (count, key) /* Delete all spaces and tabs around point. */ int -rl_delete_horizontal_space (count, ignore) - int count, ignore; +rl_delete_horizontal_space (int count, int ignore) { int start; @@ -1245,8 +1300,7 @@ rl_delete_horizontal_space (count, ignore) is caught before this is invoked, so this really does the same thing as delete-char-or-list-or-eof, as long as it's bound to the eof character. */ int -rl_delete_or_show_completions (count, key) - int count, key; +rl_delete_or_show_completions (int count, int key) { if (rl_end != 0 && rl_point == rl_end) return (rl_possible_completions (count, key)); @@ -1261,8 +1315,7 @@ rl_delete_or_show_completions (count, key) /* Turn the current line into a comment in shell history. A K*rn shell style function. */ int -rl_insert_comment (count, key) - int count, key; +rl_insert_comment (int count, int key) { char *rl_comment_text; int rl_comment_len; @@ -1300,24 +1353,21 @@ rl_insert_comment (count, key) /* Uppercase the word at point. */ int -rl_upcase_word (count, key) - int count, key; +rl_upcase_word (int count, int key) { return (rl_change_case (count, UpCase)); } /* Lowercase the word at point. */ int -rl_downcase_word (count, key) - int count, key; +rl_downcase_word (int count, int key) { return (rl_change_case (count, DownCase)); } /* Upcase the first letter, downcase the rest. */ int -rl_capitalize_word (count, key) - int count, key; +rl_capitalize_word (int count, int key) { return (rl_change_case (count, CapCase)); } @@ -1328,11 +1378,11 @@ rl_capitalize_word (count, key) If a negative argument is given, leave point where it started, otherwise, leave it where it moves to. */ static int -rl_change_case (count, op) - int count, op; +rl_change_case (int count, int op) { int start, next, end; - int inword, c, nc, nop; + int inword, nc, nop; + wchar_t c; #if defined (HANDLE_MULTIBYTE) wchar_t wc, nwc; char mb[MB_LEN_MAX+1]; @@ -1382,7 +1432,10 @@ rl_change_case (count, op) } else nop = op; - if (MB_CUR_MAX == 1 || rl_byte_oriented || isascii ((unsigned char)c)) + /* Can't check isascii here; some languages (e.g, Turkish) have + multibyte upper and lower case equivalents of single-byte ascii + characters */ + if (MB_CUR_MAX == 1 || rl_byte_oriented) { nc = (nop == UpCase) ? _rl_to_upper (c) : _rl_to_lower (c); rl_line_buffer[start] = nc; @@ -1398,11 +1451,35 @@ rl_change_case (count, op) nwc = (nop == UpCase) ? _rl_to_wupper (wc) : _rl_to_wlower (wc); if (nwc != wc) /* just skip unchanged characters */ { + char *s, *e; mlen = wcrtomb (mb, nwc, &mps); if (mlen > 0) mb[mlen] = '\0'; - /* Assume the same width */ - strncpy (rl_line_buffer + start, mb, mlen); + /* what to do if m != mlen? adjust below */ + /* m == length of old char, mlen == length of new char */ + s = rl_line_buffer + start; + e = rl_line_buffer + rl_end; + if (m == mlen) + memcpy (s, mb, mlen); + else if (m > mlen) + { + memcpy (s, mb, mlen); + memmove (s + mlen, s + m, (e - s) - m); + next -= m - mlen; /* next char changes */ + end -= m - mlen; /* end of word changes */ + rl_end -= m - mlen; /* end of line changes */ + rl_line_buffer[rl_end] = 0; + } + else if (m < mlen) + { + rl_extend_line_buffer (mlen - m + 1); + memmove (s + mlen, s + m, (e - s) - m); + memcpy (s, mb, mlen); + next += mlen - m; /* next char changes */ + end += mlen - m; /* end of word changes */ + rl_end += mlen - m; /* end of line changes */ + rl_line_buffer[rl_end] = 0; + } } } #endif @@ -1423,8 +1500,7 @@ rl_change_case (count, op) /* Transpose the words at point. If point is at the end of the line, transpose the two words before point. */ int -rl_transpose_words (count, key) - int count, key; +rl_transpose_words (int count, int key) { char *word1, *word2; int w1_beg, w1_end, w2_beg, w2_end; @@ -1484,8 +1560,7 @@ rl_transpose_words (count, key) /* Transpose the characters at point. If point is at the end of the line, then transpose the characters before point. */ int -rl_transpose_chars (count, key) - int count, key; +rl_transpose_chars (int count, int key) { #if defined (HANDLE_MULTIBYTE) char *dummy; @@ -1549,13 +1624,9 @@ rl_transpose_chars (count, key) int #if defined (HANDLE_MULTIBYTE) -_rl_char_search_internal (count, dir, smbchar, len) - int count, dir; - char *smbchar; - int len; +_rl_char_search_internal (int count, int dir, char *smbchar, int len) #else -_rl_char_search_internal (count, dir, schar) - int count, dir, schar; +_rl_char_search_internal (int count, int dir, int schar) #endif { int pos, inc; @@ -1619,8 +1690,7 @@ _rl_char_search_internal (count, dir, schar) that there are two separate versions of this function. */ #if defined (HANDLE_MULTIBYTE) static int -_rl_char_search (count, fdir, bdir) - int count, fdir, bdir; +_rl_char_search (int count, int fdir, int bdir) { char mbchar[MB_LEN_MAX]; int mb_len; @@ -1637,8 +1707,7 @@ _rl_char_search (count, fdir, bdir) } #else /* !HANDLE_MULTIBYTE */ static int -_rl_char_search (count, fdir, bdir) - int count, fdir, bdir; +_rl_char_search (int count, int fdir, int bdir) { int c; @@ -1669,8 +1738,7 @@ _rl_char_search_callback (data) #endif int -rl_char_search (count, key) - int count, key; +rl_char_search (int count, int key) { #if defined (READLINE_CALLBACKS) if (RL_ISSTATE (RL_STATE_CALLBACK)) @@ -1687,8 +1755,7 @@ rl_char_search (count, key) } int -rl_backward_char_search (count, key) - int count, key; +rl_backward_char_search (int count, int key) { #if defined (READLINE_CALLBACKS) if (RL_ISSTATE (RL_STATE_CALLBACK)) @@ -1712,10 +1779,9 @@ rl_backward_char_search (count, key) /* Set the mark at POSITION. */ int -_rl_set_mark_at_pos (position) - int position; +_rl_set_mark_at_pos (int position) { - if (position > rl_end) + if (position < 0 || position > rl_end) return 1; rl_mark = position; @@ -1724,23 +1790,22 @@ _rl_set_mark_at_pos (position) /* A bindable command to set the mark. */ int -rl_set_mark (count, key) - int count, key; +rl_set_mark (int count, int key) { return (_rl_set_mark_at_pos (rl_explicit_arg ? count : rl_point)); } /* Exchange the position of mark and point. */ int -rl_exchange_point_and_mark (count, key) - int count, key; +rl_exchange_point_and_mark (int count, int key) { if (rl_mark > rl_end) rl_mark = -1; - if (rl_mark == -1) + if (rl_mark < 0) { rl_ding (); + rl_mark = 0; /* like _RL_FIX_POINT */ return 1; } else diff --git a/lib/readline/tilde.c b/lib/readline/tilde.c index 95bc4215c..9d0f29614 100644 --- a/lib/readline/tilde.c +++ b/lib/readline/tilde.c @@ -1,6 +1,6 @@ /* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */ -/* Copyright (C) 1988-2009 Free Software Foundation, Inc. +/* Copyright (C) 1988-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -125,9 +125,7 @@ static char *glue_prefix_and_suffix PARAMS((char *, const char *, int)); the tilde which starts the expansion. Place the length of the text which identified this tilde starter in LEN, excluding the tilde itself. */ static int -tilde_find_prefix (string, len) - const char *string; - int *len; +tilde_find_prefix (const char *string, int *len) { register int i, j, string_len; register char **prefixes; @@ -160,8 +158,7 @@ tilde_find_prefix (string, len) /* Find the end of a tilde expansion in STRING, and return the index of the character which ends the tilde definition. */ static int -tilde_find_suffix (string) - const char *string; +tilde_find_suffix (const char *string) { register int i, j, string_len; register char **suffixes; @@ -189,8 +186,7 @@ tilde_find_suffix (string) /* Return a new string which is the result of tilde expanding STRING. */ char * -tilde_expand (string) - const char *string; +tilde_expand (const char *string) { char *result; int result_size, result_index; @@ -267,9 +263,7 @@ tilde_expand (string) non-null, the index of the end of the prefix into FNAME is returned in the location it points to. */ static char * -isolate_tilde_prefix (fname, lenp) - const char *fname; - int *lenp; +isolate_tilde_prefix (const char *fname, int *lenp) { char *ret; int i; @@ -293,9 +287,7 @@ isolate_tilde_prefix (fname, lenp) function. Right now, it just calls tilde_find_suffix and allocates new memory, but it can be expanded to do different things later. */ char * -tilde_find_word (fname, flags, lenp) - const char *fname; - int flags, *lenp; +tilde_find_word (const char *fname, int flags, int *lenp) { int x; char *r; @@ -323,10 +315,7 @@ tilde_find_word (fname, flags, lenp) /* Return a string that is PREFIX concatenated with SUFFIX starting at SUFFIND. */ static char * -glue_prefix_and_suffix (prefix, suffix, suffind) - char *prefix; - const char *suffix; - int suffind; +glue_prefix_and_suffix (char *prefix, const char *suffix, int suffind) { char *ret; int plen, slen; @@ -344,8 +333,7 @@ glue_prefix_and_suffix (prefix, suffix, suffind) tilde. If there is no expansion, call tilde_expansion_failure_hook. This always returns a newly-allocated string, never static storage. */ char * -tilde_expand_word (filename) - const char *filename; +tilde_expand_word (const char *filename) { char *dirname, *expansion, *username; int user_len; @@ -434,9 +422,7 @@ tilde_expand_word (filename) #undef NULL #include -main (argc, argv) - int argc; - char **argv; +main (int argc, char **argv) { char *result, line[512]; int done = 0; @@ -464,11 +450,10 @@ main (argc, argv) exit (0); } -static void memory_error_and_abort (); +static void memory_error_and_abort (void); static void * -xmalloc (bytes) - size_t bytes; +xmalloc (size_t bytes) { void *temp = (char *)malloc (bytes); @@ -478,9 +463,7 @@ xmalloc (bytes) } static void * -xrealloc (pointer, bytes) - void *pointer; - int bytes; +xrealloc (void *pointer, int bytes) { void *temp; @@ -496,7 +479,7 @@ xrealloc (pointer, bytes) } static void -memory_error_and_abort () +memory_error_and_abort (void) { fprintf (stderr, "readline: out of virtual memory\n"); abort (); diff --git a/lib/readline/undo.c b/lib/readline/undo.c index 58363040c..ae65d3804 100644 --- a/lib/readline/undo.c +++ b/lib/readline/undo.c @@ -1,6 +1,6 @@ /* undo.c - manage list of changes to lines, offering opportunity to undo them */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -51,6 +51,8 @@ extern void _hs_replace_history_data PARAMS((int, histdata_t *, histdata_t *)); +extern HIST_ENTRY *_rl_saved_line_for_history; + /* Non-zero tells rl_delete_text and rl_insert_text to not add to the undo list. */ int _rl_doing_an_undo = 0; @@ -68,10 +70,7 @@ UNDO_LIST *rl_undo_list = (UNDO_LIST *)NULL; /* **************************************************************** */ static UNDO_LIST * -alloc_undo_entry (what, start, end, text) - enum undo_code what; - int start, end; - char *text; +alloc_undo_entry (enum undo_code what, int start, int end, char *text) { UNDO_LIST *temp; @@ -88,10 +87,7 @@ alloc_undo_entry (what, start, end, text) /* Remember how to undo something. Concatenate some undos if that seems right. */ void -rl_add_undo (what, start, end, text) - enum undo_code what; - int start, end; - char *text; +rl_add_undo (enum undo_code what, int start, int end, char *text) { UNDO_LIST *temp; @@ -102,8 +98,7 @@ rl_add_undo (what, start, end, text) /* Free an UNDO_LIST */ void -_rl_free_undo_list (ul) - UNDO_LIST *ul; +_rl_free_undo_list (UNDO_LIST *ul) { UNDO_LIST *release; @@ -121,7 +116,7 @@ _rl_free_undo_list (ul) /* Free the existing undo list. */ void -rl_free_undo_list () +rl_free_undo_list (void) { UNDO_LIST *release, *orig_list; @@ -132,8 +127,7 @@ rl_free_undo_list () } UNDO_LIST * -_rl_copy_undo_entry (entry) - UNDO_LIST *entry; +_rl_copy_undo_entry (UNDO_LIST *entry) { UNDO_LIST *new; @@ -143,8 +137,7 @@ _rl_copy_undo_entry (entry) } UNDO_LIST * -_rl_copy_undo_list (head) - UNDO_LIST *head; +_rl_copy_undo_list (UNDO_LIST *head) { UNDO_LIST *list, *new, *roving, *c; @@ -173,9 +166,9 @@ _rl_copy_undo_list (head) /* Undo the next thing in the list. Return 0 if there is nothing to undo, or non-zero if there was. */ int -rl_do_undo () +rl_do_undo (void) { - UNDO_LIST *release; + UNDO_LIST *release, *search; int waiting_for_begin, start, end; HIST_ENTRY *cur, *temp; @@ -232,6 +225,7 @@ rl_do_undo () release = rl_undo_list; rl_undo_list = rl_undo_list->next; + release->next = 0; /* XXX */ /* If we are editing a history entry, make sure the change is replicated in the history entry's line */ @@ -244,8 +238,30 @@ rl_do_undo () xfree (temp); } + /* Make sure there aren't any history entries with that undo list */ _hs_replace_history_data (-1, (histdata_t *)release, (histdata_t *)rl_undo_list); + /* And make sure this list isn't anywhere in the saved line for history */ + if (_rl_saved_line_for_history && _rl_saved_line_for_history->data) + { + /* Brute force; no finesse here */ + search = (UNDO_LIST *)_rl_saved_line_for_history->data; + if (search == release) + _rl_saved_line_for_history->data = rl_undo_list; + else + { + while (search->next) + { + if (search->next == release) + { + search->next = rl_undo_list; + break; + } + search = search->next; + } + } + } + xfree (release); } while (waiting_for_begin); @@ -255,8 +271,7 @@ rl_do_undo () #undef TRANS int -_rl_fix_last_undo_of_type (type, start, end) - int type, start, end; +_rl_fix_last_undo_of_type (int type, int start, int end) { UNDO_LIST *rl; @@ -274,7 +289,7 @@ _rl_fix_last_undo_of_type (type, start, end) /* Begin a group. Subsequent undos are undone as an atomic operation. */ int -rl_begin_undo_group () +rl_begin_undo_group (void) { rl_add_undo (UNDO_BEGIN, 0, 0, 0); _rl_undo_group_level++; @@ -283,7 +298,7 @@ rl_begin_undo_group () /* End an undo group started with rl_begin_undo_group (). */ int -rl_end_undo_group () +rl_end_undo_group (void) { rl_add_undo (UNDO_END, 0, 0, 0); _rl_undo_group_level--; @@ -292,8 +307,7 @@ rl_end_undo_group () /* Save an undo entry for the text from START to END. */ int -rl_modifying (start, end) - int start, end; +rl_modifying (int start, int end) { if (start > end) { @@ -313,8 +327,7 @@ rl_modifying (start, end) /* Revert the current line to its previous state. */ int -rl_revert_line (count, key) - int count, key; +rl_revert_line (int count, int key) { if (rl_undo_list == 0) rl_ding (); @@ -333,8 +346,7 @@ rl_revert_line (count, key) /* Do some undoing of things that were done. */ int -rl_undo_command (count, key) - int count, key; +rl_undo_command (int count, int key) { if (count < 0) return 0; /* Nothing to do. */ diff --git a/lib/readline/util.c b/lib/readline/util.c index 4589c61f9..e009b2383 100644 --- a/lib/readline/util.c +++ b/lib/readline/util.c @@ -1,6 +1,6 @@ /* util.c -- readline utility functions */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -70,8 +70,7 @@ int _rl_allow_pathname_alphabetic_chars = 0; static const char * const pathname_alphabetic_chars = "/-_=~.#$"; int -rl_alphabetic (c) - int c; +rl_alphabetic (int c) { if (ALPHABETIC (c)) return (1); @@ -97,7 +96,7 @@ _rl_walphabetic (wchar_t wc) /* How to abort things. */ int -_rl_abort_internal () +_rl_abort_internal (void) { rl_ding (); rl_clear_message (); @@ -117,22 +116,19 @@ _rl_abort_internal () } int -rl_abort (count, key) - int count, key; +rl_abort (int count, int key) { return (_rl_abort_internal ()); } int -_rl_null_function (count, key) - int count, key; +_rl_null_function (int count, int key) { return 0; } int -rl_tty_status (count, key) - int count, key; +rl_tty_status (int count, int key) { #if defined (TIOCSTAT) ioctl (1, TIOCSTAT, (char *)0); @@ -146,8 +142,7 @@ rl_tty_status (count, key) /* Return a copy of the string between FROM and TO. FROM is inclusive, TO is not. */ char * -rl_copy_text (from, to) - int from, to; +rl_copy_text (int from, int to) { register int length; char *copy; @@ -166,8 +161,7 @@ rl_copy_text (from, to) /* Increase the size of RL_LINE_BUFFER until it has enough space to hold LEN characters. */ void -rl_extend_line_buffer (len) - int len; +rl_extend_line_buffer (int len) { while (len >= rl_line_buffer_len) { @@ -181,8 +175,7 @@ rl_extend_line_buffer (len) /* A function for simple tilde expansion. */ int -rl_tilde_expand (ignore, key) - int ignore, key; +rl_tilde_expand (int ignore, int key) { register int start, end; char *homedir, *temp; @@ -200,7 +193,7 @@ rl_tilde_expand (ignore, key) } else if (start >= 0 && rl_line_buffer[start] != '~') { - for (; !whitespace (rl_line_buffer[start]) && start >= 0; start--) + for (; start >= 0 && !whitespace (rl_line_buffer[start]); start--) ; start++; } @@ -324,8 +317,7 @@ _rl_errmsg (format, arg1, arg2) /* Determine if s2 occurs in s1. If so, return a pointer to the match in s1. The compare is case insensitive. */ char * -_rl_strindex (s1, s2) - register const char *s1, *s2; +_rl_strindex (const char *s1, const char *s2) { register int i, l, len; @@ -339,8 +331,7 @@ _rl_strindex (s1, s2) /* Find the first occurrence in STRING1 of any character from STRING2. Return a pointer to the character in STRING1. */ char * -_rl_strpbrk (string1, string2) - const char *string1, *string2; +_rl_strpbrk (const char *string1, const char *string2) { register const char *scan; #if defined (HANDLE_MULTIBYTE) @@ -374,10 +365,7 @@ _rl_strpbrk (string1, string2) /* Compare at most COUNT characters from string1 to string2. Case doesn't matter (strncasecmp). */ int -_rl_strnicmp (string1, string2, count) - const char *string1; - const char *string2; - int count; +_rl_strnicmp (const char *string1, const char *string2, int count) { register const char *s1; register const char *s2; @@ -404,9 +392,7 @@ _rl_strnicmp (string1, string2, count) /* strcmp (), but caseless (strcasecmp). */ int -_rl_stricmp (string1, string2) - const char *string1; - const char *string2; +_rl_stricmp (const char *string1, const char *string2) { register const char *s1; register const char *s2; @@ -431,8 +417,7 @@ _rl_stricmp (string1, string2) /* Stupid comparison routine for qsort () ing strings. */ int -_rl_qsort_string_compare (s1, s2) - char **s1, **s2; +_rl_qsort_string_compare (char **s1, char **s2) { #if defined (HAVE_STRCOLL) return (strcoll (*s1, *s2)); @@ -448,7 +433,7 @@ _rl_qsort_string_compare (s1, s2) } /* Function equivalents for the macros defined in chardefs.h. */ -#define FUNCTION_FOR_MACRO(f) int (f) (c) int c; { return f (c); } +#define FUNCTION_FOR_MACRO(f) int (f) (int c) { return f (c); } FUNCTION_FOR_MACRO (_rl_digit_p) FUNCTION_FOR_MACRO (_rl_digit_value) @@ -461,8 +446,7 @@ FUNCTION_FOR_MACRO (_rl_uppercase_p) /* A convenience function, to force memory deallocation to be performed by readline. DLLs on Windows apparently require this. */ void -rl_free (mem) - void *mem; +rl_free (void *mem) { if (mem) free (mem); @@ -472,8 +456,7 @@ rl_free (mem) all `public' readline header files. */ #undef _rl_savestring char * -_rl_savestring (s) - const char *s; +_rl_savestring (const char *s) { return (strcpy ((char *)xmalloc (1 + (int)strlen (s)), (s))); } @@ -512,7 +495,7 @@ _rl_trace (va_alist) } int -_rl_tropen () +_rl_tropen (void) { char fnbuf[128], *x; @@ -525,14 +508,14 @@ _rl_tropen () #else x = "/var/tmp"; #endif - sprintf (fnbuf, "%s/rltrace.%ld", x, (long)getpid()); + snprintf (fnbuf, sizeof (fnbuf), "%s/rltrace.%ld", x, (long)getpid()); unlink(fnbuf); _rl_tracefp = fopen (fnbuf, "w+"); return _rl_tracefp != 0; } int -_rl_trclose () +_rl_trclose (void) { int r; @@ -542,8 +525,7 @@ _rl_trclose () } void -_rl_settracefp (fp) - FILE *fp; +_rl_settracefp (FILE *fp) { _rl_tracefp = fp; } @@ -559,8 +541,7 @@ _rl_settracefp (fp) /* Report STRING to the audit system. */ void -_rl_audit_tty (string) - char *string; +_rl_audit_tty (char *string) { struct audit_message req; struct sockaddr_nl addr; diff --git a/lib/readline/vi_keymap.c b/lib/readline/vi_keymap.c index e5da2e0fa..045258bd8 100644 --- a/lib/readline/vi_keymap.c +++ b/lib/readline/vi_keymap.c @@ -1,6 +1,6 @@ /* vi_keymap.c -- the keymap for vi_mode in readline (). */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. diff --git a/lib/readline/vi_mode.c b/lib/readline/vi_mode.c index 56d2e72fb..836371c95 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-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -63,6 +63,21 @@ #define member(c, s) ((c) ? (char *)strchr ((s), (c)) != (char *)NULL : 0) #endif +/* Increment START to the next character in RL_LINE_BUFFER, handling multibyte chars */ +#if defined (HANDLE_MULTIBYTE) +#define INCREMENT_POS(start) \ + do { \ + if (MB_CUR_MAX == 1 || rl_byte_oriented) \ + start++; \ + else \ + start = _rl_find_next_mbchar (rl_line_buffer, start, 1, MB_FIND_ANY); \ + } while (0) +#else /* !HANDLE_MULTIBYTE */ +#define INCREMENT_POS(start) (start)++ +#endif /* !HANDLE_MULTIBYTE */ + +/* This is global so other parts of the code can check whether the last + command was a text modification command. */ int _rl_vi_last_command = 'i'; /* default `.' puts you in insert mode */ _rl_vimotion_cxt *_rl_vimvcxt = 0; @@ -99,7 +114,7 @@ static int _rl_vi_last_search_mblen; #else static int _rl_vi_last_search_char; #endif -static int _rl_vi_last_replacement; +static char _rl_vi_last_replacement[MB_LEN_MAX+1]; /* reserve for trailing NULL */ static int _rl_vi_last_key_before_insert; @@ -116,7 +131,7 @@ static void _rl_vi_save_insert PARAMS((UNDO_LIST *)); static void vi_save_insert_buffer PARAMS ((int, int)); -static void _rl_vi_backup PARAMS((void)); +static inline void _rl_vi_backup PARAMS((void)); static int _rl_vi_arg_dispatch PARAMS((int)); static int rl_digit_loop1 PARAMS((void)); @@ -124,6 +139,9 @@ static int rl_digit_loop1 PARAMS((void)); static int _rl_vi_set_mark PARAMS((void)); static int _rl_vi_goto_mark PARAMS((void)); +static inline int _rl_vi_advance_point PARAMS((void)); +static inline int _rl_vi_backup_point PARAMS((void)); + static void _rl_vi_append_forward PARAMS((int)); static int _rl_vi_callback_getchar PARAMS((char *, int)); @@ -146,7 +164,7 @@ static int vi_yank_dispatch PARAMS((_rl_vimotion_cxt *)); static int vidomove_dispatch PARAMS((_rl_vimotion_cxt *)); void -_rl_vi_initialize_line () +_rl_vi_initialize_line (void) { register int i, n; @@ -158,7 +176,7 @@ _rl_vi_initialize_line () } void -_rl_vi_reset_last () +_rl_vi_reset_last (void) { _rl_vi_last_command = 'i'; _rl_vi_last_repeat = 1; @@ -167,8 +185,7 @@ _rl_vi_reset_last () } void -_rl_vi_set_last (key, repeat, sign) - int key, repeat, sign; +_rl_vi_set_last (int key, int repeat, int sign) { _rl_vi_last_command = key; _rl_vi_last_repeat = repeat; @@ -178,31 +195,28 @@ _rl_vi_set_last (key, repeat, sign) /* A convenience function that calls _rl_vi_set_last to save the last command information and enters insertion mode. */ void -rl_vi_start_inserting (key, repeat, sign) - int key, repeat, sign; +rl_vi_start_inserting (int key, int repeat, int sign) { _rl_vi_set_last (key, repeat, sign); + rl_begin_undo_group (); /* ensure inserts aren't concatenated */ rl_vi_insertion_mode (1, key); } /* Is the command C a VI mode text modification command? */ int -_rl_vi_textmod_command (c) - int c; +_rl_vi_textmod_command (int c) { return (member (c, vi_textmod)); } int -_rl_vi_motion_command (c) - int c; +_rl_vi_motion_command (int c) { return (member (c, vi_motion)); } static void -_rl_vi_replace_insert (count) - int count; +_rl_vi_replace_insert (int count) { int nchars; @@ -217,8 +231,7 @@ _rl_vi_replace_insert (count) } static void -_rl_vi_stuff_insert (count) - int count; +_rl_vi_stuff_insert (int count) { rl_begin_undo_group (); while (count--) @@ -230,8 +243,7 @@ _rl_vi_stuff_insert (count) redo a text modification command. The default for _rl_vi_last_command puts you back into insert mode. */ int -rl_vi_redo (count, c) - int count, c; +rl_vi_redo (int count, int c) { int r; @@ -296,16 +308,14 @@ rl_vi_redo (count, c) /* A placeholder for further expansion. */ int -rl_vi_undo (count, key) - int count, key; +rl_vi_undo (int count, int key) { return (rl_undo_command (count, key)); } /* Yank the nth arg from the previous line into this line at point. */ int -rl_vi_yank_arg (count, key) - int count, key; +rl_vi_yank_arg (int count, int key) { /* Readline thinks that the first word on a line is the 0th, while vi thinks the first word on a line is the 1st. Compensate. */ @@ -320,8 +330,7 @@ rl_vi_yank_arg (count, key) /* With an argument, move back that many history lines, else move to the beginning of history. */ int -rl_vi_fetch_history (count, c) - int count, c; +rl_vi_fetch_history (int count, int c) { int wanted; @@ -345,8 +354,7 @@ rl_vi_fetch_history (count, c) /* Search again for the last thing searched for. */ int -rl_vi_search_again (count, key) - int count, key; +rl_vi_search_again (int count, int key) { switch (key) { @@ -363,8 +371,7 @@ rl_vi_search_again (count, key) /* Do a vi style search. */ int -rl_vi_search (count, key) - int count, key; +rl_vi_search (int count, int key) { switch (key) { @@ -387,14 +394,13 @@ rl_vi_search (count, key) /* Completion, from vi's point of view. */ int -rl_vi_complete (ignore, key) - int ignore, key; +rl_vi_complete (int ignore, int key) { if ((rl_point < rl_end) && (!whitespace (rl_line_buffer[rl_point]))) { if (!whitespace (rl_line_buffer[rl_point + 1])) rl_vi_end_word (1, 'E'); - rl_point++; + _rl_vi_advance_point (); } if (key == '*') @@ -414,8 +420,7 @@ rl_vi_complete (ignore, key) /* Tilde expansion for vi mode. */ int -rl_vi_tilde_expand (ignore, key) - int ignore, key; +rl_vi_tilde_expand (int ignore, int key) { rl_tilde_expand (0, key); rl_vi_start_inserting (key, 1, rl_arg_sign); @@ -424,8 +429,7 @@ rl_vi_tilde_expand (ignore, key) /* Previous word in vi mode. */ int -rl_vi_prev_word (count, key) - int count, key; +rl_vi_prev_word (int count, int key) { if (count < 0) return (rl_vi_next_word (-count, key)); @@ -446,8 +450,7 @@ rl_vi_prev_word (count, key) /* Next word in vi mode. */ int -rl_vi_next_word (count, key) - int count, key; +rl_vi_next_word (int count, int key) { if (count < 0) return (rl_vi_prev_word (-count, key)); @@ -465,10 +468,72 @@ rl_vi_next_word (count, key) return (0); } +static inline int +_rl_vi_advance_point (void) +{ + int point; + + point = rl_point; + if (rl_point < rl_end) +#if defined (HANDLE_MULTIBYTE) + { + if (MB_CUR_MAX == 1 || rl_byte_oriented) + rl_point++; + else + { + point = rl_point; + rl_point = _rl_forward_char_internal (1); + if (point == rl_point || rl_point > rl_end) + rl_point = rl_end; + } + } +#else + rl_point++; +#endif + + return point; +} + +/* Move the cursor back one character. */ +static inline void +_rl_vi_backup (void) +{ + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); + else + rl_point--; +} + +/* Move the point back one character, returning the starting value and not + doing anything at the beginning of the line */ +static inline int +_rl_vi_backup_point (void) +{ + int point; + + point = rl_point; + if (rl_point > 0) +#if defined (HANDLE_MULTIBYTE) + { + if (MB_CUR_MAX == 1 || rl_byte_oriented) + rl_point--; + else + { + point = rl_point; + rl_point = _rl_backward_char_internal (1); + if (rl_point < 0) + rl_point = 0; /* XXX - not really necessary */ + } + } +#else + rl_point--; +#endif + return point; +} + /* Move to the end of the ?next? word. */ int -rl_vi_end_word (count, key) - int count, key; +rl_vi_end_word (int count, int key) { if (count < 0) { @@ -485,25 +550,23 @@ rl_vi_end_word (count, key) /* Move forward a word the way that 'W' does. */ int -rl_vi_fWord (count, ignore) - int count, ignore; +rl_vi_fWord (int count, int ignore) { while (count-- && rl_point < (rl_end - 1)) { /* Skip until whitespace. */ while (!whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end) - rl_point++; + _rl_vi_advance_point (); /* Now skip whitespace. */ while (whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end) - rl_point++; + _rl_vi_advance_point (); } return (0); } int -rl_vi_bWord (count, ignore) - int count, ignore; +rl_vi_bWord (int count, int ignore) { while (count-- && rl_point > 0) { @@ -514,141 +577,177 @@ rl_vi_bWord (count, ignore) rl_point--; while (rl_point > 0 && whitespace (rl_line_buffer[rl_point])) - rl_point--; + _rl_vi_backup_point (); if (rl_point > 0) { - while (--rl_point >= 0 && !whitespace (rl_line_buffer[rl_point])); - rl_point++; + do + _rl_vi_backup_point (); + while (rl_point > 0 && !whitespace (rl_line_buffer[rl_point])); + if (rl_point > 0) /* hit whitespace */ + rl_point++; + + if (rl_point < 0) + rl_point = 0; } } return (0); } int -rl_vi_eWord (count, ignore) - int count, ignore; +rl_vi_eWord (int count, int ignore) { + int opoint; + while (count-- && rl_point < (rl_end - 1)) { - if (!whitespace (rl_line_buffer[rl_point])) - rl_point++; + if (whitespace (rl_line_buffer[rl_point]) == 0) + _rl_vi_advance_point (); /* Move to the next non-whitespace character (to the start of the next word). */ while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) - rl_point++; + _rl_vi_advance_point (); if (rl_point && rl_point < rl_end) { + opoint = rl_point; + /* Skip whitespace. */ while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) - rl_point++; + opoint = _rl_vi_advance_point (); /* XXX - why? */ /* Skip until whitespace. */ while (rl_point < rl_end && !whitespace (rl_line_buffer[rl_point])) - rl_point++; + opoint = _rl_vi_advance_point (); /* Move back to the last character of the word. */ - rl_point--; + rl_point = opoint; } } return (0); } int -rl_vi_fword (count, ignore) - int count, ignore; +rl_vi_fword (int count, int ignore) { + int opoint; + while (count-- && rl_point < (rl_end - 1)) { /* Move to white space (really non-identifer). */ if (_rl_isident (rl_line_buffer[rl_point])) { while (_rl_isident (rl_line_buffer[rl_point]) && rl_point < rl_end) - rl_point++; + _rl_vi_advance_point (); } else /* if (!whitespace (rl_line_buffer[rl_point])) */ { while (!_rl_isident (rl_line_buffer[rl_point]) && !whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end) - rl_point++; + _rl_vi_advance_point (); } + opoint = rl_point; + /* Move past whitespace. */ while (whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end) - rl_point++; + opoint = _rl_vi_advance_point (); } return (0); } int -rl_vi_bword (count, ignore) - int count, ignore; +rl_vi_bword (int count, int ignore) { + int opoint; + while (count-- && rl_point > 0) { - int last_is_ident; + int prev_is_ident, cur_is_ident; /* If we are at the start of a word, move back to whitespace so we will go back to the start of the previous word. */ if (!whitespace (rl_line_buffer[rl_point]) && whitespace (rl_line_buffer[rl_point - 1])) - rl_point--; + if (--rl_point == 0) + break; /* If this character and the previous character are `opposite', move back so we don't get messed up by the rl_point++ down there in the while loop. Without this code, words like `l;' screw up the function. */ - last_is_ident = _rl_isident (rl_line_buffer[rl_point - 1]); - if ((_rl_isident (rl_line_buffer[rl_point]) && !last_is_ident) || - (!_rl_isident (rl_line_buffer[rl_point]) && last_is_ident)) - rl_point--; + cur_is_ident = _rl_isident (rl_line_buffer[rl_point]); + opoint = _rl_vi_backup_point (); + prev_is_ident = _rl_isident (rl_line_buffer[rl_point]); + if ((cur_is_ident && !prev_is_ident) || (!cur_is_ident && prev_is_ident)) + ; /* leave point alone, we backed it up one character */ + else + rl_point = opoint; while (rl_point > 0 && whitespace (rl_line_buffer[rl_point])) - rl_point--; + _rl_vi_backup_point (); if (rl_point > 0) { + opoint = rl_point; if (_rl_isident (rl_line_buffer[rl_point])) - while (--rl_point >= 0 && _rl_isident (rl_line_buffer[rl_point])); + do + opoint = _rl_vi_backup_point (); + while (rl_point > 0 && _rl_isident (rl_line_buffer[rl_point])); else - while (--rl_point >= 0 && !_rl_isident (rl_line_buffer[rl_point]) && + do + opoint = _rl_vi_backup_point (); + while (rl_point > 0 && !_rl_isident (rl_line_buffer[rl_point]) && !whitespace (rl_line_buffer[rl_point])); - rl_point++; + + if (rl_point > 0) + rl_point = opoint; + + if (rl_point < 0) + rl_point = 0; } } return (0); } int -rl_vi_eword (count, ignore) - int count, ignore; +rl_vi_eword (int count, int ignore) { - while (count-- && rl_point < rl_end - 1) + int opoint; + + while (count-- && rl_point < (rl_end - 1)) { - if (!whitespace (rl_line_buffer[rl_point])) - rl_point++; + if (whitespace (rl_line_buffer[rl_point]) == 0) + _rl_vi_advance_point (); while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) - rl_point++; + _rl_vi_advance_point (); + opoint = rl_point; if (rl_point < rl_end) { if (_rl_isident (rl_line_buffer[rl_point])) - while (++rl_point < rl_end && _rl_isident (rl_line_buffer[rl_point])); + do + { + opoint = _rl_vi_advance_point (); + } + while (rl_point < rl_end && _rl_isident (rl_line_buffer[rl_point])); else - while (++rl_point < rl_end && !_rl_isident (rl_line_buffer[rl_point]) + do + { + opoint = _rl_vi_advance_point (); + } + while (rl_point < rl_end && !_rl_isident (rl_line_buffer[rl_point]) && !whitespace (rl_line_buffer[rl_point])); } - rl_point--; + rl_point = opoint; } return (0); } int -rl_vi_insert_beg (count, key) - int count, key; +rl_vi_insert_beg (int count, int key) { rl_beg_of_line (1, key); rl_vi_insert_mode (1, key); @@ -656,32 +755,13 @@ rl_vi_insert_beg (count, key) } static void -_rl_vi_append_forward (key) - int key; +_rl_vi_append_forward (int key) { - int point; - - if (rl_point < rl_end) - { - if (MB_CUR_MAX == 1 || rl_byte_oriented) - rl_point++; - else - { - point = rl_point; -#if 0 - rl_forward_char (1, key); -#else - rl_point = _rl_forward_char_internal (1); -#endif - if (point == rl_point) - rl_point = rl_end; - } - } + _rl_vi_advance_point (); } int -rl_vi_append_mode (count, key) - int count, key; +rl_vi_append_mode (int count, int key) { _rl_vi_append_forward (key); rl_vi_start_inserting (key, 1, rl_arg_sign); @@ -689,8 +769,7 @@ rl_vi_append_mode (count, key) } int -rl_vi_append_eol (count, key) - int count, key; +rl_vi_append_eol (int count, int key) { rl_end_of_line (1, key); rl_vi_append_mode (1, key); @@ -699,8 +778,7 @@ rl_vi_append_eol (count, key) /* What to do in the case of C-d. */ int -rl_vi_eof_maybe (count, c) - int count, c; +rl_vi_eof_maybe (int count, int c) { return (rl_newline (1, '\n')); } @@ -710,8 +788,7 @@ rl_vi_eof_maybe (count, c) /* Switching from one mode to the other really just involves switching keymaps. */ int -rl_vi_insertion_mode (count, key) - int count, key; +rl_vi_insertion_mode (int count, int key) { _rl_keymap = vi_insertion_keymap; _rl_vi_last_key_before_insert = key; @@ -721,16 +798,14 @@ rl_vi_insertion_mode (count, key) } int -rl_vi_insert_mode (count, key) - int count, key; +rl_vi_insert_mode (int count, int key) { rl_vi_start_inserting (key, 1, rl_arg_sign); return (0); } static void -vi_save_insert_buffer (start, len) - int start, len; +vi_save_insert_buffer (int start, int len) { /* Same code as _rl_vi_save_insert below */ if (len >= vi_insert_buffer_size) @@ -743,7 +818,7 @@ vi_save_insert_buffer (start, len) } static void -_rl_vi_save_replace () +_rl_vi_save_replace (void) { int len, start, end; UNDO_LIST *up; @@ -766,8 +841,7 @@ _rl_vi_save_replace () } static void -_rl_vi_save_insert (up) - UNDO_LIST *up; +_rl_vi_save_insert (UNDO_LIST *up) { int len, start, end; @@ -786,7 +860,7 @@ _rl_vi_save_insert (up) } void -_rl_vi_done_inserting () +_rl_vi_done_inserting (void) { if (_rl_vi_doing_insert) { @@ -821,8 +895,7 @@ _rl_vi_done_inserting () } int -rl_vi_movement_mode (count, key) - int count, key; +rl_vi_movement_mode (int count, int key) { if (rl_point > 0) rl_backward_char (1, key); @@ -843,8 +916,7 @@ rl_vi_movement_mode (count, key) } int -rl_vi_arg_digit (count, c) - int count, c; +rl_vi_arg_digit (int count, int c) { if (c == '0' && rl_numeric_arg == 1 && !rl_explicit_arg) return (rl_beg_of_line (1, c)); @@ -855,8 +927,7 @@ rl_vi_arg_digit (count, c) /* Change the case of the next COUNT characters. */ #if defined (HANDLE_MULTIBYTE) static int -_rl_vi_change_mbchar_case (count) - int count; +_rl_vi_change_mbchar_case (int count) { wchar_t wc; char mb[MB_LEN_MAX+1]; @@ -895,7 +966,7 @@ _rl_vi_change_mbchar_case (count) rl_begin_undo_group (); rl_vi_delete (1, 0); if (rl_point < p) /* Did we retreat at EOL? */ - rl_point++; /* XXX - should we advance more than 1 for mbchar? */ + _rl_vi_advance_point (); rl_insert_text (mb); rl_end_undo_group (); rl_vi_check (); @@ -909,8 +980,7 @@ _rl_vi_change_mbchar_case (count) #endif int -rl_vi_change_case (count, ignore) - int count, ignore; +rl_vi_change_case (int count, int ignore) { int c, p; @@ -956,8 +1026,7 @@ rl_vi_change_case (count, ignore) } int -rl_vi_put (count, key) - int count, key; +rl_vi_put (int count, int key) { if (!_rl_uppercase_p (key) && (rl_point + 1 <= rl_end)) rl_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); @@ -969,36 +1038,26 @@ rl_vi_put (count, key) return (0); } -static void -_rl_vi_backup () -{ - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); - else - rl_point--; -} - +/* Move the cursor back one character if you're at the end of the line */ int -rl_vi_check () +rl_vi_check (void) { if (rl_point && rl_point == rl_end) - { - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) - rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); - else - rl_point--; - } + _rl_vi_backup (); return (0); } +/* Move to the character position specified by COUNT */ int -rl_vi_column (count, key) - int count, key; +rl_vi_column (int count, int key) { if (count > rl_end) rl_end_of_line (1, key); else - rl_point = count - 1; + { + rl_point = 0; + rl_point = _rl_forward_char_internal (count - 1); + } return (0); } @@ -1006,8 +1065,7 @@ rl_vi_column (count, key) argument should be aborted, 0 if we should not read any more chars, and 1 if we should continue to read chars. */ static int -_rl_vi_arg_dispatch (c) - int c; +_rl_vi_arg_dispatch (int c) { int key; @@ -1041,7 +1099,7 @@ _rl_vi_arg_dispatch (c) Don't recognize minus sign? Should this do rl_save_prompt/rl_restore_prompt? */ static int -rl_digit_loop1 () +rl_digit_loop1 (void) { int c, r; @@ -1061,10 +1119,12 @@ rl_digit_loop1 () return (0); } +/* This set of functions is basically to handle the commands that take a + motion argument while in callback mode: read the command, read the motion + command modifier, find the extent of the text to affect, and dispatch the + command for execution. */ static void -_rl_mvcxt_init (m, op, key) - _rl_vimotion_cxt *m; - int op, key; +_rl_mvcxt_init (_rl_vimotion_cxt *m, int op, int key) { m->op = op; m->state = m->flags = 0; @@ -1077,8 +1137,7 @@ _rl_mvcxt_init (m, op, key) } static _rl_vimotion_cxt * -_rl_mvcxt_alloc (op, key) - int op, key; +_rl_mvcxt_alloc (int op, int key) { _rl_vimotion_cxt *m; @@ -1088,15 +1147,13 @@ _rl_mvcxt_alloc (op, key) } static void -_rl_mvcxt_dispose (m) - _rl_vimotion_cxt *m; +_rl_mvcxt_dispose (_rl_vimotion_cxt *m) { xfree (m); } static int -rl_domove_motion_callback (m) - _rl_vimotion_cxt *m; +rl_domove_motion_callback (_rl_vimotion_cxt *m) { int c; @@ -1129,9 +1186,7 @@ rl_domove_motion_callback (m) } int -_rl_vi_domove_motion_cleanup (c, m) - int c; - _rl_vimotion_cxt *m; +_rl_vi_domove_motion_cleanup (int c, _rl_vimotion_cxt *m) { int r; @@ -1153,7 +1208,7 @@ _rl_vi_domove_motion_cleanup (c, m) non-whitespace character, move back one (presumably to whitespace). */ if ((_rl_to_upper (c) == 'W') && rl_point < rl_end && rl_point > rl_mark && !whitespace (rl_line_buffer[rl_point])) - rl_point--; + rl_point--; /* XXX */ /* If cw or cW, back up to the end of a word, so the behaviour of ce or cE is the actual result. Brute-force, no subtlety. */ @@ -1166,14 +1221,14 @@ _rl_vi_domove_motion_cleanup (c, m) /* Posix.2 says that if cw or cW moves the cursor towards the end of the line, the character under the cursor should be deleted. */ if (rl_point == rl_mark) - rl_point++; + _rl_vi_advance_point (); else { /* Move past the end of the word so that the kill doesn't remove the last letter of the previous word. Only do this if we are not at the end of the line. */ if (rl_point >= 0 && rl_point < (rl_end - 1) && !whitespace (rl_line_buffer[rl_point])) - rl_point++; + _rl_vi_advance_point (); } } @@ -1193,8 +1248,7 @@ _rl_vi_domove_motion_cleanup (c, m) #define RL_VIMOVENUMARG() (RL_ISSTATE (RL_STATE_VIMOTION) && RL_ISSTATE (RL_STATE_NUMERICARG)) static int -rl_domove_read_callback (m) - _rl_vimotion_cxt *m; +rl_domove_read_callback (_rl_vimotion_cxt *m) { int c, save; @@ -1260,8 +1314,7 @@ rl_domove_read_callback (m) } static int -rl_vi_domove_getchar (m) - _rl_vimotion_cxt *m; +rl_vi_domove_getchar (_rl_vimotion_cxt *m) { int c; @@ -1274,8 +1327,7 @@ rl_vi_domove_getchar (m) #if defined (READLINE_CALLBACKS) int -_rl_vi_domove_callback (m) - _rl_vimotion_cxt *m; +_rl_vi_domove_callback (_rl_vimotion_cxt *m) { int c, r; @@ -1288,10 +1340,9 @@ _rl_vi_domove_callback (m) } #endif -/* This code path taken when not in callback mode. */ +/* This code path is taken when not in callback mode. */ int -rl_vi_domove (x, ignore) - int x, *ignore; +rl_vi_domove (int x, int *ignore) { int r; _rl_vimotion_cxt *m; @@ -1309,22 +1360,20 @@ rl_vi_domove (x, ignore) } static int -vi_delete_dispatch (m) - _rl_vimotion_cxt *m; +vi_delete_dispatch (_rl_vimotion_cxt *m) { /* These are the motion commands that do not require adjusting the mark. */ if (((strchr (" l|h^0bBFT`", m->motion) == 0) && (rl_point >= m->start)) && (rl_mark < rl_end)) - rl_mark++; + INCREMENT_POS (rl_mark); rl_kill_text (rl_point, rl_mark); return (0); } int -rl_vi_delete_to (count, key) - int count, key; +rl_vi_delete_to (int count, int key) { int c, r; @@ -1373,15 +1422,14 @@ rl_vi_delete_to (count, key) } static int -vi_change_dispatch (m) - _rl_vimotion_cxt *m; +vi_change_dispatch (_rl_vimotion_cxt *m) { /* These are the motion commands that do not require adjusting the mark. c[wW] are handled by special-case code in rl_vi_domove(), and already leave the mark at the correct location. */ if (((strchr (" l|hwW^0bBFT`", m->motion) == 0) && (rl_point >= m->start)) && (rl_mark < rl_end)) - rl_mark++; + INCREMENT_POS (rl_mark); /* The cursor never moves with c[wW]. */ if ((_rl_to_upper (m->motion) == 'W') && rl_point < m->start) @@ -1413,8 +1461,7 @@ vi_change_dispatch (m) } int -rl_vi_change_to (count, key) - int count, key; +rl_vi_change_to (int count, int key) { int c, r; @@ -1463,14 +1510,13 @@ rl_vi_change_to (count, key) } static int -vi_yank_dispatch (m) - _rl_vimotion_cxt *m; +vi_yank_dispatch (_rl_vimotion_cxt *m) { /* These are the motion commands that do not require adjusting the mark. */ if (((strchr (" l|h^0%bBFT`", m->motion) == 0) && (rl_point >= m->start)) && (rl_mark < rl_end)) - rl_mark++; + INCREMENT_POS (rl_mark); rl_begin_undo_group (); rl_kill_text (rl_point, rl_mark); @@ -1482,8 +1528,7 @@ vi_yank_dispatch (m) } int -rl_vi_yank_to (count, key) - int count, key; +rl_vi_yank_to (int count, int key) { int c, r; @@ -1532,8 +1577,7 @@ rl_vi_yank_to (count, key) } static int -vidomove_dispatch (m) - _rl_vimotion_cxt *m; +vidomove_dispatch (_rl_vimotion_cxt *m) { int r; @@ -1559,8 +1603,7 @@ vidomove_dispatch (m) } int -rl_vi_rubout (count, key) - int count, key; +rl_vi_rubout (int count, int key) { int opoint; @@ -1590,8 +1633,7 @@ rl_vi_rubout (count, key) } int -rl_vi_delete (count, key) - int count, key; +rl_vi_delete (int count, int key) { int end; @@ -1626,8 +1668,7 @@ rl_vi_delete (count, key) #define vi_unix_word_boundary(c) (whitespace(c) || ispunct(c)) int -rl_vi_unix_word_rubout (count, key) - int count, key; +rl_vi_unix_word_rubout (int count, int key) { int orig_point; @@ -1665,8 +1706,8 @@ rl_vi_unix_word_rubout (count, key) while (rl_point && vi_unix_word_boundary (rl_line_buffer[rl_point - 1])) rl_point--; else if (rl_point > 0 && vi_unix_word_boundary (rl_line_buffer[rl_point]) == 0) - while (rl_point && (vi_unix_word_boundary (rl_line_buffer[rl_point - 1]) == 0)) - rl_point--; + while (rl_point > 0 && (vi_unix_word_boundary (rl_line_buffer[rl_point - 1]) == 0)) + _rl_vi_backup_point (); } rl_kill_text (orig_point, rl_point); @@ -1677,8 +1718,7 @@ rl_vi_unix_word_rubout (count, key) int -rl_vi_back_to_indent (count, key) - int count, key; +rl_vi_back_to_indent (int count, int key) { rl_beg_of_line (1, key); while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) @@ -1687,8 +1727,7 @@ rl_vi_back_to_indent (count, key) } int -rl_vi_first_print (count, key) - int count, key; +rl_vi_first_print (int count, int key) { return (rl_vi_back_to_indent (1, key)); } @@ -1697,8 +1736,7 @@ static int _rl_cs_dir, _rl_cs_orig_dir; #if defined (READLINE_CALLBACKS) static int -_rl_vi_callback_char_search (data) - _rl_callback_generic_arg *data; +_rl_vi_callback_char_search (_rl_callback_generic_arg *data) { int c; #if defined (HANDLE_MULTIBYTE) @@ -1732,8 +1770,7 @@ _rl_vi_callback_char_search (data) #endif int -rl_vi_char_search (count, key) - int count, key; +rl_vi_char_search (int count, int key) { int c; #if defined (HANDLE_MULTIBYTE) @@ -1826,8 +1863,7 @@ rl_vi_char_search (count, key) /* Match brackets */ int -rl_vi_match (ignore, key) - int ignore, key; +rl_vi_match (int ignore, int key) { int count = 1, brack, pos, tmp, pre; @@ -1916,8 +1952,7 @@ rl_vi_match (ignore, key) } int -rl_vi_bracktype (c) - int c; +rl_vi_bracktype (int c) { switch (c) { @@ -1932,9 +1967,7 @@ rl_vi_bracktype (c) } static int -_rl_vi_change_char (count, c, mb) - int count, c; - char *mb; +_rl_vi_change_char (int count, int c, char *mb) { int p; @@ -1947,7 +1980,7 @@ _rl_vi_change_char (count, c, mb) p = rl_point; rl_vi_delete (1, c); if (rl_point < p) /* Did we retreat at EOL? */ - rl_point++; + _rl_vi_append_forward (c); #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_insert_text (mb); @@ -1965,9 +1998,7 @@ _rl_vi_change_char (count, c, mb) } static int -_rl_vi_callback_getchar (mb, mlen) - char *mb; - int mlen; +_rl_vi_callback_getchar (char *mb, int mlen) { int c; @@ -1988,13 +2019,18 @@ _rl_vi_callback_getchar (mb, mlen) #if defined (READLINE_CALLBACKS) static int -_rl_vi_callback_change_char (data) - _rl_callback_generic_arg *data; +_rl_vi_callback_change_char (_rl_callback_generic_arg *data) { int c; - char mb[MB_LEN_MAX]; + char mb[MB_LEN_MAX+1]; - _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); +#if defined (HANDLE_MULTIBYTE) + strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX); +#else + _rl_vi_last_replacement[0] = c; +#endif + _rl_vi_last_replacement[MB_LEN_MAX] = '\0'; /* XXX */ if (c < 0) return -1; @@ -2007,17 +2043,16 @@ _rl_vi_callback_change_char (data) #endif int -rl_vi_change_char (count, key) - int count, key; +rl_vi_change_char (int count, int key) { int c; - char mb[MB_LEN_MAX]; + char mb[MB_LEN_MAX+1]; if (_rl_vi_redoing) { - c = _rl_vi_last_replacement; - mb[0] = c; - mb[1] = '\0'; + strncpy (mb, _rl_vi_last_replacement, MB_LEN_MAX); + c = (unsigned char)_rl_vi_last_replacement[0]; /* XXX */ + mb[MB_LEN_MAX] = '\0'; } #if defined (READLINE_CALLBACKS) else if (RL_ISSTATE (RL_STATE_CALLBACK)) @@ -2028,7 +2063,15 @@ rl_vi_change_char (count, key) } #endif else - _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + { + c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); +#ifdef HANDLE_MULTIBYTE + strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX); +#else + _rl_vi_last_replacement[0] = c; +#endif + _rl_vi_last_replacement[MB_LEN_MAX] = '\0'; /* just in case */ + } if (c < 0) return -1; @@ -2037,8 +2080,7 @@ rl_vi_change_char (count, key) } int -rl_vi_subst (count, key) - int count, key; +rl_vi_subst (int count, int key) { /* If we are redoing, rl_vi_change_to will stuff the last motion char */ if (_rl_vi_redoing == 0) @@ -2048,8 +2090,7 @@ rl_vi_subst (count, key) } int -rl_vi_overstrike (count, key) - int count, key; +rl_vi_overstrike (int count, int key) { if (_rl_vi_doing_insert == 0) { @@ -2067,8 +2108,7 @@ rl_vi_overstrike (count, key) } int -rl_vi_overstrike_delete (count, key) - int count, key; +rl_vi_overstrike_delete (int count, int key) { int i, s; @@ -2098,8 +2138,7 @@ rl_vi_overstrike_delete (count, key) } int -rl_vi_replace (count, key) - int count, key; +rl_vi_replace (int count, int key) { int i; @@ -2130,6 +2169,9 @@ rl_vi_replace (count, key) vi_insertion_keymap[CTRL ('H')].function == rl_rubout) vi_replace_map[CTRL ('H')].function = rl_vi_overstrike_delete; + /* Make sure this is the value we need. */ + vi_replace_map[ANYOTHERKEY].type = ISFUNC; + vi_replace_map[ANYOTHERKEY].function = (rl_command_func_t *)NULL; } rl_vi_start_inserting (key, 1, rl_arg_sign); @@ -2145,7 +2187,7 @@ rl_vi_replace (count, key) the previous character. A space matches everything. Word delimiters are space and ;. */ int -rl_vi_possible_completions() +rl_vi_possible_completions (void) { int save_pos = rl_point; @@ -2153,7 +2195,7 @@ rl_vi_possible_completions() { while (rl_point < rl_end && rl_line_buffer[rl_point] != ' ' && rl_line_buffer[rl_point] != ';') - rl_point++; + _rl_vi_advance_point (); } else if (rl_line_buffer[rl_point - 1] == ';') { @@ -2170,7 +2212,7 @@ rl_vi_possible_completions() /* Functions to save and restore marks. */ static int -_rl_vi_set_mark () +_rl_vi_set_mark (void) { int ch; @@ -2190,8 +2232,7 @@ _rl_vi_set_mark () #if defined (READLINE_CALLBACKS) static int -_rl_vi_callback_set_mark (data) - _rl_callback_generic_arg *data; +_rl_vi_callback_set_mark (_rl_callback_generic_arg *data) { _rl_callback_func = 0; _rl_want_redisplay = 1; @@ -2201,8 +2242,7 @@ _rl_vi_callback_set_mark (data) #endif int -rl_vi_set_mark (count, key) - int count, key; +rl_vi_set_mark (int count, int key) { #if defined (READLINE_CALLBACKS) if (RL_ISSTATE (RL_STATE_CALLBACK)) @@ -2217,7 +2257,7 @@ rl_vi_set_mark (count, key) } static int -_rl_vi_goto_mark () +_rl_vi_goto_mark (void) { int ch; @@ -2248,8 +2288,7 @@ _rl_vi_goto_mark () #if defined (READLINE_CALLBACKS) static int -_rl_vi_callback_goto_mark (data) - _rl_callback_generic_arg *data; +_rl_vi_callback_goto_mark (_rl_callback_generic_arg *data) { _rl_callback_func = 0; _rl_want_redisplay = 1; @@ -2259,8 +2298,7 @@ _rl_vi_callback_goto_mark (data) #endif int -rl_vi_goto_mark (count, key) - int count, key; +rl_vi_goto_mark (int count, int key) { #if defined (READLINE_CALLBACKS) if (RL_ISSTATE (RL_STATE_CALLBACK)) diff --git a/lib/readline/xfree.c b/lib/readline/xfree.c index 37a81e6c2..c199b29bd 100644 --- a/lib/readline/xfree.c +++ b/lib/readline/xfree.c @@ -1,6 +1,6 @@ /* xfree.c -- safe version of free that ignores attempts to free NUL */ -/* Copyright (C) 1991-2010 Free Software Foundation, Inc. +/* Copyright (C) 1991-2010,2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -42,8 +42,7 @@ /* Use this as the function to call when adding unwind protects so we don't need to know what free() returns. */ void -xfree (string) - PTR_T string; +xfree (PTR_T string) { if (string) free (string); diff --git a/lib/readline/xmalloc.c b/lib/readline/xmalloc.c index c77d7634d..5d01d75ea 100644 --- a/lib/readline/xmalloc.c +++ b/lib/readline/xmalloc.c @@ -1,6 +1,6 @@ /* xmalloc.c -- safe versions of malloc and realloc */ -/* Copyright (C) 1991-2009 Free Software Foundation, Inc. +/* Copyright (C) 1991-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -42,8 +42,7 @@ /* **************************************************************** */ static void -memory_error_and_abort (fname) - char *fname; +memory_error_and_abort (char *fname) { fprintf (stderr, "%s: out of virtual memory\n", fname); exit (2); @@ -53,8 +52,7 @@ memory_error_and_abort (fname) to hold BYTES number of bytes. If the memory cannot be allocated, print an error message and abort. */ PTR_T -xmalloc (bytes) - size_t bytes; +xmalloc (size_t bytes) { PTR_T temp; @@ -65,9 +63,7 @@ xmalloc (bytes) } PTR_T -xrealloc (pointer, bytes) - PTR_T pointer; - size_t bytes; +xrealloc (PTR_T pointer, size_t bytes) { PTR_T temp; diff --git a/lib/sh/Makefile.in b/lib/sh/Makefile.in index 2ca921b33..06917ba4e 100644 --- a/lib/sh/Makefile.in +++ b/lib/sh/Makefile.in @@ -67,8 +67,8 @@ LOCAL_DEFS = @LOCAL_DEFS@ INCLUDES = -I. -I../.. -I$(topdir) -I$(topdir)/lib -I$(BASHINCDIR) -I$(srcdir) $(INTL_INC) -CCFLAGS = ${PROFILE_FLAGS} ${INCLUDES} $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) \ - $(CFLAGS) $(CPPFLAGS) +CCFLAGS = ${ADDON_CFLAGS} ${PROFILE_FLAGS} ${INCLUDES} $(DEFS) $(LOCAL_DEFS) \ + $(LOCAL_CFLAGS) $(CFLAGS) $(CPPFLAGS) GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \ -Wcast-align -Wstrict-prototypes -Wconversion \ @@ -92,7 +92,8 @@ CSOURCES = clktck.c clock.c getcwd.c getenv.c oslib.c setlinebuf.c \ mktime.c strftime.c mbschr.c zcatfd.c zmapfd.c winsize.c eaccess.c \ wcsdup.c fpurge.c zgetline.c mbscmp.c uconvert.c ufuncs.c \ casemod.c dprintf.c input_avail.c mbscasecmp.c fnxform.c \ - strchrnul.c unicode.c wcswidth.c wcsnwidth.c shmbchar.c strdup.c + strchrnul.c unicode.c wcswidth.c wcsnwidth.c shmbchar.c strdup.c \ + utf8.c # The header files for this library. HSOURCES = @@ -107,7 +108,7 @@ OBJECTS = clktck.o clock.o getenv.o oslib.o setlinebuf.o strnlen.o \ fmtullong.o fmtumax.o zcatfd.o zmapfd.o winsize.o wcsdup.o \ fpurge.o zgetline.o mbscmp.o uconvert.o ufuncs.o casemod.o \ input_avail.o mbscasecmp.o fnxform.o unicode.o shmbchar.o \ - wcsnwidth.o ${LIBOBJS} + utf8.o wcsnwidth.o ${LIBOBJS} SUPPORT = Makefile @@ -200,6 +201,7 @@ tmpfile.o: tmpfile.c uconvert.o: uconvert.c ufuncs.o: ufuncs.c unicode.o: unicode.c +utf8.o: utf8.c vprint.o: vprint.c wcsdup.o: wcsdup.c wcsnwidth.o: wcsnwidth.c @@ -277,6 +279,7 @@ tmpfile.o: ${BUILD_DIR}/config.h uconvert.o: ${BUILD_DIR}/config.h ufuncs.o: ${BUILD_DIR}/config.h unicode.o: ${BUILD_DIR}/config.h +utf8.o: ${BUILD_DIR}/config.h vprint.o: ${BUILD_DIR}/config.h wcsdup.o: ${BUILD_DIR}/config.h wcsnwidth.o: ${BUILD_DIR}/config.h @@ -612,6 +615,10 @@ unicode.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h unicode.o: ${BASHINCDIR}/stdc.h unicode.o: ${topdir}/xmalloc.h +utf8.o: ${topdir}/bashansi.h +utf8.o: ${BASHINCDIR}/ansi_stdlib.h +utf8.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h + winsize.o: ${BASHINCDIR}/stdc.h winsize.o: ${topdir}/xmalloc.h winsize.o: ${topdir}/bashtypes.h diff --git a/lib/sh/casemod.c b/lib/sh/casemod.c index f68303bc4..7cdd4178b 100644 --- a/lib/sh/casemod.c +++ b/lib/sh/casemod.c @@ -229,7 +229,10 @@ singlebyte: else { m = mbrtowc (&wc, string + start, end - start, &state); - if (MB_INVALIDCH (m) || m == 1) + /* Have to go through wide case conversion even for single-byte + chars, to accommodate single-byte characters where the + corresponding upper or lower case equivalent is multibyte. */ + if (MB_INVALIDCH (m)) { wc = (unsigned char)string[start]; goto singlebyte; diff --git a/lib/sh/clock.c b/lib/sh/clock.c index 84cdbc542..c6c52bf89 100644 --- a/lib/sh/clock.c +++ b/lib/sh/clock.c @@ -32,7 +32,13 @@ #include #include -extern long get_clk_tck __P((void)); +#include + +#ifndef locale_decpoint +extern int locale_decpoint PARAMS((void)); +#endif + +extern long get_clk_tck PARAMS((void)); void clock_t_to_secs (t, sp, sfp) @@ -76,6 +82,6 @@ print_clock_t (fp, t) minutes = timestamp / 60; seconds = timestamp % 60; - fprintf (fp, "%ldm%d.%03ds", minutes, seconds, seconds_fraction); + fprintf (fp, "%ldm%d%c%03ds", minutes, seconds, locale_decpoint(), seconds_fraction); } #endif /* HAVE_TIMES */ diff --git a/lib/sh/eaccess.c b/lib/sh/eaccess.c index 8fd8a43e7..3d8ae4e85 100644 --- a/lib/sh/eaccess.c +++ b/lib/sh/eaccess.c @@ -91,7 +91,9 @@ sh_stat (path, finfo) } if (path[0] == '/' && path[1] == 'd' && strncmp (path, "/dev/fd/", 8) == 0) { -#if !defined (HAVE_DEV_FD) + /* If stating /dev/fd/n doesn't produce the same results as fstat of + FD N, then define DEV_FD_STAT_BROKEN */ +#if !defined (HAVE_DEV_FD) || defined (DEV_FD_STAT_BROKEN) intmax_t fd; int r; 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 7730e46ee..639962d46 100644 --- a/lib/sh/mbschr.c +++ b/lib/sh/mbschr.c @@ -28,9 +28,12 @@ #include "shmbutil.h" extern int locale_mb_cur_max; +extern int locale_utf8locale; #undef mbschr +extern char *utf8_mbschr (const char *, int); /* XXX */ + /* In some locales, the non-first byte of some multibyte characters have the same value as some ascii character. Faced with these strings, a legacy strchr() might return the wrong value. */ @@ -49,6 +52,9 @@ mbschr (s, c) mbstate_t state; size_t strlength, mblength; + if (locale_utf8locale && c < 0x80) + return (utf8_mbschr (s, c)); /* XXX */ + /* The locale encodings with said weird property are BIG5, BIG5-HKSCS, GBK, GB18030, SHIFT_JIS, and JOHAB. They exhibit the problem only when c >= 0x30. We can therefore use the faster bytewise search if 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/pathcanon.c b/lib/sh/pathcanon.c index f19bd55fd..f9506dffd 100644 --- a/lib/sh/pathcanon.c +++ b/lib/sh/pathcanon.c @@ -227,7 +227,7 @@ sh_canonpath (path, flags) if (result[2] == '\0') /* short-circuit for bare `//' */ result[1] = '\0'; else - strcpy (result, result + 1); + memmove (result, result + 1, strlen (result + 1) + 1); } return (result); diff --git a/lib/sh/pathphys.c b/lib/sh/pathphys.c index 26016b76b..99390cefb 100644 --- a/lib/sh/pathphys.c +++ b/lib/sh/pathphys.c @@ -245,7 +245,7 @@ error: if (result[2] == '\0') /* short-circuit for bare `//' */ result[1] = '\0'; else - strcpy (result, result + 1); + memmove (result, result + 1, strlen (result + 1) + 1); } return (result); diff --git a/lib/sh/shmbchar.c b/lib/sh/shmbchar.c index 7f14208e6..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 @@ -20,9 +20,15 @@ #include #include +#include + #include #include +#ifndef errno +extern int errno; +#endif + #if IS_BASIC_ASCII /* Bit table of characters in the ISO C "basic character set". */ @@ -37,6 +43,13 @@ const unsigned int is_basic_table [UCHAR_MAX / 32 + 1] = #endif /* IS_BASIC_ASCII */ +extern int locale_utf8locale; + +extern char *utf8_mbsmbchar (const char *); +extern int utf8_mblen (const char *, size_t); + +/* Count the number of characters in S, counting multi-byte characters as a + single character. */ size_t mbstrlen (s) const char *s; @@ -65,6 +78,8 @@ mbstrlen (s) } /* Return pointer to first multibyte char in S, or NULL if none. */ +/* XXX - if we know that the locale is UTF-8, we can just check whether or + not any byte has the eighth bit turned on */ char * mbsmbchar (s) const char *s; @@ -74,13 +89,19 @@ mbsmbchar (s) mbstate_t mbs = { 0 }; int mb_cur_max; + if (locale_utf8locale) + return (utf8_mbsmbchar (s)); /* XXX */ + mb_cur_max = MB_CUR_MAX; for (t = (char *)s; *t; t++) { if (is_basic (*t)) continue; - clen = mbrlen (t, mb_cur_max, &mbs); + if (locale_utf8locale) /* not used if above code active */ + clen = utf8_mblen (t, mb_cur_max); + else + clen = mbrlen (t, mb_cur_max, &mbs); if (clen == 0) return 0; diff --git a/lib/sh/shquote.c b/lib/sh/shquote.c index ecec5971f..97e2bc533 100644 --- a/lib/sh/shquote.c +++ b/lib/sh/shquote.c @@ -228,7 +228,8 @@ sh_un_double_quote (string) going through the shell parser, which will protect the internal quoting characters. TABLE, if set, points to a map of the ascii code set with char needing to be backslash-quoted if table[char]==1. FLAGS, - if 1, causes tildes to be quoted as well. */ + if 1, causes tildes to be quoted as well. If FLAGS&2, backslash-quote + other shell blank characters. */ char * sh_backslash_quote (string, table, flags) @@ -273,6 +274,8 @@ sh_backslash_quote (string, table, flags) /* Tildes are special at the start of a word or after a `:' or `=' (technically unquoted, but it doesn't make a difference in practice) */ *r++ = '\\'; + else if ((flags&2) && shellblank((unsigned char)c)) + *r++ = '\\'; *r++ = c; } 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/strcasecmp.c b/lib/sh/strcasecmp.c index 5542f7155..70d0551a1 100644 --- a/lib/sh/strcasecmp.c +++ b/lib/sh/strcasecmp.c @@ -32,7 +32,7 @@ int strncasecmp (string1, string2, count) const char *string1; const char *string2; - int count; + size_t count; { register const char *s1; register const char *s2; diff --git a/lib/sh/strtrans.c b/lib/sh/strtrans.c index 798314765..48f255f5d 100644 --- a/lib/sh/strtrans.c +++ b/lib/sh/strtrans.c @@ -230,8 +230,6 @@ ansic_quote (str, flags, rlen) *r++ = '$'; *r++ = '\''; - s = str; - for (s = str; c = *s; s++) { b = l = 1; /* 1 == add backslash; 0 == no backslash */ @@ -305,11 +303,9 @@ ansic_wshouldquote (string) { const wchar_t *wcs; wchar_t wcc; - wchar_t *wcstr = NULL; size_t slen; - slen = mbstowcs (wcstr, string, 0); if (slen == (size_t)-1) diff --git a/lib/sh/timeval.c b/lib/sh/timeval.c index 7bd9df8f6..c4b61dc8a 100644 --- a/lib/sh/timeval.c +++ b/lib/sh/timeval.c @@ -25,6 +25,13 @@ #include #include +#include +#include + +#ifndef locale_decpoint +extern int locale_decpoint PARAMS((void)); +#endif + #include struct timeval * @@ -140,6 +147,6 @@ print_timeval (fp, tvp) minutes = timestamp / 60; seconds = timestamp % 60; - fprintf (fp, "%ldm%d.%03ds", minutes, seconds, seconds_fraction); + fprintf (fp, "%ldm%d%c%03ds", minutes, seconds, locale_decpoint (), seconds_fraction); } #endif /* HAVE_TIMEVAL */ diff --git a/lib/sh/ufuncs.c b/lib/sh/ufuncs.c index fcd4c0444..ad9284ccb 100644 --- a/lib/sh/ufuncs.c +++ b/lib/sh/ufuncs.c @@ -37,8 +37,16 @@ #include #endif +#include +#if !defined (errno) +extern int errno; +#endif /* !errno */ + #if defined (HAVE_SELECT) # include "posixselect.h" +# include "quit.h" +# include "trap.h" +# include "stat-time.h" #endif /* A version of `alarm' using setitimer if it's available. */ @@ -84,17 +92,50 @@ falarm (secs, usecs) /* A version of sleep using fractional seconds and select. I'd like to use `usleep', but it's already taken */ -#if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT) +#if defined (HAVE_TIMEVAL) && (defined (HAVE_SELECT) || defined (HAVE_PSELECT)) int fsleep(sec, usec) unsigned int sec, usec; { + int e, r; + sigset_t blocked_sigs, prevmask; +#if defined (HAVE_PSELECT) + struct timespec ts; +#else struct timeval tv; +#endif + sigemptyset (&blocked_sigs); +# if defined (SIGCHLD) + sigaddset (&blocked_sigs, SIGCHLD); +# endif + +#if defined (HAVE_PSELECT) + ts.tv_sec = sec; + ts.tv_nsec = usec * 1000; +#else + sigemptyset (&prevmask); tv.tv_sec = sec; tv.tv_usec = usec; +#endif /* !HAVE_PSELECT */ + + do + { +#if defined (HAVE_PSELECT) + r = pselect(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &ts, &blocked_sigs); +#else + sigprocmask (SIG_SETMASK, &blocked_sigs, &prevmask); + r = select(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &tv); + sigprocmask (SIG_SETMASK, &prevmask, NULL); +#endif + e = errno; + if (r < 0 && errno == EINTR) + QUIT; /* just signals, no traps */ + errno = e; + } + while (r < 0 && errno == EINTR); - return select(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &tv); + return r; } #else /* !HAVE_TIMEVAL || !HAVE_SELECT */ int diff --git a/lib/sh/unicode.c b/lib/sh/unicode.c index b58eaefd9..fe13c4a0b 100644 --- a/lib/sh/unicode.c +++ b/lib/sh/unicode.c @@ -1,6 +1,6 @@ /* unicode.c - functions to convert unicode characters */ -/* Copyright (C) 2010-2015 Free Software Foundation, Inc. +/* Copyright (C) 2010-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -55,6 +55,8 @@ extern const char *locale_charset __P((void)); extern char *get_locale_var __P((char *)); #endif +extern int locale_utf8locale; + static int u32init = 0; static int utf8locale = 0; #if defined (HAVE_ICONV) @@ -219,12 +221,12 @@ u32toutf16 (c, s) int l; l = 0; - if (c < 0x0d800) + if (c < 0x0d800 || (c >= 0x0e000 && c <= 0x0ffff)) { s[0] = (unsigned short) (c & 0xFFFF); l = 1; } - else if (c >= 0x0e000 && c <= 0x010ffff) + else if (c >= 0x10000 && c <= 0x010ffff) { c -= 0x010000; s[0] = (unsigned short)((c >> 10) + 0xd800); @@ -265,28 +267,21 @@ u32cconv (c, s) return n; #endif -#if HAVE_NL_LANGINFO - codeset = nl_langinfo (CODESET); - if (STREQ (codeset, "UTF-8")) - { - n = u32toutf8 (c, s); - return n; - } -#endif - #if HAVE_ICONV /* this is mostly from coreutils-8.5/lib/unicodeio.c */ if (u32init == 0) { -# if HAVE_LOCALE_CHARSET - charset = locale_charset (); /* XXX - fix later */ -# else - charset = stub_charset (); -# endif - if (STREQ (charset, "UTF-8")) - utf8locale = 1; - else + utf8locale = locale_utf8locale; + localconv = (iconv_t)-1; + if (utf8locale == 0) { +#if HAVE_LOCALE_CHARSET + charset = locale_charset (); +#elif HAVE_NL_LANGINFO + charset = nl_langinfo (CODESET); +#else + charset = stub_charset (); +#endif localconv = iconv_open (charset, "UTF-8"); if (localconv == (iconv_t)-1) /* We assume ASCII when presented with an unknown encoding. */ @@ -295,6 +290,8 @@ u32cconv (c, s) u32init = 1; } + /* NL_LANGINFO and locale_charset used when setting locale_utf8locale */ + /* If we have a UTF-8 locale, convert to UTF-8 and return converted value. */ n = u32toutf8 (c, s); if (utf8locale) @@ -315,12 +312,8 @@ u32cconv (c, s) if (iconv (localconv, (ICONV_CONST char **)&iptr, &sn, &optr, &obytesleft) == (size_t)-1) { -#if 1 /* You get ISO C99 escape sequences if iconv fails */ n = u32tocesc (c, s); -#else - /* You get UTF-8 if iconv fails */ -#endif return n; } @@ -332,7 +325,10 @@ u32cconv (c, s) return (optr - obuf); #endif /* HAVE_ICONV */ - n = u32tocesc (c, s); /* fallback is ISO C99 escape sequences */ + if (locale_utf8locale) + n = u32toutf8 (c, s); + else + n = u32tocesc (c, s); /* fallback is ISO C99 escape sequences */ return n; } #else diff --git a/lib/sh/utf8.c b/lib/sh/utf8.c new file mode 100644 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/lib/sh/zread.c b/lib/sh/zread.c index 496f20b87..8b7ecedf6 100644 --- a/lib/sh/zread.c +++ b/lib/sh/zread.c @@ -1,6 +1,6 @@ /* zread - read data from file descriptor into buffer with retries */ -/* Copyright (C) 1999-2002 Free Software Foundation, Inc. +/* Copyright (C) 1999-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -53,6 +53,7 @@ zread (fd, buf, len) { ssize_t r; + check_signals (); /* check for signals before a blocking read */ while ((r = read (fd, buf, len)) < 0 && errno == EINTR) /* XXX - bash-5.0 */ /* We check executing_builtin and run traps here for backwards compatibility */ @@ -103,6 +104,7 @@ zreadintr (fd, buf, len) char *buf; size_t len; { + check_signals (); return (read (fd, buf, len)); } diff --git a/lib/tilde/Makefile.in b/lib/tilde/Makefile.in index 7ca3b7897..c21d3897c 100644 --- a/lib/tilde/Makefile.in +++ b/lib/tilde/Makefile.in @@ -52,7 +52,7 @@ BASHINCDIR = ${topdir}/include INCLUDES = -I. -I../.. -I$(topdir) -I${BASHINCDIR} -I$(topdir)/lib -CCFLAGS = $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) \ +CCFLAGS = ${ASAN_CFLAGS} $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) \ ${INCLUDES} $(LOCAL_CFLAGS) $(CFLAGS) .c.o: diff --git a/lib/tilde/shell.c b/lib/tilde/shell.c index fafb86198..9805a9248 100644 --- a/lib/tilde/shell.c +++ b/lib/tilde/shell.c @@ -1,7 +1,7 @@ /* shell.c -- tilde utility functions that are normally provided by bash when readline is linked as part of the shell. */ -/* Copyright (C) 1998-2009 Free Software Foundation, Inc. +/* Copyright (C) 1998-2017 Free Software Foundation, Inc. This file is part of the GNU Tilde Library. @@ -49,8 +49,7 @@ extern struct passwd *getpwuid (); #endif /* !HAVE_GETPW_DECLS */ char * -get_env_value (varname) - char *varname; +get_env_value (char *varname) { return ((char *)getenv (varname)); } @@ -58,7 +57,7 @@ get_env_value (varname) /* If we're not using $HOME, assume that the passwd file information won't change while this shell instance is running. */ char * -get_home_dir () +get_home_dir (void) { static char *home_dir = (char *)NULL; struct passwd *entry; diff --git a/lib/tilde/tilde.c b/lib/tilde/tilde.c index 95bc4215c..9d0f29614 100644 --- a/lib/tilde/tilde.c +++ b/lib/tilde/tilde.c @@ -1,6 +1,6 @@ /* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */ -/* Copyright (C) 1988-2009 Free Software Foundation, Inc. +/* Copyright (C) 1988-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -125,9 +125,7 @@ static char *glue_prefix_and_suffix PARAMS((char *, const char *, int)); the tilde which starts the expansion. Place the length of the text which identified this tilde starter in LEN, excluding the tilde itself. */ static int -tilde_find_prefix (string, len) - const char *string; - int *len; +tilde_find_prefix (const char *string, int *len) { register int i, j, string_len; register char **prefixes; @@ -160,8 +158,7 @@ tilde_find_prefix (string, len) /* Find the end of a tilde expansion in STRING, and return the index of the character which ends the tilde definition. */ static int -tilde_find_suffix (string) - const char *string; +tilde_find_suffix (const char *string) { register int i, j, string_len; register char **suffixes; @@ -189,8 +186,7 @@ tilde_find_suffix (string) /* Return a new string which is the result of tilde expanding STRING. */ char * -tilde_expand (string) - const char *string; +tilde_expand (const char *string) { char *result; int result_size, result_index; @@ -267,9 +263,7 @@ tilde_expand (string) non-null, the index of the end of the prefix into FNAME is returned in the location it points to. */ static char * -isolate_tilde_prefix (fname, lenp) - const char *fname; - int *lenp; +isolate_tilde_prefix (const char *fname, int *lenp) { char *ret; int i; @@ -293,9 +287,7 @@ isolate_tilde_prefix (fname, lenp) function. Right now, it just calls tilde_find_suffix and allocates new memory, but it can be expanded to do different things later. */ char * -tilde_find_word (fname, flags, lenp) - const char *fname; - int flags, *lenp; +tilde_find_word (const char *fname, int flags, int *lenp) { int x; char *r; @@ -323,10 +315,7 @@ tilde_find_word (fname, flags, lenp) /* Return a string that is PREFIX concatenated with SUFFIX starting at SUFFIND. */ static char * -glue_prefix_and_suffix (prefix, suffix, suffind) - char *prefix; - const char *suffix; - int suffind; +glue_prefix_and_suffix (char *prefix, const char *suffix, int suffind) { char *ret; int plen, slen; @@ -344,8 +333,7 @@ glue_prefix_and_suffix (prefix, suffix, suffind) tilde. If there is no expansion, call tilde_expansion_failure_hook. This always returns a newly-allocated string, never static storage. */ char * -tilde_expand_word (filename) - const char *filename; +tilde_expand_word (const char *filename) { char *dirname, *expansion, *username; int user_len; @@ -434,9 +422,7 @@ tilde_expand_word (filename) #undef NULL #include -main (argc, argv) - int argc; - char **argv; +main (int argc, char **argv) { char *result, line[512]; int done = 0; @@ -464,11 +450,10 @@ main (argc, argv) exit (0); } -static void memory_error_and_abort (); +static void memory_error_and_abort (void); static void * -xmalloc (bytes) - size_t bytes; +xmalloc (size_t bytes) { void *temp = (char *)malloc (bytes); @@ -478,9 +463,7 @@ xmalloc (bytes) } static void * -xrealloc (pointer, bytes) - void *pointer; - int bytes; +xrealloc (void *pointer, int bytes) { void *temp; @@ -496,7 +479,7 @@ xrealloc (pointer, bytes) } static void -memory_error_and_abort () +memory_error_and_abort (void) { fprintf (stderr, "readline: out of virtual memory\n"); abort (); diff --git a/locale.c b/locale.c index a199cdf36..d62547f64 100644 --- a/locale.c +++ b/locale.c @@ -1,6 +1,6 @@ /* locale.c - Miscellaneous internationalization functions. */ -/* Copyright (C) 1996-2009,2012 Free Software Foundation, Inc. +/* Copyright (C) 1996-2009,2012,2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -43,8 +43,9 @@ extern int errno; #endif -int locale_utf8locale; /* unused for now */ +int locale_utf8locale; int locale_mb_cur_max; /* value of MB_CUR_MAX for current locale (LC_CTYPE) */ +int locale_shiftstates; extern int dump_translatable_strings, dump_po_strings; @@ -84,6 +85,8 @@ set_default_locale () textdomain (PACKAGE); locale_mb_cur_max = MB_CUR_MAX; + locale_utf8locale = locale_isutf8 (default_locale); + locale_shiftstates = mblen ((char *)NULL, 0); } /* Set default values for LC_CTYPE, LC_COLLATE, LC_MESSAGES, LC_NUMERIC and @@ -103,6 +106,8 @@ set_default_locale_vars () setlocale (LC_CTYPE, lc_all); locale_setblanks (); locale_mb_cur_max = MB_CUR_MAX; + locale_utf8locale = locale_isutf8 (lc_all); + locale_shiftstates = mblen ((char *)NULL, 0); u32reset (); } # endif @@ -203,6 +208,10 @@ set_locale_var (var, value) } locale_setblanks (); locale_mb_cur_max = MB_CUR_MAX; + /* if LC_ALL == "", reset_locale_vars has already called this */ + if (*lc_all && x) + locale_utf8locale = locale_isutf8 (lc_all); + locale_shiftstates = mblen ((char *)NULL, 0); u32reset (); return r; #else @@ -219,6 +228,10 @@ set_locale_var (var, value) x = setlocale (LC_CTYPE, get_locale_var ("LC_CTYPE")); locale_setblanks (); locale_mb_cur_max = MB_CUR_MAX; + /* if setlocale() returns NULL, the locale is not changed */ + if (x) + locale_utf8locale = locale_isutf8 (x); + locale_shiftstates = mblen ((char *)NULL, 0); u32reset (); } # endif @@ -327,15 +340,16 @@ get_locale_var (var) static int reset_locale_vars () { - char *t; + char *t, *x; #if defined (HAVE_SETLOCALE) if (lang == 0 || *lang == '\0') maybe_make_export_env (); /* trust that this will change environment for setlocale */ if (setlocale (LC_ALL, lang ? lang : "") == 0) return 0; + x = 0; # if defined (LC_CTYPE) - t = setlocale (LC_CTYPE, get_locale_var ("LC_CTYPE")); + x = setlocale (LC_CTYPE, get_locale_var ("LC_CTYPE")); # endif # if defined (LC_COLLATE) t = setlocale (LC_COLLATE, get_locale_var ("LC_COLLATE")); @@ -352,8 +366,10 @@ reset_locale_vars () locale_setblanks (); locale_mb_cur_max = MB_CUR_MAX; + if (x) + locale_utf8locale = locale_isutf8 (x); + locale_shiftstates = mblen ((char *)NULL, 0); u32reset (); - #endif return 1; } @@ -547,17 +563,55 @@ locale_setblanks () } } +/* Parse a locale specification + language[_territory][.codeset][@modifier][+special][,[sponsor][_revision]] + and return TRUE if the codeset is UTF-8 or utf8 */ static int locale_isutf8 (lspec) char *lspec; { - char *cp; + char *cp, *encoding; #if HAVE_LANGINFO_CODESET cp = nl_langinfo (CODESET); return (STREQ (cp, "UTF-8") || STREQ (cp, "utf8")); +#elif HAVE_LOCALE_CHARSET + cp = locale_charset (); + return (STREQ (cp, "UTF-8") || STREQ (cp, "utf8")); #else /* Take a shot */ - return (strstr (lspec, "UTF-8") || strstr (lspec, "utf8")); + for (cp = lspec; *cp && *cp != '@' && *cp != '+' && *cp != ','; cp++) + { + if (*cp == '.') + { + for (encoding = ++cp; *cp && *cp != '@' && *cp != '+' && *cp != ','; cp++) + ; + /* The encoding (codeset) is the substring between encoding and cp */ + if ((cp - encoding == 5 && STREQN (encoding, "UTF-8", 5)) || + (cp - encoding == 4 && STREQN (encoding, "utf8", 4))) + return 1; + else + return 0; + } + } + return 0; #endif } + +#if defined (HAVE_LOCALECONV) +int +locale_decpoint () +{ + struct lconv *lv; + + lv = localeconv (); + return (lv && lv->decimal_point && lv->decimal_point[0]) ? lv->decimal_point[0] : '.'; +} +#else +# undef locale_decpoint +int +locale_decpoint () +{ + return '.'; +} +#endif diff --git a/make_cmd.c b/make_cmd.c index b42e9ff14..ecbbfd6e7 100644 --- a/make_cmd.c +++ b/make_cmd.c @@ -1,7 +1,7 @@ /* make_cmd.c -- Functions for making instances of the various parser constructs. */ -/* Copyright (C) 1989-2009 Free Software Foundation, Inc. +/* Copyright (C) 1989-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -34,19 +34,11 @@ #include "bashintl.h" +#include "shell.h" +#include "execute_cmd.h" #include "parser.h" -#include "syntax.h" -#include "command.h" -#include "general.h" -#include "error.h" #include "flags.h" -#include "make_cmd.h" -#include "dispose_cmd.h" -#include "variables.h" -#include "subst.h" #include "input.h" -#include "ocache.h" -#include "externs.h" #if defined (JOB_CONTROL) #include "jobs.h" @@ -54,10 +46,6 @@ #include "shmbutil.h" -extern int line_number, current_command_line_count, parser_state; -extern int last_command_exit_value; -extern int shell_initialized; - int here_doc_first_line = 0; /* Object caching */ @@ -805,7 +793,7 @@ make_function_def (name, command, lineno, lstart) temp->source_file = shell_initialized ? "main" : "environment"; #if defined (DEBUGGER) - bind_function_def (name->word, temp); + bind_function_def (name->word, temp, 0); #endif temp->source_file = temp->source_file ? savestring (temp->source_file) : 0; @@ -822,6 +810,7 @@ make_subshell_command (command) temp = (SUBSHELL_COM *)xmalloc (sizeof (SUBSHELL_COM)); temp->command = command; temp->flags = CMD_WANT_SUBSHELL; + temp->line = line_number; return (make_command (cm_subshell, (SIMPLE_COM *)temp)); } diff --git a/make_cmd.h b/make_cmd.h index f17774d91..fcd7766dc 100644 --- a/make_cmd.h +++ b/make_cmd.h @@ -23,6 +23,8 @@ #include "stdc.h" +extern int here_doc_first_line; + extern void cmd_init __P((void)); extern WORD_DESC *alloc_word_desc __P((void)); diff --git a/nojobs.c b/nojobs.c index fdbe0ae03..2201a29ac 100644 --- a/nojobs.c +++ b/nojobs.c @@ -49,6 +49,7 @@ #include "trap.h" #include "builtins/builtext.h" /* for wait_builtin */ +#include "builtins/common.h" #define DEFAULT_CHILD_MAX 32 @@ -73,17 +74,9 @@ extern int errno; #endif /* !errno */ -extern int interactive, interactive_shell, login_shell; -extern int subshell_environment; -extern int last_command_exit_value, last_command_exit_signal; -extern int interrupt_immediately; -extern sh_builtin_func_t *this_shell_builtin; #if defined (HAVE_POSIX_SIGNALS) extern sigset_t top_level_mask; #endif -extern procenv_t wait_intr_buf; -extern int wait_intr_flag; -extern int wait_signal_received; extern void set_original_signal __P((int, SigHandler *)); @@ -170,7 +163,10 @@ alloc_pid_list () /* None of the newly allocated slots have process id's yet. */ for (i = old; i < pid_list_size; i++) - pid_list[i].pid = NO_PID; + { + pid_list[i].pid = NO_PID; + pid_list[i].status = pid_list[i].flags = 0; + } } /* Return the offset within the PID_LIST array of an empty slot. This can @@ -273,6 +269,12 @@ set_pid_status (pid, status) coproc_pidchk (pid, status); #endif +#if defined (PROCESS_SUBSTITUTION) + if ((slot = find_procsub_child (pid)) >= 0) + set_procsub_status (slot, pid, WSTATUS (status)); + /* XXX - also saving in list below */ +#endif + slot = find_index_by_pid (pid); if (slot == NO_PID) return; @@ -399,8 +401,9 @@ cleanup_dead_jobs () for (i = 0; i < pid_list_size; i++) { - if ((pid_list[i].flags & PROC_RUNNING) == 0 && - (pid_list[i].flags & PROC_NOTIFIED)) + if (pid_list[i].pid != NO_PID && + (pid_list[i].flags & PROC_RUNNING) == 0 && + (pid_list[i].flags & PROC_NOTIFIED)) pid_list[i].pid = NO_PID; } @@ -1034,6 +1037,12 @@ unfreeze_jobs_list () { } +void +set_jobs_list_frozen (s) + int s; +{ +} + int count_all_jobs () { diff --git a/parse.y b/parse.y index f415d2eec..3ff87bccc 100644 --- a/parse.y +++ b/parse.y @@ -1,6 +1,6 @@ /* parse.y - Yacc grammar for bash. */ -/* Copyright (C) 1989-2015 Free Software Foundation, Inc. +/* Copyright (C) 1989-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -45,6 +45,7 @@ #define NEED_STRFTIME_DECL /* used in externs.h */ #include "shell.h" +#include "execute_cmd.h" #include "typemax.h" /* SIZE_MAX if needed */ #include "trap.h" #include "flags.h" @@ -94,6 +95,8 @@ typedef void *alias_t; #define RE_READ_TOKEN -99 #define NO_EXPANSION -100 +#define END_ALIAS -2 + #ifdef DEBUG # define YYDEBUG 1 #else @@ -115,24 +118,12 @@ typedef void *alias_t; extern int extended_glob; #endif -extern int eof_encountered; -extern int no_line_editing, running_under_emacs; -extern int current_command_number; -extern int sourcelevel, parse_and_execute_level; -extern int posixly_correct; -extern int last_command_exit_value; -extern pid_t last_command_subst_pid; -extern char *shell_name, *current_host_name; -extern char *dist_version; -extern int patch_level; extern int dump_translatable_strings, dump_po_strings; -extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; -extern int here_doc_first_line; -#if defined (BUFFERED_INPUT) -extern int bash_input_fd_changed; -#endif +#if !defined (errno) extern int errno; +#endif + /* **************************************************************** */ /* */ /* "Forward" declarations */ @@ -218,6 +209,7 @@ static void print_prompt __P((void)); #if defined (HANDLE_MULTIBYTE) static void set_line_mbstate __P((void)); static char *shell_input_line_property = NULL; +static size_t shell_input_line_propsize = 0; #else # define set_line_mbstate() #endif @@ -328,6 +320,9 @@ static WORD_DESC *word_desc_to_read; static REDIRECTEE source; static REDIRECTEE redir; + +static FILE *yyoutstream; +static FILE *yyerrstream; %} %union { @@ -418,6 +413,23 @@ inputunit: simple_list simple_list_terminator YYABORT; } } + | error yacc_EOF + { + /* EOF after an error. Do ignoreeof or not. Really + only interesting in non-interactive shells */ + global_command = (COMMAND *)NULL; + if (last_command_exit_value == 0) + last_command_exit_value = EX_BADUSAGE; /* force error return */ + handle_eof_input_unit (); + if (interactive && parse_and_execute_level == 0) + { + YYACCEPT; + } + else + { + YYABORT; + } + } | yacc_EOF { /* Case of EOF seen by itself. Do ignoreeof or @@ -744,14 +756,14 @@ command: simple_command COMMAND *tc; tc = $1; - if (tc->redirects) + if (tc && tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = $2; } - else + else if (tc) tc->redirects = $2; $$ = $1; } @@ -830,21 +842,25 @@ for_command: FOR WORD newline_list DO compound_list DONE arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE { $$ = make_arith_for_command ($2, $6, arith_for_lineno); + if ($$ == 0) YYERROR; if (word_top > 0) word_top--; } | FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}' { $$ = make_arith_for_command ($2, $6, arith_for_lineno); + if ($$ == 0) YYERROR; if (word_top > 0) word_top--; } | FOR ARITH_FOR_EXPRS DO compound_list DONE { $$ = make_arith_for_command ($2, $4, arith_for_lineno); + if ($$ == 0) YYERROR; if (word_top > 0) word_top--; } | FOR ARITH_FOR_EXPRS '{' compound_list '}' { $$ = make_arith_for_command ($2, $4, arith_for_lineno); + if ($$ == 0) YYERROR; if (word_top > 0) word_top--; } ; @@ -879,6 +895,16 @@ select_command: SELECT WORD newline_list DO list DONE $$ = make_select_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9, word_lineno[word_top]); if (word_top > 0) word_top--; } + | SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE + { + $$ = make_select_command ($2, (WORD_LIST *)NULL, $8, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + | SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}' + { + $$ = make_select_command ($2, (WORD_LIST *)NULL, $8, word_lineno[word_top]); + if (word_top > 0) word_top--; + } ; case_command: CASE WORD newline_list IN newline_list ESAC @@ -928,14 +954,14 @@ function_body: shell_command redirection. The two are semantically equivalent, though -- the only difference is in how the command printing code displays the redirections. */ - if (tc->redirects) + if (tc && tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = $2; } - else + else if (tc) tc->redirects = $2; $$ = $1; } @@ -958,14 +984,14 @@ coproc: COPROC shell_command COMMAND *tc; tc = $2; - if (tc->redirects) + if (tc && tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = $3; } - else + else if (tc) tc->redirects = $3; $$ = make_coproc_command ("COPROC", $2); $$->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; @@ -980,14 +1006,14 @@ coproc: COPROC shell_command COMMAND *tc; tc = $3; - if (tc->redirects) + if (tc && tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = $4; } - else + else if (tc) tc->redirects = $4; $$ = make_coproc_command ($2->word, $3); $$->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; @@ -1230,6 +1256,7 @@ pipeline_command: pipeline token_to_read = '\n'; else if ($2 == ';') token_to_read = ';'; + parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */ } | BANG list_terminator { @@ -1250,6 +1277,7 @@ pipeline_command: pipeline token_to_read = '\n'; if ($2 == ';') token_to_read = ';'; + parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */ } ; @@ -1316,6 +1344,8 @@ debug_parser (i) { #if YYDEBUG != 0 yydebug = i; + yyoutstream = stdout; + yyerrstream = stderr; #endif } #endif @@ -1453,6 +1483,7 @@ yy_readline_get () old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler); } + sh_unset_nodelay_mode (fileno (rl_instream)); /* just in case */ current_readline_line = readline (current_readline_prompt ? current_readline_prompt : ""); @@ -1615,19 +1646,9 @@ yy_stream_get () result = EOF; if (bash_input.location.file) { -#if 0 - if (interactive) - interrupt_immediately++; -#endif - /* XXX - don't need terminate_immediately; getc_with_restart checks for terminating signals itself if read returns < 0 */ result = getc_with_restart (bash_input.location.file); - -#if 0 - if (interactive) - interrupt_immediately--; -#endif } return (result); } @@ -1961,6 +1982,23 @@ parser_restore_alias () #endif } +#if defined (ALIAS) +/* Before freeing AP, make sure that there aren't any cases of pointer + aliasing that could cause us to reference freed memory later on. */ +void +clear_string_list_expander (ap) + alias_t *ap; +{ + register STRING_SAVER *t; + + for (t = pushed_string_list; t; t = t->next) + { + if (t->expander && t->expander == ap) + t->expander = 0; + } +} +#endif + void clear_shell_input_line () { @@ -2014,7 +2052,8 @@ read_a_line (remove_quoted_newline) c = '\n'; } - /* `+2' in case the final character in the buffer is a newline. */ + /* `+2' in case the final character in the buffer is a newline or we + have to handle CTLESC or CTLNUL. */ RESIZE_MALLOCED_BUFFER (line_buffer, indx, 2, buffer_size, 128); /* IF REMOVE_QUOTED_NEWLINES is non-zero, we are reading a @@ -2045,7 +2084,14 @@ read_a_line (remove_quoted_newline) } } else - line_buffer[indx++] = c; + { + /* remove_quoted_newline is non-zero if the here-document delimiter + is unquoted. In this case, we will be expanding the lines and + need to make sure CTLESC and CTLNUL in the input are quoted. */ + if (remove_quoted_newline && (c == CTLESC || c == CTLNUL)) + line_buffer[indx++] = CTLESC; + line_buffer[indx++] = c; + } if (c == '\n') { @@ -2306,6 +2352,16 @@ shell_getc (remove_quoted_newline) #if 0 internal_warning ("shell_getc: ignored null byte in input"); #endif + /* If we get EOS while parsing a string, treat it as EOF so we + don't just keep looping. Happens very rarely */ + if (bash_input.type == st_string) + { + if (i == 0) + shell_input_line_terminator = EOF; + shell_input_line[i] = '\0'; + c = EOF; + break; + } continue; } @@ -2369,20 +2425,21 @@ shell_getc (remove_quoted_newline) { char *expansions; # if defined (BANG_HISTORY) - int old_hist; - /* If the current delimiter is a single quote, we should not be performing history expansion, even if we're on a different line from the original single quote. */ - old_hist = history_expansion_inhibited; if (current_delimiter (dstack) == '\'') - history_expansion_inhibited = 1; + history_quoting_state = '\''; + else if (current_delimiter (dstack) == '"') + history_quoting_state = '"'; + else + history_quoting_state = 0; # endif /* Calling with a third argument of 1 allows remember_on_history to determine whether or not the line is saved to the history list */ expansions = pre_process_line (shell_input_line, 1, 1); # if defined (BANG_HISTORY) - history_expansion_inhibited = old_hist; + history_quoting_state = 0; # endif if (expansions != shell_input_line) { @@ -2484,7 +2541,34 @@ next_alias_char: parsing an alias, we have just saved one (push_string, when called by the parse_dparen code) In this case, just go on as well. The PSH_SOURCE case is handled below. */ + + /* If we're at the end of an alias expansion add a space to make sure that + the alias remains marked as being in use while we expand its last word. + This makes sure that pop_string doesn't mark the alias as not in use + before the string resulting from the alias expansion is tokenized and + checked for alias expansion, preventing recursion. At this point, the + last character in shell_input_line is the last character of the alias + expansion. We test that last character to determine whether or not to + return the space that will delimit the token and postpone the pop_string. + This set of conditions duplicates what used to be in mk_alexpansion () + below, with the addition that we don't add a space if we're currently + reading a quoted string or in a shell comment. */ +#ifndef OLD_ALIAS_HACK + if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE && + pushed_string_list->flags != PSH_DPAREN && + (parser_state & PST_COMMENT) == 0 && + shell_input_line_index > 0 && + shell_input_line[shell_input_line_index-1] != ' ' && + shell_input_line[shell_input_line_index-1] != '\n' && + shellmeta (shell_input_line[shell_input_line_index-1]) == 0 && + (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"')) + { + return ' '; /* END_ALIAS */ + } +#endif + pop_alias: + /* This case works for PSH_DPAREN as well */ if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE) { pop_string (); @@ -2502,10 +2586,9 @@ pop_alias: /* What do we do here if we're expanding an alias whose definition includes an escaped newline? If that's the last character in the alias expansion, we just pop the pushed string list (recall that - we inhibit the appending of a space in mk_alexpansion() if newline - is the last character). If it's not the last character, we need - to consume the quoted newline and move to the next character in - the expansion. */ + we inhibit the appending of a space if newline is the last + character). If it's not the last character, we need to consume the + quoted newline and move to the next character in the expansion. */ #if defined (ALIAS) if (expanding_alias () && shell_input_line[shell_input_line_index+1] == '\0') { @@ -2570,7 +2653,7 @@ parser_remaining_input () { if (shell_input_line == 0) return 0; - if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len) + if ((int)shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len) return ""; /* XXX */ return (shell_input_line + shell_input_line_index); } @@ -2680,7 +2763,7 @@ yylex () if (bash_input.type == st_string) rewind_input_string (); } - parser_state &= ~PST_EOFTOKEN; + parser_state &= ~PST_EOFTOKEN; /* ??? */ return (current_token); } @@ -2689,6 +2772,10 @@ yylex () which allow ESAC to be the next one read. */ static int esacs_needed_count; +/* When non-zero, we can read IN as an acceptable token, regardless of how + many newlines we read. */ +static int expecting_in_token; + static void push_heredoc (r) REDIRECT *r; @@ -2809,10 +2896,15 @@ mk_alexpansion (s) l = strlen (s); r = xmalloc (l + 2); strcpy (r, s); +#ifdef OLD_ALIAS_HACK /* If the last character in the alias is a newline, don't add a trailing space to the expansion. Works with shell_getc above. */ - if (r[l - 1] != ' ' && r[l - 1] != '\n' && shellmeta(r[l - 1]) == 0) + /* Need to do something about the case where the alias expansion contains + an unmatched quoted string, since appending this space affects the + subsequent output. */ + if (l > 0 && r[l - 1] != ' ' && r[l - 1] != '\n' && shellmeta(r[l - 1]) == 0) r[l++] = ' '; +#endif r[l] = '\0'; return r; } @@ -2833,10 +2925,14 @@ alias_expand_token (tokstr) if (ap && (ap->flags & AL_BEINGEXPANDED)) return (NO_EXPANSION); +#ifdef OLD_ALIAS_HACK /* mk_alexpansion puts an extra space on the end of the alias expansion, - so the lookahead by the parser works right. If this gets changed, - make sure the code in shell_getc that deals with reaching the end of - an expanded alias is changed with it. */ + so the lookahead by the parser works right (the alias needs to remain + `in use' while parsing its last word to avoid alias recursion for + something like "alias echo=echo"). If this gets changed, make sure + the code in shell_getc that deals with reaching the end of an + expanded alias is changed with it. */ +#endif expanded = ap ? mk_alexpansion (ap->value) : (char *)NULL; if (expanded) @@ -2934,6 +3030,7 @@ static int special_case_tokens (tokstr) char *tokstr; { + /* Posix grammar rule 6 */ if ((last_read_token == WORD) && #if defined (SELECT_COMMAND) ((token_before_that == FOR) || (token_before_that == CASE) || (token_before_that == SELECT)) && @@ -2947,9 +3044,34 @@ special_case_tokens (tokstr) parser_state |= PST_CASEPAT; esacs_needed_count++; } + if (expecting_in_token) + expecting_in_token--; + return (IN); + } + + /* XXX - leaving above code intact for now, but it should eventually be + removed in favor of this clause. */ + /* Posix grammar rule 6 */ + if (expecting_in_token && (last_read_token == WORD || last_read_token == '\n') && + (tokstr[0] == 'i' && tokstr[1] == 'n' && tokstr[2] == 0)) + { + if (parser_state & PST_CASESTMT) + { + parser_state |= PST_CASEPAT; + esacs_needed_count++; + } + expecting_in_token--; return (IN); } + /* Posix grammar rule 6, third word in FOR: for i; do command-list; done */ + else if (expecting_in_token && (last_read_token == '\n' || last_read_token == ';') && + (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0')) + { + expecting_in_token--; + return (DO); + } + /* for i do; command-list; done */ if (last_read_token == WORD && #if defined (SELECT_COMMAND) (token_before_that == FOR || token_before_that == SELECT) && @@ -2957,7 +3079,11 @@ special_case_tokens (tokstr) (token_before_that == FOR) && #endif (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0')) - return (DO); + { + if (expecting_in_token) + expecting_in_token--; + return (DO); + } /* Ditto for ESAC in the CASE case. Specifically, this handles "case word in esac", which is a legal @@ -2967,9 +3093,9 @@ special_case_tokens (tokstr) the designers disagree. */ if (esacs_needed_count) { - esacs_needed_count--; - if (STREQ (tokstr, "esac")) + if (last_read_token == IN && STREQ (tokstr, "esac")) { + esacs_needed_count--; parser_state &= ~PST_CASEPAT; return (ESAC); } @@ -3060,6 +3186,13 @@ reset_parser () token_to_read = '\n'; } +void +reset_readahead_token () +{ + if (token_to_read == '\n') + token_to_read = 0; +} + /* Read the next token. Command can be READ (normal operation) or RESET (to normalize state). */ static int @@ -3121,11 +3254,24 @@ read_token (command) return (yacc_EOF); } + /* If we hit the end of the string and we're not expanding an alias (e.g., + we are eval'ing a string that is an incomplete command), return EOF */ + if (character == '\0' && bash_input.type == st_string && expanding_alias() == 0) + { +#if defined (DEBUG) +itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.string); +#endif + EOF_Reached = 1; + return (yacc_EOF); + } + if MBTEST(character == '#' && (!interactive || interactive_comments)) { /* A comment. Discard until EOL or EOF, and then return a newline. */ + parser_state |= PST_COMMENT; discard_until ('\n'); shell_getc (0); + parser_state &= ~PST_COMMENT; character = '\n'; /* this will take the next if statement and return. */ } @@ -3316,18 +3462,19 @@ tokword: #define P_DOLBRACE 0x0040 /* parsing a ${...} construct */ /* Lexical state while parsing a grouping construct or $(...). */ -#define LEX_WASDOL 0x001 -#define LEX_CKCOMMENT 0x002 -#define LEX_INCOMMENT 0x004 -#define LEX_PASSNEXT 0x008 -#define LEX_RESWDOK 0x010 -#define LEX_CKCASE 0x020 -#define LEX_INCASE 0x040 -#define LEX_INHEREDOC 0x080 -#define LEX_HEREDELIM 0x100 /* reading here-doc delimiter */ -#define LEX_STRIPDOC 0x200 /* <<- strip tabs from here doc delim */ -#define LEX_QUOTEDDOC 0x400 /* here doc with quoted delim */ -#define LEX_INWORD 0x800 +#define LEX_WASDOL 0x0001 +#define LEX_CKCOMMENT 0x0002 +#define LEX_INCOMMENT 0x0004 +#define LEX_PASSNEXT 0x0008 +#define LEX_RESWDOK 0x0010 +#define LEX_CKCASE 0x0020 +#define LEX_INCASE 0x0040 +#define LEX_INHEREDOC 0x0080 +#define LEX_HEREDELIM 0x0100 /* reading here-doc delimiter */ +#define LEX_STRIPDOC 0x0200 /* <<- strip tabs from here doc delim */ +#define LEX_QUOTEDDOC 0x0400 /* here doc with quoted delim */ +#define LEX_INWORD 0x0800 +#define LEX_GTLT 0x1000 #define COMSUB_META(ch) ((ch) == ';' || (ch) == '&' || (ch) == '|') @@ -3358,7 +3505,7 @@ parse_matched_pair (qc, open, close, lenp, flags) int open, close; int *lenp, flags; { - int count, ch, tflags; + int count, ch, prevch, tflags; int nestlen, ttranslen, start_lineno; char *ret, *nestret, *ttrans; int retind, retsize, rflags; @@ -3380,8 +3527,10 @@ parse_matched_pair (qc, open, close, lenp, flags) retind = 0; start_lineno = line_number; + ch = EOF; /* just in case */ while (count) { + prevch = ch; ch = shell_getc (qc != '\'' && (tflags & (LEX_PASSNEXT)) == 0); if (ch == EOF) @@ -3532,7 +3681,7 @@ parse_matched_pair (qc, open, close, lenp, flags) { /* Translate $'...' here. */ ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); - xfree (nestret); + free (nestret); /* If we're parsing a double-quoted brace expansion and we are not in a place where single quotes are treated specially, @@ -3562,7 +3711,7 @@ parse_matched_pair (qc, open, close, lenp, flags) { /* Locale expand $"..." here. */ ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); - xfree (nestret); + free (nestret); nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); free (ttrans); @@ -3575,6 +3724,12 @@ parse_matched_pair (qc, open, close, lenp, flags) } else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ goto parse_dollar_word; +#if defined (PROCESS_SUBSTITUTION) + /* XXX - technically this should only be recognized at the start of + a word */ + else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_GTLT) && (ch == '(')) /* ) */ + goto parse_dollar_word; +#endif } /* Parse an old-style command substitution within double quotes as a single word. */ @@ -3606,7 +3761,13 @@ parse_dollar_word: FREE (nestret); } - if MBTEST(ch == '$') +#if defined (PROCESS_SUBSTITUTION) + if MBTEST((ch == '<' || ch == '>') && (tflags & LEX_GTLT) == 0) + tflags |= LEX_GTLT; + else + tflags &= ~LEX_GTLT; +#endif + if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0) tflags |= LEX_WASDOL; else tflags &= ~LEX_WASDOL; @@ -3738,7 +3899,7 @@ parse_comsub (qc, open, close, lenp, flags) while (count) { comsub_readchar: - ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT)) == 0); + ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT|LEX_QUOTEDDOC)) == 0); if (ch == EOF) { @@ -3769,7 +3930,7 @@ eof_error: tind = lex_firstind; while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t') tind++; - if (STREQN (ret + tind, heredelim, hdlen)) + if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen)) { tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC); /*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/ @@ -4010,11 +4171,13 @@ eof_error: tflags |= LEX_RESWDOK; lex_rwlen = 0; } - else + else if (shellmeta (ch) == 0) { tflags &= ~LEX_RESWDOK; /*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 0", line_number, ret+retind-4);*/ } + else /* can't be in a reserved word any more */ + lex_rwlen = 0; } else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0))) ; /* don't modify LEX_RESWDOK if we're starting a comment */ @@ -4087,7 +4250,10 @@ eof_error: continue; } else - ch = peekc; /* fall through and continue XXX */ + { + shell_ungetc (peekc); /* not a here-doc, start over */ + continue; + } } else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (((tflags & LEX_RESWDOK) && lex_rwlen == 0) || ((tflags & LEX_INWORD) && lex_wlen == 0))) { @@ -4143,7 +4309,7 @@ eof_error: { /* Translate $'...' here. */ ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); - xfree (nestret); + free (nestret); if ((rflags & P_DQUOTE) == 0) { @@ -4162,7 +4328,7 @@ eof_error: { /* Locale expand $"..." here. */ ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); - xfree (nestret); + free (nestret); nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); free (ttrans); @@ -4190,7 +4356,7 @@ eof_error: FREE (nestret); } - if MBTEST(ch == '$') + if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0) tflags |= LEX_WASDOL; else tflags &= ~LEX_WASDOL; @@ -4215,12 +4381,25 @@ xparse_dolparen (base, string, indp, flags) sh_parser_state_t ps; sh_input_line_state_t ls; int orig_ind, nc, sflags, orig_eof_token; - char *ret, *s, *ep, *ostring; + char *ret, *ep, *ostring; +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + STRING_SAVER *saved_pushed_strings; +#endif - /*yydebug = 1;*/ +/*debug_parser(1);*/ orig_ind = *indp; ostring = string; + if (*string == 0) + { + if (flags & SX_NOALLOC) + return (char *)NULL; + + ret = xmalloc (1); + ret[0] = '\0'; + return ret; + } + /*itrace("xparse_dolparen: size = %d shell_input_line = `%s'", shell_input_line_size, shell_input_line);*/ sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE; if (flags & SX_NOLONGJMP) @@ -4228,29 +4407,47 @@ xparse_dolparen (base, string, indp, flags) save_parser_state (&ps); save_input_line_state (&ls); orig_eof_token = shell_eof_token; +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + saved_pushed_strings = pushed_string_list; /* separate parsing context */ + pushed_string_list = (STRING_SAVER *)NULL; +#endif /*(*/ parser_state |= PST_CMDSUBST|PST_EOFTOKEN; /* allow instant ')' */ /*(*/ shell_eof_token = ')'; + /* Should we save and restore the bison/yacc lookahead token (yychar) here? + Or only if it's not YYEMPTY? */ + nc = parse_string (string, "command substitution", sflags, &ep); + if (current_token == shell_eof_token) + yyclearin; /* might want to clear lookahead token unconditionally */ + shell_eof_token = orig_eof_token; restore_parser_state (&ps); reset_parser (); /* reset_parser clears shell_input_line and associated variables */ restore_input_line_state (&ls); +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + pushed_string_list = saved_pushed_strings; +#endif + token_to_read = 0; /* If parse_string returns < 0, we need to jump to top level with the - negative of the return value */ + negative of the return value. We abandon the rest of this input line + first */ if (nc < 0) - jump_to_top_level (-nc); /* XXX */ + { + clear_shell_input_line (); /* XXX */ + jump_to_top_level (-nc); /* XXX */ + } /* Need to find how many characters parse_and_execute consumed, update *indp, if flags != 0, copy the portion of the string parsed into RET - and return it. If flags & 1 (EX_NOALLOC) we can return NULL. */ + and return it. If flags & 1 (SX_NOALLOC) we can return NULL. */ /*(*/ if (ep[-1] != ')') @@ -4269,6 +4466,8 @@ xparse_dolparen (base, string, indp, flags) #if DEBUG if (base[*indp] != ')') itrace("xparse_dolparen:%d: base[%d] != RPAREN (%d), base = `%s'", line_number, *indp, base[*indp], base); + if (*indp < orig_ind) + itrace("xparse_dolparen:%d: *indp (%d) < orig_ind (%d), orig_string = `%s'", line_number, *indp, orig_ind, ostring); #endif if (flags & SX_NOALLOC) @@ -4512,7 +4711,7 @@ cond_term () if (term) term->flags |= CMD_INVERT_RETURN; } - else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[2] == 0 && test_unop (yylval.word->word)) + else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[1] && yylval.word->word[2] == 0 && test_unop (yylval.word->word)) { op = yylval.word; tok = read_token (READ); @@ -4645,20 +4844,30 @@ parse_cond_command () #if defined (ARRAY_VARS) /* When this is called, it's guaranteed that we don't care about anything - in t beyond i. We do save and restore the chars, though. */ + in t beyond i. We use a buffer with room for the characters we add just + in case assignment() ends up doing something like parsing a command + substitution that will reallocate atoken. We don't want to write beyond + the end of an allocated buffer. */ static int token_is_assignment (t, i) char *t; int i; { - unsigned char c, c1; int r; + char *atoken; - c = t[i]; c1 = t[i+1]; - t[i] = '='; t[i+1] = '\0'; - r = assignment (t, (parser_state & PST_COMPASSIGN) != 0); - t[i] = c; t[i+1] = c1; - return r; + atoken = xmalloc (i + 3); + memcpy (atoken, t, i); + atoken[i] = '='; + atoken[i+1] = '\0'; + + r = assignment (atoken, (parser_state & PST_COMPASSIGN) != 0); + + free (atoken); + + /* XXX - check that r == i to avoid returning false positive for + t containing `=' before t[i]. */ + return (r > 0 && r == i); } /* XXX - possible changes here for `+=' */ @@ -4773,7 +4982,8 @@ read_token_word (character) strcpy (token + token_index, ttok); token_index += ttoklen; all_digit_token = 0; - quoted = 1; + if (character != '`') + quoted = 1; dollar_present |= (character == '"' && strchr (ttok, '$') != 0); FREE (ttok); goto next_character; @@ -5113,6 +5323,7 @@ got_token: yylval.word = the_word; + /* should we check that quoted == 0 as well? */ if (token[0] == '{' && token[token_index-1] == '}' && (character == '<' || character == '>')) { @@ -5125,9 +5336,15 @@ got_token: #endif { strcpy (the_word->word, token+1); -/*itrace("read_token_word: returning REDIR_WORD for %s", the_word->word);*/ +/* itrace("read_token_word: returning REDIR_WORD for %s", the_word->word); */ + yylval.word = the_word; /* accommodate recursive call */ return (REDIR_WORD); } + else + /* valid_array_reference can call the parser recursively; need to + make sure that yylval.word doesn't change if we are going to + return WORD or ASSIGNMENT_WORD */ + yylval.word = the_word; } result = ((the_word->flags & (W_ASSIGNMENT|W_NOSPLIT)) == (W_ASSIGNMENT|W_NOSPLIT)) @@ -5145,6 +5362,7 @@ got_token: if (word_top < MAX_CASE_NEST) word_top++; word_lineno[word_top] = line_number; + expecting_in_token++; break; } @@ -5348,6 +5566,9 @@ history_delimiting_chars (line) return (" "); } + if (line_isblank (line)) + return (""); + return ("; "); } #endif /* HISTORY */ @@ -5418,6 +5639,31 @@ print_prompt () fflush (stderr); } +#if defined (HISTORY) + /* The history library increments the history offset as soon as it stores + the first line of a potentially multi-line command, so we compensate + here by returning one fewer when appropriate. */ +static int +prompt_history_number (pmt) + char *pmt; +{ + int ret; + + ret = history_number (); + if (ret == 1) + return ret; + + if (pmt == ps1_prompt) /* are we expanding $PS1? */ + return ret; + else if (pmt == ps2_prompt && command_oriented_history == 0) + return ret; /* not command oriented history */ + else if (pmt == ps2_prompt && command_oriented_history && current_command_first_line_saved) + return ret - 1; + else + return ret - 1; /* PS0, PS4, ${var@P}, PS2 other cases */ +} +#endif + /* Return a string which will be printed as a prompt. The string may contain special characters which are decoded as follows: @@ -5455,7 +5701,7 @@ decode_prompt_string (string) char *string; { WORD_LIST *list; - char *result, *t; + char *result, *t, *orig_string; struct dstack save_dstack; int last_exit_value, last_comsub_pid; #if defined (PROMPT_STRING_DECODE) @@ -5471,6 +5717,7 @@ decode_prompt_string (string) result = (char *)xmalloc (result_size = PROMPT_GROWTH); result[result_index = 0] = 0; temp = (char *)NULL; + orig_string = string; while (c = *string++) { @@ -5486,7 +5733,7 @@ decode_prompt_string (string) #if !defined (HISTORY) temp = savestring ("1"); #else /* HISTORY */ - temp = itos (history_number ()); + temp = itos (prompt_history_number (orig_string)); #endif /* HISTORY */ string--; /* add_string increments string again. */ goto add_string; @@ -5718,14 +5965,19 @@ decode_prompt_string (string) goto add_string; case '#': - temp = itos (current_command_number); + n = current_command_number; + /* If we have already incremented current_command_number (PS4, + ${var@P}), compensate */ + if (orig_string != ps0_prompt && orig_string != ps1_prompt && orig_string != ps2_prompt) + n--; + temp = itos (n); goto add_string; case '!': #if !defined (HISTORY) temp = savestring ("1"); #else /* HISTORY */ - temp = itos (history_number ()); + temp = itos (prompt_history_number (orig_string)); #endif /* HISTORY */ goto add_string; @@ -6302,8 +6554,6 @@ sh_parser_state_t * save_parser_state (ps) sh_parser_state_t *ps; { - int i; - if (ps == 0) ps = (sh_parser_state_t *)xmalloc (sizeof (sh_parser_state_t)); if (ps == 0) @@ -6339,15 +6589,10 @@ save_parser_state (ps) ps->need_here_doc = need_here_doc; ps->here_doc_first_line = here_doc_first_line; -#if 0 - for (i = 0; i < HEREDOC_MAX; i++) - ps->redir_stack[i] = redir_stack[i]; -#else if (need_here_doc == 0) ps->redir_stack[0] = 0; else memcpy (ps->redir_stack, redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX); -#endif ps->token = token; ps->token_buffer_size = token_buffer_size; @@ -6457,6 +6702,10 @@ restore_input_line_state (ls) ************************************************/ #if defined (HANDLE_MULTIBYTE) + +/* We don't let the property buffer get larger than this unless the line is */ +#define MAX_PROPSIZE 32768 + static void set_line_mbstate () { @@ -6468,8 +6717,22 @@ set_line_mbstate () if (shell_input_line == NULL) return; len = strlen (shell_input_line); /* XXX - shell_input_line_len ? */ - shell_input_line_property = (char *)xrealloc (shell_input_line_property, len + 1); + if (len == 0) + return; + if (shell_input_line_propsize >= MAX_PROPSIZE && len < MAX_PROPSIZE>>1) + { + free (shell_input_line_property); + shell_input_line_property = 0; + shell_input_line_propsize = 0; + } + if (len+1 > shell_input_line_propsize) + { + shell_input_line_propsize = len + 1; + shell_input_line_property = (char *)xrealloc (shell_input_line_property, shell_input_line_propsize); + } + /* XXX - use whether or not we are in a UTF-8 locale to avoid calls to + mbrlen */ memset (&prevs, '\0', sizeof (mbstate_t)); for (i = previ = 0; i < len; i++) { @@ -6484,6 +6747,9 @@ set_line_mbstate () break; } + /* I'd love to take more advantage of UTF-8's properties in a UTF-8 + locale, but mbrlen changes the mbstate_t on every call even when + presented with single-byte characters. */ mbclen = mbrlen (shell_input_line + previ, i - previ + 1, &mbs); if (mbclen == 1 || mbclen == (size_t)-1) { diff --git a/parser-built b/parser-built index b367eb205..86c8e505d 100644 --- a/parser-built +++ b/parser-built @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.0.5. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -148,7 +148,7 @@ extern int yydebug; union YYSTYPE { -#line 333 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1909 */ +#line 328 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1910 */ WORD_DESC *word; /* the word that we read. */ int number; /* the number that we read. */ @@ -158,7 +158,7 @@ union YYSTYPE ELEMENT element; PATTERN_LIST *pattern; -#line 162 "y.tab.h" /* yacc.c:1909 */ +#line 162 "y.tab.h" /* yacc.c:1910 */ }; typedef union YYSTYPE YYSTYPE; diff --git a/parser.h b/parser.h index 8d396dff0..54dd2c889 100644 --- a/parser.h +++ b/parser.h @@ -46,7 +46,7 @@ #define PST_HEREDOC 0x020000 /* reading body of here-document */ #define PST_REPARSE 0x040000 /* re-parsing in parse_string_to_word_list */ #define PST_REDIRLIST 0x080000 /* parsing a list of redirections preceding a simple command name */ - +#define PST_COMMENT 0x100000 /* parsing a shell comment; used by aliases */ /* Definition of the delimiter stack. Needed by parse.y and bashhist.c. */ struct dstack { @@ -70,4 +70,30 @@ struct dstack { #define DOLBRACE_QUOTE 0x40 /* single quote is special in double quotes */ #define DOLBRACE_QUOTE2 0x80 /* single quote is semi-special in double quotes */ +/* variable declarations from parse.y */ +extern struct dstack dstack; + +extern char *primary_prompt; +extern char *secondary_prompt; + +extern char *current_prompt_string; + +extern char *ps1_prompt; +extern char *ps2_prompt; +extern char *ps0_prompt; + +extern int expand_aliases; +extern int current_command_line_count; +extern int saved_command_line_count; +extern int shell_eof_token; +extern int current_token; +extern int parser_state; +extern int need_here_doc; + +extern int ignoreeof; +extern int eof_encountered; +extern int eof_encountered_limit; + +extern int line_number, line_number_base; + #endif /* _PARSER_H_ */ diff --git a/patchlevel.h b/patchlevel.h index 2060b58fe..1cd7c96c7 100644 --- a/patchlevel.h +++ b/patchlevel.h @@ -25,6 +25,6 @@ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh looks for to find the patch level (for the sccs version string). */ -#define PATCHLEVEL 23 +#define PATCHLEVEL 0 #endif /* _PATCHLEVEL_H_ */ diff --git a/pathexp.c b/pathexp.c index 21fc148db..b51729a7b 100644 --- a/pathexp.c +++ b/pathexp.c @@ -96,8 +96,13 @@ unquoted_glob_pattern_p (string) return (1); continue; - case CTLESC: + /* A pattern can't end with a backslash, but a backslash in the pattern + can be removed by the matching engine, so we have to run it through + globbing. */ case '\\': + return (*string != 0); + + case CTLESC: if (*string++ == '\0') return (0); } @@ -172,10 +177,11 @@ glob_char_p (s) is performed, (flags & QGLOB_CVTNULL) should be 0; if called when quote removal has not been done (for example, before attempting to match a pattern while executing a case statement), flags should include - QGLOB_CVTNULL. If flags includes QGLOB_FILENAME, appropriate quoting - to match a filename should be performed. QGLOB_REGEXP means we're - quoting for a Posix ERE (for [[ string =~ pat ]]) and that requires - some special handling. */ + QGLOB_CVTNULL. If flags includes QGLOB_CTLESC, we need to remove CTLESC + quoting CTLESC or CTLNUL (as if dequote_string were called). If flags + includes QGLOB_FILENAME, appropriate quoting to match a filename should be + performed. QGLOB_REGEXP means we're quoting for a Posix ERE (for + [[ string =~ pat ]]) and that requires some special handling. */ char * quote_string_for_globbing (pathname, qflags) const char *pathname; @@ -183,7 +189,7 @@ quote_string_for_globbing (pathname, qflags) { char *temp; register int i, j; - int brack, cclass, collsym, equiv, c, last_was_backslash; + int cclass, collsym, equiv, c, last_was_backslash; int savei, savej; temp = (char *)xmalloc (2 * strlen (pathname) + 1); @@ -194,7 +200,7 @@ quote_string_for_globbing (pathname, qflags) return temp; } - brack = cclass = collsym = equiv = last_was_backslash = 0; + cclass = collsym = equiv = last_was_backslash = 0; for (i = j = 0; pathname[i]; i++) { /* Fix for CTLESC at the end of the string? */ @@ -205,7 +211,7 @@ quote_string_for_globbing (pathname, qflags) } /* If we are parsing regexp, turn CTLESC CTLESC into CTLESC. It's not an ERE special character, so we should just be able to pass it through. */ - else if ((qflags & QGLOB_REGEXP) && pathname[i] == CTLESC && pathname[i+1] == CTLESC) + else if ((qflags & (QGLOB_REGEXP|QGLOB_CTLESC)) && pathname[i] == CTLESC && (pathname[i+1] == CTLESC || pathname[i+1] == CTLNUL)) { i++; temp[j++] = pathname[i]; @@ -225,11 +231,20 @@ quote_string_for_globbing (pathname, qflags) } else if ((qflags & QGLOB_REGEXP) && (i == 0 || pathname[i-1] != CTLESC) && pathname[i] == '[') /*]*/ { - brack = 1; temp[j++] = pathname[i++]; /* open bracket */ savej = j; savei = i; c = pathname[i++]; /* c == char after open bracket */ + if (c == '^') /* ignore pattern negation */ + { + temp[j++] = c; + c = pathname[i++]; + } + if (c == ']') /* ignore right bracket if first char */ + { + temp[j++] = c; + c = pathname[i++]; + } do { if (c == 0) @@ -315,6 +330,10 @@ quote_string_for_globbing (pathname, qflags) i++; if (pathname[i] == '\0') break; + /* If we are turning CTLESC CTLESC into CTLESC, we need to do that + even when the first CTLESC is preceded by a backslash. */ + if ((qflags & QGLOB_CTLESC) && pathname[i] == CTLESC && (pathname[i+1] == CTLESC || pathname[i+1] == CTLNUL)) + i++; /* skip over the CTLESC */ } else if (pathname[i] == '\\' && (qflags & QGLOB_REGEXP)) last_was_backslash = 1; @@ -406,11 +425,13 @@ shell_glob_filename (pathname) #else /* !USE_POSIX_GLOB_LIBRARY */ char *temp, **results; + int gflags; noglob_dot_filenames = glob_dot_filenames == 0; temp = quote_string_for_globbing (pathname, QGLOB_FILENAME); - results = glob_filename (temp, glob_star ? GX_GLOBSTAR : 0); + gflags = glob_star ? GX_GLOBSTAR : 0; + results = glob_filename (temp, gflags); free (temp); if (results && ((GLOB_FAILED (results)) == 0)) diff --git a/pathexp.h b/pathexp.h index 183a2124c..adef8b2a1 100644 --- a/pathexp.h +++ b/pathexp.h @@ -33,6 +33,8 @@ extern char *glob_error_return; #define QGLOB_CVTNULL 0x01 /* convert QUOTED_NULL strings to '\0' */ #define QGLOB_FILENAME 0x02 /* do correct quoting for matching filenames */ #define QGLOB_REGEXP 0x04 /* quote an ERE for regcomp/regexec */ +#define QGLOB_CTLESC 0x08 /* turn CTLESC CTLESC into CTLESC for BREs */ +#define QGLOB_DEQUOTE 0x10 /* like dequote_string but quote glob chars */ #if defined (EXTENDED_GLOB) /* Flags to OR with other flag args to strmatch() to enabled the extended diff --git a/pcomplete.c b/pcomplete.c index ac0903a9e..5014c21a2 100644 --- a/pcomplete.c +++ b/pcomplete.c @@ -1,6 +1,6 @@ /* pcomplete.c - functions to generate lists of matches for programmable completion. */ -/* Copyright (C) 1999-2012 Free Software Foundation, Inc. +/* Copyright (C) 1999-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -71,8 +71,6 @@ #include #include -#define PCOMP_RETRYFAIL 256 - #ifdef STRDUP # undef STRDUP #endif @@ -84,10 +82,8 @@ typedef SHELL_VAR **SVFUNC (); extern char *strpbrk __P((char *, char *)); #endif -extern int array_needs_making; extern STRING_INT_ALIST word_token_alist[]; extern char *signal_names[]; -extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; #if defined (DEBUG) #if defined (PREFER_STDARG) @@ -155,6 +151,10 @@ static int progcomp_debug = 0; int prog_completion_enabled = 1; +#ifdef ALIAS +int progcomp_alias = 0; /* unavailable to user code for now */ +#endif + /* These are used to manage the arrays of strings for possible completions. */ ITEMLIST it_aliases = { 0, it_init_aliases, (STRINGLIST *)0 }; ITEMLIST it_arrayvars = { LIST_DYNAMIC, it_init_arrayvars, (STRINGLIST *)0 }; @@ -185,6 +185,9 @@ COMPSPEC *pcomp_curcs; const char *pcomp_curcmd; const char *pcomp_curtxt; +char *pcomp_line; +int pcomp_ind; + #ifdef DEBUG /* Debugging code */ static void @@ -728,7 +731,6 @@ pcomp_filename_completion_function (text, state) int state; { static char *dfn; /* dequoted filename */ - int qc; int iscompgen, iscompleting; if (state == 0) @@ -954,11 +956,15 @@ bind_comp_words (lwords) { SHELL_VAR *v; - v = find_variable ("COMP_WORDS"); + v = find_variable_noref ("COMP_WORDS"); if (v == 0) v = make_new_array_variable ("COMP_WORDS"); + if (nameref_p (v)) + VUNSETATTR (v, att_nameref); +#if 0 if (readonly_p (v)) VUNSETATTR (v, att_readonly); +#endif if (array_p (v) == 0) v = convert_var_to_array (v); v = assign_array_var_from_word_list (v, lwords, 0); @@ -993,17 +999,17 @@ bind_compfunc_variables (line, ind, lwords, cw, exported) llen = MB_STRLEN (line); line[ind] = c; value = inttostr (llen, ibuf, sizeof(ibuf)); - v = bind_int_variable ("COMP_POINT", value); + v = bind_int_variable ("COMP_POINT", value, 0); if (v && exported) VSETATTR(v, att_exported); value = inttostr (rl_completion_type, ibuf, sizeof (ibuf)); - v = bind_int_variable ("COMP_TYPE", value); + v = bind_int_variable ("COMP_TYPE", value, 0); if (v && exported) VSETATTR(v, att_exported); value = inttostr (rl_completion_invoking_key, ibuf, sizeof (ibuf)); - v = bind_int_variable ("COMP_KEY", value); + v = bind_int_variable ("COMP_KEY", value, 0); if (v && exported) VSETATTR(v, att_exported); @@ -1014,7 +1020,7 @@ bind_compfunc_variables (line, ind, lwords, cw, exported) #ifdef ARRAY_VARS v = bind_comp_words (lwords); value = inttostr (cw, ibuf, sizeof(ibuf)); - bind_int_variable ("COMP_CWORD", value); + bind_int_variable ("COMP_CWORD", value, 0); #endif } else @@ -1165,13 +1171,13 @@ gen_shell_function_matches (cs, cmd, text, line, ind, lwords, nw, cw, foundp) v = find_variable ("COMPREPLY"); if (v == 0) return ((STRINGLIST *)NULL); - if (array_p (v) == 0) + if (array_p (v) == 0 && assoc_p (v) == 0) v = convert_var_to_array (v); VUNSETATTR (v, att_invisible); a = array_cell (v); - if (found == 0 || (found & PCOMP_RETRYFAIL) || a == 0 || array_empty (a)) + if (found == 0 || (found & PCOMP_RETRYFAIL) || a == 0 || array_p (v) == 0 || array_empty (a)) sl = (STRINGLIST *)NULL; else { @@ -1243,7 +1249,7 @@ gen_command_matches (cs, cmd, text, line, ind, lwords, nw, cw) } cscmd[cmdlen] = '\0'; - tw = command_substitute (cscmd, 0); + tw = command_substitute (cscmd, 0, 0); csbuf = tw ? tw->word : (char *)NULL; if (tw) dispose_word_desc (tw); @@ -1379,14 +1385,14 @@ gen_compspec_completions (cs, cmd, word, start, end, foundp) /* If we have a command or function to execute, we need to first break the command line into individual words, find the number of words, and find the word in the list containing the word to be completed. */ - line = substring (rl_line_buffer, start, end); + line = substring (pcomp_line, start, end); llen = end - start; #ifdef DEBUG debug_printf ("command_line_to_word_list (%s, %d, %d, %p, %p)", - line, llen, rl_point - start, &nw, &cw); + line, llen, pcomp_ind - start, &nw, &cw); #endif - lwords = command_line_to_word_list (line, llen, rl_point - start, &nw, &cw); + lwords = command_line_to_word_list (line, llen, pcomp_ind - start, &nw, &cw); /* If we skipped a NULL word at the beginning of the line, add it back */ if (lwords && lwords->word && cmd[0] == 0 && lwords->word->word[0] != 0) { @@ -1413,7 +1419,7 @@ gen_compspec_completions (cs, cmd, word, start, end, foundp) if (cs->funcname) { foundf = 0; - tmatches = gen_shell_function_matches (cs, cmd, word, line, rl_point - start, lwords, nw, cw, &foundf); + tmatches = gen_shell_function_matches (cs, cmd, word, line, pcomp_ind - start, lwords, nw, cw, &foundf); if (foundf != 0) found = foundf; if (tmatches) @@ -1433,7 +1439,7 @@ gen_compspec_completions (cs, cmd, word, start, end, foundp) if (cs->command) { - tmatches = gen_command_matches (cs, cmd, word, line, rl_point - start, lwords, nw, cw); + tmatches = gen_command_matches (cs, cmd, word, line, pcomp_ind - start, lwords, nw, cw); if (tmatches) { #ifdef DEBUG @@ -1607,37 +1613,107 @@ gen_progcomp_completions (ocmd, cmd, word, start, end, foundp, retryp, lastcs) /* The driver function for the programmable completion code. Returns a list of matches for WORD, which is an argument to command CMD. START and END - bound the command currently being completed in rl_line_buffer. */ + bound the command currently being completed in pcomp_line (usually + rl_line_buffer). */ char ** programmable_completions (cmd, word, start, end, foundp) const char *cmd; const char *word; int start, end, *foundp; { - COMPSPEC *cs, *lastcs; + COMPSPEC *lastcs; STRINGLIST *ret; char **rmatches, *t; int found, retry, count; + char *ocmd; + int oend; +#if defined (ALIAS) + alias_t *al; +#endif lastcs = 0; found = count = 0; + pcomp_line = rl_line_buffer; + pcomp_ind = rl_point; + + ocmd = (char *)cmd; + oend = end; + do { retry = 0; /* We look at the basename of CMD if the full command does not have an associated COMPSPEC. */ - ret = gen_progcomp_completions (cmd, cmd, word, start, end, &found, &retry, &lastcs); + ret = gen_progcomp_completions (ocmd, ocmd, word, start, oend, &found, &retry, &lastcs); if (found == 0) { - t = strrchr (cmd, '/'); + t = strrchr (ocmd, '/'); if (t && *(++t)) - ret = gen_progcomp_completions (t, cmd, word, start, end, &found, &retry, &lastcs); + ret = gen_progcomp_completions (t, ocmd, word, start, oend, &found, &retry, &lastcs); } if (found == 0) - ret = gen_progcomp_completions (DEFAULTCMD, cmd, word, start, end, &found, &retry, &lastcs); + ret = gen_progcomp_completions (DEFAULTCMD, ocmd, word, start, oend, &found, &retry, &lastcs); + +#if defined (ALIAS) + /* Look up any alias for CMD, try to gen completions for it */ + /* Look up the alias, find the value, build a new line replacing CMD + with that value, offsetting PCOMP_IND and END appropriately, reset + PCOMP_LINE to the new line and OCMD with the new command name, then + call gen_progcomp_completions again. We could use alias_expand for + this, but it does more (and less) than we need right now. */ + if (found == 0 && retry == 0 && progcomp_alias && (al = find_alias (ocmd))) + { + char *ncmd, *nline, *ntxt; + int ind, lendiff; + size_t nlen, olen, llen; + + /* We found an alias for OCMD. Take the value and build a new line */ + ntxt = al->value; + nlen = strlen (ntxt); + if (nlen == 0) + break; + olen = strlen (ocmd); + lendiff = nlen - olen; /* can be negative */ + llen = strlen (pcomp_line); + + nline = (char *)xmalloc (llen + lendiff + 1); + if (start > 0) + strncpy (nline, pcomp_line, start); + strncpy (nline + start, ntxt, nlen); + strcpy (nline + start + nlen, pcomp_line + start + olen); + + /* Find the first word of the alias value and use that as OCMD. We + don't check the alias value to see whether it begins with a valid + command name, so this can be fooled. */ + ind = skip_to_delim (ntxt, 0, "()<>;&| \t\n", SD_NOJMP|SD_COMPLETE); + if (ind > 0) + ncmd = substring (ntxt, 0, ind); + else + { + free (nline); + break; /* will free pcomp_line and ocmd later */ + } + + /* Adjust PCOMP_IND and OEND appropriately */ + pcomp_ind += lendiff; + oend += lendiff; + + /* Set up values with new line. WORD stays the same. */ + if (ocmd != cmd) + free (ocmd); + if (pcomp_line != rl_line_buffer) + free (pcomp_line); + + ocmd = ncmd; + pcomp_line = nline; + + /* And go back and start over. */ + retry = 1; + } +#endif /* ALIAS */ count++; @@ -1649,6 +1725,11 @@ programmable_completions (cmd, word, start, end, foundp) } while (retry); + if (pcomp_line != rl_line_buffer) + free (pcomp_line); + if (ocmd != cmd) + free (ocmd); + if (ret) { rmatches = ret->list; @@ -1663,6 +1744,10 @@ programmable_completions (cmd, word, start, end, foundp) if (lastcs) /* XXX - should be while? */ compspec_dispose (lastcs); + /* XXX restore pcomp_line and pcomp_ind? */ + pcomp_line = rl_line_buffer; + pcomp_ind = rl_point; + return (rmatches); } diff --git a/pcomplete.h b/pcomplete.h index 0514245a6..38932ac2f 100644 --- a/pcomplete.h +++ b/pcomplete.h @@ -77,6 +77,12 @@ typedef struct compspec { #define COPT_PLUSDIRS (1<<7) #define COPT_NOSORT (1<<8) +#define COPT_LASTUSER COPT_NOSORT + +#define PCOMP_RETRYFAIL (COPT_LASTUSER << 1) +#define PCOMP_NOTFOUND (COPT_LASTUSER << 2) + + /* List of items is used by the code that implements the programmable completions. */ typedef struct _list_of_items { @@ -101,9 +107,15 @@ typedef struct _list_of_items { #define EMPTYCMD "_EmptycmD_" #define DEFAULTCMD "_DefaultCmD_" +#define INITIALWORD "_InitialWorD_" extern HASH_TABLE *prog_completes; + +extern char *pcomp_line; +extern int pcomp_ind; + extern int prog_completion_enabled; +extern int progcomp_alias; /* Not all of these are used yet. */ extern ITEMLIST it_aliases; diff --git a/po/LINGUAS b/po/LINGUAS index 9c17d2658..442297c7e 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -1,2 +1,2 @@ # Set of available languages. -en@quot en@boldquot af bg ca cs da de el eo es et fi fr ga gl hr hu id it ja lt nb nl pl pt_BR ro ru sk sl sr sv tr uk vi zh_CN zh_TW +en@quot en@boldquot af bg ca cs da de el eo es et fi fr ga gl hr hu id it ja lt nb nl pl pt pt_BR ro ru sk sl sr sv tr uk vi zh_CN zh_TW 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/af.gmo b/po/af.gmo index 65138ec15..df481e21f 100644 Binary files a/po/af.gmo and b/po/af.gmo differ diff --git a/po/af.po b/po/af.po index 54feb499c..ff63c22c1 100644 --- a/po/af.po +++ b/po/af.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 2.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" "PO-Revision-Date: 2004-03-17 13:48+0200\n" "Last-Translator: Petri Jooste \n" "Language-Team: Afrikaans \n" @@ -14,122 +14,122 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "Language: af\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 #, fuzzy msgid "bad array subscript" msgstr "Os/2 Biskaart Skikking" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:578 -#, fuzzy, c-format +#: arrayfunc.c:586 +#, c-format msgid "%s: invalid associative array key" -msgstr "%s: illegal option -- %c\n" +msgstr "" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: kan nie %s skep nie" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 -#, fuzzy, c-format +#: builtins/alias.def:131 variables.c:1842 +#, c-format msgid "`%s': invalid alias name" -msgstr "%s: illegal option -- %c\n" +msgstr "" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, fuzzy, c-format msgid "%s: cannot read: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/bind.def:270 -#, fuzzy, c-format -msgid "`%s': cannot unbind" -msgstr "%s: bevel nie gevind nie" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, fuzzy, c-format msgid "`%s': unknown function name" msgstr "%s: leesalleen-funksie" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "" -#: builtins/break.def:79 builtins/break.def:121 -#, fuzzy +#: builtins/bind.def:353 builtins/bind.def:368 +#, fuzzy, c-format +msgid "`%s': cannot unbind" +msgstr "%s: bevel nie gevind nie" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" -msgstr "Afteken" +msgstr "" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "" @@ -140,243 +140,240 @@ msgid "" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 #, fuzzy msgid "too many arguments" msgstr "te veel parameters" -#: builtins/cd.def:336 +#: builtins/cd.def:341 #, fuzzy msgid "null directory" msgstr "boonste lêergids." -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "" -#: builtins/common.c:102 -#, fuzzy, c-format +#: builtins/common.c:96 +#, c-format msgid "line %d: " -msgstr "3d modus" +msgstr "" -#: builtins/common.c:140 error.c:265 -#, fuzzy, c-format +#: builtins/common.c:134 error.c:264 +#, c-format msgid "warning: " -msgstr "besig om te skryf" +msgstr "" -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "" -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, fuzzy, c-format msgid "%s: option requires an argument" msgstr "%s: option `%s' requires an argument\n" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "" -#: builtins/common.c:213 +#: builtins/common.c:207 #, fuzzy, c-format msgid "%s: not found" msgstr "%s: bevel nie gevind nie" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, fuzzy, c-format msgid "%s: invalid option" msgstr "%s: illegal option -- %c\n" -#: builtins/common.c:229 +#: builtins/common.c:223 #, fuzzy, c-format msgid "%s: invalid option name" msgstr "%s: illegal option -- %c\n" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, fuzzy, c-format msgid "`%s': not a valid identifier" msgstr "Die datum is nie geldige!" -#: builtins/common.c:246 +#: builtins/common.c:240 #, fuzzy msgid "invalid octal number" msgstr "Die sein nommer wat was gevang het" -#: builtins/common.c:248 +#: builtins/common.c:242 #, fuzzy msgid "invalid hex number" msgstr "Die sein nommer wat was gevang het" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 #, fuzzy msgid "invalid number" msgstr "Die sein nommer wat was gevang het" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, fuzzy, c-format msgid "%s: readonly variable" msgstr "Veranderlike boom" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 #, fuzzy msgid "argument" msgstr "argument verwag\n" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "" -#: builtins/common.c:298 +#: builtins/common.c:292 #, fuzzy, c-format msgid "%s: no job control" msgstr "geen taakbeheer in hierdie dop nie" -#: builtins/common.c:300 +#: builtins/common.c:294 #, fuzzy msgid "no job control" msgstr "geen taakbeheer in hierdie dop nie" -#: builtins/common.c:310 +#: builtins/common.c:304 #, fuzzy, c-format msgid "%s: restricted" msgstr "Die bediener beëindig Die verbinding." -#: builtins/common.c:312 -#, fuzzy +#: builtins/common.c:306 msgid "restricted" msgstr "" -"\n" -"Bevel beëindig\n" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "" -#: builtins/common.c:329 +#: builtins/common.c:323 #, fuzzy, c-format msgid "write error: %s" msgstr "pypfout: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, fuzzy, c-format msgid "%s: ambiguous job spec" msgstr "%s: dubbelsinnige herroetering" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: illegal option -- %c\n" +msgstr "" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: leesalleen-funksie" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, fuzzy, c-format msgid "%s: cannot destroy array variables in this way" msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -410,69 +407,69 @@ msgstr "" msgid "%s: cannot delete: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: is 'n gids" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, fuzzy, c-format msgid "%s: not a regular file" msgstr "%s: kan nie 'n binêre lêer uitvoer nie" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kan nie 'n binêre lêer uitvoer nie" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, fuzzy, c-format msgid "%s: cannot execute: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, fuzzy, c-format msgid "logout\n" msgstr "Afteken" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "" -#: builtins/fc.def:269 +#: builtins/fc.def:265 #, fuzzy msgid "no command found" msgstr "%s: bevel nie gevind nie" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, fuzzy, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "" @@ -487,39 +484,38 @@ msgstr "%s: illegal option -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: option `%s' requires an argument\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, fuzzy, c-format msgid "hits\tcommand\n" msgstr "Bevelreël" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "" msgstr[1] "" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -#: builtins/help.def:226 +#: builtins/help.def:224 #, fuzzy, c-format msgid "%s: cannot open: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -531,20 +527,21 @@ msgid "" "\n" msgstr "" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: illegal option -- %c\n" +msgstr "" -#: builtins/history.def:375 +#: builtins/history.def:442 #, fuzzy, c-format msgid "%s: history expansion failed" msgstr "%s: heelgetal-uitdrukking is verwag\n" @@ -552,96 +549,95 @@ msgstr "%s: heelgetal-uitdrukking is verwag\n" #: builtins/inlib.def:71 #, fuzzy, c-format msgid "%s: inlib failed" -msgstr "%s: heelgetal-uitdrukking is verwag\n" +msgstr "Veranderlike boom" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:265 +#: builtins/kill.def:274 #, fuzzy msgid "Unknown error" msgstr "Onbekende fout %d" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 #, fuzzy msgid "expression expected" msgstr "Bools uitdrukking verwag" #: builtins/mapfile.def:178 -#, fuzzy, c-format +#, c-format msgid "%s: not an indexed array" -msgstr "Veranderlike boom" +msgstr "" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 -#, fuzzy, c-format +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format msgid "%s: invalid line count" -msgstr "%s: illegal option -- %c\n" +msgstr "" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, fuzzy, c-format msgid "%s: invalid array origin" -msgstr "%s: illegal option -- %c\n" +msgstr "Os/2 Biskaart Skikking" -#: builtins/mapfile.def:317 -#, fuzzy, c-format +#: builtins/mapfile.def:316 +#, c-format msgid "%s: invalid callback quantum" -msgstr "Die sein nommer wat was gevang het" +msgstr "" -#: builtins/mapfile.def:350 -#, fuzzy +#: builtins/mapfile.def:349 msgid "empty array variable name" -msgstr "Veranderlike boom" +msgstr "" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:467 -#, fuzzy, c-format +#: builtins/printf.def:475 +#, c-format msgid "`%c': invalid time format specification" -msgstr "%s: illegal option -- %c\n" +msgstr "" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -654,23 +650,22 @@ msgstr "boonste l #: builtins/pushd.def:360 #, fuzzy, c-format msgid "%s: invalid argument" -msgstr "%s: illegal option -- %c\n" +msgstr "%s: option `%s' requires an argument\n" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 #, fuzzy msgid "" msgstr "Nuutste gebruik word werksaam gids" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:521 -#, fuzzy +#: builtins/pushd.def:526 msgid "directory stack index" -msgstr "Stapel grootte verhoog" +msgstr "" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -694,7 +689,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -719,7 +714,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -745,40 +740,40 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:696 +#: builtins/read.def:733 #, fuzzy, c-format msgid "read error: %d: %s" msgstr "pypfout: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:888 +#: builtins/set.def:904 #, fuzzy, c-format msgid "%s: cannot unset" msgstr "%s: kan nie %s skep nie" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, fuzzy, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: kan nie %s skep nie" -#: builtins/set.def:922 +#: builtins/set.def:938 #, fuzzy, c-format msgid "%s: not an array variable" msgstr "Veranderlike boom" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, fuzzy, c-format msgid "%s: not a function" msgstr "%s: leesalleen-funksie" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: kan nie %s skep nie" @@ -788,20 +783,20 @@ msgstr "%s: kan nie %s skep nie" msgid "shift count" msgstr "Shift" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "" -#: builtins/source.def:157 +#: builtins/source.def:154 #, fuzzy, c-format msgid "%s: file not found" msgstr "%s: bevel nie gevind nie" @@ -815,62 +810,62 @@ msgstr "" msgid "cannot suspend a login shell" msgstr "Begin aanteken tolk" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "" -#: builtins/type.def:276 +#: builtins/type.def:275 #, fuzzy, c-format msgid "%s is a function\n" msgstr "%s: leesalleen-funksie" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, fuzzy, c-format msgid "`%c': bad command" msgstr "%s: illegal option -- %c\n" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, fuzzy, c-format msgid "%s: cannot get limit: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 #, fuzzy msgid "limit" msgstr "Filter beperk:" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, fuzzy, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: kan nie %s skep nie" @@ -890,415 +885,423 @@ msgstr "" msgid "`%c': invalid symbolic mode character" msgstr "" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr "" -#: error.c:165 +#: error.c:164 #, fuzzy, c-format msgid "last command: %s\n" msgstr "Bevelreël" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 #, fuzzy msgid "unknown command error" msgstr "Onbekende fout %d" -#: error.c:464 +#: error.c:463 #, fuzzy msgid "bad command type" msgstr "bevelnaam" -#: error.c:465 +#: error.c:464 #, fuzzy msgid "bad connector" msgstr "foutiewe verbinder`%d'" -#: error.c:466 +#: error.c:465 #, fuzzy msgid "bad jump" msgstr "Spring na:" -#: error.c:504 +#: error.c:503 #, fuzzy, c-format msgid "%s: unbound variable" msgstr "Veranderlike boom" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 #, fuzzy msgid "pipe error" msgstr "pypfout: %s" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: bevel nie gevind nie" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, fuzzy, c-format msgid "%s: %s: bad interpreter" msgstr "%s: is 'n gids" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kan nie 'n binêre lêer uitvoer nie" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, fuzzy, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "" -#: expr.c:283 +#: expr.c:291 #, fuzzy msgid "recursion stack underflow" msgstr "Stapel grootte verhoog" -#: expr.c:431 +#: expr.c:477 #, fuzzy msgid "syntax error in expression" msgstr "Sintaks fout in patroon" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "Sintaks fout in patroon" + +#: expr.c:544 expr.c:910 #, fuzzy msgid "division by 0" msgstr "devisie by nul." -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "" -#: expr.c:595 +#: expr.c:645 #, fuzzy msgid "`:' expected for conditional expression" msgstr "Soek die lêer vir 'n uitdrukking" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:1002 +#: expr.c:1055 #, fuzzy msgid "missing `)'" msgstr "Ontbrekende '>'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 #, fuzzy msgid "syntax error: operand expected" msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1419 +#: expr.c:1510 #, fuzzy, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" "Hierdie is die fout boodskap van %1:\n" "%2" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "waarde te groot vir basis" -#: expr.c:1546 +#: expr.c:1637 #, fuzzy, c-format msgid "%s: expression error\n" -msgstr "%s: heelgetal-uitdrukking is verwag\n" +msgstr "Pypfout.\n" -#: general.c:68 +#: general.c:69 #, fuzzy msgid "getcwd: cannot access parent directories" msgstr "Kan nie die program uitvoer nie:" -#: input.c:102 subst.c:5858 -#, fuzzy, c-format +#: input.c:99 subst.c:5930 +#, c-format msgid "cannot reset nodelay mode for fd %d" -msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" +msgstr "" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1590 +#: jobs.c:1639 #, fuzzy, c-format msgid "describe_pid: %ld: no such pid" msgstr "E108: Geen veranderlike: \"%s\"" -#: jobs.c:1605 +#: jobs.c:1654 #, fuzzy, c-format msgid "Signal %d" msgstr "Sein kwaliteit:" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Klaar" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 #, fuzzy msgid "Stopped" msgstr "Op gehou" -#: jobs.c:1628 +#: jobs.c:1677 #, fuzzy, c-format msgid "Stopped(%s)" msgstr "Op gehou" -#: jobs.c:1632 +#: jobs.c:1681 #, fuzzy msgid "Running" msgstr "aktief" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Klaar(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Verlaat %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Onbekende status" -#: jobs.c:1741 +#: jobs.c:1790 #, fuzzy, c-format msgid "(core dumped) " msgstr "Kern Ontwikkelaar" -#: jobs.c:1760 +#: jobs.c:1809 #, fuzzy, c-format msgid " (wd: %s)" msgstr "Aktiveer nou dadelik" -#: jobs.c:1985 +#: jobs.c:2037 #, fuzzy, c-format msgid "child setpgid (%ld to %ld)" msgstr "Fout in die skryf van %s" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:3221 +#: jobs.c:3362 #, fuzzy, c-format msgid "%s: job has terminated" msgstr "Die bediener beëindig Die verbinding." -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3970 -#, fuzzy, c-format +#: jobs.c:4120 +#, c-format msgid "%s: line %d: " -msgstr "3d modus" +msgstr "" -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, fuzzy, c-format msgid " (core dumped)" msgstr "Kern Ontwikkelaar" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, fuzzy, c-format msgid "(wd now: %s)\n" msgstr "Aktiveer nou dadelik" -#: jobs.c:4041 +#: jobs.c:4191 #, fuzzy msgid "initialize_job_control: getpgrp failed" msgstr "Inisialisering van OpenGL het misluk." -#: jobs.c:4104 +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:4114 +#: jobs.c:4273 #, fuzzy msgid "initialize_job_control: setpgid" msgstr "Inisialisering van OpenGL het misluk." -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "geen taakbeheer in hierdie dop nie" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:313 -#, fuzzy +#: lib/malloc/malloc.c:348 msgid "unknown" -msgstr "(onbekend)" +msgstr "onbekend" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "" @@ -1340,22 +1343,22 @@ msgstr "" msgid "network operations not supported" msgstr "" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "" @@ -1375,153 +1378,153 @@ msgstr "Wanneer nuwe pos arriveer in" msgid "The mail in %s has been read\n" msgstr "" -#: make_cmd.c:329 +#: make_cmd.c:317 #, fuzzy msgid "syntax error: arithmetic expression required" msgstr "Sintaks fout in patroon" -#: make_cmd.c:331 +#: make_cmd.c:319 #, fuzzy msgid "syntax error: `;' unexpected" msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." -#: make_cmd.c:332 +#: make_cmd.c:320 #, fuzzy, c-format msgid "syntax error: `((%s))'" msgstr "sintaksfout" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4419 +#: parse.y:4615 #, fuzzy msgid "syntax error in conditional expression" msgstr "Sintaks fout in patroon" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4501 +#: parse.y:4697 #, fuzzy msgid "expected `)'" msgstr "')' is verwag\n" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4579 +#: parse.y:4775 #, fuzzy, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "%s: binêre operator is verwag\n" -#: parse.y:4583 +#: parse.y:4779 #, fuzzy msgid "conditional binary operator expected" msgstr "%s: binêre operator is verwag\n" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4620 +#: parse.y:4816 #, fuzzy, c-format msgid "unexpected token `%c' in conditional command" msgstr "Soek die lêer vir 'n uitdrukking" -#: parse.y:4623 +#: parse.y:4819 #, fuzzy, c-format msgid "unexpected token `%s' in conditional command" msgstr "Soek die lêer vir 'n uitdrukking" -#: parse.y:4627 +#: parse.y:4823 #, fuzzy, c-format msgid "unexpected token %d in conditional command" msgstr "Soek die lêer vir 'n uitdrukking" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:6014 +#: parse.y:6263 #, fuzzy, c-format msgid "syntax error near `%s'" msgstr "Sintaks fout in patroon" -#: parse.y:6024 +#: parse.y:6273 #, fuzzy msgid "syntax error: unexpected end of file" msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "sintaksfout" -#: parse.y:6086 +#: parse.y:6335 #, fuzzy, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Gebruik Kaart na Los Tronk" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1550,144 +1553,148 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "" -#: redir.c:178 +#: redir.c:174 #, fuzzy, c-format msgid "%s: ambiguous redirect" msgstr "%s: dubbelsinnige herroetering" -#: redir.c:182 +#: redir.c:178 #, fuzzy, c-format msgid "%s: cannot overwrite existing file" msgstr "Jy het gespesifiseer 'n bestaande lêer" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:196 +#: redir.c:192 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 #, fuzzy msgid "redirection error: cannot duplicate fd" msgstr "Pypfout.\n" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, fuzzy, c-format msgid "%c%c: invalid option" msgstr "%s: illegal option -- %c\n" -#: shell.c:1282 -#, fuzzy, c-format +#: shell.c:1299 +#, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" +msgstr "" -#: shell.c:1289 -#, fuzzy, c-format +#: shell.c:1306 +#, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" +msgstr "" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: is 'n gids" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Ek het nie 'n naam nie!" -#: shell.c:1930 +#: shell.c:1980 #, fuzzy, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "bedryfstelselkernweergawe" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -#: shell.c:1933 +#: shell.c:1983 #, fuzzy msgid "GNU long options:\n" msgstr "Gnu C Saamsteller Opsies" -#: shell.c:1937 +#: shell.c:1987 #, fuzzy msgid "Shell options:\n" msgstr "opneem opsies" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" -#: shell.c:1953 +#: shell.c:2007 #, fuzzy, c-format msgid "\t-%s or -o option\n" msgstr "" "Gebruik so: %s LÊER \n" " of: %s OPSIE\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1768,7 +1775,9 @@ msgstr "w #: siglist.c:111 #, fuzzy msgid "Terminated" -msgstr "Gedruk: %s" +msgstr "" +"\n" +"Bevel beëindig\n" #: siglist.c:115 #, fuzzy @@ -1893,107 +1902,112 @@ msgstr "Sein kwaliteit:" msgid "Unknown Signal #%d" msgstr "Sein kwaliteit:" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, fuzzy, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "--Geen reëls in buffer--" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 #, fuzzy msgid "cannot make pipe for process substitution" msgstr "Woord Substitusie" -#: subst.c:5798 +#: subst.c:5851 #, fuzzy msgid "cannot make child for process substitution" msgstr "Woord Substitusie" -#: subst.c:5848 +#: subst.c:5920 #, fuzzy, c-format msgid "cannot open named pipe %s for reading" msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" -#: subst.c:5850 +#: subst.c:5922 #, fuzzy, c-format msgid "cannot open named pipe %s for writing" msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" -#: subst.c:5873 +#: subst.c:5945 #, fuzzy, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" -#: subst.c:5959 +#: subst.c:6062 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "--Geen reëls in buffer--" -#: subst.c:6083 +#: subst.c:6190 #, fuzzy msgid "cannot make pipe for command substitution" msgstr "Woord Substitusie" -#: subst.c:6127 +#: subst.c:6233 #, fuzzy msgid "cannot make child for command substitution" msgstr "Woord Substitusie" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, fuzzy, c-format -msgid "%s: bad substitution" -msgstr "Woord Substitusie" - -#: subst.c:6800 -#, fuzzy, c-format +#: subst.c:6806 subst.c:6824 subst.c:6979 +#, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: illegal option -- %c\n" +msgstr "" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, fuzzy, c-format msgid "%s: invalid variable name" -msgstr "%s: illegal option -- %c\n" +msgstr "Veranderlike boom" + +#: subst.c:7056 +#, c-format +msgid "%s: parameter not set" +msgstr "" -#: subst.c:6854 +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, fuzzy, c-format msgid "%s: substring expression < 0" msgstr "ongeldige uitdrukking" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, fuzzy, c-format +msgid "%s: bad substitution" +msgstr "Woord Substitusie" + +#: subst.c:9082 #, fuzzy, c-format msgid "$%s: cannot assign in this way" msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:9349 +#: subst.c:10043 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "--Geen reëls in buffer--" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "" @@ -2018,114 +2032,119 @@ msgstr "')' is verwag\n" msgid "`)' expected, found %s" msgstr "')' is verwag, maar %s gevind\n" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, fuzzy, c-format msgid "%s: unary operator expected" msgstr "%s: unitêre operator is verwag\n" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, fuzzy, c-format msgid "%s: binary operator expected" msgstr "%s: binêre operator is verwag\n" -#: test.c:869 +#: test.c:875 #, fuzzy msgid "missing `]'" msgstr "Ontbrekende '>'" -#: trap.c:224 +#: trap.c:216 #, fuzzy msgid "invalid signal number" msgstr "Die sein nommer wat was gevang het" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2432 -#, fuzzy, c-format +#: variables.c:2674 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" +msgstr "" -#: variables.c:3043 +#: variables.c:3453 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5619 -#, fuzzy, c-format +#: variables.c:6272 +#, c-format msgid "%s: %s: cannot open as FILE" -msgstr "%s: kan nie %s skep nie" +msgstr "" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." msgstr "" #: version.c:47 version2.c:47 @@ -2147,22 +2166,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "" -#: xmalloc.c:93 +#: xmalloc.c:95 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: kan nie %s skep nie" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "" -#: xmalloc.c:165 +#: xmalloc.c:167 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: kan nie %s skep nie" @@ -2354,7 +2373,7 @@ msgstr "Bediener of domein naam:" #: builtins.c:150 #, fuzzy msgid "shift [n]" -msgstr "Verlaat" +msgstr "Shift" #: builtins.c:152 #, fuzzy @@ -2402,8 +2421,8 @@ msgstr "Belmetode" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" -msgstr "Wag:" +msgid "wait [-fn] [id ...]" +msgstr "Konfigureer Eggo" #: builtins.c:181 #, fuzzy @@ -2441,9 +2460,8 @@ msgid "while COMMANDS; do COMMANDS; done" msgstr "" #: builtins.c:198 -#, fuzzy msgid "until COMMANDS; do COMMANDS; done" -msgstr "Bediener of domein naam:" +msgstr "" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -2502,7 +2520,7 @@ msgstr "" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2515,8 +2533,8 @@ msgstr "" #: builtins.c:239 #, fuzzy -msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "Tipe die naam van die %1 speler." +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "Volle Naam:" #: builtins.c:242 msgid "" @@ -2526,8 +2544,8 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" #: builtins.c:256 @@ -2635,7 +2653,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" #: builtins.c:369 @@ -2779,11 +2797,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2851,12 +2869,18 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2869,7 +2893,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2896,7 +2920,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2908,7 +2932,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -2949,7 +2973,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2972,7 +2996,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -2980,7 +3004,7 @@ msgid "" " is that of the last command executed." msgstr "" -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -2989,7 +3013,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3019,7 +3043,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3031,7 +3055,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3045,7 +3069,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3069,7 +3093,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3084,14 +3108,14 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " "given." msgstr "" -#: builtins.c:836 +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3100,7 +3124,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3125,7 +3150,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3149,7 +3174,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3166,7 +3191,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:918 +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3189,7 +3214,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3234,7 +3259,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3255,7 +3280,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3286,7 +3311,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3298,7 +3323,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3384,7 +3409,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3406,7 +3431,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3425,7 +3450,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3446,7 +3471,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -3457,7 +3482,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3471,7 +3496,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -3485,7 +3510,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3568,7 +3593,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3576,7 +3601,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -3588,7 +3613,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -3632,7 +3657,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -3662,7 +3687,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -3711,7 +3736,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -3729,7 +3754,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3737,19 +3762,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3764,7 +3791,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3777,7 +3804,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -3794,7 +3821,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3814,7 +3841,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3830,7 +3857,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3841,7 +3868,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3862,7 +3889,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3873,7 +3900,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3884,7 +3911,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1653 +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3897,7 +3924,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -3911,7 +3938,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -3922,7 +3949,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -3936,7 +3963,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3947,7 +3974,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -3975,7 +4002,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4029,7 +4056,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -4060,7 +4087,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -4087,7 +4114,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -4116,14 +4143,13 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4137,7 +4163,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4176,7 +4202,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1953 +#: builtins.c:1961 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4194,16 +4220,20 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4216,7 +4246,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -4231,6 +4261,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -4247,7 +4278,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4289,36 +4320,13 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" -#~ msgid ":" -#~ msgstr ":" - -#, fuzzy -#~ msgid "times" -#~ msgstr "Herhaal %1 times " - -#, fuzzy -#~ msgid "wait [pid]" -#~ msgstr "Wag:" - -#, fuzzy -#~ msgid " new current working directory." -#~ msgstr "Nuutste gebruik word werksaam gids" - -#, fuzzy -#~ msgid "Obsolete. See `declare'." -#~ msgstr "Verkeerde verklaring tipe" - -#, fuzzy -#~ msgid "Logout of a login shell." -#~ msgstr "Begin aanteken tolk" - #~ msgid "Missing `}'" #~ msgstr "Ontbrekende `}'" @@ -4378,6 +4386,14 @@ msgstr "" #~ msgid "You have entered %d (%d) items. The distribution is:\n" #~ msgstr "Die wagwoord frase jy ingevoerde is ongeldige." +#, fuzzy +#~ msgid "slot %3d: " +#~ msgstr "3d modus" + +#, fuzzy +#~ msgid "" +#~ msgstr "(onbekend)" + #, fuzzy #~ msgid "%s: bg background job?" #~ msgstr "Druktaak gestuur." @@ -4398,14 +4414,14 @@ msgstr "" #~ msgid "`-c' requires an argument" #~ msgstr "%s: option `%s' requires an argument\n" -#, fuzzy -#~ msgid "%s: bad array subscript" -#~ msgstr "Os/2 Biskaart Skikking" - #, fuzzy #~ msgid "reading" #~ msgstr "besig om te lees" +#, fuzzy +#~ msgid "writing" +#~ msgstr "besig om te skryf" + #, fuzzy #~ msgid "$%c: unbound variable" #~ msgstr "Veranderlike boom" @@ -4454,10 +4470,6 @@ msgstr "" #~ msgid "Unknown directive `%s'" #~ msgstr "Onbekende direktief" -#, fuzzy -#~ msgid "%s requires an argument" -#~ msgstr "%s: option `%s' requires an argument\n" - #, fuzzy #~ msgid "%s found before $END" #~ msgstr "Nee einde was gevind." @@ -4482,6 +4494,13 @@ msgstr "" #~ msgid "mkbuiltins: Out of virtual memory!\n" #~ msgstr "GenericName=Virtuele Geheue Statistieke" +#~ msgid ":" +#~ msgstr ":" + +#, fuzzy +#~ msgid "times" +#~ msgstr "Herhaal %1 times " + #, fuzzy #~ msgid "%[DIGITS | WORD] [&]" #~ msgstr "Woord oorvloei" @@ -4522,6 +4541,10 @@ msgstr "" #~ msgid "name only." #~ msgstr "Naam slegs" +#, fuzzy +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Verkeerde verklaring tipe" + #, fuzzy #~ msgid "\t\\a\talert (bell)" #~ msgstr "stelsel klok" @@ -4558,6 +4581,10 @@ msgstr "" #~ msgid "with the -E option." #~ msgstr "%s: illegal option -- %c\n" +#, fuzzy +#~ msgid "printed." +#~ msgstr "Gedruk: %s" + #, fuzzy #~ msgid "is set." #~ msgstr "Nie stel" diff --git a/po/bash.pot b/po/bash.pot index e2d353f5e..2c9c7780f 100644 --- a/po/bash.pot +++ b/po/bash.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,119 +17,119 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "" -#: builtins/bind.def:270 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format -msgid "`%s': cannot unbind" +msgid "`%s': unknown function name" msgstr "" -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:312 #, c-format -msgid "`%s': unknown function name" +msgid "%s is not bound to any keys.\n" msgstr "" #: builtins/bind.def:316 #, c-format -msgid "%s is not bound to any keys.\n" +msgid "%s can be invoked via " msgstr "" -#: builtins/bind.def:320 +#: builtins/bind.def:353 builtins/bind.def:368 #, c-format -msgid "%s can be invoked via " +msgid "`%s': cannot unbind" msgstr "" -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "" @@ -140,233 +140,233 @@ msgid "" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "" -#: builtins/cd.def:336 +#: builtins/cd.def:341 msgid "null directory" msgstr "" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "" -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "" -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "" -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -400,68 +400,68 @@ msgstr "" msgid "%s: cannot delete: %s" msgstr "" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "" @@ -476,39 +476,38 @@ msgstr "" msgid "%s: option requires an argument -- %c\n" msgstr "" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "" msgstr[1] "" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -520,20 +519,21 @@ msgid "" "\n" msgstr "" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "" -#: builtins/history.def:264 +#: builtins/history.def:331 #, c-format msgid "%s: invalid timestamp" msgstr "" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "" @@ -547,16 +547,16 @@ msgstr "" msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "" @@ -565,69 +565,69 @@ msgstr "" msgid "%s: not an indexed array" msgstr "" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -641,19 +641,19 @@ msgstr "" msgid "%s: invalid argument" msgstr "" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -677,7 +677,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -702,7 +702,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -728,40 +728,40 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "" @@ -770,20 +770,20 @@ msgstr "" msgid "shift count" msgstr "" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "" @@ -796,61 +796,61 @@ msgstr "" msgid "cannot suspend a login shell" msgstr "" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "" @@ -869,396 +869,404 @@ msgstr "" msgid "`%c': invalid symbolic mode character" msgstr "" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr "" -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "" -#: expr.c:495 expr.c:858 +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "" -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:4104 +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "" @@ -1300,22 +1308,22 @@ msgstr "" msgid "network operations not supported" msgstr "" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "" @@ -1333,147 +1341,147 @@ msgstr "" msgid "The mail in %s has been read\n" msgstr "" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1502,139 +1510,143 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1808,102 +1820,107 @@ msgstr "" msgid "Unknown Signal #%d" msgstr "" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5959 +#: subst.c:6062 msgid "command substitution: ignored null byte in input" msgstr "" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format -msgid "%s: bad substitution" +msgid "%s: invalid indirect expansion" msgstr "" -#: subst.c:6800 +#: subst.c:6840 subst.c:6987 #, c-format -msgid "%s: invalid indirect expansion" +msgid "%s: invalid variable name" msgstr "" -#: subst.c:6807 +#: subst.c:7056 #, c-format -msgid "%s: invalid variable name" +msgid "%s: parameter not set" msgstr "" -#: subst.c:6854 +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "" @@ -1926,112 +1943,117 @@ msgstr "" msgid "`)' expected, found %s" msgstr "" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "" -#: variables.c:3043 +#: variables.c:3453 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." msgstr "" #: version.c:47 version2.c:47 @@ -2053,22 +2075,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "" @@ -2270,7 +2292,7 @@ msgid "umask [-p] [-S] [mode]" msgstr "" #: builtins.c:177 -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "" #: builtins.c:181 @@ -2361,7 +2383,7 @@ msgstr "" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2373,7 +2395,7 @@ msgid "" msgstr "" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "" #: builtins.c:242 @@ -2384,8 +2406,8 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" #: builtins.c:256 @@ -2493,7 +2515,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" #: builtins.c:369 @@ -2637,11 +2659,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2709,12 +2731,18 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2727,7 +2755,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2754,7 +2782,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2766,7 +2794,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -2807,7 +2835,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2830,7 +2858,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -2838,7 +2866,7 @@ msgid "" " is that of the last command executed." msgstr "" -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -2847,7 +2875,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2877,7 +2905,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -2889,7 +2917,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -2903,7 +2931,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -2927,7 +2955,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -2942,14 +2970,14 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " "given." msgstr "" -#: builtins.c:836 +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2958,7 +2986,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -2983,7 +3012,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3007,7 +3036,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3024,7 +3053,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:918 +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3047,7 +3076,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3092,7 +3121,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3113,7 +3142,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3144,7 +3173,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3156,7 +3185,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3242,7 +3271,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3264,7 +3293,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3283,7 +3312,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3304,7 +3333,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -3315,7 +3344,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3329,7 +3358,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -3343,7 +3372,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3426,7 +3455,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3434,7 +3463,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -3446,7 +3475,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -3490,7 +3519,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -3520,7 +3549,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -3569,7 +3598,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -3587,7 +3616,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3595,19 +3624,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3622,7 +3653,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3635,7 +3666,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -3652,7 +3683,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3672,7 +3703,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3688,7 +3719,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3699,7 +3730,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3720,7 +3751,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3731,7 +3762,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3742,7 +3773,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1653 +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3755,7 +3786,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -3769,7 +3800,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -3780,7 +3811,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -3794,7 +3825,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3805,7 +3836,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -3833,7 +3864,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3887,7 +3918,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -3918,7 +3949,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -3945,7 +3976,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -3974,14 +4005,13 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -3995,7 +4025,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4034,7 +4064,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1953 +#: builtins.c:1961 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4052,16 +4082,20 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4074,7 +4108,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -4089,6 +4123,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -4105,7 +4140,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4147,7 +4182,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/bg.gmo b/po/bg.gmo index d30439946..43887faf5 100644 Binary files a/po/bg.gmo and b/po/bg.gmo differ diff --git a/po/bg.po b/po/bg.po index eb9236cd9..f531870ee 100644 --- a/po/bg.po +++ b/po/bg.po @@ -1,141 +1,142 @@ # Bulgarian translation of bash po-file. -# Copyright (C) 2007, 2010, 2012, 2013, 2014, 2015 Free Software Foundation, Inc. +# Copyright (C) 2007, 2010, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Alexander Shopov , 2007, 2010, 2012, 2013, 2014, 2015. +# Alexander Shopov , 2007, 2010, 2012, 2013, 2014, 2015, 2016. # msgid "" msgstr "" -"Project-Id-Version: bash-4.4-beta1\n" +"Project-Id-Version: bash-4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-29 08:17+0200\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2018-09-28 08:49+0200\n" "Last-Translator: Alexander Shopov \n" "Language-Team: Bulgarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: bg\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "грешен индекс на масив" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: изтриване на атрибута за указател от променливата" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: масивът не може да бъде преобразуван към речник" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: грешно име на ключ в речник" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: не може да се присвоява на нецифров индекс" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: при присвояване към речник трябва да се използва индекс" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: не може да се създаде: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "изпълнение на команда на Юникс от bash: не може да се открие подредбата на\n" "функциите на клавишите за командата" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: първият непразен знак не е „\"“" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "в %2$s липсва затварящ знак „%1$c“" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: разделителят „:“ липсва" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" "заместване на изразите с фигурни скоби: не може да се задели памет за „%s“" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" "заместване на изразите с фигурни скоби: не може да се задели памет за %d " "елемента" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" "заместване на изразите с фигурни скоби: не може да се задели памет за „%s“" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: грешно име на синоним" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "редактирането на командния ред не е включено" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s“: грешно име на подредбата на функциите на клавишите" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: не може да се прочете: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "„%s“: не може да се премахне присвояване" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "„%s“: име на непозната функция" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s не е зададена на никой клавиш.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s може да се извика чрез " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: не може да се премахне присвояване" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "брой цикли" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "валидно само за циклите с „for“, „while“ и „until“" @@ -149,234 +150,233 @@ msgstr "" " \n" " Без ИЗРАЗ връща " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "Променливата „HOME“ не е зададена" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "прекалено много аргументи" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "няма друга директория" +msgstr "нулева директория" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "Променливата „OLDPWD“ не е зададена" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "ред %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "предупреждение: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: употреба: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: опцията изисква аргумент" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: изисква се числов аргумент" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: не е открит" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: грешна опция" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: грешно име на опция" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: грешен идентификатор" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "грешно осмично число" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "грешно шестнайсетично число" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "грешно число" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: грешно указване на сигнал" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s“: грешен идентификатор на процес или задача" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: променлива с права само за четене" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s е извън допустимия диапазон" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "аргументът" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s е извън допустимия диапазон" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: няма такава задача" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: няма управление на задачите" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "няма управление на задачите" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: ограничена обвивка" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "ограничена обвивка" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: не е команда вградена в обвивката" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "грешка при запис: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "грешка при задаване на атрибутите на терминала: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "грешка при получаване на атрибутите на терминала: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: грешка при получаване на текущата директория: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: нееднозначно указана задача" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "помощта не е включена в тази версия" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: грешно име на действие" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: не е указано дописване" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "предупреждение: опцията „-F“ може да не работи според очакванията ви" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "предупреждение: опцията „-C“ може да не работи според очакванията ви" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "в момента не се изпълнява функция за дописване" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "може да се използва само във функция" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: променливата-указател не може да е масив" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: променливата-указател не може да сочи към себе си" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: цикъл в променливите-указатели" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: неправилно име за променлива-указател" +msgstr "„%s“: неправилно име за променлива-указател" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "„-f“ не може да се използва за създаването на функции" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: функция с права само за четене" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: съставното присвояване на масив чрез цитат е остаряло" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: променливите за масиви не могат да се унищожават така" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: речник не може да се преобразува в масив" @@ -410,68 +410,68 @@ msgstr "%s: не е зареден динамично" msgid "%s: cannot delete: %s" msgstr "%s: не може да се изтрие: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: е директория" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: не е обикновен файл" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: файлът е прекалено голям" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: двоичният файл не може да бъде изпълнен" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: не може да се изпълни: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "изход\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "това не е входна обвивка: използвайте „exit“" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Има спрени задачи.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Има изпълнявани задачи.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "не е открита команда" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "указване на историята" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: не може да се отвори временен файл: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "текуща" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "задача %d е стартирана без управление на задачите" @@ -486,28 +486,27 @@ msgstr "%s: непозволена опция — %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: опцията изисква аргумент — %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "хеширането е изключено" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: таблицата с хешове е празна\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "съвпад.\tкоманда\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Команди на обвивката, които напасват на ключовата дума „" msgstr[1] "Команди на обвивката, които напасват на ключовите думи „" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -515,12 +514,12 @@ msgstr "" "няма теми в помощта, които да отговарят на „%s“. Опитайте с\n" "„help help“, „man -k %s“ или „info %s“." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: не може да се отвори: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -541,20 +540,21 @@ msgstr "" "Знакът звездичка „*“ до името на команда означава, че тя е изключена.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "не може да се ползва едновременно повече от една от опциите „-anrw“" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "позиция в историята" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: грешен аргумент" +msgstr "%s: грешна дата с време" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: неуспешно заместване чрез историята" @@ -568,16 +568,16 @@ msgstr "%s: неуспешно извикване на inlib" msgid "no other options allowed with `-x'" msgstr "не е позволена друга опция с „-x“" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: аргументите трябва да са идентификатори на процеси или задачи" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Неизвестна грешка" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "очаква се израз" @@ -586,69 +586,69 @@ msgstr "очаква се израз" msgid "%s: not an indexed array" msgstr "%s: не е масив" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: грешно указване на файловия дескриптор" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: грешен файлов дескриптор: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: грешен номер на ред" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: грешен начален индекс за масив" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: грешно количество редове за обработка" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "празно име на променлива за масив" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "изисква се поддръжка на променливи за масиви" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "„%s“: липсва форматиращ знак" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: грешен формат на времето" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: грешен форматиращ знак" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "предупреждение: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "неуспешен анализ на форма̀та: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "липсва шестнадесетична цифра за \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "липсва цифра за Уникод за \\%c" @@ -662,19 +662,19 @@ msgstr "няма друга директория" msgid "%s: invalid argument" msgstr "%s: грешен аргумент" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "«няма текуща директория»" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "стекът с директории е празен" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "индекс за стека с директории" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -718,7 +718,7 @@ msgstr "" "„dirs“,\n" " когато е стартирана без опции. Брои се от 0." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -770,7 +770,7 @@ msgstr "" " \n" " Можете да изведете стека на директорията с командата „dirs“." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -816,42 +816,42 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: грешно указване на изтичането на времето" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "грешка при четене: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "„return“ е възможен само от функция или изпълнен в текущата обвивка скрипт" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "" "не може едновременно да се премахват задаванията на функция и променлива" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: не може да се премахне" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не може да се премахне: %s е само за четене" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: не е променлива за масив" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: не е функция" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: не може да се изнесе" @@ -860,21 +860,21 @@ msgstr "%s: не може да се изнесе" msgid "shift count" msgstr "брой на преместванията" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "" "не може едновременно да се задават и да се премахват опции на обвивката" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: грешно име на опция на обвивката" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "изисква се аргумент име на файл" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: файлът не е открит" @@ -887,61 +887,61 @@ msgstr "не може да бъде временно спряна" msgid "cannot suspend a login shell" msgstr "входната обвивка не може да бъде временно спряна" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s е синоним на „%s“\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s е ключова дума на обвивката\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s е функция\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s е специална, вградена команда в обвивката\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s е вградена команда в обвивката\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s е %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s е хеширан (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: грешен аргумент за ограничение" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "„%c“: грешна команда" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ограничението не може да бъде получено: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "ограничение" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ограничението не може да бъде променено: %s" @@ -960,370 +960,380 @@ msgstr "„%c“: неправилен оператор за описателе msgid "`%c': invalid symbolic mode character" msgstr "„%c“: неправилен знак за описателен режим" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " ред " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "последна команда: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Преустановяване…" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "ИНФОРМАЦИЯ: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "неизвестна грешка в команда" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "грешен вид команда" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "грешна връзка" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "грешен преход" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: променлива без стойност" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" "\aвремето за изчакване на вход изтече: следва автоматично излизане от " "системата\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "стандартният вход не може да бъде пренасочен от „/dev/null“: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "в променливата $TIMEFORMAT: „%c“: грешен форматиращ знак" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: копроцесът [%d:%s] все още съществува" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "грешка в програмен канал" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: превишено е максималното ниво на влагане на „eval“ (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: превишено е максималното ниво на влагане на код (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: превишено е максималното ниво на влагане на функции (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" "%s: ограничение: в имената на командите не може да присъства знакът „/“" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: командата не е открита" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: лош интерпретатор" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: двоичният файл не може да бъде изпълнен: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "„%s“ е вградена команда в обвивката" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "файловият дескриптор %d не може да се дублира като дескриптор %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "максималният брой нива за рекурсия в израз бяха преминати" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "отрицателно препълване на стека за рекурсии" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "синтактична грешка в израз" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "опит за присвояване на стойност на нещо, което не е променлива" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "синтактична грешка в израз" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "деление на 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "програмна грешка: неправилна лексема за присвояване на израз" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "за условен израз се изисква „:“" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "степента е по-малка от 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "очаква се идентификатор след предварително увеличаване или намаляване" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "липсва „)“" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "синтактична грешка: очаква се оператор" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "синтактична грешка: грешен аритметичен оператор" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (грешната лексема е „%s“)" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "грешна аритметична основа на бройна система" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "стойността е прекалено голяма за основата" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: грешка в израза\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: няма достъп до родителските директории" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не може да се изчисти режимът без забавяне на файловия дескриптор %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "не може да се задели нов файлов дескриптор за вход на bash от дескриптор %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" "запазване на входа на bash: вече съществува буфер за новия файлов дескриптор " "%d" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "" "стартиране на програмен канал: не може да се комуникира с водача на канала\n" "(pgrp pipe)" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "стартираният процес %d е в изпълняваната задача %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "изтриване на спряната задача %d в групата процеси %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "добавяне на процес: процесът %5ld (%s) е в програмния канал" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "добавяне на процес: процесът %5ld (%s) е отбелязан като още жив" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "" "описателен идентификатор на процес: %ld: няма такъв идентификатор на процес" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Завършен" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Спрян" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Спрян (%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Изпълняван" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Завършен (%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Изход %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Непознато състояние" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(паметта е разтоварена)" -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "дъщерният процес смени групата при изпълнение (от %ld на %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "изчакване: процесът с идентификатор %ld не е дъщерен на тази обвивка" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "изчакване: липсват данни за процес с идентификатор %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "изчакване на задача: задачата %d е спряна" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: задачата е приключила" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: задача %d вече е във фонов режим" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" "изчакване на дъщерен процес: включване на незабавното излизане от функцията\n" "чрез WNOHANG, за да се избегне недефиниран блок" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: ред %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (паметта е разтоварена)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(работната директория е: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "инициализация на контрола на задачите: неуспешно изпълнение на getpgrp" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "инициализация на контрола на задачите: дисциплина на линията" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "инициализация на контрола на задачите: дисциплина на линията" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "" "инициализация на контрола на задачите: задаване на група при изпълнение " "(setpgid)" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "групата на процесите на терминала не може да бъде зададена (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "в тази обвивка няма управление на задачите" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "заделяне на памет: грешно предположение: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1332,46 +1342,46 @@ msgstr "" "\r\n" "заделяне на памет: %s:%d: предположението е отпечатано\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "непознат" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "" "заделяне на памет: блок в списъка със свободни блокове е зает или неподходящ" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "" "изчистване на памет: извикано е с блоков аргумент, който вече е изчистен" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "изчистване на памет: извикано е с незаделен блоков аргумент" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" "изчистване на памет: открито е отрицателно препълване с mh_nbytes извън\n" "допустимия диапазон" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "" "изчистване на памет: късовете на началната и крайната области се различават" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "презаделяне: извикано е с аргумент с незаделен блок" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "презаделяне: открито е отрицателно препълване с mh_nbytes извън допустимия\n" "диапазон" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "презаделяне: късовете на началната и крайната области се различават" @@ -1414,22 +1424,22 @@ msgstr "%s: неправилно указан мрежов път" msgid "network operations not supported" msgstr "не се поддържат мрежови операции" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: локалът не може да бъде сменен (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: локалът не може да бъде сменен (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: локалът не може да бъде сменен (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: локалът не може да бъде сменен (%s): %s" @@ -1447,154 +1457,156 @@ msgstr "Имате нова поща в $_" msgid "The mail in %s has been read\n" msgstr "Пощата в %s вече е прочетена\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "синтактична грешка: изисква се аритметичен израз" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "синтактична грешка: неочакван знак „;“" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "синтактична грешка: „((%s))“" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "вътрешен документ с „<<“: неправилен вид инструкция %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "вътрешният документ на ред %d е отделен със знак за нов ред (а трябва да е „%" "s“)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "пренасочване: инструкцията за пренасочване „%d“ е извън допустимия диапазон" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) надвишава SIZE_MAX (%lu): редът е " +"отрязан" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" -msgstr "превишен е маскималният брой възможни вътрешни документи" +msgstr "превишен е максималният брой възможни вътрешни документи" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" "неочакван знак за край на файл „EOF“, а се очакваше съответстващ знак „%c“" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "неочакван знак за край на файл „EOF“, а се очакваше „]]“" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "синтактична грешка в условен израз: неочаквана лексема „%s“" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "синтактична грешка в условен израз" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неочаквана лексема „%s“, а се очакваше знакът „)“" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "очакваше се „)“" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неочакван аргумент „%s“ за унарен условен оператор" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "неочакван аргумент за унарен условен оператор" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неочаквана лексема „%s“, очакваше се бинарен условен оператор" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "очакваше се бинарен условен оператор" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неочакван аргумент „%s“ за бинарен условен оператор" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "неочакван аргумент за бинарен условен оператор" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неочаквана лексема „%c“ в условна команда" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неочаквана лексема „%s“ в условна команда" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "неочаквана лексема %d в условна команда" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "синтактична грешка в близост до неочакваната лексема „%s“" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "синтактична грешка в близост до „%s“" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "синтактична грешка: неочакван край на файл" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "синтактична грешка" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Използвайте „%s“, за да излезете от обвивката.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "неочакван знак за край на файл „EOF“, очакваше се знакът „)“" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "дописване: функцията „%s“ не е открита" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: възможно зацикляне на повторните опити" #: pcomplib.c:182 #, c-format @@ -1621,95 +1633,99 @@ msgstr "xtrace_set: указател към файл – NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "отпечатване: „%c“: неправилен форматиращ знак" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "файловият дескриптор е извън допустимия диапазон" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: двусмислено пренасочване" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: не може да се презапише съществуващ файл" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: поради ограничение изходът не може да се пренасочи" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не може да се създаде временен файл за вътрешен документ: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: на променлива не може да се присвои файлов дескриптор" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" "„/dev/(tcp|udp)/host/port“ не се поддържат, ако няма поддръжка на мрежа" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "грешка при пренасочване: файловият дескриптор не може да бъде дублиран" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "не е открита директорията „/tmp“. Създайте я!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "„/tmp“ трябва да е директория" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: неправилна опция" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "" "идентификаторът на потребител на процеса не може да се зададе да е %d,\n" "ефективният идентификатор на потребител на процеса е %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "" "идентификаторът на група на процеса не може да се зададе да е %d,\n" "ефективният идентификатор на група на процеса е %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "режимът на изчистване на грешки е недостъпен, защото е изключен" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: е директория" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Не може да се получи името на текущия потребител!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, версия %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1718,53 +1734,53 @@ msgstr "" "Употреба: %s [дълга опция на GNU] [опция]…\n" " %s [дълга опция на GNU] [опция] файл-скрипт…\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Дълги опции на GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Опции на обвивката:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" " -ilrsD или -c команда, или -O къса_опция (само при стартиране)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr " -%s или -o опция\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "За повече информация за опциите на обвивката въведете „%s -c \"help set\"“.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "За повече информация за вградените в обвивката команди въведете „%s -c " "help“.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "За да докладвате грешки, използвайте командата „bashbug“.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "Интернет страница на bash: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" -msgstr "Помощ за софтуера GNU: \n" +msgstr "Обща помощ за програмите на GNU: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "маска за обработката на сигнали: %d: грешна операция" @@ -1938,94 +1954,98 @@ msgstr "Непознат сигнал #" msgid "Unknown Signal #%d" msgstr "Непознат сигнал #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "лошо заместване: липсва затварящ знак „%s“ в %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: на член от масив не може да се присвои списък" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "не може да се създаде програмен канал за заместване на процеси" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "не може да се създаде дъщерен процес за заместване на процеси" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "именуваният програмен канал %s не може да се отвори за четене" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "именуваният програмен канал %s не може да се отвори за запис" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" "именуваният програмен канал %s не може да се\n" "дублира като файловия дескриптор %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "лошо заместване: липсва затварящ знак „`“ в %s" +msgstr "заместване на команди: знакът „null“ във входа е прескочен" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "не може да се създаде програмен канал за заместване на команди" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "не може да се създаде дъщерен процес за заместване на команди" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "заместване на команди: каналът не може да се дублира като fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: неправилно име за променлива-указател" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: лошо заместване" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: грешно непряко заместване" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "„%s“: грешно име на променлива" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: аргументът е „null“ или не е зададен" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: аргументът е „null“ или не е зададен" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: изразът от подниза е < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: лошо заместване" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: не може да се задава по този начин" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2033,12 +2053,12 @@ msgstr "" "бъдещите версии на обвивката ще използват изчисляване като аритметично\n" "заместване" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "лошо заместване: липсва затварящ знак „`“ в %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "няма съвпадение: %s" @@ -2061,32 +2081,37 @@ msgstr "очаква се „)“" msgid "`)' expected, found %s" msgstr "очаква се „)“, а е получено %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: очаква се унарен оператор" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: очаква се бинарен оператор" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "липсва „]“" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "неправилен номер на сигнал" -#: trap.c:387 +#: trap.c:320 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: превишено е максималното ниво на влагане на „eval“ (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" "стартиране на предстоящите прихващания: неправилна стойност в\n" "trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2094,97 +2119,97 @@ msgstr "" "стартиране на предстоящите прихващания: обработката на сигнали е SIG_DFL.\n" "%d (%s) е преизпратен на текущата обвивка" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "обработка на прихващания: неправилен сигнал %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "грешка при внасянето на дефиницията на функция за „%s“" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "нивото на обвивката (%d) е прекалено голямо. Задава се да е 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "" "създаване на локална променлива: липсва контекст на функция в текущата " "област\n" "на видимост" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: на тази променлива не може да се присвои стойност" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: неправилно име за променлива-указател" +msgstr "%s: присвояване на число на променлива-указател" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "" "всички локални променливи: липсва контекст на функция в текущата област на\n" "видимост" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s: аргументът за низа за изнасяне не трябва да е „null“" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "неправилен знак на позиция %d в низа за изнасяне за %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "липсва „=“ в низа за изнасяне за %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "изваждане на контекст на променливи: в началото на структурата за променливи " "на\n" "обвивката (shell_variables) е нещо, което не е контекст на функция" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "" "изваждане на контекст на променливи: липсва контекст за глобални променливи\n" "(global_variables)" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "изваждане на област: в началото на структурата за променливи на обвивката\n" "(shell_variables) е нещо, което не е временна област в обкръжението" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s не може да се отвори като ФАЙЛ" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: грешен файлов дескриптор за файла за трасиране" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: е извън допустимия диапазон" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Авторски права (C) 2015 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Авторски права (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2207,22 +2232,22 @@ msgstr "Това е свободен софтуер. Можете да го пр msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Няма НИКАКВИ ГАРАНЦИИ до степента позволена от закона." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: не могат да се заделят %lu байта (заделени са %lu байта)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: не могат да се заделят %lu байта" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: не могат да се заделят %lu байта (заделени са %lu байта)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: не могат да се заделят %lu байта" @@ -2351,20 +2376,18 @@ msgstr "" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "jobs [-lnprs] [ЗАДАЧА…] или jobs -x КОМАНДА [АРГУМЕНТИ]" +msgstr "jobs [-lnprs] [ИД_ЗАДАЧА…] или jobs -x КОМАНДА [АРГУМЕНТИ]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [ЗАДАЧА…]" +msgstr "disown [-h] [-ar] [ИД_ЗАДАЧА… | ИД_ПРОЦЕС…]" #: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" -"kill [-s СИГНАЛ | -n НОМЕР_НА_СИГНАЛ | -СИГНАЛ] ИДЕНТИФИКАТОР_НА_ПРОЦЕС\n" -" | ИДЕНТИФИКАТОР_НА_ЗАДАЧА…\n" +"kill [-s СИГНАЛ | -n НОМЕР_НА_СИГНАЛ | -СИГНАЛ] ИД_ПРОЦЕС | ИД_ЗАДАЧА…\n" "или\n" "kill -l [СИГНАЛ]" @@ -2442,7 +2465,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [МАСКА]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [ИД…]" #: builtins.c:181 @@ -2534,8 +2558,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v ПРОМЕНЛИВА] ФОРМАТ [АРГУМЕНТИ]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2553,7 +2578,8 @@ msgstr "" " [-S НАСТАВКА] [ДУМА]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o ОПЦИЯ] [-DE] [ИМЕ…]" #: builtins.c:242 @@ -2565,9 +2591,10 @@ msgstr "" " [-u ФАЙЛ_ДЕСКР] [-C ФУНКЦИЯ] [-c КВАНТ] [МАСИВ]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n БРОЙ] [-O НАЧАЛО] [-s БРОЙ] [-t] [-u ФАЙЛ_ДЕСКР]\n" " [-C ФУНКЦИЯ] [-c КВАНТ] [МАСИВ]" @@ -2759,6 +2786,7 @@ msgstr "" " 0, освен ако е зададен БРОЙ, който е по-малък от 1." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2769,7 +2797,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Изпълнение на вградени команди.\n" "\n" @@ -3008,6 +3036,7 @@ msgstr "" " Връща изходния код на КОМАНДАта или грешка, ако такава не е открита." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3026,11 +3055,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3095,7 +3124,6 @@ msgstr "" " на стойност на променлива." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3103,7 +3131,7 @@ msgid "" msgstr "" "Задаване на стойност и атрибути на променливи.\n" " \n" -" Остаряло. Виж „help declare“." +" Синоним на „declare“. Виж „help declare“." #: builtins.c:538 msgid "" @@ -3135,6 +3163,7 @@ msgstr "" " стойност на променлива, или в момента не се изпълнява функция." #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3163,6 +3192,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3203,7 +3238,7 @@ msgstr "" " Изходен код:\n" " Връща 0, освен ако не възникне грешка при извеждането." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3226,7 +3261,7 @@ msgstr "" " Изходен код:\n" " Връща 0, освен ако възникне грешка при извеждането." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3287,7 +3322,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако ИМЕто не е на вградена команда или не възникне грешка." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3306,7 +3341,7 @@ msgstr "" " Изходен код:\n" " Връща изходния код на командата или код за успех, ако командата е нулева." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3401,7 +3436,7 @@ msgstr "" "на\n" " последната опция или при възникването на грешка." -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3443,7 +3478,7 @@ msgstr "" " 0, освен когато КОМАНДАта не е открита или възникне грешка при\n" " пренасочването." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3456,7 +3491,7 @@ msgstr "" "код\n" " е този на последната изпълнена команда." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3470,7 +3505,7 @@ msgstr "" "изпълнена\n" " в обвивка, която не е входна." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3533,7 +3568,7 @@ msgstr "" " Връща 0 или изхода от последната команда, който не е 0 в случай на " "грешка." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3553,7 +3588,7 @@ msgstr "" " Изходът от командата, която е зададена да е текуща или грешка, ако при\n" " поставянето на задачата от фонов към текущ режим възникне такава." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3575,7 +3610,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако управлението на задачи е изключено или възникне грешка." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3622,7 +3657,8 @@ msgstr "" " Изходен код:\n" " 0, освен ако ИМЕто не бъде открито или е дадена неправилна опция." -#: builtins.c:812 +#: builtins.c:816 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3637,7 +3673,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3666,7 +3702,7 @@ msgstr "" " 0, освен ако никоя вградена команда не съвпада с шаблона или е дадена\n" " неправилна опция." -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3676,7 +3712,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3712,7 +3749,9 @@ msgstr "" " -d ПОЗИЦИЯ\n" " изтрива елемента в историята намиращ се посочената ПОЗИЦИЯ.\n" " -a добавя историята от текущата сесия към файла с историята.\n" -" -n прочитане на непрочетените редове от файла с историята.\n" +" -n прочитане на непрочетените редове от файла с историята и добавяне " +"към\n" +" текущата история.\n" " -r прочитане на файла с историята и добавяне на съдържанието към " "текущата\n" " история.\n" @@ -3739,7 +3778,7 @@ msgstr "" " Изходен код:\n" " 0. Ако възникне грешка или е подадена неправилна опция връща грешка." -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3786,7 +3825,7 @@ msgstr "" "се\n" " ползва „-x“, връща изходното състояние на КОМАНДАта." -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3817,8 +3856,7 @@ msgstr "" " Изходен код:\n" " 0, освен когато е дадена неправилна опция или несъществуваща ЗАДАЧА." -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3855,6 +3893,7 @@ msgstr "" " аргументи, те се интерпретират като номера на сигналите чиито " "имена\n" " да се изброят.\n" +" -L синоним на „-l“\n" "\n" " „kill“ е команда вградена в обвивката поради две причини: позволява да " "се\n" @@ -3867,7 +3906,7 @@ msgstr "" " Изходен код:\n" " 0. Ако възникне грешка или е подадена неправилна опция, връща грешка." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3955,7 +3994,8 @@ msgstr "" " Ако последният АРГУМЕНТ се изчислява като 0, „let“ връща 1. В противен\n" " случай — връща 0." -#: builtins.c:987 +#: builtins.c:992 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3976,7 +4016,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -4067,7 +4107,7 @@ msgstr "" " грешка при задаване на стойност на променлива или е зададен неправилен\n" " файлов дескриптор като аргумент на -u." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -4090,8 +4130,7 @@ msgstr "" "функция\n" " или скрипт." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4256,8 +4295,9 @@ msgstr "" " -P Да не се следват символните връзки при изпълнението на команди " "като\n" " „cd“, които променят текущата директория.\n" -" -T Прихващането за „DEBUG“ да се наследява от функциите на " -"обвивката.\n" +" -T Прихващането за „DEBUG“ и „RETURN“ да се наследява от функциите " +"на\n" +" обвивката.\n" " -- Оставащите аргументи да се тълкуват като позиционни. Ако няма " "повече\n" " аргументи, се изтриват съответните позиционни.\n" @@ -4279,7 +4319,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако не е зададена неправилна опция." -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4321,7 +4361,7 @@ msgstr "" " 0, освен ако е зададена неправилна опция или някое от ИМЕната е само за\n" " четене." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4358,7 +4398,7 @@ msgstr "" " 0, освен ако е зададена неправилна опция или някое от ИМЕната е " "неправилно." -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4400,7 +4440,7 @@ msgstr "" " 0, освен ако е зададена неправилна опция или някое от ИМЕната е " "неправилно." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4420,7 +4460,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако БРОят е отрицателно или по-голямо от стойността „$#“." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4447,7 +4487,7 @@ msgstr "" "не\n" " може да бъде открит, изходът е грешка." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4473,7 +4513,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако не възникне грешка или управлението на задачи е изключено." -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4643,7 +4683,7 @@ msgstr "" " 0, ако ИЗРАЗът е верен. Грешка, когато ИЗРАЗът е неверен или е даден\n" " неправилен аргумент." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4658,7 +4698,7 @@ msgstr "" "квадратна\n" " скоба „[“." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4678,7 +4718,7 @@ msgstr "" " Изходен код:\n" " Винаги 0." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4766,7 +4806,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако е зададен неправилен сигнал или опция." -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4827,7 +4867,7 @@ msgstr "" " 0, ако всички подадени ИМЕна са открити, неуспех, ако някое от тях " "липсва." -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4928,7 +4968,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако не възникни грешка или е дадена неправилна опция." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4964,7 +5004,8 @@ msgstr "" " Изходен код:\n" " 0, освен ако МАСКАта или някоя от зададените опции са неправилни." -#: builtins.c:1494 +#: builtins.c:1499 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4972,13 +5013,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -5001,7 +5044,7 @@ msgstr "" " Връща изходния код на последната задача или процес. Ако е зададена\n" " неправилна опция, връща грешка." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -5028,7 +5071,7 @@ msgstr "" " Изходния код на процеса с последния идентификатор. Грешка, ако е даден\n" " неправилен идентификатор или е дадена неправилна опция." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -5053,7 +5096,7 @@ msgstr "" " Изходен код:\n" " Връща изходния код на последно изпълнената команда." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -5083,7 +5126,7 @@ msgstr "" " Изходен код:\n" " Връща изходния код на последно изпълнената команда." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5125,7 +5168,7 @@ msgstr "" " Изходен код:\n" " Връща изходния код на последно изпълнената команда." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5155,7 +5198,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този на ПРОГРАМНия_КАНАЛ." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5174,7 +5217,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този на последно изпълнената команда." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5215,7 +5258,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този на последно изпълнената команда." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5233,7 +5276,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този на последно изпълнената команда." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5251,8 +5294,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този на последно изпълнената команда." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5274,9 +5316,9 @@ msgstr "" " дадено ИМЕ на променлива, стандартно се ползва „COPROC“.\n" " \n" " Изходен код:\n" -" Изходния код на КОМАНДАта." +" Изходният код е 0." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5302,7 +5344,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако ИМЕто не е само за четене." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5321,7 +5363,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този на последно изпълнената команда." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5345,7 +5387,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този възобновената задача." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5363,7 +5405,7 @@ msgstr "" " Изходен код:\n" " 1, ако резултатът на ИЗРАЗа е 0. В противен случай — 0." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5419,7 +5461,7 @@ msgstr "" " Изходен код:\n" " 0 или едно според стойността на ИЗРАЗа." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5545,7 +5587,7 @@ msgstr "" "кои\n" " команди да не се запазват в историята\n" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5610,7 +5652,7 @@ msgstr "" "към\n" " съответната директория." -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5664,7 +5706,7 @@ msgstr "" "към\n" " съответната директория." -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5718,14 +5760,14 @@ msgstr "" " Изходен код:\n" " 0, освен ако е дадена неправилна опция или възникне грешка." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5759,7 +5801,7 @@ msgstr "" "изключена\n" " ОПЦИЯ." -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5833,7 +5875,8 @@ msgstr "" " 0, освен ако не е дадена неправилна опция или възникне грешка при\n" " извеждането на резултата или при присвояването на стойността." -#: builtins.c:1953 +#: builtins.c:1961 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5851,10 +5894,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5887,7 +5934,7 @@ msgstr "" " Изходен код:\n" " 0, освен когато е дадена неправилна опция или възникне грешка." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5908,7 +5955,8 @@ msgstr "" " Изходен код:\n" " 0, освен ако е дадена неправилна опция или възникне грешка." -#: builtins.c:1996 +#: builtins.c:2006 +#, fuzzy msgid "" "Modify or display completion options.\n" " \n" @@ -5923,6 +5971,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5969,7 +6018,7 @@ msgstr "" "ИМЕто\n" " за автоматично дописване." -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -6053,7 +6102,7 @@ msgstr "" "променлива\n" " само за четене или не е индексиран масив." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -6062,18 +6111,3 @@ msgstr "" "Прочитане на редове от файл и поставяне в променлива – масив.\n" " \n" " Синоним на „mapfile“." - -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Авторски права (C) 2014 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "true" - -#~ msgid "false" -#~ msgstr "false" - -#~ msgid "times" -#~ msgstr "times" diff --git a/po/ca.gmo b/po/ca.gmo index bae5d3f4d..fef2319cd 100644 Binary files a/po/ca.gmo and b/po/ca.gmo differ diff --git a/po/ca.po b/po/ca.po index 14f6aa08d..17222add0 100644 --- a/po/ca.po +++ b/po/ca.po @@ -1,139 +1,140 @@ # Catalan messages for GNU bash. -# Copyright (C) 2002, 2003, 2010, 2014, 2015 Free Software Foundation, Inc. +# Copyright (C) 2002, 2003, 2010, 2014, 2015, 2017 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Montxo Vicente i Sempere , 2003 (traducció), 2010 (revisions). # Jordi Mas i Hernàndez , 2004 (correccions). -# Ernest Adrogué Calveras , 2014, 2015 (nova traducció). +# Ernest Adrogué Calveras , 2014, 2015, 2017. msgid "" msgstr "" -"Project-Id-Version: bash-4.4-beta1\n" +"Project-Id-Version: bash-4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-18 13:33+0200\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2017-01-10 20:11+0100\n" "Last-Translator: Ernest Adrogué Calveras \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ca\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "subíndex erroni" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: s'elimina l'atribut «nameref»" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "%s: no es pot convertir el vector indexat en associatiu" +msgstr "%s: no és possible convertir un vector indexat en associatiu" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" -msgstr "%s: clau incorrecta de vector associatiu" +msgstr "%s: clau de vector associatiu no vàlida" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" -msgstr "%s: no és possible assignar a un índex no-numèric" +msgstr "%s: no es pot assignar a un índex no-numèric" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: l'assignació en vectors associatius requereix un subíndex" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: no es pot crear: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: no s'ha trobat el mapa de tecles per a l'ordre" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "%s: el primer caràcter no-blanc no és `\"'" +msgstr "%s: el primer caràcter no-blanc no és «\"»" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" -msgstr "falta un caràcter `%c' a %s" +msgstr "falta un caràcter de tancament «%c» a %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" -msgstr "%s: falten dos punts `:' de separació" +msgstr "%s: falta un caràcter «:» de separació" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "expansió de claus: no es pot assignar memòria per a %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "expansió de claus: ha fallat l'assignació de memòria per a %d elements" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "expansió de claus: ha fallat l'assignació de memòria per a `%s'" +msgstr "expansió de claus: ha fallat l'assignació de memòria per a «%s»" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" -msgstr "`%s': el nom de l'àlies no és valid" +msgstr "«%s»: el nom de l'àlies no és valid" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "l'edició de línia no està habilitada" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" -msgstr "`%s': el nom del mapa de tecles no és vàlid" +msgstr "«%s»: el nom del mapa de tecles no és vàlid" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: no es pot llegir: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': no es pot desvincular" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" -msgstr "`%s': el nom de la funció és desconegut" +msgstr "«%s»: nom de funció desconegut" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s no està vinculat a cap tecla.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s pot ser invocat via " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: no es pot desvincular" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "nombre d'iteracions" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "només té sentit en una iteració de tipus `for', `while' o `until'" +msgstr "només té sentit en una iteració de tipus «for», «while» o «until»" # això forma part de la descripció de caller que està a un altre lloc #: builtins/caller.def:136 @@ -143,243 +144,242 @@ msgid "" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "la variable HOME no està definida" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "sobren arguments" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "no hi ha més directoris" +msgstr "directori nul" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "la variable OLDPWD no està definida" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "línia %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "atenció: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: sintaxi: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: l'opció requereix un argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" -msgstr "%s: fa falta un argument numèric" +msgstr "%s: falta un argument numèric" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: no s'ha trobat" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: l'opció no és vàlida" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: el nom de l'opció no és vàlid" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" -msgstr "`%s': no és un identificador vàlid" +msgstr "«%s»: no és un identificador vàlid" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "nombre octal no vàlid" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "nombre hexadecimal no vàlid" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "nombre no vàlid" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" -msgstr "%s: l'especificació de senyal no és vàlida" +msgstr "%s: especificació de senyal no vàlida" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "`%s': el pid o l'especificació de tasca no són vàlids" +msgstr "«%s»: pid o especificació de feina no vàlids" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" -msgstr "%s: variable de només-lectura" +msgstr "%s: variable de només lectura" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fora del domini" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s fora del domini" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" -msgstr "%s: no s'ha trobat la tasca" +msgstr "%s: no existeix tal feina" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" -msgstr "%s: no hi ha control de tasques" +msgstr "%s: no hi ha control de feines" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" -msgstr "no hi ha control de tasques" +msgstr "no hi ha control de feines" # cd .. en un intèrpret restringit -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: restringit" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "restringit" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: no és una ordre interna de l'intèrpret" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "error d'escriptura: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "error en establir els atributs del terminal: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "error en obtenir els atributs del terminal: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error en obtenir el directori actual: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" -msgstr "%s: l'especificació de tasca és ambigua" +msgstr "%s: l'especificació de feina és ambigua" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "aquesta versió no té ajuda disponible" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" -msgstr "%s: el nom de l'acció no és vàlid" +msgstr "%s: nom d'acció no vàlid" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: no hi ha especificació de compleció" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "atenció: l'opció -F pot no funcionar com us espereu" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "atenció: l'opció -C pot no funcionar com us espereu" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "no s'està executant una funció de compleció" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "només es pot utilitzar en una funció" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "%s: la variable referenciada no pot ser un vector" +msgstr "%s: una variable referència no pot ser un vector" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "%s: no és permès que una variable s'autoreferenciï" +msgstr "%s: no es permeten autoreferències en variables referència" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" -msgstr "%s: la referència de nom és circular" +msgstr "%s: referència circular" -# buscar context -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: el nom de la variable referenciada no és vàlid" +msgstr "«%s»: la variable referència conté un nom de variable no vàlid" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" -msgstr "no és possible usar `-f' per a fer funcions" +msgstr "no és possible usar «-f» per convertir en funció" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" -msgstr "%s: funció de només-lectura" +msgstr "%s: funció de només lectura" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: les assignacions compostes amb cometes estan desfasades" +msgstr "" +"%s: es desaconsella l'assignació múltiple en vectors utilitzant cometes" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: no és possible destruir variables vector d'aquesta manera" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "%s: no es pot convertir el vector associatiu en indexat" +msgstr "%s: no és possible convertir un vector associatiu en indexat" #: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" -msgstr "la càrrega dinàmica no està disponible" +msgstr "no es poden carregar biblioteques dinàmicament" #: builtins/enable.def:343 #, c-format @@ -389,12 +389,12 @@ msgstr "no es pot obrir l'objecte compartit %s: %s" #: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" -msgstr "no es pot trobar %s a l'objecte compartit %s: %s" +msgstr "no s'ha trobat %s a l'objecte compartit %s: %s" #: builtins/enable.def:387 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "la càrrega de %s ha fallat (%d): no s'ha carregat" +msgstr "l'intent de carregar %s ha fallat (%d): no carregat" #: builtins/enable.def:512 #, c-format @@ -406,72 +406,72 @@ msgstr "%s: no s'ha carregat dinàmicament" msgid "%s: cannot delete: %s" msgstr "%s: no es pot eliminar: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: és un directori" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: no és un fitxer ordinari" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: el fitxer és massa gran" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: no es poden executar fitxers binaris" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: no es pot executar: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" -msgstr "desconnexió\n" +msgstr "desconnectat\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" -msgstr "no és una sessió d'entrada: utilitzeu `exit'" +msgstr "no és una sessió d'entrada: utilitzeu «exit»" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" -msgstr "Hi ha tasques aturades.\n" +msgstr "Hi ha feines aturades.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" -msgstr "Hi ha tasques en marxa.\n" +msgstr "Hi ha feines en funcionament.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "no s'ha trobat cap ordre" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "especificació d'historial" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: no es pot obrir el fitxer temporal: %s" -# fg quan no hi ha cap tasca en segon pla -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +# fg quan no hi ha cap feina en segon pla +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "actual" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" -msgstr "la tasca %d s'ha iniciat sense control de tasques" +msgstr "la feina %d es va iniciar sense control de feines" #: builtins/getopt.c:110 #, c-format @@ -483,41 +483,39 @@ msgstr "%s: opció il·legal -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: l'opció requereix un argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" -msgstr "hashing deshabilitat" +msgstr "el «hashing» està deshabilitat" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" -msgstr "%s: la taula hash és buida\n" +msgstr "%s: la taula «hash» és buida\n" # hash (sense arguments) -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "vegades\tordre\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "Ordres de l'intèrpret coincidents amb `" -msgstr[1] "Ordres de l'intèrpret coincidents amb `" +msgstr[0] "Ordres de l'intèrpret coincidents amb '" +msgstr[1] "Ordres de l'intèrpret coincidents amb '" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "" -"no hi ha ajuda sobre `%s'. Proveu `help help', `man -k %s' o `info %s'." +msgstr "no hi ha ajuda sobre «%s». Proveu «help help», «man -k %s» o «info %s»." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: no es pot obrir: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -529,31 +527,29 @@ msgid "" "\n" msgstr "" "Aquestes ordres de l'intèrpret estan definides internament.\n" -"Feu `help' per a veure'n una llista. \n" -"Feu `help nom' per a informació sobre la funció `nom'.\n" -"Utilitzeu `info bash' per a informació sobre l'intèrpret en general.\n" -"Utilitzeu `man -k' o bé `info' per a informació sobre ordres que no són a " -"la\n" -"llista.\n" +"Feu «help» per a veure'n una llista. \n" +"Feu «help nom» per a obtenir informació sobre la funció «nom».\n" +"Feu «info bash» per a obtenir informació general sobre l'intèrpret.\n" +"Feu «man -k» o «info» per a obtenir informació sobre altres programes.\n" "\n" -"Un asterisc (*) al costat d'un nom significa que l'ordre està " -"deshabilitada.\n" +"Un asterisc (*) significa que l'ordre està deshabilitada.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "no és possible usar més d'una opció d'entre -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "posició a l'historial" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: l'argument no és vàlid" +msgstr "%s: la marca horària no és vàlida" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: ha fallat l'expansió de l'historial" @@ -565,18 +561,18 @@ msgstr "%s: inlib ha fallat" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" -msgstr "no es permeten altres opcions amb `-x'" +msgstr "no es permeten altres opcions amb «-x»" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "%s: els arguments han de ser ids de processos o tasques" +msgstr "%s: els arguments han de ser ids de processos o feines" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Error desconegut" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "s'esperava una expressió" @@ -585,72 +581,72 @@ msgstr "s'esperava una expressió" msgid "%s: not an indexed array" msgstr "%s: no és un vector indexat" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: l'especificació de descriptor de fitxer no és vàlida" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: el descriptor de fitxer no és vàlid: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: el nombre de línies no és vàlid" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: l'origen del vector no és vàlid" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: el quàntum de retorn no és vàlid" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "nom de variable vector en blanc" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" -msgstr "es requereix suport per a variables vector" +msgstr "fa falta suport per a variables vector" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" -msgstr "`%s': falta un caràcter de format" +msgstr "«%s»: falta un caràcter de format" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" -msgstr "%c: l'especificació de format de temps no és vàlida" +msgstr "«%c»: l'especificació de format de temps no és vàlida" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" -msgstr "`%c': el caràcter de format no és vàlid" +msgstr "«%c»: el caràcter de format no és vàlid" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "atenció: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "problema en interpretar el format: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "falta un dígit hexadecimal a \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" -msgstr "falta un dígit unicode a \\%c" +msgstr "falta un dígit Unicode a \\%c" #: builtins/pushd.def:199 msgid "no other directory" @@ -661,20 +657,20 @@ msgstr "no hi ha més directoris" msgid "%s: invalid argument" msgstr "%s: l'argument no és vàlid" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "la pila de directoris està buida" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "índex de la pila de directoris" -# help dirs ?? missatge similar repetit més endavant -#: builtins/pushd.def:696 +# còpia parcial d'una altra cadena - l'original es troba més endavant +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -697,14 +693,14 @@ msgid "" "by\n" "\tdirs when invoked without options, starting with zero." msgstr "" -"Mostra la llista actual de directoris recordats. Els directoris entren a " -"la\n" -" llista mitjançant l'ordre `pushd'; podeu recórrer la llista de\n" -" directoris enrere amb l'ordre `popd'.\n" +"Mostra la llista actual de directoris recordats. Els directoris són " +"afegits\n" +" a la llista mitjançant l'ordre «pushd»; podeu recórrer la llista de\n" +" directoris cap enrere amb l'ordre «popd».\n" "\n" " Opcions:\n" " -c neteja la pila, esborrant-ne tots els elements\n" -" -l no mostra les versions abreviades (prefix ~) en els\n" +" -l no mostra les versions abreviades (amb el prefix ~) dels\n" " directoris relatius al vostre directori personal\n" " -p mostra la pila, una entrada per línia\n" " -v mostra la pila, una entrada per línia indicant la posició a\n" @@ -712,15 +708,15 @@ msgstr "" "\n" " Arguments:\n" " +N Mostra l'entrada N-èssima, comptant des de l'esquerra de la\n" -" llista mostrada per `dirs' quan s'invoca sense opcions, \n" +" llista mostrada per «dirs» quan s'invoca sense opcions, \n" " començant des de zero.\n" "\n" " -N Mostra l'entrada N-èssima, comptant des de la dreta de la\n" -" llista mostrada per `dirs' quan s'invoca sense opcions,\n" +" llista mostrada per «dirs» quan s'invoca sense opcions,\n" " començant des de zero." -# help pushd ??? -#: builtins/pushd.def:718 +# còpia parcial d'una altra cadena - l'original es troba més endavant +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -744,33 +740,33 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"Afegeix un directori a sobre la pila de directoris, o fa girar la llista, " -"de\n" -" manera que a sobre la pila hi queda el directori de treball corrent.\n" -" Sense arguments, intercanvia els dos directoris de més amunt.\n" +"Afegeix un directori al capdamunt de la pila de directoris, o fa girar la\n" +" llista, de manera que al capdamunt de la pila hi queda el directori de\n" +" treball corrent. Sense arguments, intercanvia els dos directoris de " +"més\n" +" amunt.\n" "\n" " Opcions:\n" " -n Omet el canvi de directori quan s'afegeixen directoris a la\n" -" pila, de manera que només canvia la pila.\n" +" pila, de manera que només canvia el contingut de la pila.\n" "\n" " Arguments:\n" "\n" " +N Gira la llista de manera tal que l'N-èssim directori\n" -" (comptant des de l'esquerra de la llista que mostra `dirs',\n" +" (comptant des de l'esquerra de la llista que mostra «dirs»,\n" " començant des de zero) queda a dalt de tot.\n" "\n" " -N Gira la llista de manera tal que l'N-èssim directori\n" -" (comptant des de la dreta de la llista que mostra `dirs',\n" +" (comptant des de la dreta de la llista que mostra «dirs»,\n" " començant des de zero) queda a dalt de tot.\n" "\n" -" dir Afegeix DIR a dalt de tot de la pila de directoris, i el\n" +" dir Afegeix DIR al capdamunt de la pila de directoris, i el\n" " converteix en el nou directori de treball corrent.\n" "\n" -" Podeu visualitzar la pila de directoris amb l'ordre `dirs'." +" Podeu veure el contingut de la pila de directoris amb l'ordre «dirs»." -# help popd ??? -# -#: builtins/pushd.def:743 +# còpia parcial d'una altra cadena - l'original es troba més endavant +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -791,25 +787,25 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" "Elimina entrades de la pila de directoris. Sense arguments, elimina el\n" -" directori de dalt de tot de la pila, i canvia al nou directori de dalt\n" -" de la pila.\n" +" directori al capdamunt de la pila, i canvia al nou directori de dalt de\n" +" la pila.\n" "\n" " Opcions:\n" -" -n Evita el canvi de directori quan s'eliminen directoris de la\n" -" pila, de manera que només es manipula la pila.\n" +" -n Omet el canvi de directori quan s'eliminen directoris de la\n" +" pila, de manera que només canvia el contingut de la pila.\n" "\n" " Arguments:\n" " +N Elimina l'entrada N-èssima, comptant des de l'esquerra de la\n" -" llista que mostra `dirs', començant des de zero. \n" -" Per exemple: `popd +0' elimina el primer directori, i\n" -" `popd +1' el segon.\n" +" llista que mostra «dirs», començant des de zero. Per\n" +" exemple: «popd +0» elimina el primer directori, i «popd +1»\n" +" el segon.\n" "\n" " -N Elimina l'entrada N-èssima, comptant des de la dreta de la\n" -" llista que mostra `dirs', començant des de zero. \n" -" Per exemple: `popd -0' elimina l'últim directori, i\n" -" `popd -1' el penúltim.\n" +" llista que mostra «dirs», començant des de zero. Per\n" +" exemple: «popd -0» elimina l'últim directori, i «popd -1» el\n" +" penúltim.\n" "\n" -" Podeu visualitzar la pila de directoris amb l'ordre `dirs'." +" Podeu veure el contingut de la pila de directoris amb l'ordre «dirs»." # read -t -5 #: builtins/read.def:279 @@ -817,68 +813,67 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: el límit de temps no és vàlid" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "error de lectura: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" -msgstr "només es pot fer `return' des d'una funció o script" +msgstr "només es permet fer «return» des d'una funció o script" # unset -f -v foo -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "no és possible suprimir una funció i una variable alhora" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: no es pot suprimir" # unset UID -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" -msgstr "%s: no es pot suprimir: %s de només-lectura" +msgstr "%s: no es pot suprimir: %s de només lectura" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: no és una variable vector" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: no és una funció" -#: builtins/setattr.def:196 -#, fuzzy, c-format +#: builtins/setattr.def:194 +#, c-format msgid "%s: cannot export" -msgstr "%s: no es pot suprimir" +msgstr "%s: no es pot exportar" # shift -4 #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" -msgstr "nombre de shifts" +msgstr "nombre de «shifts»" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" -msgstr "" -"no es poden activar i desactivar opcions de l'intèrpret al mateix temps" +msgstr "no es poden activar i desactivar opcions de forma simultània" # shopt -s foo -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: l'opció de l'intèrpret no és vàlida" # source -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "fa falta un nom de fitxer" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: no s'ha trobat el fitxer" @@ -891,63 +886,63 @@ msgstr "no es pot suspendre" msgid "cannot suspend a login shell" msgstr "no és possible suspendre un intèrpret d'entrada" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" -msgstr "%s és un àlies de `%s'\n" +msgstr "%s és un àlies de «%s»\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s és una paraula clau de l'intèrpret\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s és una funció\n" -#: builtins/type.def:300 -#, fuzzy, c-format +#: builtins/type.def:299 +#, c-format msgid "%s is a special shell builtin\n" -msgstr "%s és una ordre interna\n" +msgstr "%s és una ordre interna especial\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s és una ordre interna\n" # type dmesg -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s és %s\n" # hash cp; type cp -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" -msgstr "%s és a la taula hash (%s)\n" +msgstr "%s és a la taula «hash» (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: el límit no és vàlid" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" -msgstr "`%c': ordre errònia" +msgstr "«%c»: ordre errònia" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: no es pot obtenir el límit: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "límit" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: no es pot modificar el límit: %s" @@ -960,420 +955,431 @@ msgstr "nombre octal" #: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "`%c': l'operador del mode simbòlic no és vàlid" +msgstr "«%c»: l'operador de mode simbòlic no és vàlid" # umask u=rwz #: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "`%c': el mode simbòlic conté caràcters no vàlids" +msgstr "«%c»: el mode simbòlic conté caràcters no vàlids" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " línia " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "última ordre: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Avortant..." # prefix afegit als avisos infomatius interns (internal_inform) #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORMACIÓ: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "error no identificat" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "tipus d'ordre erroni" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "connector erroni" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "salt erroni" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: variable no definida" # SIGALRM -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atemps esgotat mentre s'esperaven dades: autodesconnexió\n" # error intern -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "no s'ha pogut redirigir l'entrada estàndard des de /dev/null: %s" # error intern -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" -msgstr "TIMEFORMAT: `%c': el caràcter de format no és vàlid" +msgstr "TIMEFORMAT: «%c»: el caràcter de format no és vàlid" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: el coprocés [%d:%s] encara existeix" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" -msgstr "error de canalització" +msgstr "error de canonada" -#: execute_cmd.c:4496 -#, fuzzy, c-format +#: execute_cmd.c:4671 +#, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "%s: s'ha excedit el nivell màxim d'imbricació de funcions (%d)" +msgstr "eval: excedit el nombre màxim d'avaluacions imbricades (%d)" -#: execute_cmd.c:4508 -#, fuzzy, c-format +#: execute_cmd.c:4683 +#, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "%s: s'ha excedit el nivell màxim d'imbricació de funcions (%d)" +msgstr "%s: excedit el nombre màxim d'imbricacions per a «source» (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "%s: s'ha excedit el nivell màxim d'imbricació de funcions (%d)" +msgstr "%s: excedit el nombre màxim de funcions imbricades (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "%s: restricció: no podeu especificar `/' en noms d'ordres" +msgstr "%s: restricció: no podeu especificar «/» en noms d'ordres" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: no s'ha trobat l'ordre" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: intèrpret erroni" # error intern -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: no es pot executar el fitxer binari: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" -msgstr "`%s': és una ordre interna especial" +msgstr "«%s»: és una ordre interna especial" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "no s'ha pogut duplicar l'fd %d com a fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" -msgstr "s'ha excedit el nivell de recursió d'expressions" +msgstr "excedit el nivell màxim de recursivitat per a expressions" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" -msgstr "underflow a la pila de recursió" +msgstr "«underflow» a la pila de recursivitat" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "error de sintaxi a l'expressió" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "intent d'assignació a una no-variable" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "error de sintaxi a l'expressió" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "divisió per 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" -msgstr "bug: el component expassign és erroni" +msgstr "bug: el component «expassign» és erroni" # echo $((4 > 5 ? 0)) -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" -msgstr "falta un `:' a l'expressió condicional" +msgstr "falta un caràcter «:» a l'expressió condicional" # echo $((4 ** -1)) -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "exponent menor que 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "s'esperava un identificador després del preincrement o predecrement" +msgstr "fa falta un identificador després del pre-increment o pre-decrement" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" -msgstr "falta un `)'" +msgstr "falta un caràcter «)»" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "error de sintaxi: s'esperava un operand" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "error de sintaxi: l'operador aritmètic no és vàlid" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" -msgstr "%s%s%s: %s (l'element erroni és \"%s\")" +msgstr "%s%s%s: %s (l'element erroni és «%s»)" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "la base aritmètica no és vàlida" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "el valor de la base és massa gran" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: expressió errònia\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: els directoris superiors són inaccessibles" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" -msgstr "no s'ha pogut restablir el mode nodelay per a l'fd %d" +msgstr "no s'ha pogut restablir el mode «nodelay» per a l'fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "error en crear un fd nou a partir de l'fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" -msgstr "save_bash_input: ja existia un buffer per al nou fd %d" +msgstr "save_bash_input: ja existia un «buffer» per al nou fd %d" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" -msgstr "start_pipeline: pgrp de la canalització" +msgstr "start_pipeline: pgrp de la canonada" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "el pid bifurcat %d apareix a la tasca en execució %d" +msgstr "el pid bifurcat %d apareix a la feina en execució %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" -msgstr "s'elimina la tasca aturada %d amb grup de procés %ld" +msgstr "s'elimina la feina aturada %d amb grup de procés %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: procés %5ld (%s) a the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" -msgstr "add_process: el pid %5ld (%s) està marcat com a encara actiu" +msgstr "add_process: el pid %5ld (%s) està marcat com a viu" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no existeix tal pid" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Senyal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Fet" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Aturat" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Aturat(%s)" -#: jobs.c:1632 +# ha de tenir menys de 10 caràcters o no queda alineat +#: jobs.c:1681 msgid "Running" -msgstr "Executant-se" +msgstr "Funcionant" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Fet(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Sortida %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Estat desconegut" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(s'ha bolcat la memòria)" # wd = working directory -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (dt: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid (de %ld a %ld) per al procés inferior" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: el pid %ld no és un fill d'aquest intèrpret" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No es té constància del procés %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" -msgstr "wait_for_job: la tasca %d està aturada" +msgstr "wait_for_job: la feina %d està aturada" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" -msgstr "%s: la tasca ha acabat" +msgstr "%s: la feina ha acabat" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" -msgstr "%s: la tasca %d ja es troba en segon pla" +msgstr "%s: la feina %d ja es troba en segon pla" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" -msgstr "waitchld: s'activa el WNOHANG per a evitar un bloqueig indefinit" +msgstr "waitchld: s'activa «WNOHANG» per a evitar un bloqueig indefinit" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s línia %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (s'ha bolcat la memòria)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(dt ara: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp ha fallat" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: disciplina de línia" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplina de línia" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "no s'ha pogut establir el grup de procés del terminal (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" -msgstr "aquesta sessió no té control de tasques" +msgstr "aquesta sessió no té control de feines" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: asserció fallida: %s\n" # error intern i el \r provoca warnings -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "desconegut" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: bloc abatussat a la llista de disponibles" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: cridat amb un argument de bloc ja alliberat" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: cridat amb un argument bloc no assignat" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underflow detectat; mh_nbytes fora del domini" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: les mides inicial i final del fragment difereixen" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: cridat amb un argument de bloc no assignat" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underflow detectat: mh_nbytes fora del domini" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: les mides inicial i final del fragment difereixen" #: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" -msgstr "register_alloc: la taula alloc està plena amb FIND_ALLOC?\n" +msgstr "register_alloc: la taula «alloc» està plena de «FIND_ALLOC»?\n" #: lib/malloc/table.c:200 #, c-format @@ -1408,22 +1414,22 @@ msgstr "%s: la ubicació remota no és vàlida" msgid "network operations not supported" msgstr "les operacions de xarxa no estan suportades" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: no s'ha pogut canviar el local (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: no s'ha pogut canviar el local (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: no s'ha pogut canviar el local (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: no s'ha pogut canviar el local (%s): %s" @@ -1439,163 +1445,166 @@ msgstr "Teniu correu nou a $_" #: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" -msgstr "El correu de %s s'ha llegit\n" +msgstr "El correu a %s ha estat llegit\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "error de sintaxi: fa falta una expressió aritmètica" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" -msgstr "error de sintaxi: `;' inesperat" +msgstr "error de sintaxi: «;» inesperat" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" -msgstr "error de sintaxi: `((%s))'" +msgstr "error de sintaxi: «((%s))»" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipus d'instrucció erroni %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "document literal a la línia %d delimitat per EOF (volia `%s')" +msgstr "document literal a la línia %d delimitat per EOF (volia «%s»)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" -msgstr "make_redirection: instrucció de redirecció `%d' fora del domini" +msgstr "make_redirection: instrucció de redirecció «%d» fora del domini" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) excedeix «SIZE_MAX» (%lu): línia " +"truncada" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" -msgstr "s'ha excedit el nombre màxim de documents literals" +msgstr "excedit el nombre màxim de documents literals" # "echo $(echo" en un script -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "EOF inesperat mentre es cercava un `%c'" +msgstr "EOF inesperat mentre es cercava «%c»" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" -msgstr "EOF inesperat mentre es cercava `]]'" +msgstr "EOF inesperat mentre es cercava «]]»" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" -msgstr "error de sintaxi a l'expressió condicional: element `%s' inesperat" +msgstr "error de sintaxi a l'expressió condicional: element «%s» inesperat" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "error de sintaxi a l'expressió condicional" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "element `%s' inesperat, s'esperava `)'" +msgstr "element «%s» inesperat, s'esperava «)»" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" -msgstr "s'esperava `)'" +msgstr "s'esperava «)»" -#: parse.y:4529 +# [[ -d ]] +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "argument `%s' inesperat a l'operador unari condicional" +msgstr "argument «%s» inesperat a un operador unari condicional" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" -msgstr "argument inesperat a l'operador unari condicional" +msgstr "argument inesperat a un operador unari condicional" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "element `%s' inesperat, s'esperava un operador binari condicional" +msgstr "element «%s» inesperat, s'esperava un operador binari condicional" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "s'esperava un operador binari condicional" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "argument inesperat `%s' a un operador binari condicional" +msgstr "argument inesperat «%s» a un operador binari condicional" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "argument inesperat a un operador binari condicional" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "element `%c' inesperat en una ordre condicional" +msgstr "element «%c» inesperat en una ordre condicional" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "element `%s' inesperat en una ordre condicional" +msgstr "element «%s» inesperat en una ordre condicional" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" -msgstr "element `%d' inesperat en una ordre condicional" +msgstr "element %d inesperat en una ordre condicional" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "error de sintaxi a prop de l'element inesperat `%s'" +msgstr "error de sintaxi a prop de l'element inesperat «%s»" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" -msgstr "error de sintaxi a prop de `%s'" +msgstr "error de sintaxi a prop de «%s»" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "error de sintaxi: final de fitxer inesperat" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "error de sintaxi" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" -msgstr "Useu \"%s\" per a deixar l'intèrpret.\n" +msgstr "Useu \"%s\" per a abandonar l'intèrpret.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" -msgstr "EOF inesperat mentre es buscava un `)'" +msgstr "EOF inesperat mentre es cercava un «)»" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" -msgstr "completion: la funció `%s' no s'ha trobat" +msgstr "completion: la funció «%s» no s'ha trobat" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: possible reintent cíclic" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" -msgstr "progcomp_insert: %s: el paràmetre COMPSPEC és NUL" +msgstr "progcomp_insert: %s: el paràmetre «COMPSPEC» és NUL" #: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" -msgstr "print_command: el connector `%d' és erroni" +msgstr "print_command: el connector «%d» és erroni" #: print_cmd.c:375 #, c-format @@ -1611,144 +1620,148 @@ msgstr "xtrace_set: el punter de fitxer és NUL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" -msgstr "cprintf: `%c': el caràcter de format no és vàlid" +msgstr "cprintf: «%c»: el caràcter de format no és vàlid" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "descriptor de fitxer fora del domini" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirecció ambigua" # opció noclobber -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: no es pot escriure sobre un fitxer existent" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricció: no podeu redirigir la sortida" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "no s'ha pogut crear el fitxer temporal per a un document literal: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: no és possible assignar un fd a una variable" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port no està suportat si no hi ha xarxa" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "error de redirecció: no es pot duplicar l'fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" -msgstr "no s'ha trobat el directori /tmp, sisplau creeu-lo!" +msgstr "no s'ha trobat el directori /tmp, sis-plau creeu-lo!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp ha de ser un nom de directori vàlid" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: l'opció no és vàlida" -#: shell.c:1282 -#, fuzzy, c-format +#: shell.c:1299 +#, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "no s'ha pogut restablir el mode nodelay per a l'fd %d" +msgstr "no s'ha pogut establir l'uid com a %d: uid effectiu %d" -#: shell.c:1289 -#, fuzzy, c-format +#: shell.c:1306 +#, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "no s'ha pogut restablir el mode nodelay per a l'fd %d" +msgstr "no s'ha pogut establir el gid com a %d: gid effectiu %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "no es pot iniciar el depurador; mode de depuració desactivat" -#: shell.c:1566 -#, fuzzy, c-format +#: shell.c:1608 +#, c-format msgid "%s: Is a directory" -msgstr "%s: és un directori" +msgstr "%s: És un directori" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "No teniu nom!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versió %s-(%s)\n" # -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -"Sintaxi:\t%s [opció GNU llarga] [opció] ...\n" -"\t\t%s [opció GNU llarga] [opció] fitxer-script ...\n" +"Sintaxi: %s [opció GNU llarga] [opció] ...\n" +" %s [opció GNU llarga] [opció] fitxer-script ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Opcions GNU llargues:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Opcions de l'intèrpret:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD, o -c ordre, o bé -O opció_intèrpret\t(només invocació)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s, o bé -o opció\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -"Feu `%s -c \"help set\"' per a informació sobre les opcions de l'intèrpret.\n" +"Feu «%s -c \"help set\"» per a informació sobre les opcions de l'intèrpret.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" -msgstr "Feu `%s -c help' per a obtenir informació sobre les ordres internes.\n" +msgstr "Feu «%s -c help» per a obtenir informació sobre les ordres internes.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" -msgstr "Feu servir l'ordre `bashbug' per a comunicar `bugs'.\n" +msgstr "Feu servir l'ordre «bashbug» per a informar de «bugs».\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "pàgina web de bash: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "Ajuda general per a programari GNU: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: l'operació no és vàlida" @@ -1780,11 +1793,11 @@ msgstr "Traçat/trampa BPT" #: siglist.c:75 msgid "ABORT instruction" -msgstr "Instrucció ABORT" +msgstr "Instrucció «ABORT»" #: siglist.c:79 msgid "EMT instruction" -msgstr "Instrucció EMT" +msgstr "Instrucció «EMT»" #: siglist.c:83 msgid "Floating point exception" @@ -1808,11 +1821,11 @@ msgstr "Crida de sistema errònia" #: siglist.c:103 msgid "Broken pipe" -msgstr "Canalització trencada" +msgstr "Canonada trencada" #: siglist.c:107 msgid "Alarm clock" -msgstr "Alarma de rellotge" +msgstr "Alarma" #: siglist.c:111 msgid "Terminated" @@ -1864,7 +1877,7 @@ msgstr "Alarma (perfil)" #: siglist.c:167 msgid "Window changed" -msgstr "Variació de la finestra" +msgstr "Canvi de finestra" #: siglist.c:171 msgid "Record lock" @@ -1880,7 +1893,7 @@ msgstr "Senyal d'usuari 2" #: siglist.c:183 msgid "HFT input data pending" -msgstr "Dades d'entrada HFT pendents" +msgstr "Dades HFT d'entrada pendents" #: siglist.c:187 msgid "power failure imminent" @@ -1924,105 +1937,109 @@ msgid "Unknown Signal #%d" msgstr "Senyal Desconegut #%d" # missatge similar a subst.c:75XX -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "substitució errònia: falta un `%s' a %s" +msgstr "substitució errònia: falta un «%s» a %s" # foo[1]=(1 2 3) -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: no és possible assignar llistes a l'element d'un vector" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" -msgstr "no s'ha pogut crear la canalització per a la substitució de procés" +msgstr "no s'ha pogut crear la canonada per a la substitució de procés" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "no s'ha pogut crear el fill per a la substitució de procés" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" -msgstr "no s'ha pogut obrir la canalització %s amb permís de lectura" +msgstr "no s'ha pogut obrir la canonada %s per a lectura" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" -msgstr "no s'ha pogut obrir la canalització %s per a escriure-hi" +msgstr "no s'ha pogut obrir la canonada %s per a escriptura" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" -msgstr "no s'ha pogut duplicar la canalització %s com a fd %d" +msgstr "no s'ha pogut duplicar la canonada %s com a fd %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "subtitució errònia: no hi ha \"`\" final a %s" +msgstr "substitució d'ordre: s'ignora un octet nul en l'entrada" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" -msgstr "no s'ha pogut crear la canalització per a la substitució d'ordre" +msgstr "no s'ha pogut crear la canonada per a la substitució d'ordre" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "no s'ha pogut crear un fill per a la substitució d'ordre" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "command_substitute: no s'ha pogut duplicar la canalització com a fd 1" +msgstr "command_substitute: no s'ha pogut duplicar la canonada com a fd 1" # buscar context -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: el nom de la variable referenciada no és vàlid" -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format -msgid "%s: bad substitution" -msgstr "%s: substitució errònia" - -#: subst.c:6800 -#, fuzzy, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: el nombre de línies no és vàlid" +msgstr "%s: expansió indirecta no vàlida" -#: subst.c:6807 -#, fuzzy, c-format +#: subst.c:6840 subst.c:6987 +#, c-format msgid "%s: invalid variable name" -msgstr "`%s': el nom de l'àlies no és valid" +msgstr "%s: nom de variable no vàlid" + +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: paràmetre nul o no definit" -#: subst.c:6854 +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: paràmetre nul o no definit" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expressió de subcadena < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substitució errònia" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: no és possible assignar d'aquesta manera" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" -msgstr "en futures versions s'evaluarà com a substitució aritmètica" +msgstr "en futures versions de bash s'avaluarà com a substitució aritmètica" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "subtitució errònia: no hi ha \"`\" final a %s" +msgstr "subtitució errònia: falta un caràcter «`» final a %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "cap coincidència: %s" @@ -2038,131 +2055,136 @@ msgstr "%s: s'esperava una expressió amb enters" #: test.c:265 msgid "`)' expected" -msgstr "s'esperava `)'" +msgstr "s'esperava «)»" #: test.c:267 #, c-format msgid "`)' expected, found %s" -msgstr "s'esperava `)', trobat %s" +msgstr "s'esperava «)», s'ha trobat %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: s'esperava un operador unari" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: s'esperava un operador binari" -#: test.c:869 +#: test.c:875 msgid "missing `]'" -msgstr "falta un `]'" +msgstr "falta un «]»" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" -msgstr "el nombre de senyal no és vàlid" +msgstr "el número de senyal no és vàlid" + +#: trap.c:320 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: excedit el nombre màxim d'avaluacions imbricades (%d)" # internal warning -#: trap.c:387 +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" -msgstr "" +msgstr "run_pending_traps: valor incorrecte a trap_list[%d]: %p" # internal warning -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: senyal erroni %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" -msgstr "error en importar la definició de funció de `%s'" +msgstr "error en importar la definició de funció de «%s»" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "el nivell de l'intèrpret (%d) és massa elevat, es restableix a 1" # error intern -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: no és possible assignar un valor a la variable" # buscar context -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: el nom de la variable referenciada no és vàlid" +msgstr "%s: assignació numèrica a una variable referència" # error intern -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" -msgstr "%s: el paràmetre exportstr és nul" +msgstr "el paràmetre «exportstr» de la variable %s és nul" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" -msgstr "el caràcter %d en el paràmetre exportstr de %s no és vàlid" +msgstr "el caràcter %d en el paràmetre «exportstr» de %s no és vàlid" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" -msgstr "falta un `=' en el paràmetre exportstr de %s" +msgstr "falta un «=» en el paràmetre «exportstr» de %s" # error intern -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" # error intern -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "" # error intern -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" # error intern -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: no s'ha pogut obrir com a FITXER" # error intern -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: el valor de compatibilitat és fora del domini" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2013 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2170,7 +2192,7 @@ msgid "" "html>\n" msgstr "" "Llicència GPLv3+: GNU GPL versió 3 o posterior\n" -" \n" +" \n" #: version.c:86 version2.c:86 #, c-format @@ -2184,24 +2206,24 @@ msgstr "" #: version.c:92 version2.c:92 msgid "There is NO WARRANTY, to the extent permitted by law." -msgstr "No hi ha CAP GARANTIA, fins a l'extrem permès per la llei." +msgstr "No té CAP GARANTIA, fins a l'extrem permès per la llei." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: no s'han pogut assignar %lu octets (%lu octets assignats)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: no s'han pogut assignar %lu octets" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: no s'han pogut assignar %lu octets (%lu octets assignats)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: no s'han pogut assignar %lu octets" @@ -2258,9 +2280,8 @@ msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [nom[=valor] ...]" #: builtins.c:80 -#, fuzzy msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] nom[=valor] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] nom[=valor] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2304,11 +2325,11 @@ msgstr "fc [-e editor] [-lnr] [primer] [últim] o fc -s [pat=sub] [ordre]" #: builtins.c:109 msgid "fg [job_spec]" -msgstr "fg [tasca]" +msgstr "fg [feina]" #: builtins.c:113 msgid "bg [job_spec ...]" -msgstr "bg [tasca ...]" +msgstr "bg [feina ...]" #: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" @@ -2328,19 +2349,18 @@ msgstr "" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "jobs [-lnprs] [tasca ...] o jobs -x ordre [args]" +msgstr "jobs [-lnprs] [feina ...] o jobs -x ordre [args]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [tasca ...]" +msgstr "disown [-h] [-ar] [feina ... | pid ...]" #: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" -"kill [-s senyal | -n númsenyal | -senyal] pid | tasca ... o kill -l [senyal]" +"kill [-s senyal | -n númsenyal | -senyal] pid | feina ... o kill -l [senyal]" #: builtins.c:136 msgid "let arg [arg ...]" @@ -2407,16 +2427,16 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nom [nom ...]" #: builtins.c:171 -#, fuzzy msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [límit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [límit]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2437,7 +2457,7 @@ msgstr "select NOM [in PARAULES ... ;] do ORDRES; done" #: builtins.c:190 msgid "time [-p] pipeline" -msgstr "time [-p] canalització" +msgstr "time [-p] canonada" #: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" @@ -2472,7 +2492,7 @@ msgstr "{ ORDRES ; }" #: builtins.c:206 msgid "job_spec [&]" -msgstr "tasca [&]" +msgstr "feina [&]" #: builtins.c:208 msgid "(( expression ))" @@ -2484,7 +2504,7 @@ msgstr "[[ expressió ]]" #: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "variables - Noms i significat d'algunes variables de l'intèrpret" +msgstr "variables - Nom i significat d'algunes variables de l'intèrpret" #: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" @@ -2507,8 +2527,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [arguments]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2516,37 +2537,36 @@ msgstr "" "llista] [-F funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [nom ...]" #: builtins.c:235 -#, fuzzy msgid "" "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -"compgen [-abcdefgjksuv] [-o opció] [-A acció] [-G patró] [-W llista] [-F " -"funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [paraula]" +"compgen [-abcdefgjksuv] [-o opció] [-A acció] [-G patró] [-W paraules]\n" +"[-F funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [paraula]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o opció] [-DE] [nom ...]" #: builtins.c:242 -#, fuzzy msgid "" "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" msgstr "" -"mapfile [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C callback] [-c " -"quàntum] [vector]" +"mapfile [-d delim] [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C " +"callback] [-c quàntum] [vector]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C callback] [-c " "quàntum] [vector]" #: builtins.c:256 -#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2567,23 +2587,21 @@ msgid "" msgstr "" "Defineix o mostra àlies.\n" "\n" -" Sense arguments, `alias' mostra la llista d'àlies definits, en forma de\n" -" `alias NOM=VALOR' a la sortida estàndard.\n" +" Sense arguments «alias» mostra la llista d'àlies definits, en format\n" +" «alias NOM=VALOR», a la sortida estàndard.\n" "\n" " Altrament, defineix un àlies per a cada NOM per al qual existeix un\n" " VALOR. Un espai al final de VALOR fa que la paraula següent sigui\n" -" susceptible de ser substituïda per un àlies quan s'expandeix l'àlies.\n" +" susceptible de ser substituïda per un àlies quan s'expandeix aquest\n" +" àlies.\n" "\n" " Opcions:\n" -" -p Mostra tots els àlies definits en un format reutilitzable\n" +" -p Mostra tots els àlies definits en format reutilitzable\n" "\n" " Estat de sortida:\n" -" alias torna cert, excepte si heu proporcionat un NOM per al qual no " -"s'ha\n" -" definit cap àlies." +" alias torna cert, excepte si NOM no correspon a cap àlies definit." #: builtins.c:278 -#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" @@ -2592,15 +2610,14 @@ msgid "" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -"Esborra cada NOM de la llista d'àlies definits.\n" +"Esborra tots els NOMs de la llista d'àlies definits.\n" "\n" " Opcions:\n" " -a esborra totes les definicions d'àlies.\n" "\n" -" Retorna èxit excepte si NOM no és un àlies existent." +" Torna cert, excepte si NOM no és un àlies existent." #: builtins.c:291 -#, fuzzy msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2641,16 +2658,15 @@ msgid "" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" -"Defineix vincles de tecla i variables Readline.\n" +"Estableix vincles de tecla i variables Readline.\n" "\n" " Vincula una seqüència de tecles a una funció o macro Readline, o bé\n" -" defineix una variable Readline. La sintaxi dels arguments no-opcions " -"és\n" -" la mateixa que la del fixer ~/.inputrc, però s'ha de passar com a un\n" +" estableix una variable Readline. La sintaxi dels arguments no-opcions\n" +" és la mateixa que en el fitxer ~/.inputrc, però ha de consistir en un\n" " únic argument: per exemple, bind '\"\\C-x\\C-r\": re-read-init-file'.\n" "\n" " Opcions:\n" -" -m mapa Usa `mapa' com a mapa de tecles mentre duri aquesta\n" +" -m mapa Usa MAPA com a mapa de tecles mentre duri aquesta\n" " ordre. Els noms de mapes acceptables són emacs, emacs-\n" " standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-" "command,\n" @@ -2660,24 +2676,22 @@ msgstr "" " -p Mostra les funcions i els vincles en un format que es pot\n" " reutilitzar com a entrada.\n" " -S Mostra les seqüències de tecles que invoquen macros i els\n" -" seus respectius valors.\n" +" seus valors respectius.\n" " -s Mostra les seqüències de tecles que invoquen macros i els\n" -" seus respectius valors en un format que es pot " +" seus valors respectius en un format que es pot " "reutilitzar\n" " com a entrada.\n" " -V Mostra els noms de les variables i els seus valors.\n" " -v Mostra els noms de les variables i els seus respectius\n" " valors en un format que es pot reutilitzar com a entrada.\n" -" -q nom Consulta quines tecles invoquen la funció especificada.\n" -" -u nom Desvincula les tecles vinculades a la funció " +" -q funció Consulta quines tecles invoquen la funció especificada.\n" +" -u funció Desvincula les tecles vinculades a la funció " "especificada.\n" -" -r tecles Elimina els vincles associats a TECLES.\n" -" -f fitxer Llegeix els vincles de tecla desats a FITXER.\n" +" -r tecles Elimina el vincle associat a TECLES.\n" +" -f fitxer Obté els vincles de tecles de FITXER.\n" " -x tecles:ordre Fa que s'executi ORDRE quan es prem TECLES.\n" -" -X Mostra les seqüències de tecla vinculades amb l'opció -x " -"i\n" -" les ordres associades, en un format reutilitzable com a\n" -" entrada.\n" +" -X Mostra les tecles amb les respectives ordres vinculades\n" +" amb l'opció -x, en un format reutilitzable com a entrada.\n" "\n" " Estat de sortida:\n" " bind torna 0 excepte si passeu una opció no reconeguda o es produeix\n" @@ -2722,6 +2736,7 @@ msgstr "" " L'estat de sortida és 0 excepte si N és més petit que 1." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2732,7 +2747,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Executa ordres internes.\n" "\n" @@ -2764,19 +2779,18 @@ msgid "" msgstr "" "Retorna el context de la subrutina actual.\n" "\n" -" Sense EXPR, torna \"$linia $nomfitxer\". Amb EXPR, torna \"$linia\n" +" Sense EXPR, torna \"$línia $nomfitxer\". Amb EXPR, torna \"$línia\n" " $subrutina $nomfitxer\"; aquesta informació addicional es pot utilitzar\n" " per a proporcionar un traçat de la pila.\n" "\n" -" El valor de EXPR indica quants frames retrocedir des de l'actual; el\n" -" frame superior és el 0.\n" +" El valor de EXPR indica quants «frames» retrocedir des de l'actual; el\n" +" «frame» superior és el 0.\n" "\n" " Estat de sortida:\n" " Retorna 0 excepte si l'intèrpret no està executant una funció o si EXPR\n" " no és una expressió vàlida." #: builtins.c:387 -#, fuzzy msgid "" "Change the shell working directory.\n" " \n" @@ -2827,38 +2841,38 @@ msgstr "" "\n" " La variable CDPATH defineix els camins de cerca per al directori que\n" " conté DIR. Es poden especificar camins alternatius separats per dos\n" -" punts (:). Un nom de directori nul és el mateix que el directori\n" -" actual. Si DIR comença amb una barra, aleshores no s'usa CDPATH. Si " -"no\n" -" es troba el directori, i l'opció de l'intèrpret `cdable_vars' està\n" -" activada, llavors s'interpreta la paraula com un nom de variable. Si " -"la\n" -" variable especificada té algun valor, llavors aquest valor s'usa en " -"lloc\n" +" punts (:). Un nom de directori nul s'interpreta com al directori\n" +" actual. Si DIR comença amb una barra, aleshores no s'usa CDPATH.\n" +"\n" +" Si no es troba el directori, i l'opció de l'intèrpret «cdable_vars» està\n" +" activada, aleshores la paraula s'interpreta com a un nom de variable.\n" +" Si la variable especificada té algun valor, aquest valor s'usa en lloc\n" " de DIR.\n" "\n" " Opcions:\n" -" -L obliga a seguir els enllaços simbòlics: resol els enllaços\n" -" simbòlics que conté DIR després de processar `..'\n" -" -P usa l'estructura de directoris física i no segueix els\n" -" possibles enllaços simbòlics: resol els enllaços simbòlics\n" -" que conté DIR abans de processar `..'\n" -" -e amb l'opció -P, si el directori de treball actual no es pot\n" -" determinar amb èxit, surt amb un estat diferent de zero\n" -" -@ en sistemes que ho suporten, presenta un fitxer amb " -"atributs\n" -" estesos com un directori que conté els atributs del fitxer\n" -"\n" -" Per defecte, se segueixen els enllaços simbòlics, com si s'especifiqués\n" -" l'opció `-L'. `..' es processa eliminant el component del camí\n" -" immediatament previ fins a la primera barra o fins al principi de DIR.\n" +" -L força el seguiment d'enllaços simbòlics: resol els enllaços\n" +" simbòlics que conté DIR després de processar «..»\n" +" -P usa l'estructura de directoris física sense seguir " +"possibles\n" +" enllaços simbòlics: resol els enllaços simbòlics que conté\n" +" DIR abans de processar «..»\n" +" -e amb l'opció -P, si no es pot determinar el directori de\n" +" treball actual amb èxit, surt amb un estat diferent de zero\n" +" -@ en sistemes que ho suporten, presenta fitxers amb atributs\n" +" estesos com a directoris que contenen els atributs del\n" +" fitxer\n" +"\n" +" Per defecte, se segueixen els enllaços simbòlics, com si " +"especifiquéssiu\n" +" l'opció «-L». El component «..» es processa eliminant el component del\n" +" camí immediatament previ fins a la primera barra o fins al principi de\n" +" DIR.\n" "\n" " Estat de sortida:\n" " Torna 0 si s'ha canviat de directori, i si $PWD s'ha establert de forma\n" " satisfactòria quan s'utilitza -P; altrament un valor diferent de zero." #: builtins.c:425 -#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" @@ -2880,7 +2894,7 @@ msgstr "" " treball actual\n" " -P mostra el directori físic, sense cap enllaç simbòlic\n" "\n" -" Per defecte, `pwd' es comporta com si haguéssiu especificat `-L'.\n" +" Per defecte, «pwd» es comporta com si haguéssiu especificat «-L».\n" "\n" " Estat de sortida:\n" " Torna 0 excepte si heu especificat una opció no vàlida o no es pot\n" @@ -2927,7 +2941,6 @@ msgstr "" " Sempre falla." #: builtins.c:471 -#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2949,14 +2962,14 @@ msgstr "" "\n" " Executa ORDRE amb ARGS sense cercar funcions de l'intèrpret amb aquest\n" " nom, o bé mostra informació sobre l'ORDRE especificada. Es pot\n" -" utilitzar per a invocar ordres des del disc, quan existeix una funció\n" +" utilitzar per a invocar programes en el disc, quan existeix una funció\n" " amb el mateix nom.\n" "\n" " Opcions:\n" " -p usa el valor per defecte de la variable PATH que garanteix\n" " trobar totes les utilitats estàndards\n" " -v mostra una descripció de l'ORDRE similar a la que mostra\n" -" l'ordre `type'\n" +" l'ordre «type»\n" " -V mostra una descripció més detallada per a cada ORDRE\n" "\n" " Estat de sortida:\n" @@ -2983,11 +2996,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3012,33 +3025,35 @@ msgstr "" " -f només té en compte noms i definicions de funcions\n" " -F només mostra noms de funcions (a part del número de línia i\n" " el nom del fitxer, en mode de depuració)\n" +" -g crea variables globals quan s'utilitza dins d'una funció,\n" +" altrament s'ignora\n" " -p mostra els atributs i el valor de cada NOM\n" "\n" " Opcions que estableixen atributs:\n" " -a per a fer NOMs vectors indexats (si estan suportats)\n" " -A per a fer NOMs vectors associatius (si estan suportats)\n" -" -i per a assignar l'atribut `nombre enter' a NOMs\n" -" -l per a passar NOMs a minúscules en l'assignació\n" -" -r per a fer NOMs de només-lectura\n" -" -t per a assignar l'atribut `traça' a NOMs\n" -" -u per a passar NOMs a majúscules en l'assignació\n" +" -i per a assignar l'atribut de nombre enter a NOMs\n" +" -l per a convertir NOMs a minúscules en l'assignació\n" +" -n per a fer NOM una referència a la variable que té per nom\n" +" el seu valor\n" +" -r per a fer NOMs variables de només lectura\n" +" -t per a assignar l'atribut «traça» a NOMs\n" +" -u per a convertir NOMs a majúscules en l'assignació\n" " -x per a exportar NOMs\n" "\n" -" Si feu servir `+' en lloc de `-', elimina l'atribut.\n" +" Si feu servir «+» en lloc de «-», elimina l'atribut.\n" "\n" -" Les variables que tenen l'atribut `nombre enter' s'avaluen\n" -" aritmèticament (vegeu l'ordre `let') quan s'assigna un valor a la\n" +" Les variables que tenen l'atribut de nombre enter s'avaluen\n" +" aritmèticament (vegeu l'ordre «let») quan s'assigna un valor a la\n" " variable.\n" "\n" -" Quan s'usa en una funció, `declare' converteix NOMs en variables " -"locals,\n" -" igual que l'ordre `local'.\n" +" Quan s'usa en una funció, «declare» converteix NOMs en variables locals,\n" +" igual que l'ordre «local». L'opció «-g» inhabilita aquest comportament.\n" "\n" " Estat de sortida:\n" " Torna èxit, excepte si rep una opció invàlida o es produeix un error." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3046,7 +3061,7 @@ msgid "" msgstr "" "Assigna valors i atributs a variables.\n" "\n" -" Obsolet. Vegeu `help declare'." +" Sinònim de «declare». Vegeu «help declare»." # help local #: builtins.c:538 @@ -3067,7 +3082,7 @@ msgstr "" "\n" " Crea una variable local anomenada NOM i li assigna VALOR. OPCIÓ pot " "ser\n" -" qualsevol opció que `declare' admeti.\n" +" qualsevol opció que «declare» admeti.\n" "\n" " Les variables locals només es poden utilitzar dins d'una funció; només\n" " són visibles a dins de la funció on són definides i dins de les " @@ -3108,6 +3123,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3122,8 +3143,7 @@ msgstr "" " -e activa la interpretació de seqüències d'escapada\n" " -E desactiva la interpretació de seqüències d'escapada\n" "\n" -" `echo' interpreta els següents caràcters escapats per una barra " -"inversa:\n" +" «echo» interpreta els següents caràcters escapats amb una barra inversa:\n" " \\a alerta (campana)\n" " \\b retrocés\n" " \\c suprimeix tota sortida ulterior\n" @@ -3144,7 +3164,7 @@ msgstr "" " Estat de sortida:\n" " Torna èxit, tret que es produeixi un error d'escriptura." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3167,7 +3187,7 @@ msgstr "" " Torna èxit, tret que es produeixi un error d'escriptura." # help enable -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3207,7 +3227,7 @@ msgstr "" "internes\n" " que es troben inhabilitades\n" " -p mostra la llista en format reutilitzable\n" -" -s mostra només les ordres internes `especials' Posix\n" +" -s mostra només les ordres internes «especials» Posix\n" "\n" " Opcions per a controlar l'enllaçat dinàmic:\n" " -f carrega l'ordre interna NOM, de l'objecte compartit FITXER\n" @@ -3215,13 +3235,13 @@ msgstr "" "\n" " Sense opcions, habilita cada un dels NOMs.\n" "\n" -" Per a utilitzar el `test' que es troba al $PATH en lloc de la versió\n" -" interna de l'intèrpret, feu `enable -n test'.\n" +" Per a utilitzar el «test» que es troba al $PATH en lloc de la versió\n" +" interna de l'intèrpret, feu «enable -n test».\n" "\n" " Estat de sortida:\n" " Torna èxit, excepte si NOM no és una ordre interna o té lloc un error." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3234,13 +3254,14 @@ msgid "" msgstr "" "Executa els arguments com una ordre.\n" "\n" -" Combina els ARGs en una única cadena, utilitza el resultat com a input\n" -" per a l'intèrpret, i executa les ordres resultants.\n" +" Combina ARGs en una única cadena, utilitza el resultat com a entrada " +"per\n" +" a l'intèrpret i executa les ordres resultants.\n" "\n" " Estat de sortida:\n" " Torna l'estat de sortida de l'ordre, o èxit si l'ordre és nul·la." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3280,10 +3301,10 @@ msgid "" " Returns success if an option is found; fails if the end of options is\n" " encountered or an error occurs." msgstr "" -"Interpreta arguments d'opcions.\n" +"Interpreta arguments que representen opcions.\n" "\n" -" getopts l'utilitzen els procediments de l'intèrpret per a interpretar\n" -" els paràmetres posicionals com a opcions.\n" +" getopts és utilitzat per les utilitats de bash per a interpretar els\n" +" paràmetres posicionals com a opcions.\n" "\n" " CADENA conté les lletres de les opcions a reconèixer; si una lletra va\n" " seguida de dos punts, l'opció requereix un argument, que s'ha de " @@ -3322,8 +3343,7 @@ msgstr "" "les\n" " opcions o si es produeix un error." -#: builtins.c:688 -#, fuzzy +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3345,7 +3365,7 @@ msgid "" " Returns success unless COMMAND is not found or a redirection error " "occurs." msgstr "" -"Substitueix l'intèrpret per l'ordre especificada.\n" +"Substitueix el procés de l'intèrpret per l'ordre especificada.\n" "\n" " Executa ORDRE, substituint aquest intèrpret pel programa especificat.\n" " Es passen ARGUMENTS a l'ORDRE com a arguments. Si no especifiqueu cap\n" @@ -3354,17 +3374,17 @@ msgstr "" " Opcions:\n" " -a nom passa NOM a ORDRE com a argument número zero\n" " -c executa ORDRE en un entorn buit\n" -" -t passa un guionet (-) a ORDRE com a argument número zero\n" +" -t passa un guionet a ORDRE com a argument número zero\n" "\n" " Si l'ordre no es pot executar i la sessió és no-interactiva, " "l'intèrpret\n" -" surt, excepte si l'opció `execfail' està habilitada.\n" +" surt, excepte si l'opció «execfail» està habilitada.\n" "\n" " Estat de sortida:\n" " Torna èxit, tret que ORDRE no es trobi o es produeixi un error de\n" " redirecció." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3376,7 +3396,7 @@ msgstr "" " Surt de l'intèrpret amb estat N. Si ometeu N, l'estat de sortida és el\n" " de l'última ordre executada." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3386,11 +3406,12 @@ msgid "" msgstr "" "Abandona una sessió d'entrada.\n" "\n" -" Abandona una sessió d'entrada amb estat de sortida N. Torna un error si\n" -" no s'està executant en una sessió d'entrada." +" Abandona una sessió d'entrada amb estat de sortida N. Torna un error " +"si\n" +" no s'està executant en una sessió d'entrada." # help fc (hi ha un bug a la cadena original) -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3421,34 +3442,31 @@ msgid "" msgstr "" "Mostra o executa ordres de l'historial.\n" "\n" -" fc s'utilitza per a mostrar o editar i reexecutar ordres de " -"l'historial.\n" -" PRIMER i ÚLTIM poden ser números que defineixen un interval, o PRIMER\n" -" pot ser una cadena, que significa l'ordre més recent que comença amb\n" -" aquesta cadena.\n" +" fc s'utilitza per a mostrar o editar i re-executar ordres de\n" +" l'historial. PRIMER i ÚLTIM poden ser números que defineixen un\n" +" interval, o PRIMER pot ser una cadena, que significa l'ordre més recent\n" +" que comença amb aquesta cadena.\n" "\n" " Opcions:\n" " -e EDITOR selecciona quin editor utilitzar. Per defecte és el valor\n" " de la variable FCEDIT, després el valor de EDITOR, i\n" " finalment vi\n" " -l\tmostra les línies en lloc d'editar-les\n" -" -n\tomet els nombres de línia a l'hora de mostrar la llista\n" +" -n\tomet els números de línia a l'hora de mostrar la llista\n" " -r\tinverteix l'ordre de les línies (més recents primer)\n" "\n" -" Amb el format `fc -s [pat=sub ...] [ordre]', ORDRE es reexecuta després\n" +" Amb el format «fc -s [pat=sub ...] [ordre]», ORDRE es re-executa després\n" " d'haver fet la substitució PAT=SUB.\n" "\n" -" Un àlies útil és r='fc -s', de manera que en escriure `r cc' s'executa\n" -" l'última ordre que comença amb `cc' i en escriure `r' reexecuta " -"l'última\n" -" ordre.\n" +" Un àlies útil és r='fc -s', de manera que «r cc» executa l'última ordre\n" +" que comença per «cc» i «r» re-executa l'última ordre.\n" "\n" " Estat de sortida:\n" " Torna èxit o l'estat de l'última ordre executada; diferent de zero si " "es\n" " produeix un error." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3459,11 +3477,10 @@ msgid "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -"Porta una tasca al primer pla.\n" +"Porta una feina al primer pla.\n" "\n" -" Mou la tasca identificada per TASCA al primer pla, convertint-la en la\n" -" tasca corrent. Si TASCA no es dóna, s'utilitza la tasca que " -"l'intèrpret\n" +" Mou la feina identificada per FEINA al primer pla, convertint-la en la\n" +" feina corrent. Si ometeu FEINA, s'utilitza la feina que l'intèrpret\n" " considera com a corrent.\n" "\n" " Estat de sortida:\n" @@ -3471,7 +3488,7 @@ msgstr "" "un\n" " error." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3484,19 +3501,18 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" -"Mou tasques al segon pla.\n" +"Mou feines al segon pla.\n" "\n" -" Mou la tasca identificada per TASCA al segon pla, com si s'haguessin\n" -" iniciat amb un `&'. Si TASCA no es dóna, s'utilitza la tasca que\n" -" l'intèrpret considera com a tasca corrent.\n" +" Mou la feina identificada per FEINA al segon pla, com si s'hagués\n" +" iniciat amb un «&». Si ometeu FEINA, s'utilitza la feina que\n" +" l'intèrpret considera com a feina corrent.\n" "\n" -" Estat de sortida:\n" -" Torna èxit, excepte si el control de tasques no està habilitat o es\n" -" produeix un error." +" Estat de sortida:\n" +" Torna èxit, excepte si el control de feines no està habilitat o es\n" +" produeix un error." # help hash -#: builtins.c:787 -#, fuzzy +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3522,26 +3538,26 @@ msgstr "" "Recorda o mostra la ubicació de programes.\n" "\n" " Determina i recorda la ubicació completa de cada NOM d'ordre. Sense\n" -" arguments, es mostra informació sobre les ordres que s'han recordat.\n" +" arguments, mostra informació sobre les ordres que s'han recordat.\n" "\n" " Opcions:\n" -" -d oblida la ubicació recordada de cada NOM\n" +" -d oblida la ubicació recordada per a cada NOM\n" " -l utilitza un format que es pot reciclar com a " "entrada\n" -" -p ubicació utilitza UBICACIÓ com a ubicació sencera de NOM\n" +" -p ubicació utilitza UBICACIÓ com a ubicació completa per a NOM\n" " -r oblida totes les ubicacions recordades\n" -" -t mostra la ubicació recordada de cada NOM, precedint\n" -" cada ubicació pel corresponent NOM, si hi ha\n" -" múltiples NOMs.\n" +" -t mostra la ubicació recordada per a cada NOM,\n" +" precedint cada ubicació amb el corresponent NOM, si\n" +" hi ha múltiples NOMs.\n" " Arguments:\n" " NOM Es busca NOM en el $PATH i s'afegeix a la llista\n" " d'ordres recordades.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si NOM no es troba o es passa una opció invàlida." +" Torna èxit, excepte si NOM no es troba o passeu una opció invàlida." # help help -#: builtins.c:812 +#: builtins.c:816 #, fuzzy msgid "" "Display information about builtin commands.\n" @@ -3557,7 +3573,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3570,17 +3586,17 @@ msgstr "" " mostra una llista amb temes d'ajuda.\n" "\n" " Opcions:\n" -" -d mostra una desprició curta de cada tema\n" -" -m mostra la forma d'ús en format de pseudopàgina de manual\n" +" -d mostra una descripció curta de cada tema\n" +" -m mostra la forma d'ús en format de pseudo-pàgina de manual\n" " -s mostra una sinopsi de cada tema corresponent a PATRÓ\n" "\n" " Arguments:\n" -" PATRÓ patró que especifica un tema d'ajuda\n" +" PATRÓ Patró que especifica un tema d'ajuda\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si PATRÓ no es troba o es passa una opció invàlida." +" Torna èxit, excepte si PATRÓ no es troba o passeu una opció invàlida." -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3590,7 +3606,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3616,40 +3633,38 @@ msgid "" msgstr "" "Mostra o manipula l'historial.\n" "\n" -" Mostra l'historial amb números de línia, prefixant cada entrada\n" -" modificada amb un `*'. Amb l'argument N, només mostra les N últimes\n" +" Mostra l'historial amb números de línia, indicant les entrades\n" +" modificades amb «*». Amb l'argument N, només mostra les N últimes\n" " entrades.\n" "\n" " Opcions:\n" -" -c esboora totes les entrades de la llista de l'historial\n" +" -c esborra la llista d'entrades\n" " -d offset esborra l'entrada de l'historial a la posició OFFSET\n" -" -a afegeix les línies de la sessió actual al fitxer de\n" -" l'historial\n" -" -n llegeix el fitxer de l'historial\n" +" -a afegeix la sessió actual al fitxer de l'historial\n" +" -n llegeix el fitxer de l'historial i afegeix les línies\n" +" prèviament no llegides a la llista\n" " -r llegeix el fitxer de l'historial i n'afegeix el contingut\n" -" a la llista\n" -" -w escriu l'historial actual al fitxer de l'historial i\n" -" l'afegeix a la llista\n" +" sencer a la llista\n" +" -w escriu l'historial actual al fitxer de l'historial\n" " -p expandeix cada ARG i mostra el resultat, sense desar-lo\n" " a la llista\n" " -s afegeix ARGs a la llista com una única entrada\n" "\n" -" Si s'indica un nom de FITXER, s'utilitza com a fitxer d'historial. En\n" -" cas contrar, si $HISTFILE té algun valor, s'utilitza aquest, si no\n" -" ~/.bash_history.\n" +" Si passeu un nom de FITXER, s'utilitza com a fitxer d'historial. En " +"cas\n" +" contrari, si $HISTFILE té algun valor, s'utilitza aquest, si no\n" +" s'utilitza ~/.bash_history.\n" "\n" " Si la variable $HISTTIMEFORMAT està definida i no és nul·la, el seu\n" " valor s'utilitza com a cadena de format strftime(3) per a mostrar " "l'hora\n" " associada a cada entrada de l'historial. En cas contrari no es mostra\n" -" cap hora.\n" +" informació horària.\n" "\n" " Estat de sortida: \n" -" Torna èxit excepte si es passa una opció invàlida o es produeix un\n" -" error." +" Torna èxit, excepte si passeu una opció invàlida o es produeix un error." -#: builtins.c:872 -#, fuzzy +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3672,31 +3687,32 @@ msgid "" " Returns success unless an invalid option is given or an error occurs.\n" " If -x is used, returns the exit status of COMMAND." msgstr "" -"Mostra l'estat de tasques.\n" +"Mostra l'estat de feines.\n" "\n" -" Mostra les tasques actives. Si s'especifica TASCA, es restringeix la\n" -" sortida a la tasca especificada. Sense opcions, es mostra l'estat de\n" -" totes les tasques actives.\n" +" Mostra les feines actives. Si especifiqueu FEINA, es restringeix la\n" +" sortida a la feina especificada. Sense opcions, mostra l'estat de " +"totes\n" +" les feines actives.\n" "\n" " Opcions:\n" " -l mostra els IDs de procés a més de la informació normal\n" -" -n mostra només les tasques l'estat de les quals ha\n" +" -n mostra només les feines l'estat de les quals ha\n" " canviat des de l'última notificació\n" " -p mostra només els IDs de procés\n" -" -r restringeix la sortida a les tasques en execució\n" -" -s restringeix la sortida a les tasques aturades\n" +" -r restringeix la sortida a les feines en execució\n" +" -s restringeix la sortida a les feines aturades\n" "\n" " Amb l'opció -x, s'executa ORDRE, després de substituir totes les\n" -" especificacions de tasca per l'ID del procés del líder del grup de\n" -" processos d'aquella tasca, a ARGS.\n" +" especificacions de feina per l'ID del procés del líder del grup de\n" +" processos d'aquella feina, a ARGS.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si es passa una opció invàlida o es produeix un\n" -" error. Si s'utilitza -x, torna l'estat de sortida d'ORDRE." +" Torna èxit, excepte si passeu una opció invàlida o es produeix un " +"error.\n" +" Si utilitzeu -x, torna l'estat de sortida d'ORDRE." # help disown -#: builtins.c:899 -#, fuzzy +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3712,23 +3728,22 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -"Suprimeix tasques de l'intèrpret en funcionament.\n" +"Deslliga feines vinculades a l'intèrpret actual.\n" "\n" -" Suprimeix TASCA de la taula de tasques actives. Sense TASCA,\n" -" s'interpreta que es refereix a la tasca corrent.\n" +" Suprimeix FEINA de la taula de feines actives. Si no especifiqueu\n" +" FEINA, s'interpreta que us referiu a la feina corrent.\n" "\n" " Opcions:\n" -" -q suprimeix totes les tasques si no s'especifica TASCA\n" -" -h\tmarca TASCA per a no enviar-li un senyal SIGHUP si\n" +" -a suprimeix totes les feines si no especifiqueu FEINA\n" +" -h\tmarca FEINA per a no enviar-li un senyal SIGHUP si\n" " l'intèrpret rep un SIGHUP\n" -" -r suprimeix totes les tasques en execució\n" +" -r suprimeix totes les feines en execució\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si es passa una opció o TASCA invàlida." +" Torna èxit, excepte si passeu una opció o FEINA invàlida." # help kill -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3750,30 +3765,30 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" -"Envia un senyal a una tasca.\n" +"Envia un senyal a una feina.\n" "\n" " Envia el senyal SENYAL o NÚMSENYAL al procés corresponent a PID o " -"TASCA.\n" -" Si no s'especifica cap senyal, s'envia un SIGTERM.\n" +"FEINA.\n" +" Si no especifiqueu cap senyal, s'envia un SIGTERM.\n" "\n" " Opcions:\n" " -s senyal SENYAL és el nom d'un senyal\n" " -n númsenyal\tNÚMSENYAL és el número d'un senyal\n" " -l mostra els noms dels senyals; si hi ha arguments \n" -" després de `-l' s'interpreten com a números de\n" +" després de «-l» s'interpreten com a números de\n" " senyals, els noms dels quals s'han de mostrar\n" +" -L sinònim de -l\n" "\n" " kill és una ordre interna per dues raons: perquè això permet usar IDs " "de\n" -" tasca en lloc de IDs de procés, i perquè permet matar processos encara\n" +" feina en lloc de IDs de procés, i perquè permet matar processos encara\n" " que arribeu al límit de processos que se us permet crear.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si es passa una opció no vàlida o es produeix un\n" -" error." +" Torna èxit, excepte si passeu una opció invàlida o es produeix un error." # help let -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3819,27 +3834,27 @@ msgid "" msgstr "" "Avalua expressions aritmètiques.\n" "\n" -" Avalua ARG com a expressió aritmètica. Les operacions es fan amb " -"enters\n" -" de llargada fixa sense comprovacions de desbordament, tot i que les\n" +" Avalua cada ARG com a expressió aritmètica. Les operacions es fan amb\n" +" enters d'amplada fixa sense comprovacions de desbordament, tot i que " +"les\n" " divisions per 0 es detecten i es marquen com a error. La següent " "llista\n" -" mostra els operadors, agrupats per nivells d'igual precedència. Els\n" -" nivells estan llistats en ordre descendent de precedència.\n" +" mostra els operadors, agrupats en nivells d'igual precedència. Els\n" +" nivells apareixen en ordre descendent de precedència.\n" "\n" " \tid++, id--\tpostincrement, postdecrement\n" " \t++id, --id\tpreincrement, predecrement\n" " \t-, +\t\tnegatiu, positiu unaris\n" -" \t!, ~\t\tnegació lògica i binària\n" +" \t!, ~\t\tnegació lògica i a nivell de bits\n" " \t**\t\texponenciació\n" " \t*, /, %\t\tmultiplicació, divisió, residu\n" " \t+, -\t\taddició, subtracció\n" -" \t<<, >>\t\tdesplaçament binari a l'esquerra i a la dreta\n" +" \t<<, >>\t\tdesplaçament de bits a l'esquerra i a la dreta\n" " \t<=, >=, <, >\tcomparació\n" " \t==, !=\t\tigualtat, desigualtat\n" -" \t&\t\tAND binari\n" -" \t^\t\tXOR binari\n" -" \t|\t\tOR binari\n" +" \t&\t\tAND a nivell de bits\n" +" \t^\t\tXOR a nivell de bits\n" +" \t|\t\tOR a nivell de bits\n" " \t&&\t\tAND lògic\n" " \t||\t\tOR lògic\n" " \texpr ? expr : expr\n" @@ -3848,19 +3863,19 @@ msgstr "" " \t+=, -=, <<=, >>=,\n" " \t&=, ^=, |=\tassignació\n" "\n" -" S'admeten variables com a operands. El nom de la variable se\n" -" substitueix pel seu valor (convertit en enter d'amplada fixa). La\n" -" variable no cal que tingui l'atribut d'enter perquè pugui aparèixer en\n" -" una expressió aritmètica.\n" +" S'admeten variables de l'intèrpret com a operands. El nom de la\n" +" variable se substitueix pel seu valor (convertit en enter d'amplada\n" +" fixa). No cal que la variable tingui l'atribut d'enter perquè pugui\n" +" aparèixer en una expressió aritmètica.\n" "\n" -" Els operadors s'avaluen per ordre de precedència. Les subexpressions\n" +" Els operadors s'avaluen en ordre de precedència. Les subexpressions\n" " entre parèntesis s'avaluen primer, independentment de les regles de\n" " precedència anteriors.\n" "\n" " Estat de sortida:\n" -" Si l'últim ARG s'avalua en 0, let torna 1; altrament torna 0." +" Si l'avaluació de l'últim ARG és 0, let torna 1; altrament torna 0." -#: builtins.c:987 +#: builtins.c:992 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3882,7 +3897,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3912,34 +3927,34 @@ msgid "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -"Llegeix una línia a l'entrada estàndard i la separa en camps.\n" +"Llegeix una línia a l'entrada estàndard i la divideix en camps.\n" "\n" -" Llegeix una sola línia a l'entrada estàndard, o al descriptor de\n" -" fitxer FD si s'especifica l'opció -u. La línia se separa en camps,\n" -" segons les mateixes regles que en la separació de paraules, i la " -"primera\n" +" Llegeix una sola línia a l'entrada estàndard, o al descriptor de fitxer\n" +" FD si especifiqueu l'opció -u. La línia es divideix en camps, segons\n" +" les mateixes regles que en la separació de paraules, i la primera\n" " paraula s'assigna al primer NOM, la segona al segon NOM, etc., mentre\n" " que les paraules sobrants, si n'hi ha, s'assignen a l'últim NOM. Només\n" " es reconeixen com a delimitadors de paraula els caràcters que conté la\n" " variable $IFS.\n" "\n" -" Si no s'especifica cap NOM, llavors la línia llegida es desa a la\n" +" Si no especifiqueu cap NOM, en aquest cas la línia llegida es desa a la\n" " variable REPLY.\n" "\n" " Opcions:\n" " -a vector\tassigna les paraules llegides a VECTOR, de forma " "seqüencial\n" " començant des de l'índex número 0.\n" -" -d delim\tsegueix llegint fins a trobar el caràcter DELIM, en lloc de\n" +" -d delim\tcontinue llegint fins a trobar el caràcter DELIM, en lloc " +"de\n" " fins a trobar un salt de línia\n" " -e\tsi la sessió és interactiva, utilitza Readline per a obtenir\n" " la línia\n" " -i text\tUtilitza TEXT com a text inicial per a Readline\n" -" -n núm\ttorna després de llegir exactament NÚM caràcters en lloc\n" -" d'esperar fins a trobar un salt de línia, però tenint en\n" -" compte el delimitador si s'han llegit menys de NÚM " -"caràcters\n" -" abans del delimitador\n" +" -n núm\ttorna després de llegir exactament NÚM caràcters, o quan es\n" +" trobi el delimitador si apareix abans de NÚM caràcters\n" +" -N núm torna només després de llegir exactament NÚM caràcters,\n" +" excepte si es troba EOF o s'esgota el temps d'espera,\n" +" i ignora qualsevol delimitador\n" " -p introd mostra la cadena INTROD sense cap caràcter de salt de línia\n" " afegit, abans d'intentar llegir res\n" " -r prohibeix escapar caràcters amb una barra invertida\n" @@ -3949,24 +3964,23 @@ msgstr "" " aconseguit llegir una línia sencera. Per defecte, el límit\n" " de temps és el valor de la variable TMOUT. TEMPS pot ser " "un\n" -" número decimal. Si TEMPS és 0, read torna immediatament,\n" -" sense intentar llegir cap dada, i torna èxit només si hi ha\n" -" dades disponibles en el descriptor de fitxer FD " -"especificat.\n" -" L'estat de sortida és més gran que 128 si s'arriba al temps\n" -" límit\n" -" -u fd llegeix dades al descriptor de fitxer FD, en lloc de\n" +" número amb decimals. Si TEMPS és 0, read torna\n" +" immediatament, sense intentar llegir cap dada, i torna èxit\n" +" només si hi ha dades disponibles en el descriptor de fitxer\n" +" FD especificat. Un estat de sortida més gran que 128 " +"indica\n" +" que s'ha esgotat el temps d'espera.\n" +" -u fd llegeix dades al descriptor de fitxer FD, en lloc de a\n" " l'entrada estàndard.\n" "\n" " Estat de sortida:\n" -" El codi de retorn és zero, excepte si es troba final-de-fitxer, " -"s'arriba\n" -" al límit de temps (en aquest cas, és major que 128), es produeix un\n" -" error d'assignació de variable, o s'especifica un descriptor de fitxer\n" -" invàlid amb l'opció -u." +" El codi de retorn és zero, excepte si es troba EOF (final de fitxer),\n" +" s'arriba al límit de temps (en aquest cas, és major que 128), es\n" +" produeix un error d'assignació de variable, o si heu especificat un\n" +" descriptor de fitxer invàlid amb l'opció -u." # help return -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3979,16 +3993,14 @@ msgid "" msgstr "" "Torna des d'una funció de l'intèrpret.\n" "\n" -" Provoca que una funció o script executat amb `source' torni amb el " -"valor\n" +" Provoca que una funció o script executat amb «source» torni amb el valor\n" " de retorn especificat per N. Si s'omet N, l'estat de retorn és aquell\n" " de l'última ordre executada dins la funció o script.\n" "\n" " Estat de sortida:\n" " Torna N, o fallada si l'intèrpret no està executant cap funció o script." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4073,26 +4085,24 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" -"Activa o desactiva opcions de l'intèrpret i estableix paràmetres\n" -"posicionals.\n" +"Estableix opcions de l'intèrpret i paràmetres posicionals.\n" "\n" -" Modifica el valor dels atributs de l'intèrpret i dels paràmetres\n" -" posicionals, o mostra els noms i valors de les variables de " -"l'intèrpret.\n" +" Modifica el valor d'atributs de l'intèrpret i de paràmetres " +"posicionals,\n" +" o mostra els noms i valors de les variables de l'intèrpret.\n" "\n" " Opcions:\n" " -a Exporta les variables que es creïn o es modifiquin.\n" -" -b Notifica la finalització de tasques de forma immediata.\n" +" -b Notifica immediatament la finalització de feines.\n" " -e Surt immediatament si una ordre acaba amb estat diferent de zero.\n" -" -f Deshabilita la generació de noms de fitxers (globbing).\n" -" -h Recorda la ubicació de les ordres a mesura que s'utilitzen.\n" -" -k Col·loca tots els arguments que són assignacions a l'entorn de\n" -" l'ordre que s'executa, i no només aquells que precedeixen el nom\n" -" de l'ordre.\n" -" -m Activa el control de tasques.\n" +" -f Deshabilita la generació de noms de fitxers («globbing»).\n" +" -h Recorda la ubicació de les ordres que s'executen.\n" +" -k Afegeix tots els arguments en forma d'assignació a l'entorn de\n" +" l'ordre, no només aquells que precedeixen el nom de l'ordre.\n" +" -m Activa la gestió de feines.\n" " -n Llegeix ordres, però sense executar-les.\n" -" -o nom-opció\n" -" Defineix la variable corresponent a nom-opció:\n" +" -o opció\n" +" Estableix la variable corresponent a OPCIÓ:\n" " allexport igual que -a\n" " braceexpand igual que -B\n" " emacs utilitza una interfície d'edició estil emacs\n" @@ -4104,7 +4114,7 @@ msgstr "" " history activa l'historial\n" " ignoreeof l'intèrpret no surt en cas de trobar EOF\n" " interactive-comments\n" -" permet comentaris a les ordres interactives\n" +" permet comentaris en ordres interactives\n" " keyword igual que -k\n" " monitor igual que -m\n" " noclobber igual que -C\n" @@ -4115,21 +4125,20 @@ msgstr "" " nounset igual que -u\n" " onecmd igual que -t\n" " physical igual que -P\n" -" pipefail el valor retornat per una canalització és " -"l'estat\n" -" de l'última ordre que ha acabat amb estat\n" -" no-zero, o zero si cap ordre ha acabat amb estat\n" -" diferent de zero\n" -" posix ajusta el comportament de bash al dictaminat per\n" -" l'estàndard Posix\n" +" pipefail el valor retornat per una canonada és l'estat de\n" +" l'última ordre que ha acabat amb estat no-zero,\n" +" o zero si cap ordre ha acabat amb estat diferent\n" +" de zero\n" +" posix ajusta el comportament de bash a l'estàndard " +"Posix\n" " privileged igual que -p\n" " verbose igual que -v\n" " vi usa una interfície d'edició estil vi\n" " xtrace igual que -x\n" -" -p S'activa automàticament sempre que les ids efectiva i real de\n" -" l'usuari no coincideixin. Omet processar el fitxer $ENV i\n" -" la importació de funcions. Si desactiveu aquesta opció, els\n" -" valors de l'uid i gid reals s'assignen a l'uid i gid efectius.\n" +" -p S'activa automàticament sempre que els ids efectiu i real de\n" +" l'usuari no coincideixin. No processa el fitxer $ENV ni importa\n" +" funcions. Si desactiveu aquesta opció, els valors de l'uid i gid\n" +" reals s'assignen a l'uid i gid efectius.\n" " -t Surt després de llegir i executar una única ordre.\n" " -u Tracta les variables no definides com a error, en substitucions.\n" " -v Escriu les línies de l'entrada a la sortida.\n" @@ -4138,32 +4147,30 @@ msgstr "" " -C Prohibeix la sobrescriptura de fitxers ordinaris mitjançant\n" " redireccions.\n" " -E Intercepta senyals ERR també durant l'execució de funcions.\n" -" -H Habilita l'expansió d'exclamacions (!). Aquesta opció està " -"activa\n" -" per defecte si la sessió és interactiva.\n" +" -H Activa la substitució d'elements de l'historial. Aquesta opció\n" +" està activa per defecte si la sessió és interactiva.\n" " -P Omet la resolució d'enllaços simbòlics a l'hora d'executar ordres\n" -" que canvien el directori corrent tals com cd.\n" -" -T Intercepta senyals DEBUG també durant l'execució de funcions.\n" -" -- Assigna els arguments restants als respectius paràmetres\n" -" posicionals. Si no queda cap argument restant, suprimeix els\n" -" paràmetres posicionals.\n" -" - Assigna els arguments restants als respectius paràmetres\n" -" posicionals. Desactiva les opcions -x i -v.\n" -"\n" -" Un signe + en lloc de - serveix per a desactivar l'opció. Els " -"arguments\n" -" que controlen les opcions també es poden utilitzar a l'hora d'invocar\n" -" l'intèrpret. El conjunt d'opcions actives es pot trobar a $-. La " -"resta\n" -" d'arguments són paràmetres posicionals i s'assignen per ordre a $1, $2,\n" -" ... $n. Si no s'especifica cap ARG, es mostren totes les variables\n" -" definides.\n" +" que canvien el directori corrent, tals com cd.\n" +" -T Intercepta senyals DEBUG i RETURN també durant l'execució de\n" +" funcions.\n" +"\n" +" -- Assigna els arguments restants a paràmetres posicionals. Si no\n" +" queda cap argument, suprimeix els paràmetres posicionals.\n" +" \n" +" - Assigna els arguments restants a paràmetres posicionals.\n" +" Desactiva les opcions -x i -v.\n" +"\n" +" Un signe + en lloc de - desactiva l'opció corresponent. Els arguments\n" +" que controlen les opcions es poden utilitzar a l'hora d'invocar\n" +" l'intèrpret. El conjunt d'opcions actives en aquest intèrpret es pot\n" +" trobar a $-. La resta d'arguments són paràmetres posicionals i\n" +" s'assignen per ordre a $1, $2, ... $n. Si no especifiqueu cap ARG, es\n" +" mostren totes les variables definides.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si s'especifica una opció no vàlida." +" Torna èxit, excepte si especifiqueu una opció no vàlida." -#: builtins.c:1132 -#, fuzzy +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4184,26 +4191,27 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -"Suprimeix el valor i els atributs de variables i funcions.\n" +"Suprimeix el valor i atributs de variables i funcions.\n" "\n" " Per a cada NOM, suprimeix la corresponent variable o funció.\n" "\n" " Opcions:\n" -" -f tracta NOM com una funció\n" -" -v tracta NOM com una variable\n" -" -n tracta NOM com una variable referència i suprimeix la\n" -" pròpia variable, en lloc de la variable a què es refereix\n" +" -f interpreta NOM com a funció\n" +" -v interpreta NOM com a variable\n" +" -n interpreta NOM com a referència a una altra variable, i\n" +" suprimeix aquesta variable, en lloc de la variable a què\n" +" es refereix\n" "\n" " Sense opcions, primer intenta suprimir una variable, i si això falla\n" " intenta suprimir una funció.\n" "\n" -" Algunes variables no poden ser suprimides; per ex., vegeu `readonly'.\n" +" Algunes variables no poden ser suprimides; per ex., vegeu «readonly».\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si s'especifica una opció no vàlida o NOM és una\n" -" variable o funció de només-lectura." +" Torna èxit, excepte si especifiqueu una opció no vàlida o NOM és una\n" +" variable o funció de només lectura." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4229,18 +4237,17 @@ msgstr "" "\n" " Opcions:\n" " -f tracta NOM com a funció\n" -" -n suprimeix la propietat d'exportació de NOM\n" +" -n suprimeix la propietat d'exportació per a NOM\n" " -p mostra una llista amb totes les variables i funcions\n" " exportades\n" " \n" -" L'argument `--' atura el processament de més opcions.\n" +" L'argument «--» atura el processament de més opcions.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si s'especifica una opció no vàlida o NOM no és\n" +" Torna èxit, excepte si especifiqueu una opció no vàlida o NOM no és\n" " vàlid." -#: builtins.c:1173 -#, fuzzy +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4260,28 +4267,27 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -"Marca variables com no modificables.\n" +"Marca variables com a no modificables.\n" "\n" -" Marca cada NOM com a variable o funció de només-lectura; els valors\n" -" d'aquests NOMs no podran ser modificats en assignacions subseqüents. " -"Si\n" +" Marca cada NOM com a variable o funció de només lectura; els valors\n" +" d'aquests NOMs es poden modificar en assignacions subseqüents. Si\n" " especifiqueu VALOR, s'assigna VALOR a la variable o funció abans de\n" -" marcar-la com a només-lectura.\n" +" marcar-la com a només lectura.\n" "\n" " Opcions:\n" -" -a opera sobre vectors indexats\n" -" -A opera sobre vectors associatius\n" -" -f opera sobre funcions\n" -" -p mostra una llista amb totes les variables i funcions\n" -" \t\tde només-lectura\n" +" -a limita la sortida a vectors indexats\n" +" -A limita la sortida a vectors associatius\n" +" -f limita la sortida a funcions\n" +" -p mostra una llista amb totes les variables o funcions,\n" +" depenent de si heu especificat l'opció -f, de només lectura\n" "\n" -" L'argument `--' atura el processament de més opcions.\n" +" L'argument «--» atura el processament de més opcions.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si s'especifica una opció no vàlida o NOM no és\n" +" Torna èxit, excepte si especifiqueu una opció no vàlida o NOM no és\n" " vàlid." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4300,7 +4306,7 @@ msgstr "" " Estat de sortida:\n" " Torna èxit, excepte si N és negatiu o més gran que $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4317,14 +4323,14 @@ msgstr "" "\n" " Llegeix les ordres que hi ha a FITXER i les executa a l'intèrpret\n" " actual. Les entrades a $PATH s'utilitzen per a localitzar el directori\n" -" que conté FITXER. Si s'especifica qualsevol ARG, aquests arguments es\n" +" que conté FITXER. Si especifiqueu qualsevol ARG, aquests arguments es\n" " converteixen en paràmetres posicionals quan s'executa FITXER.\n" "\n" " Estat de sortida:\n" " Torna l'estat de l'última ordre a FITXER executada; falla si FITXER no\n" " es pot llegir." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4339,18 +4345,17 @@ msgid "" msgstr "" "Suspèn l'execució de l'intèrpret.\n" "\n" -" Suspèn l'execució d'aquest intèrpret fins a rebre un senyal SIGCONT.\n" -" Si no es força, les sessions d'entrada no es poden suspendre.\n" +" Suspèn l'execució d'aquest intèrpret fins a rebre un senyal SIGCONT. " +"Si\n" +" no es força, les sessions d'entrada no es poden suspendre.\n" "\n" -" Opcions:\n" -" -f força la suspensió, encara que sigui una sessió d'entrada\n" +" Opcions:\n" +" -f força la suspensió, encara que sigui una sessió d'entrada\n" "\n" -" Estat de sortida:\n" -" Torna èxit, excepte si no hi ha control de tasques o es produeix un\n" -" error." +" Estat de sortida:\n" +" Torna èxit, excepte si no hi ha control de feines o es produeix un error." -#: builtins.c:1254 -#, fuzzy +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4437,11 +4442,11 @@ msgstr "" " Surt amb estat 0 (cert) o 1 (fals) en funció de l'avaluació d'EXPR. " "Les\n" " expressions poden ser unàries o binàries. Les expressions unàries\n" -" s'utilitzen sovint per a determinar l'estat de fitxers. També hi ha\n" -" operadors de cadenes, i operadors de comparació numèrica.\n" +" s'utilitzen sovint per a determinar l'estat de fitxers. També podeu\n" +" utilitzar operadors de cadenes, i operadors de comparació numèrica.\n" "\n" -" El comportament de test depèn del nombre d'arguments. Podeu trobar-ne\n" -" una especificació completa a la plana del manual de bash.\n" +" El comportament de test depèn del nombre d'arguments. Podeu trobar\n" +" l'especificació completa a la plana del manual de bash.\n" "\n" " Operadors de fitxer:\n" "\n" @@ -4451,27 +4456,27 @@ msgstr "" " -d FITXER Cert si el fitxer és un directori.\n" " -e FITXER Cert si el fitxer existeix.\n" " -f FITXER Cert si el fitxer existeix i és ordinari.\n" -" -g FITXER Cert si el bit set-group-id està activat.\n" +" -g FITXER Cert si el bit «set-group-id» està activat.\n" " -h FITXER Cert si el fitxer és un enllaç simbòlic.\n" " -L FITXER Cert si el fitxer és un enllaç simbòlic.\n" -" -k FITXER Cert si el bit sticky està activat.\n" -" -p FITXER Cert si el fitxer és una canalització.\n" +" -k FITXER Cert si el bit «sticky» està activat.\n" +" -p FITXER Cert si el fitxer és una canonada.\n" " -r FITXER Cert si teniu permís per a llegir el fitxer.\n" " -s FITXER Cert si el fitxer existeix i no està buit.\n" -" -S FITXER Cert si el fitxer és un socket.\n" +" -S FITXER Cert si el fitxer és un «socket».\n" " -t FD Cert si FD està obert i es refereix a un terminal.\n" -" -u FITXER Cert si el bit set-user-id està activat.\n" +" -u FITXER Cert si el bit «set-user-id» està activat.\n" " -w FITXER Cert si teniu permís per a escriure al fitxer.\n" " -x FITXER Cert si teniu permís per a executar el fitxer.\n" -" -O FITXER Cert si el fitxer és propietat vostra.\n" -" -G FITXER Cert si el fitxer és propietat del vostre grup.\n" +" -O FITXER Cert si el vostre usuari és propietari del fitxer.\n" +" -G FITXER Cert si el vostre grup és propietari del fitxer.\n" " -N FITXER Cert si el fitxer ha canviat des de l'última lectura.\n" "\n" " FITXER1 -nt FITXER2 Cert si fitxer1 és més nou que fitxer2 (segons " "la\n" " data de modificació).\n" "\n" -" FITXER1 -ot FITXER2 Cert si fitxer1 és més vell que fitxer2.\n" +" FITXER1 -ot FITXER2 Cert si fitxer1 és més antic que fitxer2.\n" "\n" " FITXER1 -ef FITXER2 Cert si fitxer1 és un enllaç dur a fitxer2.\n" "\n" @@ -4495,24 +4500,24 @@ msgstr "" " -o OPCIÓ Cert si l'opció de l'intèrpret està activada.\n" " -v VAR Cert si la variable VAR està definida.\n" " -R VAR Cert si la variable VAR està definida i és una \n" -" variable referència.\n" +" referència a una altra variable.\n" " ! EXPR Cert si expr és fals.\n" " EXPR1 -a EXPR2 Cert si tant expr1 com expr2 són cert.\n" -" EXPR1 -o EXPR2 Cert si qualsevol de expr1 o expr2 són cert.\n" +" EXPR1 -o EXPR2 Cert si qualsevol de expr1 o expr2 són certes.\n" "\n" " arg1 OP arg2 Tests aritmètics. OP és un de -eq, -ne, -lt, -le, -" "gt,\n" " o -ge.\n" "\n" -" Els operadors aritmètics binaris tornen cert si ARG1 és igual,\n" -" no igual, menys que, menys que o igual, més que, o més que o igual\n" -" que ARG2, respectivament.\n" +" Els operadors aritmètics binaris tornen cert si ARG1 és igual, no\n" +" igual, més petit que, més petit que o igual, més gran que, o més gran\n" +" que o igual que ARG2, respectivament.\n" "\n" " Estat de sortida:\n" " Torna èxit si EXPR s'avalua com a cert; falla si EXPR s'avalua com a\n" -" fals o s'especifica un argument no vàlid." +" fals o si especifiqueu un argument no vàlid." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4522,10 +4527,10 @@ msgstr "" "Avalua una expressió condicional.\n" "\n" " Aquesta ordre interna és un sinònim de \"test\", amb la diferència que\n" -" l'últim argument ha de ser un signe `]' que tanqui el `[' inicial." +" l'últim argument ha de ser un signe «]» que tanqui el «[» inicial." # help times -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4545,7 +4550,7 @@ msgstr "" " Estat de sortida:\n" " Sempre reïx." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4590,46 +4595,41 @@ msgid "" msgstr "" "Intercepta senyals i altres esdeveniments.\n" "\n" -" Defineix i activa controladors de senyal que s'executen quan\n" -" l'intèrpret rep senyals o en altres circumstàncies.\n" -"\n" -" ARG és una ordre que es llegeix i s'executa quan l'intèrpret rep el\n" -" senyal especificat per SENYAL. Si no hi ha ARG (i s'especifica un\n" -" únic SENYAL) o és `-', llavors cada senyal es restableix al seu valor\n" -" original. Si ARG és una cadena nul·la, llavors SENYAL és ignorat per\n" -" l'intèrpret i per tots els programes invocats per l'intèrpret.\n" -"\n" -" Si SENYAL és EXIT (0), ARG s'executa quan l'intèrpret surt. Si " -"SENYAL\n" -" és DEBUG, ARG s'executa abans de cada ordre. Si SENYAL és RETURN, " -"ARG\n" -" s'executa cada cop que una funció o script executat amb l'ordre `.' o\n" -" `source' finalitza l'execució. Si SENYAL és ERR, ARG s'executa en " -"els\n" -" mateixos casos en què una ordre faria sortir l'intèrpret si l'opció -" -"e\n" -" estigués activada.\n" -"\n" -" Si no s'especifica cap argument, trap mostra una llista d'ordres\n" -" associades a cada senyal.\n" -"\n" -" Opcions:\n" -" -l mostra una llista amb els noms dels senyals i els números\n" -" corresponents\n" -" -p\tmostra els controladors de senyal associats a cada SENYAL\n" -"\n" -" Cada SENYAL és o bé un nom de senyal definit al fitxer o " -"bé\n" -" un número de senyal. Els noms de senyal no són sensibles a la\n" -" capitalització i el prefix SIG és opcional. Podeu enviar un senyal a\n" -" l'intèrpret amb l'ordre \"kill -senyal $$\".\n" -"\n" -" Estat de sortida: \n" -" Torna èxit, excepte si algun SENYAL no és vàlid o s'especifica una\n" -" ordre no vàlida." - -#: builtins.c:1393 -#, fuzzy +" Defineix i activa controladors de senyal, que són executats quan\n" +" l'intèrpret rep senyals o en altres circumstàncies.\n" +"\n" +" ARG és una ordre que es llegeix i s'executa quan l'intèrpret rep " +"SENYAL.\n" +" Si ometeu ARG (i especifiqueu un únic SENYAL) o ARG és «-», cada senyal\n" +" és restablert al seu valor original. Si ARG és una cadena nul·la,\n" +" aleshores SENYAL és ignorat per l'intèrpret i per tots els programes\n" +" invocats per l'intèrpret.\n" +"\n" +" Si SENYAL és EXIT (0), ARG s'executa quan l'intèrpret surt. Si SENYAL\n" +" és DEBUG, ARG s'executa abans de cada ordre. Si SENYAL és RETURN, ARG\n" +" s'executa cada cop que una funció o script executat amb l'ordre «.» o\n" +" «source» finalitza l'execució. Si SENYAL és ERR, ARG s'executa en els\n" +" mateixos casos en què una ordre faria sortir l'intèrpret si l'opció -e\n" +" estigués activada.\n" +"\n" +" Si no especifiqueu cap argument, trap mostra una llista d'ordres\n" +" associades a cada senyal.\n" +"\n" +" Opcions:\n" +" -l mostra una llista amb els noms dels senyals i els números\n" +" corresponents\n" +" -p mostra els controladors de senyal associats a cada SENYAL\n" +"\n" +" Cada SENYAL és o bé un nom de senyal definit al fitxer o bé\n" +" un número de senyal. Els noms de senyal no són sensibles a les\n" +" majúscules i el prefix SIG és opcional. Podeu enviar un senyal a\n" +" l'intèrpret amb l'ordre «kill -senyal $$».\n" +"\n" +" Estat de sortida: \n" +" Torna èxit, excepte si algun SENYAL no és vàlid o especifiqueu una\n" +" ordre no vàlida." + +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4660,37 +4660,32 @@ msgid "" msgstr "" "Mostra informació sobre el tipus d'ordre.\n" "\n" -" Indica com seria interpretat NOM si s'utilitzés com a ordre.\n" -"\n" -" Opcions:\n" -" -a mostra totes les ubicacions que contenen un executable\n" -" anomenat NOM; inclou àlies, ordres internes i funcions, si,\n" -" i només si, no s'usa conjuntament amb l'opció `-p'\n" -" -f omet cercar de funcions\n" -" -P força una cerca al PATH per a cada NOM, encara que sigui un\n" -" àlies, ordre interna o funció, i torna el nom del fitxer " -"que\n" -" s'executaria\n" -" -p torna o bé el nom del fitxer que s'executaria, o bé res, si\n" -" `type -t NOM' no hauria indicat `fitxer'.\n" -" -t torna només una paraula, que és o `àlies', o `paraula " -"clau',\n" -" o `funció', o `ordre interna', o `fitxer', o bé `', " -"depenent\n" -" de si NOM és un àlies, una paraula reservada de " -"l'intèrpret,\n" -" una funció, una ordre interna, un fitxer, o no es pot\n" -" trobar, respectivament.\n" -"\n" -" Arguments:\n" -" NOM El nom de l'ordre que s'ha d'interpretar.\n" +" Indica com seria interpretat NOM si s'utilitzés com a ordre.\n" "\n" -" Estat de sortida:\n" -" Torna èxit si es troben tots els NOMs; falla si n'hi ha algun que no\n" -" es pot trobar." +" Opcions:\n" +" -a mostra totes les ubicacions que contenen un executable\n" +" anomenat NOM, incloent àlies, ordres internes i funcions si i\n" +" només si no s'usa conjuntament amb l'opció «-p»\n" +" -f omet la cerca de funcions\n" +" -P força una cerca al PATH per a cada NOM, encara que sigui un\n" +" àlies, ordre interna o funció, i torna el nom del fitxer que\n" +" s'executaria\n" +" -p torna o bé el nom del fitxer que s'executaria, o bé res, si\n" +" «type -t NOM» no indica «fitxer».\n" +" -t torna només una paraula, que és «àlies», «paraula clau»,\n" +" «funció», «ordre interna», «fitxer», o bé «», depenent de si\n" +" NOM és un àlies, una paraula reservada de l'intèrpret, una\n" +" funció, una ordre interna, un fitxer, o no es pot trobar,\n" +" respectivament.\n" +"\n" +" Arguments:\n" +" NOM El nom de l'ordre a interpretar.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit si es troben tots els NOMs; falla si n'hi ha algun que no es\n" +" pot trobar." -#: builtins.c:1424 -#, fuzzy +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4741,22 +4736,24 @@ msgstr "" "Canvia els límits d'utilització de recursos per part de l'intèrpret.\n" "\n" " Permet controlar la quantitat de recursos disponibles per a l'intèrpret\n" -" i per als processos que crea, en els sistemes que admeten tal control.\n" +" d'ordres i per als processos que aquest crea, en els sistemes que\n" +" admeten tal control.\n" "\n" " Opcions:\n" -" -S estableix límits `tous'\n" -" -H estableix límits `durs'\n" +" -S estableix una limitació «tova»\n" +" -H estableix una limitació «dura»\n" " -a\tmostra tots els límits establerts\n" -" -b\tmida màxima dels buffers per a sockets\n" -" -c\tmida màxima dels fitxers `core'\n" +" -b\tmida màxima de la memòria intermèdia per a «sockets»\n" +" -c\tmida màxima dels fitxers de bolcat de memòria\n" " -d\tmida màxima del segment de dades d'un procés\n" -" -e\tprioritat màxima d'un procés (`nice')\n" +" -e\tprioritat màxima d'un procés («nice»)\n" " -f\tmida màxima dels fitxers escrits per l'intèrpret i fills\n" " -i\tnombre màxim de senyals pendents\n" +" -k nombre màxim de cues («kqueue») obertes per a aquest procés\n" " -l\tquantitat màxima de memòria que un procés pot blocar\n" " -m\tmida màxima del conjunt resident (RSS)\n" " -n\tnombre màxim de descriptors de fitxers oberts\n" -" -p\tmida màxima dels buffers per a canalitzacions\n" +" -p\tmida màxima de la memòria intermèdia per a canonades\n" " -q\tnombre màxim d'octets a les cues de missatges POSIX\n" " -r\tprioritat màxima de temps-real\n" " -s\tmida màxima de la pila\n" @@ -4764,16 +4761,16 @@ msgstr "" " -u\tnombre màxim de processos d'usuari\n" " -v\tmida de la memòria virtual\n" " -x\tnombre màxim de fitxers de bloqueig\n" +" -P nombre màxim de pseudoterminals\n" " -T nombre màxim de fils d'execució\n" "\n" " Algunes opcions poden no estar disponibles en algunes plataformes.\n" "\n" -" Si s'especifica un LÍMIT, s'utilitza com a nou valor per al recurs en\n" -" qüestió; els valors especials de LÍMIT són `soft', `hard' i " -"`unlimited',\n" -" que signifiquen límit tou actual, límit dur actual, i sense límit,\n" -" respectivament. En cas contrari, es mostra el valor actual per al\n" -" recurs especificat. Si no s'especifica cap opció, se suposa -f.\n" +" Si especifiqueu un LÍMIT, aquest s'utilitza com a nou valor per al\n" +" recurs indicat; els valors especials de LÍMIT són «soft», «hard» i\n" +" «unlimited», que signifiquen límit tou actual, límit dur actual, i sense\n" +" límit, respectivament. En cas contrari, es mostra el valor actual per\n" +" al recurs especificat. Si no especifiqueu cap opció, se suposa -f.\n" "\n" " Els valors s'indiquen en increments de 1024 octets, excepte en el cas " "de\n" @@ -4781,11 +4778,10 @@ msgstr "" " -u, que és en nombre de processos.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si s'especifica una opció no vàlida o es produeix " -"un\n" +" Torna èxit, tret que especifiqueu una opció invàlida o es produeixi un\n" " error." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4808,7 +4804,7 @@ msgstr "" " mostra el valor actual de la màscara.\n" "\n" " Si MODE comença amb un dígit, s'interpreta com a número octal; en cas\n" -" contrari és una cadena de mode simbòlic com les que accepta chmod(1).\n" +" contrari és una cadena de mode simbòlica com les que accepta chmod(1).\n" "\n" " Opcions:\n" " -p sense MODE, mostra la sortida en un format que es pot\n" @@ -4817,9 +4813,10 @@ msgstr "" " número octal\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si MODE no és vàlid o es passa una opció no vàlida." +" Torna èxit, excepte si MODE no és vàlid o passeu una opció no vàlida." -#: builtins.c:1494 +#: builtins.c:1499 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4827,31 +4824,34 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -"Espera la finalització de tasques i en retorna l'estat de sortida.\n" +"Espera la finalització de feines i en retorna l'estat de sortida.\n" "\n" " Espera que cada procés identificat per un ID, que pot ser l'ID del\n" -" procés o una especificació de tasca, acabi d'executar-se, i en torna\n" -" l'estat de sortida. Si no s'especifica ID, espera que acabin\n" -" d'executar-se tots els processos inferiors, i surt amb estat zero. Si\n" -" ID és una especificació de tasca, espera cada un dels processos a la\n" -" canalització d'aquella tasca.\n" +" procés o una especificació de feina, acabi d'executar-se, i en torna\n" +" l'estat de sortida. Si ometeu ID, espera que acabin d'executar-se tots\n" +" els processos inferiors, i surt amb estat zero. Si ID és una\n" +" especificació de feina, espera cada un dels processos a la canonada\n" +" d'aquella feina.\n" "\n" " Estat de sortida:\n" -" Torna l'estat de sortida de l'últim ID; falla si ID no és vàlid o es\n" -" passa una opció no vàlida." +" Torna l'estat de sortida de l'últim ID; falla si ID no és vàlid o " +"passeu\n" +" una opció no vàlida." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4868,7 +4868,7 @@ msgstr "" "Espera la finalització de processos i en retorna l'estat de sortida.\n" "\n" " Espera que cada procés, identificat per PID, acabi d'executar-se, i en\n" -" mostra l'estat de sortida. Si no s'especifica PID, espera que acabin\n" +" mostra l'estat de sortida. Si no especifiqueu PID, espera que acabin\n" " d'executar-se tots els processos inferiors, i surt amb estat zero. PID\n" " ha de ser un ID de procés.\n" "\n" @@ -4876,7 +4876,7 @@ msgstr "" " Torna l'estat de sortida de l'últim PID; falla si PID no és vàlid o es\n" " passa una opció no vàlida." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4890,16 +4890,15 @@ msgid "" msgstr "" "Executa ordres per a cada element d'una llista.\n" "\n" -" Els bucles `for' executen una seqüència d'ordres per a cada un dels\n" -" elements d'una llista. Si `in PARAULES ...;' s'omet, aleshores se\n" -" suposa `in \"$@\"'. Per a cada element de la llista PARAULES, " -"l'element\n" +" Els bucles «for» executen una seqüència d'ordres per a cada un dels\n" +" elements d'una llista. Si «in PARAULES ...;» s'omet, aleshores se\n" +" suposa «in \"$@\"». Per a cada element de la llista PARAULES, l'element\n" " s'assigna a NOM, i les ORDRES s'executen.\n" "\n" " Estat de sortida:\n" " Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4915,7 +4914,7 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Bucle `for' aritmètic.\n" +"Bucle «for» aritmètic.\n" "\n" " Equivalent a\n" " \t(( EXP1 ))\n" @@ -4931,7 +4930,7 @@ msgstr "" " Estat de sortida:\n" " Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4954,8 +4953,7 @@ msgstr "" "\n" " Les PARAULES s'expandeixen i generen una llista de paraules. Les\n" " paraules expandides s'envien a la sortida d'errors estàndard, cada una\n" -" precedida per un número. Si `in PARAULES' s'omet, se suposa `in \"$@" -"\"'.\n" +" precedida per un número. Si «in PARAULES» s'omet, se suposa «in \"$@\"».\n" " Llavors, es mostra l'introductor PS3 i es llegeix una línia a l'entrada\n" " estàndard. Si la línia correspon amb el número d'alguna de les " "paraules\n" @@ -4964,13 +4962,13 @@ msgstr "" " EOF, l'ordre finalitza. Qualsevol altre valor llegit, fa que s'assigni\n" " el valor nul a NOM. La línia llegida s'assigna a la variable REPLY.\n" " Les ORDRES s'executen després de cada selecció fins a trobar una ordre\n" -" `break'.\n" +" «break».\n" "\n" " Estat de sortida:\n" " Torna l'estat de sortida de l'última ordre executada." # help time -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4985,11 +4983,12 @@ msgid "" " Exit Status:\n" " The return status is the return status of PIPELINE." msgstr "" -"Informa del temps consumit durant l'execució d'una canalització.\n" +"Informa del temps transcorregut durant l'execució d'una canonada.\n" "\n" -" Executa CANALITZACIÓ i mostra un resum del temps real, el temps de CPU\n" -" d'usuari i el temps de CPU de sistema consumit durant l'execució de\n" -" CANALITZACIÓ.\n" +" Executa CANONADA i mostra un resum del temps real, el temps de CPU\n" +" d'usuari i el temps de CPU de sistema transcorregut durant l'execució " +"de\n" +" CANONADA.\n" "\n" " Opcions:\n" " -p mostra el resum de temps en format POSIX portable\n" @@ -4997,9 +4996,9 @@ msgstr "" " El valor de la variable TIMEFORMAT s'utilitza per formatar la sortida.\n" "\n" " Estat de sortida:\n" -" L'estat de sortida és l'estat de sortida de la CANALITZACIÓ." +" L'estat de sortida és l'estat de sortida de la CANONADA." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5013,12 +5012,12 @@ msgstr "" "\n" " Executa ORDRES de forma selectiva en funció de si PARAULA coincideix " "amb\n" -" PATRÓ. El signe `|' serveix per a separar múltiples patrons.\n" +" PATRÓ. El signe «|» serveix per a separar múltiples patrons.\n" "\n" " Estat de sortida:\n" " Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5040,11 +5039,11 @@ msgid "" msgstr "" "Executa ordres en funció d'una condició.\n" "\n" -" Executa la llista `if ORDRES'. Si l'estat de sortida és zero, llavors\n" -" també executa la llista `then ORDRES'. En cas contrari cada una de les\n" -" llistes `elif ORDRES' és executada i en cas d'acabar amb estat de\n" -" sortida zero, també s'executa la corresponent llista `then ORDRES', i\n" -" l'ordre if finalitza. En cas contrari, la llista `else ORDRES'\n" +" Executa la llista «if ORDRES». Si l'estat de sortida és zero, llavors\n" +" també executa la llista «then ORDRES». En cas contrari cada una de les\n" +" llistes «elif ORDRES» és executada i en cas d'acabar amb estat de\n" +" sortida zero, també s'executa la corresponent llista «then ORDRES», i\n" +" l'ordre if finalitza. En cas contrari, la llista «else ORDRES»\n" " s'executa, si és que existeix. L'estat de sortida la construcció\n" " sencera és l'estat de sortida de l'última ordre executada, o zero si " "cap\n" @@ -5053,7 +5052,7 @@ msgstr "" " Estat de sortida:\n" " Torna l'estat de l'última ordre executada." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5066,12 +5065,12 @@ msgstr "" "Executa ordres repetidament mentre es compleixi una condició.\n" "\n" " Expandeix i executa ORDRES repetidament mentre l'última ordre de les\n" -" ORDRES `while' tingui estat de sortida igual a zero.\n" +" «ORDRES while» tingui estat de sortida igual a zero.\n" "\n" " Estat de sortida:\n" " Torna l'estat de l'última ordre executada." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5084,14 +5083,13 @@ msgstr "" "Executa ordres repetidament mentre no es compleixi una condició.\n" "\n" " Expandeix i executa ORDRES repetidament mentre l'última ordre de les\n" -" ORDRES `until' tingui estat de sortida diferent de zero.\n" +" ORDRES «until» tingui estat de sortida diferent de zero.\n" "\n" " Estat de sortida:\n" " Torna l'estat de l'última ordre executada." # help coproc -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5107,14 +5105,14 @@ msgstr "" "\n" " Executa ORDRE de forma asincrònica, amb la sortida estàndard i " "l'entrada\n" -" estàndard de l'ordre connectades via canalització als descriptors de\n" -" fitxer assignats als índexs 0 i 1 del vector NOM a l'intèrpret en\n" -" execució. Per defecte NOM és \"COPROC\".\n" +" estàndard de l'ordre connectades via canonada als descriptors de fitxer\n" +" assignats als índexs 0 i 1 de la variable vector NOM. Per defecte NOM\n" +" és \"COPROC\".\n" "\n" " Estat de sortida:\n" " Torna l'estat de sortida d'ORDRE." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5136,9 +5134,9 @@ msgstr "" " $1...$n, i el nom de la funció es troba a $FUNCNAME.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si NOM és de només-lectura." +" Torna èxit, excepte si NOM és de només lectura." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5156,7 +5154,7 @@ msgstr "" " Estat de sortida:\n" " Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5169,20 +5167,19 @@ msgid "" " Exit Status:\n" " Returns the status of the resumed job." msgstr "" -"Reprèn una tasca i la porta al primer pla.\n" +"Reprèn una feina i la porta al primer pla.\n" "\n" -" Equivalent a utilitzar TASCA com a argument en l'ordre `fg'. Reprèn " -"una\n" -" tasca aturada o en segon pla. TASCA pot ser el nom d'una tasca, o el\n" -" número d'una tasca. Si es troba un `&' després de TASCA, llavors la\n" -" tasca s'envia en un segon pla, com si l'especificació de tasca\n" -" s'utilitzés com a argument en l'ordre `bg'.\n" +" Equivalent a utilitzar FEINA com a argument en l'ordre «fg». Reprèn una\n" +" feina aturada o en segon pla. FEINA pot ser el nom d'una feina, o el\n" +" número d'una feina. Si es troba un «&» després de FEINA, llavors la\n" +" feina s'envia en un segon pla, com si l'especificació de feina\n" +" s'utilitzés com a argument en l'ordre «bg».\n" "\n" " Estat de sortida:\n" " Torna l'estat de sortida de la feina represa." # help '((' -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5201,7 +5198,7 @@ msgstr "" " Si el resultat de l'avaluació és 0, torna 1; altrament torna 0." # help '[[' -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5232,7 +5229,7 @@ msgstr "" "\n" " Torna un estat 0 o 1, depenent del resultat de l'avaluació de\n" " l'expressió condicional EXPRESSIÓ. Les expressions es componen dels\n" -" mateixos elements que en l'ordre interna `test', i es poden combinar\n" +" mateixos elements que en l'ordre interna «test», i es poden combinar\n" " usant els següents operadors.\n" "\n" " ( EXPRESSIÓ ) Torna el valor d'EXPRESSIÓ\n" @@ -5240,11 +5237,10 @@ msgstr "" " EXPR1 && EXPR2 Cert si tant EXPR1 com EXPR2 són cert; si no, fals.\n" " EXPR1 || EXPR2 Cert si EXPR1 o EXPR2 és cert; si no, fals.\n" "\n" -" Quan s'utilitzen els operadors `==' o `!=', el component de la dreta\n" +" Quan s'utilitzen els operadors «==» o «!=», el component de la dreta\n" " s'interpreta com a un patró i es comprova si coincideix amb la cadena " "de\n" -" l'esquerra de l'operador. Quan s'utilitza l'operador `=~', el " -"component\n" +" l'esquerra de l'operador. Quan s'utilitza l'operador «=~», el component\n" " de la dreta de l'operador s'interpreta com a expressió regular i es\n" " comprova si coincideix amb la cadena de l'esquerra de l'operador.\n" "\n" @@ -5254,7 +5250,7 @@ msgstr "" " Estat de sortida:\n" " 0 o 1, depenent del valor d'EXPRESSIÓ." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5307,12 +5303,12 @@ msgid "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" msgstr "" -"Nom i ús de les variables de l'intèrpret habituals.\n" +"Nom i ús de variables de l'intèrpret habituals.\n" "\n" " BASH_VERSION Informació de la versió de Bash.\n" -" CDPATH\t\tLlista de directoris separats per `:' on buscar\n" -" directoris passats com a arguments a `cd'.\n" -" GLOBIGNORE\t\tLlista de patrons separats per `:' que indiquen noms\n" +" CDPATH\t\tLlista de directoris separats per «:» on buscar\n" +" directoris passats com a arguments a «cd».\n" +" GLOBIGNORE\t\tLlista de patrons separats per «:» que indiquen noms\n" " que s'ignoren en fer expansions de noms de fitxer.\n" " HISTFILE\t\tNom del fitxer on es desa l'historial d'ordres.\n" " HISTFILESIZE\tNombre màxim de línies que pot contenir el\n" @@ -5332,41 +5328,42 @@ msgstr "" " MACHTYPE\t\tCadena que descriu el sistema en què corre Bash.\n" " MAILCHECK\t\tAmb quina freqüència, en segons, Bash comprova si hi\n" " ha correu nou.\n" -" MAILPATH\t\tLlista de fitxers separats per `:' que Bash comprova\n" +" MAILPATH\t\tLlista de fitxers separats per «:» que Bash comprova\n" " si tenen correu nou.\n" " OSTYPE\t\tLa versió de Unix en què corre Bash.\n" -" PATH\t\tLlista de directoris separats per `:' on buscar quan\n" +" PATH\t\tLlista de directoris separats per «:» on buscar quan\n" " \t\t\tse cerquen ordres.\n" " PROMPT_COMMAND\tOrdre que s'executa cada cop abans de mostrar\n" " \t\t\tl'introductor de l'intèrpret.\n" " PS1\t\t\tCadena de l'introductor principal.\n" " PS2\t\t\tCadena de l'introductor secundari.\n" " PWD\t\t\tCamí complet cap al directori corrent.\n" -" SHELLOPTS\t\tLlista d'opcions habilitades separades per `:'.\n" +" SHELLOPTS\t\tLlista d'opcions habilitades separades per «:».\n" " TERM\t\tNom del tipus de terminal actual.\n" " TIMEFORMAT\t\tFormat de sortida per a les estadístiques de temps\n" -" \t\t\tproduïdes per l'ordre `time'.\n" +" \t\t\tproduïdes per l'ordre «time».\n" " auto_resume\t\tNo-nul·la significa que una ordre sola en una línia\n" " \t\t\tes busca en primera instància a la llista actual de\n" -" \t\t\ttasques aturades. Si es troba, aquella tasca es\n" -" passa a primer pla. El valor `exact' significa que\n" +" \t\t\tfeines aturades. Si es troba, aquella feina es\n" +" passa a primer pla. El valor «exact» significa que\n" " l'ordre ha de coincidir exactament amb alguna ordre\n" -" de la llista de tasques aturades. El valor\n" -" `substring' significa que l'ordre ha de coincidir\n" -" amb una subcadena de la tasca. Qualsevol altre\n" +" de la llista de feines aturades. El valor\n" +" «substring» significa que l'ordre ha de coincidir\n" +" amb una subcadena de la feina. Qualsevol altre\n" " valor significa que l'ordre ha de ser el prefix\n" -" d'una tasca aturada.\n" +" d'una feina aturada.\n" " histchars\t\tCaràcters que controlen l'expansió de l'historial i\n" " \t\t\tles substitucions ràpides. El primer caràcter és el\n" " \t\t\tcaràcter de substitució de l'historial, habitualment\n" -" \t\t\t`!'. El segon és el caràcter de `substitució\n" -" ràpida', normalment `^'. El tercer és el caràcter\n" -" de `comentari d'historial', normalment `#'.\n" -" HISTIGNORE\t\tLlista de patrons separats per `:' utilitzats per a\n" +" \t\t\t«!». El segon és el caràcter de «substitució\n" +" ràpida», normalment «^». El tercer és el caràcter\n" +" de «comentari d'historial», normalment «#».\n" +" HISTIGNORE\t\tLlista de patrons separats per «:» utilitzats per a\n" " \t\t\tdecidir si les ordres s'han de desar a l'historial.\n" -#: builtins.c:1803 -#, fuzzy +# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més +# enrere en aquest fitxer +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5398,35 +5395,37 @@ msgid "" msgstr "" "Afegeix directoris a la pila.\n" "\n" -" Afegeix un directori a sobre la pila de directoris, o fa girar la\n" -" llista, de manera que a sobre la pila hi queda el directori de treball\n" -" corrent. Sense arguments, intercanvia els dos directoris de més amunt.\n" +" Afegeix un directori al capdamunt de la pila de directoris, o fa girar\n" +" la llista, de manera que al capdamunt de la pila hi queda el directori\n" +" de treball corrent. Sense arguments, intercanvia els dos directoris de\n" +" més amunt.\n" "\n" " Opcions:\n" " -n Omet el canvi de directori quan s'afegeixen directoris a la\n" -" pila, de manera que només canvia la pila.\n" +" pila, de manera que només canvia el contingut de la pila.\n" "\n" " Arguments:\n" "\n" " +N Gira la llista de manera tal que l'N-èssim directori\n" -" (comptant des de l'esquerra de la llista que mostra `dirs',\n" +" (comptant des de l'esquerra de la llista que mostra «dirs»,\n" " començant des de zero) queda a dalt de tot.\n" "\n" " -N Gira la llista de manera tal que l'N-èssim directori\n" -" (comptant des de la dreta de la llista que mostra `dirs',\n" +" (comptant des de la dreta de la llista que mostra «dirs»,\n" " començant des de zero) queda a dalt de tot.\n" "\n" -" dir Afegeix DIR a dalt de tot de la pila de directoris, i el\n" +" dir Afegeix DIR al capdamunt de la pila de directoris, i el\n" " converteix en el nou directori de treball corrent.\n" "\n" -" Podeu visualitzar la pila de directoris amb l'ordre `dirs'.<\n" +" Podeu veure el contingut de la pila de directoris amb l'ordre «dirs».\n" "\n" " Estat de sortida:\n" " Torna èxit, excepte si s'ha rebut un argument invàlid, o el canvi de\n" " directori falla." -#: builtins.c:1837 -#, fuzzy +# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més +# enrere en aquest fitxer +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5455,32 +5454,33 @@ msgstr "" "Treu directoris de la pila.\n" "\n" " Elimina entrades de la pila de directoris. Sense arguments, elimina el\n" -" directori de dalt de tot de la pila, i canvia al nou directori de dalt\n" -" de la pila.\n" +" directori al capdamunt de la pila, i canvia al nou directori de dalt de\n" +" la pila.\n" "\n" " Opcions:\n" -" -n Evita el canvi de directori quan s'eliminen directoris de la\n" -" pila, de manera que només es manipula la pila.\n" +" -n Omet el canvi de directori quan s'eliminen directoris de la\n" +" pila, de manera que només canvia el contingut de la pila.\n" "\n" " Arguments:\n" " +N Elimina l'entrada N-èssima, comptant des de l'esquerra de la\n" -" llista que mostra `dirs', començant des de zero. Per\n" -" exemple: `popd +0' elimina el primer directori, i `popd +1'\n" +" llista que mostra «dirs», començant des de zero. Per\n" +" exemple: «popd +0» elimina el primer directori, i «popd +1»\n" " el segon.\n" "\n" " -N Elimina l'entrada N-èssima, comptant des de la dreta de la\n" -" llista que mostra `dirs', començant des de zero. Per\n" -" exemple: `popd -0' elimina l'últim directori, i `popd -1' el\n" +" llista que mostra «dirs», començant des de zero. Per\n" +" exemple: «popd -0» elimina l'últim directori, i «popd -1» el\n" " penúltim.\n" "\n" -" Podeu visualitzar la pila de directoris amb l'ordre `dirs'.\n" +" Podeu veure el contingut de la pila de directoris amb l'ordre «dirs».\n" "\n" " Estat de sortida:\n" " Torna èxit, excepte si es rep un argument invàlid o el canvi de\n" " directori falla." -#: builtins.c:1867 -#, fuzzy +# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més +# enrere en aquest fitxer +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5510,13 +5510,13 @@ msgid "" msgstr "" "Mostra la pila de directoris.\n" "\n" -" Mostra la llista actual de directoris recordats. Els directoris entren\n" -" a la llista mitjançant l'ordre `pushd'; podeu recórrer la llista de\n" -" directoris enrere amb l'ordre `popd'.\n" +" Mostra la llista actual de directoris recordats. Els directoris són\n" +" afegits a la llista mitjançant l'ordre «pushd»; podeu recórrer la llista\n" +" de directoris cap enrere amb l'ordre «popd».\n" "\n" " Opcions:\n" " -c neteja la pila, esborrant-ne tots els elements\n" -" -l no mostra les versions abreviades (prefix ~) en els\n" +" -l no mostra les versions abreviades (amb el prefix ~) dels\n" " directoris relatius al vostre directori personal\n" " -p mostra la pila, una entrada per línia\n" " -v mostra la pila, una entrada per línia indicant la posició a\n" @@ -5524,25 +5524,25 @@ msgstr "" "\n" " Arguments:\n" " +N Mostra l'entrada N-èssima, comptant des de l'esquerra de la\n" -" llista mostrada per `dirs' quan s'invoca sense opcions, \n" +" llista mostrada per «dirs» quan s'invoca sense opcions, \n" " començant des de zero.\n" "\n" " -N Mostra l'entrada N-èssima, comptant des de la dreta de la\n" -" llista mostrada per `dirs' quan s'invoca sense opcions,\n" -" començant des de zero.<\n" +" llista mostrada per «dirs» quan s'invoca sense opcions,\n" +" començant des de zero.\n" "\n" " Estat de sortida:\n" " Retorna èxit, excepte si es rep una opció invàlida o es produeix un\n" " error." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5557,22 +5557,21 @@ msgid "" msgstr "" "Activa i desactiva opcions de l'intèrpret.\n" "\n" -" Canvia l'estat de cada OPCIÓ. Si no s'especifica cap OPCIÓ, mostra una\n" +" Canvia l'estat de cada OPCIÓ. Si no especifiqueu cap OPCIÓ, mostra una\n" " llista de totes les opcions indicant si estan activades o no.\n" "\n" " Opcions:\n" -" -o limita les opcions a les que es poden canviar amb `set -o'\n" +" -o limita les opcions a les que es poden canviar amb «set -o»\n" " -p\tmostra totes les opcions indicant-ne l'estat\n" " -q\tsuprimeix la sortida\n" " -s\tactiva OPCIÓ\n" " -u\tdesactiva OPCIÓ\n" "\n" " Estat de sortida:\n" -" Torna èxit si OPCIÓ està activada; falla si s'especifica una opció\n" +" Torna èxit si OPCIÓ està activada; falla si especifiqueu una opció\n" " invàlida o OPCIÓ està desactivada." -#: builtins.c:1919 -#, fuzzy +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5640,7 +5639,7 @@ msgstr "" " Retorna èxit, excepte si es rep una opció invàlida o es produeix un\n" " error d'assignació o d'escriptura." -#: builtins.c:1953 +#: builtins.c:1961 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5659,10 +5658,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5671,11 +5674,10 @@ msgstr "" "\n" " Per a cada NOM, especifica com s'han de completar els arguments. Si no\n" " s'indica cap opció, les especificacions de compleció existents es\n" -" mostren en un format que permet la reutilització com a entrada.\n" +" mostren en un format que permet reutilitzar-les com a entrada.\n" "\n" " Opcions:\n" -" -p mostra les especificacions existents en un format " -"reciclable\n" +" -p mostra les especificacions existents en format reciclable\n" " -r suprimeix l'especificació de compleció per a NOM, o, si no\n" " \t\ts'indica cap NOM, totes les especificacions de compleció\n" " -D assigna les accions o complecions a totes les ordres que no\n" @@ -5685,13 +5687,12 @@ msgstr "" "\n" " Quan s'intenta una compleció, les accions s'apliquen en l'ordre en què\n" " les opcions -D i -E apareixen al paràgraf anterior. L'opció -D té\n" -" preferència sobre la -E.\n" +" preferència sobre l'opció -E.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si es passa una opció invàlida o es produeix un\n" -" error." +" Torna èxit, excepte si passeu una opció invàlida o es produeix un error." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5707,14 +5708,14 @@ msgstr "" "\n" " Aquesta ordre està pensada per a ser utilitzada en una funció que " "generi\n" -" possibles complecions. Si s'especifica l'argument opcional PARAULA, es\n" +" possibles complecions. Si especifiqueu l'argument opcional PARAULA, es\n" " limiten les complecions a aquelles que coincideixen amb PARAULA.\n" "\n" " Estat de sortida:\n" -" Torna èxit excepte si es passa una opció invàlida o es produeix un\n" -" error." +" Torna èxit, excepte si passeu una opció invàlida o es produeix un error." -#: builtins.c:1996 +#: builtins.c:2006 +#, fuzzy msgid "" "Modify or display completion options.\n" " \n" @@ -5729,6 +5730,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5746,7 +5748,7 @@ msgid "" msgstr "" "Modifica o mostra opcions de compleció.\n" "\n" -" Modifica les opcions de compleció de NOM, o, si no s'especifica cap " +" Modifica les opcions de compleció de NOM, o, si no especifiqueu cap " "NOM,\n" " la compleció que s'està executant en el moment. Si no s'indica cap\n" " OPCIÓ, mostra les opcions de compleció per a cada NOM o\n" @@ -5758,23 +5760,23 @@ msgstr "" "defecte\n" " -E Canvia les opcions de compleció d'ordres \"buides\"\n" "\n" -" Si utilitzeu `+o' en lloc de `-o', desactiva l'opció especificada.\n" +" Si utilitzeu «+o» en lloc de «-o», desactiva l'opció especificada.\n" "\n" " Arguments:\n" "\n" " Cada NOM és el nom d'una ordre per la qual s'ha d'haver definit una\n" -" especificació de compleció amb l'ordre interna `complete'. Si no\n" -" s'especifica cap NOM, compopt s'ha de cridar des d'una funció " +" especificació de compleció amb l'ordre interna «complete». Si no\n" +" especifiqueu cap NOM, compopt s'ha de cridar des d'una funció " "generadora\n" " de complecions, i les opcions que es modifiquen afecten la generació de\n" " complecions que s'està executant en aquell moment.\n" "\n" " Estat de sortida: \n" -" Torna èxit, excepte si es passa alguna opció no vàlida o NOM no té\n" +" Torna èxit, excepte si passeu alguna opció no vàlida o NOM no té\n" " definida cap especificació de compleció." -#: builtins.c:2026 -#, fuzzy +# help readarray +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5818,38 +5820,41 @@ msgstr "" "Llegeix línies d'un fitxer cap a una variable vector.\n" "\n" " Llegeix línies de l'entrada estàndard cap a la variable VECTOR, o del\n" -" descriptor de fitxer FD i s'especifica l'opció -u. El vector per\n" -" defecte és la variable MAPFILE.\n" +" descriptor de fitxer FD si especifiqueu l'opció -u. La variable vector\n" +" per defecte és MAPFILE.\n" "\n" " Opcions:\n" +" -d delim Usa DELIM com delimitador de línies, en lloc del caràcter " +"de\n" +" salt de línia\n" " -n nombre Copia com a màxim NOMBRE línies. Si NOMBRE és 0, es copien\n" " \t\ttotes les línies.\n" -" -0 origen Comença l'assignació a l'índex ORIGEN, per defecte 0.\n" -" -s nombre Descarta les primeres NOMBRE línies llegides.\n" +" -O origen Comença l'assignació a l'índex ORIGEN, per defecte 0.\n" +" -s nombre Descarta les primeres NOMBRE línies.\n" " -t Estripa el caràcter de salt de línia de cada línia llegida.\n" " -u fd Llegeix el descriptor de fitxer FD, en lloc de l'entrada\n" " estàndard.\n" " -C callback Avalua CALLBACK cada QUÀNTUM línies llegides.\n" -" -c quàntum Especifica el nombre de línies llegides abans de\n" -" cridar CALLBACK\n" +" -c quàntum Nombre de línies llegides abans de cridar " +"CALLBACK\n" "\n" " Arguments:\n" " VECTOR Nom de la variable vector per a les dades.\n" "\n" -" Si s'especifica l'opció -C sense -c, el quàntum per defecte és 5000.\n" +" Si especifiqueu l'opció -C sense -c, el quàntum per defecte és 5000.\n" " Quan s'avalua la funció CALLBACK, se li passa l'índex del proper " "element\n" " del vector i la línia que s'assigna a aquest element, com a arguments\n" " addicionals.\n" "\n" -" Si no s'especifica un origen explícit, se suprimeix qualsevol valor\n" +" Si no especifiqueu un origen explícit, se suprimeix qualsevol valor\n" " assignat a VECTOR abans d'assignar cap valor.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si es passa una opció no vàlida o VECTOR és de\n" -" només-lectura." +" Torna èxit, excepte si passeu una opció no vàlida o VECTOR és de només\n" +" lectura o no és una variable vector." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5857,7 +5862,7 @@ msgid "" msgstr "" "Llegeix línies d'un fitxer cap a una variable vector.\n" "\n" -" Un sinònim de `mapfile'." +" Un sinònim de «mapfile»." #, fuzzy #~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." diff --git a/po/cs.gmo b/po/cs.gmo index 5d6ad4d4b..2bbe00955 100644 Binary files a/po/cs.gmo and b/po/cs.gmo differ diff --git a/po/cs.po b/po/cs.po index a3686c983..20b90a425 100644 --- a/po/cs.po +++ b/po/cs.po @@ -2,142 +2,143 @@ # Copyright (C) 2008 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Petr Pisar , 2008, 2009, 2010, 2011, 2012, 2013, 2014. -# Petr Pisar , 2015. +# Petr Pisar , 2015, 2016, 2018. # # alias → alias # subscript → podskript # subroutine → podprogram # completion options → možnosti doplňování # shell option → přepínač shellu (shopt) -# Názvy signálu a stavů procesu by měly souhlasit se signal(7). +# Názvy signálů a stavů procesu by měly souhlasit se signal(7). msgid "" msgstr "" -"Project-Id-Version: bash 4.4-beta1\n" +"Project-Id-Version: bash 5.0-beta2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-17 12:43+0200\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2018-11-29 19:52+01:00\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "chybný podskript pole" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: odstraňuje se atribut odkazu na název" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: číslované pole nezle převést na pole asociativní" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: neplatný klíč asociativního pole" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: přes nečíselný indexu nelze dosadit" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: při přiřazovaní asociativního pole se musí použít podskript" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nelze vytvořit: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: pro příkaz nelze nalézt klávesovou mapu " -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: první nebílý znak není „\"“" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "ne zavírající „%c“ v %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: chybí dvojtečkový oddělovač" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "závorková expanze: nelze alokovat paměť pro %s" # TODO: pluralize -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "závorková expanze: alokace paměti pro %d prvků selhala" +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "závorková expanze: alokace paměti pro %u prvků selhala" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "závorková expanze: alokace paměti pro „%s“ selhala" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: chybný název aliasu" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "upravování řádku není povoleno" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s“: chybný název klávesové mapy" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: nelze číst: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "„%s“: nelze zruÅ¡it vazbu" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "„%s“: neznámé jméno funkce" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s není svázán s žádnou klávesou.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s lze vyvolat přes " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: nelze zruÅ¡it vazbu" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "počet smyček" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "má smysl jen ve smyčkách „for“, „while“ nebo „until“" @@ -151,234 +152,233 @@ msgstr "" " \n" " Bez VÝRAZU vrátí " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "není nestavena HOME" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "příliÅ¡ mnoho argumentů" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "vrcholového adresáře." +msgstr "adresář s prázdným názvem" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "není nastaveno OLDPWD" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "řádek %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "varování: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: užití: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: přepínač vyžaduje argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: vyžadován číselný argument" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: nenalezeno" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: chybný přepínač" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: chybný název přepínače" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: není platným identifikátorem" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "neplatné osmičkové číslo" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "chybné Å¡estnáctkové číslo" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "chybné číslo" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: chybné určení signálu" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s“: není PID ani platným označením úlohy" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: proměnná pouze pro čtení" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s mimo rozsah" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s mimo rozsah" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: žádná taková úloha" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: žádné řízení úloh" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "žádné řízení úloh" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: omezeno" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "omezeno" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: není vestavěným příkazem shellu" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "chyba zápisu: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "chyba při nastavování vlastností terminálu: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "chyba při získávání vlastností terminálu: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: chyba při zjišťování současného adresáře: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: nejednoznačné určení úlohy" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "k této verzi není dostupná nápověda" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: neplatný název akce" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: žádné doplňování neurčeno" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "varování: přepínač -F možná nebude dělat, co jste čekali" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "varování: přepínač -C možná nebude dělat, co jste čekali" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "doplňovací funkce se právě nevykonává" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "může být použito jen ve funkci" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: proměnná s odkazem nemůže být polem" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: proměnná s odkazem na název nemůže odkazovat sama na sebe" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: kruhový odkaz na název" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: neplatný název proměnné pro odkaz na název" +msgstr "„%s“: neplatný název proměnné pro odkaz na název" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "„-f“ nezle použít na výrobu funkce" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: funkce jen pro čtení" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: přiřazení do složeného pole uzavřeného v uvozovkách je zastaralé" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: takto nelze likvidovat pole" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: asociativní pole nelze převést na číslované pole" @@ -412,70 +412,70 @@ msgstr "%s: není dynamicky nahráno" msgid "%s: cannot delete: %s" msgstr "%s: nelze smazat: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: je adresářem" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: není obyčejný soubor" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: soubor je příliÅ¡ velký" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: binární soubor nelze spustit" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: nelze provést: %s" # XXX: Toto je zpráva interaktivního shellu při příkazu exit informující # o odhlášení -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "odhlášení\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "toto není login shell: použijte „exit“" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Jsou zde pozastavené úlohy.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Jsou zde běžící úlohy.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "žádný příkaz nenalezen" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "určení historie" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: dočasný soubor nelze otevřít: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "současný" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "úloha %d spuÅ¡těna bez správy úloh" @@ -490,29 +490,28 @@ msgstr "%s: chybný přepínač – %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: přepínač vyžaduje argument – %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashování zakázáno" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tabulka hashů je prázdná\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "zásahů\tpříkaz\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Příkazy shellu shodující se s klíčovým slovem „" msgstr[1] "Příkazy shellu shodující se s klíčovými slovy „" msgstr[2] "Příkazy shellu shodující se s klíčovými slovy „" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -520,12 +519,12 @@ msgstr "" "žádné téma nápovědy se nehodí pro „%s“. Zkuste „help help“ nebo „man -k %s“ " "nebo „info %s“." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nelze otevřít: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -545,20 +544,21 @@ msgstr "" "Hvězdička (*) vedle jména znamená, že příkaz je zakázán.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "nelze použít více jak jeden z -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "místo v historii" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: chybný argument" +msgstr "%s: neplatný časový údaj" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: expanze historie selhala" @@ -572,16 +572,16 @@ msgstr "%s: inlib selhala" msgid "no other options allowed with `-x'" msgstr "s „-x“ nejsou dovoleny další přepínače" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenty musí být proces nebo identifikátor úlohy" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Neznámá chyba" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "očekáván výraz" @@ -590,69 +590,69 @@ msgstr "očekáván výraz" msgid "%s: not an indexed array" msgstr "%s: není (proměnnou typu) indexované pole" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: chybné určení deskriptoru souboru" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neplatný deskriptor souboru: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: chybný počet řádků" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: chybný počátek pole" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neplatné množství mezi voláními" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "prázdný název proměnné typu pole" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "je vyžadována podpora proměnných typu pole" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "„%s“: postrádám formátovací znak" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: chybné určení časového limitu" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: neplatný formátovací znak" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "varování: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "potíže s rozebráním formátovacího řetězce: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "u \\x chybí Å¡estnáctková číslovka" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "u \\%c chybí unikódová číslovka" @@ -666,19 +666,19 @@ msgstr "žádný další adresář" msgid "%s: invalid argument" msgstr "%s: chybný argument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<žádný aktuální adresář>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "prázdný zásobník adresářů" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "pořadí v zásobníku adresářů" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -720,7 +720,7 @@ msgstr "" " -N\tZobrazí N. položku počítáno zprava na seznamu, který zobrazuje\n" " \tdirs, když je vyvolán bez přepínačů, počínaje nulou." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -765,7 +765,7 @@ msgstr "" " \n" " Zásobník adresářů si můžete prohlédnout příkazem „dirs“." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -809,40 +809,40 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: chybné určení časového limitu" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "chyba čtení: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "„return“ lze provést jen z funkce nebo skriptu načteného přes „source“" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "funkci i proměnnou nelze ruÅ¡it současně" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: nelze zruÅ¡it" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nelze zruÅ¡it: %s jen pro čtení" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: není (proměnnou typu) pole" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: není funkcí" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: nelze exportovat" @@ -851,20 +851,20 @@ msgstr "%s: nelze exportovat" msgid "shift count" msgstr "počet shiftů" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "přepínač shellu nelze zároveň nastavit a zruÅ¡it" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: chybný název přepínače shellu" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "vyžadován argument s názvem souboru" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: soubor nenalezen" @@ -877,61 +877,61 @@ msgstr "nelze pozastavit" msgid "cannot suspend a login shell" msgstr "login shell nelze pozastavit" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s je alias na „%s“\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s je klíčové slovo shellu\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s je funkce\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s je zvláštní součást shellu\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s je součást shellu\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s je %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s je zahashován (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: chybný argument s limitou" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "„%c“: chybný příkaz" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: limit nelze zjistit: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: limit nelze změnit: %s" @@ -950,359 +950,367 @@ msgstr "„%c“: chybný operátor symbolických práv" msgid "`%c': invalid symbolic mode character" msgstr "„%c“: chybný znak symbolický práv " -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " řádek " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "poslední příkaz: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Ukončuji…" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORMACE: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "chyba neznámého příkazu" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "chybný druh příkazu" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "chybný konektor" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "chybný skok" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: nevázaná proměnná" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\ačasový limit pro čekání na vstup vyprÅ¡el: automatické odhlášení\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "standardní vstup nelze přesměrovat z /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c“: chybný formátovací znak" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: koproces [%d:%s] stále existuje" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "chyba v rouře" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: maximální úroveň zanoření funkce eval byla překročena (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximální úroveň zanoření funkce source byla překročena (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximální úroveň zanoření funkcí byla překročena (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: omezeno: v názvu příkazu nesmí být „/“" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: příkaz nenalezen" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: chybný interpretr" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: binární soubor nelze spustit: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "„%s“: je zvláštní vestavěný příkaz shellu" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "deskriptor souboru %d nelze duplikovat na deskriptor %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "úroveň rekurze výrazu byla překročena" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "zásobník rekurze podtekl" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "syntaktická chyba ve výrazu" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "pokus o přiřazení do ne-proměnné" -#: expr.c:495 expr.c:858 +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "syntaktická chyba v přiřazení do proměnné" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "dělení nulou" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "chyba: chybný expassing token" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "v podmíněném výrazu očekávána „:“" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "mocnitel menší než 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "po přednostním zvýšení nebo snížení očekáván identifikátor" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "postrádám „)“" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "syntaktická chyba: očekáván operand" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "syntaktická chyba: chybný aritmetický operátor" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (chybný token je „%s“)" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "chybný aritmetický základ" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "hodnot je pro základ příliÅ¡ velká" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: chyba výrazu\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: rodičovské adresáře nejsou přístupné" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "na deskriptoru %d nelze resetovat režim nodelay" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "nový deskriptor souboru pro vstup bashe z deskr. %d nelze alokovat" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer již pro nový deskriptor %d existuje" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp roury" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forknutý PID %d se objevil v běžící úloze %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "mažu pozastavenou úlohu %d se skupinou procesů %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) do the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: PID %5ld (%s) označen za stále živého" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: žádný takový PID" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Signál %d" # XXX: (úloha) dokončna. Používat ženský rod i unásledujících. Jedná se # o výpis úloh. -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Dokončena" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Pozastavena" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Pozastavena (%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Běží" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Dokončena (%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Ukončena %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Stav neznámý" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(core dumped [obraz paměti uložen]) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (cwd: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid na potomku (z %ld na %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: PID %ld není potomkem tohoto shellu" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Žádný záznam o procesu %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: úloha %d je pozastavena" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: úloha skončila" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: úloha %d je již na pozadí" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: zapíná se WNOHANG, aby se zabránilo neurčitému zablokování" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: řádek %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core dumped [obraz paměti uložen])" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(cwd nyní: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp selhalo" -#: jobs.c:4104 +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: správa úloh nefunguje na pozadí" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplína linky" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nelze nastavit skupinu procesů terminálu (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "žádná správa úloh v tomto shellu" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: předpoklad nesplněn: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1311,39 +1319,39 @@ msgstr "" "\r\n" "malloc: %s:%d: zbabraný předpoklad\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "není známo" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: blok v seznamu uvolněných zbit" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: zavoláno s argumentem již uvolněného bloku" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: zavoláno s argumentem nenaalokovaného bloku" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: zjiÅ¡těno podtečení, mh_nbytes mimo rozsah" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: velikosti počátečního a koncového kusu se liší" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: zavoláno s argumentem nenaalokovaného bloku" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: zjiÅ¡těno podtečení, mh_nbytes mimo rozsah" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: velikosti počátečního a koncového kusu se liší" @@ -1385,22 +1393,22 @@ msgstr "%s: chybné určení síťové cesty" msgid "network operations not supported" msgstr "síťové operace nejsou podporovány" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: národní prostředí nelze změnit (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: národní prostředí nelze změnit (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: národní prostředí nelze změnit (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: národní prostředí nelze změnit (%s): %s" @@ -1418,153 +1426,155 @@ msgstr "V $_ máte novou poÅ¡tu" msgid "The mail in %s has been read\n" msgstr "PoÅ¡ta v %s je přečtená\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "chyba syntaxe: vyžadován aritmetický výraz" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "chyba syntaxe: neočekávaný „;“" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "chyba syntaxe: „((%s))“" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: chybný druh instrukce %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "„here“ dokument na řádku %d ukončen koncem souboru (požadováno „%s“)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instrukce přesměrování „%d“ mimo rozsah" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) přesahuje SIZE_MAX (%lu): řádek " +"zkrácen" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "maximální počet here dokumentů překročen" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "neočekávaný konec souboru při hledání znaku odpovídajícímu „%c“" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "neočekávaný konec souboru při hledání „]]“" # XXX: Condional means condition (adj.) probably. Can English distinguish # between the condition (podmínkový) and the code branch (podmíněný)? Check # for all "conditional" string occurences. -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "chyba syntaxe ve výrazu podmínky: neočekávaný token „%s“" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "chyba syntaxe ve výrazu podmínky" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "neočekávaný token „%s“, očekávána „)“" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "očekávána „)“" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "neočekávaný argument „%s“ u podmínkového unárního operátoru" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "neočekávaný argument u podmínkového unárního operátoru" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "neočekávaný token „%s“, očekáván podmínkový binární operátor" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "očekáván podmínkový binární operátor" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "neočekávaný argument „%s„ u podmínkového binárního operátoru" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "neočekávaný argument u podmínkového binárního operátoru" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "neočekávaný token „%c“ v podmínkovém příkazu" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "neočekávaný token „%s“ v podmínkovém příkazu" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "neočekávaný token %d v podmínkovém příkazu" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "chyba syntaxe poblíž neočekávaného tokenu „%s“" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "chyba syntaxe poblíž „%s“" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "chyba syntaxe: nenadálý konec souboru" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "chyba syntaxe" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Shell lze ukončit příkazem „%s“.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "nenadálý konec souboru při hledání odpovídající „)“" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "doplňování: funkce „%s“ nenalezena" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: možná smyčka opakování" #: pcomplib.c:182 #, c-format @@ -1591,90 +1601,94 @@ msgstr "xtrace_set: nullový ukazatel na souboru" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace: fd (%d) != fileno fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: chybný formátovací znak" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "deskriptor souboru mimo rozsah" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: nejednoznačné přesměrování" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: existující soubor nelze přepsat" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: omezeno: výstup nelze přesměrovat" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "pro „here“ dokument nelze vytvořit dočasný soubor: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: deskriptor souboru nelze přiřadit do proměnné" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port není bez síťování podporováno" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "chyba přesměrování: deskriptor souboru nelze duplikovat" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "nelze nalézt /tmp, vytvořte jej, prosím!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp musí být platným názvem pro adresář" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "v interaktivních shellech se režim krásného výpisu nepoužije" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: chybný přepínač" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "UID nelze nastavit na %d: efektivní UID je %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "GID nelze nastavit na %d: efektivní GID je %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "debuger nelze spustit, ladicí režim zakázán" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: Je adresářem" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Nemám žádné jméno!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, verze %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1683,53 +1697,53 @@ msgstr "" "Použití:\t%s [Dlouhý GNU přepínač] [přepínač]…\n" "\t%s [Dlouhý GNU přepínač] [přepínač] skriptový_soubor…\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Dlouhé GNU přepínače:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Přepínače shellu:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD nebo -c příkaz nebo -O shopt_přepínač\t(pouze při vyvolání)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s nebo -o přepínač\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Podrobnosti o přepínačích shellu získáte tím, že napíšete „%s -c \"help set" "\"“.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Podrobnosti o příkazech vestavěných do shellu získáte tím, že\n" "napiÅ¡te „%s -c help“.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Chyby nahlásíte příkazem „bashbug“.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "Domovská stránka bashe: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "Obecný návod na použití softwaru GNU: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: neplatná operace" @@ -1907,92 +1921,96 @@ msgstr "Neznámé číslo signálu" msgid "Unknown Signal #%d" msgstr "Neznámý signál č. %d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "chybná substituce: v %2$s chybí uzavírací „%1$s“" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: seznam nelze přiřadit do prvku pole" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "nelze vyrobit rouru za účelem substituce procesu" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "nelze vytvořit potomka za účelem substituce procesu" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "pojmenovanou rouru %s nelze otevřít pro čtení" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "pojmenovanou rouru %s nelze otevřít pro zápis" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "pojmenovanou rouru %s nelze zdvojit jako deskriptor %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "chybná substituce: v %s chybí uzavírací „`“" +msgstr "substituce příkazu: nulový bajt ve vstupu ignorován" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "nelze vytvořit rouru pro substituci příkazu" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "nelze vytvořit potomka pro substituci příkazu" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: rouru nelze zdvojit jako deskriptor 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: neplatný název proměnné pro odkaz na název" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: chybná substituce" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: chybná nepřímá expanze" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "%s: chybný název proměnné" -#: subst.c:6854 +#: subst.c:7056 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parametr nenastaven" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametr null nebo nenastaven" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: výraz podřetězce < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: chybná substituce" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: takto nelze přiřazovat" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2000,12 +2018,12 @@ msgstr "" "budoucá verze tohoto shellu budou vynucovat vyhodnocení jako aritmetickou " "substituci" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "chybná substituce: v %s chybí uzavírací „`“" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "žádná shoda: %s" @@ -2028,114 +2046,120 @@ msgstr "očekávána „)“" msgid "`)' expected, found %s" msgstr "očekávána „)“, nalezeno %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: očekáván unární operátor" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: očekáván binární operátor" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "postrádám „]“" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "neplatné číslo signálu" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" +"obsluha signálů: maximální úroveň zanoření obsluhy signálů byla překročena (%" +"d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: chybná hodnota v trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: obsluha signálu je SIG_DFL, přeposílám %d (%s) sobě" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: chybný signál %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "chyba při importu definice „%s“" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "úroveň shellu (%d) příliÅ¡ vysoká, resetuji na 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: žádný kontext funkce v aktuálním rozsahu" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: hodnotu nelze do proměnné přiřadit" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: neplatný název proměnné pro odkaz na název" +msgstr "%s: přiřazení čísla odkazu na název" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: žádný kontext funkce v aktuálním rozsahu" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s: má nullový exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "neplatný znak %d v exportstr pro %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "v exportstr pro %s chybí „=“" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: hlava shell_variables není kontextem funkce" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: chybí kontext global_variables" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: hlava shell_variables není dočasným rozsahem prostředí" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nelze otevřít jako SOUBOR" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: neplatná hodnota pro deskriptor trasovacího souboru" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: hodnota kompatibility je mimo rozsah" #: version.c:46 version2.c:46 -#, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright © 2015 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright © 2018 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2158,22 +2182,22 @@ msgstr "Toto je svobodné programové vybavení: máte právo jej měnit a ší msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "VEÅ KERÉ ZÁRUKY chybí, jak jen zákon dovoluje." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: nelze alokovat %'lu bajtů (alokováno %'lu bajtů)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: nezle alokovat %'lu bajtů" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: nelze alokovat %'lu bajtů (alokováno %'lu bajtů)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: nelze alokovat %'lu bajtů" @@ -2301,9 +2325,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [úloha…] nebo jobs -x příkaz [argumenty]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [úloha…]" +msgstr "disown [-h] [-ar] [úloha… | PID…]" #: builtins.c:134 msgid "" @@ -2385,8 +2408,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mód]" #: builtins.c:177 -msgid "wait [-n] [id ...]" -msgstr "wait [-n] [id…]" +msgid "wait [-fn] [id ...]" +msgstr "wait [-fn] [id…]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2430,7 +2453,7 @@ msgstr "until PŘÍKAZY; do PŘÍKAZY; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" -msgstr "command [NÁZEV] příkaz [přesměrování]" +msgstr "coproc [NÁZEV] příkaz [přesměrování]" #: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" @@ -2479,12 +2502,12 @@ msgstr "printf [-v proměnná] formát [argumenty]" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o přepínač] [-A akce] [-G globvzor] [-" -"W seznam_slov] [-F funkce] [-C příkaz] [-X filtrvzor] [-P předpona] [-S " +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o přepínač] [-A akce] [-G globvzor] " +"[-W seznam_slov] [-F funkce] [-C příkaz] [-X filtrvzor] [-P předpona] [-S " "přípona] [název…]" #: builtins.c:235 @@ -2497,8 +2520,8 @@ msgstr "" "přípona] [slovo]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "compopt [-o|+o možnost] [-DE] [název…]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o možnost] [-DEI] [název…]" #: builtins.c:242 msgid "" @@ -2510,11 +2533,11 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -"readarray [-n počet] [-O počátek] [-s počet] [-t] [-u FD] [-C volání] [-c " -"množství] [pole]" +"readarray [-d oddělovač] [-n počet] [-O počátek] [-s počet] [-t] [-u FD] [-C " +"volání] [-c množství] [pole]" #: builtins.c:256 msgid "" @@ -2701,7 +2724,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Provede vestavěný příkaz shellu.\n" " \n" @@ -2945,11 +2968,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2982,11 +3005,11 @@ msgstr "" " -a učiní NÁZVY číslovanými poli (je-li podporováno)\n" " -A učiní NÁZVY asociativními poli (je-li podporováno)\n" " -i přiřadí NÁZVÅ®M atribut „integer“ (číslo)\n" -" -l převede NÁZVY na malá písmena v době přiřazení\n" +" -l převede hodnotu každého NÁZVU na malá písmena v době přiřazení\n" " -n učiní NÁZEV odkazem na proměnnou pojmenovanou podle své hodnoty\n" " -r učiní NÁZVY jen pro čtení\n" " -t přiřadí NÁZVÅ®M atribut „trace“ (sledování)\n" -" -u převede NÁZVY na velká písmena v době přiřazení\n" +" -u převede hodnotu každého NÁZVU na velká písmena v době přiřazení\n" " -x vyexportuje NÁZVY\n" " \n" " Pomocí „+“ namísto „-“ daný atribut vypnete.\n" @@ -3003,15 +3026,14 @@ msgstr "" " přiřazování do proměnné." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" " A synonym for `declare'. See `help declare'." msgstr "" -"Nastaví hodnoty a atributy proměnných\n" +"Nastaví hodnoty a atributy proměnných.\n" " \n" -" Příkaz je zastaralý. Vizte „help declare“." +" Synonymum pro „declare“. Vizte „help declare“." #: builtins.c:538 msgid "" @@ -3042,6 +3064,7 @@ msgstr "" " přiřazování do proměnné a vykonává-li shell funkci." #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3070,6 +3093,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3106,7 +3135,7 @@ msgstr "" " Návratový kód:\n" " Vrací úspěch, nedojde-li k chybě zápisu na výstup." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3127,7 +3156,7 @@ msgstr "" " \n" " Vrací úspěch, nedojte-li k chybě zápisu na výstup." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3181,7 +3210,7 @@ msgstr "" " Vrací úspěch, je-li NÁZEV vestavěným příkazem shellu a nevyskytne-li\n" " se chyba." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3199,7 +3228,7 @@ msgstr "" " Návratový kód:\n" " Vrátí návratový kód příkazu, nebo úspěch, byl-li příkaz prázdný." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3282,7 +3311,7 @@ msgstr "" "dojde\n" " na konec přepínačů nebo nastane-li chyba." -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3323,7 +3352,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud byl PŘÍKAZ nalezen a nedoÅ¡lo k chybě přesměrování." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3335,7 +3364,7 @@ msgstr "" " Ukončí tento shell se stavem N. Bez N bude návratový kód roven kódu\n" " posledně prováděného příkazu." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3348,7 +3377,7 @@ msgstr "" " Ukončí přihlaÅ¡ovací (login) shell se stavem N. Nebyl-li příkaz zavolán\n" " z přihlaÅ¡ovacího shellu, vrátí chybu." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3401,7 +3430,7 @@ msgstr "" " Vrátí úspěch nebo kód provedeného příkazu. Nenulový kód, vyskytne-li se\n" " chyba." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3422,7 +3451,7 @@ msgstr "" " Návratový kód:\n" " Kód úlohy přesunuté do popředí, nebo doÅ¡lo-li k chybě, kód selhání." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3444,7 +3473,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud je správa úloh zapnuta a nedoÅ¡lo-li k nějaké chybě." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3489,7 +3518,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud byl NÁZEV nalezen a nebyl-li zadán neplatný přepínač." -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3504,7 +3533,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3529,9 +3558,7 @@ msgstr "" " Návratový kód:\n" " Vrací úspěch, pokud byl nalezen VZOREK a nebyl zadán neplatný přepínač." -# FIXME: bash-4.0-pre1: Orphaned line between -w and -p option. It belongs to -n. -#: builtins.c:836 -#, fuzzy +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3540,7 +3567,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3571,7 +3599,9 @@ msgstr "" " \n" " Přepínače:\n" " -c vyprázdní seznam historie smazáním vÅ¡ech položek\n" -" -d pozice smaže ze seznamu historie položku na pozici POZICE\n" +" -d pozice smaže položku ze seznamu historie na pozici POZICE. " +"Záporné\n" +" pozice se počítají od konce seznamu historie.\n" " \n" " -a připojí řádky historie z této relace do souboru historie\n" " -n načte vÅ¡echny řádky historie, které jeÅ¡tě nebyly načteny,\n" @@ -3596,7 +3626,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nedoÅ¡lo k chybě." -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3641,7 +3671,7 @@ msgstr "" "chyba.\n" " Byl-ly použit přepínač -x, vrátí návratový kód PŘÍKAZU." -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3671,8 +3701,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač nebo ÚLOHA." -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3707,6 +3736,7 @@ msgstr "" " se za to, že se jedná o čísla signálů, pro které se mají " "vyspat\n" " jejich názvy.\n" +" -L synonymum pro -l\n" " \n" " Kill je vestavěný příkaz shellu ze dvou důvodů: umožňuje použít\n" " identifikátory úloh namísto ID procesů a umožní zabíjet procesy i poté,\n" @@ -3715,7 +3745,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nedoÅ¡lo k chybě." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3802,7 +3832,7 @@ msgstr "" " Pokud poslední ARGUMENT je vyhodnocen na 0, let vrátí 1. Jinak je\n" " navrácena 0." -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3823,7 +3853,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3871,8 +3901,7 @@ msgstr "" " počínaje indexem nula\n" " -d oddělovač pokračuje, dokud není načten první znak ODDĚLOVAČE\n" " namísto nového řádku\n" -" -e v interaktivním shellu bude řádek načten pomocí " -"Readline\n" +" -e načte řádek pomocí knihovny Readline\n" " -i text použije TEXT jako prvotní text pro Readline\n" " -n p_znaků vrátí řízení po načtení P_ZNAKÅ® znaků, místo čekání na\n" " nový řádek, avÅ¡ak respektuje oddělovač, je-li méně než\n" @@ -3907,7 +3936,7 @@ msgstr "" "souboru\n" " jako argument -u." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3929,8 +3958,7 @@ msgstr "" " Návratová hodnota:\n" " Vrátí N, nebo selže, pokud shell neprovádí funkci nebo skript." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4084,8 +4112,8 @@ msgstr "" " zapnut při interaktivním shellu.\n" " -P Je-li nastaveno, nebudou vyhodnocovány symbolické odkazy při\n" " provádění příkazů jako změna pracovního adresáře pomocí „cd“.\n" -" -T Je-li nastaveno, trap DEBUG (obsluha ladění) bude děděna do\n" -" funkcí shellu.\n" +" -T Je-li nastaveno, trap DEBUG (obsluha ladění) a RETURN (návrat\n" +" z podprogramu) bude děděn do funkcí shellu.\n" " -- Přiřadí jakékoliv zbývající argumenty do pozičních parametrů.\n" " Neexistují-li žádné zbývající argumenty, poziční parametry budou\n" " odstraněny.\n" @@ -4103,7 +4131,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný argument." -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4144,7 +4172,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a JMÉNO není jen pro\n" " čtení." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4179,7 +4207,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač nebo NÁZEV." -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4219,7 +4247,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač nebo NÁZEV." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4237,7 +4265,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud N není záporný a není větší než $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4261,7 +4289,7 @@ msgstr "" " Vrací návratový kód posledního provedeného příkazu z NÁZVU_SOUBORU.\n" " Selže, pokud NÁZEV_SOUBORU nelze načíst." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4285,7 +4313,7 @@ msgstr "" " Návratový kód:\n" " Vrací úspěch, pokud je správa úloh zapnuta a nevyskytla se chyba." -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4455,7 +4483,7 @@ msgstr "" " Vrací úspěch, je-li VÝRAZ vyhodnocen jako pravdivý. Selže, je-li VÝRAZ\n" " vyhodnocen jako nepravdivý nebo je-li zadán neplatný argument." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4467,7 +4495,7 @@ msgstr "" " Toto je synonymum pro vestavěný příkaz „test“, až na to, že poslední\n" " argument musí být doslovně „]“, aby se shodoval s otevírající „[“." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4487,7 +4515,7 @@ msgstr "" " Návratový kód:\n" " Vždy uspěje." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4571,7 +4599,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud SIGSPEC a zadané přepínače jsou platné." -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4627,7 +4655,7 @@ msgstr "" " Vrátí úspěch, pokud vÅ¡echny NÁZVY byly nalezeny. Selže, pokud některé\n" " nalezeny nebyly." -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4722,7 +4750,7 @@ msgstr "" " Návratová hodnota:\n" " Vrací úspěch, pokud nebyl zadán neplatný přepínač a nevyskytla se chyba." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4755,7 +4783,7 @@ msgstr "" " Návratový kód\n" " Vrátí úspěch, pokud nebyl zadán neplatný MÓD nebo přepínač." -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4763,13 +4791,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4786,11 +4816,14 @@ msgstr "" " Je-li zadán přepínač -n, počká na ukončení další úlohy a vrátí její\n" " návratový kód.\n" " \n" +" Je-li zadán přepínač -f a je-li zapnuta správa úloh, počká na ukončení\n" +" ukončení zadaného ID, místo aby čekal na změnu jeho stavu.\n" +" \n" " Návratový kód:\n" " Vrátí kód posledního ID. Selže, pokud ID není platný nebo byl zadán\n" " neplatný přepínač." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4814,7 +4847,7 @@ msgstr "" " Vrátí kód posledního PID. Selže, pokud PID není platný nebo byl zadán\n" " neplatný přepínač." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4838,7 +4871,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4867,7 +4900,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy vykonaného příkazu." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4909,7 +4942,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy prováděného příkazu." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4940,7 +4973,7 @@ msgstr "" " Návratový kód:\n" " Návratová hodnota je návratová hodnota KOLONY." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4958,7 +4991,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4993,7 +5026,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5012,7 +5045,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5030,8 +5063,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5051,9 +5083,9 @@ msgstr "" " tohoto shellu pod indexem 0 a 1. Implicitní NÁZEV je „COPROC“.\n" " \n" " Návratový kód:\n" -" Vrátí návratový kód PŘÍKAZU." +" Příkaz coproc vrací návratový kód 0." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5078,7 +5110,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud NÁZEV není jen pro čtení." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5095,7 +5127,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy spuÅ¡těného příkazu." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5120,7 +5152,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód obnovené úlohy." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5142,7 +5174,7 @@ msgstr "" # příkaz, který by byl vykonán na základě splnění jiné podmínky. Tj. překlad # „podmíněný příkaz“ je chybný. # Toto je nápověda k vestavěnému příkazu „[“. -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5194,7 +5226,7 @@ msgstr "" " Návratový kód:\n" " 0 nebo 1 podle hodnoty VÝRAZU." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5299,7 +5331,7 @@ msgstr "" " \t\trozliÅ¡ení, které příkazy by měly být uloženy do seznamu\n" " \t\thistorie.\n" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5356,7 +5388,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný argument a změna adresáře\n" " neselhala." -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5406,7 +5438,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný argument nebo neselhala změna\n" " adresáře." -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5457,14 +5489,13 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nevyskytla se chyba." -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5480,9 +5511,9 @@ msgstr "" "Zapne nebo vypne volby (přepínače) shellu.\n" " \n" " Změní nastavení každého přepínače shellu NÁZEV_VOLBY. Bez přepínačových\n" -" argumentů vypíše seznam vÅ¡ech přepínačů shellu s příznakem, zda je, " -"nebo\n" -" není nastaven.\n" +" argumentů vypíše každý zadaný NÁZEV_VOLBY, nebo seznam vÅ¡ech přepínačů\n" +" shellu, nebyl-li zadán žádný NÁZEV_VOLBY, s příznakem, zda je, nebo\n" +" není přepínač nastaven.\n" " Přepínače:\n" " -o\tomezí NÁZVY_VOLEB na ty, které jsou definovány pro použití\n" " \ts „set -o“\n" @@ -5495,7 +5526,7 @@ msgstr "" " Vrátí úspěch, je-li NÁZEV_VOLBY zapnut. Selže, byl-li zadán neplatný\n" " přepínač nebo je-li NÁZEV_VOLBY vypnut." -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5568,7 +5599,8 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nedoÅ¡lo k chybě\n" " zápisu nebo přiřazení." -#: builtins.c:1953 +#: builtins.c:1961 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5586,10 +5618,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5606,18 +5642,22 @@ msgstr "" " žádný NÁZEV, zruší vÅ¡echna pravidla\n" " -D použije pravidla doplňování a akce jako implicitní pro příkazy,\n" " které nemají žádné určité pravidlo doplňování definováno\n" -" -E použije pravidla doplňování á akce na „prázdné“ příkazy –\n" +" -E použije pravidla doplňování a akce na „prázdné“ příkazy –\n" " pravidla doplňování se uplatní na prázdný řádek\n" +" -I použije pravidla doplňování a akce na první slovo (obvykle " +"příkaz)\n" " \n" " Použije-li se doplňování, akce se uplatní v pořadí, v jakém jsou " "vypsány\n" -" přepínače psané velkými písmeny výše. Přepínač -D má přednost před\n" -" přepínačem -E.\n" +" přepínače psané velkými písmeny výše. Je-li zadáno více přepínačů,\n" +" přepínač -D bude upřednostněn před přepínačem -E. Oba přepínače " +"přebíjejí\n" +" přepínač -I.\n" " \n" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nevyskytla se chyba." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5638,7 +5678,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nevyskytla se chyba." -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -5653,6 +5693,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5679,6 +5720,7 @@ msgstr "" " \t-o možnost\tNastaví možnost doplňování MOŽNOST každému NÁZVU\n" " \t-D\t\tZmění možnosti doplňování „implicitnímu“ příkazu\n" " \t-E\t\tZmění možnosti doplňování „prázdnému“ příkazu\n" +" \t-I\t\tZmění možnosti doplňování prvnímu slovu\n" " \n" " Pomocí „+o“ namísto „-o“ zadanou možnost vypnete.\n" " \n" @@ -5696,7 +5738,7 @@ msgstr "" "definováno\n" " pravidlo doplňování." -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5774,7 +5816,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač, POLE nebylo jen pro\n" " čtení a bylo indexovaným polem." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/da.gmo b/po/da.gmo index 6aa94c4e2..a4b044e6a 100644 Binary files a/po/da.gmo and b/po/da.gmo differ diff --git a/po/da.po b/po/da.po index 3bda8e514..d39234d4a 100644 --- a/po/da.po +++ b/po/da.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" "PO-Revision-Date: 2011-03-18 01:36+0100\n" "Last-Translator: Kenneth Nielsen \n" "Language-Team: Danish \n" @@ -20,125 +20,126 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: da\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" # Den er jeg altsÃ¥ ikke helt sikker pÃ¥ -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "ugyldigt arrayindeks" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: kan ikke konvertere indekseret til associativt array" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: ugyldig nøgle til associativt array" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: kan ikke tildele til ikkenumerisk indeks" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: et indeks skal bruges ved tildeling til associativt array" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: kan ikke oprette %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: kan ikke finde tastetildeling for kommando" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: første ikke-blank-tegn er ikke '\"'" # Kønnet her er et gæt, hvis det er parenteser eller anførselstegn passer det # FEJLRAPPORT -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "ingen afsluttende \"%c\" i %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: manglende kolonseparator" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "\"%s\": ugyldigt tastetildelingsnavn" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "linjeredigering ikke slÃ¥et til" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "\"%s\": ugyldigt tastetildelingsnavn" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: kan ikke læse: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "\"%s\": kan ikke løsne" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "\"%s\": ukendt funktionsnavn" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s er ikke bundet til nogen taster.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s kan kaldes via " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "\"%s\": kan ikke løsne" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "løkketæller" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "kun meningsfuld i en \"for\"-, \"while\"- eller \"until\"-løkke" @@ -152,234 +153,234 @@ msgstr "" " \n" " NÃ¥r UDTRYK udelades returneres " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME ikke indstillet" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "for mange argumenter" -#: builtins/cd.def:336 +#: builtins/cd.def:341 #, fuzzy msgid "null directory" msgstr "ingen anden mappe" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD ikke indstillet" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "linje %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "advarsel: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: brug: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: tilvalg kræver et argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: numerisk argument pÃ¥krævet" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: ikke fundet" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: ugyldigt tilvalg" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: ugyldigt tilvalgsnavn" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "\"%s\": ikke et gyldigt identificeringsnavn" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "ugyldigt oktaltal" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "ugyldigt heksadecimalt tal" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "ugyldigt tal" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: ugyldig signalspecifikation" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "\"%s\": ikke en pid eller gyldig job-spec" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: skrivebeskyttet variabel" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s udenfor rækkevidde" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s udenfor rækkevidde" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: intet sÃ¥dant job" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: ingen jobkontrol" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "ingen jobkontrol" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: begrænset" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "begrænset" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ikke indbygget i skallen" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "skrivefejl: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "fejl ved indstilling af terminalattribut: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "fejl ved indhentning af terminalattribut: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: fejl ved indhentning af nuværende mappe: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: tvetydig job-spec" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: ugyldigt handlingsnavn" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: ingen fuldførselsspecifikation" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "advarsel: tilvalget -F vil mÃ¥ske ikke virke, som du forventer" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "advarsel: tilvalget -C vil mÃ¥ske ikke virke, som du forventer" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "ikke i gang med at eksekvere fuldførelsesfunktion" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "kan kun bruges i en funktion" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 -#, fuzzy, c-format +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 +#, c-format msgid "%s: circular name reference" -msgstr "%d: ugyldig filbeskrivelse: %s" +msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%d: ugyldig filbeskrivelse: %s" +msgstr "\"%s\": ugyldigt tastetildelingsnavn" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "kan ikke bruge \"-f\" til at lave funktioner" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: skrivebeskyttet funktion" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: kan ikke destruere arrayvariabel pÃ¥ denne mÃ¥de" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: kan ikke konvertere associativt til indekseret array" @@ -413,68 +414,68 @@ msgstr "%s: ikke dynamisk indlæst" msgid "%s: cannot delete: %s" msgstr "%s: kan ikke slette: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: er en mappe" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: ikke en regulær fil" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: fil er for stor" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kan ikke eksekvere binær fil" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: kan ikke eksekvere: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "log ud\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "ikke en logind-skal: brug \"exit\"" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Der er stoppede job.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Der er kørende job.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "ingen kommando fundet" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "historikspecifikation" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: kan ikke Ã¥bne midl. fil: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "nuværende" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "job %d startet uden jobkontrol" @@ -489,30 +490,29 @@ msgstr "%s: ugyldigt tilvalg -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: et argument er pÃ¥krævet til tilvalget -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashing slÃ¥et fra" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: hash-tabel tom\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "hits\tkommando\n" # Jeg antager at det sidste ` er det første af et sæt af anførselstegn og # det er derfor oversat til " -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Skalkommandoer som matcher nøgleordet \"" msgstr[1] "Skal-kommandoer som matcher nøgleordene \"" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -520,12 +520,12 @@ msgstr "" "ingen hjælpeemner matcher \"%s\". Prøv \"help help\" eller \"man -k %s\" " "eller \"info %s\"." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: kan ikke Ã¥bne: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -547,20 +547,21 @@ msgstr "" "En stjerne (*) ved siden af et navn betyder at kommandoen er slÃ¥et fra.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "kan ikke bruge mere end en af -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "historikposition" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: ugyldigt grænseargument" +msgstr "%s: ugyldigt tilvalgsnavn" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: historikudvidelse fejlede" @@ -574,16 +575,16 @@ msgstr "%s: inlib fejlede" msgid "no other options allowed with `-x'" msgstr "ingen andre tilvalg er tilladt sammen med \"-x\"" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenter skal være processer eller job-id'er" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Ukendt fejl" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "forventede et udtryk" @@ -592,70 +593,70 @@ msgstr "forventede et udtryk" msgid "%s: not an indexed array" msgstr "%s: ikke en arrayvariabel" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ugyldig filbeskrivelsesspecifikation" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ugyldig filbeskrivelse: %s" # -c Specify the number of lines read between each call to callback. -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: ugyldigt antal linjer" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: ugyldig array-startindeks" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ugyldigt tilbagekaldskvantum" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "tomt arrayvariabelnavn" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "understøttelse af arrayvariabel pÃ¥krævet" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "\"%s\": manglende formattegn" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: ugyldig specifikation af tidsudløb" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "\"%c\": ugyldigt formattegn" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "advarsel: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "manglende heksciffer for \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "manglende heksciffer for \\x" @@ -669,19 +670,19 @@ msgstr "ingen anden mappe" msgid "%s: invalid argument" msgstr "%s: ugyldigt grænseargument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "mappestak tom" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "mappestakindeks" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -724,7 +725,7 @@ msgstr "" " nÃ¥r der ikke angives nogle valgmuligheder, startende fra 0." # Jeg tror der er en fejl i den engelske, fejlrapport -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 #, fuzzy msgid "" "Adds a directory to the top of the directory stack, or rotates\n" @@ -771,7 +772,7 @@ msgstr "" " \n" "Den indbyggede funktion \"dirs\" viser mappestakken." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -814,40 +815,40 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: ugyldig specifikation af tidsudløb" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "læsefejl: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "kan kun udføre \"return\" fra en funktion eller indlæst skript" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "kan ikke fjerne en funktion og en variabel samtidig" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: kan ikke fjerne" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: kan ikke fjerne: skrivebeskyttet %s" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: ikke en arrayvariabel" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: ikke en funktion" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: kan ikke fjerne" @@ -856,20 +857,20 @@ msgstr "%s: kan ikke fjerne" msgid "shift count" msgstr "skifttæller" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "kan ikke indstille og fjerne skaltilvalg samtidig" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ugyldigt navn for skaltilvalg" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "filnavnsargument pÃ¥krævet" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: fil ikke fundet" @@ -882,61 +883,61 @@ msgstr "kan ikke sætte i hvile" msgid "cannot suspend a login shell" msgstr "kan ikke sætte en logindskal i hvile" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s er aliasset til \"%s\"\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s er et skalnøgleord\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s er en funktion\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s er indbygget i skallen\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s er indbygget i skallen\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s er %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s er hashet (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: ugyldigt grænseargument" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "\"%c\": ugyldig kommando" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: kan ikke indhente grænse: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "grænse" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: kan ikke modificere grænse: %s" @@ -955,112 +956,112 @@ msgstr "\"%c\": ugyldig symbolsk tilstandsoperator" msgid "`%c': invalid symbolic mode character" msgstr "\"%c\": ugyldigt symbolsk tilstandstegn" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " linje " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "sidste kommando: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Afbryder..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "ukendt kommandofejl" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "ugyldig kommandotype" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "dÃ¥rligt mellemled" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "dÃ¥rligt hop" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: ubundet variabel" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atidsudløb mens der ventedes pÃ¥ input: auto-logud\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "kan ikke videresende standardinput fra /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: \"%c\": ugyldigt formateringstegn" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "datakanalfejl (pipe error)" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: begrænset: kan ikke specificere \"/\" i kommandonavne" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: kommando ikke fundet" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: dÃ¥rlig fortolker" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kan ikke eksekvere binær fil" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s er indbygget i skallen\n" @@ -1074,251 +1075,261 @@ msgstr "%s er indbygget i skallen\n" # expansion. If the >(list) form is used, writing to the file will pro‐ # vide input for list. If the <(list) form is used, the file passed as # an argument should be read to obtain the output of list. -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "kan ikke duplikere fd %d til fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "grænse for rekursion af udtryk overskredet" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "underløb i rekursionsstak" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "syntaksfejl i udtryk" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "forsøgte tildeling til ikke-variabel" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "syntaksfejl i udtryk" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "division med 0" # denne her streng er dÃ¥rlig pÃ¥ sÃ¥ mange mÃ¥der at det fatter man slet ikke. Skal bug oversætter og hvad er expassign. Jeg laver et bud og har fejlmeldt den -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "bug: dÃ¥rligt expassign-udtryk" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "\":\" forventet for betingede udtryk" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "eksponent mindre end 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identifikator forventet efter præforøgelse eller -formindskelse" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "manglende \")\"" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "syntaksfejl: operand forventet" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "syntaksfejl: ugyldig aritmetisk operator" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (fejlelement er \"%s\")" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "ugyldig aritmetisk grundtal" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "værdi for stor til grundtal" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: fejl i udtryk\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: kan ikke tilgÃ¥ overliggende mapper" # Har ladet nodelay stÃ¥, idet jeg gætter pÃ¥ at det er et navn -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "kan ikke allokere ny fildeskriptor til bash-input fra fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer eksisterer allerede til ny fd %d" # ?? -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp-datakanal (pipe)" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forgrenet pid %d figurerer i kørende job %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "sletter stoppet job %d med procesgruppe %ld" # ?? -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) i the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) markeret som stadig i live" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ingen process med det pid" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Færdig" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Stoppet" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Stoppet(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Kører" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Færdig(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Afslut %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Ukendt status" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(smed kerne) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "underproces setpgid (%ld til %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld er ikke en underproces af denne skal" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ingen optegnelse af proces %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: job %d er stoppet" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: job er afbrudt" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: job %d er allerede i baggrunden" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: linje %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (smed kerne)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(wd nu: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp fejlede" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: linjedisciplin" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: linjedisciplin" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "kan ikke indstille terminal-procesgruppe (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "ingen jobkontrol i denne skal" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: forfejlet hævdelse: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1327,39 +1338,39 @@ msgstr "" "\r\n" "malloc: %s:%d: hævdelse forkludret\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "ukendt" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: blok i fri liste tværet ud" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: kaldt med blokargument som allerede er fri" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: kaldt med ikke-allokeret blokargument" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underløb detekteret, mh_nbytes uden for interval" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: størrelse pÃ¥ start- og slut-bid afviger" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: kaldt med ikke-allokeret blokargument" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underløb detekteret, mh_nbytes uden for interval" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: størrelse pÃ¥ start- og slut-bid afviger" @@ -1401,22 +1412,22 @@ msgstr "%s: dÃ¥rlig specifikation for netværkssti" msgid "network operations not supported" msgstr "netværksoperation ikke understøttet" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:259 +#: locale.c:272 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "xrealloc: %s:%d: kan ikke allokere %lu bytes" -#: locale.c:261 +#: locale.c:274 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: %s:%d: kan ikke allokere %lu bytes" @@ -1434,153 +1445,153 @@ msgstr "Du har ny post i $_" msgid "The mail in %s has been read\n" msgstr "Posten i %s er blevet læst\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "syntaksfejl: aritmetisk udtryk pÃ¥krævet" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "syntaksfejl: \";\" uventet" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "syntaksfejl: \"((%s))\"" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: dÃ¥rlig instruktionstype %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-document ved linje %d er adskilt af slut-pÃ¥-linje (ønskede \"%s\")" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_direction: videresendelsesinstruktion \"%d\" uden for interval" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "uventet EOF mens der ledtes efter samhørende \"%c\"" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "uventet EOF mens der ledtes efter \"]]\"" # word A sequence of characters considered as a single unit by the # shell. Also known as a token. # Jeg har valgt udtryk -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaksfejl i betingelsesudtryk: uventet element \"%s\"" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "syntaksfejl i betingelsesudtryk" # word A sequence of characters considered as a single unit by the # shell. Also known as a token. -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "uventet element \"%s\", forventede \")\"" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "forventede \")\"" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "uventet argument \"%s\" til unær betingelsesoperator" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "uventet argument til unær betingelsesoperator" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "uventet udtryk \"%s\", ventede binær betingelsesoperator" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "ventedet binær betingelsesoperator" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "uventet argument \"%s\" til binær betingelsesoperator" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "uventet argument til binær betingelsesoperator" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "uventet udtryk \"%c\" i betingelseskommando" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "uventet udtryk \"%s\" i betingelseskommando" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "uventet udtryk \"%d\" i betingelseskommando" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaksfejl nær uventet udtryk \"%s\"" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "syntaksfejl nær \"%s\"" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "syntaksfejl: uventet slutning pÃ¥ fil" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "syntaksfejl" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Brug \"%s\" for at forlade skallen.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "uventet EOF mens der ledtes efter samhørende \")\"" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: funktion \"%s\" ikke fundet" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1609,92 +1620,96 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: \"%c\": ugyldigt formateringstegn" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "fil-deskriptor uden for interval" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: tvetydig videresendelse" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: kan ikke overskrive eksisterende fil" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: begrænset: kan ikke videresende output" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "kan ikke danne midlertidig fil til here-dokument: %s" -#: redir.c:196 +#: redir.c:192 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: kan ikke tildele liste til arrayelementer" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/vært/port ikke understøttet uden netværk" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "videresendelsesfejl: kan ikke duplikere fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "kan ikke finde /tmp, opret venligst mappen!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp skal være et gyldigt mappenavn" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ugyldigt tilvalg" # Har ladet nodelay stÃ¥, idet jeg gætter pÃ¥ at det er et navn -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d" # Har ladet nodelay stÃ¥, idet jeg gætter pÃ¥ at det er et navn -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: er en mappe" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Jeg har ikke noget navn!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1703,53 +1718,53 @@ msgstr "" "Brug:\t%s [langt GNU-tilvalg] [tilvalg] ...\n" "\t%s [langt GNU-tilvalg] [tilvalg] skript-fil ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Lange GNU-tilvalg:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Skal-tilvalg:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD eller -c kommando eller -O shopt_option\t\t(kun programkald)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\tTilvalg -%s eller -o\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Skriv \"%s -c \"help set\"\" for at fÃ¥ mere information om skaltilvalg.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Skriv \"%s -c help\" for at fÃ¥ mere information om indbyggede " "skalkommandoer.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Brug kommandoen \"bashbug\" til at rapportere fejl.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: ugyldig handling" @@ -1925,104 +1940,109 @@ msgstr "Ukendt signal #" msgid "Unknown Signal #%d" msgstr "Ukendt signal #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "dÃ¥rlig udskiftning: ingen lukkende \"%s\" i %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: kan ikke tildele liste til arrayelementer" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "kan ikke lave datakanal (pipe) til procesudskiftning" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "kan ikke danne underproces til procesudskiftning" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "kan ikke Ã¥bne navngiven datakanal (pipe) %s til læsning" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "kan ikke Ã¥bne navngiven datakanal (pipe) %s til skrivning" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "kan ikke duplikere navngiven datakanal (pipe) %s som %d" -#: subst.c:5959 +#: subst.c:6062 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "dÃ¥rlig udskiftning: ingen lukkende \"`\" i %s" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "kan ikke danne datakanal (pipe) til kommandoudskiftning" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "kan ikke danne underproces til kommandoudskiftning" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: kan ikke duplikere datakanal (pipe) som fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%d: ugyldig filbeskrivelse: %s" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: dÃ¥rlig udskiftning" - # -c Specify the number of lines read between each call to callback. -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: ugyldigt antal linjer" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "\"%s\": ugyldigt tastetildelingsnavn" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter null eller ikke indstillet" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter null eller ikke indstillet" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: understreng-udtryk < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: dÃ¥rlig udskiftning" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: kan ikke tildele pÃ¥ denne mÃ¥de" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "dÃ¥rlig udskiftning: ingen lukkende \"`\" i %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "intet match: %s" @@ -2045,30 +2065,35 @@ msgstr "\")\" forventet" msgid "`)' expected, found %s" msgstr "\")\" forventet, fandt %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: unær operator forventet" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: binær operator forventet" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "manglende \"]\"" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "ugyldigt signalnummer" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: dÃ¥rlig værdi i trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2076,85 +2101,85 @@ msgstr "" "run_pending_traps: signalhÃ¥ndtering er SIG_DFL, gensender %d (%s) til mig " "selv" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: ugyldigt signal %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "fejl under importering af funktionsdefinition for \"%s\"" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "skalniveau (%d) for højt, genindstiller til 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ingen funktionskontekst ved nuværende navneomrÃ¥de" -#: variables.c:2432 +#: variables.c:2674 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: kan ikke tildele liste til arrayelementer" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%d: ugyldig filbeskrivelse: %s" +msgstr "" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ingen funktionskontekst ved nuværende navneomrÃ¥de" -#: variables.c:4218 +#: variables.c:4698 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parameter null eller ikke indstillet" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "ugyldigt tegn %d i exportstr for %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "intet \"=\" i exportstr for %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: hoved af shell_variables er ikke en funktionskontekst" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ingen global_variables-kontekst" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: hoved af shell_variables er ikke et midlertidigt miljønavnerum" -#: variables.c:5619 +#: variables.c:6272 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: kan ikke Ã¥bne: %s" -#: variables.c:5624 +#: variables.c:6277 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: ugyldig filbeskrivelse: %s" -#: variables.c:5669 +#: variables.c:6322 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s udenfor rækkevidde" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2180,22 +2205,22 @@ msgstr "Dette er fri software; du kan frit ændre eller redistribuere det.\n" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Der er INGEN GARANTI i det omfang loven tillader.\n" -#: xmalloc.c:91 +#: xmalloc.c:93 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "xmalloc: kan ikke allokere %lu bytes (%lu bytes allokeret)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes" msgstr "xmalloc: kan ikke allokere %lu bytes" -#: xmalloc.c:163 +#: xmalloc.c:165 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "xmalloc: %s:%d: kan ikke allokere %lu bytes (%lu bytes allokeret)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "xmalloc: %s:%d: kan ikke allokere %lu bytes" @@ -2420,13 +2445,13 @@ msgstr "umask [-p] [-S] [tilstand]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "wait [id]" #: builtins.c:181 #, fuzzy msgid "wait [pid ...]" -msgstr "wait [id]" +msgstr "wait [pid]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2515,7 +2540,7 @@ msgstr "printf [-v var] format [argumenter]" #: builtins.c:231 #, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2535,7 +2560,7 @@ msgstr "" #: builtins.c:239 #, fuzzy -msgid "compopt [-o|+o option] [-DE] [name ...]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o valgmulighed] [navn ...]" #: builtins.c:242 @@ -2548,9 +2573,10 @@ msgstr "" "[-c kvantum] [array]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n antal] [-O oprindelse] [-s antal] [-t] [-u fd] [-C " "tilbagekald] [-c kvantum] [array]" @@ -2732,6 +2758,7 @@ msgstr "" "1." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2742,7 +2769,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Eksekver en skal-indbygget funktion.\n" " \n" @@ -2985,11 +3012,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3112,6 +3139,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3146,7 +3179,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre der opstÃ¥r en skrivefejl." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3168,7 +3201,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre der opstÃ¥r en skrivefejl." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3223,7 +3256,7 @@ msgstr "" " Returnerer succes med mindre NAVN ikke er en skal-indbygget eller hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3245,7 +3278,7 @@ msgstr "" "er\n" " null." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3325,7 +3358,7 @@ msgstr "" " Returnerer succes hvis et tilvalg findes, fejler hvis afslutningen\n" " af tilvalgene nÃ¥s eller hvis der opstÃ¥r en fejl." -#: builtins.c:688 +#: builtins.c:692 #, fuzzy msgid "" "Replace the shell with the given command.\n" @@ -3369,7 +3402,7 @@ msgstr "" "der\n" " opstÃ¥r en omdirigeringsfejl." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3381,7 +3414,7 @@ msgstr "" " Afslut skallen med status N. Hvis N udelades vil afslutningsstatus\n" " blive den samme som sidst eksekverede kommando." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3395,7 +3428,7 @@ msgstr "" "hvis\n" " den ikke eksekveres i en logindskal." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3456,7 +3489,7 @@ msgstr "" "hvis\n" " der opstod en fejl." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3479,7 +3512,7 @@ msgstr "" "der\n" " opstÃ¥r fejl." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3504,7 +3537,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:787 +#: builtins.c:791 #, fuzzy msgid "" "Remember or display program locations.\n" @@ -3549,7 +3582,7 @@ msgstr "" "angives\n" " et ugyldig tilvalg." -#: builtins.c:812 +#: builtins.c:816 #, fuzzy msgid "" "Display information about builtin commands.\n" @@ -3565,7 +3598,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3591,7 +3624,7 @@ msgstr "" " Returnerer succes med mindre MØNSTER ikke kan findes, eller hvis der\n" " angives et ugyldigt tilvalg." -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3601,7 +3634,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3660,7 +3694,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:872 +#: builtins.c:877 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3710,7 +3744,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl. Hvis -x bruges returneres afslutningsstatus for KOMMANDO." -#: builtins.c:899 +#: builtins.c:904 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3742,7 +3776,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre et ugyldigt tilvalg eller JOBSPEC angives." -#: builtins.c:918 +#: builtins.c:923 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3790,7 +3824,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:942 +#: builtins.c:947 #, fuzzy msgid "" "Evaluate arithmetic expressions.\n" @@ -3877,7 +3911,7 @@ msgstr "" " Hvis det sidste ARG evalueres til 0, vil \"let\" returnere 1, ellers\n" " returneres 0." -#: builtins.c:987 +#: builtins.c:992 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3899,7 +3933,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3974,7 +4008,7 @@ msgstr "" "indtræffer,\n" " eller hvis en ugyldig fildeskriptor gives som argument til -u." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3999,7 +4033,7 @@ msgstr "" "en\n" " funktion eller et skript." -#: builtins.c:1047 +#: builtins.c:1052 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4184,7 +4218,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre der angives et ugyldigt tilvalg." -#: builtins.c:1132 +#: builtins.c:1137 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4226,7 +4260,7 @@ msgstr "" "et\n" " givent navn er skrivebeskyttet." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4262,7 +4296,7 @@ msgstr "" " Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n" " NAVN er ugyldig." -#: builtins.c:1173 +#: builtins.c:1178 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4302,7 +4336,7 @@ msgstr "" " Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n" " NAVN er ugyldigt." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4321,7 +4355,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre N er negativ eller større end $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4347,7 +4381,7 @@ msgstr "" "hvis\n" " FILNAVN ikke kan læses." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4374,7 +4408,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:1254 +#: builtins.c:1259 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4536,7 +4570,7 @@ msgstr "" " Returnerer succes hvis UDTRYK evalueres til sand, og fejler hvis UDTRYK\n" " evalueres til falsk eller hvis der gives et ugyldigt argument." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4549,7 +4583,7 @@ msgstr "" "sidste\n" " argument skal være \"]\", for at den passer til den Ã¥bnende \"[\"." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4569,7 +4603,7 @@ msgstr "" " Afslutningsstatus:\n" " Lykkes altid." -#: builtins.c:1357 +#: builtins.c:1362 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4650,7 +4684,7 @@ msgstr "" "angivet\n" " et ugyldigt tilvalg." -#: builtins.c:1393 +#: builtins.c:1398 #, fuzzy msgid "" "Display information about command type.\n" @@ -4713,7 +4747,7 @@ msgstr "" "enkelt\n" " ikke findes." -#: builtins.c:1424 +#: builtins.c:1429 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4809,7 +4843,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4847,7 +4881,7 @@ msgstr "" "ugyldigt\n" " tilvalg angives." -#: builtins.c:1494 +#: builtins.c:1499 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4856,13 +4890,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4882,7 +4918,7 @@ msgstr "" "angives\n" " et ugyldigt tilvalg." -#: builtins.c:1515 +#: builtins.c:1523 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4908,7 +4944,7 @@ msgstr "" " Returnerer statussen for ID, fejler hvis ID er ugyldig eller hvis der\n" " angives et ugyldigt tilvalg." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4933,7 +4969,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen for den sidst eksekverede kommando." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4963,7 +4999,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer afslutningsstatussen for den sidst eksekverede kommando." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5001,7 +5037,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5030,7 +5066,7 @@ msgstr "" " Afslutningsstatus:\n" " Afslutningsstatus er afslutningsstatus for DATAKANAL." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5049,7 +5085,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5088,7 +5124,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5106,7 +5142,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5124,7 +5160,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1653 +#: builtins.c:1661 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5148,7 +5184,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer afslutningsstatussen for KOMMANDO." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5172,7 +5208,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre NAVN er skrivebeskyttet." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5190,7 +5226,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5217,7 +5253,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen af det genoptagede job." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5236,7 +5272,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer 1 hvis udtrykket evalueres til 0, ellers returneres 0." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5291,7 +5327,7 @@ msgstr "" " Afslutningsstatus:\n" " 0 eller 1 afhængigt af udtrykkets værdi." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5404,7 +5440,7 @@ msgstr "" " HISTIGNORE\tEn kolonsepareret liste af mønstre som bliver brugt til at\n" " \t\tbestemme hvilke kommandoer der skal gemmes i historikken.\n" -#: builtins.c:1803 +#: builtins.c:1811 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5464,7 +5500,7 @@ msgstr "" "hvis\n" " mappeskiftet mislykkes." -#: builtins.c:1837 +#: builtins.c:1845 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5519,7 +5555,7 @@ msgstr "" "hvis\n" " mappeskiftet mislykkes." -#: builtins.c:1867 +#: builtins.c:1875 #, fuzzy msgid "" "Display directory stack.\n" @@ -5574,14 +5610,14 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5615,7 +5651,7 @@ msgstr "" "et\n" " ugyldigt tilvalg eller hvis INDSTNAVN er deaktiveret." -#: builtins.c:1919 +#: builtins.c:1927 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5682,7 +5718,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en skrive- eller tildelingsfejl." -#: builtins.c:1953 +#: builtins.c:1961 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5701,10 +5737,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5730,7 +5770,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5755,7 +5795,7 @@ msgstr "" " der opstÃ¥r en fejl." # Fejlrapport -#: builtins.c:1996 +#: builtins.c:2006 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5771,6 +5811,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5817,7 +5858,7 @@ msgstr "" "hvis\n" " der ikke er defineret en fuldførselsspecifikation for NAVN." -#: builtins.c:2026 +#: builtins.c:2037 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5896,7 +5937,7 @@ msgstr "" "hvis\n" " ARRAY er skrivebeskyttet." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5907,9 +5948,17 @@ msgstr "" " Et synonym for \"mapfile\"." #, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." +#, fuzzy +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Licens GPLv3+: GNU GPL version 3 eller senere \n" + #~ msgid ":" #~ msgstr ":" @@ -5922,25 +5971,6 @@ msgstr "" #~ msgid "times" #~ msgstr "times" -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." - -#, fuzzy -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." - -#, fuzzy -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Licens GPLv3+: GNU GPL version 3 eller senere \n" - -#~ msgid "wait [pid]" -#~ msgstr "wait [pid]" - #~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" #~ msgstr "xrealloc: kan ikke allokere %lu bytes (%lu bytes allokeret)" diff --git a/po/de.gmo b/po/de.gmo index 887bdc7b1..402eb9fe2 100644 Binary files a/po/de.gmo and b/po/de.gmo differ diff --git a/po/de.po b/po/de.po index 689eba6eb..c5c5794c6 100644 --- a/po/de.po +++ b/po/de.po @@ -1,138 +1,141 @@ -# German language file for GNU Bash 4.4-beta1 -# Copyright (C) 2011 Free Software Foundation, Inc. +# German language file for GNU Bash 4.4 +# Copyright (C) 2018 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Nils Naumann , 1996-2016. +# Nils Naumann , 1996-2018. msgid "" msgstr "" -"Project-Id-Version: bash 4.4-beta1\n" +"Project-Id-Version: bash 5.0-beta2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2016-08-27 15:19+0200\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2018-12-01 23:58+0100\n" "Last-Translator: Nils Naumann \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Language: de\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "Falscher Feldbezeichner." -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: Entferne das Nameref Attribut." -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "%s: Kann nicht das indizierte in ein assoziatives Array umwandeln." +msgstr "" +"%s: Das indizierte Array kann in kein assoziatives Array umgewandelt werden." -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: Ungültiger Schlüssel für das assoziative Array." -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" -msgstr "%s: Kann nicht auf einen nicht-numerischen Index zuweisen." +msgstr "%s: Das Zuweisen auf ein nicht-numerischen Index ist nicht möglich." -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: Ein Feldbezeicher wird zum Zuweisen eines assoziativen Arrays " "benötigt." -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: Kann die Datei %s nicht erzeugen." -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: Kann nicht die Tastenzuordnung für das Kommando " "finden." -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr " %s: Das erste Zeichen ist nicht `\\'." -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "fehlende schließende `%c' in %s." -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: Fehlender Doppelpunkt." -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "Klammererweiterung: Konnte keinen Speicher für %s zuweisen." -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "Klammererweiterung: Konnte für %d Elemente keinen Speicher zuweisen." +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" +"Klammererweiterung: Für %u Elemente konnte kein Speicher zuweisen werden." -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "Klammererweiterung: Konnte keinen Speicher für `%s' zuweisen." -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': Ungültiger Alias Name." -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "Zeileneditierung ist nicht aktiviert." -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" -msgstr "`%s': Ungültiger KEYMAP Name." +msgstr "`%s': Ungültiger KEYMAP-Name." -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: Nicht lesbar: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': Bindung kann nicht gelöst werden." - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "%s: Unbekannter Funktionsname." -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s ist keiner Taste zugeordnet.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s kann aufgerufen werden durch " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': Bindung kann nicht gelöst werden." + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "Schleifen Zähler" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "nur in einer `for', `while' oder `until' Schleife sinnvoll." @@ -144,235 +147,234 @@ msgid "" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME ist nicht zugewiesen." -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "Zu viele Argumente." -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "kein anderes Verzeichnis" +msgstr "NULL Verzeichnis" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD ist nicht zugewiesen." # Debug Ausgabe -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "Zeile %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "Warnung: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: Aufruf: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: Die Option erfordert ein Argument." -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: Ein numerischer Parameter ist erforderlich." -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: Nicht gefunden." -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: Ungültige Option" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: Ungültiger Optionsname." -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': Ist kein gültiger Bezeichner." -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "Ungültige Oktalzahl." -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "Ungültige hexadezimale Zahl." -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "Ungültige Zahl." -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: Ungültige Signalbezeichnung." -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': Ist keine gültige Prozess- oder Jobbezeichnung." -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: Schreibgeschützte Variable." -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s ist außerhalb des Gültigkeitsbereiches." -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "Argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s ist außerhalb des Gültigkeitsbereiches." -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: Kein solcher Job." -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: Keine Job Steuerung in dieser Shell." -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "Keine Job Steuerung in dieser Shell." -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: gesperrt" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "gesperrt" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: Ist kein Shell Kommando." -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "Schreibfehler: %s." -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "Fehler beim Setzen der Terminalattribute: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "Fehler beim Ermitteln der Terminalattribute: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: Kann das aktuelle Verzeichnis nicht wiederfinden: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: Mehrdeutige Job Bezeichnung." -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "In dieser Version ist keine Hilfe verfügbar." -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: Ungültige Methode." -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: Keine Komplettierung angegeben." -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "Warnung: Die -F Option könnte unerwartete Ergebnisse liefern." -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "Warnung: Die -C Option könnte unerwartete Ergebnisse liefern." -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "Gegenwärtig wird keine Komplettierungsfunktion ausgeführt." -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "kann nur innerhalb einer Funktion benutzt werden." -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" -msgstr "" +msgstr "%s: Zirkularbezug auf indirekte Variable." -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "`%s': Ungültiger Variablenname." +msgstr "`%s': Ungültiger Name für indirekte Variablenreferenz." -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "Mit `-f' können keine Funktionen erzeugt werden." -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: Schreibgeschützte Funktion." -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: Kann Feldvariablen nicht auf diese Art löschen." -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -395,7 +397,7 @@ msgstr "Kann %s nicht in der dynamischen Bibiliothek finden %s: %s" #: builtins/enable.def:387 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "" +msgstr "Laden der Funktion %s lieferte ein Fehler (%d): Nicht geladen." #: builtins/enable.def:512 #, c-format @@ -407,68 +409,68 @@ msgstr "%s: Ist nicht dynamisch geladen." msgid "%s: cannot delete: %s" msgstr "%s: Kann nicht löschen: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: ist ein Verzeichnis." -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: Ist keine normale Datei." -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: Die Datei ist zu groß." -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: Kann die Datei nicht ausführen." -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: Kann nicht ausführen: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "Abgemeldet\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "Keine Login Shell: Mit `exit' abmelden!" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Es gibt noch angehaltene Prozesse.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Es gibt noch laufende Prozesse.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "Kein Kommando gefunden." -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: Kann die tempräre Datei nicht öffnen: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "gegenwärtig" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "Job %d wurde ohne Jobsteuerung gestartet." @@ -483,28 +485,27 @@ msgstr "%s: Ungültige Option -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: Diese Option erfordert ein Argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "Hashing deaktiviert." -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: Die Hashtabelle ist leer.\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "Treffer\tBefehl\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Shell Kommandos auf die das Schlüsselwort zutrifft `" msgstr[1] "Shell Kommandos auf die die Schlüsselwörter zutreffen `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -512,12 +513,12 @@ msgstr "" "Auf `%s' trifft kein Hilfethema zu. Probieren Sie `help help', `man -k %s' " "oder `info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: Kann die Datei nicht öffnen: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -537,20 +538,21 @@ msgstr "" "Ein Stern (*) neben dem Namen kennzeichnet deaktivierte Kommandos.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "Es darf nur eine Option aus -anrw angegeben werden." -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "Kommandostapelposition." -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: Ungültiges Argument." +msgstr "%s: Ungültiger Zeitstempel." -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: Kommandoersetzung gescheitert." @@ -564,16 +566,16 @@ msgstr "%s: inlib gescheitert." msgid "no other options allowed with `-x'" msgstr "Keine weiteren Optionen mit `-x' erlaubt." -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: Die Argumente müssen Prozess- oder Jobbezeichnungen sein." -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Unbekannter Fehler." -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "Ausdruck erwartet." @@ -582,69 +584,69 @@ msgstr "Ausdruck erwartet." msgid "%s: not an indexed array" msgstr "%s: Ist kein indiziertes Array." -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: Ungültige Datei-Deskriptor Angabe." -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: Ungültiger Datei-Deskriptor: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: Ungültige Zeilenanzahlangabe." -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: Ungültiger Zeilenindex für den Array Beginn." -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "Fehlender Name für die Array Variable." -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "Die Array Variablen Unterstützung ist in dieser Shell nicht vorhanden." -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "`%s': Fehlendes Formatierungszeichen." -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': Ungültige Zeitformatangabe." -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "`%c': Ungültiges Formatierungszeichen." -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "Warnung: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "Formatleseproblem: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "Fehlende hexadezimale Ziffer nach \\x." -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "Fehlendes Unicode Zeichen für \\%c." @@ -658,19 +660,19 @@ msgstr "kein anderes Verzeichnis" msgid "%s: invalid argument" msgstr "%s: Ungültiges Argument." -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "Der Verzeichnisstapel ist leer." -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "Verzeichnisstapelindex" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -712,7 +714,7 @@ msgstr "" "\t-N\tZeigt den N'ten Eintrag von rechts an, der von »dirs« ausgegeben\n" "\twird, wenn es ohne Optionen aufgerufen wird, beginnend mit Null." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -758,7 +760,7 @@ msgstr "" " \n" " Das `dirs' Kommando zeigt den Verueichnisstapel an." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -804,43 +806,43 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: Ungültige Wartezeitangebe." -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "Lesefehler: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" -"»Return« ist nur aus einer Funktion oder einem mit »source« ausgefühten Skript " -"möglich." +"»Return« ist nur aus einer Funktion oder einem mit »source« ausgeführten " +"Skript möglich." -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "" "Gleichzeitiges `unset' einer Funktion und einer Variable ist nicht möglich." -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: `unset' nicht möglich." -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: `unset' nicht möglich: Schreibgeschützt %s" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: Ist keine Feldvariable." -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: Ist keine Funktion." -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: exportieren nicht möglich." @@ -849,20 +851,20 @@ msgstr "%s: exportieren nicht möglich." msgid "shift count" msgstr "Verschiebezähler" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "Kann nicht Shell Optinen gleichzeitig aktivieren und deaktivieren." -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: Ungültiger Shell Optionen Name." -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" -msgstr "Ein Dateiname wird as Argument benötigt." +msgstr "Ein Dateiname wird als Argument benötigt." -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: Datei nicht gefunden." @@ -876,61 +878,61 @@ msgstr "Kann die Shell nicht unterbrechen." msgid "cannot suspend a login shell" msgstr "Kann die Loginshell nicht unterbrechen." -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s ist ein Alias von `%s'.\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s Ist ein reserviertes Schlüsselwort der Shell.\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s ist eine Funktion.\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s ist eine spezielle eingebaute Funktion.\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s ist eine von der Shell mitgelieferte Funktion.\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s ist %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: Ungültiges Grenzwertargument." -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': Falsches Kommando." -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: Kann die nicht Grenze setzen: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "Grenze" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: Kann die Grenze nicht ändern: %s" @@ -949,366 +951,375 @@ msgstr "`%c': Ungültiger Operator für den symbolischen Modus." msgid "`%c': invalid symbolic mode character" msgstr "`%c': Ungültiges Zeichen im symbolischen Modus." -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " Zeile " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "Letztes Kommando: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Abbruch..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "INFO: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "Unbekanntes Kommando" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "" # Programmierfehler -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "Falscher Sprung" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s ist nicht gesetzt." -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aZu lange keine Eingabe: Automatisch ausgeloggt.\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "Kann nicht die Standardeingabe von /dev/null umleiten: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': Ungültiges Formatzeichen." -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "Pipe-Fehler" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: Maximale Schachtelungstiefe überschritten (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: Maximale Quellcode Schachtelungstiefe überschritten (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximale Funkrionsschachtelungstiefe überschritten (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: Verboten: `/' ist in Kommandonamen unzulässig." -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: Kommando nicht gefunden." -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: Defekter Interpreter" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: Kann die Binärdatei nicht ausführen: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "`%s' ist eine spezielle eingebaute Funktion." -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "Kann fd %d nicht auf fd %d verdoppeln." -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "Zu viele Rekursionen in Ausdruck." -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "Rekursionsstapel leer." -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "Syntaxfehler im Ausdruck." -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "Versuchte Zuweisung zu keiner Variablen." -#: expr.c:495 expr.c:858 +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "Syntaxfehler in der Variablenzuweisung." + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "Division durch 0." -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "Fehler: Falscher Zuweisungsoperator." -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "`:' für ein bedingten Ausdruck erwaret." -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "Der Exponent ist kleiner als 0." -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "Nach einem Präinkrement oder Prädekrement wird ein Bezeichner erwartet." -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "Fehlende `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "Syntax Fehler: Operator erwartet." -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "Syntaxfehler: Ungültiger arithmetischer Operator." -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (Fehlerverursachendes Zeichen ist \\\"%s\\\")." -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "Ungültige Basis." -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "Der Wert ist für die aktuelle Basis zu groß." -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: Fehler im Ausdruck.\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getwd: Kann auf das übergeordnete Verzeichnis nicht zugreifen." -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "Konnte den No-Delay Modus für fd %d nicht wieder herstellen." -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "Kann keinen neuen Filedeskriptor für die Eingabe von fd %d zuweisen." # Debug Ausgabe -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: Es existiert bereits ein Puffer für den neuen fd %d." -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "Die geforkte PID %d erscheint im laufenden Prozess %d." -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "Lösche den gestoppten Prozess %d der Prozessgruppe %ld." -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" # Programmierfehler -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" -msgstr "describe_pid: %ld: Prozeßnummer existiert nicht." +msgstr "describe_pid: %ld: Prozessnummer existiert nicht." -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Fertig" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Angehalten" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Angehalten(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Läuft" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Fertig(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Unbekannter Status" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(Speicherabzug geschrieben) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" # interner Fehler -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" -msgstr "wait: Prozeß %ld wurde nicht von dieser Shell gestartet." +msgstr "wait: Prozess %ld wurde nicht von dieser Shell gestartet." -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: Der Job %d ist gestoppt." -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: Der Job ist beendet." -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: Der Job %d läuft bereits im Hintergrund." -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" # Debug Ausgabe -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: Zeile %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (Speicherabzug geschrieben)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(gegenwärtiges Arbeitsverzeichnis ist: %s)\n" # interner Fehler -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs: getpgrp war nicht erfolgreich." # interner Fehler -#: jobs.c:4104 +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: Keine Jobsteuerung im Hintergrund." + +# interner Fehler +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" # interner Fehler -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "Kann die Prozessgruppe des Terminals nicht setzen (%d)." -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "Keine Job Steuerung in dieser Shell." -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: Speicherzusicherung gescheitert: %s.\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1317,41 +1328,41 @@ msgstr "" "\\r\n" "malloc: %s:%d: Speicherzusicherung verpfuscht\\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "Unbekannt" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "" "Malloc: Ein frei gekennzeichneter Speicherbereich wurde überschrieben." -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: Wurde für bereits freigegebenen Speicherbereich aufgerufen." -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: Wurde für nicht zugeordneten Speicherbereich aufgerufen." -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: Beginn und Ende Segmentgrößen sind unterschiedlich." -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: Mit nicht zugewiesenen Argument aufgerufen." -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: Beginn und Ende Segmentgrößen sind unterschiedlich.<" @@ -1398,22 +1409,22 @@ msgstr "%s: Fehlerhafte Netzwerkspfadangabe." msgid "network operations not supported" msgstr "Der Netzwerkbetrieb ist nicht unterstützt." -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: Kann die Locale nicht ändern (%s)." -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: Kann die Locale nicht ändern (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: Kann die Standorteinstellungen nicht ändern (%s)." -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: Kann nicht die Locale ändern (%s): %s" @@ -1432,151 +1443,151 @@ msgstr "Sie haben neue Post in $_." msgid "The mail in %s has been read\n" msgstr "Die Post in %s wurde bereits gelesen.\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "Syntaxfehler: Es wird ein arithmetischer Ausdruck benötigt." -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "Syntax Fehler: unerwartetes `;'." -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "Syntax Fehler: `((%s))'." # interner Fehler -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: Falscher Befehlstyp %d." -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "Das in der Zeile %d beginnende Here-Dokument geht bis zum Dateiende " "(erwartet wird `%s')." -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "Dateiende beim Suchen nach `%c' erreicht." -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "Dateiende beim Suchen nach `]]' erreicht." -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "Syntaxfehler im bedingten Ausdruck: Unerwartetes Zeichen `%s'." -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "Syntaxfehler im bedingen Ausdruck." -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "Unerwartetes Zeichen: `%s' anstatt von `)'" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "`)' erwartet." -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "Syntaxfehler beim unerwarteten Wort `%s'" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "Syntaxfehler beim unerwarteten Wort `%s'" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "Syntax Fehler: Unerwartetes Dateiende." -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "Syntax Fehler" # Du oder Sie? -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Benutze \"%s\" um die Shell zu verlassen.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "Dateiende beim Suchen nach passender `)' erreicht." -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" -msgstr "" +msgstr "completion: Funktion `%s' nicht gefunden." -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1605,90 +1616,94 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" -msgstr "" +msgstr "cprintf: `%c': Ungültiges Formatsymbol." -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: Mehrdeutige Umlenkung." -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: Kann existierende Datei nicht überschreiben." -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: Gesperrt: Die Ausgabe darf nicht umgeleitet werden." -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "Kann die temporäre Datei für das Hier Dokument nicht anlegen: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: Kann fd keiner Variable zuweisen." -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port Wird ohne Netzwerk nicht unterstützt" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "Konnte das /tmp Verzeichnis nicht finden, bitte anlegen." -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" -msgstr "/tmp muß ein gültiger Verzeichnisname sein." +msgstr "/tmp muss ein gültiger Verzeichnisname sein." -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: Ungültige Option" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "Konnte nicht die uid in %d ändern: Die geltende uid ist %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "Konnte nicht die gid in %d ändern: Die geltende gid ist %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "Kann keinen Debugger starten. Der Debugmodus ist gesperrt." -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: Ist ein Verzeichnis." -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Ich habe keinen Benutzernamen!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, Version %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1697,50 +1712,50 @@ msgstr "" "Aufruf:\t%s [Lange GNU Option] [Option] ...\n" "\t\t%s [Lange GNU Option] [Option] Script-Datei ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Lange GNU Optionen:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Shell-Optionen:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" "\t-ilrsD oder -c Kommando\toder -O shopt_option (Nur Aufruf)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s oder Option -o\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "`%s -c \"help set\"' für mehr Informationen über Shell-Optionen.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "`%s -c help' für mehr Information über Shell-Kommandos.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Mit dem `bashbug' Kommando können Fehler gemeldet werden.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "Bash Homepage: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "Allgemeine Hilfe für GNU Software: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: Ungültige Operation" @@ -1819,11 +1834,11 @@ msgstr "Angehalten (Signal)" #: siglist.c:127 msgid "Continue" -msgstr "Prozeßbearbeitung wieder aufgenommen." +msgstr "Prozessbearbeitung wieder aufgenommen." #: siglist.c:135 msgid "Child death or stop" -msgstr "Kindprozeß abgebrochen oder gestoppt." +msgstr "Kindprozess abgebrochen oder gestoppt." #: siglist.c:139 msgid "Stopped (tty input)" @@ -1883,7 +1898,7 @@ msgstr "Systemausfall steht bevor." #: siglist.c:195 msgid "migrate process to another CPU" -msgstr "Verlege den Prozeß auf einen anderen Prozessor." +msgstr "Verlege den Prozess auf einen anderen Prozessor." #: siglist.c:199 msgid "programming error" @@ -1914,94 +1929,98 @@ msgstr "Unbekannte Signalnummer." msgid "Unknown Signal #%d" msgstr "Unbekanntes Signal Nr.: %d." -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Falsche Ersetzung: Keine schließende `%s' in `%s' enthalten." -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: Kann einem Feldelement keine Liste zuweisen." -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" -msgstr "Kann keine Pipe für die Prozeßersetzung erzeugen." +msgstr "Kann keine Pipe für die Prozessersetzung erzeugen." -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" -msgstr "Kann den Kindsprozess für die Prozeßersetzung nicht erzeugen." +msgstr "Kann den Kindsprozess für die Prozessersetzung nicht erzeugen." -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "Kann nicht die benannte Pipe %s zum lesen öffnen." -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "Kann nicht die benannte Pipe %s zum schreiben öffnen." -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "Kann die benannte Pipe %s nicht auf fd %d." -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "Falsche Ersetzung: Keine schließende \"`\" in %s." +msgstr "Kommansosubstitution: NULL byte in der Eingabe ignoriert." -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "Kann keine Pipes für Kommandoersetzung erzeugen." -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "Kann keinen Unterprozess für die Kommandoersetzung erzeugen." # interner Fehler -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "Kommandoersetzung: Kann Pipe nicht als fd 1 duplizieren." +msgstr "Kommandosubstitution: Kann Pipe nicht als fd 1 duplizieren." -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: Falsche Variablenersetzung." - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: Ungültige indirekte Expansion" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "`%s': Ungültiger Variablenname." -#: subst.c:6854 +#: subst.c:7056 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: Der Parameter ist nicht gesetzt." + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: Parameter ist Null oder nicht gesetzt." # interner Fehler -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: Teilstring-Ausdruck < 0." -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: Falsche Substitution." + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: Kann so nicht zuweisen." -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2009,12 +2028,12 @@ msgstr "" "Zukünftige Versionen dieser Shell werden das Auswerten arithmetischer " "Ersetzungen erzwingen." -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "Falsche Ersetzung: Keine schließende \"`\" in %s." -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "Keine Entsprechung: %s" @@ -2037,115 +2056,119 @@ msgstr "`)' erwartet." msgid "`)' expected, found %s" msgstr "`)' erwartet, %s gefunden." -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: Einstelliger (unärer) Operator erwartet." -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: Zweistelliger (binärer) Operator erwartet." -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "Fehlende `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "Ungültige Signalnummer." -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "trap handler: Maximale trap handler Ebene überschritten (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" -msgstr "" +msgstr "run_pending_traps: Ungültiger Wert in trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" # Programmierfehler -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: Falsches Signal %d." -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "Fehler beim Importieren der Funktionsdefinition für `%s'." -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" -msgstr "" +msgstr "Der Shell Level (%d) ist zu hoch und wird auf 1 zurückgesetzt." -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: Der Variable könnte kein Wert zugewiesen sein." -#: variables.c:3043 +#: variables.c:3453 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: Kann nicht als Datei geöffnet werden." -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: Kompatibilitätswert außerhalb des Gültigkeitsbereiches." #: version.c:46 version2.c:46 -#, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2015 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2168,22 +2191,22 @@ msgstr "Dies ist freie Software. Sie darf verändert und verteilt werden." msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Es wird keine Garantie gewährt, soweit das Gesetz es zulässt." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: Konnte nicht %lu Bytes reservieren (%lu bytes reserviert)." -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: Konnte nicht %lu Bytes reservieren." -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: Konnte nicht %lu Bytes reservieren (%lu bytes reserviert)." -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: Konnte nicht %lu Bytes reservieren." @@ -2202,8 +2225,8 @@ msgid "" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" "bind [-lpsvPSVX] [-m Tastaturtabelle] [-f Dateiname] [-q Name] [-u\n" -"Name] [-r Tastenfolge] [-x Tastenfolge:Shell Kommando] [Tastenfolge:readline " -"Funktion oder Kommando]" +"Name] [-r Tastenfolge] [-x Tastenfolge:Shell Kommando] [Tastenfolge:readline-" +"Funktion oder -Kommando]" #: builtins.c:56 msgid "break [n]" @@ -2235,7 +2258,7 @@ msgstr "command [-pVv] Kommando [Argument ...]" #: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilrntux] [-p] Name[=Wert] ..." +msgstr "declare [-aAfFgilrntux] [-p] [Name[=Wert] ...]" # #: builtins.c:80 @@ -2313,16 +2336,15 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [Jobbez. ...] or jobs -x Kommando [Arg]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [Jobbezeichnung ...]" +msgstr "disown [-h] [-ar] [Jobbezeichnung ... | pid ...]" #: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" -"kill [-s Signalname | -n Signalnummer | -Signalname] [pid | job] ... oder " +"kill [-s Signalname | -n Signalnummer | -Signalname] pid | jobspec ... oder " "kill -l [Signalname]" #: builtins.c:136 @@ -2398,8 +2420,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [Modus]" #: builtins.c:177 -msgid "wait [-n] [id ...]" -msgstr "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" +msgstr "wait [-fn] [id ...]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2491,13 +2513,13 @@ msgstr "printf [-v var] Format [Argumente]" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o Option] [-A Aktion] [-G Suchmuster] " -"[-W Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-" -"S Suffix] [Name ...]" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o Option] [-A Aktion]\n" +" [-G Suchmuster] [-W Wortliste] [-F Funktion] [-C Kommando]\n" +" [-X Filtermuster] [-P Prefix] [-S Suffix] [Name ...]" #: builtins.c:235 msgid "" @@ -2509,8 +2531,8 @@ msgstr "" "Suffix] [Wort]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "compopt [-o|+o Option] [-DE] [Name ...]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o Option] [-DEI] [Name ...]" #: builtins.c:242 msgid "" @@ -2522,11 +2544,11 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -"readarray [-n Anzahl] [-O Quelle] [-s Anzahl] [-t] [-u fd] [-C Callback] [-c " -"Menge] [Feldvariable]" +"readarray [-d Begrenzer] [-n Anzahl] [-O Quelle] [-s Anzahl] [-t]\n" +" [-u fd] [-C Callback] [-c Menge] [Feldvariable]" # alias #: builtins.c:256 @@ -2626,8 +2648,8 @@ msgid "" msgstr "" "Bestimmt Readline Tastenzuordnungen und Variablen.\n" " \n" -" Weist eine Tastensequenz einer Readline Funktion oder einem Makro\n" -" zu oder setzt eine Readline Variable. Der Argument syntax ist zu\n" +" Weist eine Tastensequenz einer Readlinefunktion oder -makro zu\n" +" oder setzt eine Readlinevariable. Die Argumentsyntax ist zu\n" " den Einträgen in ~/.inputrc äquivalent, aber sie müssen als\n" " einzelnes Argument übergeben werden. Z.B: bind '\"\\C-x\\C-r\":\n" " re-read-init-file'.\n" @@ -2635,7 +2657,7 @@ msgstr "" " Optionen:\n" " -m Keymap Benutzt KEYMAP as Tastaturbelegung für die " "Laufzeit\n" -" dieses Kommandos. Gültige Keymap Namen sind: " +" dieses Kommandos. Gültige Keymapnamen sind: " "emacs,\n" " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" "move,\n" @@ -2692,11 +2714,11 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" "Beendet for, while oder until Schleifen.\n" -" \n" -" Break beendet eine »for«, »while« oder »until« Schleife. Wenn »n«\n" -" angegeben ist, werden entsprechend viele geschachtelte Schleifen\n" -" beendet.\n" -" \n" +"\n" +" Break beendet eine »for«, »while« oder »until« Schleife. Wenn\n" +" »n« angegeben ist, werden entsprechend viele geschachtelte\n" +" Schleifen beendet.\n" +"\n" " Rückgabewert:\n" " Der Rückgabewert ist 0, außer »n« ist nicht größer oder gleich 1." @@ -2732,15 +2754,15 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" -"Führt eine in der Shell definierts Kommando aus.\n" -" \n" -" Führt eine in der Shell definertes Kommando aus. Dies ist dann\n" -" nützlich, wenn es mit gleichem Namen als Funktion reimplementiert\n" -" werden soll, aber die Funktionalität des eingebauten Kommandos\n" -" innerhalb der neuen Funktion benötigt wird.\n" -" \n" +"Führt ein in der Shell definiertes Kommando aus.\n" +"\n" +" Führt ein in der Shell definiertes Kommando ohne vorherige\n" +" Befehlssuche aus. Dies ist dann nützlich, wenn das Kommando als\n" +" Shell Funktion reimplementiert werden soll, aber das Kommando\n" +" innerhalb der neuen Funktion aufgerufen wird.\n" +"\n" " Rückgabewert: \n" " Der Rückgabewert des aufgerufenen Kommandos oder »falsch«, wenn\n" " dieses nicht existiert." @@ -2761,6 +2783,20 @@ msgid "" " Returns 0 unless the shell is not executing a shell function or EXPR\n" " is invalid." msgstr "" +"Gibt Informationen zum aktuellen Subrutinenaufruf aus.\n" +" \n" +" Ohne Argument wird die Zeilennummer und der Dateeiname angezeigt. Mit\n" +" Argument werden Zeilennummer, Subroutinnenname und Dateiname " +"ausgegeben.\n" +" Mit diesen Informationen kann ein Stack Trace erzeugt werden.\n" +" \n" +" Das Argument gibt die angezeigte Position im Funktionsaufrufstapel an,\n" +" wobei 0 der aktuelle Funktionsaufruf ist.\n" +" \n" +" Rückgabewert:\n" +" Ist ungleich 0 wenn keine Shellfunktion ausgeführt wird oder das " +"Argument\n" +" ungültig ist, sonst 0." # cd #: builtins.c:387 @@ -2808,44 +2844,44 @@ msgid "" " -P is used; non-zero otherwise." msgstr "" "Wechselt das Arbeitsverzeichnis.\n" -" \n" -" Wechselt in das angegebene Abeitsverzeichnis. Ohne Angabe eines\n" +"\n" +" Wechselt in das angegebene Arbeitsverzeichnis. Ohne Angabe eines\n" " Verzeichnisses wird in das in der HOME Variable definierte\n" " Verzeichnis gewechselt.\n" -" \n" +"\n" " Die Variable CDPATH definiert den Suchpfad, in dem nach dem\n" " angegebeben Verzeichnisnamen gesucht wird. Mehrere Pfade werden\n" " durch Doppelpunkte »:« getrennt. Ein leerer Pfadname entspricht\n" " dem aktuellen Verzeichnis. Mit einem vollständigen Pfadnamen wird\n" " CDPATH nicht benutzt.\n" -" \n" -" Wird kein entsprechendes Verzeichnis gefunden und die Shell Option\n" +"\n" +" Wird kein entsprechendes Verzeichnis gefunden und die Shelloption\n" " `cdable_vars' ist gesetzt, dann wird der `Wert' als Variable\n" " interpretiert. Dessen Inhalt wird dann als Verzeichnisname\n" " verwendet.\n" -" \n" +"\n" " Optionen:\n" -" -L\tErzwingt das symbolischen Verweisen gefolgt wird.\n" +" -L\tErzwingt, dass symbolischen Verweisen gefolgt wird.\n" " Symbolische Links im aktuellen Verzeichnis werden nach\n" " dem übergeordneten Verzeichnis aufgelöst.\n" " -P\tSymbolische Verweise werden ignoriert. Symbolische\n" " Links im aktuellen Verzeichnis werden vor dem\n" " übergeordneten Verzeichnis aufgelöst.\n" -" -e\tWenn mit der »-P« das aktuelle Arbeitsverzeichns nicht\n" -" ermittelt werden kann, wird mit einem Rückgabwert\n" -" ungleich 0 abgebrochen.\n" -" -@ Wenn es das System unterstützt wird eine Datei mit \n" +" -e\tWenn mit der »-P« das aktuelle Arbeitsverzeichnis\n" +" nicht ermittelt werden kann, wird mit einem\n" +" Rückgabwert ungleich 0 abgebrochen.\n" +" -@ Wenn es das System unterstützt, wird eine Datei mit\n" " erweiterten Attributen als ein Verzeichnis angezeigt,\n" " welches die erweiterten Attribute enthält.\n" -" \n" +"\n" " Standardmäßig wird symbolischen Verweisen gefolgt (Option -L).\n" " Das übergeordnete Verzeichnis wird ermittelt, indem der\n" " Dateiname am letzten Schrägstrich gekürzt wird oder es wird der\n" " Anfang von DIR verwendet.\n" -" \n" +"\n" " Rückgabewert:\n" "\n" -" Der Rückgabewert ist 0, wenn das Verzeichnis erfolgreiche\n" +" Der Rückgabewert ist 0, wenn das Verzeichnis erfolgreich\n" " gewechselt wurde, oder wenn die -P Option angegeben und $PWD\n" " erfolgreich gesetzt werden konnte. Sonst ist er ungleich 0." @@ -2981,11 +3017,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3011,9 +3047,9 @@ msgstr "" " -f\tSchränkt Aktionen oder Anzeigen auf Funktionsnamen\n" "\t\tund Definitionen ein.\n" " -F\tZeigt nur Funktionsnamen an (inklusive Zeilennummer\n" -" \t\tund Quelldatei beim debuggen).\n" -" -g\tDeklariert innerhalb ener Shellfunktion globale\n" -" Variablen; wird sonst ignoriert.\n" +" \t\tund Quelldatei beim Debuggen).\n" +" -g\tDeklariert globale Varieblen innerhalb einer\n" +" Shellfunktion; wird ansonsten ignoriert.\n" " -p\tZeigt die Attribute und Werte jeder angegebenen\n" " Variable an.\n" " \n" @@ -3043,7 +3079,6 @@ msgstr "" " oder ein Fehler trat auf." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3051,7 +3086,7 @@ msgid "" msgstr "" "Setzt Variablen Werte und Eigenschaften\n" "\n" -" Veraltet. Siehe `help declare'." +" Synonym für `declare'. Siehe `help declare'." #: builtins.c:538 msgid "" @@ -3069,7 +3104,7 @@ msgid "" msgstr "" "Definiert lokale Variablen.\n" " \n" -" Erzeugt eine Lokale Variable NAME und weist ihr den Wert VALUE zu.\n" +" Erzeugt eine lokale Variable NAME und weist ihr den Wert VALUE zu.\n" " OPTION kann eine beliebige von `declare' akzeptierte Option sein.\n" "\n" " Lokale Variablen können nur innerhalb einer Funktion benutzt\n" @@ -3083,6 +3118,7 @@ msgstr "" # echo #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3111,6 +3147,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3145,7 +3187,7 @@ msgstr "" " Rückgabewert:\n" " Gibt »Erfolg« zurück, außer ein Ausgabefehler tritt auf." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3157,9 +3199,19 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Ausgabe der Argumente auf die Standardausgabe.\n" +" \n" +" Zeigt die Argumente auf der Standardausgabe von einem\n" +" Zeilenumbruch gefolgt an.\n" +" \n" +" Option:\n" +" -n\tkeinen Zeilenumbruch anfügen.\n" +" \n" +" Rückgabewert:\n" +" Gibt »Erfolg« zurück, außer nach einem Schreibfehler." # enable -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3215,7 +3267,7 @@ msgstr "" " Gibt »Erfolg« zurück, außer NAME ist kein eingebautes Kommando \n" " oder ein Fehler tritt auf." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3236,7 +3288,7 @@ msgstr "" " Der Status des Kommandoe oder Erfolg wenn das Kommando leer war." # getopts -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3317,7 +3369,7 @@ msgstr "" " aufgetreten ist." # exec -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3359,7 +3411,7 @@ msgstr "" " ein Weiterleitungsfehler trat auf." # exit -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3368,12 +3420,12 @@ msgid "" msgstr "" "Beendet die aktuelle Shell.\n" "\n" -" Beendt die die aktuelle Shell mit dem Rückgabewert N. Wenn N nicht " +" Beendet die aktuelle Shell mit dem Rückgabewert N. Wenn N nicht " "angegeben ist,\n" " wird der Rückgabewert des letzten ausgeführten Kommandos übernommen." # logout -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3388,7 +3440,7 @@ msgstr "" " zurückgegeben." # fc -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3418,7 +3470,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3438,7 +3490,7 @@ msgstr "" " Rückgabewert:\n" " Status des in den Vordergrund geholten Jobs oder Fehler." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3460,7 +3512,7 @@ msgstr "" " Immer Erfolg, außer wenn die Jobsteuerung nicht verfügbar ist\n" " oder ein Fehler auftritt." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3485,7 +3537,7 @@ msgid "" msgstr "" # help -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3500,7 +3552,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3526,7 +3578,7 @@ msgstr "" " Erfolg, außer wenn das Muster nicht gefunden oder eine ungültige Option\n" " angegeben wurde." -#: builtins.c:836 +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3535,7 +3587,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3560,7 +3613,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3584,7 +3637,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3601,7 +3654,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:918 +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3624,7 +3677,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3669,7 +3722,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3690,7 +3743,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3721,7 +3774,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3733,7 +3786,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3819,7 +3872,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3841,7 +3894,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3860,7 +3913,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3881,7 +3934,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -3892,7 +3945,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3906,7 +3959,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -3920,7 +3973,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4004,7 +4057,7 @@ msgid "" msgstr "" # [ -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4018,7 +4071,7 @@ msgstr "" " schließt." # times -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4037,7 +4090,7 @@ msgstr "" " Rückgabewert:\n" " Immer 0." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4081,7 +4134,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4111,7 +4164,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4160,7 +4213,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4178,7 +4231,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4186,19 +4239,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4213,7 +4268,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4226,7 +4281,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4243,7 +4298,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4263,7 +4318,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4279,7 +4334,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4290,7 +4345,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4311,7 +4366,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4322,7 +4377,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4333,7 +4388,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1653 +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4346,7 +4401,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -4360,7 +4415,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -4371,7 +4426,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -4386,7 +4441,7 @@ msgid "" msgstr "" # (( )) -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4406,7 +4461,7 @@ msgstr "" " Gibt »1« zurück, wenn die Auswertung des letzten Arguments Null\n" " ergibt, sonst »0«." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -4435,7 +4490,7 @@ msgid "" msgstr "" # variable_help -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4526,13 +4581,13 @@ msgstr "" " SHELLOPTS Durch Doppelpunkt getrennte Liste der aktiven\n" " Shell Optionen.\n" " TERM\tName des aktuellen Terminaltyps.\n" -" auto_resume Ein Wert ungleich Null bewirkt, daß ein einzelnes\n" +" auto_resume Ein Wert ungleich Null bewirkt, dass ein einzelnes\n" " Kommando auf einer Zeile zunächst in der Liste\n" " gegenwärtig gestoppter Jobs gesucht und dieser in den\n" -" Vordergrund geholt wird. `exact' bewirkt, daß das\n" +" Vordergrund geholt wird. `exact' bewirkt, dass das\n" " Kommando genau dem Kommando in der Liste der\n" -" gestoppten Jobs entsprechen muß. Wenn die Variable den\n" -" Wert `substring' enthält, muß das Kommando einem\n" +" gestoppten Jobs entsprechen muss. Wenn die Variable den\n" +" Wert `substring' enthält, muss das Kommando einem\n" " Substring der Jobbezeichnung entsprechen. Bei einem\n" " anderen Wert müssen die ersten Zeichen übereinstimmen.\n" " histchars Zeichen, die die Befehlswiederholung und die\n" @@ -4547,7 +4602,7 @@ msgstr "" " Kommandos angibt.\n" # pushd -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -4579,22 +4634,22 @@ msgid "" msgstr "" "Fügt ein Verzeichnis dem Stapel hinzu.\n" "\n" -" Legt ein Verzeichnisnamen auf den Verzeichnisstapel oder rotiert\n" +" Legt einen Verzeichnisnamen auf den Verzeichnisstapel oder rotiert\n" " diesen so, dass das aktuelle Arbeitsverzeichnis oben liegt. Ohne\n" " Argumente werden die obersten zwei Verzeichnisse auf dem Stapel\n" " vertauscht.\n" "\n" " Optionen: -n Es wird nur das angebene Verzeichnis dem Stapel\n" -" \thinzugefügt aber nicht in das Verzeichnis gewechselt.\n" +" \thinzugefügt, aber nicht in das Verzeichnis gewechselt.\n" "\n" " Argumente: \n" -" +N\tRotiert den Stapel so, daß das N'te Verzeichnis (angezeigt von\n" -" \t`dirs',gezählt von links) oben auf dem Stapels liegt.\n" +" +N\tRotiert den Stapel so, dass das N'te Verzeichnis (angezeigt\n" +" von `dirs', gezählt von links) oben auf dem Stapels liegt.\n" +"\n" +" -N\tRotiert den Stapel so, dass das N'te Verzeichnis (angezeigt\n" +" von `dirs', gezählt von rechts) sich an der Spitze des Stapels\n" +" \tbefindet.\n" "\n" -" -N\tRotiert den Stapel so, daß das N'te Verzeichnis (angezeigt von\n" -" \t-`dirs',gezählt von rechts) sich an der Spitze des Stapels\n" -" \t-befindet.\n" -" \n" " Der Verzeichnisstapel kann mit dem Kommando `dirs' angezeigt\n" " werden.\n" "\n" @@ -4603,7 +4658,7 @@ msgstr "" " wurde oder der Verzeichniswechsel nicht erfolgreich war." # popd -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -4657,7 +4712,7 @@ msgstr "" " wurde oder der Verzeichniswechsel nicht erfolgreich war." # dirs -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -4711,14 +4766,13 @@ msgstr "" " Gibt Erfolg zurück, außer bei einer ungültigen Option oder wenn\n" " ein Fehler auftritt." -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4740,7 +4794,7 @@ msgstr "" " Optionen:\n" " -o Beschränkt die Optionsmanen auf die, welche mit \n" " `set -o' definiert werden müssen.\n" -" -p Gibt alle Shelloptionen und deren Stati aus.\n" +" -p Gibt alle Shelloptionen und deren Stati aus. \n" " -q Unterdrückt Ausgaben.\n" " -s Setzt jede Option in `Optionsname.'\n" " -u Deaktiviert jede Option in `Optionsname'.\n" @@ -4751,7 +4805,7 @@ msgstr "" " worden ist, wird Fehler zurückgegeben." # printf -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4789,10 +4843,42 @@ msgid "" "assignment\n" " error occurs." msgstr "" -"Returns success unless an invalid option is given or a write or\n" -" assignment error occurs.<" - -#: builtins.c:1953 +"Formatierte Ausgabe der ARGUMENTE.\n" +" \n" +" Optionen:\n" +" -v var\tDie formatierte Ausgabe ver Variable var zuweisen statt\n" +" \t\tsie an die Standardausgebe zu senden.\n" +" \n" +" Die FORMAT Zeichenkette kann einfache Zeichen enthalten, die unverändert " +"an\n" +" die Standardausgabe geschickt werden. Escape-Sequenzen werden " +"umgewandelt\n" +" und an die Standardausgabe geschickt sowie Formatanweisungen, welche " +"das \n" +" nachfolgende ARGUMENT auswerten und ausgeben.\n" +" \n" +" Gegenüber der in printf(1) beschriebenen Standardverion werden " +"zusätzliche\n" +" Formatanweisungen ausgewertet:\n" +" \n" +" %b\tWertet Escape-Sequenzen des zugehörigen Arguments aus.\n" +" %q\tBettet das Argument so ein, dass es als Shelleingabe\n" +" verwendet werden kann.\n" +" %(fmt)T\tAusgabe der aus FMT entstehende Datum-Zeit Zeichenkette, " +"dass\n" +" \t sie als Zeichenkette für strftime(3) verwendet werden kann.\n" +" \n" +" Die Formatangebe wird wiederverwendet bis alle Argmente ausgewertet " +"sind.\n" +" Wenn weniger Argumente als Formatangaben vorhanden sind, werden für die\n" +" Argumente Nullwerte bzw. leere Zeichenketten eingesetzt.\n" +" \n" +" Rücgabewert:\n" +" Gibt Erfolg zurück, außer es wird eine ungültige Option angegeben oder " +"ein\n" +" Aus- bzw. Zuweisungsfehler auftritt." + +#: builtins.c:1961 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4810,16 +4896,21 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +# compgen +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4831,8 +4922,16 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Zeigt mögliche Komplettierungen.\n" +" \n" +" Wird Shell Funktionen benutzt, um mögliche Komplettierungen anzuzeigen.\n" +" Wenn das optionale Wort-Argument angegeben ist, werden Komplettierungen\n" +" für dieses Wort erzeugt.\n" +" \n" +" Rückgabewert:\n" +" Falsche Optionen oder Fehler führen zu Rückgabewerten ungleich Null." -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -4847,6 +4946,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -4863,7 +4963,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4906,7 +5006,7 @@ msgid "" msgstr "" # readarray -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4915,18 +5015,3 @@ msgstr "" "Liest Zeilen einer Datei in eine Array Variable.\n" "\n" " Ist ein Synonym für `mapfile'." - -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "true" - -#~ msgid "false" -#~ msgstr "false" - -#~ msgid "times" -#~ msgstr "times" diff --git a/po/el.gmo b/po/el.gmo index f7c64e50c..6134898bb 100644 Binary files a/po/el.gmo and b/po/el.gmo differ diff --git a/po/el.po b/po/el.po index d57d327cc..5eae34abf 100644 --- a/po/el.po +++ b/po/el.po @@ -2,135 +2,136 @@ # Copyright (C) 2013 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # -# Lefteris Dimitroulakis , 2013, 2016. +# Lefteris Dimitroulakis , 2013, 2016, 2017. msgid "" msgstr "" -"Project-Id-Version: bash-4.4-beta1\n" +"Project-Id-Version: bash-4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2016-06-02 01:32+0300\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2017-06-21 17:08+0300\n" "Last-Translator: Lefteris Dimitroulakis \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: el\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 1.5\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" -msgstr "" +msgstr "κακός δείκτης πίνακα" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: αφαίρεση του χαρακτηριστικού nameref " -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "" +msgstr "%s: αδυναμία μετατροπής indexed πίνακα σε associative πίνακα " -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" -msgstr "" +msgstr "%s: μη έγκυρο κλειδί associative πίνακα " -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" -msgstr "" +msgstr "%s: αδυναμία εκχώρησης σε μη αριθμητικό δείκτη " -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: αδυναμία δημιουργίας: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: δεν μπορώ να βρω keymap για εντολή" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "%s: ο πρώτος μη-λευκό διάστημα χαρακτήρας δεν είναι «\"»" +msgstr "%s: ο πρώτος μη-λευκό διάστημα χαρακτήρας δεν είναι «\"» " -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" -msgstr "" +msgstr "όχι «%c» κλεισήματος σε %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" -msgstr "" +msgstr "%s: απουσιάζει διαχωριστής δίστιγμο " -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "brace expansion: αδυναμία εκχώρησης μνήμης για %s " -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "brace expansion: αδυναμία εκχώρησης μνήμης για %d στοιχεία " -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "brace expansion: αδυναμία εκχώρησης μνήμης για «%s»" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "«%s»: μη έγκυρο ψευδώνημο" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "μη ενεργοποιημένο line editing" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "«%s»: μη έγκυρο όνομα keymap" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: αδυναμία ανάγνωσης: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "«%s»: αδυναμία αποσύνδεσης" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "«%s»: άγνωστο όνομα συνάρτησης" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s δεν έχει συνδεθεί με κανένα πλήκτρο.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s μπορεί να κληθεί μέσω " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: αδυναμία αποσύνδεσης" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "αριθμός βρόχων" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "έχει μόνο νόημα σε ένα βρόχο «for», «while», ή «until»" @@ -140,239 +141,241 @@ msgid "" " \n" " Without EXPR, returns " msgstr "" +"Επιστρέφει το context της κλήσης της τρέχουσας υπορουτίνας.\n" +" \n" +" Χωρίς EXPR, επιστρέφει " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME δεν έχει οριστεί" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "πάρα πολλά ορίσματα" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "όχι άλλος κατάλογος" +msgstr "κατάλογος nul" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD δεν έχει οριστεί" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "γραμμή %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "προειδοποίηση: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: χρήση: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: η επιλογή απαιτεί όρισμα" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: απαιτείται αριθμητικό όρισμα" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: δεν βρέθηκε" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: μη έγκυρη επιλογή" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: μη έγκυρο όνομα επιλογής" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" -msgstr "" +msgstr "«%s»: μή έγκυρο αναγνωριστικό " -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "μη έγκυρος οκταδικός αριθμός" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "μη έγκυρος εξαδικός αριθμός" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "μη έγκυρος αριθμός" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: μη έγκυρη προδιαγραφή σήματος" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "«%s»: όχι pid ή έγκυρο job spec" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: μεταβλητή μόνο για ανάγνωση" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s εκτός ορίων" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "όρισμα" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s εκτός ορίων" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: δεν υπάρχει τέτοια εργασία" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" -msgstr "" +msgstr "%s: όχι έλεγχος εγασιών " -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" -msgstr "" +msgstr "όχι έλεγχος εργασιών" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" -msgstr "" +msgstr "%s: περιορισμένο " -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" -msgstr "" +msgstr "περιορισμένο" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" -msgstr "" +msgstr "%s: όχι ένα builtin κελύφους " -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "σφάλμα εγγραφής: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" -msgstr "" +msgstr "σφάλμα κατά τον ορισμό των χαρακτηριστικών τερματικού: %s " -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" -msgstr "" +msgstr "σφάλμα κατά την λήψη των χαρακτηριστικών τερματικού: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" -msgstr "" +msgstr "%s: σφάλμα κατά την ανάκτηση τρέχοντος καταλόγου: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: ασαφείς προδιαγραφές εργασίας" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" -msgstr "" +msgstr "βοήθεια μη διαθέσιμη σ' αυτήν την έκδοση " -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: μη έγκυρο όνομα ενέργειας" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: δεν υπάρχει προδιαγραφή συμπλήρωσης" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "προειδοποίηση: η επιλογή -F μπορεί να μη δουλέψει όπως περιμένεις" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "προειδοποίηση: η επιλογή -C ίσως δεν δουλέψει όπως αναμένετε" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" -msgstr "" +msgstr "η λειτουργία συμπλήρωσης δεν εκτελείται επί του παρόντος " -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "μπορεί να χρησιμοποιηθεί μόνο μέσα σε συνάρτηση" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: η μεταβλητή αναφοράς δεν μπορεί να είναι πίνακας " -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "" +msgstr "%s: nameref αυτοαναφορά μεταβλητής δεν επιτρέπεται " -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" -msgstr "" +msgstr "%s: κυκλική αναφορά ονόματος " -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: μη έγκυρο όνομα μεταβλητής" +msgstr "«%s»: μη έγκυρο όνομα μεταβλητής για όνομα αναφοράς " -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "" "η επιλογή «-f» δεν μπορεί να χρησιμοποιηθεί για τη δημιουργία συναρτήσεων" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: συνάρτηση μόνο για ανάγνωση" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "" +msgstr "%s: η σύνθετη εκχώρηση πίνακα απορρίφθηκε" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" -msgstr "" +msgstr "%s: αδυναμία καταστροφής μεταβλητής πίνακα κατ' αυτόν τον τρόπο " -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "" +msgstr "%s: αδυναμία μετατροπής associative πίνακα σε indexed πίνακα " #: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" @@ -391,7 +394,7 @@ msgstr "αδυναμία εύρεσης %s στο κοινόχρηστο αντ #: builtins/enable.def:387 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "" +msgstr "Η συνάρτηση φορτώματος του %s επιστρέφει λάθος (%d): δεν φορτώθηκε " #: builtins/enable.def:512 #, c-format @@ -403,71 +406,71 @@ msgstr "%s: δεν φορτώθηκε δυναμικά" msgid "%s: cannot delete: %s" msgstr "%s: αδυναμία διαγραφής: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: είναι κατάλογος" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: όχι κανονικό αρχείο" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: αρχείο πολύ μεγάλο" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: αδυναμία εκτέλεσης δυαδικού αρχείου" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: αδυναμία εκτέλεσης: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "όχι login shell: χρησιμοποίησε «exit»" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Υπάρχουν σταματημένες εργασίες.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Υπάρχουν εργασίες που τρέχουν.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "δεν βρέθηκε εντολή" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "history specification" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: αδυναμία ανοίγματος προσωρινού αρχείου: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "τρέχων" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" -msgstr "" +msgstr "η εργασία %d ξεκίνησε χωρίς έλεγχο εργασιών " #: builtins/getopt.c:110 #, c-format @@ -479,28 +482,27 @@ msgstr "%s: μη επιτρεπόμενη επιλογή -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: η επιλογή απαιτεί ένα όρισμα -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" -msgstr "" +msgstr "hashing απενεργοποιημένο " -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" -msgstr "" +msgstr "%s: πίνακας hash κενός\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "hits\tcommand\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Εντολές κελύφους που ταιριάζουν στη λέξη-κλειδί `" msgstr[1] "Εντολές κελύφους που ταιριάζουν στις λέξεις-κλειδί" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -508,12 +510,12 @@ msgstr "" "ουδεμία βοήθεια ταιριάζει με «%s». Δοκιμάστε «help help» ή «man -k %s» ή «info %" "s»." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: αδυναμία ανοίγματος: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -524,21 +526,31 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" +"Αυτές οι εντολές ορίζονται εσωτερικά. Δώσε «help» για να δεις την λίστα.\n" +"Δώσε «help name» για να δεις περισσότερα για την συνάρτηση «name».\n" +"Χρησιμοποίησε «info bash» για να βρεις περισσότερα σχετικά με το κέλυφος.\n" +"Χρησιμοποίησε «man -k» ή «info» για να βρεις περισσότερα για εντολές από την " +"λίστα.\n" +"\n" +"Αστερίσκος (*) δίπλα στο όνομα σημαίνει ότι η εντολή είναι " +"απενεργοποιημένη.\n" +"\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "δεν μπορώ να χρησιμοποιήσω περισσότερες της μιας από τις -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "θέση στο ιστορικό" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: μη έγκυρο όρισμα" +msgstr "%s: μη έγκυρη χρονοσήμανση" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "" @@ -552,16 +564,16 @@ msgstr "%s: αποτυχία inlib" msgid "no other options allowed with `-x'" msgstr "δεν επιτρέπονται άλλες επιλογές με την «-x»" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: ορίσματα πρέπει να είναι ID διεργασιών ή εργασιών" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Άγνωστο σφάλμα" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "αναμενόταν έκφραση" @@ -570,69 +582,69 @@ msgstr "αναμενόταν έκφραση" msgid "%s: not an indexed array" msgstr "%s: μη δικτοδοτημένος πίνακας" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: μη έγκυρη προδιαγραφή περιγραφέα αρχείου" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: μη έγκυρος περιγραφέας αρχείου: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: μη έγκυρος αριθμός γραμμής" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" -msgstr "" +msgstr "%s: μη έγκυρη αρχή πίνακα " -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" -msgstr "" +msgstr "%s: μη έγκυρο κβάντο του callback " -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" -msgstr "" +msgstr "όνομα μεταβλητής πίνακα κενό " -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "απαιτείται υποστήριξη μεταβλητής πίνακος" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "«%s»: απουσία χαρακτήρα φορμαρίσματος " -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "«%c»: μη έγκυρη προδιαγραφή για φορμά χρόνου" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "«%c»: μη έγκυρος χαρακτήρας φορμαρίσματος" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "προειδοποίηση: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "πρόβλημα ανάλυσης του format: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "απουσία hex ψηφίου για \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "απουσία ψηφίου unicode για \\%c" @@ -646,19 +658,19 @@ msgstr "όχι άλλος κατάλογος" msgid "%s: invalid argument" msgstr "%s: μη έγκυρο όρισμα" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<όχι τρέχων κατάλογος>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "κενή στίβα καταλόγου" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "δείκτης στοίβας καταλόγου" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -682,7 +694,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -707,7 +719,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -731,133 +743,133 @@ msgstr "" #: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" -msgstr "" +msgstr "%s: μη έγκυρη προδιαγραφή timeout " -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "σφάλμα ανάγνωσης: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" -msgstr "" +msgstr "«επιστροφή» είναι μόνο δυνατή από συνάρτηση ή sourced script " -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "«unset» δεν μπορεί να εφαρμοστεί συγχρόνως σε συνάρτηση και μεταβλητή" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: αδυναμία «unset»" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: αδυναμία unset: %s μόνο για ανάγνωση" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: δεν είναι μεταβλητή πίνακα" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: δεν είναι συνάρτηση" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: αδυναμία εξαγωγής" #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" -msgstr "" +msgstr "αριθμός του « shift »" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "" "οι επιλογές κελύφους δεν είναι δυνατόν συγχρόνως να ενεργοποιηθούν και " "απενεργοποιηθούν" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: μη έγκυρο όνομα επιλογής" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "απαιτείται όνομα αρχείου για όρισμα" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: αρχείο δεν βρέθηκε" #: builtins/suspend.def:102 msgid "cannot suspend" -msgstr "" +msgstr "αναστολή αδύνατη " #: builtins/suspend.def:112 msgid "cannot suspend a login shell" -msgstr "" +msgstr "ένα κέλυφος σύνδεσης δεν μπορεί ν' ανασταλεί " -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s είναι ψευδώνημο του «%s»\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s αποτελεί δεσμευμένη λέξη του κελύφους\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s είναι συνάρτηση\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s είναι ένα ειδικό builtin\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s είναι ένα builtin κελύφους\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s είναι %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s is hashed (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: μη έγκυρο όρισμα ορίου" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "«%c»: λάθος διαταγή" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" -msgstr "" +msgstr "%s: αδύνατον να πάρω το όριο: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "όριο" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: αδυναμία μεταβολής ορίου: %s" @@ -869,416 +881,427 @@ msgstr "οκταδικός αριθμός" #: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "" +msgstr "`%c': μη έγκυρος τελεστής συμβολικού mode" #: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "" +msgstr "`%c': μη έγκυρος χαρακτήρας συμβολικού mode " -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " γραμμή " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "τελευταία εντολή: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." -msgstr "" +msgstr "Ακύρωση..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "INFORM: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" -msgstr "άγνωστο σφάλμα εντολής" +msgstr "σφάλμα άγνωστης εντολής" -#: error.c:464 +#: error.c:463 msgid "bad command type" -msgstr "" +msgstr "λάθος τύπος εντολής" -#: error.c:465 +#: error.c:464 msgid "bad connector" -msgstr "" +msgstr "bad connector" -#: error.c:466 +#: error.c:465 msgid "bad jump" -msgstr "" +msgstr "κακό άλμα" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" -msgstr "" +msgstr "%s: μεταβλητή χωρίς σύνδεση " -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aη αναμονή για δεδομένα έληξε: αυτόματη αποσύνδεση\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "αδυναμία ανακατεύθυνσης τυπικής εισόδου από /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: «%c»: μη έγκυρος χαρακτήρας μορφοποίησης" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] υφίσταται ακόμη " -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "" +msgstr "eval: μέγιστο επίπεδο φωλιάσματος eval ξεπεράστηκε (%d) " -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "" +msgstr "%s: μέγιστο επίπεδο φωλιάσματος source ξεπεράστηκε (%d) " -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: μέγιστο επίπεδο φωλιάσματος συνάρτησης ξεπεράστηκε (%d) " -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: περιορισμός: δεν μπορεί να περιέχεται «/» σε όνομα εντολής" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: εντολή δεν βρέθηκε" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" -msgstr "" +msgstr "%s: %s: κακός interpreter " -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: αδυναμία εκτέλεσης δυαδικού αρχείου: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "«%s»: είναι ειδικό builtin" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "αδυναμία αντιγραφής του fd %d στον fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "συντακτικό σφάλμα στην έκφραση" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "απόπειρα ανάθεσης σε μη-μεταβλητή" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "συντακτικό σφάλμα στην έκφραση" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "διαίρεση διά 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" -msgstr "" +msgstr "bug: κακό σύμβολο για expassign " -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" -msgstr "" +msgstr "«:» αναμενόταν για μια έκφραση υπό συνθήκη" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "εκθέτης μικρότερος του 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "" +msgstr "αναγνωριστικό αναμενόταν μετά από pre-increment ή pre-decrement " -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "λείπει «)»" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "syntax error: αναμενόταν τελεστέος" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: μη έγκυρος αριθμητικός τελεστής" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (το λανθασμένο σύμβολο είναι \"%s\")" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "μη έγκυρη αριθμητική βάση" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "τιμή πολύ μεγάλη για βάση" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: σφάλμα έκφρασης\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: αδυναμία πρόσβασης στο γονικό κατάλογο" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "αδυναμία επανάταξης nodelay mode για fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "αδυναμία εκχώρησης νέου περιγραφέα αρχείου για είσοδο του bash από fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" -msgstr "" +msgstr "save_bash_input: ο buffer υπάρχει ήδη για νέο fd %d " -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "" +msgstr "η διεργασία κλώνος %d εμφανίζεται στην εργασία που τρέχει %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" -msgstr "" +msgstr "διαγραφή σταματημένης εγασίας %d με ομάδα %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" -msgstr "" +msgstr "add_process: διεργασία %5ld (%s) στη the_pipeline " -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" -msgstr "" +msgstr "add_process: pid %5ld (%s) μαρκαρισμένη ως ακόμα ζωντανή " -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: δεν υπάρχει τέτοιο pid" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Σήμα %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Done" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "σταματημένο" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "σταματημένο(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" -msgstr "" +msgstr "υπό εκτέλεση" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Done(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Έξοδος %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Άγνωστη κατάσταση" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "child setpgid (%ld to %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: διεργασία %ld δεν αποτελεί θυγατρική αυτού του κελύφους" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Δεν υπάρχουν στοιχεία για διεργασία %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: η εργασία %d είναι σταματημένη" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: η εργασία τερματίστηκε" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: εργασία %d ήδη στο παρασκήνιο" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" +"waitchld: ενεργοποίηση WNOHANG ώστε ν' αποφευχθεί οριστικό μπλοκάρισμα " -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: γραμμή %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(τώρα wd: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: αποτυχία getpgrp" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" -msgstr "" +msgstr "αδυναμία ρύθμισης της ομάδας της διεργασίας του τερματικού (%d) " -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "δεν υπάρχει job control σ'αυτό το κέλυφος" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" -msgstr "" +msgstr "malloc: αποτυχημένη assertion: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "άγνωστο" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" -msgstr "" +msgstr "free: κλήθηκε με όρισμα ήδη ελευθερωμένο μπλοκ " -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" -msgstr "" +msgstr "free: κλήθηκε με όρισμα ένα μη εκχωρημένο μπλοκ " -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" -msgstr "" +msgstr "free: εντοπίστηκε αρνητική υπερχείληση, mh_nbytes εκτός ορίου " -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" -msgstr "" +msgstr "free: τα μεγέθη των κομματιών στην αρχή και το τέλος διαφέρουν " -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" -msgstr "" +msgstr "realloc: κλήθηκε με όρισμα ένα μη εκχωρημένο μπλοκ " -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" -msgstr "" +msgstr "realloc: εντοπίστηκε αρνητική υπερχείληση, mh_nbytes εκτός ορίου" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" -msgstr "" +msgstr "realloc: μεγέθη κομματιών σ' αρχή και τέλος διαφέρουν " #: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" -msgstr "" +msgstr "register_alloc: πίνακας alloc γεμάτος με FIND_ALLOC;\n" #: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" -msgstr "" +msgstr "register_alloc: %p ήδη στον πίνακα ως εκχωρισμένος;\n" #: lib/malloc/table.c:253 #, c-format @@ -1302,28 +1325,28 @@ msgstr "%s: μη έγκυρη υπηρεσία" #: lib/sh/netopen.c:306 #, c-format msgid "%s: bad network path specification" -msgstr "" +msgstr "%s: κακιά προδιαγραφή διαδρομής δικτύου " #: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "μη υποστηριζόμενες δικτιακές υπηρεσίες" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: αδυναμία μεταβολής locale (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: αδυναμία μεταβολής locale (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: αδυναμία μεταβολής locale (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: αδυναμία μεταβολής locale (%s): %s" @@ -1341,147 +1364,150 @@ msgstr "Έχεις νέο μήνυμα στο $_" msgid "The mail in %s has been read\n" msgstr "Το μήνυμα στο %s διαβάστηκε\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "syntax error: απαιτείται αριθμητική έκφραση" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "συντακτικό σφάλμα: δεν αναμενόταν «;»" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "συντακτικό σφάλμα: «((%s))»" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" -msgstr "" +msgstr "make_here_document: ο τύπος οδηγίας δεν είναι σωστός %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" +"here-document στη γραμμή %d με όριο το τέλος του αρχείου (αντί του «%s»)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: η οδηγία της ανακατεύθυνσης «%d» εκτός ορίων" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) υπερβαίνει το SIZE_MAX (%lu): γραμμή " +"κόπηκε " -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" -msgstr "" +msgstr "ο μέγιστος αριθμός here-document ξεπεράστηκε " -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "μη αναμενόμενο EOF κατά την αναζήτηση «%c»" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "μη αναμενόμενο EOF ενώ έψαχνα για «]]»" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error in conditional expression: μη αναμενόμενο σύμβολο «%s»" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" -msgstr "" +msgstr "συντακτικό σφάλμα σ' έκφραση υπό συνθήκη " -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "μη αναμενόμενο σύμβολο «%s», αναμενόταν «)»" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "αναμενόταν «)»" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "" +msgstr "απροσδόκητο όρισμα «%s» στον υπό αίρεση μοναδιαίο τελεστή " -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" -msgstr "" +msgstr "απροσδόκητο όρισμα για τον μοναδιαίο τελεστή " -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "" +msgstr "απροσδόκητο σύμβολο «%s» βρέθηκε αντί για δυαδικό τελεστή υπό αίρεση " -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" -msgstr "" +msgstr "αναμενόταν δυαδικός τελεστής υπό αίρεση " -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "" +msgstr "απροσδόκητο όρισμα «%s» για δυαδικό τελεστή υπό αίρεση " -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" -msgstr "" +msgstr "απροσδόκητο όρισμα για δυαδικό τελεστή υπό αίρεση " -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "" +msgstr "απροσδόκητο σύμβολο «%c» σε εντολή υπό αίρεση " -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "" +msgstr "απροσδόκητο σύμβολο «%s» σε εντολή υπό αίρεση " -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" -msgstr "" +msgstr "απροσδόκητο σύμβολο %d σε εντολή υπό αίρεση " -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "συντακτικό σφάλμα κοντά στο μη αναμενόμενο σύμβολο «%s»" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "συντακτικό σφάλμα κοντά σε «%s»" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "syntax error: μη αναμενόμενο τέλος αρχείου" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "συντακτικό σφάλμα" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Χρήση «%s» για έξοδο από το κέλυφος.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "μη αναμενόμενο EOF ενώ έψαχνα «)»" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: η συνάρτηση «%s» δεν βρέθηκε" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1510,90 +1536,94 @@ msgstr "xtrace_set: NULL file pointer" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: «%c»: μη έγκυρη μορφή χαρακτήρα" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "περιγραφέας αρχείου εκτός ορίων" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ασαφής ανακατεύθυνση" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: αδυναμία εγγραφής πάνω σε υπάρχον αρχείο" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: αδυναμία ανακατεύθυνσης εξόδου" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "αδυναμία δημιουργίας προσωρινού αρχείου για here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: αδυναμία ανάθεσης fd σε μεταβλητή" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port δεν υποστηρίζεται χωρίς δικτύωση" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "δεν μπόρεσα να βρω /tmp, παρακαλώ να τον δημιουργήσετε!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp πρέπει να είναι ένα έγκυρο όνομα αρχείου" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: μη έγκυρη επιλογή" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "" +msgstr "αδυναμία ρύθμισης uid σε %d: effective uid %d " -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "" +msgstr "αδυναμί ρύθμισης gid σε %d: effective gid %d " -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "αδυναμία εκκίνησης του debugger, debugging απενεργοποιημένο " -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: είναι κατάλογος" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Δεν έχω όνομα!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, έκδοση %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1602,60 +1632,62 @@ msgstr "" "Χρήση:\t%s [μακρά επιλογή GNU] [επιλογή] ...\n" "\t%s [μακρά επιλογή GNU] [επιλοη] script-file ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Μακρές επιλογές GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Επιλογές κελύφους:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "" +msgstr "\t-ilrsD ή -c εντολή ή -O shopt_option\t\t(invocation only)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ή επιλογή -o\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Πληκτρολόγησε «%s -c \"help set\"» για πληροφορίες επί των επιλογών " "κελύφους.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Πληκτρολόγησε «%s -c help» για περισσότερες πληροφορίες σχετικά με τις " "ενσωματομένες στο κέλυφος εντολές.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Χρησιμοποίησε την εντολή «bashbug» για αναφορά σφαλμάτων.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "σελίδα του bash: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" +"Γενική βοήθεια για την χρήση του λογισμικού GNU: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: μη έγκυρη λειτουργία" #: siglist.c:48 msgid "Bogus signal" -msgstr "" +msgstr "Ψεύτικο σήματος " #: siglist.c:51 msgid "Hangup" @@ -1691,23 +1723,23 @@ msgstr "Εξαίρεση κινητής υποδιαστολής" #: siglist.c:87 msgid "Killed" -msgstr "" +msgstr "Killed" #: siglist.c:91 msgid "Bus error" -msgstr "" +msgstr "Bus error" #: siglist.c:95 msgid "Segmentation fault" -msgstr "" +msgstr "Σφάλμα κατάτμησης" #: siglist.c:99 msgid "Bad system call" -msgstr "" +msgstr "Κακή κλήση συστήματος " #: siglist.c:103 msgid "Broken pipe" -msgstr "" +msgstr "Σπασμένη σωλήνα" #: siglist.c:107 msgid "Alarm clock" @@ -1715,7 +1747,7 @@ msgstr "Ρολόι συναγερμού" #: siglist.c:111 msgid "Terminated" -msgstr "" +msgstr "τερματισμός" #: siglist.c:115 msgid "Urgent IO condition" @@ -1723,7 +1755,7 @@ msgstr "Επείγουσα κατάσταση IO" #: siglist.c:119 msgid "Stopped (signal)" -msgstr "" +msgstr "Σταματημένο (σήμα)" #: siglist.c:127 msgid "Continue" @@ -1731,15 +1763,15 @@ msgstr "Συνέχεια" #: siglist.c:135 msgid "Child death or stop" -msgstr "" +msgstr "Child death or stop" #: siglist.c:139 msgid "Stopped (tty input)" -msgstr "" +msgstr "Σταματημένο (είσοδος tty)" #: siglist.c:143 msgid "Stopped (tty output)" -msgstr "" +msgstr "Σταματημένο (έξοδος tty)" #: siglist.c:147 msgid "I/O ready" @@ -1771,11 +1803,11 @@ msgstr "" #: siglist.c:175 msgid "User signal 1" -msgstr "" +msgstr "Σήμα χρήστη 1" #: siglist.c:179 msgid "User signal 2" -msgstr "" +msgstr "Σήμα χρήστη 2 " #: siglist.c:183 msgid "HFT input data pending" @@ -1822,106 +1854,112 @@ msgstr "Άγνωστο σήμα #" msgid "Unknown Signal #%d" msgstr "Άγνωστο σήμα #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "" +msgstr "κακή αντικατάσταση: όχι «%s» που κλείνει στο %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" -msgstr "" +msgstr "%s: αδυναμία εκχώρησης λίστας σε στοιχείο του πίνακα " -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" -msgstr "" +msgstr "αδυναμία δημιουργίας σωλήνα για αντικατάσταση διεργασίας " -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" -msgstr "" +msgstr "αδυναμία δημιουργίας θυγατρικής για αντικατάσταση διεργασίας " -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "αδυναμία ανοίγματοε επώνυμης σωλήνας %s προς ανάγνωση" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "αδυναμία ανοίγματος επώνυμης σωλήνας %s προς εγγραφή" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" -msgstr "" +msgstr "αδυναμία αναπαραγωγής named pipe %s ως fd %d " -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "κακή αντικατάσταση: δεν υπάρχει «`» που κλείνει στο %s" +msgstr "αντικατάσταση εντολής: null byte αγνοήθηκε στην είσοδο " -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" -msgstr "" +msgstr "αδυναμία δημιουργίας σωλήνα για αντικατάσταση εντολής " -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" -msgstr "" +msgstr "αδυναμία δημιουργίας θυγατρικής για αντικατάσταση εντολής " -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "" +msgstr "command_substitute: αδυναμία αναπαραγωγής σωλήνα ως fd 1 " -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" -msgstr "" +msgstr "%s: μη έγκυρο όνομα μεταβλητής ως όνομα αναφοράς " -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: κακή αντικατάσταση" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" -msgstr "" +msgstr "%s: μη έγκυρη έμμεση επέκταση " -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "%s: μη έγκυρο όνομα μεταβλητής" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: παράμετρος κενή ή δεν έχει οριστεί" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: παράμετρος κενή ή δεν έχει οριστεί" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: έκφραση αρνητική < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: κακή αντικατάσταση" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: αδύνατη ανάθεση κατ' αυτόν τον τρόπο" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" +"μελλοντικές εκδόσεις του κελύφους θα επιβάλουν την αποτίμηση ως μια " +"αριθμητική αντικατάσταση" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "κακή αντικατάσταση: δεν υπάρχει «`» που κλείνει στο %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" -msgstr "" +msgstr "χωρίς ταίριασμα: %s" #: test.c:147 msgid "argument expected" @@ -1941,114 +1979,121 @@ msgstr "αναμενόταν «)»" msgid "`)' expected, found %s" msgstr "σναμενόταν «)», βρέθηκε %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" -msgstr "" +msgstr "%s: αναμενόταν μοναδιαίος τελεστής " -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: αναμενόταν δυαδικός τελεστής" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "απούσα «]»" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "μη έγκυρος αριθμός σήματος" -#: trap.c:387 +#: trap.c:320 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: μέγιστο επίπεδο φωλιάσματος eval ξεπεράστηκε (%d) " + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" -msgstr "" +msgstr "run_pending_traps: κακή τιμή στην trap_list[%d]: %p " -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" +"run_pending_traps: ο διαχειριστής σήματος είναι ο SIG_DFL, στέλνει %d (%s) " +"σε μένα " -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: κακό σήμα %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" -msgstr "" +msgstr "σφάλμα κατά την εισαγωγή του ορισμού της συνάρτησης «%s»" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "επίπεδο κελύφους (%d) πολύ υψηλό, επαναφορά στο 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no function context at current scope" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" -msgstr "" +msgstr "%s: η μεταβλητή δεν μπορεί να δεχτεί τιμή " -#: variables.c:3043 +#: variables.c:3453 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" -msgstr "all_local_variables: no function context at current scope" +msgstr "" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s έχει κενό exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "ο χαρακτήρας %d δεν έίναι έγκυρος στην exportstr για %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "απουσία «=» στην exportstr για %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: head of shell_variables not a function context" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no global_variables context" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: head of shell_variables not a temporary environment scope" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: αδυναμία ανοίγματος ως ΑΡΧΕΙΟ" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "" +msgstr "%s: %s: μη έγκυρη τιμή για trace file descriptor" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" -msgstr "" +msgstr "%s: %s: τιμή συμβατότητας εκτός ορίου " #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2015 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2071,22 +2116,22 @@ msgstr "This is free software; you are free to change and redistribute it." msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "There is NO WARRANTY, to the extent permitted by law." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: αδυναμία εκχώρησης %lu bytes (%lu bytes εκχωρήθηκαν)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: αδυναμία εκχώρησης %lu bytes" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: αδυναμία εκχώρησης %lu bytes (%lu bytes εκχωρήθηκαν)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: αδυναμία εκχώρησης %lu bytes" @@ -2212,9 +2257,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" #: builtins.c:134 msgid "" @@ -2297,7 +2341,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2389,8 +2434,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [ορίσματα]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2407,7 +2453,8 @@ msgstr "" "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o option] [-DE] [name ...]" #: builtins.c:242 @@ -2419,9 +2466,10 @@ msgstr "" "callback] [-c quantum] [array]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2525,6 +2573,13 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" +"Ξαναρχίζει τους βρόχους for, while, ή until.\n" +" \n" +" Ξαναρχίζει την επόμενη επανάληψη του βρόχου FOR, WHILE ή UNTIL .\n" +" Αν N είναι ορισμένο, ξαναρχίζει το N-στο βρόχο.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Ο κωδικός εξόδου είναι 0 εκτός αν το N δεν είναι μαγαλύτερο ή ίσον του 1." #: builtins.c:354 msgid "" @@ -2537,7 +2592,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" #: builtins.c:369 @@ -2652,6 +2707,10 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" +"Επιστρέφει επιτυχημένο αποτέλεσμα.\n" +" \n" +" Κατάσταση Εξόδου:\n" +" Πάντοτε επιτυχία." #: builtins.c:462 msgid "" @@ -2660,6 +2719,10 @@ msgid "" " Exit Status:\n" " Always fails." msgstr "" +"Επιστρέφει αποτυχημένο αποτέλεσμα.\n" +" \n" +" Κατάσταση Εξόδου:\n" +" Πάντοτε αποτυχία." #: builtins.c:471 msgid "" @@ -2699,11 +2762,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2726,6 +2789,9 @@ msgid "" " \n" " A synonym for `declare'. See `help declare'." msgstr "" +"Καθορίζει τιμές και χαρακτηριστκά μεταβλητής.\n" +" \n" +" Συνώνημο με «declare». Βλέπε «help declare»." #: builtins.c:538 msgid "" @@ -2743,6 +2809,7 @@ msgid "" msgstr "" #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -2771,12 +2838,48 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Γράφει ορίσματα στη κανονική έξοδο.\n" +" \n" +" Εμφανίζει τα ARG, χωρισμένα από χαρακτήρες απλού διαστήματος " +"ακολουθούμενα από\n" +" νέα γραμμή, στη τυπική έξοδο.\n" +" \n" +" Έπιλογές:\n" +" -n\tδεν επισυνάπτεται νέα γραμμή\n" +" -e\tενεργοποίηση ερμηνείας των παρακάτω backslash διαφυγής\n" +" -E\tρητή απενεργοποίηση ερμηνείας του backslash διαφυγής\n" +" \n" +" η «echo» ερμηνεύει τους επόμενους backslash-escaped χαρακτήρες:\n" +" \\a\tσυναγερμός (κουδούνι)\n" +" \\b\tbackspace\n" +" \\c\tκαταστέλλει την παραπέρα έξοδο\n" +" \\e\tχαρακτήρας διαφυγής\n" +" \\E\tχαρακτήρας διαφυγής\n" +" \\f\tνέα σελίδα\n" +" \\n\tνέα γραμμή\n" +" \\r\tcarriage return\n" +" \\t\tοριζόντιο tab\n" +" \\v\tκατακόρυφο tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tο χαρακτήρας με κωδικό ASCII NNN (οκταδικός), ο NNN μπορεί\n" +" \t\tνα είναι 0 έως 3 οκταδικά ψηφία\n" +" \\xHH\tο οκταδικός χαρακτήρας με τιμή HH (εξαδικός), ο HH\n" +" \t\tμπορεί να είναι ένα ή δύο εξαδικά ψηφία\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει επιτυχία εκτός αν συμβεί λάθος εγγραφής. " -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2788,8 +2891,17 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Γράφει ορίσματα στην κανονική έξοδο.\n" +" \n" +" Εμφανίζει στην κανονική έξοδο τα ARG ακολουθούμενα από μια νέα γραμμή.\n" +" \n" +" Επιλογή:\n" +" -n\tδεν επισυνάπτεις μια νέα γραμμή\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει επιτυχία εκτός αν συμβεί σφάλμα. " -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2816,7 +2928,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2827,8 +2939,17 @@ msgid "" " Exit Status:\n" " Returns exit status of command or success if command is null." msgstr "" +"Εκτελεί ορίσματα σαν να είναι εντολή κελύφους.\n" +" \n" +" Συνδιάζει ARGs σε μια μοναδική συμβολοσειρά, χρησιμοποιεί το αποτέλεσμα " +"ως είσοδο στο κέλυφος,\n" +" και εκτελεί τις εντολές που προκύπτουν.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει τον ίδιο κωδικό εξόδου με την εντολή ή επιτυχία αν ή εντολή " +"είναι κενή. " -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -2869,7 +2990,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2892,15 +3013,20 @@ msgid "" "occurs." msgstr "" -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" " Exits the shell with a status of N. If N is omitted, the exit status\n" " is that of the last command executed." msgstr "" +"Τερματισμός του κελύφους.\n" +" \n" +" Τερματισμός κελύφους με κωδικό N. Αν το N παραληφθεί, η κατάσταση " +"εξόδου\n" +" είναι αυτή της τελευταίας εκτελεσμένης εντολής." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -2908,8 +3034,13 @@ msgid "" "executed\n" " in a login shell." msgstr "" +"Τερματισμός ενός κελύφους σύνδεσης.\n" +" \n" +" Τερματίζει ένα κέλυφος σύνδεσης με κατάσταση εξόδου N. Επιστρέφει σφάλμα " +"αν δεν εκτελείται\n" +" σ' ένα κέλυφος σύνδεσης. " -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2939,7 +3070,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -2950,8 +3081,18 @@ msgid "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." msgstr "" +"Μετακίνηση της εργασίας στο προσκήνιο.\n" +" \n" +" Βάζει την εργασία που ορίζεται από JOB_SPEC στο προσκήνιο, κάνοντάς την\n" +" την τρέχουσα εργασία. Αν δεν δίνεται η JOB_SPEC, τότε χρησιμοποιείται η " +"αντίληψη\n" +" που έχει το κέλυφος ως τρέχουσα εργασία.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Η κατάσταση της εργασίας που μπήκε στο προσκήνιο, ή κωδικός αποτυχίας " +"στην περίπτωση σφάλματος." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -2964,8 +3105,18 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"Μετακινεί εργασίες στο παρασκήνιο.\n" +" \n" +" Τοποθετεί τις εργασίες που ορίζονται από κάθε JOB_SPEC στο παρασκήνιο,\n" +" όπως αν άρχισαν με «&». Αν δεν δίνεται η JOB_SPEC, τότε χρησιμοποιείται " +"ή αντίληψη που έχει το κέλυφος\n" +" ως τρέχουσα εργασία.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφεται επιτυχία εκτός αν δεν έχει ενεργοποιηθεί job control ή έχει " +"συμβεί σφάλμα." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -2989,7 +3140,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3004,14 +3155,14 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " "given." msgstr "" -#: builtins.c:836 +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3020,7 +3171,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3045,7 +3197,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3069,7 +3221,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3085,8 +3237,24 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" +"Αφαίρεση εργασιών από το τρέχον κέλυφος.\n" +" \n" +" Αφαιρεί κάθε όρισμα JOBSPEC από τον πίνακα ενεργών εργασιών. Στην " +"απουσία\n" +" JOBSPEC, τότε το κέλυφος χρησιμοποιεί την ιδέα που έχει περί της " +"τρέχουσας εργασίας.\n" +" \n" +" Επιλογές:\n" +" -a\tαφαιρεί όλες τις εργασίες αν δεν δοθεί JOBSPEC\n" +" -h\tσημαδεύει κάθε JOBSPEC έτσι ώστε το SIGHUP δεν στέλνεται στην " +"εργασία\n" +" \t\tαν το κέλυφος δεχτεί ένα σήμα SIGHUP\n" +" -r\tαφαιρεί μόνο εκτελούμενες εργασίες\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει επιτυχία εκτός αν έχει δοθεί μη έγκυρη επιλογή ή JOBSPEC." -#: builtins.c:918 +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3109,7 +3277,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3154,7 +3322,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3175,7 +3343,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3206,7 +3374,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3218,7 +3386,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3304,7 +3472,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3326,7 +3494,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3345,7 +3513,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3366,7 +3534,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -3376,8 +3544,15 @@ msgid "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." msgstr "" +"Ολίσθηση θεσιακών παραμέτρων.\n" +" \n" +" Μετονομασία των θεσιακών παραμέτρων $N+1,$N+2 ... to $1,$2 ... Αν N\n" +" δεν δίνεται, υποτίθεται πως είναι 1.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει επιτυχία εκτός αν N είναι αρνητικός ή μαγαλύτερο; από $#. " -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3391,7 +3566,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -3405,7 +3580,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3487,16 +3662,112 @@ msgid "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." msgstr "" +"Αποτίμηση δυνητικής έκφρασης.\n" +" \n" +" Τερματίζεται με κωδικό 0 (αληθής) ή 1 (ψευδής) ανάλογα\n" +" με την αποτίμηση της EXPR. Η έκφραση μπορεί να είναι μοναδιαία ή " +"δυαδική. Μοναδιαίες\n" +" εκφράσεις χρησιμοποιούνται συχνά για την εξέταση της κατάστασης " +"αρχείου. Υπάρχουν\n" +" τελεστές αλφαριθμητικών όπως και συγκρίσεως αριθμών.\n" +" \n" +" Η συμπεριφορά των τεστ εξαρτάται από τον αριθμό των ορισμάτων. " +"Αναφερθείτε\n" +" στη σελίδα εγχειριδίου του bash για τις ολοκληρωμένες προδιαγραφές.\n" +" \n" +" Τελεστές αρχείων:\n" +" \n" +" -a ΑΡΧΕΙΟ Αληθής αν το αρχείο υπάρχει.\n" +" -b ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι ειδικό αρχείο μπλοκ.\n" +" -c ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι ειδικό αρχείο χαρακτήρων.\n" +" -d ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι κατάλογος.\n" +" -e ΑΡΧΕΙΟ Αληθής αν το αρχείο υπάρχει.\n" +" -f ΑΡΧΕΙΟ Αληθής αν το αρχείο υπάρχει και είναι κανονικό " +"αρχείο.\n" +" -g ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι «set-group-id».\n" +" -h ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι συμβολικός σύνδεσμος.\n" +" -L ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι συμβολικός σύνδεσμος.\n" +" -k ΑΡΧΕΙΟ Αληθής αν το αρχείο έχει ορισμένο το bit «sticky».\n" +" -p ΑΡΧΕΙΟ Αληθής αν το αρχείο μια named pipe.\n" +" -r ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι αναγνώσιμο από εσάς.\n" +" -s ΑΡΧΕΙΟ Αληθής αν το αρχείο υπάρχει και δεν είναι κενό.\n" +" -S ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι ένα socket.\n" +" -t FD Αληθής αν ο FD είναι ανοιγμένος σ' ενα " +"τερματικό.\n" +" -u ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι «set-user-id».\n" +" -w ΑΡΧΕΙΟ Αληθής αν το αρχείο εγγράψιμο από εσάς.\n" +" -x ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι εκτελέσιμο από εσάς.\n" +" -O ΑΡΧΕΙΟ Αληθής αν το αρχείο is effectively owned by you.\n" +" -G ΑΡΧΕΙΟ Αληθής αν το αρχείο is effectively owned by your " +"group.\n" +" -N ΑΡΧΕΙΟ Αληθής αν το αρχείο μεταβλήθηκε από την τελευταία " +"φορά που διαβάστηκε.\n" +" \n" +" ΑΡΧΕΙΟ1 -nt ΑΡΧΕΙΟ2 Αληθής αν το αρχείο1 είναι νεότερο από το αρχείο2 " +"(σύμφωνα\n" +" με την ημερομηνία τροποποίηση).\n" +" \n" +" ΑΡΧΕΙΟ1 -ot ΑΡΧΕΙΟ2 Αληθές αν αρχείο1 είναι παλαιότερο από το " +"αρχείο2.\n" +" \n" +" ΑΡΧΕΙΟ1 -ef ΑΡΧΕΙΟ2 Αληθές αν το αρχείο1 είναι hard link στο " +"αρχείο2.\n" +" \n" +" Τελεστές συμβολοσειράς:\n" +" \n" +" -z STRING Αληθές αν η συμβολοσειρά είναι κενή.\n" +" \n" +" -n STRING\n" +" STRING Αληθές αν η συμβολοσειρά δεν είναι κενή.\n" +" \n" +" STRING1 = STRING2\n" +" Αληθές αν οι συμβολοσειρές είναι ίσες.\n" +" STRING1 != STRING2\n" +" Αληθές αν οι συμβολοσειρές δεν είναι ίσες.\n" +" STRING1 < STRING2\n" +" Αληθές αν η STRING1 προηγείται λεξικογραφικά της " +"STRING2.\n" +" STRING1 > STRING2\n" +" Αληθές αν η STRING1 έπεται λεξικογραφικά της STRING2.\n" +" \n" +" Άλλοι τελεστές:\n" +" \n" +" -o OPTION Αληθές αν η επιλογή του κελύφους OPTION έχει " +"ενεργοποιηθεί.\n" +" -v VAR Αληθές αν η μεταβλητή VAR έχει οριστεί.\n" +" -R VAR Αληθές αν η μεταβλητή VAR έχει οριστεί και είναι όνομα\n" +" αναφοράς.\n" +" ! EXPR Αληθές αν η expr είναι ψευδής.\n" +" EXPR1 -a EXPR2 Αληθές αν αμφότερες οι expr1 ΚΑΙ expr2 είναι αληθείς.\n" +" EXPR1 -o EXPR2 Αληθές αν είτε η expr1 Ή η expr2 είναι αληθής.\n" +" \n" +" arg1 OP arg2 Αρηθμιτικά τεστ. OP είναι ένα από τα -eq, -ne,\n" +" -lt, -le, -gt, ή -ge.\n" +" \n" +" Αριθμητικοί δυαδικοί τελεστές επιστρέφουν αληθές αν ARG1 είναι ίσο, μη-" +"ίσο,\n" +" μικρότερο-από, μικρότερο-από-ή-ίσο, μεγαλύτερο-από, ή μεγαλύτερο-από-ή-" +"ίσο\n" +" από το ARG2.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει επιτυχία αν EXPR αποτιμάται σε αληθές, αποτυχία αν EXPR " +"αποτιμάται σε\n" +" ψευδές ή αν δίδεται ένα μη έγκυρο όρισμα." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" " This is a synonym for the \"test\" builtin, but the last argument must\n" " be a literal `]', to match the opening `['." msgstr "" +"Αποτιμά δυνητική έκφραση.\n" +" \n" +" Συνώνυμο με το «test» builtin, αλλά το τελευταίο όρισμα πρέπει\n" +"να είναι ένα «]», ώστε να κλείνει το αντίστοιχο «[»." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -3507,8 +3778,16 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" +"Εμφανίζει χρόνους διεργασιών.\n" +" \n" +" Εμφανίζει το χρόνο του χρήστη και συστήματος για το κέλυφος και όλες " +"τις\n" +" θυγατρικές διεργασίες.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Πάντα επιτυχία." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -3552,7 +3831,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -3582,7 +3861,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -3631,7 +3910,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -3649,7 +3928,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3657,19 +3936,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3684,7 +3965,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3696,8 +3977,18 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Εκτέλεση εντολών για μέλος μιας λίστας.\n" +" \n" +" Ο βρόχος «for» εκτελεί μια αλληλουχία εντολών για κάθε μέλος\n" +" μιας λίστας. Αν «in ΛΕΞΕΙΣ ...;» δεν δίνεται, τότε υποτίθεται η «in \"$@" +"\"».\n" +" Για κάθε στοιχείο στις ΛΕΞΕΙΣ, ΟΝΟΜΑ ορίζεται σ' αυτό το στοιχείο, και\n" +" οι ΕΝΤΟΛΕΣ εκτελούνται.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει την κατάσταση της τελευταίας εκτελεσμένης εντολής." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -3713,8 +4004,21 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Αριθμητική βρόχου for.\n" +" \n" +" Ισοδύναμο με\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, και EXP3 είναι αριθμητικές εκφράσεις. Αν μια έκφραση\n" +" παραληφθεί, συμπεριφέρεται σαν να είχε αποτιμηθεί ίση με 1.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει τη κατάσταση της τελευταίας εκτελεσμένης εντολής." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3734,7 +4038,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3750,7 +4054,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3761,7 +4065,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3782,7 +4086,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3793,7 +4097,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3804,7 +4108,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1653 +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3817,7 +4121,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -3831,7 +4135,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -3842,7 +4146,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -3856,7 +4160,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3866,8 +4170,15 @@ msgid "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" +"Αποτίμηση αριθμητικής εκφράσεως.\n" +" \n" +" Η ΕΚΦΡΑΣΗ αποτιμάται σύμφωνα με τους αριθμητικούς κανόνες.\n" +" Ισοδύναμο με το \"let ΕΚΦΡΑΣΗ\".\n" +" \n" +" Κωδικός εξόδου:\n" +" Επιστρέφει 1 αν η ΕΚΦΡΑΣΗ αποτιμάται σε 0, αλλιώς επιστρέφει 0." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -3895,7 +4206,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3949,7 +4260,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -3980,7 +4291,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -4007,7 +4318,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -4036,14 +4347,13 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4057,7 +4367,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4096,7 +4406,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1953 +#: builtins.c:1961 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4114,16 +4424,20 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4136,7 +4450,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -4151,6 +4465,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -4167,7 +4482,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4209,27 +4524,12 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" -"Ανάγνωση γραμμών από αρχείο σε μεταβλητή τύπου πίνακα.\n" +"Διαβάζει γραμμές από αρχείο σε μεταβλητή τύπου πίνακα.\n" " \n" " Συνώνημο του «mapfile»." - -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "αληθής" - -#~ msgid "false" -#~ msgstr "ψευδής" - -#~ msgid "times" -#~ msgstr "times" diff --git a/po/en@boldquot.gmo b/po/en@boldquot.gmo index 72a1a7b37..d38d399ab 100644 Binary files a/po/en@boldquot.gmo and b/po/en@boldquot.gmo differ diff --git a/po/en@boldquot.po b/po/en@boldquot.po index b93c2e8b0..6a77f8b0b 100644 --- a/po/en@boldquot.po +++ b/po/en@boldquot.po @@ -1,7 +1,7 @@ # English translations for GNU bash package. -# Copyright (C) 2016 Free Software Foundation, Inc. +# Copyright (C) 2018 Free Software Foundation, Inc. # This file is distributed under the same license as the GNU bash package. -# Automatically generated, 2016. +# Automatically generated, 2018. # # All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation @@ -30,10 +30,10 @@ # msgid "" msgstr "" -"Project-Id-Version: GNU bash 4.4-release\n" +"Project-Id-Version: GNU bash 5.0-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2018-12-19 15:52-0500\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "MIME-Version: 1.0\n" @@ -41,119 +41,119 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "bad array subscript" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: removing nameref attribute" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: cannot convert indexed to associative array" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: invalid associative array key" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: cannot assign to non-numeric index" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: must use subscript when assigning associative array" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: cannot create: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: cannot find keymap for command" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: first non-whitespace character is not ‘\"’" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "no closing ‘%c’ in %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: missing colon separator" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "brace expansion: cannot allocate memory for %s" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "brace expansion: failed to allocate memory for %u elements" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "brace expansion: failed to allocate memory for ‘%s’" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "‘%s’: invalid alias name" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "line editing not enabled" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "‘%s’: invalid keymap name" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: cannot read: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "‘%s’: cannot unbind" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "‘%s’: unknown function name" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s is not bound to any keys.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s can be invoked via " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "‘%s’: cannot unbind" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "loop count" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "only meaningful in a ‘for’, ‘while’, or ‘until’ loop" @@ -167,233 +167,233 @@ msgstr "" " \n" " Without EXPR, returns " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME not set" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "too many arguments" -#: builtins/cd.def:336 +#: builtins/cd.def:341 msgid "null directory" msgstr "null directory" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD not set" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "line %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "warning: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: usage: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: option requires an argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: numeric argument required" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: not found" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: invalid option" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: invalid option name" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "‘%s’: not a valid identifier" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "invalid octal number" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "invalid hex number" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "invalid number" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: invalid signal specification" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "‘%s’: not a pid or valid job spec" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: readonly variable" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s out of range" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s out of range" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: no such job" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: no job control" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "no job control" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: restricted" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "restricted" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: not a shell builtin" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "write error: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "error setting terminal attributes: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "error getting terminal attributes: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error retrieving current directory: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: ambiguous job spec" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "help not available in this version" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: invalid action name" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: no completion specification" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "warning: -F option may not work as you expect" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "warning: -C option may not work as you expect" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "not currently executing completion function" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "can only be used in a function" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: reference variable cannot be an array" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: nameref variable self references not allowed" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: circular name reference" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "‘%s’: invalid variable name for name reference" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "cannot use ‘-f’ to make functions" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: readonly function" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: quoted compound array assignment deprecated" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: cannot destroy array variables in this way" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: cannot convert associative to indexed array" @@ -427,68 +427,68 @@ msgstr "%s: not dynamically loaded" msgid "%s: cannot delete: %s" msgstr "%s: cannot delete: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: is a directory" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: not a regular file" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: file is too large" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: cannot execute binary file" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: cannot execute: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "not login shell: use ‘exit’" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "There are stopped jobs.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "There are running jobs.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "no command found" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "history specification" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: cannot open temp file: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "current" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "job %d started without job control" @@ -503,28 +503,27 @@ msgstr "%s: illegal option -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: option requires an argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashing disabled" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: hash table empty\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "hits\tcommand\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Shell commands matching keyword `" msgstr[1] "Shell commands matching keywords `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -532,12 +531,12 @@ msgstr "" "no help topics match ‘%s’. Try ‘help help’ or ‘man -k %s’ " "or ‘info %s’." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: cannot open: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -558,20 +557,21 @@ msgstr "" "A star (*) next to a name means that the command is disabled.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "cannot use more than one of -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "history position" -#: builtins/history.def:264 +#: builtins/history.def:331 #, c-format msgid "%s: invalid timestamp" msgstr "%s: invalid timestamp" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: history expansion failed" @@ -585,16 +585,16 @@ msgstr "%s: inlib failed" msgid "no other options allowed with `-x'" msgstr "no other options allowed with ‘-x’" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: arguments must be process or job IDs" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Unknown error" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "expression expected" @@ -603,69 +603,69 @@ msgstr "expression expected" msgid "%s: not an indexed array" msgstr "%s: not an indexed array" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: invalid file descriptor specification" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: invalid file descriptor: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: invalid line count" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: invalid array origin" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: invalid callback quantum" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "empty array variable name" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "array variable support required" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "‘%s’: missing format character" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "‘%c’: invalid time format specification" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "‘%c’: invalid format character" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "warning: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "format parsing problem: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "missing hex digit for \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "missing unicode digit for \\%c" @@ -679,19 +679,19 @@ msgstr "no other directory" msgid "%s: invalid argument" msgstr "%s: invalid argument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "directory stack empty" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "directory stack index" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -736,7 +736,7 @@ msgstr "" "by\n" "\tdirs when invoked without options, starting with zero." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -782,7 +782,7 @@ msgstr "" " \n" " The ‘dirs’ builtin displays the directory stack." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -827,40 +827,40 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: invalid timeout specification" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "read error: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "can only ‘return’ from a function or sourced script" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "cannot simultaneously unset a function and a variable" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: cannot unset" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: cannot unset: readonly %s" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: not an array variable" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: not a function" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: cannot export" @@ -869,20 +869,20 @@ msgstr "%s: cannot export" msgid "shift count" msgstr "shift count" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "cannot set and unset shell options simultaneously" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: invalid shell option name" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "filename argument required" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: file not found" @@ -895,61 +895,61 @@ msgstr "cannot suspend" msgid "cannot suspend a login shell" msgstr "cannot suspend a login shell" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s is aliased to ‘%s’\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s is a shell keyword\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s is a function\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s is a special shell builtin\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s is a shell builtin\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s is %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s is hashed (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: invalid limit argument" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "‘%c’: bad command" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: cannot get limit: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: cannot modify limit: %s" @@ -968,357 +968,365 @@ msgstr "‘%c’: invalid symbolic mode operator" msgid "`%c': invalid symbolic mode character" msgstr "‘%c’: invalid symbolic mode character" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " line " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "last command: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Aborting..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORM: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "unknown command error" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "bad command type" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "bad connector" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "bad jump" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: unbound variable" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atimed out waiting for input: auto-logout\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "cannot redirect standard input from /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: ‘%c’: invalid format character" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] still exists" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: maximum eval nesting level exceeded (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximum source nesting level exceeded (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restricted: cannot specify ‘/’ in command names" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: command not found" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: bad interpreter" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: cannot execute binary file: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "‘%s’: is a special builtin" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "cannot duplicate fd %d to fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "expression recursion level exceeded" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "recursion stack underflow" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "syntax error in expression" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "attempted assignment to non-variable" -#: expr.c:495 expr.c:858 +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "syntax error in variable assignment" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "division by 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "bug: bad expassign token" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "‘:’ expected for conditional expression" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "exponent less than 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identifier expected after pre-increment or pre-decrement" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "missing ‘)’" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "syntax error: operand expected" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: invalid arithmetic operator" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (error token is “%s”)" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "invalid arithmetic base" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "value too great for base" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: expression error\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: cannot access parent directories" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "cannot reset nodelay mode for fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "cannot allocate new file descriptor for bash input from fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer already exists for new fd %d" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forked pid %d appears in running job %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "deleting stopped job %d with process group %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) in the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marked as still alive" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no such pid" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Done" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Stopped" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Stopped(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Running" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Done(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Unknown status" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "child setpgid (%ld to %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld is not a child of this shell" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No record of process %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: job %d is stopped" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: job has terminated" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: job %d already in background" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: turning on WNOHANG to avoid indefinite block" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: line %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(wd now: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp failed" -#: jobs.c:4104 +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: no job control in background" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "cannot set terminal process group (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "no job control in this shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: failed assertion: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1327,39 +1335,39 @@ msgstr "" "\r\n" "malloc: %s:%d: assertion botched\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "unknown" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: block on free list clobbered" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: called with already freed block argument" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: called with unallocated block argument" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underflow detected; mh_nbytes out of range" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: start and end chunk sizes differ" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: called with unallocated block argument" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underflow detected; mh_nbytes out of range" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start and end chunk sizes differ" @@ -1401,22 +1409,22 @@ msgstr "%s: bad network path specification" msgid "network operations not supported" msgstr "network operations not supported" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: cannot change locale (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: cannot change locale (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: cannot change locale (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: cannot change locale (%s): %s" @@ -1434,35 +1442,35 @@ msgstr "You have new mail in $_" msgid "The mail in %s has been read\n" msgstr "The mail in %s has been read\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "syntax error: arithmetic expression required" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "syntax error: ‘;’ unexpected" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "syntax error: ‘((%s))’" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: bad instruction type %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s’)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: redirection instruction ‘%d’ out of range" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " @@ -1471,112 +1479,112 @@ msgstr "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "maximum here-document count exceeded" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "unexpected EOF while looking for matching ‘%c’" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "unexpected EOF while looking for ‘]]’" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error in conditional expression: unexpected token ‘%s’" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "syntax error in conditional expression" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "unexpected token ‘%s’, expected ‘)’" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "expected ‘)’" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "unexpected argument ‘%s’ to conditional unary operator" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "unexpected argument to conditional unary operator" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "unexpected token ‘%s’, conditional binary operator expected" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "conditional binary operator expected" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "unexpected argument ‘%s’ to conditional binary operator" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "unexpected argument to conditional binary operator" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "unexpected token ‘%c’ in conditional command" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "unexpected token ‘%s’ in conditional command" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "unexpected token %d in conditional command" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntax error near unexpected token ‘%s’" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "syntax error near ‘%s’" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "syntax error: unexpected end of file" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "syntax error" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use “%s” to leave the shell.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "unexpected EOF while looking for matching ‘)’" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: function ‘%s’ not found" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "programmable_completion: %s: possible retry loop" @@ -1605,90 +1613,94 @@ msgstr "xtrace_set: NULL file pointer" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ‘%c’: invalid format character" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "file descriptor out of range" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ambiguous redirect" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: cannot overwrite existing file" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: cannot redirect output" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "cannot create temp file for here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: cannot assign fd to variable" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port not supported without networking" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "redirection error: cannot duplicate fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "could not find /tmp, please create!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp must be a valid directory name" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "pretty-printing mode ignored in interactive shells" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: invalid option" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "cannot set uid to %d: effective uid %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "cannot set gid to %d: effective gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "cannot start debugger; debugging mode disabled" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: Is a directory" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "I have no name!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1697,52 +1709,52 @@ msgstr "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU long options:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Shell options:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s or -o option\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Type ‘%s -c “help set”’ for more information about shell " "options.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Type ‘%s -c help’ for more information about shell builtin commands.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use the ‘bashbug’ command to report bugs.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "bash home page: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "General help using GNU software: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: invalid operation" @@ -1916,91 +1928,96 @@ msgstr "Unknown Signal #" msgid "Unknown Signal #%d" msgstr "Unknown Signal #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "bad substitution: no closing ‘%s’ in %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: cannot assign list to array member" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "cannot make pipe for process substitution" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "cannot make child for process substitution" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "cannot open named pipe %s for reading" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "cannot open named pipe %s for writing" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "cannot duplicate named pipe %s as fd %d" -#: subst.c:5959 +#: subst.c:6062 msgid "command substitution: ignored null byte in input" msgstr "command substitution: ignored null byte in input" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "cannot make pipe for command substitution" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "cannot make child for command substitution" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: cannot duplicate pipe as fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: invalid variable name for name reference" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: bad substitution" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: invalid indirect expansion" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "%s: invalid variable name" -#: subst.c:6854 +#: subst.c:7056 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter not set" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter null or not set" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: substring expression < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: bad substitution" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: cannot assign in this way" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2008,12 +2025,12 @@ msgstr "" "future versions of the shell will force evaluation as an arithmetic " "substitution" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "bad substitution: no closing “`” in %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "no match: %s" @@ -2036,114 +2053,119 @@ msgstr "‘)’ expected" msgid "`)' expected, found %s" msgstr "‘)’ expected, found %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: unary operator expected" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: binary operator expected" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "missing ‘]’" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "invalid signal number" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "trap handler: maximum trap handler level exceeded (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: bad value in trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: bad signal %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "error importing function definition for ‘%s’" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell level (%d) too high, resetting to 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no function context at current scope" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variable may not be assigned value" -#: variables.c:3043 +#: variables.c:3453 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: assigning integer to name reference" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: no function context at current scope" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s has null exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "invalid character %d in exportstr for %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "no ‘=’ in exportstr for %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: head of shell_variables not a function context" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no global_variables context" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: head of shell_variables not a temporary environment scope" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: cannot open as FILE" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: invalid value for trace file descriptor" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: compatibility value out of range" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2016 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2166,22 +2188,22 @@ msgstr "This is free software; you are free to change and redistribute it." msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "There is NO WARRANTY, to the extent permitted by law." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: cannot allocate %lu bytes (%lu bytes allocated)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: cannot allocate %lu bytes" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: cannot allocate %lu bytes" @@ -2391,8 +2413,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -msgid "wait [-n] [id ...]" -msgstr "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" +msgstr "wait [-fn] [id ...]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2484,11 +2506,11 @@ msgstr "printf [-v var] format [arguments]" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" @@ -2501,8 +2523,8 @@ msgstr "" "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "compopt [-o|+o option] [-DE] [name ...]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o option] [-DEI] [name ...]" #: builtins.c:242 msgid "" @@ -2514,11 +2536,11 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" #: builtins.c:256 msgid "" @@ -2700,7 +2722,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Execute shell builtins.\n" " \n" @@ -2711,7 +2733,7 @@ msgstr "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." #: builtins.c:369 msgid "" @@ -2951,11 +2973,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2988,11 +3010,11 @@ msgstr "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the ‘integer’ attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the ‘trace’ attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using ‘+’ instead of ‘-’ turns off the given attribute.\n" @@ -3074,6 +3096,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3105,11 +3133,17 @@ msgstr "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3131,7 +3165,7 @@ msgstr "" " Exit Status:\n" " Returns success unless a write error occurs." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3181,7 +3215,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3201,7 +3235,7 @@ msgstr "" " Exit Status:\n" " Returns exit status of command or success if command is null." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3282,7 +3316,7 @@ msgstr "" " Returns success if an option is found; fails if the end of options is\n" " encountered or an error occurs." -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3324,7 +3358,7 @@ msgstr "" " Returns success unless COMMAND is not found or a redirection error " "occurs." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3336,7 +3370,7 @@ msgstr "" " Exits the shell with a status of N. If N is omitted, the exit status\n" " is that of the last command executed." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3350,7 +3384,7 @@ msgstr "" "executed\n" " in a login shell." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3408,7 +3442,7 @@ msgstr "" " Returns success or status of executed command; non-zero if an error " "occurs." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3428,7 +3462,7 @@ msgstr "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3452,7 +3486,7 @@ msgstr "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3496,7 +3530,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3511,7 +3545,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3530,13 +3564,13 @@ msgstr "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " "given." -#: builtins.c:836 +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3545,7 +3579,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3577,7 +3612,8 @@ msgstr "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3601,7 +3637,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3645,7 +3681,7 @@ msgstr "" " Returns success unless an invalid option is given or an error occurs.\n" " If -x is used, returns the exit status of COMMAND." -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3675,7 +3711,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." -#: builtins.c:918 +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3717,7 +3753,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3803,7 +3839,7 @@ msgstr "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3824,7 +3860,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3873,7 +3909,7 @@ msgstr "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3903,7 +3939,7 @@ msgstr "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3923,7 +3959,7 @@ msgstr "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." -#: builtins.c:1047 +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4091,7 +4127,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given." -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4131,7 +4167,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4165,7 +4201,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4203,7 +4239,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4221,7 +4257,7 @@ msgstr "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4245,7 +4281,7 @@ msgstr "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4269,7 +4305,7 @@ msgstr "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4431,7 +4467,7 @@ msgstr "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4444,7 +4480,7 @@ msgstr "" "must\n" " be a literal ‘]’, to match the opening ‘[’." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4464,7 +4500,7 @@ msgstr "" " Exit Status:\n" " Always succeeds." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4549,7 +4585,7 @@ msgstr "" " Returns success unless a SIGSPEC is invalid or an invalid option is " "given." -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4607,7 +4643,7 @@ msgstr "" " Returns success if all of the NAMEs are found; fails if any are not " "found." -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4702,7 +4738,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4734,7 +4770,7 @@ msgstr "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4742,13 +4778,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4759,18 +4797,20 @@ msgstr "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4796,7 +4836,7 @@ msgstr "" "invalid\n" " option is given." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4820,7 +4860,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4850,7 +4890,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4887,7 +4927,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4915,7 +4955,7 @@ msgstr "" " Exit Status:\n" " The return status is the return status of PIPELINE." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4933,7 +4973,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4971,7 +5011,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4989,7 +5029,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5007,7 +5047,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1653 +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5029,7 +5069,7 @@ msgstr "" " Exit Status:\n" " The coproc command returns an exit status of 0." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5053,7 +5093,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is readonly." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5071,7 +5111,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5096,7 +5136,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the resumed job." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5114,7 +5154,7 @@ msgstr "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5168,7 +5208,7 @@ msgstr "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5272,7 +5312,7 @@ msgstr "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5330,7 +5370,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5382,7 +5422,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5437,14 +5477,13 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5460,9 +5499,8 @@ msgstr "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with ‘set -o’\n" @@ -5475,7 +5513,7 @@ msgstr "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5549,7 +5587,7 @@ msgstr "" "assignment\n" " error occurs." -#: builtins.c:1953 +#: builtins.c:1961 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5567,10 +5605,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5591,15 +5633,19 @@ msgstr "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to “empty” commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5621,7 +5667,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -5636,6 +5682,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5664,6 +5711,7 @@ msgstr "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the “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" @@ -5680,7 +5728,7 @@ msgstr "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5760,7 +5808,7 @@ msgstr "" "or\n" " not an indexed array." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/en@quot.gmo b/po/en@quot.gmo index 54803fc37..346cf495f 100644 Binary files a/po/en@quot.gmo and b/po/en@quot.gmo differ diff --git a/po/en@quot.po b/po/en@quot.po index 96b71c68f..ad3600f89 100644 --- a/po/en@quot.po +++ b/po/en@quot.po @@ -1,7 +1,7 @@ # English translations for GNU bash package. -# Copyright (C) 2016 Free Software Foundation, Inc. +# Copyright (C) 2018 Free Software Foundation, Inc. # This file is distributed under the same license as the GNU bash package. -# Automatically generated, 2016. +# Automatically generated, 2018. # # All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation @@ -27,10 +27,10 @@ # msgid "" msgstr "" -"Project-Id-Version: GNU bash 4.4-release\n" +"Project-Id-Version: GNU bash 5.0-rc1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2018-12-19 15:52-0500\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "MIME-Version: 1.0\n" @@ -38,119 +38,119 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "bad array subscript" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: removing nameref attribute" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: cannot convert indexed to associative array" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: invalid associative array key" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: cannot assign to non-numeric index" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: must use subscript when assigning associative array" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: cannot create: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: cannot find keymap for command" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: first non-whitespace character is not ‘\"’" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "no closing ‘%c’ in %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: missing colon separator" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "brace expansion: cannot allocate memory for %s" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "brace expansion: failed to allocate memory for %u elements" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "brace expansion: failed to allocate memory for ‘%s’" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "‘%s’: invalid alias name" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "line editing not enabled" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "‘%s’: invalid keymap name" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: cannot read: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "‘%s’: cannot unbind" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "‘%s’: unknown function name" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s is not bound to any keys.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s can be invoked via " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "‘%s’: cannot unbind" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "loop count" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "only meaningful in a ‘for’, ‘while’, or ‘until’ loop" @@ -164,233 +164,233 @@ msgstr "" " \n" " Without EXPR, returns " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME not set" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "too many arguments" -#: builtins/cd.def:336 +#: builtins/cd.def:341 msgid "null directory" msgstr "null directory" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD not set" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "line %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "warning: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: usage: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: option requires an argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: numeric argument required" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: not found" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: invalid option" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: invalid option name" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "‘%s’: not a valid identifier" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "invalid octal number" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "invalid hex number" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "invalid number" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: invalid signal specification" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "‘%s’: not a pid or valid job spec" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: readonly variable" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s out of range" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s out of range" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: no such job" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: no job control" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "no job control" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: restricted" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "restricted" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: not a shell builtin" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "write error: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "error setting terminal attributes: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "error getting terminal attributes: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error retrieving current directory: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: ambiguous job spec" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "help not available in this version" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: invalid action name" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: no completion specification" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "warning: -F option may not work as you expect" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "warning: -C option may not work as you expect" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "not currently executing completion function" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "can only be used in a function" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: reference variable cannot be an array" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: nameref variable self references not allowed" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: circular name reference" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "‘%s’: invalid variable name for name reference" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "cannot use ‘-f’ to make functions" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: readonly function" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: quoted compound array assignment deprecated" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: cannot destroy array variables in this way" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: cannot convert associative to indexed array" @@ -424,68 +424,68 @@ msgstr "%s: not dynamically loaded" msgid "%s: cannot delete: %s" msgstr "%s: cannot delete: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: is a directory" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: not a regular file" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: file is too large" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: cannot execute binary file" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: cannot execute: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "not login shell: use ‘exit’" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "There are stopped jobs.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "There are running jobs.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "no command found" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "history specification" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: cannot open temp file: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "current" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "job %d started without job control" @@ -500,40 +500,39 @@ msgstr "%s: illegal option -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: option requires an argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashing disabled" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: hash table empty\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "hits\tcommand\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Shell commands matching keyword `" msgstr[1] "Shell commands matching keywords `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" "no help topics match ‘%s’. Try ‘help help’ or ‘man -k %s’ or ‘info %s’." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: cannot open: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -552,20 +551,21 @@ msgstr "" "A star (*) next to a name means that the command is disabled.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "cannot use more than one of -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "history position" -#: builtins/history.def:264 +#: builtins/history.def:331 #, c-format msgid "%s: invalid timestamp" msgstr "%s: invalid timestamp" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: history expansion failed" @@ -579,16 +579,16 @@ msgstr "%s: inlib failed" msgid "no other options allowed with `-x'" msgstr "no other options allowed with ‘-x’" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: arguments must be process or job IDs" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Unknown error" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "expression expected" @@ -597,69 +597,69 @@ msgstr "expression expected" msgid "%s: not an indexed array" msgstr "%s: not an indexed array" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: invalid file descriptor specification" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: invalid file descriptor: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: invalid line count" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: invalid array origin" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: invalid callback quantum" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "empty array variable name" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "array variable support required" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "‘%s’: missing format character" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "‘%c’: invalid time format specification" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "‘%c’: invalid format character" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "warning: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "format parsing problem: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "missing hex digit for \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "missing unicode digit for \\%c" @@ -673,19 +673,19 @@ msgstr "no other directory" msgid "%s: invalid argument" msgstr "%s: invalid argument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "directory stack empty" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "directory stack index" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -729,7 +729,7 @@ msgstr "" "by\n" "\tdirs when invoked without options, starting with zero." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -775,7 +775,7 @@ msgstr "" " \n" " The ‘dirs’ builtin displays the directory stack." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -818,40 +818,40 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: invalid timeout specification" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "read error: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "can only ‘return’ from a function or sourced script" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "cannot simultaneously unset a function and a variable" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: cannot unset" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: cannot unset: readonly %s" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: not an array variable" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: not a function" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: cannot export" @@ -860,20 +860,20 @@ msgstr "%s: cannot export" msgid "shift count" msgstr "shift count" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "cannot set and unset shell options simultaneously" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: invalid shell option name" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "filename argument required" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: file not found" @@ -886,61 +886,61 @@ msgstr "cannot suspend" msgid "cannot suspend a login shell" msgstr "cannot suspend a login shell" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s is aliased to ‘%s’\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s is a shell keyword\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s is a function\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s is a special shell builtin\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s is a shell builtin\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s is %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s is hashed (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: invalid limit argument" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "‘%c’: bad command" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: cannot get limit: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: cannot modify limit: %s" @@ -959,357 +959,365 @@ msgstr "‘%c’: invalid symbolic mode operator" msgid "`%c': invalid symbolic mode character" msgstr "‘%c’: invalid symbolic mode character" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " line " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "last command: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Aborting..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORM: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "unknown command error" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "bad command type" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "bad connector" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "bad jump" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: unbound variable" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atimed out waiting for input: auto-logout\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "cannot redirect standard input from /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: ‘%c’: invalid format character" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] still exists" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: maximum eval nesting level exceeded (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximum source nesting level exceeded (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restricted: cannot specify ‘/’ in command names" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: command not found" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: bad interpreter" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: cannot execute binary file: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "‘%s’: is a special builtin" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "cannot duplicate fd %d to fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "expression recursion level exceeded" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "recursion stack underflow" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "syntax error in expression" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "attempted assignment to non-variable" -#: expr.c:495 expr.c:858 +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "syntax error in variable assignment" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "division by 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "bug: bad expassign token" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "‘:’ expected for conditional expression" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "exponent less than 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identifier expected after pre-increment or pre-decrement" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "missing ‘)’" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "syntax error: operand expected" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: invalid arithmetic operator" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (error token is “%s”)" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "invalid arithmetic base" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "value too great for base" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: expression error\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: cannot access parent directories" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "cannot reset nodelay mode for fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "cannot allocate new file descriptor for bash input from fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer already exists for new fd %d" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forked pid %d appears in running job %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "deleting stopped job %d with process group %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) in the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marked as still alive" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no such pid" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Done" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Stopped" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Stopped(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Running" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Done(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Unknown status" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "child setpgid (%ld to %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld is not a child of this shell" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No record of process %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: job %d is stopped" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: job has terminated" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: job %d already in background" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: turning on WNOHANG to avoid indefinite block" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: line %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(wd now: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp failed" -#: jobs.c:4104 +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: no job control in background" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "cannot set terminal process group (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "no job control in this shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: failed assertion: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1318,39 +1326,39 @@ msgstr "" "\r\n" "malloc: %s:%d: assertion botched\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "unknown" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: block on free list clobbered" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: called with already freed block argument" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: called with unallocated block argument" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underflow detected; mh_nbytes out of range" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: start and end chunk sizes differ" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: called with unallocated block argument" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underflow detected; mh_nbytes out of range" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start and end chunk sizes differ" @@ -1392,22 +1400,22 @@ msgstr "%s: bad network path specification" msgid "network operations not supported" msgstr "network operations not supported" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: cannot change locale (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: cannot change locale (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: cannot change locale (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: cannot change locale (%s): %s" @@ -1425,35 +1433,35 @@ msgstr "You have new mail in $_" msgid "The mail in %s has been read\n" msgstr "The mail in %s has been read\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "syntax error: arithmetic expression required" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "syntax error: ‘;’ unexpected" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "syntax error: ‘((%s))’" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: bad instruction type %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s’)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: redirection instruction ‘%d’ out of range" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " @@ -1462,112 +1470,112 @@ msgstr "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "maximum here-document count exceeded" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "unexpected EOF while looking for matching ‘%c’" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "unexpected EOF while looking for ‘]]’" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error in conditional expression: unexpected token ‘%s’" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "syntax error in conditional expression" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "unexpected token ‘%s’, expected ‘)’" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "expected ‘)’" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "unexpected argument ‘%s’ to conditional unary operator" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "unexpected argument to conditional unary operator" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "unexpected token ‘%s’, conditional binary operator expected" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "conditional binary operator expected" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "unexpected argument ‘%s’ to conditional binary operator" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "unexpected argument to conditional binary operator" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "unexpected token ‘%c’ in conditional command" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "unexpected token ‘%s’ in conditional command" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "unexpected token %d in conditional command" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntax error near unexpected token ‘%s’" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "syntax error near ‘%s’" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "syntax error: unexpected end of file" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "syntax error" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use “%s” to leave the shell.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "unexpected EOF while looking for matching ‘)’" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: function ‘%s’ not found" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "programmable_completion: %s: possible retry loop" @@ -1596,90 +1604,94 @@ msgstr "xtrace_set: NULL file pointer" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ‘%c’: invalid format character" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "file descriptor out of range" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ambiguous redirect" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: cannot overwrite existing file" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: cannot redirect output" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "cannot create temp file for here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: cannot assign fd to variable" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port not supported without networking" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "redirection error: cannot duplicate fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "could not find /tmp, please create!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp must be a valid directory name" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "pretty-printing mode ignored in interactive shells" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: invalid option" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "cannot set uid to %d: effective uid %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "cannot set gid to %d: effective gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "cannot start debugger; debugging mode disabled" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: Is a directory" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "I have no name!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1688,49 +1700,49 @@ msgstr "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU long options:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Shell options:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s or -o option\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Type ‘%s -c “help set”’ for more information about shell options.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Type ‘%s -c help’ for more information about shell builtin commands.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use the ‘bashbug’ command to report bugs.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "bash home page: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "General help using GNU software: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: invalid operation" @@ -1904,91 +1916,96 @@ msgstr "Unknown Signal #" msgid "Unknown Signal #%d" msgstr "Unknown Signal #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "bad substitution: no closing ‘%s’ in %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: cannot assign list to array member" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "cannot make pipe for process substitution" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "cannot make child for process substitution" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "cannot open named pipe %s for reading" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "cannot open named pipe %s for writing" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "cannot duplicate named pipe %s as fd %d" -#: subst.c:5959 +#: subst.c:6062 msgid "command substitution: ignored null byte in input" msgstr "command substitution: ignored null byte in input" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "cannot make pipe for command substitution" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "cannot make child for command substitution" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: cannot duplicate pipe as fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: invalid variable name for name reference" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: bad substitution" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: invalid indirect expansion" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "%s: invalid variable name" -#: subst.c:6854 +#: subst.c:7056 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter not set" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter null or not set" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: substring expression < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: bad substitution" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: cannot assign in this way" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1996,12 +2013,12 @@ msgstr "" "future versions of the shell will force evaluation as an arithmetic " "substitution" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "bad substitution: no closing “`” in %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "no match: %s" @@ -2024,114 +2041,119 @@ msgstr "‘)’ expected" msgid "`)' expected, found %s" msgstr "‘)’ expected, found %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: unary operator expected" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: binary operator expected" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "missing ‘]’" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "invalid signal number" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "trap handler: maximum trap handler level exceeded (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: bad value in trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: bad signal %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "error importing function definition for ‘%s’" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell level (%d) too high, resetting to 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no function context at current scope" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variable may not be assigned value" -#: variables.c:3043 +#: variables.c:3453 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: assigning integer to name reference" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: no function context at current scope" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s has null exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "invalid character %d in exportstr for %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "no ‘=’ in exportstr for %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: head of shell_variables not a function context" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no global_variables context" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: head of shell_variables not a temporary environment scope" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: cannot open as FILE" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: invalid value for trace file descriptor" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: compatibility value out of range" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2016 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2154,22 +2176,22 @@ msgstr "This is free software; you are free to change and redistribute it." msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "There is NO WARRANTY, to the extent permitted by law." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: cannot allocate %lu bytes (%lu bytes allocated)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: cannot allocate %lu bytes" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: cannot allocate %lu bytes" @@ -2379,8 +2401,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -msgid "wait [-n] [id ...]" -msgstr "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" +msgstr "wait [-fn] [id ...]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2472,11 +2494,11 @@ msgstr "printf [-v var] format [arguments]" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" @@ -2489,8 +2511,8 @@ msgstr "" "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "compopt [-o|+o option] [-DE] [name ...]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o option] [-DEI] [name ...]" #: builtins.c:242 msgid "" @@ -2502,11 +2524,11 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" #: builtins.c:256 msgid "" @@ -2687,7 +2709,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Execute shell builtins.\n" " \n" @@ -2698,7 +2720,7 @@ msgstr "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." #: builtins.c:369 msgid "" @@ -2935,11 +2957,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2972,11 +2994,11 @@ msgstr "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the ‘integer’ attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the ‘trace’ attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using ‘+’ instead of ‘-’ turns off the given attribute.\n" @@ -3057,6 +3079,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3088,11 +3116,17 @@ msgstr "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3114,7 +3148,7 @@ msgstr "" " Exit Status:\n" " Returns success unless a write error occurs." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3164,7 +3198,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3184,7 +3218,7 @@ msgstr "" " Exit Status:\n" " Returns exit status of command or success if command is null." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3262,7 +3296,7 @@ msgstr "" " Returns success if an option is found; fails if the end of options is\n" " encountered or an error occurs." -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3304,7 +3338,7 @@ msgstr "" " Returns success unless COMMAND is not found or a redirection error " "occurs." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3316,7 +3350,7 @@ msgstr "" " Exits the shell with a status of N. If N is omitted, the exit status\n" " is that of the last command executed." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3330,7 +3364,7 @@ msgstr "" "executed\n" " in a login shell." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3386,7 +3420,7 @@ msgstr "" " Returns success or status of executed command; non-zero if an error " "occurs." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3406,7 +3440,7 @@ msgstr "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3430,7 +3464,7 @@ msgstr "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3474,7 +3508,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3489,7 +3523,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3508,13 +3542,13 @@ msgstr "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " "given." -#: builtins.c:836 +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3523,7 +3557,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3554,7 +3589,8 @@ msgstr "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3578,7 +3614,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3622,7 +3658,7 @@ msgstr "" " Returns success unless an invalid option is given or an error occurs.\n" " If -x is used, returns the exit status of COMMAND." -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3652,7 +3688,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." -#: builtins.c:918 +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3694,7 +3730,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3780,7 +3816,7 @@ msgstr "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3801,7 +3837,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3850,7 +3886,7 @@ msgstr "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3880,7 +3916,7 @@ msgstr "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3900,7 +3936,7 @@ msgstr "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." -#: builtins.c:1047 +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4068,7 +4104,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given." -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4108,7 +4144,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4142,7 +4178,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4180,7 +4216,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4198,7 +4234,7 @@ msgstr "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4222,7 +4258,7 @@ msgstr "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4246,7 +4282,7 @@ msgstr "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4408,7 +4444,7 @@ msgstr "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4420,7 +4456,7 @@ msgstr "" " This is a synonym for the “test” builtin, but the last argument must\n" " be a literal ‘]’, to match the opening ‘[’." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4440,7 +4476,7 @@ msgstr "" " Exit Status:\n" " Always succeeds." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4524,7 +4560,7 @@ msgstr "" " Returns success unless a SIGSPEC is invalid or an invalid option is " "given." -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4580,7 +4616,7 @@ msgstr "" " Returns success if all of the NAMEs are found; fails if any are not " "found." -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4674,7 +4710,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4706,7 +4742,7 @@ msgstr "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4714,13 +4750,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4731,18 +4769,20 @@ msgstr "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4768,7 +4808,7 @@ msgstr "" "invalid\n" " option is given." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4790,7 +4830,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4820,7 +4860,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4856,7 +4896,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4884,7 +4924,7 @@ msgstr "" " Exit Status:\n" " The return status is the return status of PIPELINE." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4902,7 +4942,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4940,7 +4980,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4958,7 +4998,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4976,7 +5016,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1653 +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4998,7 +5038,7 @@ msgstr "" " Exit Status:\n" " The coproc command returns an exit status of 0." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5022,7 +5062,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is readonly." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5040,7 +5080,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5064,7 +5104,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the resumed job." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5082,7 +5122,7 @@ msgstr "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5134,7 +5174,7 @@ msgstr "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5238,7 +5278,7 @@ msgstr "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5296,7 +5336,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5346,7 +5386,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5400,14 +5440,13 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5423,9 +5462,8 @@ msgstr "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with ‘set -o’\n" @@ -5438,7 +5476,7 @@ msgstr "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5512,7 +5550,7 @@ msgstr "" "assignment\n" " error occurs." -#: builtins.c:1953 +#: builtins.c:1961 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5530,10 +5568,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5554,15 +5596,19 @@ msgstr "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to “empty” commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5584,7 +5630,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -5599,6 +5645,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5627,6 +5674,7 @@ msgstr "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the “default” command completion\n" " \t-E\t\tChange options for the “empty” command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using ‘+o’ instead of ‘-o’ turns off the specified option.\n" " \n" @@ -5642,7 +5690,7 @@ msgstr "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5722,7 +5770,7 @@ msgstr "" "or\n" " not an indexed array." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/eo.gmo b/po/eo.gmo index 90aef6b1c..a3fa55021 100644 Binary files a/po/eo.gmo and b/po/eo.gmo differ diff --git a/po/eo.po b/po/eo.po index f0a372e35..e6e6a0e21 100644 --- a/po/eo.po +++ b/po/eo.po @@ -1,10 +1,10 @@ # Esperanto language file for GNU Bash. # Copyright (C) 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Sergio Pokrovskij , 1998, 2006, 2009, 2011, 2014, 2015. +# Sergio Pokrovskij , 1998, ... 2016. # -# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/bash-4.4/bash-4.4-beta/builtins"); -*- -# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/4.4/bash-4.4-beta"); -*- +# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/4.4/bash-4.4/builtins"); -*- +# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/4.4/bash-4.4"); -*- # Stilaj notoj: # La angulaj citiloj limigas «plurajn vortojn», # 99-66 estas la citiloj de „unuvortaĵo‟ @@ -28,135 +28,136 @@ # unset malvalorizi (variablon); malaktivigi, malŝalti (opcion, nomon) msgid "" msgstr "" -"Project-Id-Version: GNU bash 4.4-beta1\n" +"Project-Id-Version: GNU bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-21 14:06+0300\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2016-09-22 23:59+0700\n" "Last-Translator: Sergio Pokrovskij \n" "Language-Team: Esperanto \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: eo\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "Misa tabel-indico" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: ne plu nomreferenco (la atributo nameref forigitas)" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: Maleblas konverti entjerindican tabelon en asocitabelon" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: Misa asocitabela ŝlosilo" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: Valorizato havu nombran indicon" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: Valorizante per asocitabelo uzu indicon" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: Ne prosperis krei: %s" # XXX: internal_error -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: Mankas klavartabelo por komando" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: La unua ne-blankspaca signo ne estas „\"‟" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "Mankas ferma „%c‟ en %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: Mankas disiga dupunkto" # XXX: internal_error -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "vinkulmalvolvo: Maleblas memorhavigo por %s" # XXX: internal_error -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %d elementoj" # XXX: internal_error -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %s" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "%s: MaltaÅ­gas por uzi kiel alinomon" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "liniredaktado ne estas ebligita" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s‟: Misa nomo por klavartabelo" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: Ne eblas legi: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "%s: Ne eblas malligi" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "%s: Nekonata funkcinomo" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s malhavas klavligon\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s vokeblas per " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "%s: Ne eblas malligi" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "iteracinombrilo" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "Sencas nur en iteracio „for‟, „while‟ aÅ­ „until‟" @@ -170,234 +171,233 @@ msgstr "" "\n" " Sen ESPR liveras " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME malhavas valoron" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "Tro multe da argumentoj" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "Ne estas alia dosierujo" +msgstr "NUL-dosierujo" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD malhavas valoron" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "linio %dª: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "Averto: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: Uzmaniero: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: La opcio bezonas argumenton" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: Necesas nombra argumento" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: Ne trovita" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: Misa opcio" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: Misa opcinomo" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s‟ ne estas taÅ­ga nomo" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "Misa okuma nombro" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "Misa 16uma nombro" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "Misa nombro" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: Misa signalindiko" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s‟: Nek proceznumero, nek taÅ­ga laborindiko" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: Nurlega variablo" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s estas ekster sia variejo" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argumento" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s estas ekster sia variejo" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: Ne estas tia laboro" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: Ĉi tiu ŝelo ne disponigas laborregadon" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "Laborregado ne disponeblas" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: Limigita" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "limigita" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "„%s‟ ne estas primitiva komando ŝela" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "Eraro ĉe skribo: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "Eraro ĉe agordado de terminalaj atributoj: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "Eraro ĉe akiro de terminalaj atributoj: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: Eraro ĉe provo determini la kurantan dosierujon: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: Ambigua laborindiko" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "helpilo mankas en ĉi tiu versio" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: Misa nomo de ago" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: Kompletigo ne estas specifita" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "Averto: La opcio -F povas funkcii alie ol vi eble supozas" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "Averto: La opcio -C povas funkcii alie ol vi eble supozas" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "Ni ne estas en plenumado de kompletiga funkcio" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "Uzeblas nur ene de funkcio" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: Referenca variablo ne povas esti tabelo" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: Nomreferenca variablo ne referencu sin mem" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: Cikla nomreferenco" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: Misa variablonomo por nomreferenco" +msgstr "„%s“: Misa variablonomo por nomreferenco" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "„-f‟ ne estas uzebla por fari funkciojn" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: Nurlega funkcio" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: Tutopa tabelvalorizo citila estas evitinda" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: Ĉi tiel ne eblas neniigi tabelvariablojn" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: Ne eblas konverti asocitabelon en entjerindican tabelon" @@ -431,68 +431,68 @@ msgstr "%s: Ne ŝargita dinamike" msgid "%s: cannot delete: %s" msgstr "%s: Ne eblas forigi: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s estas dosierujo" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: Ne ordinara dosiero" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: Tro granda dosiero" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: Neplenumebla duuma dosiero" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: Maleblas plenumi: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "adiaÅ­\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "La ŝelo ne estas saluta; eliru per «exit»" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Restas haltigitaj laboroj.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Restas rulataj laboroj.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "Komando ne trovita" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "Historia indiko" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: Ne malfermiĝis labordosiero: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "kuranta" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "La laboro %d estas lanĉita sen laborregado" @@ -507,29 +507,28 @@ msgstr "%s: Misa opcio -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: La opcio bezonas argumenton -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "Nomkonservado (haketado, «hashing») estas malŝaltita" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: Hakettabelo estas malplena\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "Trafoj\tKomando\n" # ZZZ: aĉaj citiloj (fermita en la programo) -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Ŝelaj komandoj kongruaj kun la ŝlosilvorto '" msgstr[1] "Ŝelaj komandoj kongruaj kun la ŝlosilvortoj '" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -537,12 +536,12 @@ msgstr "" "Helpaĵo pri „%s‟ malestas.\n" "Provu «help help» aÅ­ «man -k %s» aÅ­ «info %s»." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: Fiaskis malfermo de %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -561,20 +560,21 @@ msgstr "" "Steleto (*) tuj post nomo indikas, ke la komando estas malebligita.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "Ne pli ol unu el -anrw estas uzebla" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "pozicio en la historio" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: MaltaÅ­ga argumento" +msgstr "%s: MaltaÅ­ga tempomarko" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: Historia malvolvo fiaskis" @@ -588,16 +588,16 @@ msgstr "%s: inlib fiaskis" msgid "no other options allowed with `-x'" msgstr "La uzo de „-x‟ malebligas aliajn opciojn" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: Argumento estu proceznumero aÅ­ laborindiko" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Nekonata eraro" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "Mankas esprimo" @@ -606,71 +606,71 @@ msgstr "Mankas esprimo" msgid "%s: not an indexed array" msgstr "%s: ĝi ne estas entjerindica tabelo" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: Misa indiko de dosiernumero" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: Misa dosiernumero: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: Misa lininombro" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: Misa tabelbazo" # Supozeble callback => retrovoko ?? -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: Misa kvanto ĉe retrovoko" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "Mankas nomo de tabelvariablo" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "necesas subteno de tabelvariabloj" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "„%s‟: Mankas formata signo" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "%c: Misa tempoformato" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "„%c‟: Misa signo formata" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "Averto: %s: %s" # XXX: internal_error -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "Miso ĉe analizado de formato: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "Mankas 16uma cifero por \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "Post „%c‟ mankas unikoda cifero" @@ -684,20 +684,20 @@ msgstr "Ne estas alia dosierujo" msgid "%s: invalid argument" msgstr "%s: MaltaÅ­ga argumento" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "Dosierujstako malplenas" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "indico de dosierujstako" # dirs [-clpv] [+N] [-N] -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -740,7 +740,7 @@ msgstr "" "\tper „dirs‟ sen opcioj, numerante ekde 0." # pushd [dir | +N | -N] [-n] -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -786,7 +786,7 @@ msgstr "" " Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟." # popd [+N | -N] [-n] -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -830,41 +830,41 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: Misa indiko de atendotempo" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "Lega (read) eraro: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "„return‟ sencas nur en funkcio aÅ­ punkte vokita („.‟, „source‟) skripto" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "Ne eblas samtempe malaktivigi funkcion kaj variablon" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: Malaktivigo fiaskis" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: Malaktivigo fiaskis: nurlega %s" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: Ne tabela variablo" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: Ne funkcio" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: Ne eblas eksporti" @@ -873,20 +873,20 @@ msgstr "%s: Ne eblas eksporti" msgid "shift count" msgstr "Nombrilo de „shift‟" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "Maleblas samtempe ŝalti kaj malŝalti ŝelan opcion" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: Misa nomo de ŝela opcio" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "Necesas dosiernoma argumento" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: Dosiero ne trovita" @@ -899,61 +899,61 @@ msgstr "Ne eblas halteti" msgid "cannot suspend a login shell" msgstr "Ne eblas haltetigi salutan ŝelon" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "„%s‟ alinomas jenon: «%s»\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "„%s‟ estas ŝlosilvorto de la ŝelo\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s estas funkcio\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "„%s‟ estas speciala primitiva ŝelkomando\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "„%s‟ estas primitiva komando de la ŝelo\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "„%s‟ estas „%s‟\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "„%s‟ estas metita en hakettabelon (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: MaltaÅ­ga argumento por limo" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "„%c‟: Misa komando" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: Fiaskis provo legi limon: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limo" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: Malprosperis ŝanĝi limon: %s" @@ -974,365 +974,375 @@ msgstr "„%c‟: MaltaÅ­ga simbolo por atingorajta modifilo" msgid "`%c': invalid symbolic mode character" msgstr "„%c‟: La signo ne estas simbolo de atingorajta kategorio" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " linio " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "La ĵusa komando: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Ĉesigado ..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORMO: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "Nekonata komand-eraro" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "Misa komandotipo" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "Misa stir-operacio" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "Misa salto" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: Neligita variablo" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aTro longe sen enigo: AÅ­tomata seancofino\n" # XXX: internal error: -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "Fiaskis provo nomumi la disponaĵon «/dev/null» ĉefenigujo: %s" # XXX: internal error: -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c‟: Misa formatsigno" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: la kunprocezo [%d:%s] ankoraÅ­ ekzistas" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "Eraro en dukto" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: La ingado de „eval“oj superis sian maksimumon (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: La ingado de „source“oj superis sian maksimumon (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: La ingado de funkcioj superis sian maksimumon (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: Malpermesitas uzi „/‟ en komandonomoj" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: Komando ne trovita" # XXX: internal error: -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: Misa interpretilo" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: Neplenumebla duuma dosiero: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "„%s‟ estas primitiva komando speciala" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "Ne eblas kunnomumi al dosiernumero %d la dosiernumeron %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "Tro profunda rekursio en esprimo" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "Rekursistako elĉerpita" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "Sintaksa eraro en esprimo" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "Provo valorizi ne-variablon" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "Sintaksa eraro en esprimo" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "Divido per 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "CIMO: Misa operacisigno en kombinita valorizsimbolo" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "„:‟ mankas kondiĉa esprimo" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "Negativa eksponento" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "Post antaÅ­kremento aperu nomo de variablo" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "Mankas „)‟" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "Sintaksa eraro: Mankas operando" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "Sintaksa eraro: Misa operacisimbolo aritmetika" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (misa simbolo estas „%s‟)" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "MaltaÅ­ga bazo nombrosistema" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "Tro granda valoro por bazo de nombrosistemo" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: Misa esprimo\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getwd: Ne eblas atingi patrajn dosierujojn" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "Ne eblas reŝalti senprokrastan reĝimon por dosiernumero %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "Maleblas disponigi novan dosiernumeron por Baŝa enigo el n-ro %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: La nova dosiernumero (fd %d) jam havas bufron" # ZZZ: sys_error (_("start_pipeline: pgrp pipe")); -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: procezgrupo dukto" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "Forke farita proceznumero %d aperas en rulata laboro %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "Haltigita laboro %d kun procezgrupo %ld estas forigata" # ifdef DEBUG ... internal_warning(): -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) in the_pipeline" # ifdef DEBUG ... internal_warning(): -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marked as still alive" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: Ne estas tia proceznumero (%ld)!" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Signalo %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Farite" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Haltigita" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Haltigita(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Rulata" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Farite(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Eliro %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Nekonata stato" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(nekropsio elŝutita)" -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (labordosierujo: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "provo atribui (setpgid) procezgrupon %2$ld de la procezido %1$ld" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: La procezo %ld ne estas ido de ĉi tiu ŝelo" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Malestas informoj pri procezo %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: La laboro %d estas haltigita" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: La laboro finiĝis" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: La laboro %d jam estas fona" # XXX: internal warning: -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: WNOHANG iĝas ŝaltita por eviti nedifintan pendiĝon" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: linio %dª: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr "(nekropsio elŝutita)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(nun labordosierujo estas: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp fiaskis" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: liniaranĝo" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: liniaranĝo" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid()" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ne prosperis atribui grupon (%d) de terminala procezo" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "Ĉi tiu ŝelo ne disponigas laborregadon" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: Malveras la aserto: %s\n" # XXX: debug? -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1342,47 +1352,47 @@ msgstr "" "malloc: %s:%d: aserto sufokita\r\n" # XXX: internal error -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "nekonata" # XXX: debug? -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: Skribdifektita bloko en malokupa listo (free list)" # XXX: debug? -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: La argumento montras blokon jam malokupitan" # XXX: debug? -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: La argumento ne montras generitan memoron" # XXX: debug? -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: Okazis maltroo; mh_nbytes estas ekster sia variejo" # XXX: debug? -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: La ĉapa kaj vosta longoj de memorpeco ne estas egalaj" # XXX: debug? -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: La argumento ne montras generitan memoron" # XXX: debug? -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: Okazis maltroo; mh_nbytes estas ekster sia variejo" # XXX: debug? -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: La ĉapa kaj vosta longoj de memorpeco ne estas egalaj" @@ -1432,25 +1442,25 @@ msgid "network operations not supported" msgstr "Reta funkciado ne disponeblas" # XXX: internal warning: -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: Maleblas ŝanĝi lokaĵaron (%s)" # XXX: internal warning: -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: Maleblas ŝanĝi lokaĵaron (%s): %s" # XXX: fatal_error -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ne eblas ŝanĝi la lokaĵaron (%s)" # XXX: fatal_error -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ne eblas ŝanĝi la lokaĵaron (%s): %s" @@ -1468,153 +1478,157 @@ msgstr "Nova poŝto en $_" msgid "The mail in %s has been read\n" msgstr "La poŝto en %s estas jam legita\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "Sintaksa eraro: Necesas aritmetika esprimo" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "Sintaksa eraro: Neatendita „;‟" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "Sintaksa eraro: „((%s))‟" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: Misa ordontipo %d" # internal_warning(): -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "Tuj-dokumenton de linio %d limigas dosierfino (mankas „%s‟)" # XXX: programming_error -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: Alidirektada komando „%d‟ ekster sia variejo" -#: parse.y:2324 +# internal_warning(): +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) superas SIZE_MAX (%lu): la linio " +"tranĉita" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "La nombro de tuj-documentoj superis sian maksimumon" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "Neatendita dosierfino dum serĉo de responda „%c‟" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "Neatendita dosierfino dum serĉo de „]]‟" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "Sintaksa eraro en kondiĉa esprimo: Neatendita simbolo „%s‟" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "Sintaksa eraro en kondiĉa esprimo" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "Nekonvena simbolo „%s‟ anstataÅ­ „)‟" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "Mankas „)‟" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "La argumento „%s‟ ne konvenas por unuloka kondiĉa operacisimbolo" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "MaltaÅ­ga argumento por unuloka kondiĉa operacisimbolo" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "Misa simbolo „%s‟ anstataÅ­ duloka kondiĉa operacisigno" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "ĉi tie devas esti duloka kondiĉa operacisigno" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "La argumento „%s‟ ne konvenas por duloka kondiĉa operacisimbolo" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "\n" msgstr "" "La hejmpaĝo de Baŝo (anglalingva): \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" "Ĝenerala helpilo pri uzo de GNUa programaro: \n" # XXX: internal_error -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: Misa operacio" @@ -2000,105 +2019,109 @@ msgstr "Nekonata signalnumero" msgid "Unknown Signal #%d" msgstr "Nekonata signalo n-ro %d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Misa anstataÅ­igo: Mankas ferma „%s‟ en %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: Maleblas valorizi tabelanon per listo" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "Ne prosperis fari dukton por proceza anstataÅ­igo" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "Ne prosperis krei idon por proceza anstataÅ­igo" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "Ne prosperis malfermi nomitan dukton %s porlegan" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "Ne prosperis malfermi nomitan dukton %s por skribado" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "Ne prosperis kunnomumi nomhavan dukton %s kiel dosiernumeron %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "Misa anstataÅ­igo: Mankas ferma „`‟ en %s" +msgstr "Komanda anstataÅ­igo: nul-bajto en enigaĵo, ignorita" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "Ne prosperis fari dukton por komanda anstataÅ­igo" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "Ne prosperis krei procezidon por komanda anstataÅ­igo" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: Ne prosperis kunnomumi la dosiernumeron 1 al dukto" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: Misa variablonomo por nomreferenco" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: Misa anstataÅ­igo" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: Misa malvolvo malrekta" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "%s: MaltaÅ­ga variablonomo" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: Parametro estas NUL aÅ­ malaktiva" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: Parametro estas NUL aÅ­ malaktiva" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: subĉeno-esprimo < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: Misa anstataÅ­igo" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ĉi tiel ne valorizebla" # XXX: internal warning: -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" "Ontaj versioj de la ŝelo plenumos komputon kiel aritmetikan anstataÅ­igon" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "Misa anstataÅ­igo: Mankas ferma „`‟ en %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "Nenio kongrua: %s" @@ -2121,129 +2144,134 @@ msgstr "Mankas „)‟" msgid "`)' expected, found %s" msgstr "AnstataÅ­ „)‟ troviĝas %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: Tie devas esti unuloka operacisigno" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: Tie devas esti duloka operacisigno" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "Mankas „]‟" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "Misa signalnumero" +#: trap.c:320 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: La ingado de „eval“oj superis sian maksimumon (%d)" + # XXX: internal_warning -#: trap.c:387 +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: Misa valoro en trap_list[%d]: %p" # XXX: internal_warning -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: Signaltraktilo SIG_DFL resendas %d (%s) al mi mem" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: Misa signalnumero %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "Eraro ĉe importo de funkcidifino por „%s‟" # XXX: internal_warning -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "%d estas tro granda ŝelnivelo; mallevita ĝis 1" # XXX: internal_error -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: Malestas funkcia kunteksto en ĉi-regiono" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: Variablo ne valorizebla" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: Misa variablonomo por nomreferenco" +msgstr "%s: Nomreferenco valorizata per entjero" # XXX: internal_error -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: Malestas funkcia kunteksto en ĉi-regiono" # XXX: internal_error -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "«exportstr» de %s estas NUL" # XXX: internal_error -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "Misa signo %d en eksporta signoĉeno por „%s‟" # XXX: internal_error -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "Mankas „=‟ en eksporta signoĉeno por „%s‟" # XXX: internal_error -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: La kapo de „shell_variables‟ ne estas funkcia kunteksto" # XXX: internal_error -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: Mankas kunteksto de „global_variables‟" # XXX: internal_error -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: La kapo de „shell_variables‟ ne estas provizora regiono" # XXX: internal_error -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: Ne malfermeblas kiel DOSIERO" # XXX: internal_error -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: Misa valoro por spurada dosiernumero (trace file descriptor)" # # XXX: internal_error -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s kongruo-nivelo estas ekster sia variejo" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2015 ĉe «Free Software Foundation, Inc.»" +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 ĉe «Free Software Foundation, Inc.»" #: version.c:47 version2.c:47 msgid "" @@ -2266,24 +2294,24 @@ msgstr "Ĉi tiu programo estas libera; vi rajtas libere ĝin ŝanĝi kaj pludoni msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "NENIA GARANTIO estas donita, tiom kiom tion permesas la leĝo." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: Malsukcesis okupi %lu bajtojn (%lu bajtoj disponigitaj)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: Malsukcesis okupi %lu bajtojn" # XXX: fatal_error -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: Malsukcesis okupi %lu bajtojn (%lu bajtoj disponigitaj)" # XXX: fatal_error -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: Malsukcesis okupi %lu bajtojn" @@ -2404,7 +2432,7 @@ msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" -"history [-c] [-d DEŜOVO] [n] aÅ­\n" +"history [-c] [-d POZICIO] [n] aÅ­\n" "history -awr [DOSIERNOMO] aÅ­\n" "history -ps ARG [ARG...]" @@ -2415,9 +2443,8 @@ msgstr "" "jobs -x KOMANDO [ARGS]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [LABORINDIKO ...]" +msgstr "disown [-h] [-ar] [LABORINDIKO ... | PROCEZNUMERO ...]" #: builtins.c:134 msgid "" @@ -2501,7 +2528,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [REĜIMO]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [IND ...]" #: builtins.c:181 @@ -2595,8 +2623,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v VAR] FORMATO [ARGUMENTOJ]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2614,7 +2643,8 @@ msgstr "" " [-P PREFIKSO] [-S SUFIKSO] [VORTO]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o OPCIO] [-DE] [NOMO ...]" #: builtins.c:242 @@ -2626,9 +2656,10 @@ msgstr "" " [-C RETROVOKO] [-c KVANTO] [TABELO]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN]\n" " [-C RETROVOKO] [-c KVANTO] [TABELO]" @@ -2806,6 +2837,7 @@ msgstr "" # builtin [shell-builtin [arg ...]] # builtin [ŜELAÄ´O [ARG ...]] #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2816,7 +2848,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Rulu primitivan ŝelkomandon\n" "\n" @@ -3047,6 +3079,7 @@ msgstr "" # declare [-aAfFgilnrtux] [-p] [name[=value] ...] # declare [-aAfFgilnrtux] [-p] [NOMO[=VALORO] ...] #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3065,11 +3098,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3123,7 +3156,6 @@ msgstr "" # typeset [-aAfFgilrtux] [-p] name[=value] ... #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3131,7 +3163,7 @@ msgid "" msgstr "" "Difinu atributojn kaj valorojn de variabloj\n" "\n" -" Arkaika. Vd «help declare»." +" Sinonimo de „declare“. Vd «help declare»." # local [option] name[=value] ... # local [OPCIO] NOMO[=VALORO] ... @@ -3163,6 +3195,7 @@ msgstr "" # echo: #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3191,6 +3224,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3227,7 +3266,7 @@ msgstr "" " Sukcesa, krom se okazas elig-eraro." # echo [-n] [ARG ...] -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3251,7 +3290,7 @@ msgstr "" # enable [-a] [-dnps] [-f filename] [name ...] # enable [-a] [-dnps] [-f DOSIERNOMO] [NOMO ...] -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3303,7 +3342,7 @@ msgstr "" " eraro." # eval [ARG ...] -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3324,7 +3363,7 @@ msgstr "" # getopts optstring name [arg] => # getopts OPCIĈENO NOMO [ARG] -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3404,7 +3443,7 @@ msgstr "" # exec [-cl] [-a name] [command [arguments ...]] [redirection ...] # exec [-cl] [-a NOMO] [KOMANDO [ARGUMENTOJ ...]] [ALIDIREKTADO ...] -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3446,7 +3485,7 @@ msgstr "" " alirektado." # exit [n] -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3459,7 +3498,7 @@ msgstr "" " estas tiu de la plej ĵuse plenumita komando." # logout [N] -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3476,7 +3515,7 @@ msgstr "" # fc -s [pat=rep] [command] => # fc [-e REDAKTILO] [-lnr] [UNUA] [LASTA] aÅ­ # fc -s [ŜABLONO=ANST] [KOMANDO] -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3531,7 +3570,7 @@ msgstr "" " eraro." # fg [job_spec] => fg [LABORINDIKO] -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3552,7 +3591,7 @@ msgstr "" " Tiu de la dialogigita komando; aÅ­ malsukceso, se okazis eraro." # bg [job_spec] => bg [LABORINDIKO] -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3576,7 +3615,7 @@ msgstr "" " eraro." # hash [-lr] [-p VOJNOMO] [-dt] [NOMO ...] -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3622,7 +3661,8 @@ msgstr "" # help [-ds] [pattern ...] # help [-ds] [ŜABLONO ...] -#: builtins.c:812 +#: builtins.c:816 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3637,7 +3677,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3664,10 +3704,10 @@ msgstr "" # ZZZ history [-c] [-d offset] [n] or # history -awr [filename] or # history -ps arg [arg...] => -# history [-c] [-d DEŜOVO] [n] aÅ­ +# history [-c] [-d POZICIO] [n] aÅ­ # history -awr [DOSIERNOMO] aÅ­ # history -ps ARG [ARG...] -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3677,7 +3717,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3709,7 +3750,7 @@ msgstr "" "\n" " Opcioj:\n" " -c forviŝu la tutan historion (forigu ĉiujn erojn el la listo)\n" -" -d forviŝu la linion kies numero estas DEŜOVO\n" +" -d POZICIO forviŝu la linion kies numero estas POZICIO\n" "\n" " -a aldonu la historiliniojn de la kuranta seanco al la\n" " historidosiero\n" @@ -3741,7 +3782,7 @@ msgstr "" # jobs -x command [args] => # jobs [-lnprs] [LABORINDIKO ...] aÅ­ # jobs -x KOMANDO [ARGS] -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3787,7 +3828,7 @@ msgstr "" " Ĉe „-x‟, la elirstato de la KOMANDO." # disown [-h] [-ar] [jobspec ...] -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3823,8 +3864,7 @@ msgstr "" # kill -l [sigspec] => # kill [-s SIGSNOM | -n SIGNUM | -SIGNOM] PN | LABORINDIKO ... aÅ­ # kill -l [SIGNOM] -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3857,7 +3897,8 @@ msgstr "" " -n\tSIGNUM estas numero de signalo\n" " -l listigu signalnomojn; la eventuale sekvantaj entjeraj\n" " argumentoj estas signalnumeroj, ĉeeste de kiuj nur la al\n" -" ili respondaj signalnomoj estu eligataj.\n" +" ili respondaj signalnomoj estu eligataj\n" +" -L sinonimo por -l\n" "\n" " „kill‟ estas primitiva ŝelkomando pro du kaÅ­zoj:\n" " unue, ĝi ebligas uzi laborindikojn anstataÅ­ proceznumerojn;\n" @@ -3869,7 +3910,7 @@ msgstr "" # let arg [arg ...] # let ARG [ARG ...] -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3959,7 +4000,8 @@ msgstr "" # [-p prompt] [-t timeout] [-u fd] [name ...] # read [-ers] [-a TABELO] [-d DISIG] [-i TEKSTO] [-n NSIGN] [-N NSIGN] # [-p INVIT] [-t TLIM] [-u DN] [NOMO ...] -#: builtins.c:987 +#: builtins.c:992 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3980,7 +4022,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -4054,7 +4096,7 @@ msgstr "" # return [n] # return [N] -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -4076,8 +4118,7 @@ msgstr "" # set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] # set [-abefhkmnptuvxBCHP] [-o OPCINOMO] [--] [ARG ...] -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4230,8 +4271,8 @@ msgstr "" " -P\tLa simbolaj ligiloj estu travideblaj ĉe plenumo de komandoj\n" "\tkiuj ŝanĝas la kurantan dosierujon („cd‟ ktp uzu «fizikan»\n" "\tinterpreton de vojnomo).\n" -" -T\tSe aktiva, la DEBUG-kaptilon (DEBUG trap) heredas la ŝelaj\n" -"\tfunkcioj\n" +" -T\tSe aktiva, la ŝelaj funkcioj heredas la kaptilojn (Traps)\n" +"\tDEBUG kaj RETURN \n" " --\tLa restantajn argumentojn uzu por valorizi la numerparametrojn.\n" "\tSe tiaj argumentoj mankas, malvalorizu la numerparametrojn.\n" " -\tLa restantajn argumentojn uzu por valorizi la numerparametrojn.\n" @@ -4248,7 +4289,7 @@ msgstr "" # unset [-f] [-v] [name ...] # unset [-f] [-v] [NOMO ...] -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4289,7 +4330,7 @@ msgstr "" # export [-fn] [name[=value] ...] or export -p # export [-fn] [NOMO[=VALORO] ...] aÅ­ export -p -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4325,7 +4366,7 @@ msgstr "" # readonly [-aAf] [name[=value] ...] or readonly -p # readonly [-aAf] [NOMO[=VALORO] ...] aÅ­ readonly -p -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4364,7 +4405,7 @@ msgstr "" " Sukceso, krom se aperas nevalida nomo aÅ­ misa opcio." # shift [n] -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4381,7 +4422,7 @@ msgstr "" # source filename [arguments] # source DOSIERNOMO [ARGUMENTOJ] -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4406,7 +4447,7 @@ msgstr "" " DOSIERNOMO ne legeblas." # suspend [-f] -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4432,7 +4473,7 @@ msgstr "" # test [expr] # test [ESPRIMO] -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4589,7 +4630,7 @@ msgstr "" " argumento." # [ arg... ] -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4599,7 +4640,7 @@ msgstr "" "Ĉi tiu estas sinonimo de la primitivo „test‟; tamen la lasta\n" " argumento devas esti „]‟ fermanta la esprimon komencitan per „[‟." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4620,7 +4661,7 @@ msgstr "" # trap [-lp] [[arg] signal_spec ...] # trap [-lp] [[ARG] SIGNALINDIKO ...] -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4699,7 +4740,7 @@ msgstr "" # type [-afptP] name [name ...] # type [-afptP] NOMO [NOMO ...] -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4757,7 +4798,7 @@ msgstr "" # ulimit [-SHacdefilmnpqrstuvx] [limit] # ulimit [-SHacdefilmnpqrstuvx] [LIMO] -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4853,7 +4894,7 @@ msgstr "" # umask [-p] [-S] [mode] # umask [-p] [-S] [REĜIMO] -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4888,7 +4929,8 @@ msgstr "" # wait [-n] [id ...] # wait [-n] [IND ...] -#: builtins.c:1494 +#: builtins.c:1499 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4896,13 +4938,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4924,7 +4968,7 @@ msgstr "" # wait [pid ...] # wait [PN ...] -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4950,7 +4994,7 @@ msgstr "" # for NAME [in WORDS ... ] ; do COMMANDS; done # for NOMO [in VORTOJ ... ] ; do KOMANDOJ; done -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4974,7 +5018,7 @@ msgstr "" # for (( exp1; exp2; exp3 )); do COMMANDS; done # for (( ESPR1; ESPR2; ESPR3 )); do KOMANDOJ; done -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -5006,7 +5050,7 @@ msgstr "" # select NAME [in WORDS ... ;] do COMMANDS; done # select NONO [in VORTOJ ... ;] do KOMANDOJ; done -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5043,7 +5087,7 @@ msgstr "" # time [-p] PIPELINE # time [-p] DUKTO -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5074,7 +5118,7 @@ msgstr "" # case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac # case VORTO in [ŜABLONO [| ŜABLONO]...) KOMANDOJ ;;]... esac -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5096,7 +5140,7 @@ msgstr "" # [ else COMMANDS; ] fi # if KOMANDOJ; then KOMANDOJ;[ elif KOMANDOJ; then KOMANDOJ; ]... # [ else KOMANDOJ; ] fi -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5128,7 +5172,7 @@ msgstr "" # while COMMANDS; do COMMANDS; done # while KOMANDOJ; do KOMANDOJ; done -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5148,7 +5192,7 @@ msgstr "" # until COMMANDS; do COMMANDS; done # until KOMANDOJ; do KOMANDOJ; done -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5168,8 +5212,7 @@ msgstr "" # coproc [NAME] command [redirections] # coproc [NOMO] KOMANDO [ALIDIREKTADOJ] -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5189,11 +5232,11 @@ msgstr "" " „COPROC‟.\n" "\n" " Elirstato:\n" -" Tiu de KOMANDO." +" La komando coproc liveras la elirstaton 0." # function name { COMMANDS ; } or name () { COMMANDS ; } # function NOMO { KOMANDOJ ; } aÅ­ NOMO () { KOMANDOJ ; } -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5218,7 +5261,7 @@ msgstr "" # grouping_braces: { COMMANDS ; } # { KOMANDOJ ; } -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5238,7 +5281,7 @@ msgstr "" # job_spec [&] # LABORINDIKO [&] -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5263,7 +5306,7 @@ msgstr "" # (( expression )) # (( ESPRIMO )) -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5283,7 +5326,7 @@ msgstr "" # [[ expression ]] # [[ ESPRIMO ]] -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5334,7 +5377,7 @@ msgstr "" # help var # variables - Names and meanings of some shell variables -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5441,7 +5484,7 @@ msgstr "" # pushd [-n] [+N | -N | dir] # pushd [-n] [+N | -N | DOSIERUJO] -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5500,7 +5543,7 @@ msgstr "" " Sukceso, krom se aperas misa argumento aÅ­ se cd malsukcesas." # popd [-n] [+N | -N] -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5549,7 +5592,7 @@ msgstr "" " Sukceso, krom se aperas misa argumento aÅ­ se cd malsukcesas." # dirs [-clpv] [+N] [-N] -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5603,14 +5646,14 @@ msgstr "" # shopt [-pqsu] [-o] [optname ...] # shopt [-pqsu] [-o] [OPCINOMO ...] -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5642,7 +5685,7 @@ msgstr "" # printf [-v var] format [arguments] # printf [-v VAR] FORMATO [ARGUMENTOJ] -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5709,7 +5752,8 @@ msgstr "" # complete [-abcdefgjksuv] [-pr] [-DE] [-o OPCIO] [-A AGO] [-G GLOBŜAB] # [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTROŜAB] # [-P PREFIKSO] [-S SUFIKSO] [NOMO ...] -#: builtins.c:1953 +#: builtins.c:1961 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5727,10 +5771,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5762,7 +5810,7 @@ msgstr "" # compgen [-abcdefgjksuv] [-o OPCIO] [-A AGO] [-G GLOBŜAB] # [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTROŜAB] # [-P PREFIKSO] [-S SUFIKSO] [VORTO] -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5783,7 +5831,8 @@ msgstr "" " Sukceso, krom se aperas misa opcio aÅ­ okazas eraro." # compopt [-o|+o OPCIO] [-DE] [NOMO ...] -#: builtins.c:1996 +#: builtins.c:2006 +#, fuzzy msgid "" "Modify or display completion options.\n" " \n" @@ -5798,6 +5847,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5842,7 +5892,7 @@ msgstr "" # [-c quantum] [array] # mapfile [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN] [-C RETROVOKO] # [-c KVANTO] [TABELO] -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5919,7 +5969,7 @@ msgstr "" # readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] # [-c quantum] [array] -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5928,18 +5978,3 @@ msgstr "" "Legu liniojn el dosiero en tabelvariablon.\n" "\n" " Sinonimo de „mapfile‟." - -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2014 ĉe «Free Software Foundation, Inc.»" - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "true" - -#~ msgid "false" -#~ msgstr "false" - -#~ msgid "times" -#~ msgstr "times" diff --git a/po/es.gmo b/po/es.gmo index 5edaa91d3..7c7ec1446 100644 Binary files a/po/es.gmo and b/po/es.gmo differ diff --git a/po/es.po b/po/es.po index 1988fb2b6..891d82ba4 100644 --- a/po/es.po +++ b/po/es.po @@ -1,139 +1,142 @@ -# Mensajes en español para GNU bash-4.2. -# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# Mensajes en español para GNU bash +# Copyright (C) 2018 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Cristian Othón Martínez Vera , 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011. +# Cristian Othón Martínez Vera , 2000 - 2011. +# Francisco Javier Serrador +# Antonio Ceballos Roa , 2018 # msgid "" msgstr "" -"Project-Id-Version: GNU bash 4.2\n" +"Project-Id-Version: GNU bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2011-08-14 11:55-0500\n" -"Last-Translator: Cristian Othón Martínez Vera \n" -"Language-Team: Spanish \n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2018-06-04 22:22+0200\n" +"Last-Translator: Antonio Ceballos Roa \n" +"Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8-bit\n" +"Content-Transfer-Encoding: 8bit\n" "Language: es\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "subíndice de matriz incorrecto" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: se elimina el atributo nameref" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "%s: no se puede convertir la matriz de indizada a asociativa" +msgstr "%s: no se puede convertir la matriz indexada en asociativa" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" -msgstr "%s: índice de matriz asociativa inválido" +msgstr "%s: clave de matriz asociativa no válida" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: no se puede asignar a un índice que no es numérico" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: se debe usar un subíndice al asignar a una matriz asociativa" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: no se puede crear: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: no se puede encontrar la combinación de teclas " "para la orden" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "%s: el primer carácter que no es espacio en blanco no es `\"'" +msgstr "%s: el primer carácter que no es espacio en blanco no es «\"»" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "no hay un `%c' que cierre en %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" -msgstr "%s: falta un `:' separador" +msgstr "%s: falta un «:» separador" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "expansión de llaves: no se puede asignar memoria a %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "expansión de llaves: fallo al asignar memoria a %d elementos" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "expansión de llaves: fallo al asignar memoria a «%s»" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nombre de alias inválido" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "no se activó la edición de línea" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': nombre de combinación de teclas inválido" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: no se puede leer: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "%s: no se puede borrar la asignación" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': nombre de función desconocido" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s no está asignado a ninguna tecla.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " -msgstr "%s se puede invocar a través de " +msgstr "%s se puede invocar vía " + +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': no se puede borrar la asignación" -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" -msgstr "cuenta de ciclo" +msgstr "cuenta de bucle" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "sólo tiene significado en un ciclo `for', `while' o `until'" +msgstr "solo tiene significado en un bucle `for', `while', o `until'" #: builtins/caller.def:136 msgid "" @@ -145,239 +148,238 @@ msgstr "" " \n" " Sin EXPR, devuelve " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME no está definido" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "demasiados argumentos" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "directorio tope." +msgstr "directorio nulo" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" -msgstr "OLDPWD no está definido" +msgstr "OLDPWD no está establecido" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "línea %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "aviso: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " -msgstr "%s: uso: " +msgstr "%s: modo de empleo: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: la opción requiere un argumento" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: se requiere un argumento numérico" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" -msgstr "%s: no se encontró" +msgstr "%s: no encontrado" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: opción inválida" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: nombre de opción inválido" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': no es un identificador válido" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "número octal inválido" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "número hexadecimal inválido" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "número inválido" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" -msgstr "%s: especificación de señal inválida" +msgstr "%s: la especificación de señal no es válida" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': no es un pid o una especificación válida de trabajo" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: variable de sólo lectura" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fuera de rango" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argumento" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s fuera de rango" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: no existe ese trabajo" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: no hay control de trabajos" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "no hay control de trabajos" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: restringido" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "restringido" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" -msgstr "%s: no es una orden interna del shell" +msgstr "%s: no es una orden interna de shell" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "error de escritura: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "error al establecer los atributos de la terminal: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "error al obtener los atributos de la terminal: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error al obtener el directorio actual: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: especificación de trabajo ambigua" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" -msgstr "" +msgstr "ayuda no disponible en esta versión" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: nombre de acción inválido" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" -msgstr "%s: no hay completado de especificación" +msgstr "%s: no hay especificación para completado" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "aviso: es posible que la opción -F no funcione como se espera" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "aviso: es posible que la opción -C no funcione como se espera" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "no se está ejecutando la función de completado" # sólo se puede usar. sv # De acuerdo. cfuga -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "sólo se puede usar dentro de una función" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: referencia variable no puede ser una matriz" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "" +msgstr "%s: no se permiten las autoreferencias a variables nameref" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 -#, fuzzy, c-format +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 +#, c-format msgid "%s: circular name reference" -msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" +msgstr "%s: referencia de nombre circular" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" +msgstr "`%s': nombre variable inválido para referencia de nombre" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "no se puede usar `-f' para hacer funciones" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: función de sólo lectura" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "" +msgstr "%s: asignación obsoleta de matriz compuesta entrecomillada" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: no se pueden destruir variables de matriz de esta forma" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "%s: no se puede convertir una matriz asociativa a indizada" +msgstr "%s: no se puede convertir una matriz asociativa a indexada" #: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" @@ -397,84 +399,85 @@ msgstr "no se puede encontrar %s en el objeto compartido %s: %s" #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "" +"función de carga para %s devuelve fallo (%d): no se ha efectuado la carga" #: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" -msgstr "%s: no se cargó dinámicamente" +msgstr "%s: no cargado dinámicamente" #: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: no se puede borrar: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: es un directorio" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: no es un fichero regular" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: el fichero es demasiado grande" # file=fichero. archive=archivo. Si no, es imposible traducir tar. sv # De acuerdo. Corregido en todo el fichero. cfuga -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: no se puede ejecutar el fichero binario" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: no se puede ejecutar: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" -msgstr "logout\n" +msgstr "cerrar sesión\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" -msgstr "no es un shell de entrada: use `exit'" +msgstr "no es un shell de inicio de sesión: utilice `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Hay trabajos detenidos.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Hay trabajos en ejecución.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" -msgstr "no se encontró la orden" +msgstr "no se ha encontrado ninguna orden" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "especificación de historia" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: no se puede abrir el fichero temporal: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "actual" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" -msgstr "el trabajo %d inició sin control de trabajo" +msgstr "trabajo %d iniciado sin control de trabajo" #: builtins/getopt.c:110 #, c-format @@ -486,28 +489,27 @@ msgstr "%s: opción ilegal -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: la opción requiere un argumento -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "asociación desactivada" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tabla de asociación vacía\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "coinc\torden\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "Orden del shell que coinciden con la palabra `" -msgstr[1] "Órdenes del shell que coinciden con la palabra `" +msgstr[0] "Órdenes de shell que coinciden con la palabra clave`" +msgstr[1] "Órdenes de shell que coinciden con las palabras claves`" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -515,12 +517,12 @@ msgstr "" "no hay temas de ayuda que coincidan con `%s'. Pruebe `help help' o `man -k %" "s' o `info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: no se puede abrir: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -531,31 +533,31 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" -"Estas órdenes del shell están definidas internamente. Teclee `help' para\n" +"Estas órdenes de shell están definidas internamente. Teclee `help' para\n" "ver esta lista.\n" "Teclee `help nombre' para saber más sobre la función `nombre'.\n" -"Use `info bash' para saber más sobre el shell en general.\n" -"Use `man -k' o `info' para saber más sobre las órdenes que no están en\n" +"Utilice `info bash' para saber más sobre la shell en general.\n" +"Utilice `man -k' o `info' para saber más sobre las órdenes que no están en\n" "esta lista.\n" "\n" -"Un asterisco (*) junto a un nombre significa que el comando está " -"desactivado.\n" +"Un asterisco (*) junto a un nombre significa que la orden está desactivada.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "no se puede usar más de uno de -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "posición en la historia" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: límite de argumento inválido" +msgstr "%s: marca de tiempo inválida" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: falló la expansión de la historia" @@ -569,87 +571,87 @@ msgstr "%s: falló inlib" msgid "no other options allowed with `-x'" msgstr "no se permiten otras opciones con `-x'" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "%s: los argumentos deben ser procesos o IDs de trabajos" +msgstr "%s: los argumentos deben ser IDs de procesos o trabajos" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Error desconocido" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "se esperaba una expresión" #: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" -msgstr "%s: no es una matriz indizada" +msgstr "%s: no es una matriz indexada" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: especificación de descriptor de fichero inválida" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descriptor de fichero inválido: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: cuenta de líneas inválida" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: origen de matriz inválido" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantum de llamada inválido" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" -msgstr "nombre de variable de matriz vacío" +msgstr "nombre de variable matriz vacío" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "se requiere el soporte de variable de matriz" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "`%s': falta el carácter de formato" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': especificación de formato de tiempo inválida" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "`%c': carácter de formato inválido" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "problema con el análisis del formato: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "falta el dígito hexadecimal para \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "falta el dígito unicode para \\%c" @@ -659,23 +661,23 @@ msgid "no other directory" msgstr "no hay otro directorio" #: builtins/pushd.def:360 -#, fuzzy, c-format +#, c-format msgid "%s: invalid argument" -msgstr "%s: límite de argumento inválido" +msgstr "%s: argumento inválido" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "la pila de directorios está vacía" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" -msgstr "índice de la pila de directorios" +msgstr "índice de pilas de directorios" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -699,27 +701,26 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" "Muestra la lista de directorios actualmente grabados. Los directorios\n" -" se guardan en la lista con la orden `pushd'; pueden ir saliendo de\n" +" encuentran en la lista con la orden `pushd'; pueden ir saliendo de\n" " la lista con la orden `popd'.\n" " \n" " Opciones:\n" -" -c\tlimpia la pila de directorios, eliminando todos los elementos\n" +" -c\tlimpia la pila de directorios eliminando todos los elementos\n" " -l\tno muestra las versiones con prefijo de tilde de los directorios\n" -" \trelativos a su directorio inicial\n" +" \t\trelativos a su directorio inicial\n" " -p\tmuestra la pila de directorios con una entrada por línea\n" " -v\tmuestra la pila de directorios con una entrada por línea con\n" " \tsu posición en la pila como prefijo\n" " \n" " Argumentos:\n" -" +N\tMuestra la N-ésima entrada contando desde la izquierda de\n" -" \tla lista mostrada por dirs cuando se llama sin opciones,\n" -" \tempezando desde cero.\n" +" +N\tMuestra la N-ésima entrada contando desde la izquierda de la " +"lista\n" +" \tmostrada por dirs cuando se llama sin opciones, empezando en cero.\n" " \n" -" -N\tMuestra la N-ésima entrada contando desde la derecha de\n" -"\tla lista mostrada por dirs cuando se llama sin opciones,\n" -"\tempezando desde cero." +" -N\tMuestra la N-ésima entrada contando desde la derecha de la lista\n" +" \tmostrada por dirs cuando se llama sin opciones, empezando en cero." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -743,25 +744,29 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"Agrega un directorio al tope de la pila de directorios, o rota\n" -" la pila, haciendo que el nuevo tope de la pila sea el\n" -" directorio de trabajo actual. Sin argumentos, intercambia\n" -" los dos directorios del tope.\n" +"Agrega un directorio a la parte superior de la pila de directorios\n" +" o rota la pila, haciendo que la nueva parte superior de la pila\n" +" sea el directorio de trabajo actual. Sin argumentos, intercambia\n" +" los dos directorios de la parte superior.\n" +" \n" +" Opciones:\n" +" -n\tSuprime el cambio normal de directorio al añadir directorios\n" +" \ta la pila, de forma que solo se manipula la pila.\n" " \n" " Argumentos:\n" -" +N\tRota la pila para que el N-ésimo directorio (contando\n" -" \tde la izquierda de la lista mostrada por `dirs',\n" -" \tcomenzando desde cero) esté en el tope.\n" -" -N\tRota la pila para que el N-ésimo directorio (contando\n" -" \tde la derecha de la lista mostrada por `dirs',\n" -" \tcomenzando desde cero) esté en el tope.\n" -" \n" -" dir\tagrega DIR a la pila de directorios en el tope,\n" +" +N\tRota la pila para que el N-ésimo directorio (contando\n" +" \tdesde la izquierda de la lista mostrada por `dirs',\n" +" \tcomenzando desde cero) esté en la parte superior.\n" +" -N\tRota la pila para que el N-ésimo directorio (contando\n" +" \tdesde la derecha de la lista mostrada por `dirs',\n" +" \tcomenzando desde cero) esté en la parte superior.\n" +" \n" +" dir\tAñade DIR a la pila de directorios en la parte superior,\n" " \thaciéndolo el nuevo directorio de trabajo actual.\n" " \n" " La orden interna `dirs' muestra la pila de directorios." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -781,88 +786,89 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"Borra entradas de la pila de directorios. Sin argumentos, borra\n" -" directorio del tope de la pila, y cambia al nuevo directorio tope.\n" +"Quita entradas de la pila de directorios. Sin argumentos, borra\n" +" el directorio superior de la pila, y cambia al nuevo directorio " +"superior.\n" " \n" " Opciones:\n" -" -n\tsuprime el cambio normal de directorio cuando se borran\n" -" \tdirectorios de la pila, así sólo se manipula la pila.\n" +" -n\tSuprime el cambio normal de directorio cuando se borran\n" +" \tdirectorios de la pila, de modo que solo se manipula la pila.\n" " \n" " Argumentos:\n" -" +N\tBorra la N-ésima entrada contando de la izquierda de\n" +" +N\tBorra la N-ésima entrada contando desde la izquierda de\n" " \tla lista mostrada por `dirs', comenzando desde cero.\n" " \tPor ejemplo: `popd +0' borra el primer directorio, `popd +1'\n" " \tel segundo.\n" " \n" -" -N\tBorra la N-ésima entrada contando de la derecha de\n" -" \tla lista mostrada por `dirs', comenzando desde cero.\n" -" \tPor ejemplo: `popd -0' borra el último directorio, `popd -1'\n" -" \tel penúltimo.\n" +" -N\tBorra la N-ésima entrada contando desde la derecha de\n" +" \tla lista mostrada por `dirs', comenzando desde cero. Por\n" +" \tejemplo: `popd -0' borra el último directorio, `popd -1' el\n" +" \tpenúltimo.\n" " \n" " La orden interna `dirs' muestra la pila de directorios." #: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" -msgstr "%s: especificación de tiempo de expiración inválida" +msgstr "%s: especificación del tiempo de expiración inválida" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "error de lectura: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" -"sólo se puede usar `return' en una función o un guión leído con `source'" +"sólo se puede usar `return' desde una función o un script leído con `source'" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "no se puede borrar al mismo tiempo una función y una variable" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: no se puede borrar" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: no se puede borrar: %s es de solo lectura" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: no es una variable de matriz" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: no es una función" -#: builtins/setattr.def:196 -#, fuzzy, c-format +#: builtins/setattr.def:194 +#, c-format msgid "%s: cannot export" -msgstr "%s: no se puede borrar" +msgstr "%s: no se puede exportar" #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" -msgstr "cuenta de shift" +msgstr "contador de desplazamiento" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "no se pueden activar y desactivar opciones del shell simultáneamente" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" -msgstr "%s: nombre de opción del shell inválido" +msgstr "%s: nombre de opción de shell inválido" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" -msgstr "se requiere un argumento de nombre de fichero" +msgstr "argumento de nombre de fichero requerido" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: no se encontró el fichero" @@ -875,61 +881,61 @@ msgstr "no se puede suspender" msgid "cannot suspend a login shell" msgstr "no se puede suspender un shell de entrada" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s es un alias de `%s'\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s es una palabra clave del shell\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s: es una función\n" -#: builtins/type.def:300 -#, fuzzy, c-format +#: builtins/type.def:299 +#, c-format msgid "%s is a special shell builtin\n" -msgstr "%s es una orden interna del shell\n" +msgstr "%s es una función interna de shell especial\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s es una orden interna del shell\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s is %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s está asociado (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: límite de argumento inválido" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" -msgstr "`%c': orden errónea" +msgstr "`%c': orden incorrecta" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: no se puede obtener el límite: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "límite" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: no se puede modificar el límite: %s" @@ -948,158 +954,163 @@ msgstr "`%c': operador de modo simbólico inválido" msgid "`%c': invalid symbolic mode character" msgstr "`%c': carácter de modo simbólico inválido" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " línea " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "última orden: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Abortando..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "INFORME: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" -msgstr "error de orden desconocido" +msgstr "error de orden desconocida" -#: error.c:464 +#: error.c:463 msgid "bad command type" -msgstr "tipo de orden erróneo" +msgstr "tipo de orden incorrecto" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "conector erróneo" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "salto erróneo" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: variable sin asignar" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aha expirado mientras esperaba alguna entrada: auto-logout\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" -msgstr "no se puede redirigir la salida estándar desde /dev/null: %s" +msgstr "no se puede redirigir la entrada estándar desde /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': carácter de formato inválido" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] aún existe" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "error de tubería" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "" +msgstr "eval: nivel máximo de anidamiento de evaluaciones excedido (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "" +msgstr "%s: nivel máximo de anidamiento de lecturas con `source' excedido (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: nivel máximo de anidamiento de funciones excedido (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restringido: no se puede especificar `/' en nombres de órdenes" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" -msgstr "%s: no se encontró la orden" +msgstr "%s: orden no encontrada" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: intérprete erróneo" # file=fichero. archive=archivo. Si no, es imposible traducir tar. sv # De acuerdo. Corregido en todo el fichero. cfuga -#: execute_cmd.c:5545 -#, fuzzy, c-format +#: execute_cmd.c:5757 +#, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s: no se puede ejecutar el fichero binario" +msgstr "%s: no se puede ejecutar fichero binario: %s" -#: execute_cmd.c:5623 -#, fuzzy, c-format +#: execute_cmd.c:5843 +#, c-format msgid "`%s': is a special builtin" -msgstr "%s es una orden interna del shell\n" +msgstr "`%s': es una orden interna especial" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "no se puede duplicar el df %d al df %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "se ha excedido el nivel de recursión de la expresión" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" -msgstr "desbordamiento de la base de la pila de recursión" +msgstr "desbordamiento de la pila de recursión" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "error sintáctico en la expresión" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "se intentó asignar a algo que no es una variable" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "error sintáctico en la expresión" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "división por 0" # token en bison fue traducido como terminal. ¿Lo traducimos igual aquí # o lo dejamos como 'unidad' o 'elemento'? cfuga -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" -msgstr "bicho: elemento de asignación de expresión erróneo" +msgstr "defecto: elemento de asignación de expresión erróneo" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "se esperaba `:' para la expresión condicional" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "exponente menor que 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "se esperaba un identificador después del pre-incremento o pre-decremento" @@ -1107,46 +1118,46 @@ msgstr "" # falta , singular em+ # mmmh, puede faltar más de un paréntesis cfuga # tiene razón Enrique, es singular. cfuga -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "falta un `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "error sintáctico: se esperaba un operando" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "error sintáctico: operador aritmético inválido" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (el elemento de error es \"%s\")" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "base aritmética inválida" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "valor demasiado grande para la base" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: error de expresión\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: no se puede acceder a los directorios padre" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "no se puede reestablecer el modo nodelay para el df %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" @@ -1156,164 +1167,169 @@ msgstr "" # buffer: espacio intermedio , alojamiento intermedio ( me gusta menos ) # em+ # almacenamiento intermedio. cfuga -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" "save_bash_input: el almacenamiento intermedio ya existe para el nuevo df %d" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: tubería de pgrp" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "el pid `forked' %d aparece en el trabajo en ejecución %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "borrando el trabajo detenido %d con grupo de proceso %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: el proceso %5ld (%s) en the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) se marca como vivo aún" # Cambiaría 'hay' por 'existe' em+ -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no existe tal pid" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Señal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Hecho" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Detenido" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Detenido(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Ejecutando" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Hecho(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Salida %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Estado desconocido" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(`core' generado) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" -msgstr " (dir ahora: %s)" +msgstr " (da: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid hijo (%ld a %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld no es un proceso hijo de este shell" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No hay un registro del proceso %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: el trabajo %d está detenido" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: el trabajo ha terminado" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: el trabajo %d ya está en segundo plano" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: se activa WNOHANG para evitar el bloque indefinido" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: línea %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (`core' generado)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(dir ahora: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs_control: falló getpgrp" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_jobs_control: disciplina de línea" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_jobs_control: disciplina de línea" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_jobs_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "no se puede establecer el grupo de proceso de terminal (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "no hay control de trabajos en este shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: falló la aserción: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1322,41 +1338,42 @@ msgstr "" "\r\n" "malloc: %s:%d: aserción arruinada\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "desconocido" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: bloque en la lista libre sobreescrito" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: se llamó con un argumento de bloque previamente liberado" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: se llamó con un argumento de bloque sin asignar" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" "free: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" -msgstr "free: los tamaños de los pedazos de inicio y fin son diferentes" +msgstr "" +"free: los tamaños de los fragmentos del inicio y del final son diferentes" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: se llamó con un argumento de bloque sin asignar" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "realloc: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: los tamaños de los pedazos de inicio y fin son diferentes" @@ -1398,22 +1415,22 @@ msgstr "%s: especificación de ruta de red errónea" msgid "network operations not supported" msgstr "no hay soporte para operaciones de red" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: no se puede cambiar el local (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: no se puede cambiar el local (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: no se puede cambiar el local (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: no se puede cambiar el local (%s): %s" @@ -1431,113 +1448,115 @@ msgstr "Tiene correo nuevo en $_" msgid "The mail in %s has been read\n" msgstr "El correo en %s fue leído\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "error sintáctico: se requiere una expresión aritmética" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "error sintáctico: `;' inesperado" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "error sintáctico: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo de instrucción %d erróneo" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "el documento-aquí en la línea %d está delimitado por fin-de-fichero (se " "esperaba `%s')" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "make_redirection: la instrucción de redirección `%d' está fuera de rango" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) excede TAMAÑO_MAX (%lu): línea " +"truncada" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" -msgstr "" +msgstr "número máximo de documentos en «here--document» excedido" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF inesperado mientras se buscaba un `%c' coincidente" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "EOF inesperado mientras se buscaba `]]'" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "error sintáctico en la expresión condicional: elemento inesperado `%s'" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "error sintáctico en la expresión condicional" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "elemento inesperado `%s', se esperaba `)'" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "se esperaba `)'" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento inesperado `%s' para el operador unario condicional" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para el operador unario condicional" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "elemento inesperado `%s', se esperaba un operador binario condicional" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "se esperaba un operador binario condicional" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento inesperado `%s' para el operador binario condicional" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para el operador binario condicional" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "elemento inesperado `%c' en la orden condicional" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "elemento inesperado `%s' en la orden condicional" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "elemento inesperado %d en la orden condicional" @@ -1548,12 +1567,12 @@ msgstr "elemento inesperado %d en la orden condicional" # provocado por el símbolo. Simplemente estar cerca del mismo. cfuga # Por consistencia con el siguiente, yo borraría la coma. sv # Cierto. Coma borrada. cfuga -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "error sintáctico cerca del elemento inesperado `%s'" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "error sintáctico cerca de `%s'" @@ -1562,32 +1581,32 @@ msgstr "error sintáctico cerca de `%s'" # no se esperaba el final de la línea em+ # Ojo, que end of file es fin de fichero, no de línea. sv # Se hicieron ambos cambios. cfuga -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "error sintáctico: no se esperaba el final del fichero" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "error sintáctico" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" -msgstr "Use \"%s\" para dejar el shell.\n" +msgstr "Utilice \"%s\" para dejar el shell.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF inesperado mientras se buscaba un `)' coincidente" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" -msgstr "completion: no se encuentra la función `%s'" +msgstr "completion: función `%s' no encontrada" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: posible bucle de reintento" #: pcomplib.c:182 #, c-format @@ -1606,95 +1625,99 @@ msgstr "xtrace_set: %d: descriptor de fichero inválido" #: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" -msgstr "xtrace_set: puntero a fichero NULL" +msgstr "xtrace_set: puntero NULL a fichero" #: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != numfich xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': carácter de formato inválido" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "descriptor de fichero fuera de rango" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redireccionamiento ambiguo" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: no se puede sobreescribir un fichero existente" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restringido: no se puede redirigir la salida" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "no se puede crear un fichero temporal para el documento-aquí: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: no se puede asignar el fd a la variable" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "no se admite /dev/(tcp|udp)/anfitrion/puerto sin red" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "error de redirección: no se puede duplicar el df" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "¡no se puede encontrar /tmp, crear por favor!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp debe ser un nombre de directorio válido" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opción inválida" -#: shell.c:1282 -#, fuzzy, c-format +#: shell.c:1299 +#, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "no se puede reestablecer el modo nodelay para el df %d" +msgstr "no se puede establecer el uid %d: uid efectivo %d" -#: shell.c:1289 -#, fuzzy, c-format +#: shell.c:1306 +#, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "no se puede reestablecer el modo nodelay para el df %d" +msgstr "no se puede establecer gid a %d: gid efectivo %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "no puede ejecutar el depurador; modo depurado desactivado" -#: shell.c:1566 -#, fuzzy, c-format +#: shell.c:1608 +#, c-format msgid "%s: Is a directory" msgstr "%s: es un directorio" # Yo pondría "no tengo ningún nombre". sv # Revisé el código fuente de bash. Es un mensaje de error cuando no se # encuentra el nombre del usuario que ejecuta el shell. cfuga -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "¡No tengo nombre de usuario!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versión %s-(%s)\n" @@ -1704,63 +1727,62 @@ msgstr "GNU bash, versión %s-(%s)\n" # traducido en otras ocasiones. Sehll script lo henmos traducido # como guión del shell , eso es seguro ... así que puede estar # bien así , ya lo verán otros em+ -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" "Modo de empleo:\t%s [opción GNU larga] [opción] ...\n" -"\t%s [opción GNU larga] [opción] guión-del-shell\n" +"\t%s [opción GNU larga] [opción] fichero de shell ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Opciones GNU largas:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Opciones del shell:\n" -#: shell.c:1938 -#, fuzzy +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "\t-irsD o -c orden o -O opcion_shopt\t\t(sólo invocación)\n" +msgstr "\t-irsD o -c orden o -O opción_shopt\t\t(sólo invocación)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s o -o opción\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Teclee `%s -c \"help set\"' para más información sobre las opciones del " "shell.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Teclee `%s -c help' para más información sobre las órdenes internas del " "shell.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" -msgstr "Use la orden `bashbug' para reportar bichos.\n" +msgstr "Utilice la orden `bashbug' para reportar defectos.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "página inicial bash: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" -msgstr "" +msgstr "Ayuda general utilizando software GNU: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operación inválida" @@ -1807,7 +1829,7 @@ msgstr "Matado" #: siglist.c:91 msgid "Bus error" -msgstr "Error en el bus" +msgstr "Error del bus" #: siglist.c:95 msgid "Segmentation fault" @@ -1886,7 +1908,7 @@ msgstr "Ventana cambiada" #: siglist.c:171 msgid "Record lock" -msgstr "Bloqueo de grabación" +msgstr "Bloqueo de registro" #: siglist.c:175 msgid "User signal 1" @@ -1930,7 +1952,7 @@ msgstr "el modo monitor HTF ha sido retirado" #: siglist.c:211 msgid "HFT sound sequence has completed" -msgstr "la secuencia de sonido HFT ha sido completado" +msgstr "la secuencia de sonido HFT ha sido completada" #: siglist.c:215 msgid "Information request" @@ -1945,92 +1967,96 @@ msgstr "Señal Desconocida #" msgid "Unknown Signal #%d" msgstr "Señal Desconocida #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "sustitución errónea: no hay un `%s' que cierre en %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: no se puede asignar una lista a un miembro de la matriz" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "no se puede crear la tubería para la sustitución del proceso" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "no se puede crear un proceso hijo para la sustitución del proceso" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "no se puede abrir la tubería llamada %s para lectura" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "no se puede abrir la tubería llamada %s para escritura" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "no se puede duplicar la tubería llamada %s como df %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "sustitución errónea: no hay `}' final en %s" +msgstr "sustitución de orden: se ignora byte nulo en la entrada" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" -msgstr "no se pueden crear la tubería para la sustitución de la orden" +msgstr "no se puede crear la tubería para la sustitución de la orden" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "no se puede crear un proceso hijo para la sustitución de la orden" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: no se puede duplicar la tubería como df 1" -#: subst.c:6580 subst.c:8939 -#, fuzzy, c-format +#: subst.c:6710 subst.c:9623 +#, c-format msgid "%s: invalid variable name for name reference" -msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" +msgstr "%s: nombre de variable inválido para referencia de nombre" -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format -msgid "%s: bad substitution" -msgstr "%s: sustitución errónea" - -#: subst.c:6800 -#, fuzzy, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: cuenta de líneas inválida" +msgstr "%s: expansión indirecta inválida" -#: subst.c:6807 -#, fuzzy, c-format +#: subst.c:6840 subst.c:6987 +#, c-format msgid "%s: invalid variable name" -msgstr "`%s': nombre de alias inválido" +msgstr "%s: nombre de variable inválido" + +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parámetro nulo o no establecido" -#: subst.c:6854 +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parámetro nulo o no establecido" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expresión de subcadena < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: sustitución errónea" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: no se puede asignar de esta forma" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2038,12 +2064,12 @@ msgstr "" "versiones futuras del intérprete obligarán la evaluación como una " "sustitución aritmética" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sustitución errónea: no hay una \"`\" que cierre en %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "no hay coincidencia: %s" @@ -2059,19 +2085,19 @@ msgstr "%s: se esperaba una expresión entera" #: test.c:265 msgid "`)' expected" -msgstr "se esperaba `)'" +msgstr "`)' esperado" #: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "se esperaba `)', se encontró %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: se esperaba un operador unario" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: se esperaba un operador binario" @@ -2083,20 +2109,25 @@ msgstr "%s: se esperaba un operador binario" # Abreviando "falta [al menos] un `]'" saldría: "falta un `]'". # ¿No es mejor "falta algún `]'"? cfuga # Tiene razón Enrique: singular. cfuga -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "falta un `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "número de señal inválido" -#: trap.c:387 +#: trap.c:320 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: nivel máximo de anidamiento de evaluaciones excedido (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: valor erróneo en trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2104,87 +2135,87 @@ msgstr "" "run_pending_traps: el manejador de señal es SIG_DFL, reenviando %d (%s) a mí " "mismo" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: señal errónea %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "error al importar la definición de la función para `%s'" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "el nivel de shell (%d) es demasiado alto, se reestablece a 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no hay contexto de función en el ámbito actual" -#: variables.c:2432 -#, fuzzy, c-format +#: variables.c:2674 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: no se puede asignar el fd a la variable" +msgstr "%s: variable quizá no es valor asignado" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" +msgstr "%s: asignando entero a nombre referencia" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: no hay contexto de función en el ámbito actual" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s tiene exportstr nulo" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carácter inválido %d en exportstr para %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "no hay `=' en exportstr para %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: la cabeza de shell_variables no es un contexto de función" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no es un contexto global_variables" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -"pop_scope: la cabeza de shell_variables no es un ámbito de ambiente temporal" +"pop_scope: la cabeza de shell_variables no es un ámbito de entorno temporal" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: no se puede abrir como FICHERO" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" -#: variables.c:5669 -#, fuzzy, c-format +#: variables.c:6322 +#, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s: %s fuera de rango" +msgstr "%s: %s: valor de compatibilidad fuera del rango" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2011 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2200,32 +2231,29 @@ msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, versión %s (%s)\n" #: version.c:91 version2.c:91 -#, fuzzy msgid "This is free software; you are free to change and redistribute it." -msgstr "" -"Esto es software libre; usted es libre de cambiarlo y redistribuirlo.\n" +msgstr "Esto es software libre, es libre para modificar y redistribuirlo." #: version.c:92 version2.c:92 -#, fuzzy msgid "There is NO WARRANTY, to the extent permitted by law." -msgstr "NO hay GARANTÍA, a la extensión permitida por la ley.\n" +msgstr "No hay NINGUNA GARANTÍA, a la extensión permitida por la ley." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: no se pueden asignar %lu bytes (%lu bytes asignados)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: no se pueden asignar %lu bytes" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: no se pueden asignar %lu bytes (%lu bytes asignados)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: no se pueden asignar %lu bytes" @@ -2239,14 +2267,13 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] nombre [nombre ...]" #: builtins.c:53 -#, fuzzy msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" -"bind [-lpvsPVS] [-m comb_teclas] [-f fichero] [-q nombre] [-u nombre] [-r " -"secteclas] [-x secteclas:orden-shell] [secteclas:función-readline u orden-" -"readline]" +"bind [-lpsvPSVX] [-m comb_teclas] [-f fichero] [-q nombre] [-u nombre] [-r " +"secteclas] [-x secteclas:orden-shell] [secteclas:función-leerlinea o orden-" +"leerlinea]" #: builtins.c:56 msgid "break [n]" @@ -2265,9 +2292,8 @@ msgid "caller [expr]" msgstr "caller [expresión]" #: builtins.c:66 -#, fuzzy msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "cd [-L|[-P [-e]]] [directorio]" +msgstr "cd [-L|[-P [-e]]] [dir]" #: builtins.c:68 msgid "pwd [-LP]" @@ -2278,14 +2304,12 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] orden [arg ...]" #: builtins.c:78 -#, fuzzy msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilrtux] [-p] nombre[=valor] ..." +msgstr "declare [-aAfFgilrtux] [-p] [nombre[=valor] ...]" #: builtins.c:80 -#, fuzzy msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] nombre[=valor] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] nombre[=valor] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2325,7 +2349,7 @@ msgstr "logout [n]" #: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "fc [-e nombre_e] [-lnr] [primero] [último] ó fc -s [pat=rep] [orden]" +msgstr "fc [-e nombre_e] [-lnr] [primero] [último] o fc -s [pat=rep] [orden]" #: builtins.c:109 msgid "fg [job_spec]" @@ -2348,7 +2372,7 @@ msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" -"history [-c] [-d despl] [n] ó history -anrw [fichero] ó history -ps arg " +"history [-c] [-d despl] [n] o history -anrw [fichero] o history -ps arg " "[arg...]" # jobspec no es sólo el pid del proceso, puede ser tambien @@ -2357,20 +2381,19 @@ msgstr "" # mucho. ¿Sugerencias? cfuga #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "jobs [-lnprs] [idtrabajo ...] ó jobs -x orden [args]" +msgstr "jobs [-lnprs] [idtrabajo ...] o jobs -x orden [args]" # lo mismo em+ #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [idtrabajo ...]" +msgstr "disown [-h] [-ar] [idtrabajo ... | pid ...]" #: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" -"kill [-s id_señal | -n num_señal | -id_señal] pid | idtrabajo ... ó kill -l " +"kill [-s id_señal | -n num_señal | -id_señal] pid | idtrabajo ... o kill -l " "[id_señal]" #: builtins.c:136 @@ -2394,9 +2417,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nombre-opción] [--] [arg ...]" #: builtins.c:144 -#, fuzzy msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "unset [-f] [-v] [nombre ...]" +msgstr "unset [-f] [-v] [-n] [nombre ...]" #: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" @@ -2439,9 +2461,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nombre [nombre ...]" #: builtins.c:171 -#, fuzzy msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHacdefilmnpqrstuvx] [límite]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" @@ -2449,13 +2470,12 @@ msgstr "umask [-p] [-S] [modo]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" -msgstr "wait [id]" +msgid "wait [-fn] [id ...]" +msgstr "wait [-n] [id ...]" #: builtins.c:181 -#, fuzzy msgid "wait [pid ...]" -msgstr "wait [id]" +msgstr "wait [pid ...]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2499,7 +2519,7 @@ msgstr "coproc [NOMBRE] orden [redirecciones]" #: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" -msgstr "function nombre { ÓRDENES ; } ó nombre () { ÓRDENES ; }" +msgstr "function nombre { ÓRDENES ; } o nombre () { ÓRDENES ; }" #: builtins.c:204 msgid "{ COMMANDS ; }" @@ -2542,8 +2562,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] formato [argumentos]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2552,7 +2573,6 @@ msgstr "" "sufijo] [nombre ...]" #: builtins.c:235 -#, fuzzy msgid "" "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" @@ -2562,22 +2582,23 @@ msgstr "" "sufijo] [palabra]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o opción] [-DE] [nombre ...]" #: builtins.c:242 -#, fuzzy msgid "" "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" msgstr "" -"mapfile [-n cuenta] [-O origen] [-s cuenta] [-t] [-u df] [-C llamada] [-c " -"quantum] [matriz]" +"mapfile [-d delim] [-n cuenta] [-O origen] [-s cuenta] [-t] [-u df] [-C " +"llamada] [-c quantum] [matriz]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n cuenta] [-O origen] [-s cuenta] [-t] [-u df] [-C llamada] [-c " "quantum] [matriz]" @@ -2587,7 +2608,6 @@ msgstr "" # no alias -> ningún alias. sv # De acuerdo. cfuga #: builtins.c:256 -#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2606,25 +2626,24 @@ msgid "" "been\n" " defined." msgstr "" -"Define o muestra aliases.\n" +"Define o muestra alias.\n" " \n" -" `alias' sin argumentos muestra la lista de aliases en la forma\n" +" Sin argumentos `alias' muestra la lista de alias en el formato\n" " reutilizable `alias NOMBRE=VALOR' en la salida estándar.\n" " \n" -" De otra manera, se define un alias por cada NOMBRE cuyo VALOR se\n" +" En caso contrario, se define un alias por cada NOMBRE cuyo VALOR se\n" " proporcione. Un espacio final en VALOR causa que se revise\n" " la siguiente palabra para sustitución de alias cuando se expande\n" " el alias.\n" " \n" " Opciones:\n" -" -p\tMuestra todos los aliases definidos en un formato reusable\n" +" -p\tmuestra todos los alias definidos en un formato reutilizable\n" " \n" -" Estado de salida:\n" -" alias devuelve verdadero a menos que se de un NOMBRE para el cual\n" +" Estado de Salida:\n" +" alias devuelve verdadero a menos que se dé un NOMBRE para el cual\n" " no se haya definido ningún alias." #: builtins.c:278 -#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" @@ -2633,16 +2652,16 @@ msgid "" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -"Borra cada NOMBRE de la lista de alias definidos.\n" +"Quita cada NOMBRE de la lista de alias definidos.\n" " \n" " Opciones:\n" -" -a\telimina todas las definiciones de alias.\n" +" -a\tquita todas las definiciones de alias.\n" +" \n" " Devuelve verdadero a menos que un NOMBRE no sea un alias existente." # lee 'la'... em+ # Corregido. Además, es plural: lee las asignaciones... cfuga #: builtins.c:291 -#, fuzzy msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2683,41 +2702,36 @@ msgid "" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" -"Establece secuencias de teclas Readline y variables.\n" -"\n" +"Establece secuencias de teclas y variables de Readline.\n" +" \n" " Asigna una secuencia de teclas a una función Readline o a una macro, o\n" " establece una variable Readline. La sintaxis de los argumentos que\n" " no son opciones es equivalente a la que se encuentra en ~/.inputrc,\n" " pero se debe pasar como un solo argumento:\n" -" p.e., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" p.ej., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" " \n" " Opciones:\n" -" \n" -" -m comb_teclas Usa COMB_TECLAS como la combinación de teclas por " -"la\n" -" duración de esta orden. Los nombres de " -"combinaciones\n" +" -m comb_teclas Usa COMB_TECLAS como la combinación de teclas " +"durante el\n" +" que dure esta orden. Los nombres de combinaciones\n" " de teclas aceptables son emacs, emacs-standard,\n" " emacs-meta, emacs-ctlx, vi, vi-move, vi-command y\n" " vi-insert.\n" -" -l Enlista los nombres de las funciones.\n" -" -P Enlista los nombres de las funciones y " -"asignaciones.\n" -" -p Enlista las funciones y asignaciones en una forma " +" -l Lista los nombres de las funciones.\n" +" -P Lista los nombres de las funciones y asignaciones.\n" +" -p Lista las funciones y asignaciones de tal forma " "que\n" -" se puede reusar como entrada.\n" -" -S Enlista las secuencias de teclas que invocan " -"macros\n" +" se pueda ruutilizar como entrada.\n" +" -S Lista las secuencias de teclas que invocan macros\n" " y sus valores.\n" -" -s Enlista las secuencias de teclas que invocan " -"macros\n" -" y sus valores en una forma que se pueden reusar " +" -s Lista las secuencias de teclas que invocan macros\n" +" y sus valores en una forma que se pueden reutilizar " "como\n" " entrada.\n" -" -V Enlista los nombres de variables y valores.\n" -" -v Enlista los nombres de variables y valores en una\n" -" forma que se pueden reusar como entrada.\n" -" -q nombre-funcion Pregunta qué teclas invocan la función nombrada.\n" +" -V Lista los nombres de variables y valores.\n" +" -v Lista los nombres de variables y valores en una\n" +" forma que se pueden reutilizar como entrada.\n" +" -q nombre-función Pregunta qué teclas invocan la función nombrada.\n" " -u nombre-función Borra todas las teclas que están ligadas a\n" " la función nombrada.\n" " -r secteclas Borra la asignación para la SECTECLAS.\n" @@ -2725,7 +2739,7 @@ msgstr "" " -x secteclas:orden-shell\tCausa que se ejecute la ORDEN-SHELL cuando\n" " \t\t\t\tse introduce la SECTECLAS.\n" " \n" -" Estado de salida:\n" +" Estado de Salida:\n" " bind devuelve 0 a menos que se presente una opción desconocida o suceda\n" " un error." @@ -2739,12 +2753,12 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -"Termina ciclos for, while o until.\n" +"Termina bucles for, while o until.\n" " \n" -" Termina un ciclo FOR, WHILE o UNTIL. Si se especifica N, termina\n" -" N ciclos anidados.\n" +" Termina un bucle FOR, WHILE o UNTIL. Si se especifica N, termina\n" +" N bucles anidados.\n" " \n" -" Estado de salida:\n" +" Estado de Salida:\n" " El estado de salida es 0 a menos que N no sea mayor o igual a 1." #: builtins.c:342 @@ -2757,16 +2771,17 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -"Continúa iteraciones for, while o until\n" +"Reanuda bucles for, while o until\n" " \n" -" Continúa la siguiente iteración del ciclo FOR, WHILE o UNTIL\n" -" circundante. Si se especifica N, retoma en el N-ésimo ciclo " +" Reanuda la siguiente iteración del bucle FOR, WHILE o UNTIL\n" +" circundante. Si se especifica N, reanuda en el N-ésimo bucle " "circundante.\n" " \n" " Estado de Salida:\n" " El estado de salida es 0 a menos que N no sea mayor o igual a 1." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2777,14 +2792,15 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Ejecuta órdenes internas del shell\n" " \n" -" Ejecuta la ORDEN-INTERNA-SHELL con los argumentos ARGs sin realizar\n" -" la búsqueda interna de órdenes. Esto es útil cuando desea " +" Ejecuta la ORDEN-INTERNA-SHELL con los argumentos ARGs sin realizar la\n" +" búsqueda interna de órdenes. Esto es útil cuando se desea " "reimplementar\n" -" una orden interna del shell como una función de shell, pero necesita\n" +" una orden interna de la shell como una función de shell, pero se " +"necesita\n" " ejecutar la orden interna dentro de la función.\n" " \n" " Estado de Salida:\n" @@ -2810,10 +2826,10 @@ msgstr "" " \n" " Sin EXPR, devuelve \"$linea $nombrefichero\". Con EXPR, devuelve\n" " \"$linea $subrutina $nombrefichero\"; esta información adicional\n" -" se puede usar para proveer un volcado de pila.\n" +" se puede usar para proporcionar un volcado de pila.\n" " \n" -" El valor de EXPR indica cuántos marcos de llamada se debe retroceder\n" -" antes del actual; el marco inicial es el marco 0.\n" +" El valor de EXPR indica cuántos marcos de llamada hay que retroceder\n" +" antes del actual; el marco superior es el marco 0.\n" " \n" " Estado de Salida:\n" " Devuelve 0 a menos que el shell no esté ejecutando una función de shell\n" @@ -2823,7 +2839,6 @@ msgstr "" # por barra invertida em++ # Corregido en toda la traducción. cfuga #: builtins.c:387 -#, fuzzy msgid "" "Change the shell working directory.\n" " \n" @@ -2867,12 +2882,12 @@ msgid "" "when\n" " -P is used; non-zero otherwise." msgstr "" -"Cambia el directorio de trabajo del shell.\n" +"Modifica el directorio de trabajo del shell.\n" " \n" -" Cambia el directorio actual a DIR. DIR por defecto es el valor de la\n" +" Modifica el directorio actual a DIR. DIR por defecto es el valor de la\n" " variable de shell HOME.\n" " \n" -" La variable CDPATH define la ruta de búsqueda por el directorio que\n" +" La variable CDPATH define la ruta de búsqueda para el directorio que\n" " contiene DIR. Los nombres alternativos de directorio en CDPATH se\n" " separan con dos puntos (:). Un nombre de directorio nulo es igual que\n" " el directorio actual. Si DIR comienza con una barra inclinada (/),\n" @@ -2880,24 +2895,30 @@ msgstr "" " \n" " Si no se encuentra el directorio, y la opción del shell `cdable_vars'\n" " está activa, entonces se trata la palabra como un nombre de variable.\n" -" Si esa variable tiene un valor, se utiliza su valor como DIR.\n" +" Si esa variable tiene un valor, se utiliza su valor para DIR.\n" " \n" " Opciones:\n" -" -L\tfuerza a seguir los enlaces simbólicos\n" -" -P\tusa la estructura física de directorios sin seguir los enlaces\n" -" \tsimbólicos\n" -" -e\tsi se da la opción -P, y el directorio actual de trabajo no se\n" -" \tpuede determinar con éxito, termina con un estado diferente de cero.\n" +" -L\tfuerza a seguir los enlaces simbólicos: resuelve los enlaces\n" +" \t\tsimbólicos en DIR después de procesar las instancias de `..'\n" +" -P\tusa la estructura física de directorios sin seguir los enlaces\n" +" \t\tsimbólicos: resuelve los enlaces simbólicos en DIR antes de " +"procesar\n" +" \t\tlas instancias de `..'\n" +" -e\tsi se da la opción -P y el directorio actual de trabajo no se\n" +" \t\tpuede determinar con éxito, termina con un estado diferente de " +"cero.\n" " \n" " La acción por defecto es seguir los enlaces simbólicos, como si se\n" " especificara `-L'.\n" +" `..' se procesa quitando la componente del nombre de la ruta " +"inmediatamente\n" +" anterior hasta una barra inclinada o el comienzo de DIR.\n" " \n" -" Estado de salida:\n" -" Devuelve 0 si se cambia el directorio, y si $PWD está definido con\n" -" éxito cuando se usa -P; de otra forma es diferente a cero." +" Estado de Salida:\n" +" Devuelve 0 si se cambia el directorio, y si $PWD está definido como\n" +" correcto cuando se emplee -P; de otra forma es diferente a cero." #: builtins.c:425 -#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" @@ -2939,7 +2960,7 @@ msgstr "" " Sin efecto; la orden no hace nada.\n" " \n" " Estado de Salida:\n" -" Siempre con éxito." +" Siempre correcto." #: builtins.c:453 msgid "" @@ -2948,10 +2969,10 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" -"Devuelve un resultado con éxito.\n" +"Devuelve un resultado correcto.\n" " \n" -" Estado de salida:\n" -" Siempre con éxito." +" Estado de Salida:\n" +" Siempre correcto." #: builtins.c:462 msgid "" @@ -2960,13 +2981,12 @@ msgid "" " Exit Status:\n" " Always fails." msgstr "" -"Devuelve un resultado sin éxito.\n" +"Devuelve un resultado incorrecto.\n" " \n" -" Estado de salida:\n" -" Siempre falla." +" Estado de Salida:\n" +" Siempre incorrecto." #: builtins.c:471 -#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2987,21 +3007,21 @@ msgstr "" "Ejecuta una orden simple o muestra información sobre órdenes.\n" " \n" " Ejecuta la ORDEN con ARGumentos, suprimiendo la búsqueda de funciones\n" -" de shell, o muestra información sobre las ÓRDENes especificadas. Se " +" de shell, o muestra información sobre las ORDENes especificadas. Se " "puede\n" " usar para invocar órdenes en disco cuando existe una función con el " "mismo\n" " nombre.\n" " \n" " Opciones:\n" -" -p\tusa un valor por defecto para PATH para garantizar que\n" -" \tencuentre todas las utilidades estándar\n" -" -v\tmuestra una descripción de la ORDEN similar a la orden\n" -" \tinterna `type'\n" -" -V\tmuestra una descripción más detallada de cada ORDEN\n" +" -p utiliza un valor predeterminado de RUTA que garantiza que se\n" +" encuentren todas las utilidades comunes\n" +" -v muestra una descripción de la ORDEN similar a la orden\n" +" interna `type'\n" +" -V muestra una descripción más detallada de cada ORDEN\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de salida de la ORDEN, o falla si no se encuentra\n" +" Devuelve el estado de salida de la ORDEN, o fallo si no se encuentra\n" " la ORDEN." #: builtins.c:490 @@ -3024,11 +3044,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3050,27 +3070,27 @@ msgstr "" " muestra los atributos y valores de todas las variables.\n" " \n" " Opciones:\n" -" -f\trestringe la acción o muestra a nombres y definiciones\n" -" \tde funciones\n" -" -F\trestringe la muestra a nombres de funciones (con número de\n" -" \tlínea y fichero fuente al depurar)\n" +" -f\trestringe la acción o la información a nombres y definiciones\n" +" \t\tde funciones\n" +" -F\trestringe la información a nombres de funciones únicamente (con\n" +" \t\tnúmero de línea y fichero fuente al depurar)\n" " -g\tcrea variables globales cuando se usa en una función de shell;\n" -" \tde otra forma se descarta\n" -" -p\tmuestra los atributos y valor de cada NOMBRE\n" +" \t\ten caso contrario, se descarta\n" +" -p\tmuestra los atributos y el valor de cada NOMBRE\n" " \n" " Opciones que establecen atributos:\n" -" -a\testablece NOMBREs como matrices indizadas (si se admiten)\n" +" -a\testablece NOMBREs como matrices indexadas (si se admiten)\n" " -A\testablece NOMBREs como matrices asociativas (si se admiten)\n" " -i\testablece NOMBREs con el atributo `integer'\n" " -l\tconvierte NOMBREs a minúsculas en la asignación\n" -" -r\testablece NOMBREs como de sólo lectura\n" -" -t\testablece NOMBREs con el atributo `trace'\n" +" -r\tcrea NOMBREs como de sólo lectura\n" +" -t\tcrea NOMBREs con el atributo `trace'\n" " -u\tconvierte NOMBREs a mayúsculas en la asignación\n" -" -x\testablece NOMBREs para exportar\n" +" -x\tcrea NOMBREs para exportar\n" " \n" -" Si usa `+' en lugar de `-' desactiva el atributo dado.\n" +" Si se usa `+' en lugar de `-', se desactiva el atributo dado.\n" " \n" -" Las variables con el atributo integer realizan evaluación aritmética\n" +" Las variables con el atributo ‘integer’ realizan evaluación aritmética\n" " (vea la orden `let') cuando se asigna un valor a la variable.\n" " \n" " Cuando se usa en una función, `declare' hace locales a los NOMBREs,\n" @@ -3078,11 +3098,10 @@ msgstr "" " conducta.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se de una opción inválida o\n" -" suceda un error." +" Devuelve correcto a menos que se dé una opción inválida o\n" +" suceda un error de asignación de variable." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3090,10 +3109,9 @@ msgid "" msgstr "" "Establece valores de variables y atributos.\n" " \n" -" Obsoleto. Consulte `help declare'." +" Sinónimo de `declare'. Vea `help declare'." #: builtins.c:538 -#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -3112,12 +3130,12 @@ msgstr "" " Crea una variable local llamada NOMBRE, y le da un VALOR. OPCIÓN puede\n" " ser cualquier opción aceptada por `declare'.\n" " \n" -" Las variables locales sólo se pueden usar en una función; son visibles\n" -" sólo en la función donde se definen y sus hijos.\n" +" Las variables locales sólo pueden usarse dentro de funciones; son\n" +" visibles solo en la función donde se definen y sus hijos.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se de una opción inválida, suceda\n" -" un error, o el shell no esté ejecutando una función." +" Devuelve correcto a menos que se dé una opción inválida, suceda\n" +" un error de asignación, o el shell no esté ejecutando una función." #: builtins.c:555 #, fuzzy @@ -3149,6 +3167,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3157,34 +3181,37 @@ msgstr "" " \n" " Muestra los ARGumentos en la salida estándar seguidos por un carácter\n" " de fin de línea.\n" +" \n" " Opciones:\n" " -n\tno agrega un carácter de fin de línea\n" -" -e\tactiva la interpretación de caracteres de escape de\n" -" \tde barra invertida\n" +" -e\tactiva la interpretación de los siguientes caracteres de escape " +"de\n" +" \t\tbarra invertida\n" " -E\tdesactiva explícitamente la interpretación de caracteres de\n" -" \tde escape de barra invertida\n" +" \t\tescape de barra invertida\n" " \n" " `echo' interpreta los siguientes caracteres de escape de barra " "invertida:\n" -" \\a\talerta (timbre)\n" -" \\b\tespacio hacia atrás\n" -" \\c\tsuprime toda salida a continuación\n" -" \\E\tcarácter de escape\n" -" \\f\talimentación de papel\n" -" \\n\tlínea nueva\n" -" \\r\tretorno de carro\n" -" \\t\ttabulador horizontal\n" -" \\v\ttabulador vertical\n" -" \\\\\tbarra invertida\n" -" \\0nnn\tel carácter cuyo código ASCII es NNN (octal). NNN puede ser\n" -" \tde 0 a 3 dígitos octales\n" -" \\xHH\tel carácter de ocho bits cuyo valor es HH (hexadecimal). HH\n" -" \tpuede ser de uno o dos dígitos hexadecimales\n" -" \n" -" Estado de salida:\n" -" Devuelve con éxito a menos que suceda un error de escritura." - -#: builtins.c:591 +" \\a\talerta (timbre)\n" +" \\b\tborrado hacia atrás\n" +" \\c\tsuprime toda salida a continuación\n" +" \\e\tcarácter de escape\n" +" \\E\tcarácter de escape\n" +" \\f\talimentación de papel\n" +" \\n\tlínea nueva\n" +" \\r\tretorno de carro\n" +" \\t\ttabulador horizontal\n" +" \\v\ttabulador vertical\n" +" \\\\\tbarra invertida\n" +" \\0nnn\tcarácter cuyo código ASCII es NNN (octal). NNN puede ser\n" +" \t\tde 0 a 3 dígitos octales\n" +" \\xHH\tel de ocho bits cuyo valor es HH (hexadecimal). HH\n" +" \t\tpuede ser de uno o dos dígitos hexadecimales\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que suceda un error de escritura." + +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3203,10 +3230,10 @@ msgstr "" " Opciones:\n" " -n\tno agrega un carácter de fin de línea\n" " \n" -" Estado de salida:\n" -" Devuelve con éxito a menos que suceda un error de escritura." +" Estado de Salida:\n" +" Devuelve correcto a menos que suceda un error de escritura." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3242,26 +3269,27 @@ msgstr "" " -a\tmuestra la lista de órdenes internas indicando si están activas o " "no\n" " -n\tdesactiva cada NOMBRE o muestra la lista de órdenes internas\n" -" \tdesactivadas\n" +" \t\tdesactivadas\n" " -p\tmuestra la lista de órdenes internas en una forma reusable\n" -" -s\tmuestra sólo los nombres de las órdenes internas `especiales' " +" -s\tmuestra solo los nombres de las órdenes internas `especiales' " "Posix\n" " \n" " Opciones que controlan la carga dinámica:\n" -" -f\tcarga la orden interna NOMBRE del objeto compartido FICHERO\n" -" -d\tborra una orden interna cargada con -f\n" +" -f\tCarga la función interna NOMBRE desde el objeto compartido " +"FICHERO\n" +" -d\tBorra una orden interna cargada con -f\n" " \n" " Sin opciones, se activa cada NOMBRE.\n" " \n" -" Para usar `test' que se encuentra en $PATH en lugar de la orden interna\n" +" Para usar el `test' que se encuentra en $PATH en lugar de la orden " +"interna\n" " del shell, ejecute `enable -n test'.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que NOMBRE no sea una orden interna del " -"shell\n" +" Devuelve correcto a menos que NOMBRE no sea una orden interna del shell\n" " o suceda un error." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3286,7 +3314,7 @@ msgstr "" # en una de dos formas -> en una de las dos formas siguientes em+ # dar argumentos -> especificar em+ # De acuerdo. cfuga -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3363,11 +3391,10 @@ msgstr "" " de los primeros.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito si se encuentra una opción; falla si se encuentra\n" +" Devuelve correcto si se encuentra una opción; falla si se encuentra\n" " el final de las opciones o sucede un error." -#: builtins.c:688 -#, fuzzy +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3393,13 +3420,13 @@ msgstr "" " \n" " Ejecuta la ORDEN, reemplazando este shell con el programa especificado.\n" " Los ARGUMENTOS se vuelven los argumentos de la ORDEN. Si no se\n" -" especifica la ORDEN, cualquir redirección toma efecto en el shell " +" especifica la ORDEN, cualquier redirección toma efecto en el shell " "actual.\n" " \n" " Opciones:\n" " -a nombre\tpasa el NOMBRE como el argumento cero de la ORDEN\n" -" -c\t\tejecuta la ORDEN en un ambiente vacío\n" -" -l\t\tcoloca un guión en el argumento cero de la ORDEN\n" +" -c\tejecuta la ORDEN en un entorno vacío\n" +" -l\tcoloca un guion en el argumento cero de la ORDEN\n" " \n" " Si la orden no se puede ejecutar, termina un shell no interactivo,\n" " a menos que la opción de shell `execfail' esté activa.\n" @@ -3408,7 +3435,7 @@ msgstr "" " Devuelve éxito a menos que no se encuentre la ORDEN o que suceda un\n" " error de redirección." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3421,7 +3448,7 @@ msgstr "" "salida\n" " es el mismo de la última orden ejecutada." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3434,7 +3461,7 @@ msgstr "" " Termina un shell de entrada con un estado de salida de N. Devuelve un\n" " error si no se ejecuta en un shell de entrada." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3463,34 +3490,34 @@ msgid "" " Returns success or status of executed command; non-zero if an error " "occurs." msgstr "" -"Muestra o ejecuta órdenes de la lista de historia.\n" +"Muestra o ejecuta órdenes de la lista de la historia.\n" " \n" -" fc se usa para listar o editar y reejecutar órdenes de la lista de\n" +" fc se usa para listar o editar y reejecutar órdenes de la lista de la\n" " historia. PRIMERO y ÚLTIMO pueden ser números que especifican el " "rango,\n" " o PRIMERO puede ser una cadena, que significa la orden más reciente que\n" " comience con esa cadena.\n" " \n" -" -e NOMBRE_E selecciona el editor a usar. Por defecto es FCEDIT,\n" +" -e NOMBRE_E\tselecciona el editor a usar. Por defecto es FCEDIT,\n" " \t\tdespués EDITOR, después vi\n" -" -l lista líneas en lugar de editar\n" -" -n omite los números de línea al listar\n" -" -r inverte el orden de las líneas (muestra primero las más " +" -l \tlista laslíneas en lugar de editar\n" +" -n\tomite los números de línea al listar\n" +" -r\tinvierte el orden de las líneas (muestra primero las más " "recientes)\n" " \n" " Con el formato `fc -s [pat=rep ...] [orden]', la ORDEN se\n" " ejecuta de nuevo después de realizar la sustitución ANT=NUEVO.\n" " \n" -" Un alias útil para usar con esto es r='fc -s', así que al teclear\n" +" Un alias útil para usar con esto es r='fc -s', tal que al teclear\n" " `r cc' ejecuta la última orden que comience con `cc' y al teclear\n" -" `r' re-ejecuta la última orden.\n" +" `r' reejecuta la última orden.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito o el estado de la orden ejecutada; si sucede un " -"error\n" +" Devuelve correcto o el estado de la orden ejecutada; si sucede un " +"error,\n" " es diferente de cero." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3503,15 +3530,16 @@ msgid "" msgstr "" "Mueve el trabajo al primer plano.\n" " \n" -" Ubica al trabajo identificado con IDTRABAJO en el primer plano, y\n" -" lo hace el trabajo actual. Si IDTRABAJO no está presente, se usa\n" +" Ubica el trabajo identificado con IDTRABAJO en primer plano y\n" +" lo convierte en el trabajo actual. Si IDTRABAJO no está presente, se " +"usa\n" " la noción del shell del trabajo actual.\n" " \n" " Estado de Salida:\n" -" El estado del comando ubicado en primer plano, o falla si sucede un " +" El estado de la orden ubicada en primer plano, o falla si sucede un " "error." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3531,11 +3559,10 @@ msgstr "" " se usa la noción del shell del trabajo actual.\n" " \n" " Estado de Salida:\n" -" Devuelve éxito a menos que el control de trabajos no esté activado o\n" +" Devuelve correcto a menos que el control de trabajos no esté activado o\n" " suceda un error." -#: builtins.c:787 -#, fuzzy +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3565,22 +3592,22 @@ msgstr "" " órdenes almacenadas.\n" " \n" " Opciones:\n" -" -d\t\tolvida la ubicación almacenada de cada NOMBRE\n" -" -l\t\tmuestra en un formato que se puede reusar como entrada\n" +" -d\tolvida la ubicación almacenada de cada NOMBRE\n" +" -l\tmuestra en un formato que se puede reutilizar como entrada\n" " -p ruta\tusa RUTA como la ruta completa de NOMBRE\n" -" -r\t\tolvida todas las ubicaciones almacenadas\n" -" -t\t\tmuestra la ubicación almacenada de cada NOMBRE,\n" -" \t\tcada ubicación con el NOMBRE correspondiente\n" -" \t\tse dan varios NOMBREs\n" +" -r\tolvida todas las ubicaciones almacenadas\n" +" -t\tmuestra la ubicación almacenada de cada NOMBRE,\n" +" \t\tcada ubicación precedida del NOMBRE correspondiente\n" +" \t\tsi se dan varios NOMBREs\n" " Argumentos:\n" -" NOMBRE\t\tCada NOMBRE se busca en $PATH y se agrega a la lista\n" +" NOMBRE\tCada NOMBRE se busca en $PATH y se agrega a la lista\n" " \t\tde órdenes almacenadas.\n" " \n" " Estado de Salida\n" -" Devuelve con éxito a menos que no se encuentre NOMBRE o se proporcione\n" +" Devuelve correcto a menos que no se encuentre NOMBRE o se proporcione\n" " una opción inválida." -#: builtins.c:812 +#: builtins.c:816 #, fuzzy msgid "" "Display information about builtin commands.\n" @@ -3596,7 +3623,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3606,23 +3633,23 @@ msgstr "" " \n" " Muestra un resumen breve de las órdenes internas. Si se especifica\n" " un PATRÓN, da ayuda detallada sobre todas las órdenes que\n" -" coincidan con el PATRÓN, de otra forma se muestra la lista de\n" +" coincidan con el PATRÓN; en caso contrario, se muestra la lista de\n" " tópicos de ayuda.\n" " \n" " Opciones:\n" " -d\tmuestra una descripción corta para cada tópico\n" " -m\tmuestra el uso en un formato similar a página man\n" " -s\tmuestra sólo una sinopsis breve de uso para cada tópico que\n" -" \tcoincida con el PATRÓN\n" +" \t\tcoincida con el PATRÓN\n" " \n" " Argumentos:\n" " PATRÓN\tPatrón que especifica un tópico de ayuda\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que no se encuentre PATRÓN o se proporcione\n" +" Devuelve correcto a menos que no se encuentre PATRÓN o se proporcione\n" " una opción inválida." -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3632,7 +3659,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3656,16 +3684,17 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" -"Muestra o manipula la lista de la historia. \n" +"Muestra o manipula la lista de la historia.\n" +" \n" " Muestra la lista de la historia con números de línea, mostrando\n" " cada línea modificada con un `*' como prefijo. El argumento N\n" " muestra solamente las últimas N entradas.\n" " \n" " Opciones:\n" " -c\tborra la lista de historia eliminando todas las entradas\n" -" -d despl\tborra la entrada de la histora en la posición DESPL\n" +" -d despl\tborra la entrada de la historia en la posición DESPL\n" " \n" -" -a\tagrega las líneas de histora de esta sesión al fichero de " +" -a\tagrega las líneas de historia de esta sesión al fichero de " "historia\n" " -n\tlee todas las líneas de historia que no se han leído del fichero\n" " \tde historia\n" @@ -3677,6 +3706,7 @@ msgstr "" " \tresultado, sin guardarlo en la lista de historia\n" " -s\tagrega los ARGumentos a la lista de historia como\n" " \tuna sola entrada\n" +" \n" " Si se proporciona FICHERO, entonces se usa como el fichero de\n" " historia. Si no, si $HISTFILE tien un valor, éste se usa, en otro caso\n" " ~/.bash_history.\n" @@ -3684,10 +3714,13 @@ msgstr "" " Si la variable $HISTTIMEFORMAT está definida y no es nula, se usa su\n" " valor como una cadena de formato strftime(3) para mostrar la marca de\n" " tiempo asociada con cada entrada de historia mostrada. No se muestra\n" -" ninguna marca de tiempo de otra forma." +" ninguna marca de tiempo de otra forma.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a no ser que se dé una opción inválida u ocurra un " +"error." -#: builtins.c:872 -#, fuzzy +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3713,28 +3746,26 @@ msgstr "" "Muestra el estado de los trabajos.\n" " \n" " Muestra los trabajos activos. IDTRABAJO restringe la salida a\n" -" ese trabajo. Sin opciones, se muestra el estado de todos los trabajos\n" +" esa trabajo. Sin opciones, se muestra el estado de todas los trabajos\n" " activos.\n" " \n" " Opciones:\n" -" -l\tmuestra los id's de los procesos, además de\n" -" \tla información normal\n" -" -n\tsolo muestra los procesos que han cambia de estado desde\n" -" \tla última notificación\n" -" -p\tsolo muestra los id's de los procesos -r\trestringe la salida " -"a los trabajos en ejecución\n" +" -l\tmuestra los IDs de los procesos, además de la información normal\n" +" -n\tsolo muestra los procesos que han cambiado de estado desde\n" +" \t\tla última notificación\n" +" -p\tsolo muestra los IDs de los procesos\n" +" -r\trestringe la salida a los trabajos en ejecución\n" " -s\trestringe la salida a los trabajos detenidos\n" " \n" " Si se especifica -x, la ORDEN se ejecuta después de que todas las\n" -" especificaciones de trabajo que aparecen en ARGS se han reemplazado\n" +" especificaciones de trabajo que aparecen en ARGS se hayan reemplazado\n" " con el ID de proceso del líder del grupo de procesos de dicho trabajo.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se de una opción inválida o suceda un\n" +" Devuelve correcto a menos que se dé una opción inválida o suceda un\n" " error. Si se usa -x, devuelve el estado de salida de la ORDEN." -#: builtins.c:899 -#, fuzzy +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3750,23 +3781,22 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -"Borra trabajos del shell actual.\n" +"Quita trabajos del shell actual.\n" " \n" -" Borra cada argumento IDTRABAJO de la tabla de trabajos activos. Sin\n" -" algún IDTRABAJO, el shell utiliza su noción del trabajo actual.\n" +" Quita cada argumento IDTRABAJO de la tabla de trabajos activos. Sin\n" +" ningún IDTRABAJO, el shell utiliza su noción del trabajo actual.\n" " \n" " Opciones:\n" -" -a\tborra todos los trabajos si no se proporciona IDTRABAJO\n" -" -h\tmarca cada IDTRABAJO para no se envíe SIGHUP al trabajo si\n" -" \tel shell recibe un SIGHUP\n" -" -r\tborra solo los trabajos en ejecución\n" +" -a\tquita todas los trabajos si no se proporciona IDTRABAJO\n" +" -h\tmarca cada IDTRABAJO para que no se le envíe SIGHUP\n" +" \t\tsi el shell recibe un SIGHUP\n" +" -r\tquita solo los trabajos en ejecución\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcionen una opción o un\n" -" IDTRABAJO inválidos." +" Devuelve correcto a menos que se proporcionen una opción o\n" +" un IDTRABAJO inválida." -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3788,7 +3818,7 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" -"Envía una señal a un trabajo.\n" +"Envía una señal a una trabajo.\n" " \n" " Envía a los procesos nombrados por PID (o IDTRABAJO) la señal ID_SEÑAL\n" " o NUM_SEÑAL. Si no están presentes ni ID_SEÑAL o NUM_SEÑAL, se asume\n" @@ -3797,16 +3827,17 @@ msgstr "" " Opciones:\n" " -s sig\tSIG es un nombre de señal\n" " -n sig\tSIG es un número de señal\n" -" -l\tenlista los nombres de señales; si hay argumentos a continuación\n" -" \tde `-l', se asume que son números de señal para las cuales se debe\n" +" -l\tlista los nombres de señales; si hay argumentos a continuación\n" +" \t\tde `-l', se asume que son números de señal para las cuales se debe\n" " mostrar el nombre.\n" " \n" " Kill es una orden interna del shell por dos razones: permite que se\n" -" puedan usar IDs de trabajo en lugar de IDs de proceso, y permite matar\n" -" procesos si ha alcanzado el límite de procesos que puede crear.\n" +" puedan utilizar IDs de trabajo en lugar de IDs de proceso y permite\n" +" matar procesos si se ha alcanzado el límite de procesos que se pueden\n" +" crear.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se de una opción inválida o suceda un " +" Devuelve correcto a menos que se dé una opción inválida o suceda un " "error." # "a ser evaluada" no está en español. sv @@ -3817,7 +3848,7 @@ msgstr "" # No sé si existe precedencia en español, pero me suena fatal. # Yo pondría simplemente "prioridad". sv # Creo que si existe, pero tu sugerencia es mejor. cfuga -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3867,7 +3898,7 @@ msgstr "" " con enteros de longitud fija, sin revisar desbordamientos, aunque la\n" " la división por 0 se captura y se marca como un error. La siguiente\n" " lista de operadores está agrupada en niveles de operadores de la misma\n" -" prioridad. Se muestran los niveles en orden de prioridad decreciente.\n" +" prioridad. Los niveles se muestran en orden de prioridad decreciente.\n" " \n" " \tid++, id--\tpost-incremento, post-decremento de variable\n" " \t++id, --id\tpre-incremento, pre-decremento de variable\n" @@ -3876,12 +3907,12 @@ msgstr "" " \t**\t\texponenciación\n" " \t*, /, %\t\tmultiplicación, división, residuo\n" " \t+, -\t\tadición, sustracción\n" -" \t<<, >>\t\tdesplazamientos de bits izquierdo y derecho\n" +" \t<<, >>\t\tdesplazamientos de varios bit izquierdo y derecho\n" " \t<=, >=, <, >\tcomparación\n" " \t==, !=\t\tequivalencia, inequivalencia\n" -" \t&\t\tAND de bits\n" -" \t^\t\tXOR de bits\n" -" \t|\t\tOR de bits\n" +" \t&\t\tAND de varios bit\n" +" \t^\t\tXOR de varios bit\n" +" \t|\t\tOR de varios bit\n" " \t&&\t\tAND lógico\n" " \t||\t\tOR lógico\n" " \texpr ? expr : expr\n" @@ -3890,21 +3921,21 @@ msgstr "" " \t+=, -=, <<=, >>=,\n" " \t&=, ^=, |=\tasignación\n" " \n" -" Se permiten las variables de shell como operandos. Se reemplaza\n" -" el nombre de la variable por su valor (coercionado a un entero\n" -" de longitud fija) dentro de una expresión. La variable no\n" -" necesita tener activado su atributo integer para ser usada en\n" -" una expresión.\n" +" Se permiten las variables de shell como operandos. El nombre\n" +" de la variable se reemplaza por su valor (coercionado a un\n" +" entero de longitud fija) dentro de una expresión. La variable\n" +" no necesita tener activado su atributo entero para emplearse\n" +" en una expresión.\n" " \n" " Los operadores se evalúan en orden de prioridad. Primero se\n" " evalúan las sub-expresiones en paréntesis y pueden sobrepasar\n" " las reglas de prioridad anteriores.\n" " \n" -" Estado de salida:\n" -" Si el último ARGumento se evalúa como 0, let devuelve 1; de otra\n" -" forma, let devuelve 0." +" Estado de Salida:\n" +" Si el último ARGumento se evalúa como 0, ‘let’ devuelve 1; de\n" +" otra forma, ‘let’ devuelve 0." -#: builtins.c:987 +#: builtins.c:992 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3926,7 +3957,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3971,36 +4002,37 @@ msgstr "" " \n" " Opciones:\n" " -a matriz\tasigna las palabras leídas a índices secuenciales de\n" -" \tla variable de matriz MATRIZ, empezando en cero\n" +" \t\tla variable matricial MATRIZ, empezando en cero\n" " -d delim\tcontinúa hasta que se lea el primer carácter de DELIM,\n" " \t\ten lugar de línea nueva\n" -" -e\t\tusa Readline para obtener la línea en un shell interactivo\n" -" -i texto\tUsa el TEXTO como el texto inicial para Readline\n" -" -n ncars\tregresa después de leer NCARS caracteres en lugar de\n" +" -e\tusa Readline para obtener la línea en un shell interactivo\n" +" -i texto\tEmplea el TEXTO como el texto inicial para Readline\n" +" -n ncars\tregresa tras leer NCARS caracteres en lugar de\n" " \t\tesperar una línea nueva, pero honra a un delimitador si\n" " \t\tse leen menos de NCARS caracteres antes del delimitador\n" " -N ncars\tdevuelve sólo después de leer exactamente NCARS\n" " \t\tcaracteres, a menos que se encuentre el fin del fichero\n" " \t\to expire la lectura, descartando cualquier delimitador\n" -" -p prompt\tmuestra la cadena PROMPT sin un caractér de línea nueva\n" +" -p prompt\tsale la cadena PROMPT sin un carácter de línea nueva\n" " \t\tal final antes de intentar leer\n" " -r\t\tno permite que las barras invertidas escapen caracteres\n" " -s\t\tno muestra la salida que proviene de una terminal\n" " -t tiempo\texpira y devuelve fallo si no se lee una línea completa\n" " \t\tde entrada en TIEMPO segundos. El valor de la variable TMOUT\n" " \t\tes el tiempo de expiración por defecto. TIEMPO puede ser un\n" -" \t\tnúmero fraccionario. Si TIEMPO es 0, read devuelve con éxito\n" +" \t\tnúmero fraccionario. Si TIEMPO es 0, ‘read’ devuelve correcto\n" " \t\tsólo si hay entrada disponible en el descriptor de fichero\n" " \t\tespecificado. El estado de salida es mayor que 128 si se excede\n" " \t\tel tiempo de expiración.\n" " -u df\t\tlee del descriptor de fichero DF en lugar de la entrada\n" -" \t\testándar \n" +" \t\testándar\n" +" \n" " Estado de Salida:\n" " El código de devolución es cero, a menos que se encuentre un final de\n" -" línea, el tiempo de read expire, o se proporcione un descriptor de\n" -" fichero inválido como el argumento de -u." +" línea, el tiempo de lectura se agote, o se proporcione un descriptor\n" +" de fichero inválido como el argumento de -u." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -4013,17 +4045,16 @@ msgid "" msgstr "" "Devuelve de una función de shell.\n" " \n" -" Causa que una función o un guión leído termine con el valor de " -"devolución\n" -" especificado por N. Si se omite N, el estado de devolución es el de\n" -" la última orden ejecutada dentro de la función o guión.\n" +" Causa que una función o un script leído termine con el valor devuelto\n" +" especificado por N. Si se omite N, el estado devuelto es el de la " +"última\n" +" orden ejecutada dentro de la función o script.\n" " \n" " Estado de Salida:\n" " Devuelve N, o falla si el shell no está ejecutando una función o un " -"guión." +"script." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4111,7 +4142,7 @@ msgstr "" "Establece o borra los valores de las opciones de shell y los parámetros\n" "posicionales.\n" " \n" -" Cambia el valor de los atributos de shell y los parámetros " +" Modifica el valor de los atributos de shell y los parámetros " "posicionales,\n" " o muestra los nombres y valores de las variables de shell.\n" " \n" @@ -4127,12 +4158,11 @@ msgstr "" " orden, no solo aquellos que preceden al nombre de la orden.\n" " -m Activa el control de trabajos.\n" " -n Lee órdenes pero no las ejecuta.\n" -" -o nombre-opcion\n" -" Establece la variable correspondiente a nombre-opcion:\n" +" -o nombre-opción\n" +" Establece la variable correspondiente a nombre-opción:\n" " allexport igual que -a\n" " braceexpand igual que -B\n" -" emacs usa una interfaz de edición de línea estilo " -"emacs\n" +" emacs usa una interfaz de edición lineal estilo emacs\n" " errexit igual que -e\n" " errtrace igual que -E\n" " functrace igual que -T\n" @@ -4153,16 +4183,14 @@ msgstr "" " nounset igual que -u\n" " onecmd igual que -t\n" " physical igual que -P\n" -" pipefail el valor de devolución de una tubería es el " -"estado\n" -" del último comando en salir con un estado " +" pipefail el valor de retorno de una tubería es el estado\n" +" de la última orden que sale con un estado " "diferente\n" " de cero, o cero si ninguna orden termina con un\n" " estado diferente de cero\n" -" posix cambia el comportamiento de bash donde la " -"operación\n" -" por defecto difiere del estándar Posix para que\n" -" coincida con el estándar\n" +" posix modifica el comportamiento de bash donde la\n" +" operación por defecto difiere del estándar POSIX\n" +" para que coincida con el estándar\n" " privileged igual que -p\n" " verbose igual que -v\n" " vi usa una interfaz de edición de línea estilo vi\n" @@ -4203,10 +4231,9 @@ msgstr "" " se proporciona ningún ARG, se muestran todas las variables del shell.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida." +" Devuelve correcto a menos que se proporcione una opción inválida." -#: builtins.c:1132 -#, fuzzy +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4234,6 +4261,8 @@ msgstr "" " Opciones:\n" " -f\ttrata cada NOMBRE como una función de shell\n" " -v\ttrata cada NOMBRE como una variable de shell\n" +" -n\ttrata cada NOMBRE como una referencia de nombre y desasigna\n" +" \t\tla propia variable, no aquella a la que hace referencia\n" " \n" " Sin opciones, unset primero trata de borrar una variable, y si falla,\n" " trata de borrar una función.\n" @@ -4241,10 +4270,10 @@ msgstr "" " Algunas variables no se pueden borrar; también consulte `readonly'.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" " un NOMBRE sea de sólo lectura." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4277,11 +4306,10 @@ msgstr "" " El argumento `--' desactiva el procesamiento posterior de opciones.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o que\n" +" Devuelve correcto a menos que se proporcione una opción inválida o que\n" " NOMBRE sea inválido." -#: builtins.c:1173 -#, fuzzy +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4309,19 +4337,20 @@ msgstr "" " un VALOR, se asigna el VALOR antes de marcar como de sólo lectura.\n" " \n" " Opciones:\n" -" -a\tse refiere a variables de matriz indizada\n" +" -a\tse refiere a variables de matriz indexada\n" " -A\tse refiere a variables de matriz asociativa\n" " -f\tse refiere a funciones de shell\n" " -p\tmuestra una lista de todas las variables y funciones de sólo " -"lectura\n" +"lectura,\n" +" \t\tdependiendo de si se pone o no la opción -f\n" " \n" " El argumento `--' desactiva el procesamiento posterior de opciones.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" " el NOMBRE sea inválido." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4337,9 +4366,9 @@ msgstr "" " se proporciona N, se asume que es 1.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que N sea negativo o mayor que $#." +" Devuelve correcto a menos que N sea negativo o mayor que $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4359,11 +4388,12 @@ msgstr "" " Si se proporciona ARGUMENTOS, se convierten en los parámetros " "posicionales\n" " cuando se ejecuta el FICHERO.\n" +" \n" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada del FICHERO; falla si\n" " no se puede leer el FICHERO." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4386,11 +4416,10 @@ msgstr "" " -f\tfuerza la suspensión, aún si el shell es un shell de entrada\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que no esté activo el control de trabajos o\n" +" Devuelve correcto a menos que no esté activo el control de trabajos o\n" " suceda un error." -#: builtins.c:1254 -#, fuzzy +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4480,7 +4509,8 @@ msgstr "" " de un fichero. Hay también operadores de cadenas, y operadores de\n" " comparación numérica.\n" " \n" -" La conducta de test depende del número de arcumentos. Lea la página\n" +" El comportamiento de test depende del número de argumentos. Lea la " +"página\n" " de manual de bash para la especificación completa.\n" " \n" " Operadores de fichero:\n" @@ -4540,8 +4570,10 @@ msgstr "" " \n" " -o OPCIÓN Verdadero si la opción del shell OPCIÓN está activada.\n" " -v VAR Verdadero si la variable de shell VAR está activada.\n" +" -R VAR Verdadero si la variable VAR está activada y es una\n" +" referencia de nombre\n" " ! EXPR Verdadero si expr es falso.\n" -" EXPR1 -a EXPR2 Verdadero si expr1 Y expr2 are son verdaderas.\n" +" EXPR1 -a EXPR2 Verdadero si expr1 Y expr2 son ambas verdaderas.\n" " EXPR1 -o EXPR2 Verdadero si cualquiera de expr1 O expr2 es verdadera.\n" " \n" " arg1 OP arg2 Pruebas aritméticas. OP es uno de -eq, -ne,\n" @@ -4551,10 +4583,10 @@ msgstr "" " igual, no igual, menor, menor o igual, mayor, mayor o igual que ARG2.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito si EXPR evalúa a verdadero; falla si EXPR evalúa a\n" +" Devuelve correcto si EXPR evalúa a verdadero; falla si EXPR evalúa a\n" " falso o se proporciona un argumento inválido." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4564,9 +4596,9 @@ msgstr "" "Evalúa una expresión condicional.\n" " \n" " Este es un sinónimo para la orden interna \"test\", pero el último\n" -" argumento debe ser un `]' literal, que coincida con el `[' inicial." +" argumento debe ser un `]' literal, que concuerde con el `[' inicial." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4583,10 +4615,10 @@ msgstr "" "todos\n" " sus procesos hijos.\n" " \n" -" Estado de salida:\n" -" Siempre con éxito." +" Estado de Salida:\n" +" Siempre correcto." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4631,7 +4663,8 @@ msgid "" msgstr "" "Atrapa señales y otros eventos.\n" " \n" -" Define y activa manejadores a ejecutar cuando el shell recibe señales\n" +" Define y activa manejadores para ejecutar cuando el shell recibe " +"señales\n" " u otras condiciones.\n" " \n" " ARG es una orden para leer y ejecutar cuando el shell recibe la(s)\n" @@ -4640,13 +4673,13 @@ msgstr "" " reestablece a su valor original. Si ARG es la cadena nula, el shell\n" " y las órdenes que invoque ignoran cada ID_SEÑAL.\n" " \n" -" Si una ID_SEÑAL es EXIT (0) se ejecuta la orden ARG al salir del\n" -" shell. Si una ID_SEÑAL es DEBUG, se ejecuta ARG después de cada\n" -" orden simple. Si una ID_SEÑAL es RETURN, se ejecuta ARG cada vez\n" -" que una función de shell o un guión ejecutado por las órdenes internas\n" -" . o source termina su ejecución. Una ID_SEÑAL de ERR significa que\n" -" se ejecuta ARG cada vez que la falla de una orden causa que el shell\n" -" termine cuando la opción -e está activada.\n" +" Si una ID_SEÑAL es EXIT (0) se ejecuta la orden ARG al salir del shell.\n" +" Si una ID_SEÑAL es DEBUG, se ejecuta ARG después de cada orden simple.\n" +" Si una ID_SEÑAL es RETURN, se ejecuta ARG cada vez que una función de\n" +" shell o un script ejecutado por las órdenes internas . o source termina\n" +" su ejecución. Una ID_SEÑAL de ERR conlleva que se ejecute ARG cada vez\n" +" que un fallo de una orden provocaría que el shell terminase si la\n" +" opción -e está activada.\n" " \n" " Si no se proporcionan argumentos, trap muestra la lista de órdenes\n" " asociadas con cada señal.\n" @@ -4662,14 +4695,13 @@ msgstr "" " \"kill -signal $$\". \n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que una ID_SEÑAL sea inválida o se " +" Devuelve correcto a menos que una ID_SEÑAL sea inválida o se " "proporcione\n" " una opción inválida." # No he visto que este fichero incluya la posibilidad de traducir las # palabras que muestra `type -t'. Por esta razón, se dejan en inglés. cfuga -#: builtins.c:1393 -#, fuzzy +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4700,35 +4732,32 @@ msgid "" msgstr "" "Muestra información sobre el tipo de orden.\n" " \n" -" Por cada NOMBRE, indica cómo se interpretaría si se usa como un nombre\n" -" de orden.\n" +" Por cada NOMBRE, indica cómo se interpretaría si se utilizara como un\n" +" nombre de orden.\n" " \n" " Opciones:\n" " -a\tmuestra todas las ubicaciones que contienen un ejecutable llamado\n" -" \tNOMBRE; incluye aliases, órdenes internas, y funciones, solo y solo " -"si\n" -" \tno se usó también la opción `-p'\n" +" \t\tNOMBRE; incluye aliases, órdenes internas y funciones, si y solo si\n" +" \t\tno se utilizó también la opción `-p'\n" " -f\tsuprime la búsqueda de funciones de shell\n" -" -P\tfuerza una búsqueda en PATH por cada nombre, aún si hay un alias,\n" -" \torden interna, o función, y devuelve el nombre del fichero en el " -"disco\n" -" \tque se ejecutaría\n" -" -p\tdevuelve ya sea el nombre del fichero en disco que se ejecutaría,\n" -" \to nada si `type -t NOMBRE' no devuelve `fichero'.\n" -" -t\tmuestra una sola palabra, que es una de `alias', `keyword',\n" -" \t`function', `builtin', `file' o `', si el NOMBRE es un alias,\n" -" \tpalabra reservada del shell, función del shell, orden interna del\n" -" \tshell, fichero de disco, o no se encuentra, respectivamente.\n" +" -P\tfuerza una búsqueda en PATH por cada nombre, aun si hay un alias,\n" +" \t\torden interna o función, y devuelve el nombre del fichero en disco\n" +" \t\tque se ejecutaría\n" +" -p\tdevuelve el nombre del fichero en disco que se ejecutaría,\n" +" \t\to nada si `type -t NOMBRE' no devuelve `fichero'\n" +" -t\tsaca una sola palabra, que es una de entre `alias', `keyword',\n" +" \t\t`function', `builtin', `file' o `', si el NOMBRE es un alias,\n" +" \t\tpalabra reservada del shell, función del shell, orden interna del\n" +" \t\tshell, fichero de disco, o no se encuentra, respectivamente.\n" " \n" " Argumentos:\n" " NOMBRE\tNombre de orden a interpretar.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito si se encuentran todos los NOMBREs; falla si no se\n" -" encuentra alguno." +" Devuelve correcto si se encuentran todos los NOMBREs; falla si alguno\n" +" no se encuentra." -#: builtins.c:1424 -#, fuzzy +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4793,6 +4822,7 @@ msgstr "" " -f\tel tamaño máximo de los ficheros escritos por el shell y sus " "hijos\n" " -i\tel número máximo de señales pendientes\n" +" -k\tel número máximo de kcolas ubicadas para este proceso\n" " -l\tel tamaño máximo que un proceso puede bloquear en memoria\n" " -m\tel tamaño máximo para las variables residentes\n" " -n\tel número máximo de descriptores de fichero abiertos\n" @@ -4804,6 +4834,10 @@ msgstr "" " -u\tel número máximo de procesos de usuario\n" " -v\tel tamaño de la memoria virtual\n" " -x\tel número máximo de bloqueos de ficheros\n" +" -P\tel número máximo de pseudoterminales\n" +" -T\tel número máximo de hilos\n" +" \n" +" No todas las opciones están disponibles en todas las plataformas.\n" " \n" " Si se establece LÍMITE, éste es el nuevo valor del recurso " "especificado;\n" @@ -4817,12 +4851,12 @@ msgstr "" " es en segundos, -p, el cual es en incrementos de 512 bytes, y -u, el\n" " cual es un número de procesos sin escala.\n" " \n" -" Estado de salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o " +" Estado de Salida:\n" +" Devuelve correcto a menos que se proporcione una opción inválida o " "suceda\n" " un error." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4853,10 +4887,10 @@ msgstr "" " -S\tsalida simbólica; de otra forma muestra el modo como número octal\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que el MODO sea inválido o se proporcione\n" +" Devuelve correcto a menos que el MODO sea inválido o se proporcione\n" " una opción inválida." -#: builtins.c:1494 +#: builtins.c:1499 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4865,13 +4899,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4879,8 +4915,9 @@ msgstr "" "Espera la terminación del trabajo y devuelve el estado de salida.\n" " \n" " Espera al proceso identificado por ID, el cual puede ser un ID de\n" -" proceso o una especificación de trabajo, y reporta su estado de salida.\n" -" Si no se proporciona un ID, espera a todos los procesos hijo activos,\n" +" proceso o una especificación de trabajo e informa de su estado de " +"salida.\n" +" Si no se proporciona un ID, espera a todos los procesos hijos activos,\n" " y el estado de devolución es cero. Si ID es una especificación de\n" " trabajo, espera a todos los procesos en la cola de trabajos.\n" " \n" @@ -4888,8 +4925,7 @@ msgstr "" " Devuelve el estado de ID; falla si ID es inválido o se proporciona una\n" " opción inválida." -#: builtins.c:1515 -#, fuzzy +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4903,17 +4939,19 @@ msgid "" "invalid\n" " option is given." msgstr "" -"Espera la terminación del trabajo y devuelve el estado de salida.\n" +"Espera la terminación del proceso y devuelve el estado de salida.\n" " \n" -" Espera al proceso especificado y reporta su estado de salida. Si\n" -" no se proporciona un PID, espera a todos los procesos hijo activos,\n" -" y el código de devolución es cero. PID debe ser un ID de proceso.\n" +" Espera a cada proceso especificado por un PID y reporta su\n" +" estado de salida. Si no se proporciona un PID, espera a todos los\n" +" procesos hijos activos, y el código de devolución es cero.\n" +" El PID debe ser un ID de proceso.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de ID; falla si ID es inválido o se proporciona una\n" -" opción inválida." +" Devuelve el estado del último PID; falla si PID es inválido o se " +"proporciona\n" +" una opción inválida." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4927,7 +4965,7 @@ msgid "" msgstr "" "Ejecuta órdenes por cada miembro en una lista.\n" " \n" -" El ciclo `for' ejecuta una secuencia de órdenes para cada miembro en\n" +" El bucle `for' ejecuta una secuencia de órdenes para cada miembro en\n" " una lista de elementos. Si `in PALABRAS ...;' no está presente,\n" " entonces se asume `in \"$@\"'. Para cada elemento en PALABRAS,\n" " se define NOMBRE como ese elemento, y se ejecutan las ÓRDENES.\n" @@ -4935,7 +4973,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4951,7 +4989,7 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Aritmética para un ciclo.\n" +"Aritmétical de bucle for.\n" " \n" " Equivalente a\n" " \t(( EXP1 ))\n" @@ -4960,12 +4998,12 @@ msgstr "" " \t\t(( EXP3 ))\n" " \tdone\n" " EXP1, EXP2, y EXP3 son expresiones aritméticas. Si se omite\n" -" cualquier expresión, se comporta como si se evaluara a 1.\n" +" cualquiera de ellas, se comporta como si se evaluara a 1.\n" " \n" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5002,7 +5040,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5029,7 +5067,7 @@ msgstr "" " Estado de Salida:\n" " El estado de devolución es el estado de devolución de la TUBERÍA." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5047,7 +5085,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5075,15 +5113,14 @@ msgstr "" "cero,\n" " se ejecuta la lista `then ÓRDENES' correspondiente y se completa la\n" " orden if. De otra forma, se ejecuta la lista `else ÓRDENES', si está\n" -" presente. El estado de salida de toda la construcción es el estado de\n" -" salida de la última orden ejecutada, o cero si ninguna condición " -"resultó\n" +" presente. El estado de salida del bloque entero es el estado saliente\n" +" de la última orden ejecutada, o cero si ninguna condición resultó\n" " verdadera.\n" " \n" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5093,7 +5130,7 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Ejecuta órdenes mientras una prueba tenga éxito.\n" +"Ejecuta órdenes mientras una prueba sea correcta.\n" " \n" " Expande y ejecuta ÓRDENES mientras la orden final en las ÓRDENES\n" " `while' tenga un estado de salida de cero.\n" @@ -5101,7 +5138,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5111,7 +5148,7 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Ejecuta órdenes mientras una prueba no tenga éxito.\n" +"Ejecuta órdenes mientras una prueba sea correcta.\n" " \n" " Expande y ejecuta ÓRDENES mientras la orden final en las ÓRDENES\n" " `until' tengan un estado de salida que no sea cero.\n" @@ -5119,8 +5156,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5134,17 +5170,16 @@ msgid "" msgstr "" "Crea un coproceso llamado NOMBRE.\n" " \n" -" Ejecuta la ORDEN asíncronamente, con la salida estándar y la entrada\n" -" estándar de la orden contectada a través de una tubería a los " -"descriptores\n" -" de fichero asignados a los índices 0 y 1 de una variable de matriz " -"NOMBRE\n" -" en el shell en ejecución. El nombre por defecto es \"COPROC\".\n" +" Ejecuta la ORDEN asíncronamente, con la salida y la entrada estándar\n" +" de la orden conectadas a través de una tubería a los descriptores\n" +" de fichero asignados a los índices 0 y 1 de una variable de matriz\n" +" NOMBRE en el shell en ejecución. El nombre por defecto es\n" +" \"COPROC\".\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de salida de la ORDEN." +" La orden «coproc» devuelve un estado de salida de 0." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5160,14 +5195,14 @@ msgstr "" "Define una función de shell.\n" " \n" " Crea una función de shell llamada NOMBRE. Cuando se invoca como una\n" -" orden simple, NOMBRE ejecuta ÓRDENES en el contexto del shell que lo\n" -" llamó. Cuando se invoca NOMBRE, los argumentos se pasan a la función\n" -" como $1...$n, y el nombre de la función está en $FUNCNAME.\n" +" orden simple, NOMBRE ejecuta ORDENes en el contexto del shell\n" +" que lo llamó. Cuando se invoca NOMBRE, los argumentos se pasan a la\n" +" función como $1...$n, y el nombre de la función está en $FUNCNAME.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que NOMBRE sea de sólo lectura" +" Devuelve correcto a menos que NOMBRE sea de sólo lectura." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5179,13 +5214,13 @@ msgid "" msgstr "" "Agrupa órdenes como una unidad.\n" " \n" -" Ejecuta un conjunto de órdenes en un grupo. Esta es una forma de\n" -" redirigir un conjunto completo de órdenes.\n" +" Ejecuta un conjunto de órdenes en un grupo. Esta es una\n" +" forma de redirigir un conjunto completo de órdenes.\n" " \n" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5203,14 +5238,14 @@ msgstr "" " Equivalente al argumento IDTRABAJO de la orden `fg'. Reinicia un\n" " trabajo detenido o en segundo plano. IDTRABAJO puede especificar\n" " un nombre de trabajo o un número de trabajo. Un `&' a continuación\n" -" de IDTRABAJO coloca al trabajo en segundo plano, como si la\n" +" de IDTRABAJO coloca a el trabajo en segundo plano, como si la\n" " especificación del trabajo se hubiera proporcionado como\n" " un argumento de `bg'.\n" " \n" " Estado de Salida:\n" " Devuelve el estado del trabajo reiniciado." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5228,7 +5263,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve 1 si la EXPRESIÓN evalúa a 0; devuelve 0 de otra manera." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5264,7 +5299,7 @@ msgstr "" " combinar usando los siguientes operadores:\n" " \n" " ( EXPRESIÓN )\tDevuelve el valor de la EXPRESIÓN\n" -" ! EXPRESIÓN\tVerdadero si la EXPRESIÓN es falsa; de otra forma es " +" ! EXPRESIÓN\t\tVerdadero si la EXPRESIÓN es falsa; de otra forma es " "falso\n" " EXPR1 && EXPR2\tVerdadero si EXPR1 y EXPR2 son verdaderos; de\n" " \t\totra forma es falso\n" @@ -5281,7 +5316,7 @@ msgstr "" " Estado de Salida:\n" " 0 o 1 dependiendo del valor de la EXPRESIÓN." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5344,17 +5379,17 @@ msgstr "" " \t\tde rutas de nombre.\n" " HISTFILE\tEl nombre del fichero donde se almacena su historia\n" " \t\tde órdenes.\n" -" HISTFILESIZE\tEl número máximo de líneas que puede contener\n" +" HISTFILESIZE\t El número máximo de líneas que puede contener\n" " \t\teste fichero.\n" -" HISTSIZE\tEl número máximo de líneas de líneas de historia que\n" -" \t\tun shell en ejecución puede acceder.\n" +" HISTSIZE\t El número máximo de líneas de historia que un shell\n" +" \t\ten ejecución puede acceder.\n" " HOME\tLa ruta completa a su directorio de entrada.\n" " HOSTNAME\tEl nombre del anfitrión actual.\n" -" HOSTTYPE\tEl tipo de CPU bajo el cual se ejecuta esta versión de\n" -" \t\tBash.\n" +" HOSTTYPE\tEl tipo de CPU bajo el cual se ejecuta esta versión\n" +" \t\tde Bash.\n" " IGNOREEOF\tControla la acción del shell al recibir un carácter\n" -" \t\tEOF como la única entrada. Si está definida, entonces su\n" -" \t\tvalor es el número de caracteres EOF que se deben leer de\n" +" \t\tFDL como la única entrada. Si está definida, entonces su\n" +" \t\tvalor es el número de caracteres FDL que se deben leer de\n" " \t\tforma consecutiva en una línea vacía antes de que el shell\n" " \t\ttermine (por defecto 10). Cuando no está definida, EOF\n" " \t\tsignifica el fin de la entrada.\n" @@ -5377,27 +5412,26 @@ msgstr "" " TERM\tEl nombre del tipo actual de terminal.\n" " TIMEFORMAT\tEl formato de salida para las estadísticas de tiempo\n" " \t\tmostradas por la palabra reservada `time'.\n" -" auto_resume\tSi no es nulo significa que una palabra de orden que\n" -" \t\taparece en una línea por sí sola se busca primero en la lista\n" -" \t\tactual de trabajos detenidos. Si se encuentra ahí, ese\n" -" \t\ttrabajo se coloca en primer plano. Un valor `exact' significa\n" -" \t\tque la palabra de orden debe coincidir exactamente con una\n" -" \t\torden en la lista de trabajos detenidos. Un valor `substring'\n" -" \t\tsignifica que la palabra de orden debe coincidir con una\n" -" \t\tsubcadena del trabajo. Cualquier otro valor significa que\n" -" \t\tla orden debe ser un prefijo de un trabajo detenido.\n" +" auto_resume\tSi no es nulo significa que una palabra de orden\n" +" \t\tque aparece en una línea por sí sola se busca primero en la lista\n" +" \t\tactual de trabajos detenidos. Si se encuentra ahí, esetrabajo\n" +" \t\tse coloca en primer plano. Un valor `exact' significa que la\n" +" \t\tpalabra de orden debe coincidir exactamente con una\n" +" \t\torden de la lista de trabajos detenidos. Un valor\n" +" \t\t`substring' significa que la palabra de orden debe coincidir\n" +" \t\tcon una subcadena del trabajo. Cualquier otro valor significa\n" +" \t\tque la orden debe ser un prefijo de un trabajo detenido.\n" " histchars\tLos caracteres que controlan la expansión de historia\n" -" \t\ty la sustitución rápida. El primer carácter es el\n" -" \t\tcarácter de sustitución de historia, generalmente `!'. El\n" -" \t\tsegundo es el carácter de `sustitución rápida', generalmente\n" -" \t\t`^'. El tercero es el carácter `comentario de historia',\n" -" \t\tgeneralmente `#'.\n" -" HISTIGNORE\tUna lista separada por dos puntos de patrones usados\n" -" \t\tpara decidir cuáles órdenes se deben guardar en la lista de\n" -" \t\thistoria.\n" - -#: builtins.c:1803 -#, fuzzy +" \t\ty la sustitución rápida. El primer carácter es el carácter de\n" +" \t\tsustitución de historia, generalmente `!'. El segundo es el\n" +" \t\tcarácter de `sustitución rápida', generalmente `^'. El tercero\n" +" \n" +" \t\tes el carácter `comentario de historia', generalmente `#'.\n" +" HISTIGNORE\tUna lista separada por dos puntos de patrones\n" +" \t\tutilizados para decidir qué órdenes se deben guardar en\n" +" \t\tel listado histórico.\n" + +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5429,35 +5463,36 @@ msgid "" msgstr "" "Agrega directorios a la pila.\n" " \n" -" Agrega un directorio al tope de la pila de directorios, o rota\n" -" la pila, haciendo que el nuevo tope de la pila sea el\n" +" Agrega un directorio por la parte superior de la pila de directorios\n" +" o rota la pila, haciendo que el nuevo elemento superior de la pila sea " +"el\n" " directorio de trabajo actual. Sin argumentos, intercambia\n" -" los dos directorios del tope.\n" +" los dos directorios de la parte superior.\n" " \n" " Opciones:\n" " -n\tsuprime el cambio normal de directorio cuando se agregan\n" -" \tdirectorios a la pila, así sólo se manipula la pila.\n" +" \t\tdirectorios a la pila, así sólo se manipula la pila.\n" " \n" " Argumentos:\n" " +N\tRota la pila para que el N-ésimo directorio (contando\n" -" \tde la izquierda de la lista mostrada por `dirs',comenzando\n" -" \tdesde cero) esté en el tope.\n" +" \t\tdesde la izquierda de la lista mostrada por `dirs', comenzando\n" +" \t\tdesde cero) esté en la parte superior.\n" " \n" -" -N\tRota la pila para que el N-ésimo directorio (contando\n" -" \tde la derecha de la lista mostrada por `dirs', comenzando\n" -" \tdesde cero) esté en el tope.\n" +" -N\tRota la pila para que el N-ésimo directorio (contando desde\n" +" \t\tla derecha de la lista mostrada por `dirs', comenzando\n" +" \t\tdesde cero) esté en la parte superior.\n" " \n" -" dir\tagrega DIR a la pila de directorios en el tope,\n" -" \thaciéndolo el nuevo directorio de trabajo actual.\n" +" dir\tAgrega DIR la pila de directorios por la parte superior, " +"haciendo\n" +" \t\tde él el nuevo directorio de trabajo actual.\n" " \n" " La orden interna `dirs' muestra la pila de directorios.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione un argumento inválido o\n" -" falle el cambio de directorio." +" Devuelve correcto a menos que se proporcione un argumento\n" +" inválido o falle el cambio de directorio." -#: builtins.c:1837 -#, fuzzy +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5486,33 +5521,32 @@ msgstr "" "Borra directorios de la pila.\n" " \n" " Borra entradas de la pila de directorios. Sin argumentos,\n" -" borra el directorio del tope de la pila, y cambia al\n" -" nuevo directorio tope.\n" +" borra el directorio del tope de la pila, y cambia al nuevo\n" +" directorio tope.\n" " \n" " Opciones:\n" -" -n\tsuprime el cambio normal de directorio cuando se borran\n" -" \tdirectorios de la pila, así sólo se manipula la pila.\n" +" -n\tSuprime el cambio normal de directorio cuando se borran\n" +" \t\tdirectorios de la pila; así sólo se manipula la pila.\n" " \n" " Argumentos:\n" " \n" -" +N\tBorra la N-ésima entrada contando de la izquierda de\n" -" \tla lista mostrada por `dirs', comenzando desde cero.\n" -" \tPor ejemplo: `popd +0' borra el primer directorio, `popd +1'\n" -" \tel segundo.\n" +" +N\tBorra la N-ésima entrada contando desde la izquierda de\n" +" \t\tla lista mostrada por `dirs', comenzando por cero. Por\n" +" \t\tejemplo: `popd +0' borra el primer directorio, `popd +1'\n" +" \t\tel segundo.\n" " \n" -" -N\tBorra la N-ésima entrada contando de la derecha de\n" -" \tla lista mostrada por `dirs', comenzando desde cero.\n" -" \tPor ejemplo: `popd -0' borra el último directorio, `popd -1'\n" -" \tel penúltimo.\n" +" -N\tBorra la N-ésima entrada contando desde la derecha de\n" +" \t\tla lista mostrada por `dirs', comenzando por cero. Por\n" +" \t\tejemplo: `popd -0' borra el último directorio, `popd -1'\n" +" \t\tel penúltimo.\n" " \n" -" La orden interna `dirs' muestra el contenido de la pila.\n" +" La orden interna `dirs' muestra la pila de directorios.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione un argumento inválido o\n" -" falle el cambio de directorio." +" Devuelve correcto a menos que se proporcione un\n" +" argumento inválido o falle el cambio de directorio." -#: builtins.c:1867 -#, fuzzy +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5547,35 +5581,34 @@ msgstr "" " la lista con la orden `popd'.\n" " \n" " Opciones:\n" -" \n" " -c\tlimpia la pila de directorios, eliminando todos sus elementos.\n" " -l\tno muestra versiones con prefijo de tilde de los directorios\n" -" \trelativos a su directorio inicial.\n" +" \t\trelativos a su directorio inicial.\n" " -p\tmuestra la pila de directorios con una entrada por línea\n" " -v\tmuestra la pila de directorios con una entrada por línea con\n" -" \tsu posición en la pila como prefijo\n" +" \t\tsu posición en la pila como prefijo\n" " \n" -" Argumentos: +N\tmuestra la N-ésima entrada contando desde la " -"izquierda de la lista\n" -" \tmostrada por dirs cuando se invoca sin opciones,\n" -" \tempezando de cero.\n" +" Argumentos:\n" +" +N\tmuestra la N-ésima entrada contando desde\n" +" \t\tla izquierda de la lista mostrada por dirs cuando se invoca sin\n" +" \t\topciones, empezando de cero.\n" " \n" -" -N\tmuestra la N-ésima entrada contando desde la derecha de la lista\n" -" \tmostrada por dirs cuando se invoca sin opciones,\n" -" \tempezando de cero.\n" +" -N\tmuestra la N-ésima entrada contando desde la izquierda de la\n" +" \t\tlista mostrada por dirs cuando se invoca sin opciones, empezando\n" +" \t\tdesde cero.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito, a menos que se proporcione una opción inválida o\n" +" Devuelve correcto, a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5602,11 +5635,10 @@ msgstr "" " -u\tdesactiva (borra) cada NOMBRE_OPCIÓN\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito si se activa NOMBRE_OPCIÓN; falla si se proporciona\n" +" Devuelve correcto si se activa NOMBRE_OPCIÓN; falla si se proporciona\n" " una opción inválida o NOMBRE_OPCIÓN está desactivado." -#: builtins.c:1919 -#, fuzzy +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5663,16 +5695,22 @@ msgstr "" " \n" " %b\texpande las secuencias de escape de barra invertida en\n" " el argumento correspondiente\n" -" %q\tcita el argumento de tal forma que se puede reusar como\n" +" %q\tcita el argumento de tal forma que se pueda reutilizar como\n" " entrada del shell.\n" " %(fmt)T muestra la cadena fecha hora resultante de usar FMT como\n" " una cadena de formato para strftime(3)\n" " \n" +" El formato se reutiliza según sea necesario para consumir todos los\n" +" argumentos. Si hay menos argumentos de los que el formato requiere,\n" +" las especificaciones de formato adicionales se comportan como si un " +"valor\n" +" cero o una cadena nula, lo que sea apropiado, se hubiera proporcionado.\n" +" \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" " suceda un error de escritura o de asignación." -#: builtins.c:1953 +#: builtins.c:1961 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5691,10 +5729,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5708,24 +5750,24 @@ msgstr "" " \n" " Opciones:\n" " -p\tmuestra las especificaciones de completado existentes en formato\n" -" \treusable\n" -" -r\tborra una especificación de completado para cada NOMBRE,\n" -" \to, si no se proporcionan NOMBREs, todas las especificaciones\n" -" \tde completado\n" +" \t\treusable\n" +" -r\tborra una especificación de completado para cada NOMBRE o,\n" +" \t\tsi no se proporcionan NOMBREs, todas las especificaciones\n" +" \t\tde completado\n" " -D\taplica los completados y acciones por defecto para las órdenes\n" -" \tsin ninguna especificación de completado definida\n" +" \t\tsin ninguna especificación de completado definida\n" " -E\taplica los completados y acciones para órdenes \"vacías\" --\n" -" \tcuando se intenta completar en una línea en blanco\n" +" \t\tcuando se intenta completar en una línea en blanco\n" " \n" -" Cuando se intenta el completado, las acciones se aplican en el orden en\n" -" que se enlistan las opciones de letra mayúscula antes indicadas. La\n" +" Cuando se intenta el completado, las acciones se aplican en el orden\n" +" en que se listan las opciones de letra mayúscula antes indicadas. La\n" " opción -D tiene precedencia sobre -E.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5744,10 +5786,11 @@ msgstr "" " las coincidencias contra PALABRA.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:1996 +#: builtins.c:2006 +#, fuzzy msgid "" "Modify or display completion options.\n" " \n" @@ -5762,6 +5805,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5780,32 +5824,30 @@ msgstr "" "Modifica o muestra las opciones de completado.\n" " \n" " Modifica las opciones de completado para cada NOMBRE, o, si no se\n" -" proporcionan NOMBREs, el completado actualmente en ejecución. Si no se\n" -" proporcionan OPCIONes, muestra las opciones de completado para cada\n" -" NOMBRE o la especificación de completado actual.\n" +" proporcionan NOMBREs, el completado actualmente en ejecución. Si no\n" +" se proporcionan OPCIONes, muestra las opciones de completado para\n" +" cada NOMBRE o la especificación de completado actual.\n" +" \n" " Opciones:\n" -" \t-o opción\tEstablece la opción de completado OPCIÓN\n" -" \t\tpara cada NOMBRE\n" +" \t-o opción\tEstablece la opción de completado OPCIÓN para cada NOMBRE\n" " \t-D\t\tCambia las opciones para el completado de orden \"por defecto\"\n" " \t-E\t\tCambia las opciones para el completado de orden \"vacía\"\n" " \n" -" Si usa `+o' en lugar de `-o' desactiva la opción especificada.\n" +" Si se usa `+o' en lugar de `-o', desactiva la opción especificada.\n" " \n" " Argumentos:\n" " \n" " Cada NOMBRE se refiere a una orden para la cual se definió previamente\n" " una especificación de completado usando la orden interna `complete'.\n" -" Si no se proporcionan NOMBREs, se debe llamar a compopt desde una " -"función\n" -" que genere completados, y se modifican las opciones para ese generador\n" -" de completados en ejecución.\n" +" Si no se proporcionan NOMBREs, se debe llamar a ‘compopt’ desde una\n" +" función que genere completados actualmente y se modifican las opciones\n" +" para ese generador de completados actualmente en ejecución.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o\n" -" el NOMBRE no tenga una especificación de completado definida." +" Devuelve correcto a menos que se proporcione una opción inválida o\n" +" NOMBRE no tenga una especificación de completado definida." -#: builtins.c:2026 -#, fuzzy +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5846,29 +5888,32 @@ msgid "" "or\n" " not an indexed array." msgstr "" -"Lee líneas de un fichero y las guarda en una variable de matriz indizada.\n" +"Lee líneas de un fichero y las guarda en una variable de matriz indexada.\n" " \n" " Lee líneas de la entrada estándar y las guarda en la variable de matriz\n" -" indizada MATRIZ, o desde el descriptor de fichero DF si se proporciona\n" +" indexada MATRIZ, o desde el descriptor de fichero DF si se proporciona\n" " la opción -u. La variable MAPFILE es la MATRIZ por defecto.\n" " \n" " Opciones:\n" -" -n cuenta\tCopia hasta CUENTA líneas. Si CUENTA es 0, se copian\n" -" \ttodas las líneas.\n" +" -d delim\tUtiliza DELIM para finalizar las líneas en lugar de nueva " +"línea\n" +" -n cuenta\tCopia hasta CUENTA líneas. Si CUENTA es 0, se copian " +"todas\n" " -O origen\tComienza a asignar a MATRIZ en el índice ORIGEN. El\n" -" \tíndice por defecto es 0.\n" -" -s cuenta \tDescarta las primeras CUENTA líneas leídas.\n" -" -t\t\tBorra la nueva línea final de cada línea leída.\n" -" -u df\t\tLee líneas del descriptor de fichero DF en lugar de la\n" -" \tentrada estándar.\n" +" \t\t\tíndice por defecto es 0.\n" +" -s cuenta\tDescarta las primeras CUENTA líneas leídas.\n" +" -t\tBorra el DELIM final de cada línea leída (nuea línea por " +"defecto).\n" +" -u df\tLee líneas del descriptor de fichero DF en lugar de la\n" +" \t\t\tentrada estándar.\n" " -C llamada\tEvalúa LLAMADA cada vez que se leen QUANTUM líneas.\n" " -c quantum\tEspecifica el número de líneas a leer entre cada\n" -" \tllamada a LLAMADA.\n" +" \t\t\tllamada a LLAMADA.\n" " \n" " Argumentos:\n" -" MATRIZ\t\tNombre de variable de matriz a usar para guardar datos.\n" +" MATRIZ\tNombre de variable de matriz a usar para guardar datos.\n" " \n" -" Si se proporciona -C sin -c, el quantum por defecto es 5000. Cuando\n" +" Si se proporciona -C sin -c, el quantum por defecto es 5000. Cuando\n" " se evalúa LLAMADA, se proporciona el índice del siguiente elemento\n" " de la matriz a asignar como un argumento adicional.\n" " \n" @@ -5876,10 +5921,10 @@ msgstr "" " antes de usarla para asignación.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o\n" -" la MATRIZ sea de sólo lectura o no sea una matriz indizada." +" Devuelve correcto a menos que se proporcione una opción inválida o\n" +" la MATRIZ sea de sólo lectura o no sea una matriz indexada." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5887,2931 +5932,4 @@ msgid "" msgstr "" "Lee líneas de un fichero en una variable de matriz.\n" " \n" -" Un sinónimo de `mapfile'." - -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "true" - -#~ msgid "false" -#~ msgstr "false" - -# Esto podría ser "veces". Mirar el contexto. sv -# No es veces. times es una orden interna del shell. cfuga -#~ msgid "times" -#~ msgstr "times" - -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." - -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" - -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Licencia GPLv2+: GPL de GNU versión 2 o posterior \n" - -#~ msgid "wait [pid]" -#~ msgstr "wait [pid]" - -#~ msgid "" -#~ ". With EXPR, returns\n" -#~ " " -#~ msgstr "" -#~ ". Con EXPR, devuelve\n" -#~ " " - -#~ msgid "" -#~ "; this extra information can be used to\n" -#~ " provide a stack trace.\n" -#~ " \n" -#~ " The value of EXPR indicates how many call frames to go back before " -#~ "the\n" -#~ " current one; the top frame is frame 0." -#~ msgstr "" -#~ "; esta información adicional se puede usar para\n" -#~ " proveer un rastreo de pila.\n" -#~ " \n" -#~ " El valor de EXPR indica cuántos marcos de llamada retroceder antes " -#~ "del\n" -#~ " marco actual; el marco superior es el marco 0." - -#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: no se pueden reasignar %lu bytes (%lu bytes asignados)" - -#~ msgid "xrealloc: cannot allocate %lu bytes" -#~ msgstr "xrealloc: no se pueden reasignar %lu bytes" - -#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "" -#~ "xrealloc: %s:%d: no se pueden reasignar %lu bytes (%lu bytes asignados)" - -#~ msgid " " -#~ msgstr " " - -#~ msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," -#~ msgstr "Sin EXPR, returns devuelve \"$linea $nombrefichero\". Con EXPR," - -#~ msgid "returns \"$line $subroutine $filename\"; this extra information" -#~ msgstr "devuelve \"$linea $subrutina $nombrefichero\"; esta información" - -#~ msgid "can be used used to provide a stack trace." -#~ msgstr "adicional se puede usar para proveer un volcado de pila." - -#~ msgid "" -#~ "The value of EXPR indicates how many call frames to go back before the" -#~ msgstr "" -#~ "El valor de EXPR indica cuántos marcos de llamada se debe retroceder" - -#~ msgid "current one; the top frame is frame 0." -#~ msgstr "antes del actual; el marco inicial es el marco 0." - -#~ msgid "%s: invalid number" -#~ msgstr "%s: número inválido" - -#~ msgid "Shell commands matching keywords `" -#~ msgstr "Órdenes del shell que coinciden con las palabras `" - -#~ msgid "Display the list of currently remembered directories. Directories" -#~ msgstr "" -#~ "Muestra la lista de directorios actualmente grabados. Los directorios" - -#~ msgid "find their way onto the list with the `pushd' command; you can get" -#~ msgstr "se guardan en la lista con la orden `pushd'; pueden ir saliendo de" - -#~ msgid "back up through the list with the `popd' command." -#~ msgstr "la lista con la orden `popd'." - -#~ msgid "" -#~ "The -l flag specifies that `dirs' should not print shorthand versions" -#~ msgstr "" -#~ "La opción -l especifica que `dirs' no debe mostrar versiones abreviadas" - -#~ msgid "" -#~ "of directories which are relative to your home directory. This means" -#~ msgstr "" -#~ "de los directorios que son relativos a su directorio inicial. Esto " -#~ "significa" - -#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" -#~ msgstr "que `~/bin' se mostrará como `/homes/bfox/bin'. La opción -v" - -#~ msgid "causes `dirs' to print the directory stack with one entry per line," -#~ msgstr "" -#~ "causa que `dirs' imprima la pila de directorios con una entrada por línea," - -#~ msgid "" -#~ "prepending the directory name with its position in the stack. The -p" -#~ msgstr "" -#~ "anteponiendo la posición en la pila al nombre del directorio. La opción" - -#~ msgid "flag does the same thing, but the stack position is not prepended." -#~ msgstr "-p hace lo mismo, pero no antepone la posición en la pila." - -#~ msgid "" -#~ "The -c flag clears the directory stack by deleting all of the elements." -#~ msgstr "" -#~ "La opción -c limpia la pila de directorios borrando todos sus elementos." - -#~ msgid "" -#~ "+N displays the Nth entry counting from the left of the list shown by" -#~ msgstr "" -#~ "+N muestra la N-ésima entrada contando desde la izquierda de la lista" - -#~ msgid " dirs when invoked without options, starting with zero." -#~ msgstr "" -#~ " mostrada por dirs cuando se invoca sin opciones, empezando de cero." - -#~ msgid "" -#~ "-N displays the Nth entry counting from the right of the list shown by" -#~ msgstr "" -#~ "-N muestra la N-ésima entrada contando desde la derecha de la lista" - -#~ msgid "Adds a directory to the top of the directory stack, or rotates" -#~ msgstr "Agrega un directorio al tope de la pila de directorios, o rota" - -#~ msgid "the stack, making the new top of the stack the current working" -#~ msgstr "la pila, haciendo que el nuevo tope de la pila sea el directorio de" - -#~ msgid "directory. With no arguments, exchanges the top two directories." -#~ msgstr "" -#~ "trabajo actual. Sin argumentos, intercambia los dos directorios del tope." - -#~ msgid "+N Rotates the stack so that the Nth directory (counting" -#~ msgstr "+N Rota la pila para que el N-ésimo directorio (contando" - -#~ msgid " from the left of the list shown by `dirs', starting with" -#~ msgstr "" -#~ " de la izquierda de la lista mostrada por `dirs', comenzando desde" - -#~ msgid " zero) is at the top." -#~ msgstr " cero) esté en el tope." - -#~ msgid "-N Rotates the stack so that the Nth directory (counting" -#~ msgstr "-N Rota la pila para que el N-ésimo directory (contando" - -#~ msgid " from the right of the list shown by `dirs', starting with" -#~ msgstr "" -#~ " de la derecha de la lista mostrada por `dirs', comenzando desde" - -#~ msgid "-n suppress the normal change of directory when adding directories" -#~ msgstr "" -#~ "-n suprime el cambio normal de directorio cuando se agregan directorios" - -#~ msgid " to the stack, so only the stack is manipulated." -#~ msgstr " a la pila, así sólo se manipula la pila." - -#~ msgid "dir adds DIR to the directory stack at the top, making it the" -#~ msgstr "dir agrega DIR a la pila de directorios en el tope, haciéndolo el" - -#~ msgid " new current working directory." -#~ msgstr " nuevo directorio de trabajo actual." - -#~ msgid "You can see the directory stack with the `dirs' command." -#~ msgstr "Puede ver la pila de directorios con la orden `dirs'." - -#~ msgid "Removes entries from the directory stack. With no arguments," -#~ msgstr "Borra entradas de la pila de directorios. Sin argumentos," - -#~ msgid "removes the top directory from the stack, and cd's to the new" -#~ msgstr "borra el directorio del tope de la pila, y cambia al nuevo" - -#~ msgid "+N removes the Nth entry counting from the left of the list" -#~ msgstr "" -#~ "+N borra la N-ésima entrada contando desde la izquierda de la lista" - -#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" -#~ msgstr "" -#~ " mostrada por `dirs', comenzando desde cero. Por ejemplo: `popd +0'" - -#~ msgid " removes the first directory, `popd +1' the second." -#~ msgstr " borra el primer directorio, `popd +1' el segundo." - -#~ msgid "-N removes the Nth entry counting from the right of the list" -#~ msgstr "-N borra la N-ésima entrada contando desde la derecha de la lista" - -#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" -#~ msgstr "" -#~ " mostrada por `dirs', comenzando desde cero. Por ejemplo: `popd -0'" - -#~ msgid " removes the last directory, `popd -1' the next to last." -#~ msgstr " borra el último directorio, `popd -1' el penúltimo." - -#~ msgid "" -#~ "-n suppress the normal change of directory when removing directories" -#~ msgstr "" -#~ "-n suprime el cambio normal de directorio cuando se borran directorios" - -#~ msgid " from the stack, so only the stack is manipulated." -#~ msgstr " de la pila, así sólo se manipula la pila." - -#~ msgid "allocated" -#~ msgstr "asignado" - -#~ msgid "freed" -#~ msgstr "liberado" - -#~ msgid "requesting resize" -#~ msgstr "solicitando cambio de tamaño" - -#~ msgid "just resized" -#~ msgstr "terminó cambio de tamaño" - -#~ msgid "bug: unknown operation" -#~ msgstr "bicho: operación desconocida" - -#~ msgid "malloc: watch alert: %p %s " -#~ msgstr "malloc: alerta de observación: %p %s " - -#~ msgid "" -#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" -#~ " break N levels." -#~ msgstr "" -#~ "Sale de un ciclo FOR, WHILE o UNTIL. Si se especifica N,\n" -#~ " sale N niveles." - -#~ msgid "" -#~ "Run a shell builtin. This is useful when you wish to rename a\n" -#~ " shell builtin to be a function, but need the functionality of the\n" -#~ " builtin within the function itself." -#~ msgstr "" -#~ "Ejecuta una orden interna del shell. Esto es útil cuando desea " -#~ "renombrar\n" -#~ " una orden interna del shell para que sea una función, pero necesita\n" -#~ " la funcionalidad de la orden interna dentro de la misma función." - -#~ msgid "" -#~ "Print the current working directory. With the -P option, pwd prints\n" -#~ " the physical directory, without any symbolic links; the -L option\n" -#~ " makes pwd follow symbolic links." -#~ msgstr "" -#~ "Muestra el directorio de trabajo actual. Con la opción -P, pwd muestra\n" -#~ " el directorio físico, sin enlaces simbólicos; la opción -L hace que\n" -#~ " pwd siga los enlaces simbólicos." - -#~ msgid "Return a successful result." -#~ msgstr "Devuelve un resultado exitoso." - -# es usado -> se usa. sv -# es impresa -> se muestra una cadena em+ -# "Si se da la opción -V o -v,..." sv -# De acuerdo. cfuga -#~ msgid "" -#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell\n" -#~ " function called `ls', and you wish to call the command `ls', you can\n" -#~ " say \"command ls\". If the -p option is given, a default value is " -#~ "used\n" -#~ " for PATH that is guaranteed to find all of the standard utilities. " -#~ "If\n" -#~ " the -V or -v option is given, a string is printed describing " -#~ "COMMAND.\n" -#~ " The -V option produces a more verbose description." -#~ msgstr "" -#~ "Ejecuta COMMAND con ARGS ignorando las funciones del shell. Si tiene " -#~ "una\n" -#~ " función de shell llamada `ls', y desea llamar a la orden `ls', puede\n" -#~ " decir \"command ls\". Si se da la opción -p, se usa un valor por\n" -#~ " defecto para PATH que garantiza encontrar todas las herramientas\n" -#~ " estándar. Si se da la opción -V o -v, se muestra una cadena que\n" -#~ " describe COMMAND. La opción -V produce una descripción más detallada." - -# apaga -> desactiva em+ -# Corregido en toda la traducción. cfuga -#~ msgid "" -#~ "Declare variables and/or give them attributes. If no NAMEs are\n" -#~ " given, then display the values of variables instead. The -p option\n" -#~ " will display the attributes and values of each NAME.\n" -#~ " \n" -#~ " The flags are:\n" -#~ " \n" -#~ " -a\tto make NAMEs arrays (if supported)\n" -#~ " -f\tto select from among function names only\n" -#~ " -F\tto display function names (and line number and source file name " -#~ "if\n" -#~ " \tdebugging) without definitions\n" -#~ " -i\tto make NAMEs have the `integer' attribute\n" -#~ " -r\tto make NAMEs readonly\n" -#~ " -t\tto make NAMEs have the `trace' attribute\n" -#~ " -x\tto make NAMEs export\n" -#~ " \n" -#~ " Variables with the integer attribute have arithmetic evaluation (see\n" -#~ " `let') done when the variable is assigned to.\n" -#~ " \n" -#~ " When displaying values of variables, -f displays a function's name\n" -#~ " and definition. The -F option restricts the display to function\n" -#~ " name only.\n" -#~ " \n" -#~ " Using `+' instead of `-' turns off the given attribute instead. " -#~ "When\n" -#~ " used in a function, makes NAMEs local, as with the `local' command." -#~ msgstr "" -#~ "Declara variables y/o les asigna atributos. Si no se propociona\n" -#~ " ningún NAME, entonces muestra los valores de las variables.\n" -#~ " La opción -p mostrará los atributos y valores de cada NAME.\n" -#~ " \n" -#~ " Las opciones son:\n" -#~ " \n" -#~ " -a\thace a los NAMEs matrices (si tiene soporte)\n" -#~ " -f\tselecciona solamente nombres de funciones\n" -#~ " -F\tmuestra nombres de funciones (y número de línea y nombre de\n" -#~ " \tfichero fuente si se está depurando) sin definiciones\n" -#~ " -i\tasigna a los NAMEs el atributo `integer'\n" -#~ " -r\thace a los NAMEs de sólo lectura\n" -#~ " -t\tasigna a los NAMEs el atributo `trace'\n" -#~ " -x\thace a los NAMEs exportables\n" -#~ " \n" -#~ " Las variables con el atributo integer se les evalúa aritméticamente\n" -#~ " (vea `let') cuando se asigna la variable.\n" -#~ " \n" -#~ " Cuando se muestran los valores de las variables, -f muestra\n" -#~ " el nombre de una función y su definición. La opción -F restringe\n" -#~ " a mostrar solamente el nombre de la función.\n" -#~ " \n" -#~ " Al usar `+' en lugar de `-' desactiva el atributo dado. Cuando se\n" -#~ " usa en una función, hace a los NAMEs locales, como sucede con la\n" -#~ " orden `local'." - -#~ msgid "Obsolete. See `declare'." -#~ msgstr "Obsoleto. Ver `declare'." - -# y le da -> y le asigna em+ -# sólo se puede usar. sv -# tenga un alcance visible -> sea visible solo para la función y sus los hijos em+ -# De acuerdo. cfuga -#~ msgid "" -#~ "Create a local variable called NAME, and give it VALUE. LOCAL\n" -#~ " can only be used within a function; it makes the variable NAME\n" -#~ " have a visible scope restricted to that function and its children." -#~ msgstr "" -#~ "Crea una variable local llamada NAME, y le asigna un VALUE. LOCAL\n" -#~ " sólo se puede usar dentro de una función; hace que la variable NAME\n" -#~ " solamente sea visible a esa función y sus hijos." - -#~ msgid "" -#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." -#~ msgstr "" -#~ "Muestra los ARGs. Si se especifica -n, se elimina el carácter\n" -#~ " de fin de línea." - -# se puede usar. sv -# Se muestra una lista de órdenes internas. sv -# Hay muchos más mensajes que están en "pasiva" que quedarían mejor en -# forma "reflexiva". No comento más y te dejo que los mires despacio. -# Gracias por la observación. cfuga -#~ msgid "" -#~ "Enable and disable builtin shell commands. This allows\n" -#~ " you to use a disk command which has the same name as a shell\n" -#~ " builtin without specifying a full pathname. If -n is used, the\n" -#~ " NAMEs become disabled; otherwise NAMEs are enabled. For example,\n" -#~ " to use the `test' found in $PATH instead of the shell builtin\n" -#~ " version, type `enable -n test'. On systems supporting dynamic\n" -#~ " loading, the -f option may be used to load new builtins from the\n" -#~ " shared object FILENAME. The -d option will delete a builtin\n" -#~ " previously loaded with -f. If no non-option names are given, or\n" -#~ " the -p option is supplied, a list of builtins is printed. The\n" -#~ " -a option means to print every builtin with an indication of whether\n" -#~ " or not it is enabled. The -s option restricts the output to the " -#~ "POSIX.2\n" -#~ " `special' builtins. The -n option displays a list of all disabled " -#~ "builtins." -#~ msgstr "" -#~ "Activa y desactiva las órdenes internas del shell. Esto le permite\n" -#~ " usar una orden del sistema que tenga el mismo nombre que una orden\n" -#~ " interna del shell sin especificar una ruta completa. Si se usa -n, " -#~ "los\n" -#~ " NAMEs se desactivan; de otra forma los NAMEs se activan. Por " -#~ "ejemplo,\n" -#~ " para usar `test' que se encuentra en $PATH en lugar de la versión " -#~ "interna\n" -#~ " del shell, teclee `enable -n test'. En sistemas que soportan\n" -#~ " carga dinámica, se puede usar la opción -f para cargar nuevas " -#~ "órdenes\n" -#~ " internas desde el objeto compartido FILENAME. La opción -d borrará " -#~ "una\n" -#~ " orden interna cargada previamente con -f. Si no se propocionan " -#~ "nombres\n" -#~ " que no sean opciones, o se especifica la opción -p, se muestra una " -#~ "lista\n" -#~ " de órdenes internas. La opción -a es para mostrar cada orden " -#~ "interna\n" -#~ " con una indicación si está o no activada. La opción -s restringe la\n" -#~ " salida a las órdenes internas `especiales' de POSIX.2. La opción -n\n" -#~ " muestra una lista de todas las órdenes internas desactivadas." - -#~ msgid "" -#~ "Read ARGs as input to the shell and execute the resulting command(s)." -#~ msgstr "" -#~ "Lee ARGs como entrada del shell y ejecuta el(los) comando(s) resultantes." - -#~ msgid "" -#~ "Exec FILE, replacing this shell with the specified program.\n" -#~ " If FILE is not specified, the redirections take effect in this\n" -#~ " shell. If the first argument is `-l', then place a dash in the\n" -#~ " zeroth arg passed to FILE, as login does. If the `-c' option\n" -#~ " is supplied, FILE is executed with a null environment. The `-a'\n" -#~ " option means to make set argv[0] of the executed process to NAME.\n" -#~ " If the file cannot be executed and the shell is not interactive,\n" -#~ " then the shell exits, unless the shell option `execfail' is set." -#~ msgstr "" -#~ "Ejecuta FILE, reemplazando este shell con el programa especificado.\n" -#~ " Si no se especifica FILE, las redirecciones toman efecto en este\n" -#~ " shell. Si el primer argumento es `-l' entonces coloca un guión\n" -#~ " en el argumento cero que pasa a FILE, como lo hace login. Si se\n" -#~ " proporciona la opción `-c', se ejecuta FILE con un ambiente nulo.\n" -#~ " La opción `-a' establece el argv[0] del proceso ejecutado a NOMBRE.\n" -#~ " Si no se puede ejecutar el fichero, y el shell no es intercativo,\n" -#~ " entonces el shell termina, a menos que esté activa la opción\n" -#~ " `execfail'." - -#~ msgid "Logout of a login shell." -#~ msgstr "Se desconecta de un shell de entrada." - -#~ msgid "" -#~ "For each NAME, the full pathname of the command is determined and\n" -#~ " remembered. If the -p option is supplied, PATHNAME is used as the\n" -#~ " full pathname of NAME, and no path search is performed. The -r\n" -#~ " option causes the shell to forget all remembered locations. The -d\n" -#~ " option causes the shell to forget the remembered location of each " -#~ "NAME.\n" -#~ " If the -t option is supplied the full pathname to which each NAME\n" -#~ " corresponds is printed. If multiple NAME arguments are supplied " -#~ "with\n" -#~ " -t, the NAME is printed before the hashed full pathname. The -l " -#~ "option\n" -#~ " causes output to be displayed in a format that may be reused as " -#~ "input.\n" -#~ " If no arguments are given, information about remembered commands is " -#~ "displayed." -#~ msgstr "" -#~ "Por cada NOMBRE, se determina la ruta completa de la orden y se graba.\n" -#~ " Si se especifica la opción -p, se usa PATHNAME como la ruta completa\n" -#~ " de NAME, y no se realiza la búsqueda de ruta. La opción -r hace que\n" -#~ " el shell olvide todas las ubicaciones grabadas. La opción -d hace " -#~ "que\n" -#~ " el shell olvide las ubicaciones grabadas de cada NAME. Si se\n" -#~ " proporciona la opción -t se muestra la ruta completa para cada NAME\n" -#~ " correspondiente. Si se proporcionan múltiples argumentos NAME con\n" -#~ " -t, NAME se muestra antes de la ruta completa. La opción -l hace\n" -#~ " que la salida se muestre en un formato que se puede reusar como\n" -#~ " entrada. Si no se proporcionan argumentos, se muestra la " -#~ "información\n" -#~ " de las órdenes grabadas." - -#~ msgid "" -#~ "Display helpful information about builtin commands. If PATTERN is\n" -#~ " specified, gives detailed help on all commands matching PATTERN,\n" -#~ " otherwise a list of the builtins is printed. The -s option\n" -#~ " restricts the output for each builtin command matching PATTERN to\n" -#~ " a short usage synopsis." -#~ msgstr "" -#~ "Muestra información útil sobre las órdenes internas del shell. Si se\n" -#~ " especifica un PATRÓN, proporciona ayuda detallada sobre todas las\n" -#~ " órdenes que coinciden con el PATRÓN, de otra forma se muestra una\n" -#~ " lista de las órdenes internas. La opción -s restringe la salida\n" -#~ " de cada orden interna que concida con el PATRÓN a una breve\n" -#~ " sinopsis de uso." - -#~ msgid "" -#~ "By default, removes each JOBSPEC argument from the table of active jobs.\n" -#~ " If the -h option is given, the job is not removed from the table, but " -#~ "is\n" -#~ " marked so that SIGHUP is not sent to the job if the shell receives a\n" -#~ " SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove " -#~ "all\n" -#~ " jobs from the job table; the -r option means to remove only running " -#~ "jobs." -#~ msgstr "" -#~ "Por defecto, elimina cada argumento JOBSPEC de la tabla de trabajos " -#~ "activos.\n" -#~ " Si se especifica la opción -h, el trabajo no se elimina de la tabla,\n" -#~ " pero se marca de forma que no se envía SIGHUP al trabajo si el shell\n" -#~ " recibe un SIGHUP. La opción -a, cuando no se proporciona JOBSPEC, " -#~ "borra\n" -#~ " todos los trabajos de la tabla de trabajos; la opción -r borra sólo\n" -#~ " los trabajos activos." - -#~ msgid "" -#~ "Causes a function to exit with the return value specified by N. If N\n" -#~ " is omitted, the return status is that of the last command." -#~ msgstr "" -#~ "Causa la salida de una función con el valor de devolución especificado " -#~ "por N.\n" -#~ " Si se omite N, el estado de devolución será el de la última orden." - -#~ msgid "" -#~ "For each NAME, remove the corresponding variable or function. Given\n" -#~ " the `-v', unset will only act on variables. Given the `-f' flag,\n" -#~ " unset will only act on functions. With neither flag, unset first\n" -#~ " tries to unset a variable, and if that fails, then tries to unset a\n" -#~ " function. Some variables cannot be unset; also see readonly." -#~ msgstr "" -#~ "Para cada NAME, se borra la variable o función correspondiente. Al usar\n" -#~ " `-v', unset sólo actuará sobre variables. Al usar la opción `-f',\n" -#~ " unset sólo actuará sobre funciones. Sin ninguna opción, unset " -#~ "primero\n" -#~ " intenta borrar una variable, y si esto falla, entonces intenta " -#~ "borrar\n" -#~ " una función. Algunas variables no se pueden borrar; vea también " -#~ "readonly." - -#~ msgid "" -#~ "NAMEs are marked for automatic export to the environment of\n" -#~ " subsequently executed commands. If the -f option is given,\n" -#~ " the NAMEs refer to functions. If no NAMEs are given, or if `-p'\n" -#~ " is given, a list of all names that are exported in this shell is\n" -#~ " printed. An argument of `-n' says to remove the export property\n" -#~ " from subsequent NAMEs. An argument of `--' disables further option\n" -#~ " processing." -#~ msgstr "" -#~ "Se marcan NAMEs para exportación automática al ambiente de las\n" -#~ " órdenes ejecutadas subsecuentemente. Si se establece la opción -f,\n" -#~ " NAMEs se refieren a funciones. Si no se proporciona ningún NAME,\n" -#~ " o si se proporciona `-p', se muestra una lista de todos los nombres\n" -#~ " que se exportan en este shell. Un argumento `-n' indica eliminar\n" -#~ " la propiedad de exportación para los NAMEs subsecuentes. Un " -#~ "argumento\n" -#~ " `--' desactiva el procesamiento posterior de opciones." - -#~ msgid "" -#~ "The given NAMEs are marked readonly and the values of these NAMEs may\n" -#~ " not be changed by subsequent assignment. If the -f option is given,\n" -#~ " then functions corresponding to the NAMEs are so marked. If no\n" -#~ " arguments are given, or if `-p' is given, a list of all readonly " -#~ "names\n" -#~ " is printed. The `-a' option means to treat each NAME as\n" -#~ " an array variable. An argument of `--' disables further option\n" -#~ " processing." -#~ msgstr "" -#~ "Los NAMEs dados se marcan como sólo lectura y los valores de esos NAMEs\n" -#~ " no se pueden cambiar por asignaciones posteriores. Si se propociona\n" -#~ " la opción -f, entonces también se marcan las funciones que " -#~ "correspondan\n" -#~ " a los NAMEs. Si no se proporcionan argumentos, o si se especifica\n" -#~ " `-p', se muestra una lista de todos los nombres de sólo lectura.\n" -#~ " La opción `-a' trata cada NAME como una variable de matriz.\n" -#~ " Un argumento `--' desactiva opciones posteriores." - -#~ msgid "" -#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" -#~ " not given, it is assumed to be 1." -#~ msgstr "" -#~ "Los parámetros posicionales de $N+1 ... se renombran a $1 ... Si no se\n" -#~ " proporciona N, se asume que es 1." - -#~ msgid "" -#~ "Suspend the execution of this shell until it receives a SIGCONT\n" -#~ " signal. The `-f' if specified says not to complain about this\n" -#~ " being a login shell if it is; just suspend anyway." -#~ msgstr "" -#~ "Suspende la ejecución de este shell hasta que recibe una señal\n" -#~ " SIGCONT. Si se especifica `-f' indica que no se queje si es\n" -#~ " un shell de login; y se suspende de cualquier forma." - -#~ msgid "" -#~ "Print the accumulated user and system times for processes run from\n" -#~ " the shell." -#~ msgstr "" -#~ "Muestra los tiempos de usuario y de sistema acumulados para los procesos\n" -#~ " ejecutados desde el shell." - -#~ msgid "" -#~ "For each NAME, indicate how it would be interpreted if used as a\n" -#~ " command name.\n" -#~ " \n" -#~ " If the -t option is used, `type' outputs a single word which is one " -#~ "of\n" -#~ " `alias', `keyword', `function', `builtin', `file' or `', if NAME is " -#~ "an\n" -#~ " alias, shell reserved word, shell function, shell builtin, disk " -#~ "file,\n" -#~ " or unfound, respectively.\n" -#~ " \n" -#~ " If the -p flag is used, `type' either returns the name of the disk\n" -#~ " file that would be executed, or nothing if `type -t NAME' would not\n" -#~ " return `file'.\n" -#~ " \n" -#~ " If the -a flag is used, `type' displays all of the places that " -#~ "contain\n" -#~ " an executable named `file'. This includes aliases, builtins, and\n" -#~ " functions, if and only if the -p flag is not also used.\n" -#~ " \n" -#~ " The -f flag suppresses shell function lookup.\n" -#~ " \n" -#~ " The -P flag forces a PATH search for each NAME, even if it is an " -#~ "alias,\n" -#~ " builtin, or function, and returns the name of the disk file that " -#~ "would\n" -#~ " be executed." -#~ msgstr "" -#~ "Para cada NAME, se indica cómo se interpretaría se se usara como\n" -#~ " el nombre de una orden.\n" -#~ " \n" -#~ " Si se usa la opción -t, `type' muestra una sola palabra que es una\n" -#~ " de `alias', `keyword', `function', `builtin', `file' ó `', si NAME\n" -#~ " es un alias, palabra reservada del shell, función del shell, orden\n" -#~ " interna del shell, fichero del disco, o no encontrado, " -#~ "respectivamente.\n" -#~ " \n" -#~ " Si se usa la opción -p, `type' devuelve el nombre del fichero del\n" -#~ " sistema que sería ejecutado, o nada, si `type -t NAME' no devuelve\n" -#~ " `file'.\n" -#~ " \n" -#~ " Si se usa la opción -a, `type' muestra todos los lugares que " -#~ "contienen\n" -#~ " un ejecutable llamado `file'. Esto incluye a aliases, órdenes\n" -#~ " internas, y funciones, si y solo si no se usa la opción -p.\n" -#~ " \n" -#~ " La opción -f suprime la búsqueda de funciones de shell.\n" -#~ " \n" -#~ " La opción -P fuerza una búsqueda en PATH por cada NAME, aún si es un\n" -#~ " alias, orden interna, o función, y devuelve el nombre del fichero " -#~ "del\n" -#~ " disco que se puede ejecutar." - -#~ msgid "" -#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if\n" -#~ " `-S' is supplied, the current value of the mask is printed. The `-" -#~ "S'\n" -#~ " option makes the output symbolic; otherwise an octal number is " -#~ "output.\n" -#~ " If `-p' is supplied, and MODE is omitted, the output is in a form\n" -#~ " that may be used as input. If MODE begins with a digit, it is\n" -#~ " interpreted as an octal number, otherwise it is a symbolic mode " -#~ "string\n" -#~ " like that accepted by chmod(1)." -#~ msgstr "" -#~ "La máscara de creación de ficheros se establece a MODE. Si se omite " -#~ "MODE,\n" -#~ " o si se proporciona `-S', se muestra el valor actual de la máscara. " -#~ "La\n" -#~ " opción `-S' hace la salida simbólica; de otra forma la salida es un\n" -#~ " número octal. Si se proporciona `-p', y se omite MODE, la salida es\n" -#~ " en una forma que se puede usar como entrada. Si MODE empieza con un\n" -#~ " dígito, se interpreta como un número octal, de otra forma es una " -#~ "cadena\n" -#~ " de modo simbólico como la que acepta chmod(1)." - -#~ msgid "" -#~ "Wait for the specified process and report its termination status. If\n" -#~ " N is not given, all currently active child processes are waited for,\n" -#~ " and the return code is zero. N is a process ID; if it is not given,\n" -#~ " all child processes of the shell are waited for." -#~ msgstr "" -#~ "Espera al proceso especificado y reporta su estado final. Si no se\n" -#~ " proporciona N, espera a todos los procesos hijo activos actualmente,\n" -#~ " y el código de devolución es cero. N es un ID de proceso; si no se\n" -#~ " proporciona, se espera a todos los procesos hijo del shell." - -#~ msgid "" -#~ "Create a simple command invoked by NAME which runs COMMANDS.\n" -#~ " Arguments on the command line along with NAME are passed to the\n" -#~ " function as $0 .. $n." -#~ msgstr "" -#~ "Crea una orden simple invocada por NAME que ejecuta COMMMANDS.\n" -#~ " Se pasan a la función los argumentos en la línea de órdenes\n" -#~ " junto con NAME como $0 .. $n." - -#~ msgid "" -#~ "Toggle the values of variables controlling optional behavior.\n" -#~ " The -s flag means to enable (set) each OPTNAME; the -u flag\n" -#~ " unsets each OPTNAME. The -q flag suppresses output; the exit\n" -#~ " status indicates whether each OPTNAME is set or unset. The -o\n" -#~ " option restricts the OPTNAMEs to those defined for use with\n" -#~ " `set -o'. With no options, or with the -p option, a list of all\n" -#~ " settable options is displayed, with an indication of whether or\n" -#~ " not each is set." -#~ msgstr "" -#~ "Cambia los valores de las variables que controlan conductas opcionales.\n" -#~ " La opción -s activa (define) cada OPTNAME; la opción -u desactiva\n" -#~ " cada OPTNAME. La opción -q suprime la salida; el estado de salida\n" -#~ " indica si cada OPTNAME se definió o no. La opción -o restringe\n" -#~ " que OPTNAMEs sean aquéllos definidos para usarse con `set -o'.\n" -#~ " Sin opciones, o con la opción -p, se muestra una lista de todas\n" -#~ " las opciones definibles, con una indicación si están o no activas." - -#~ msgid "" -#~ "For each NAME, specify how arguments are to be completed.\n" -#~ " If the -p option is supplied, or if no options are supplied, " -#~ "existing\n" -#~ " completion specifications are printed in a way that allows them to " -#~ "be\n" -#~ " reused as input. The -r option removes a completion specification " -#~ "for\n" -#~ " each NAME, or, if no NAMEs are supplied, all completion " -#~ "specifications." -#~ msgstr "" -#~ "Por cada NAME, especifica cómo se deben completar los argumentos.\n" -#~ " Si se proporciona la opción -p, o si no se proporcionan opciones, se\n" -#~ " muestran las especificaciones existentes de completado en una forma\n" -#~ " que permite que se reusen como entrada. La opción -r borra una\n" -#~ " especificación de completado para cada NAME, o, si no se proporciona\n" -#~ " ningún NAMEs, todas las especificaciones de completado." - -#~ msgid "Missing `}'" -#~ msgstr "Faltan `}'" - -#~ msgid "brace_expand> " -#~ msgstr "expansión_llave> " - -# ¿ a qué se refiere ? em+ -# También podría ser la orden de tipo desconocido. sv -# Tiene razón Santiago. Las órdenes se guardan en matrices de caracteres -# en bash. Si bash intenta borrar uno de estos comandos y el tipo del dato -# NO es matriz de caracter, emitiría este mensaje. cfuga -#~ msgid "Attempt to free unknown command type `%d'.\n" -#~ msgstr "Intentando liberar la orden de tipo desconocido `%d'.\n" - -#~ msgid "Report this to %s\n" -#~ msgstr "Comunique esto a %s\n" - -#~ msgid "Stopping myself..." -#~ msgstr "Deteniéndome..." - -#~ msgid "Tell %s to fix this someday.\n" -#~ msgstr "Decir a %s que arregle esto algún día.\n" - -#~ msgid "execute_command: bad command type `%d'" -#~ msgstr "execute_command: tipo de orden erróneo `%d'" - -#~ msgid "real\t" -#~ msgstr "real\t" - -#~ msgid "user\t" -#~ msgstr "usuario\t" - -#~ msgid "sys\t" -#~ msgstr "sistema\t" - -#~ msgid "" -#~ "real\t0m0.00s\n" -#~ "user\t0m0.00s\n" -#~ "sys\t0m0.00s\n" -#~ msgstr "" -#~ "real\t0m0.00s\n" -#~ "usuario\t0m0.00s\n" -#~ "sistema\t0m0.00s\n" - -#~ msgid "cannot duplicate fd %d to fd 1: %s" -#~ msgstr "no se puede duplicar el df %d al df 1: %s" - -#~ msgid "%s: output redirection restricted" -#~ msgstr "%s: la redirección de salida está restringida" - -#~ msgid "Out of memory!" -#~ msgstr "¡Memoria agotada!" - -#~ msgid "You have already added item `%s'\n" -#~ msgstr "Ya se había añadido el elemento `%s'\n" - -# Han sido introducidos o quizá , Vd, introdujo em+ -#~ msgid "You have entered %d (%d) items. The distribution is:\n" -#~ msgstr "Introdujo %d (%d) elementos. La distribución es:\n" - -#~ msgid "%s: bg background job?" -#~ msgstr "%s: ¿bg trabajo en background?" - -#~ msgid "" -#~ "Redirection instruction from yyparse () '%d' is\n" -#~ "out of range in make_redirection ()." -#~ msgstr "" -#~ "La instrucción de redirección de yyparse () '%d' está fuera de rango en \n" -#~ "make_redirection ()." - -#~ msgid "clean_simple_command () got a command with type %d." -#~ msgstr "clean_simple_command () tiene una orden del tipo %d." - -#~ msgid "got errno %d while waiting for %d" -#~ msgstr "se obtuvo errno %d mientras esperaba a %d" - -# algo por el estilo em+ -#~ msgid "syntax error near unexpected token `%c'" -#~ msgstr "error sintáctico cerca del elemento inesperado `%c'" - -# Por consistencia con mensajes anteriores, sería erróneo (el tipo). sv -# De acuerdo. Corregido. cfuga -#~ msgid "print_command: bad command type `%d'" -#~ msgstr "print_command: tipo de dato de orden `%d' erróneo" - -#~ msgid "cprintf: bad `%%' argument (%c)" -#~ msgstr "cprintf: argumento `%%' erróneo (%c)" - -#~ msgid "option `%s' requires an argument" -#~ msgstr "la opción `%s' requiere un argumento" - -#~ msgid "%s: unrecognized option" -#~ msgstr "%s: la opción no es reconocida" - -#~ msgid "`-c' requires an argument" -#~ msgstr "`-c' requiere un argumento" - -#~ msgid "%s: cannot execute directories" -#~ msgstr "%s: no se pueden ejecutar directorios" - -#~ msgid "Bad code in sig.c: sigprocmask" -#~ msgstr "Código erróneo en sig.c: sigprocmask" - -#~ msgid "%s: bad array subscript" -#~ msgstr "%s: subíndice de matriz erróneo" - -#~ msgid "can't make pipes for process substitution: %s" -#~ msgstr "" -#~ "no se pueden crear las tuberías (pipes) para la sustitución del proceso: %" -#~ "s" - -#~ msgid "reading" -#~ msgstr "leyendo" - -#~ msgid "writing" -#~ msgstr "escribiendo" - -# del proceso em+ -#~ msgid "process substitution" -#~ msgstr "sustitución de proceso" - -#~ msgid "command substitution" -#~ msgstr "sustitución de la orden" - -#~ msgid "Can't reopen pipe to command substitution (fd %d): %s" -#~ msgstr "" -#~ "No se puede reabrir la tubería para la sustitución de la orden (df %d): %s" - -#~ msgid "$%c: unbound variable" -#~ msgstr "$%c: variable desligada" - -#~ msgid "%s: bad arithmetic substitution" -#~ msgstr "%s: sustitución aritmética errónea" - -#~ msgid "-%s: binary operator expected" -#~ msgstr "-%s: se esperaba un operador binario" - -#~ msgid "%s[%s: bad subscript" -#~ msgstr "%s[%s: subíndice erróneo" - -#~ msgid "[%s: bad subscript" -#~ msgstr "[%s: subíndice erróneo" - -# Yo pondría "hay dígitos en dos elementos diferentes de argv". sv -# De acuerdo. cfuga -#~ msgid "digits occur in two different argv-elements.\n" -#~ msgstr "hay dígitos en dos elementos diferentes de argv.\n" - -#~ msgid "option %c\n" -#~ msgstr "opción %c\n" - -#~ msgid "option a\n" -#~ msgstr "opción a\n" - -#~ msgid "option b\n" -#~ msgstr "opción b\n" - -#~ msgid "option c with value `%s'\n" -#~ msgstr "opción c con el valor `%s'\n" - -#~ msgid "?? sh_getopt returned character code 0%o ??\n" -#~ msgstr "?? sh_getopt devolvió el código de carácter 0%o ??\n" - -#~ msgid "non-option ARGV-elements: " -#~ msgstr "elementos de ARGV que no son opciones: " - -#~ msgid "%s: Unknown flag %s.\n" -#~ msgstr "%s: Indicador desconocido %s.\n" - -#~ msgid "Unknown directive `%s'" -#~ msgstr "Directiva desconocida `%s'" - -#~ msgid "%s requires an argument" -#~ msgstr "%s requiere un argumento" - -#~ msgid "%s must be inside of a $BUILTIN block" -#~ msgstr "%s debe estar dentro de un bloque $BUILTIN" - -#~ msgid "%s found before $END" -#~ msgstr "%s encontrado antes de $END" - -#~ msgid "%s already has a function (%s)" -#~ msgstr "%s ya tiene una función (%s)" - -#~ msgid "%s already had a docname (%s)" -#~ msgstr "%s ya tiene un nombre de documento (%s)" - -#~ msgid "%s already has short documentation (%s)" -#~ msgstr "% ya tiene documentación corta (%s)" - -# Si traducimos con la gramática española, probablemente sería: -# ...una definición %s". sv -# De acuerdo. cfuga -#~ msgid "%s already has a %s definition" -#~ msgstr "%s ya tiene una definición %s" - -#~ msgid "mkbuiltins: Out of virtual memory!\n" -#~ msgstr "mkbuiltins: ¡Memoria agotada!\n" - -#~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]" -#~ msgstr "read [-r] [-p prompt] [-a matriz] [-e] [nombre ...]" - -#~ msgid ". filename" -#~ msgstr ". fichero" - -#~ msgid "%[DIGITS | WORD] [&]" -#~ msgstr "%[DÍGITOS | PALABRAS] [&]" - -#~ msgid "variables - Some variable names and meanings" -#~ msgstr "variables - Algunos nombres de variables y sus significados" - -#~ msgid "`alias' with no arguments or with the -p option prints the list" -#~ msgstr "`alias' sin argumentos o con la opción -p muestra la lista" - -#~ msgid "of aliases in the form alias NAME=VALUE on standard output." -#~ msgstr "de aliases en la forma alias NOMBRE=VALOR por la entrada estándar." - -# Más en español sería: se define un alias por cada NOMBRE cuyo VALOR se da. sv -# De acuerdo. cfuga -#~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." -#~ msgstr "" -#~ "De otra manera, se define un alias por cada NOMBRE cuyo VALOR se da." - -#~ msgid "A trailing space in VALUE causes the next word to be checked for" -#~ msgstr "" -#~ "Un espacio final en VALOR causa que la siguiente palabra sea revisada para" - -# Lo mismo de antes: el alias es expandido -> el alias se expande. sv -# De acuerdo. cfuga -#~ msgid "alias substitution when the alias is expanded. Alias returns" -#~ msgstr "la sustitución del alias cuando el alias se expande. Alias devuelve" - -# no alias -> ningún alias. sv -# De acuerdo. cfuga -#~ msgid "true unless a NAME is given for which no alias has been defined." -#~ msgstr "" -#~ "verdadero a menos que para un NOMBRE dado no se haya definido ningún " -#~ "alias." - -#~ msgid "then remove all alias definitions." -#~ msgstr "entonces borra todas las definiciones de alias." - -#~ msgid "Bind a key sequence to a Readline function, or to a macro. The" -#~ msgstr "" -#~ "Asigna una secuencia de teclas a una función Readline, o a una macro. La" - -#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" -#~ msgstr "" -#~ "sintaxis es equivalente a la encontrada en ~/.inputrc, pero debe ser" - -#~ msgid "" -#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." -#~ msgstr "" -#~ "pasada como un solo argumento: bind '\"\\C-x\\C-r\": re-read-init-file'." - -#~ msgid "Arguments we accept:" -#~ msgstr "Argumentos que se aceptan:" - -#~ msgid "" -#~ " -m keymap Use `keymap' as the keymap for the duration of this" -#~ msgstr "" -#~ " -m mapa_teclas Usa `mapa_teclas' como el mapa de teclas durante esta" - -#~ msgid " command. Acceptable keymap names are emacs," -#~ msgstr "" -#~ " orden. Los nombres de mapas de teclas aceptables son" - -#~ msgid "" -#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," -#~ msgstr "" -#~ " emacs, emacs-standard, emacs-meta, emacs-ctlx, vi," - -#~ msgid " vi-command, and vi-insert." -#~ msgstr " vi-move, vi-command y vi-insert." - -#~ msgid " -l List names of functions." -#~ msgstr " -l Muestra los nombres de las funciones." - -#~ msgid " -P List function names and bindings." -#~ msgstr "" -#~ " -P Muestra los nombres de funciones y asignaciones." - -#~ msgid "" -#~ " -p List functions and bindings in a form that can be" -#~ msgstr "" -#~ " -p Muestra las funciones y asignaciones en un formato " -#~ "que" - -#~ msgid " reused as input." -#~ msgstr " puede reusarse como entrada." - -#~ msgid " -r keyseq Remove the binding for KEYSEQ." -#~ msgstr " -r sec_teclas Borra la asignación para SEC_TECLAS" - -# lee 'la'... em+ -#~ msgid " -f filename Read key bindings from FILENAME." -#~ msgstr " -f fichero Lee la asignación de teclas de FICHERO." - -#~ msgid "" -#~ " -q function-name Query about which keys invoke the named function." -#~ msgstr "" -#~ " -q nombre-función Pregunta sobre qué teclas invocan la función " -#~ "nombrada." - -#~ msgid " -V List variable names and values" -#~ msgstr " -V Muestra los nombres de variables y valores" - -#~ msgid "" -#~ " -v List variable names and values in a form that can" -#~ msgstr "" -#~ " -v Muestra los nombres de variables y valores de una " -#~ "forma que" - -#~ msgid " be reused as input." -#~ msgstr " puede reusarse como entrada." - -#~ msgid "" -#~ " -S List key sequences that invoke macros and their " -#~ "values" -#~ msgstr "" -#~ " -S Muestra las secuencias de teclas que invocan macros " -#~ "y sus\n" -#~ " valores" - -#~ msgid "" -#~ " -s List key sequences that invoke macros and their " -#~ "values in" -#~ msgstr "" -#~ " -s Muestra las secuencias de teclas que invocan macros " -#~ "y sus" - -#~ msgid " a form that can be reused as input." -#~ msgstr "" -#~ " valores en una forma que puede reusarse como entrada." - -#~ msgid "break N levels." -#~ msgstr "sale N niveles." - -#~ msgid "If N is specified, resume at the N-th enclosing loop." -#~ msgstr "Si se especifica N, retoma en el N-ésimo ciclo." - -#~ msgid "Run a shell builtin. This is useful when you wish to rename a" -#~ msgstr "Ejecuta un shell interno. Esto es útil cuando desea renombrar un" - -#~ msgid "shell builtin to be a function, but need the functionality of the" -#~ msgstr "" -#~ "shell interno para que sea una función, pero necesita la funcionalidad" - -#~ msgid "builtin within the function itself." -#~ msgstr "interna dentro de la misma función." - -#~ msgid "Change the current directory to DIR. The variable $HOME is the" -#~ msgstr "Cambia el directorio actual a DIR. La variable $HOME es el DIR" - -#~ msgid "default DIR. The variable $CDPATH defines the search path for" -#~ msgstr "por omisión. La variable $CDPATH define la ruta de búsqueda para" - -#~ msgid "the directory containing DIR. Alternative directory names in CDPATH" -#~ msgstr "" -#~ "el directorio que contiene DIR. Los nombres alternativos de directorio en" - -#~ msgid "are separated by a colon (:). A null directory name is the same as" -#~ msgstr "" -#~ "CDPATH son separados por dos puntos (:). Un nombre de directorio nulo es" - -# Slash lo venimos traduciendo por barra inclinada , y backslash -# por barra invertida em++ -#~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," -#~ msgstr "" -#~ "igual al directorio actual, p.e. `.'. Si DIR comienza con una barra " -#~ "inclinada" - -#~ msgid "then $CDPATH is not used. If the directory is not found, and the" -#~ msgstr "" -#~ "(/), entonces $CDPATH no se usa. Si el directorio no se encuentra, y" - -#~ msgid "shell option `cdable_vars' is set, then try the word as a variable" -#~ msgstr "" -#~ "la opción de shell `cdable_vars' está activa, entonces intenta la palabra" - -#~ msgid "name. If that variable has a value, then cd to the value of that" -#~ msgstr "" -#~ "como nombre de variable. Si esa variable tiene un valor, entonces se " -#~ "cambia al" - -#~ msgid "" -#~ "variable. The -P option says to use the physical directory structure" -#~ msgstr "" -#~ "valor de esa variable. La opción -P indica el uso de la estructura física" - -#~ msgid "" -#~ "instead of following symbolic links; the -L option forces symbolic links" -#~ msgstr "del directorio en lugar de seguir enlaces simbólicos; la opción -L" - -# forza -> fuerza? cfuga -#~ msgid "to be followed." -#~ msgstr "fuerza que los vínculos simbólicos sean seguidos." - -#~ msgid "Print the current working directory. With the -P option, pwd prints" -#~ msgstr "" -#~ "Imprime el directorio actual de trabajo. Con la opción -P, pwd imprime" - -#~ msgid "the physical directory, without any symbolic links; the -L option" -#~ msgstr "el directorio físico, sin ningún enlace simbólico; la opción -L" - -#~ msgid "makes pwd follow symbolic links." -#~ msgstr "hace que pwd siga los enlaces simbólicos." - -#~ msgid "" -#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" -#~ msgstr "Ejecuta ORDEN con ARGUMENTOS ignorando las funciones del shell. Si" - -#~ msgid "function called `ls', and you wish to call the command `ls', you can" -#~ msgstr "" -#~ "tiene una función de shell llamada `ls', y desea llamar a la orden `ls'," - -#~ msgid "" -#~ "say \"command ls\". If the -p option is given, a default value is used" -#~ msgstr "" -#~ "se puede decir \"command ls\". Si se especifica la opción -p, se usa un " -#~ "valor" - -# es usado -> se usa. sv -# De acuerdo. La corrección incluye también la línea anterior. cfuga -#~ msgid "" -#~ "for PATH that is guaranteed to find all of the standard utilities. If" -#~ msgstr "" -#~ "por omisión para PATH que garantiza encontrar todas las herramientas " -#~ "estándar." - -# es impresa -> se muestra una cadena em+ -# "Si se da la opcón -V o -v,..." sv -# De acuerdo. cfuga -#~ msgid "" -#~ "the -V or -v option is given, a string is printed describing COMMAND." -#~ msgstr "" -#~ "Si se da la opción -V o -v, se muestra una cadena describiendo la ORDEN." - -#~ msgid "The -V option produces a more verbose description." -#~ msgstr "La opción -V produce una descripción más completa." - -#~ msgid "Declare variables and/or give them attributes. If no NAMEs are" -#~ msgstr "" -#~ "Declara variables y/o les da atributos. Si no se proporcionan NOMBREs," - -#~ msgid "given, then display the values of variables instead. The -p option" -#~ msgstr "entonces muestra los valores de las variables. La opción -p" - -#~ msgid "will display the attributes and values of each NAME." -#~ msgstr "mostrará los atributos y valores de cada NOMBRE." - -#~ msgid "The flags are:" -#~ msgstr "Los indicadores son:" - -#~ msgid " -a\tto make NAMEs arrays (if supported)" -#~ msgstr " -a\thacer los NOMBREs matrices (si está soportado)" - -#~ msgid " -f\tto select from among function names only" -#~ msgstr " -f\tseleccionar sólo entre los nombres de funciones" - -#~ msgid " -F\tto display function names without definitions" -#~ msgstr " -F\tmostrar los nombres de funciones sin definiciones" - -#~ msgid " -r\tto make NAMEs readonly" -#~ msgstr " -r\thacer los NOMBREs de sólo lectura" - -#~ msgid " -x\tto make NAMEs export" -#~ msgstr " -x\thacer los NOMBREs exportables" - -#~ msgid " -i\tto make NAMEs have the `integer' attribute set" -#~ msgstr " -i\thacer que los NOMBREs tengan el atributo `entero' activado" - -#~ msgid "Variables with the integer attribute have arithmetic evaluation (see" -#~ msgstr "Las variables con el atributo entero tienen evaluación aritmética" - -#~ msgid "`let') done when the variable is assigned to." -#~ msgstr "(ver `let') cuando la variable es asignada." - -#~ msgid "When displaying values of variables, -f displays a function's name" -#~ msgstr "Cuando se muestran valores de variables, -f muestra el nombre y" - -#~ msgid "and definition. The -F option restricts the display to function" -#~ msgstr "la definición de la función. La opción -F evita que se muestre" - -#~ msgid "name only." -#~ msgstr "solamente el nombre de la función." - -# apaga -> desactiva em+ -#~ msgid "" -#~ "Using `+' instead of `-' turns off the given attribute instead. When" -#~ msgstr "" -#~ "Usar `+' en lugar de `-' desactiva el atributo dado. Cuando es usado" - -#~ msgid "used in a function, makes NAMEs local, as with the `local' command." -#~ msgstr "" -#~ "en una función, hace los NOMBREs locales, como con la orden `local'." - -# y le da -> y le asigna em+ -#~ msgid "Create a local variable called NAME, and give it VALUE. LOCAL" -#~ msgstr "Crea una variable local llamada NOMBRE, y le asigna un VALOR. LOCAL" - -# tenga un alcance visible -> sea visible solo para la función y sus los hijos em+ -#~ msgid "have a visible scope restricted to that function and its children." -#~ msgstr "tenga visible sólo para la función y sus hijos." - -#~ msgid "Output the ARGs. If -n is specified, the trailing newline is" -#~ msgstr "Muestra los ARGumentos. Si -n es especificado, el carácter final de" - -#~ msgid "suppressed. If the -e option is given, interpretation of the" -#~ msgstr "" -#~ "fin de línea es eliminado. Si se especifica la opción -e, se activa la" - -#~ msgid "following backslash-escaped characters is turned on:" -#~ msgstr "interpretación de estos caracteres de escape con barras invertidas:" - -#~ msgid "\t\\a\talert (bell)" -#~ msgstr "\t\\a\talerta (campana)" - -#~ msgid "\t\\b\tbackspace" -#~ msgstr "\t\\b\tespacio hacia atrás" - -#~ msgid "\t\\c\tsuppress trailing newline" -#~ msgstr "\t\\c\tsuprime el carácter de fin de línea restante" - -#~ msgid "\t\\E\tescape character" -#~ msgstr "\t\\E\tcarácter de escape" - -#~ msgid "\t\\f\tform feed" -#~ msgstr "\t\\f\talimentación de papel" - -#~ msgid "\t\\n\tnew line" -#~ msgstr "\t\\n\tnueva línea" - -#~ msgid "\t\\r\tcarriage return" -#~ msgstr "\t\\r\tretorno de carro" - -#~ msgid "\t\\t\thorizontal tab" -#~ msgstr "\t\\t\ttabulador horizontal" - -#~ msgid "\t\\v\tvertical tab" -#~ msgstr "\t\\v\ttabulador vertical" - -#~ msgid "\t\\\\\tbackslash" -#~ msgstr "\t\\\\\tbarra invertida" - -#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." -#~ msgstr "\t\\num\tel carácter cuyo código ASCII es NÚM (octal)." - -#~ msgid "" -#~ "You can explicitly turn off the interpretation of the above characters" -#~ msgstr "Puede desactivar explícitamente la interpretación de los siguientes" - -#~ msgid "with the -E option." -#~ msgstr "caracteres con la opción -E ." - -#~ msgid "Enable and disable builtin shell commands. This allows" -#~ msgstr "Activa y desactiva las órdenes internas del shell. Esto permite" - -#~ msgid "you to use a disk command which has the same name as a shell" -#~ msgstr "" -#~ "que use una orden del sistema que tenga el mismo nombre de una orden" - -#~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" -#~ msgstr "interna. Si se usa -n , los NOMBREs se desactivan; de otra forma" - -#~ msgid "NAMEs are enabled. For example, to use the `test' found on your" -#~ msgstr "se activan los NOMBREs. Por ejemplo, para usar `test' de la" - -#~ msgid "path instead of the shell builtin version, type `enable -n test'." -#~ msgstr "" -#~ "ruta de acceso en lugar de la versión interna del shell, teclee\n" -#~ "`enable -n test'." - -# se puede usar. sv -#~ msgid "On systems supporting dynamic loading, the -f option may be used" -#~ msgstr "En sistemas que soportan carga dinámica, la opción -f se puede usar" - -#~ msgid "to load new builtins from the shared object FILENAME. The -d" -#~ msgstr "para cargar nuevas órdenes internas del objeto FICHERO compartido." - -#~ msgid "option will delete a builtin previously loaded with -f. If no" -#~ msgstr "La opción -d borrará una orden interna cargada con -f. Si no" - -#~ msgid "non-option names are given, or the -p option is supplied, a list" -#~ msgstr "" -#~ "se especifica ninguna opción, o se especifica la opción -p, se muestra " -#~ "una lista" - -# Se muestra una lista de órdenes internas. sv -# Hay muchos más mensajes que están en "pasiva" que quedarían mejor en -# forma "reflexiva". No comento más y te dejo que los mires despacio. -# Gracias por la observación. cfuga -#~ msgid "of builtins is printed. The -a option means to print every builtin" -#~ msgstr "" -#~ "de órdenes internas. La opción -a implica mostrar cada orden interno" - -#~ msgid "with an indication of whether or not it is enabled. The -s option" -#~ msgstr "con una indicación de si está activa o no. La opción -s impide" - -#~ msgid "restricts the output to the Posix.2 `special' builtins. The -n" -#~ msgstr "la salida a las órdenes internas `especiales' Posix.2. La opción -n" - -#~ msgid "option displays a list of all disabled builtins." -#~ msgstr "muestra una lista de todos las órdenes internas desactivadas." - -#~ msgid "Getopts is used by shell procedures to parse positional parameters." -#~ msgstr "" -#~ "Los procedimientos de shell usan getopts para decodificar parámetros\n" -#~ "de posición." - -# "a ser reconocidas" no está en español. -# Yo pondría "las letras de opción que se reconocen". sv -# De acuerdo. cfuga -#~ msgid "OPTSTRING contains the option letters to be recognized; if a letter" -#~ msgstr "" -#~ "La CADENA_OPCIONES contiene las letras de opción que se reconocen; si una" - -#~ msgid "is followed by a colon, the option is expected to have an argument," -#~ msgstr "" -#~ "letra es seguida de dos puntos, se espera que la opción tenga un " -#~ "argumento," - -#~ msgid "which should be separated from it by white space." -#~ msgstr "que debe estar separado por espacios." - -#~ msgid "Each time it is invoked, getopts will place the next option in the" -#~ msgstr "Cada vez que se llama, getopts colocará la siguiente opción en" - -#~ msgid "shell variable $name, initializing name if it does not exist, and" -#~ msgstr "" -#~ "la variable de shell $nombre, creando nombre si no existe, y el índice" - -#~ msgid "the index of the next argument to be processed into the shell" -#~ msgstr "" -#~ "del siguiente argumento para procesarse dentro de la variable del shell" - -#~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" -#~ msgstr "OPTIND. OPTIND inicia con 1 cada vez que el shell o un guión de" - -#~ msgid "a shell script is invoked. When an option requires an argument," -#~ msgstr "shell es llamado. Cuando una opción requiere un argumento," - -#~ msgid "getopts places that argument into the shell variable OPTARG." -#~ msgstr "getopts coloca ese argumento en la variable de shell OPTARG." - -# en una de dos formas -> en una de las dos formas siguientes em+ -#~ msgid "getopts reports errors in one of two ways. If the first character" -#~ msgstr "" -#~ "getopts comunica errores en una de las dos formas siguientes. Si el " -#~ "primer carácter" - -#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" -#~ msgstr "" -#~ "de OPTSTRING es dos puntos, getopts usa el aviso de error silencioso." - -#~ msgid "this mode, no error messages are printed. If an illegal option is" -#~ msgstr "" -#~ "En este modo, no se muestran mensajes de error. Si se encuentra una " -#~ "opción" - -#~ msgid "seen, getopts places the option character found into OPTARG. If a" -#~ msgstr "ilegal, getopts coloca el carácter de opción encontrado en OPTARG." - -#~ msgid "required argument is not found, getopts places a ':' into NAME and" -#~ msgstr "" -#~ "Si un argumento necesario no se encuentra, getopts coloca ':' en NOMBRE" - -#~ msgid "sets OPTARG to the option character found. If getopts is not in" -#~ msgstr "y establece a OPTARG con el carácter de opción encontrado. Si" - -#~ msgid "silent mode, and an illegal option is seen, getopts places '?' into" -#~ msgstr "" -#~ "getopts no está en modo silencioso, y se encuentra una opción ilegal," - -#~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'" -#~ msgstr "getopts coloca '?' en NOMBRE y borra OPTARG. Si no se encuentra" - -#~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" -#~ msgstr "una opción necesaria, se coloca un '?' en NOMBRE, se borra OPTARG," - -#~ msgid "If the shell variable OPTERR has the value 0, getopts disables the" -#~ msgstr "" -#~ "Si la variable de shell OPTERR tiene el valor 0, getopts deshabilita" - -#~ msgid "printing of error messages, even if the first character of" -#~ msgstr "la notificación de mensajes de error, aún si el primer carácter de" - -#~ msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." -#~ msgstr "OPTSTRING no es ':'. OPTERR tiene el valor de 1 por omisión." - -#~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if" -#~ msgstr "" -#~ "Getopts normalmente compara los parámetros de posición ($0 - $9), pero" - -# dar argumentos -> especificar em+ -#~ msgid "more arguments are given, they are parsed instead." -#~ msgstr "" -#~ "si se especifican más argumentos, se comparan en lugar de los primeros." - -#~ msgid "Exec FILE, replacing this shell with the specified program." -#~ msgstr "" -#~ "Ejecuta el FICHERO, reemplazando este shell con el programa especificado." - -#~ msgid "If FILE is not specified, the redirections take effect in this" -#~ msgstr "" -#~ "Si no se especifica un FICHERO, las redirecciones toman efecto en este" - -#~ msgid "shell. If the first argument is `-l', then place a dash in the" -#~ msgstr "shell. Si el primer argumento es `-l', entonces coloca un guión en" - -#~ msgid "zeroth arg passed to FILE, as login does. If the `-c' option" -#~ msgstr "" -#~ "el argumento 0 pasado al FICHERO, como lo hace login. Si se especifica la " -#~ "opción" - -#~ msgid "is supplied, FILE is executed with a null environment. The `-a'" -#~ msgstr "`-c', el FICHERO se ejecuta en un entorno nulo. La opción `-a'" - -#~ msgid "option means to make set argv[0] of the executed process to NAME." -#~ msgstr "hace que cambie el argv[0] del proceso ejecutado a NOMBRE." - -#~ msgid "If the file cannot be executed and the shell is not interactive," -#~ msgstr "Si el fichero no se puede ejecutar y el shell no es interactivo," - -#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" -#~ msgstr "entonces el shell termina, a menos que la variable" - -#~ msgid "is set." -#~ msgstr "\"no_exit_on_failed_exec\" esté activada." - -#~ msgid "is that of the last command executed." -#~ msgstr "es el del último comando ejecutado." - -#~ msgid "" -#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" -#~ msgstr "" -#~ "PRIMERO y ÚLTIMO pueden ser números especificando el rango, o PRIMERO" - -#~ msgid "string, which means the most recent command beginning with that" -#~ msgstr "puede ser una cadena, que representa el comando más reciente que" - -#~ msgid "string." -#~ msgstr "comience con dicha cadena." - -#~ msgid "" -#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," -#~ msgstr "" -#~ " -e NOMBRE_E escoge qué editor emplear. Por omisión es FCEDIT, después" - -#~ msgid "" -#~ " then the editor which corresponds to the current readline editing" -#~ msgstr " EDITOR, después el editor que corresponde a la edición actual" - -#~ msgid " mode, then vi." -#~ msgstr " del modo de línea de comando, y finalmente vi." - -#~ msgid " -l means list lines instead of editing." -#~ msgstr " -l significa mostrar líneas en lugar de editarlas." - -#~ msgid " -n means no line numbers listed." -#~ msgstr " -n significa que no sean mostrados los números de línea." - -#~ msgid "" -#~ " -r means reverse the order of the lines (making it newest listed " -#~ "first)." -#~ msgstr "" -#~ " -r significa invertir el orden de las líneas (líneas nuevas primero)." - -#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" -#~ msgstr "Con el formato `fc -s [pat=rep ...] [orden]', la orden es" - -#~ msgid "re-executed after the substitution OLD=NEW is performed." -#~ msgstr "" -#~ "re-ejecutado después de que se realiza la sustitución ANTIGUA=NUEVA." - -#~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" -#~ msgstr "" -#~ "Un alias útil para usar con esto es r='fc -s', así que al teclear `r cc'" - -#~ msgid "runs the last command beginning with `cc' and typing `r' re-executes" -#~ msgstr "" -#~ "ejecuta la última orden que comenzó con `cc' y tecleando `r' re-ejecuta" - -#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" -#~ msgstr "" -#~ "Si el IDTRABAJO no se encuentra, se usa la noción del shell de trabajo" - -#~ msgid "used." -#~ msgstr "actual." - -#~ msgid "Place JOB_SPEC in the background, as if it had been started with" -#~ msgstr "" -#~ "Ubica al IDTRABAJO en el background, como si hubiera sido iniciado con" - -#~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" -#~ msgstr "`&'. Si el IDTRABAJO no se encuentra, se usa la noción del shell" - -#~ msgid "job is used." -#~ msgstr "de trabajo actual." - -#~ msgid "For each NAME, the full pathname of the command is determined and" -#~ msgstr "Para cada NOMBRE, se determina la ruta completa de la orden y se" - -#~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the" -#~ msgstr "recuerda. Si se especifica la opción -p, se usa la RUTA_DE_ACCESO" - -#~ msgid "full pathname of NAME, and no path search is performed. The -r" -#~ msgstr "" -#~ "como la ruta completa de NOMBRE y no se realiza la búsqueda de ruta." - -#~ msgid "option causes the shell to forget all remembered locations. If no" -#~ msgstr "" -#~ " La opción -r hace que el shell olvide todas las ubicaciones recordadas." - -#~ msgid "" -#~ "arguments are given, information about remembered commands is displayed." -#~ msgstr "" -#~ " Si no se especifican argumentos, se muestra la información sobre las " -#~ "órdenes recordadas." - -#~ msgid "Display helpful information about builtin commands. If PATTERN is" -#~ msgstr "Muestra información de ayuda acerca de las órdenes internas. Si se" - -#~ msgid "specified, gives detailed help on all commands matching PATTERN," -#~ msgstr "" -#~ "especifica la PLANTILLA, da ayuda detallada de todas las órdenes que" - -#~ msgid "otherwise a list of the builtins is printed." -#~ msgstr "" -#~ "coinciden con la PLANTILLA, de otra forma se muestra una lista de las " -#~ "órdenes internas." - -#~ msgid "Display the history list with line numbers. Lines listed with" -#~ msgstr "" -#~ "Muestra la lista de la historia con números de línea. Las líneas " -#~ "mostradas" - -#~ msgid "with a `*' have been modified. Argument of N says to list only" -#~ msgstr "" -#~ "con un `*' han sido modificadas. Un argumento de N indica que solo se" - -#~ msgid "the last N lines. The -c option causes the history list to be" -#~ msgstr "" -#~ "muestren las últimas N líneas. La opción -c hace que la lista de la " -#~ "historia" - -#~ msgid "" -#~ "cleared by deleting all of the entries. The `-w' option writes out the" -#~ msgstr "" -#~ "sea borrada eliminando todas las entradas. La opción `-w' escribe la " -#~ "historia" - -#~ msgid "" -#~ "current history to the history file; `-r' means to read the file and" -#~ msgstr "" -#~ "actual al fichero de historia; `-r' al contrario, lee el fichero y agrega" - -#~ msgid "append the contents to the history list instead. `-a' means" -#~ msgstr "el contenido a la lista de la historia. `-a' agrega las" - -#~ msgid "to append history lines from this session to the history file." -#~ msgstr "líneas de la historia de esta sesión al fichero de historia." - -#~ msgid "Argument `-n' means to read all history lines not already read" -#~ msgstr "El argumento `-n' lee todas las líneas de historia que no han sido" - -#~ msgid "from the history file and append them to the history list. If" -#~ msgstr "" -#~ "leídas aún del fichero de historia y las agrega a la lista de historia." - -#~ msgid "FILENAME is given, then that is used as the history file else" -#~ msgstr "" -#~ " Si se especifica un FICHERO, entonces se usa como el fichero de historia" - -#~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." -#~ msgstr "" -#~ "de otra manera si $HISTFILE tiene un valor, se utiliza, de otra forma se " -#~ "usa ~/.bash_history." - -#~ msgid "If the -s option is supplied, the non-option ARGs are appended to" -#~ msgstr "" -#~ "Si se especifica la opción -s, los ARGumentos que no son opciones se" - -#~ msgid "the history list as a single entry. The -p option means to perform" -#~ msgstr "" -#~ "agregan a la lista de historia como una sola entrada. La opción -p " -#~ "realiza" - -#~ msgid "" -#~ "history expansion on each ARG and display the result, without storing" -#~ msgstr "" -#~ "una expansión de historia en cada ARGumento y muestra el resultado, sin " -#~ "guardar" - -#~ msgid "anything in the history list." -#~ msgstr "nada en la lista de historia." - -#~ msgid "Lists the active jobs. The -l option lists process id's in addition" -#~ msgstr "" -#~ "Muestra los trabajos activos. La opción -l muestra los id's de los " -#~ "procesos además" - -#~ msgid "to the normal information; the -p option lists process id's only." -#~ msgstr "" -#~ "de la información normal; la opción -p solamente muestra los id's de los " -#~ "procesos." - -#~ msgid "" -#~ "If -n is given, only processes that have changed status since the last" -#~ msgstr "" -#~ "Si se especifica -n, solamente se muestran los procesos que han cambiado" - -#~ msgid "" -#~ "notification are printed. JOBSPEC restricts output to that job. The" -#~ msgstr "" -#~ "de estado desde la última notificación. IDJOB limita la salida a ese " -#~ "trabajo. Las" - -#~ msgid "-r and -s options restrict output to running and stopped jobs only," -#~ msgstr "" -#~ "opciones -r y -s limitan la salida a mostrar sólo trabajos corriendo y " -#~ "detenidos," - -#~ msgid "respectively. Without options, the status of all active jobs is" -#~ msgstr "respectivamente. Sin opciones, se muestra el estado de todos los" - -#~ msgid "" -#~ "printed. If -x is given, COMMAND is run after all job specifications" -#~ msgstr "" -#~ "trabajos activos. Si se especifica -x, la ORDEN se ejecuta después de " -#~ "que todas las especificaciones de trabajos" - -#~ msgid "" -#~ "that appear in ARGS have been replaced with the process ID of that job's" -#~ msgstr "que aparecen en ARGS han sido reemplazadas por el ID de proceso del" - -#~ msgid "process group leader." -#~ msgstr "líder del grupo de procesos de dicho trabajo." - -#~ msgid "Removes each JOBSPEC argument from the table of active jobs." -#~ msgstr "Elimina cada argumento IDJOBS de la tabla de trabajos activos." - -#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" -#~ msgstr "" -#~ "Manda a los procesos nombrados por PID (o TRABAJO) la señal SIGSPEC. Si" - -#~ msgid "" -#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" -#~ msgstr "" -#~ "no se especifica SIGSPEC, entonces se asume SIGTERM. El argumento `-l'" - -#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" -#~ msgstr "" -#~ "muestra los nombres de señales; si hay argumentos después de `-l', se" - -#~ msgid "be signal numbers for which names should be listed. Kill is a shell" -#~ msgstr "" -#~ "asume que son números de señales cuyos nombres deben mostrarse. Kill es " -#~ "una orden" - -#~ msgid "builtin for two reasons: it allows job IDs to be used instead of" -#~ msgstr "" -#~ "interna de shell por dos razones: permite que los IDs de trabajos sean " -#~ "usados en lugar de " - -#~ msgid "process IDs, and, if you have reached the limit on processes that" -#~ msgstr "IDs de procesos, y, si ha alcanzado el límite de procesos que" - -#~ msgid "" -#~ "you can create, you don't have to start a process to kill another one." -#~ msgstr "puede crear, no tiene que iniciar un proceso para eliminar a otro." - -# "a ser evaluada" no está en español. sv -# Cierto. ¿Así está mejor? cfuga -#~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" -#~ msgstr "" -#~ "Cada ARGumento es una expresión aritmética para evaluarse. La evaluación" - -# overflow -> desbordamiento o sobrepasamiento. nunca lo he visto -# traducido como sobreflujo. sv -# Corregido. cfuga -#~ msgid "is done in long integers with no check for overflow, though division" -#~ msgstr "" -#~ "se hace en enteros long sin revisar desbordamientos, aunque la división" - -#~ msgid "by 0 is trapped and flagged as an error. The following list of" -#~ msgstr "por 0 es capturada y marcada como un error. La siguiente lista de" - -# No sé si existe precedencia en español, pero me suena fatal. -# Yo pondría simplemente "prioridad". sv -# Creo que si existe, pero tu sugerencia es mejor. cfuga -#~ msgid "operators is grouped into levels of equal-precedence operators." -#~ msgstr "" -#~ "operadores está agrupada en niveles de operadores de la misma prioridad." - -#~ msgid "The levels are listed in order of decreasing precedence." -#~ msgstr "Se muestran los niveles en orden de prioridad decreciente." - -#~ msgid "\t-, +\t\tunary minus, plus" -#~ msgstr "\t-, +\t\tmenos unario, más" - -#~ msgid "\t!, ~\t\tlogical and bitwise negation" -#~ msgstr "\t!, ~\t\tnegación lógica y basada en bits" - -#~ msgid "\t*, /, %\t\tmultiplication, division, remainder" -#~ msgstr "\t*, /, %\t\tmultiplicación, división, residuo" - -#~ msgid "\t+, -\t\taddition, subtraction" -#~ msgstr "\t+, -\t\tadición, sustracción" - -#~ msgid "\t<<, >>\t\tleft and right bitwise shifts" -#~ msgstr "\t<<, >>\t\tdesplazamientos de bits izquierdo y derecho" - -#~ msgid "\t<=, >=, <, >\tcomparison" -#~ msgstr "\t<=, >=, <, >\tcomparación" - -#~ msgid "\t==, !=\t\tequality, inequality" -#~ msgstr "\t==, !=\t\tequivalencia, inequivalencia" - -#~ msgid "\t&\t\tbitwise AND" -#~ msgstr "\t&\t\tAND de bits" - -#~ msgid "\t^\t\tbitwise XOR" -#~ msgstr "\t^\t\tXOR de bits" - -#~ msgid "\t|\t\tbitwise OR" -#~ msgstr "\t|\t\tOR de bits" - -#~ msgid "\t&&\t\tlogical AND" -#~ msgstr "\t&&\t\tAND lógico" - -#~ msgid "\t||\t\tlogical OR" -#~ msgstr "\t||\t\tOR lógico" - -#~ msgid "\texpr ? expr : expr" -#~ msgstr "\texpr ? expr : expr" - -#~ msgid "\t\t\tconditional expression" -#~ msgstr "\t\t\texpresión condicional" - -#~ msgid "\t=, *=, /=, %=," -#~ msgstr "\t=, *=, /=, %=," - -#~ msgid "\t+=, -=, <<=, >>=," -#~ msgstr "\t+=, -=, <<=, >>=," - -#~ msgid "\t&=, ^=, |=\tassignment" -#~ msgstr "asignaciones\t&=, ^=, |=" - -#~ msgid "is replaced by its value (coerced to a long integer) within" -#~ msgstr "de la variable por su valor (asignado a un entero long) dentro de" - -#~ msgid "an expression. The variable need not have its integer attribute" -#~ msgstr "una expresión. La variable no necesita tener activado su atributo" - -#~ msgid "turned on to be used in an expression." -#~ msgstr "entero para que se use en una expresión." - -#~ msgid "Operators are evaluated in order of precedence. Sub-expressions in" -#~ msgstr "" -#~ "Los operadores se evalúan en orden de prioridad. Se evalúan en primer" - -#~ msgid "parentheses are evaluated first and may override the precedence" -#~ msgstr "lugar las sub-expresiones en paréntesis y pueden sobrepasar las" - -#~ msgid "rules above." -#~ msgstr "reglas de prioridad anteriores." - -#~ msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" -#~ msgstr "Si el último ARGumento evalua a 0, let regresa 1; de otra manera" - -#~ msgid "otherwise." -#~ msgstr "se regresa 0." - -#~ msgid "One line is read from the standard input, and the first word is" -#~ msgstr "Una línea se lee de la entrada estándar, y la primera palabra se" - -#~ msgid "" -#~ "assigned to the first NAME, the second word to the second NAME, and so" -#~ msgstr "" -#~ "asigna al primer NOMBRE, la segunda palabra al segundo NOMBRE, y así" - -#~ msgid "" -#~ "on, with leftover words assigned to the last NAME. Only the characters" -#~ msgstr "" -#~ "con las palabras restantes asignadas al último NOMBRE. Solo los " -#~ "caracteres" - -#~ msgid "found in $IFS are recognized as word delimiters. The return code is" -#~ msgstr "" -#~ "que se encuentran en $IFS se reconocen como delimitadores de palabras. El" - -#~ msgid "" -#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" -#~ msgstr "" -#~ "código de retorno es cero, a menos que se encuentre un fin-de-fichero. " -#~ "Si no" - -#~ msgid "" -#~ "line read is stored in the REPLY variable. If the -r option is given," -#~ msgstr "" -#~ "se establece ningún NOMBRE, la línea leída se guarda en la variable " -#~ "REPLY. Si" - -#~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" -#~ msgstr "" -#~ "se proporciona la opción -r, esto significa entrada `textual', y se " -#~ "desactiva" - -#~ msgid "the `-p' option is supplied, the string supplied as an argument is" -#~ msgstr "el escape de la barra invertida. Si se proporciona la opción `-p'," - -#~ msgid "" -#~ "output without a trailing newline before attempting to read. If -a is" -#~ msgstr "" -#~ "se muestra la cadena proporcionada como argumento sin un fín de línea " -#~ "terminal antes de intentar leerla." - -#~ msgid "" -#~ "supplied, the words read are assigned to sequential indices of ARRAY," -#~ msgstr "" -#~ "Si se da -a, se asignan las palabras leídas a índices secuenciales de " -#~ "MATRIZ" - -#~ msgid "starting at zero. If -e is supplied and the shell is interactive," -#~ msgstr "iniciando en cero. Si se da -e y el shell es interactivo," - -#~ msgid "readline is used to obtain the line." -#~ msgstr "se usa readline para obtener la línea." - -#~ msgid "is omitted, the return status is that of the last command." -#~ msgstr "se omite N, se utiliza el código de estado de la última orden." - -#~ msgid " -a Mark variables which are modified or created for export." -#~ msgstr "" -#~ " -a Marca las variables que se modifican o crean para exportación." - -#~ msgid " -b Notify of job termination immediately." -#~ msgstr " -b Notifica el término de trabajos inmediatamente." - -#~ msgid " -e Exit immediately if a command exits with a non-zero status." -#~ msgstr "" -#~ " -e Termina inmediatamente si una orden termina con un estado " -#~ "diferente a cero." - -#~ msgid " -f Disable file name generation (globbing)." -#~ msgstr "" -#~ " -f Desactiva la generación de nombres de ficheros (englobamiento)." - -#~ msgid " -h Remember the location of commands as they are looked up." -#~ msgstr "" -#~ " -h Recuerda la ubicación de las órdenes como fueron localizadas." - -#~ msgid "" -#~ " -i Force the shell to be an \"interactive\" one. Interactive shells" -#~ msgstr "" -#~ " -i Fuerza que el shell sea \"interactive\". Los shells interactivos" - -#~ msgid " always read `~/.bashrc' on startup." -#~ msgstr " siempre leen `~/.bashrc' al inicio." - -#~ msgid " -k All assignment arguments are placed in the environment for a" -#~ msgstr "" -#~ " -k Todos los argumentos de asignación se ubican en el ambiente para " -#~ "una" - -#~ msgid " command, not just those that precede the command name." -#~ msgstr "" -#~ " orden, no solamente aquéllos que preceden al nombre de la orden." - -#~ msgid " -m Job control is enabled." -#~ msgstr " -m Se activa el control de trabajos." - -#~ msgid " -n Read commands but do not execute them." -#~ msgstr " -n Lee órdenes pero no las ejecuta." - -#~ msgid " -o option-name" -#~ msgstr " -o nombre-opción" - -#~ msgid " Set the variable corresponding to option-name:" -#~ msgstr " Establece la variable correspondiente a nombre-opción:" - -#~ msgid " allexport same as -a" -#~ msgstr " allexport igual que -a" - -#~ msgid " braceexpand same as -B" -#~ msgstr " braceexpand igual que -B" - -#~ msgid " emacs use an emacs-style line editing interface" -#~ msgstr "" -#~ " emacs usa una interfaz de edición de línea estilo emacs" - -#~ msgid " errexit same as -e" -#~ msgstr " errexit igual que -e" - -#~ msgid " hashall same as -h" -#~ msgstr " hashall igual que -h" - -#~ msgid " histexpand same as -H" -#~ msgstr " histexpand igual que -H" - -#~ msgid " ignoreeof the shell will not exit upon reading EOF" -#~ msgstr " ignoreeof el shell no terminará después de leer EOF" - -#~ msgid " interactive-comments" -#~ msgstr " interactive-comments" - -#~ msgid "" -#~ " allow comments to appear in interactive commands" -#~ msgstr "" -#~ " permite que los comentarios se muestren en " -#~ "órdenes interactivas" - -#~ msgid " keyword same as -k" -#~ msgstr " keyword igual que -k" - -#~ msgid " monitor same as -m" -#~ msgstr " monitor igual que -m" - -#~ msgid " noclobber same as -C" -#~ msgstr " noclobber igual que -C" - -#~ msgid " noexec same as -n" -#~ msgstr " noexec igual que -n" - -#~ msgid " noglob same as -f" -#~ msgstr " noglob igual que -f" - -#~ msgid " notify save as -b" -#~ msgstr " notify igual que -b" - -#~ msgid " nounset same as -u" -#~ msgstr " nounset igual que -u" - -#~ msgid " onecmd same as -t" -#~ msgstr " onecmd same as -t" - -#~ msgid " physical same as -P" -#~ msgstr " physical same as -P" - -#~ msgid "" -#~ " posix change the behavior of bash where the default" -#~ msgstr "" -#~ " posix cambia la conducta de bash donde por omisión" - -#~ msgid "" -#~ " operation differs from the 1003.2 standard to" -#~ msgstr "" -#~ " la operación difiere del estándar 1003.2 para" - -#~ msgid " match the standard" -#~ msgstr " cumplir el estándar" - -#~ msgid " privileged same as -p" -#~ msgstr " privileged igual que -p" - -#~ msgid " verbose same as -v" -#~ msgstr " verbose igual que -v" - -#~ msgid " vi use a vi-style line editing interface" -#~ msgstr "" -#~ " vi usa una interfaz de edición de línea estilo vi" - -#~ msgid " xtrace same as -x" -#~ msgstr " xtrace igual que -x" - -#~ msgid "" -#~ " -p Turned on whenever the real and effective user ids do not match." -#~ msgstr "" -#~ " -p Se activa cada vez que los ids real y efectivo no coinciden." - -# FIXME: $ENV es variable, no fichero. cfuga -#~ msgid " Disables processing of the $ENV file and importing of shell" -#~ msgstr "" -#~ " Desactiva el procesamiento del fichero $ENV y la importación de " -#~ "funciones" - -#~ msgid "" -#~ " functions. Turning this option off causes the effective uid and" -#~ msgstr " de shell. Desactivar esta opción causa que el uid y el gid" - -#~ msgid " gid to be set to the real uid and gid." -#~ msgstr " efectivos sean iguales al uid y al gid reales." - -#~ msgid " -t Exit after reading and executing one command." -#~ msgstr " -t Terminar después de leer y ejecutar una orden." - -#~ msgid " -u Treat unset variables as an error when substituting." -#~ msgstr "" -#~ " -u Tratar las variables no establecidas como un error cuando se hace " -#~ "sustitución." - -#~ msgid " -v Print shell input lines as they are read." -#~ msgstr " -v Muestra las líneas de entrada del shell mientras se leen." - -#~ msgid " -x Print commands and their arguments as they are executed." -#~ msgstr " -x Muestra las órdenes y sus argumentos mientras se ejecutan." - -#~ msgid " -B the shell will perform brace expansion" -#~ msgstr " -B el shell hará expansión de llaves" - -#~ msgid " -H Enable ! style history substitution. This flag is on" -#~ msgstr "" -#~ " -H Activa el estilo ! de sustitución de la historia. Este indicador" - -#~ msgid " by default." -#~ msgstr " está activado por omisión." - -#~ msgid " -C If set, disallow existing regular files to be overwritten" -#~ msgstr "" -#~ " -C Si está establecido, evita que los ficheros regulares existentes " -#~ "sean sobreescritos" - -#~ msgid " by redirection of output." -#~ msgstr " por una redirección de salida." - -#~ msgid " -P If set, do not follow symbolic links when executing commands" -#~ msgstr "" -#~ " -P Si está establecido, no se siguen los enlaces simbólicos cuando " -#~ "se ejecutan órdenes" - -#~ msgid " such as cd which change the current directory." -#~ msgstr " como cuando cd cambia al directorio actual." - -#~ msgid "Using + rather than - causes these flags to be turned off. The" -#~ msgstr "" -#~ "Usar + en lugar de - causa que estos indicadores sean desactivados. Los" - -#~ msgid "flags can also be used upon invocation of the shell. The current" -#~ msgstr "" -#~ "indicadores también se pueden usar durante la invocación del shell. El " -#~ "conjunto" - -#~ msgid "" -#~ "set of flags may be found in $-. The remaining n ARGs are positional" -#~ msgstr "" -#~ "actual de indicadores se encuentra en $-. Los ARGumentos n restantes son " -#~ "parámetros" - -#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" -#~ msgstr "posicionales y se asignan, en orden, a $1, $2, .. $n. Si no" - -#~ msgid "ARGs are given, all shell variables are printed." -#~ msgstr "" -#~ "se establecen ARGumentos, se muestran todas las variables del shell." - -#~ msgid "For each NAME, remove the corresponding variable or function. Given" -#~ msgstr "" -#~ "Para cada NOMBRE, se borra la variable o función correspondiente. Al usar" - -#~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," -#~ msgstr "`-v', unset sólo actuará en variables. Al usar el indicador `-f'," - -#~ msgid "unset will only act on functions. With neither flag, unset first" -#~ msgstr "" -#~ "unset sólo actuará en funciones. Sin ningún indicador, unset primero" - -#~ msgid "tries to unset a variable, and if that fails, then tries to unset a" -#~ msgstr "" -#~ "intenta borrar una variable, y si eso falla, entonces intenta borrar una" - -#~ msgid "" -#~ "function. Some variables (such as PATH and IFS) cannot be unset; also" -#~ msgstr "" -#~ "función. Algunas variables (como PATH e IFS) no se pueden borrar; vea" - -#~ msgid "see readonly." -#~ msgstr "también readonly." - -#~ msgid "NAMEs are marked for automatic export to the environment of" -#~ msgstr "los NOMBREs se marcan para exportación automática al ambiente de" - -#~ msgid "subsequently executed commands. If the -f option is given," -#~ msgstr "" -#~ "las órdenes ejecutadas subsecuentemente. Si se establece el indicador -f," - -#~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" -#~ msgstr "" -#~ "los NOMBREs se refieren a funciones. Si no se establecen NOMBREs, o si `-" -#~ "p'" - -#~ msgid "is given, a list of all names that are exported in this shell is" -#~ msgstr "" -#~ "se establece, se muestra una lista de todos los nombres que se exportan" - -#~ msgid "printed. An argument of `-n' says to remove the export property" -#~ msgstr "" -#~ "en este shell. Un argumento `-n' indica que se borre la propiedad de " -#~ "exportación" - -#~ msgid "from subsequent NAMEs. An argument of `--' disables further option" -#~ msgstr "" -#~ "de NOMBREs subsecuentes. Un argumento `--' desactiva el procesamiento" - -#~ msgid "processing." -#~ msgstr "posterior de opciones." - -#~ msgid "" -#~ "The given NAMEs are marked readonly and the values of these NAMEs may" -#~ msgstr "" -#~ "Los NOMBREs dados se marcan como sólo-lectura y los valores de esos " -#~ "NOMBREs" - -#~ msgid "not be changed by subsequent assignment. If the -f option is given," -#~ msgstr "" -#~ "no se pueden cambiar por asignaciones posteriores. Si se establece el " -#~ "indicador -f," - -#~ msgid "then functions corresponding to the NAMEs are so marked. If no" -#~ msgstr "" -#~ "entonces también se marcan las funciones correspondientes a los NOMBREs. " -#~ "Si no" - -#~ msgid "" -#~ "arguments are given, or if `-p' is given, a list of all readonly names" -#~ msgstr "" -#~ "se establecen argumentos, o si se establece `-p', se muestra una lista de " -#~ "todos los nombres" - -#~ msgid "" -#~ "is printed. An argument of `-n' says to remove the readonly property" -#~ msgstr "" -#~ "de sólo-lectura. Un argumento `-n' indica que se borre la propiedad de " -#~ "sólo-lectura" - -#~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" -#~ msgstr "de los NOMBREs subsecuentes. La opción `-a' trata cada NOMBRE como" - -#~ msgid "an array variable. An argument of `--' disables further option" -#~ msgstr "" -#~ "una variable de matriz. Un argumento de `--' desactiva opciones " -#~ "posteriores" - -#~ msgid "not given, it is assumed to be 1." -#~ msgstr "establece N, se asume que es 1." - -#~ msgid "Read and execute commands from FILENAME and return. The pathnames" -#~ msgstr "Lee y ejecuta órdenes del FICHERO y regresa. Los nombres de ruta" - -#~ msgid "in $PATH are used to find the directory containing FILENAME." -#~ msgstr "" -#~ "en $PATH se utilizan para encontrar al directorio que contiene el FICHERO." - -#~ msgid "Suspend the execution of this shell until it receives a SIGCONT" -#~ msgstr "Suspende la ejecución de este shell hasta que recive una señal" - -#~ msgid "signal. The `-f' if specified says not to complain about this" -#~ msgstr "SIGCONT. Si se especifica `-f' indica que no se queje si" - -#~ msgid "being a login shell if it is; just suspend anyway." -#~ msgstr "es un shell de login; y solo suspender de cualquier forma." - -#~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on" -#~ msgstr "Termina con un estado de 0 (verdad) ó 1 (falsedad) dependiendo de" - -#~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" -#~ msgstr "" -#~ "la evaluación de EXPR. Las expresiones pueden ser unarias o binarias. " -#~ "Las expresiones" - -#~ msgid "expressions are often used to examine the status of a file. There" -#~ msgstr "" -#~ "unarias se utilizan con frecuencia para examinar el estado de un fichero." - -#~ msgid "are string operators as well, and numeric comparison operators." -#~ msgstr "" -#~ "Hay operadores de cadenas también, y operadores de comparación numérica." - -#~ msgid "File operators:" -#~ msgstr "Operadores de fichero:" - -#~ msgid " -b FILE True if file is block special." -#~ msgstr " -b FICHERO Verdadero si el fichero es especial de bloques." - -#~ msgid " -c FILE True if file is character special." -#~ msgstr "" -#~ " -c FICHERO Verdadero si el fichero es especial de caracteres." - -#~ msgid " -d FILE True if file is a directory." -#~ msgstr " -d FICHERO Verdadero si el fichero es un directorio." - -#~ msgid " -e FILE True if file exists." -#~ msgstr " -e FICHERO Verdadero si el fichero existe." - -#~ msgid " -f FILE True if file exists and is a regular file." -#~ msgstr "" -#~ " -f FICHERO Verdadero si el fichero existe y es un fichero regular." - -#~ msgid " -g FILE True if file is set-group-id." -#~ msgstr "" -#~ " -g FICHERO Verdadero si el fichero tiene activado el set-group-id." - -#~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." -#~ msgstr "" -#~ " -h FICHERO Verdadero si el fichero es un enlace simbólico. Use " -#~ "\"-L\"." - -#~ msgid " -L FILE True if file is a symbolic link." -#~ msgstr " -L FICHERO Verdadero si el fichero es un enlace simbólico." - -#~ msgid " -k FILE True if file has its \"sticky\" bit set." -#~ msgstr "" -#~ " -k FICHERO Verdadero si el fichero tiene el bit \"sticky\" " -#~ "activado." - -#~ msgid " -p FILE True if file is a named pipe." -#~ msgstr " -p FICHERO Verdadero si el fichero es una tubería nombrada." - -#~ msgid " -r FILE True if file is readable by you." -#~ msgstr " -r FICHERO Verdadero si usted puede leer el fichero." - -#~ msgid " -s FILE True if file exists and is not empty." -#~ msgstr " -s FICHERO Verdadero si el fichero existe y no está vacío." - -#~ msgid " -S FILE True if file is a socket." -#~ msgstr " -S FICHERO Verdadero si el fichero es un `socket'." - -#~ msgid " -t FD True if FD is opened on a terminal." -#~ msgstr " -t DF Verdadero si DF está abierto en una terminal." - -#~ msgid " -u FILE True if the file is set-user-id." -#~ msgstr "" -#~ " -u FICHERO Verdadero si el fichero tiene activado el set-user-id." - -#~ msgid " -w FILE True if the file is writable by you." -#~ msgstr " -w FICHERO Verdadero si usted puede modificar el fichero." - -#~ msgid " -x FILE True if the file is executable by you." -#~ msgstr " -x FICHERO Verdadero si usted puede ejecutar el fichero." - -#~ msgid " -O FILE True if the file is effectively owned by you." -#~ msgstr "" -#~ " -O FICHERO Verdadero si usted efectivamente posee el fichero." - -#~ msgid "" -#~ " -G FILE True if the file is effectively owned by your group." -#~ msgstr "" -#~ " -G FICHERO Verdadero si su grupo efectivamente posee el fichero." - -#~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to" -#~ msgstr "" -#~ " FICH1 -nt FICH2 Verdadero si fich1 es más nuevo que (de acuerdo a" - -#~ msgid " modification date) file2." -#~ msgstr " la fecha de modificación) el fich2." - -#~ msgid " FILE1 -ot FILE2 True if file1 is older than file2." -#~ msgstr " FICH1 -ot FICH2 Verdadero si fich1 es más viejo que fich2." - -#~ msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." -#~ msgstr " FICH1 -ef FICH2 Verdadero si fich1 es un enlace duro a fich2." - -#~ msgid "String operators:" -#~ msgstr "Operadores de cadenas:" - -#~ msgid " -z STRING True if string is empty." -#~ msgstr " -z CADENA Verdadero si la cadena está vacía." - -#~ msgid " -n STRING" -#~ msgstr " -n CADENA" - -#~ msgid " STRING True if string is not empty." -#~ msgstr " CADENA Verdadero si la cadena no está vacía." - -#~ msgid " STRING1 = STRING2" -#~ msgstr " CADENA1 = CADENA2" - -#~ msgid " True if the strings are equal." -#~ msgstr " Verdadero si las cadenas son iguales." - -#~ msgid " STRING1 != STRING2" -#~ msgstr " CADENA1 != CADENA2" - -#~ msgid " True if the strings are not equal." -#~ msgstr " Verdadero si las cadenas no son iguales." - -#~ msgid " STRING1 < STRING2" -#~ msgstr " CADENA1 < CADENA2" - -#~ msgid "" -#~ " True if STRING1 sorts before STRING2 lexicographically" -#~ msgstr "" -#~ " Verdadero si la CADENA1 se ordena antes que la CADENA2 " -#~ "lexicográficamente" - -#~ msgid " STRING1 > STRING2" -#~ msgstr " CADENA1 > CADENA2" - -#~ msgid "" -#~ " True if STRING1 sorts after STRING2 lexicographically" -#~ msgstr "" -#~ " Verdadero si la CADENA1 se ordena después que la " -#~ "CADENA2 lexicográficamente" - -#~ msgid "Other operators:" -#~ msgstr "Otros operadores:" - -#~ msgid " ! EXPR True if expr is false." -#~ msgstr " ! EXPR Verdadero si la expr es falsa" - -#~ msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." -#~ msgstr " EXPR1 -a EXPR2 Verdadero si ambas expr1 Y expr2 son verdaderas." - -#~ msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." -#~ msgstr "" -#~ " EXPR1 -o EXPR2 Verdadero si cualquiera de expr1 O expr2 es verdadera." - -#~ msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," -#~ msgstr " arg1 OP arg2 Pruebas aritméticas. OP es uno de -eq, -ne," - -#~ msgid " -lt, -le, -gt, or -ge." -#~ msgstr " -lt, -le, -gt, ó -ge." - -#~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," -#~ msgstr "" -#~ "Los operadores binarios aritméticos devuelven verdadero si ARG1 es igual, " -#~ "no igual," - -#~ msgid "" -#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" -#~ msgstr "menor, menor o igual, mayor, ó mayor o igual" - -#~ msgid "than ARG2." -#~ msgstr "que ARG2." - -#~ msgid "This is a synonym for the \"test\" builtin, but the last" -#~ msgstr "Es un sinónimo para la orden interna \"test\", pero el último" - -#~ msgid "the shell." -#~ msgstr "ejecutados desde el shell." - -#~ msgid "The command ARG is to be read and executed when the shell receives" -#~ msgstr "La orden ARG se lee y ejecuta cuando el shell recibe la(s)" - -#~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" -#~ msgstr "" -#~ "señal(es) ID_SEÑAL. Si ARG no está, todas las señales especificadas son" - -#~ msgid "reset to their original values. If ARG is the null string each" -#~ msgstr "" -#~ "establecidas a sus valores originales. Si ARG es la cadena nula cada" - -#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." -#~ msgstr "ID_SEÑAL es ignorada por el shell y por las órdenes que invoque." - -#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" -#~ msgstr "Si ID_SEÑAL es EXIT (0) la orden ARG se ejecuta al terminar el" - -#~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" -#~ msgstr "shell. Si ID_SEÑAL es DEBUG, ARG se ejecuta después de cada" - -#~ msgid "command. If ARG is `-p' then the trap commands associated with" -#~ msgstr "orden. Si ARG es `-p' entonces se muestran las órdenes de captura" - -#~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" -#~ msgstr "asociadas con cada ID_SEÑAL. Si no se proporcionan argumentos o si" - -#~ msgid "only `-p' is given, trap prints the list of commands associated with" -#~ msgstr "" -#~ "sólo se proporciona `-p', trap muestra la lista de órdenes asociadas" - -#~ msgid "" -#~ "each signal number. SIGNAL_SPEC is either a signal name in " -#~ msgstr "" -#~ "con cada número de señal. ID_SEÑAL es un nombre de señal en " - -#~ msgid "" -#~ "or a signal number. `trap -l' prints a list of signal names and their" -#~ msgstr "" -#~ "o un número de señal. `trap -l' muestra una lista de nombres de señal y " -#~ "sus" - -#~ msgid "corresponding numbers. Note that a signal can be sent to the shell" -#~ msgstr "" -#~ "números correspondientes. Note que una señal se puede enviar al shell" - -#~ msgid "with \"kill -signal $$\"." -#~ msgstr "con \"kill -signal $$\"." - -#~ msgid "For each NAME, indicate how it would be interpreted if used as a" -#~ msgstr "Para cada NOMBRE, indica cómo sería interpretada si se usara como" - -#~ msgid "If the -t option is used, returns a single word which is one of" -#~ msgstr "Si se usa la opción -t, regresa una sola palabra que es una de" - -#~ msgid "" -#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" -#~ msgstr "" -#~ "`alias', `keyword', `function', `builtin', `file' ó `', si el NOMBRE es un" - -#~ msgid "" -#~ "alias, shell reserved word, shell function, shell builtin, disk file," -#~ msgstr "" -#~ "alias, palabra reservada del shell, función del shell, orden interna del " -#~ "shell, fichero del disco," - -#~ msgid "or unfound, respectively." -#~ msgstr "o no encontrada, respectivamente." - -#~ msgid "If the -p flag is used, either returns the name of the disk file" -#~ msgstr "" -#~ "Si se usa el indicador -p, regresa el nombre del fichero del sistema" - -#~ msgid "that would be executed, or nothing if -t would not return `file'." -#~ msgstr "que sería ejecutado, o nada si -t no regresa algún `fichero'." - -#~ msgid "If the -a flag is used, displays all of the places that contain an" -#~ msgstr "" -#~ "Si se usa el indicador -a, muestra todos los lugares que contienen un" - -#~ msgid "" -#~ "executable named `file'. This includes aliases and functions, if and" -#~ msgstr "" -#~ "ejecutable llamado `fichero' Esto incluye a aliases y funciones, si y" - -#~ msgid "only if the -p flag is not also used." -#~ msgstr "sólo si el indicador -p no se especifica también." - -#~ msgid "Type accepts -all, -path, and -type in place of -a, -p, and -t," -#~ msgstr "Type acepta -all, -path, y -type en lugar de -a, -p, y -t," - -#~ msgid "respectively." -#~ msgstr "respectivamente." - -#~ msgid "Ulimit provides control over the resources available to processes" -#~ msgstr "" -#~ "ulimit provee control sobre los recursos disponibles para los procesos" - -#~ msgid "started by the shell, on systems that allow such control. If an" -#~ msgstr "" -#~ "iniciados por el shell, en sistemas que permiten dicho control. Si se" - -#~ msgid "option is given, it is interpreted as follows:" -#~ msgstr "establece una opción, se interpreta como sigue:" - -#~ msgid " -S\tuse the `soft' resource limit" -#~ msgstr " -S\tusa el límite de recurso `suave'" - -#~ msgid " -H\tuse the `hard' resource limit" -#~ msgstr " -H\tusa el límite de recurso `duro'" - -#~ msgid " -a\tall current limits are reported" -#~ msgstr " -a\tse muestran todos los límites actuales" - -#~ msgid " -c\tthe maximum size of core files created" -#~ msgstr " -c\tel tamaño máximo de los ficheros `core' creados" - -#~ msgid " -d\tthe maximum size of a process's data segment" -#~ msgstr " -d\tel tamaño máximo del segmento de datos de un proceso" - -#~ msgid " -m\tthe maximum resident set size" -#~ msgstr " -m\tel tamaño máximo para las variables residentes" - -#~ msgid " -s\tthe maximum stack size" -#~ msgstr " -s\tel tamaño máximo de la pila" - -#~ msgid " -t\tthe maximum amount of cpu time in seconds" -#~ msgstr " -t\tla cantidad máxima de tiempo de cpu en segundos" - -#~ msgid " -f\tthe maximum size of files created by the shell" -#~ msgstr " -f\tel número máximo de ficheros creados por el shell" - -#~ msgid " -p\tthe pipe buffer size" -#~ msgstr " -p\tel tamaño del almacenamiento intermedio para tuberías" - -#~ msgid " -n\tthe maximum number of open file descriptors" -#~ msgstr " -n\tel número máximo de descriptores de fichero abiertos" - -#~ msgid " -u\tthe maximum number of user processes" -#~ msgstr " -u\tel número máximo de procesos de usuario" - -#~ msgid " -v\tthe size of virtual memory" -#~ msgstr " -v\tel tamaño de la memoria virtual" - -#~ msgid "If LIMIT is given, it is the new value of the specified resource." -#~ msgstr "" -#~ "Si se establece el LÍMITE, este es el nuevo valor del recurso " -#~ "especificado." - -#~ msgid "Otherwise, the current value of the specified resource is printed." -#~ msgstr "" -#~ "De otra forma, se muestra la lista actual de los recursos especificados." - -#~ msgid "If no option is given, then -f is assumed. Values are in 1k" -#~ msgstr "" -#~ "Si no se establece una opción, entonces se asume -f. Los valores son en " -#~ "incrementos" - -#~ msgid "increments, except for -t, which is in seconds, -p, which is in" -#~ msgstr "de 1k, excepto para -t, que es en segundos, -p, que es en" - -#~ msgid "increments of 512 bytes, and -u, which is an unscaled number of" -#~ msgstr "incrementos de 512 bytes, y -u, que es un número no escalado de" - -#~ msgid "processes." -#~ msgstr "procesos." - -#~ msgid "" -#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" -#~ msgstr "" -#~ "La máscara de creación de ficheros del usuario se establece a MODO. Si " -#~ "se omite el MODO, o si" - -#~ msgid "" -#~ "`-S' is supplied, the current value of the mask is printed. The `-S'" -#~ msgstr "" -#~ "se proporciona `-S', se muestra el valor actual de la máscara. La opción" - -#~ msgid "" -#~ "option makes the output symbolic; otherwise an octal number is output." -#~ msgstr "" -#~ "`-S' logra una salida simbólica; de otra forma la salida es un número " -#~ "octal." - -#~ msgid "If MODE begins with a digit, it is interpreted as an octal number," -#~ msgstr "" -#~ "Si el MODO comienza con un dígito, se interpreta como un número octal," - -#~ msgid "" -#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." -#~ msgstr "" -#~ "de otra forma es una cadena de modo simbólico como la aceptada por chmod" -#~ "(1)." - -#~ msgid "" -#~ "Wait for the specified process and report its termination status. If" -#~ msgstr "Espera al proceso especificado y reporta su estado final. Si no se" - -#~ msgid "N is not given, all currently active child processes are waited for," -#~ msgstr "" -#~ "proporciona N, espera a todos los procesos hijo activos actualmente," - -#~ msgid "and the return code is zero. N may be a process ID or a job" -#~ msgstr "" -#~ "y el código de regreso es cero. N puede ser un ID de proceso o una " -#~ "especificación" - -#~ msgid "specification; if a job spec is given, all processes in the job's" -#~ msgstr "" -#~ "de trabajo; si se proporciona una especificación de trabajo, se espera a " -#~ "todos los procesos en la" - -#~ msgid "pipeline are waited for." -#~ msgstr "línea de ejecución del trabajo." - -#~ msgid "and the return code is zero. N is a process ID; if it is not given," -#~ msgstr "" -#~ "y el código de regreso es cero. N es un ID de proceso; si no se " -#~ "proporcioan," - -#~ msgid "all child processes of the shell are waited for." -#~ msgstr "espera a todos los procesos hijos del shell." - -#~ msgid "The `for' loop executes a sequence of commands for each member in a" -#~ msgstr "" -#~ "El ciclo `for' ejecuta una secuencia de órdenes para cada miembro en una" - -#~ msgid "" -#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" -#~ msgstr "" -#~ "lista de elementos. Si `in PALABRAS ...;' no se encuentra, entonces se " -#~ "asume" - -#~ msgid "" -#~ "assumed. For each element in WORDS, NAME is set to that element, and" -#~ msgstr "" -#~ "`in \"$@\"'. Para cada elemento en PALABRAS, se establece NOMBRE a ese " -#~ "elemento y" - -#~ msgid "the COMMANDS are executed." -#~ msgstr "se ejecutan las ÓRDENES." - -#~ msgid "The WORDS are expanded, generating a list of words. The" -#~ msgstr "Las PALABRAS se expanden, generando una lista de palabras. El" - -#~ msgid "set of expanded words is printed on the standard error, each" -#~ msgstr "" -#~ "conjunto de palabras expandidas se muestra en la salida de error estándar" - -#~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" -#~ msgstr "" -#~ "cada una precedida por un número. Si `in PALABRAS' no se encuentra, se " -#~ "asume" - -#~ msgid "is assumed. The PS3 prompt is then displayed and a line read" -#~ msgstr "`in \"$@\"'. El prompt PS3 se muestra y se lee una línea de" - -#~ msgid "from the standard input. If the line consists of the number" -#~ msgstr "la entrada estándar. Si la línea consiste del número" - -#~ msgid "corresponding to one of the displayed words, then NAME is set" -#~ msgstr "" -#~ "correspondiente a una de las palabras mostradas, entonces se establece " -#~ "NOMBRE" - -#~ msgid "to that word. If the line is empty, WORDS and the prompt are" -#~ msgstr "a esa palabra. Si la línea está vacía, se muestran de nuevo" - -#~ msgid "redisplayed. If EOF is read, the command completes. Any other" -#~ msgstr "" -#~ "las PALABRAS y el prompt. Si se lee EOF, la orden se completa. Cualquier " -#~ "otro" - -#~ msgid "value read causes NAME to be set to null. The line read is saved" -#~ msgstr "valor leído causa que NOMBRE sea nulo. La línea leída se salva en" - -#~ msgid "in the variable REPLY. COMMANDS are executed after each selection" -#~ msgstr "" -#~ "la variable REPLY. Las ÓRDENES se ejecutan después de cada selección" - -#~ msgid "until a break or return command is executed." -#~ msgstr "hasta que se ejecute una orden break ó return." - -#~ msgid "`|' is used to separate multiple patterns." -#~ msgstr "`|' se usa para separar plantillas múltiples." - -#~ msgid "" -#~ "The if COMMANDS are executed. If the exit status is zero, then the then" -#~ msgstr "" -#~ "Las ÓRDENES if se ejecutan. Si el código de regreso es cero, entonces " -#~ "las ÓRDENES" - -#~ msgid "" -#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" -#~ msgstr "" -#~ "then se ejecutan. De otra forma, cada uno de las ÓRDENES elif se ejecutan" - -#~ msgid "" -#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" -#~ msgstr "" -#~ "en turno, y si el código de regreso es cero, las ÓRDENES then " -#~ "correspondientes" - -#~ msgid "" -#~ "are executed and the if command completes. Otherwise, the else COMMANDS" -#~ msgstr "" -#~ "se ejecutan y la orden if se completa. De otra forma, las ÓRDENES else" - -#~ msgid "" -#~ "are executed, if present. The exit status is the exit status of the last" -#~ msgstr "" -#~ "se ejecutan, si se encuentran. El código de salida es el código de " -#~ "salida de la última" - -#~ msgid "command executed, or zero if no condition tested true." -#~ msgstr "orden ejecutada, o cero si ninguna condición probada fue verdadera." - -#~ msgid "`while' COMMANDS has an exit status of zero." -#~ msgstr "`while' tenga un código de salida de cero." - -#~ msgid "`until' COMMANDS has an exit status which is not zero." -#~ msgstr "`until' tenga un código de salida que no sea cero." - -#~ msgid "Create a simple command invoked by NAME which runs COMMANDS." -#~ msgstr "" -#~ "Crea un comando simple invocado por el NOMBRE que ejecuta las ÓRDENES." - -#~ msgid "Arguments on the command line along with NAME are passed to the" -#~ msgstr "" -#~ "Los argumentos en la línea de comando junto con el NOMBRE se pasan a la" - -#~ msgid "function as $0 .. $n." -#~ msgstr "función como $0 .. $n." - -#~ msgid "entire set of commands." -#~ msgstr "conjunto completo de órdenes" - -#~ msgid "This is similar to the `fg' command. Resume a stopped or background" -#~ msgstr "" -#~ "Esto es similar a la orden `fg'. Reinicia un trabajo detenido o en el" - -#~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" -#~ msgstr "" -#~ "background. Si especifica DÍGITOS, entonces se usa ese trabajo. Si " -#~ "proporciona" - -#~ msgid "" -#~ "WORD, then the job whose name begins with WORD is used. Following the" -#~ msgstr "" -#~ "una PALABRA, entonces se usa el trabajo cuyo nombre comience con PALABRA." - -#~ msgid "job specification with a `&' places the job in the background." -#~ msgstr "" -#~ "Al colocar una especificación de trabajo seguido de un `&', se coloca al " -#~ "trabajo en el background. " - -#~ msgid "BASH_VERSION The version numbers of this Bash." -#~ msgstr "BASH_VERSION Los números de versión de este Bash." - -#~ msgid "CDPATH A colon separated list of directories to search" -#~ msgstr "CDPATH Una lista separada por `:' de directorios a buscar" - -#~ msgid "\t\twhen the argument to `cd' is not found in the current" -#~ msgstr "\t\tcuando el argumento para `cd' no se encuentra en el directorio" - -#~ msgid "\t\tdirectory." -#~ msgstr "\t\tactual." - -#~ msgid "" -#~ "HISTFILE The name of the file where your command history is stored." -#~ msgstr "" -#~ "HISTFILE El nombre del fichero donde se guarda la historia de " -#~ "órdenes." - -#~ msgid "HISTFILESIZE The maximum number of lines this file can contain." -#~ msgstr "" -#~ "HISTFILESIZE El número máximo de líneas que este fichero puede " -#~ "contener." - -#~ msgid "HISTSIZE The maximum number of history lines that a running" -#~ msgstr "HISTSIZE El número máximo de líneas de historia que un shell" - -#~ msgid "\t\tshell can access." -#~ msgstr "\t\ten ejecución puede acceder." - -#~ msgid "HOME The complete pathname to your login directory." -#~ msgstr "" -#~ "HOME La ruta completa a su directorio de entrada (login)." - -#~ msgid "" -#~ "HOSTTYPE The type of CPU this version of Bash is running under." -#~ msgstr "" -#~ "HOSTTYPE El tipo de CPU bajo el cual esta versión de Bash corre." - -#~ msgid "" -#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" -#~ msgstr "" -#~ "IGNOREEOF Controla la acción del shell al recibir un carácter EOF" - -#~ msgid "\t\tcharacter as the sole input. If set, then the value" -#~ msgstr "\t\tcomo la única entrada. Si se establece, entonces el valor" - -#~ msgid "\t\tof it is the number of EOF characters that can be seen" -#~ msgstr "" -#~ "\t\tde esta variable es el número de caracteres EOF que se pueden recibir" - -#~ msgid "\t\tin a row on an empty line before the shell will exit" -#~ msgstr "" -#~ "\t\ten forma seguida en una línea vacía antes de que el shell termine" - -#~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." -#~ msgstr "" -#~ "\t\t(10 por omisión). Cuando se desactiva, EOF significa el fin de la " -#~ "entrada." - -#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." -#~ msgstr "" -#~ "MAILCHECK\tQue tan seguido, en segundos, Bash revisa si hay correo nuevo." - -#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" -#~ msgstr "" -#~ "MAILPATH\tUna lista de nombres de fichero separados por dos puntos que " -#~ "Bash revisa" - -#~ msgid "\t\tfor new mail." -#~ msgstr "\t\tpor correo nuevo." - -#~ msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." -#~ msgstr "" -#~ "OSTYPE\t\tLa versión de Unix bajo la cual esta versión de Bash se ejecuta." - -#~ msgid "PATH A colon-separated list of directories to search when" -#~ msgstr "" -#~ "PATH Una lista de directorios separada por dos puntos para " -#~ "buscar" - -#~ msgid "\t\tlooking for commands." -#~ msgstr "\t\tcuando se requieren órdenes." - -#~ msgid "PROMPT_COMMAND A command to be executed before the printing of each" -#~ msgstr "PROMPT_COMMAND Una orden a ejecutar antes de mostrar cada" - -#~ msgid "\t\tprimary prompt." -#~ msgstr "\t\tprompt primario." - -#~ msgid "PS1 The primary prompt string." -#~ msgstr "PS1 La cadena primaria de prompt." - -#~ msgid "PS2 The secondary prompt string." -#~ msgstr "PS2 La cadena secundaria de prompt." - -#~ msgid "TERM The name of the current terminal type." -#~ msgstr "TERM El nombre del tipo de terminal actual." - -#~ msgid "auto_resume Non-null means a command word appearing on a line by" -#~ msgstr "" -#~ "auto_resume Si no es nulo significa que una palabra de orden que " -#~ "aparece en una línea" - -#~ msgid "\t\titself is first looked for in the list of currently" -#~ msgstr "\t\tpor sí mismo se busca primero en la lista de trabajos detenidos" - -#~ msgid "\t\tstopped jobs. If found there, that job is foregrounded." -#~ msgstr "" -#~ "\t\tactualmente. Si se encuentra ahí, ese trabajo se trae a primer plano." - -#~ msgid "\t\tA value of `exact' means that the command word must" -#~ msgstr "\t\tEl valor `exact' significa que la palabra de la orden debe" - -#~ msgid "\t\texactly match a command in the list of stopped jobs. A" -#~ msgstr "" -#~ "\t\tcoincidir exactamente con una orden en la lista de trabajos " -#~ "detenidos. El" - -#~ msgid "\t\tvalue of `substring' means that the command word must" -#~ msgstr "\t\tvalor `substring' significa que la palabra de la orden debe" - -#~ msgid "\t\tmatch a substring of the job. Any other value means that" -#~ msgstr "" -#~ "\t\tcoincidir con una subcadena del trabajo. Cualquier otro valor " -#~ "significa que" - -#~ msgid "\t\tthe command must be a prefix of a stopped job." -#~ msgstr "\t\tla orden debe ser un prefijo de un trabajo detenido." - -#~ msgid "command_oriented_history" -#~ msgstr "command_oriented_history" - -#~ msgid "" -#~ " Non-null means to save multiple-line commands together on" -#~ msgstr "" -#~ " Si no es nulo significa que debe guardar órdenes de " -#~ "varias líneas juntas en" - -#~ msgid " a single history line." -#~ msgstr " una sola línea de historia." - -#~ msgid "histchars Characters controlling history expansion and quick" -#~ msgstr "" -#~ "histchars Caracteres que controlan la expansión de la historia y la" - -#~ msgid "\t\tsubstitution. The first character is the history" -#~ msgstr "\t\tsustitución rápida. El primer carácter es el carácter de" - -#~ msgid "\t\tsubstitution character, usually `!'. The second is" -#~ msgstr "\t\tsustutución de historia, generalmente `!'. El segundo es" - -#~ msgid "\t\tthe `quick substitution' character, usually `^'. The" -#~ msgstr "\t\tel carácter de `sustitución rápida', generalmente `^'. El" - -#~ msgid "\t\tthird is the `history comment' character, usually `#'." -#~ msgstr "" -#~ "\t\ttercero es el carácter de `comentario de historia', generalmente `#'." - -#~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter" -#~ msgstr "" -#~ "HISTCONTROL\tEstablecido con el valor `ignorespace', significa que no " -#~ "agrega" - -#~ msgid "\t\tlines which begin with a space or tab on the history" -#~ msgstr "\t\tlíneas que inicien con un espacio o tabulador a la lista de" - -#~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't" -#~ msgstr "\t\thistoria. Con el valor `ignoredups', significa que no agrega" - -#~ msgid "\t\tenter lines which match the last entered line. Set to" -#~ msgstr "\t\tlíneas que coincidan con la última línea introducida. Con" - -#~ msgid "\t\t`ignoreboth' means to combine the two options. Unset," -#~ msgstr "" -#~ "\t\t`ignoreboth' significa que combina las dos opciones. Sin establecer," - -#~ msgid "\t\tor set to any other value than those above means to save" -#~ msgstr "" -#~ "\t\to con cualquier otro valor diferente a los arriba mencionados " -#~ "significa" - -#~ msgid "\t\tall lines on the history list." -#~ msgstr "\t\tguardar todas las líneas en la lista de la historia." - -#~ msgid "Toggle the values of variables controlling optional behavior." -#~ msgstr "" -#~ "Cambia los valores de las variables que controlan conductas opcionales." - -#~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" -#~ msgstr "" -#~ "El indicador -s significa establecer cada NOMBRE_OPCIÓN; el indicador -u" - -#~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" -#~ msgstr "" -#~ "borra cada NOMBRE_OPCIÓN. El indicador -q suprime la salida; el estado" - -#~ msgid "status indicates whether each OPTNAME is set or unset. The -o" -#~ msgstr "de salida indica cuál NOMBRE_OPCIÓN está activado o no. La opción" - -#~ msgid "option restricts the OPTNAMEs to those defined for use with" -#~ msgstr "" -#~ "-o restringe a los NOMBRE_OPCIONes a aquéllos definidos para su uso con" - -#~ msgid "`set -o'. With no options, or with the -p option, a list of all" -#~ msgstr "" -#~ "`set -o'. Sin opciones, o con la opción -p, se muestra una lista de" - -#~ msgid "settable options is displayed, with an indication of whether or" -#~ msgstr "todas las opciones activables, con una indicación de si se puede" - -#~ msgid "not each is set." -#~ msgstr "o no activar cada una." +" Sinónimo de `mapfile'." diff --git a/po/et.gmo b/po/et.gmo index fe7414264..018c11f32 100644 Binary files a/po/et.gmo and b/po/et.gmo differ diff --git a/po/et.po b/po/et.po index 02eb22a0e..ccd3c7a96 100644 --- a/po/et.po +++ b/po/et.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 3.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" "PO-Revision-Date: 2006-11-11 16:38+0200\n" "Last-Translator: Toomas Soome \n" "Language-Team: Estonian \n" @@ -14,120 +14,121 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8-bit\n" "Language: et\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "vigane massiivi indeks" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%s: vigane tegevuse nimi" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: mitte-numbrilisele indeksile ei saa omistada" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ei saa luua: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: esimine mitte-tühemik sümbol pole `\"'" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "sulgev `%c' puudub %s sees" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: puudub eraldav koolon" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "%s: vigane tegevuse nimi" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ei saa lugeda: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': ei saa lahti siduda" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': tundmatu funktsiooni nimi" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s ei ole seotud ühegi klahviga.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s saab kasutada läbi " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': ei saa lahti siduda" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "omab mõtet ainult `for', `while' või `until' tsüklis" @@ -139,236 +140,236 @@ msgid "" " Without EXPR, returns " msgstr "Tagastab jooksva alamprotseduuri konteksti." -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME pole seatud" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "liiga palju argumente" -#: builtins/cd.def:336 +#: builtins/cd.def:341 #, fuzzy msgid "null directory" msgstr "teist kataloogi pole" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD pole seatud" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "" -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, fuzzy, c-format msgid "warning: " msgstr "%s: hoiatus: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, fuzzy, c-format msgid "%s: usage: " msgstr "%s: hoiatus: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: võti nõuab argumenti" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: nõutakse numbrilist argumenti" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: ei leitud" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: vigane võti" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: vigane võtme nimi" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': ei ole lubatud identifikaator" -#: builtins/common.c:246 +#: builtins/common.c:240 #, fuzzy msgid "invalid octal number" msgstr "vigane signaali number" -#: builtins/common.c:248 +#: builtins/common.c:242 #, fuzzy msgid "invalid hex number" msgstr "vigane number" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "vigane number" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: vigane signaali spetsifikatsioon" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': ei ole pid ega korrektne töö spetsifikatsioon" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: mittemuudetav muutuja" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s on piiridest väljas" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s on piiridest väljas" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: sellist tööd pole" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: töökontroll puudub" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "töökontroll puudub" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: piiratud" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "piiratud" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ei ole sisekäsk" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "kirjutamise viga: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: segane töö" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: vigane tegevuse nimi" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "hoiatus: võti -F ei pruugi töötada nagu te ootate" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "hoiatus: võti -C ei pruugi töötada nagu te ootate" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "saab kasutada ainult funktsioonis" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: vigane tegevuse nimi" +msgstr "" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "võtit `-f' ei saa funktsiooni loomiseks kasutada" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: funktsioon ei ole muudetav" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: masiivi muutujaid ei saa nii kustutada" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -402,68 +403,68 @@ msgstr "%s: pole d msgid "%s: cannot delete: %s" msgstr "%s: ei saa kustutada: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: on kataloog" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: ei ole tavaline fail" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: fail on liiga suur" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kahendfaili ei õnnestu käivitada" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: ei saa käivitada: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "pole login shell: kasutage `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Teil on peatatud töid.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, fuzzy, c-format msgid "There are running jobs.\n" msgstr "Teil on peatatud töid.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "käsku ei ole" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: ajutist faili ei saa avada: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "" @@ -478,39 +479,38 @@ msgstr "%s: lubamatu v msgid "%s: option requires an argument -- %c\n" msgstr "%s: võti nõuab argumenti -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, fuzzy, c-format msgid "hits\tcommand\n" msgstr "viimane käsklus: %s\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "" msgstr[1] "" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ei saa avada: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -522,20 +522,21 @@ msgid "" "\n" msgstr "" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: vigane number" +msgstr "%s: vigane võtme nimi" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "" @@ -549,16 +550,16 @@ msgstr "%s: vigane teenus" msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Tundmatu viga" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "oodati avaldist" @@ -567,70 +568,70 @@ msgstr "oodati avaldist" msgid "%s: not an indexed array" msgstr "%s: pole massiiv" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%s: vigane võti" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%s: vigane võti" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "%s: vigane tegevuse nimi" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 #, fuzzy msgid "empty array variable name" msgstr "%s: pole massiiv" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: vigane signaali spetsifikatsioon" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, fuzzy, c-format msgid "warning: %s: %s" msgstr "%s: hoiatus: " -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -644,19 +645,19 @@ msgstr "teist kataloogi pole" msgid "%s: invalid argument" msgstr "%s: vigane number" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -680,7 +681,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -705,7 +706,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -731,40 +732,40 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "viga lugemisel: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: ei saa eemaldada" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ei saa eemaldada: %s on ainult lugemiseks" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: pole massiiv" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: ei ole funktsioon" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: ei saa eemaldada" @@ -773,20 +774,20 @@ msgstr "%s: ei saa eemaldada" msgid "shift count" msgstr "shift arv" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: faili ei ole" @@ -799,61 +800,61 @@ msgstr "peatamine ei msgid "cannot suspend a login shell" msgstr "login shelli ei saa peatada" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s on shelli võtmesõna\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s: on funktsioon\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s on shelli sisekäsk\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s on shelli sisekäsk\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s on %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': halb käsklus" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ei õnnestu lugeda piirangut: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ei õnnestu muuta piirangut: %s" @@ -872,398 +873,407 @@ msgstr "" msgid "`%c': invalid symbolic mode character" msgstr "" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr "" -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "viimane käsklus: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Katkestan..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "tundmatu viga käsus" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: sidumata muutuja" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 #, fuzzy msgid "pipe error" msgstr "kirjutamise viga: %s" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: piiratud: käskudes ei saa kasutada sümboleid `/'" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: käsku ei ole" -#: execute_cmd.c:5470 -#, fuzzy, c-format +#: execute_cmd.c:5682 +#, c-format msgid "%s: %s" -msgstr "%s on %s\n" +msgstr "" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: halb interpretaator" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kahendfaili ei õnnestu käivitada" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s on shelli sisekäsk\n" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "avaldise rekursioon on liiga sügav" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "süntaksi viga avaldises" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "üritati omistada mitte-muutujale" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "süntaksi viga avaldises" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "nulliga jagamine" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "eksponent on väiksem kui 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "puudub `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "süntaksi viga: oodati operandi" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "süntaksi viga: vigane aritmeetiline operaator" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "vigane aritmeetiline baas" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "väärtus on baasiks liiga suur" -#: expr.c:1546 +#: expr.c:1637 #, fuzzy, c-format msgid "%s: expression error\n" msgstr "%s: oodati täisarvude avaldist" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: vanemkataloogidele ei ole juurdepääsu" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: pid puudub" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: töö %d on peatatud" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: töö on lõpetatud" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: töö %d on juba taustal" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3970 +#: jobs.c:4120 #, fuzzy, c-format msgid "%s: line %d: " msgstr "%s: hoiatus: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:4104 +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 #, fuzzy msgid "unknown" msgstr "%s: tundmatu masin" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "" @@ -1305,22 +1315,22 @@ msgstr "" msgid "network operations not supported" msgstr "" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "" @@ -1338,147 +1348,147 @@ msgstr "Teil on uus kiri kaustas $_" msgid "The mail in %s has been read\n" msgstr "Kiri kaustas %s on loetud\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "süntaksi viga: nõutakse aritmeetilist avaldist" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "süntaksi viga: ootamatu `;'" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "süntaksi viga: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "süntaksi viga tingimuslikus avaldises" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "ootamatu märk `%s', oodati `)'" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "oodati `)'" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "süntaksi viga kohal `%s'" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "süntaksi viga: ootamatu faililõpp" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "süntaksi viga" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Käsuinterpretaatorist väljumiseks kasutage \"%s\".\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1507,90 +1517,94 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "faili deskriptor on piiridest väljas" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: segane ümbersuunamine" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: fail on olemas, ei kirjuta üle" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: piiratud: väljundit ei saa ümber suunata" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:196 +#: redir.c:192 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "$%s: sedasi ei saa omistada" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "viga ümbersuunamisel: fd duplikaadi loomine ei õnnestu" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "/tmp puudub, palun looge see!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp peab olema kataloogi nimi" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: vigane võti" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: on kataloog" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Mul ei ole nime!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1599,50 +1613,50 @@ msgstr "" "Kasuta:\t%s [GNU pikk võti] [võti] ...\n" "\t%s [GNU pikk võti] [võti] skript-fail ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU pikad võtmed:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Käsuinterpretaatori võtmed:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD või -c käsklus või -O lühivõti\t\t(ainult käivitamine)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s või -o võti\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Vigadest teatamiseks kasutage käsku `bashbug'.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: vigane operatsioon" @@ -1709,9 +1723,8 @@ msgid "Alarm clock" msgstr "" #: siglist.c:111 -#, fuzzy msgid "Terminated" -msgstr "piiratud" +msgstr "" #: siglist.c:115 msgid "Urgent IO condition" @@ -1818,103 +1831,107 @@ msgstr "" msgid "Unknown Signal #%d" msgstr "" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "sulgev `%c' puudub %s sees" +msgstr "" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: halb asendus" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: vigane võti" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "%s: vigane tegevuse nimi" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameeter on null või pole seatud" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameeter on null või pole seatud" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: halb asendus" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: sedasi ei saa omistada" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:9349 +#: subst.c:10043 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sulgev `%c' puudub %s sees" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "ei leitud: %s" @@ -1937,114 +1954,119 @@ msgstr "oodati `)'" msgid "`)' expected, found %s" msgstr "oodati `)', saadi %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: eeldati unaarset operaatorit" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: eeldati binaarset operaatorit" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "puudub `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "vigane signaali number" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: halb väärtus muutujas trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: signaali käsitleja on SIG_DFL, saadan %d (%s) iseendale" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: vigane signaal %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shelli tase (%d) on liiga kõrge, kasutan väärtust 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: praegune skoop pole funktsiooni kontekst" -#: variables.c:2432 -#, fuzzy, c-format +#: variables.c:2674 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "$%s: sedasi ei saa omistada" +msgstr "" -#: variables.c:3043 +#: variables.c:3453 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: praegune skoop pole funktsiooni kontekst" -#: variables.c:4218 +#: variables.c:4698 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parameeter on null või pole seatud" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: pole global_variables kontekst" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5619 +#: variables.c:6272 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: ei saa avada: %s" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5669 +#: variables.c:6322 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s on piiridest väljas" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" #: version.c:47 version2.c:47 @@ -2066,22 +2088,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "" -#: xmalloc.c:93 +#: xmalloc.c:95 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: ei saa luua: %s" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "" -#: xmalloc.c:165 +#: xmalloc.c:167 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: ei saa luua: %s" @@ -2285,7 +2307,7 @@ msgid "umask [-p] [-S] [mode]" msgstr "" #: builtins.c:177 -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "" #: builtins.c:181 @@ -2378,7 +2400,7 @@ msgstr "" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2390,7 +2412,7 @@ msgid "" msgstr "" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "" #: builtins.c:242 @@ -2401,8 +2423,8 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" #: builtins.c:256 @@ -2510,7 +2532,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" #: builtins.c:369 @@ -2654,11 +2676,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2726,12 +2748,18 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2744,7 +2772,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2771,7 +2799,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2783,7 +2811,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -2824,7 +2852,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2847,7 +2875,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -2855,7 +2883,7 @@ msgid "" " is that of the last command executed." msgstr "" -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -2864,7 +2892,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2894,7 +2922,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -2906,7 +2934,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -2920,7 +2948,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -2944,7 +2972,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -2959,14 +2987,14 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " "given." msgstr "" -#: builtins.c:836 +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2975,7 +3003,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3000,7 +3029,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3024,7 +3053,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3041,7 +3070,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:918 +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3064,7 +3093,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3109,7 +3138,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3130,7 +3159,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3161,7 +3190,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3173,7 +3202,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3259,7 +3288,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3281,7 +3310,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3300,7 +3329,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3321,7 +3350,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -3332,7 +3361,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3346,7 +3375,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -3360,7 +3389,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3443,7 +3472,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3451,7 +3480,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -3463,7 +3492,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -3507,7 +3536,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -3537,7 +3566,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -3586,7 +3615,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -3604,7 +3633,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3612,19 +3641,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3639,7 +3670,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3652,7 +3683,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -3669,7 +3700,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3689,7 +3720,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3705,7 +3736,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3716,7 +3747,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3737,7 +3768,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3748,7 +3779,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3759,7 +3790,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1653 +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3772,7 +3803,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -3786,7 +3817,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -3797,7 +3828,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -3811,7 +3842,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3822,7 +3853,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -3850,7 +3881,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3904,7 +3935,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -3935,7 +3966,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -3962,7 +3993,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -3991,14 +4022,13 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4012,7 +4042,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4051,7 +4081,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1953 +#: builtins.c:1961 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4069,16 +4099,20 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4091,7 +4125,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -4106,6 +4140,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -4122,7 +4157,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4164,25 +4199,13 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" - -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" - -#, fuzzy -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" - #~ msgid " " #~ msgstr " " diff --git a/po/fi.gmo b/po/fi.gmo index 96ee531ac..88502dd25 100644 Binary files a/po/fi.gmo and b/po/fi.gmo differ diff --git a/po/fi.po b/po/fi.po index 5fb8cc48c..5fffd5e0f 100644 --- a/po/fi.po +++ b/po/fi.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" "PO-Revision-Date: 2009-05-09 15:13+0300\n" "Last-Translator: Pekka Niemi \n" "Language-Team: Finnish \n" @@ -17,124 +17,125 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fi\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 0.3\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "virheellinen taulukkoindeksi" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: indeksoitua taulukkoa ei voi muuttaa assosiatiiviseksi" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: virheellinen assosiatiivinen indeksi" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ei voida sijoittaa epänumeeriseen indeksiin" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: assosiatiiviseen taulukkoon sijoitettaessa täytyy käyttää " "avainindeksiä" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ei voida luoda: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: komennolle ei löydy näppäinkarttaa" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: ensimmäinen ei-tyhjä merkki ei ole ”\"”" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "ei loppumerkkiä ”%c” rivissä %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: puuttuva kaksoispiste-erotin" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "”%s”: virheellinen näppäinkartan nimi" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "rivieditointi ei ole käytössä" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "”%s”: virheellinen näppäinkartan nimi" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ei voida lukea: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "”%s”: ei voida irrottaa" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "”%s”: tuntematon funktio" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s ei ole sidottu mihinkään näppäimeen.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s voidaan käynnistää näppäinkomennolla " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "”%s”: ei voida irrottaa" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "toistolaskuri" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "voidaan käyttää vain ”for”-, ”while”- tai ”until”-silmukoissa" @@ -148,234 +149,234 @@ msgstr "" " \n" " Ilman LAUSEKETTA palauttaa" -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME-ympäristömuuttujaa ei ole asetettu" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "liian monta argumenttia" -#: builtins/cd.def:336 +#: builtins/cd.def:341 #, fuzzy msgid "null directory" msgstr "ei toista hakemistoa" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD-ympäristömuuttujaa ei ole asetettu" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "rivi %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "varoitus: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: käyttö: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: valitsin vaatii argumentin" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: vaaditaan numeerinen argumentti" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: ei löytynyt" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: virheellinen valitsin" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: virheellinen valitsimen nimi" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "”%s”: virheellinen tunniste" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "virheellinen oktaaliluku" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "virheellinen heksadesimaaliluku" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "virheellinen luku" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: virheellinen signaalimääritys" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "”%s”: ei ole prosessitunnus eikä kelvollinen työtunniste" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: kirjoitussuojattu muuttuja" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s rajojen ulkopuolella" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argumentti" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s rajojen ulkopuolella" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: työtä ei löydy" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: ei työnohjausta" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "ei työnohjausta" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: rajoitettu" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "rajoitettu" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ei ole komentotulkin sisäänrakennettu komento" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "kirjoitusvirhe: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "pääteasetuksia asetettaessa tapahtui virhe: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "pääteasetuksia luettaessa tapahtui virhe: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: nykyhakemistoa luettaessa tapahtui virhe: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: ei ole yksiselitteinen työtunniste" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: virheellinen toiminnon nimi" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: ei lavennusmääritystä" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "varoitus: -F -valitsin ei ehkä toimi odotetusti" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "varoitus: -C -valitsin ei ehkä toimi odotetusti" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "tällä hetkellä komennon lavennusfunktiota ei suoriteta" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "voidaan käyttää ainoastaan funktiossa" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 -#, fuzzy, c-format +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 +#, c-format msgid "%s: circular name reference" -msgstr "%d: virheellinen tiedostokahva: %s" +msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%d: virheellinen tiedostokahva: %s" +msgstr "" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "”-f”:ää ei voida käyttää funktioiden luomiseen" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: kirjoitussuojattu funktio" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: taulukkomuuttujia ei voi tuhota näin" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: assosiatiivista taulukkoa ei voi muuttaa indeksoiduksi" @@ -409,68 +410,68 @@ msgstr "%s: ei dynaamisesti ladattu" msgid "%s: cannot delete: %s" msgstr "%s: ei voida poistaa: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: on hakemisto" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: ei tavallinen tiedosto" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: tiedosto on liian iso" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: binääritiedostoa ei voida suorittaa" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: ei voida suorittaa: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "lopetus\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "ei ole sisäänkirjautumiskomentotulkki: käytä komentoa ”exit”" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Töitä on pysäytettynä.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Töitä on ajossa.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "ei löytynyt komentoa" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "komentohistoriamääritys" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: väliaikaistiedostoa ei voitu avata: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "nykyinen" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "työ %d käynnistyi ilman työnohjausta" @@ -485,28 +486,27 @@ msgstr "%s: virheellinen valitsin – %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: valitsin vaatii argumentin – %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hajautus kytketty pois" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: hajautustaulukko on tyhjä\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "osumia\tkomento\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Sopivat komennot avainsanaan `" msgstr[1] "Sopivat komennot avainsanoihin `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -514,12 +514,12 @@ msgstr "" "Ohjeita kohteelle ”%s” ei löydy. Kokeile ”help help”, ”man -k %s” tai \n" "”info %s”." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ei voida avata: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -540,20 +540,21 @@ msgstr "" "Asteriski (*) nimen vieressä tarkoittaa, että komennon käyttö on estetty.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "valitsimista -anrw voidaan käyttää vain yhtä" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "sijainti komentohistoriassa" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: virheellinen rajoitusargumentti" +msgstr "%s: virheellinen valitsimen nimi" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: historiaviittaus epäonnistui" @@ -567,16 +568,16 @@ msgstr "%s: inlib epäonnistui" msgid "no other options allowed with `-x'" msgstr "”-x”:n kanssa ei voida käyttää muita valitsimia" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenttien pitää olla prosessi- tai työtunnisteita" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Tuntematon virhe" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "odotettiin lauseketta" @@ -585,69 +586,69 @@ msgstr "odotettiin lauseketta" msgid "%s: not an indexed array" msgstr "%s: ei ole taulukkomuuttuja" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: virheellinen tiedostokahvamääritys" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: virheellinen tiedostokahva: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: virheellinen rivimäärä" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: virheellinen taulukkoindeksi" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: virheellinen paluukutsumäärä" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "tyhjä taulukkomuuttujan nimi" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "vaaditaan tukea taulukkomuuttujille" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "”%s”: puuttuva muotoilumerkki" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: virheellinen aikakatkaisumääritys" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "”%c”: virheellinen muotoilumerkki" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "varoitus: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "\\x:stä puuttuu heksadesimaalinumero" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "\\x:stä puuttuu heksadesimaalinumero" @@ -661,19 +662,19 @@ msgstr "ei toista hakemistoa" msgid "%s: invalid argument" msgstr "%s: virheellinen rajoitusargumentti" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "hakemistopino on tyhjä" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "hakemistopinon indeksi" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -715,7 +716,7 @@ msgstr "" " -N\tNäyttää listan N:nnen alkion (laskien oikealta dirs-komennon\n" " \tantamasta listasta). Valitsimetta kutsuttaessa aloitetaan nollasta." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -757,7 +758,7 @@ msgstr "" " \n" " Sisäänrakennettu ”dirs”-komento näyttää hakemistopinon." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -800,40 +801,40 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: virheellinen aikakatkaisumääritys" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "lukuvirhe: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "”return” on käytettävissä vain funktiossa tai ladatussa skriptissä" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "funktiota ja muuttujaa ei voi poistaa yhtä aikaa" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: ei voida poistaa" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ei voida poistaa: kirjoitussuojattu %s" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: ei ole taulukkomuuttuja" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: ei ole funktio" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: ei voida poistaa" @@ -842,22 +843,22 @@ msgstr "%s: ei voida poistaa" msgid "shift count" msgstr "siirtolaskuri" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "" "komentotulkin valitsimia ei voida laittaa päällä ja ottaa pois päältä " "samanaikaisesti" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: virheellinen komentotulkin valitsimen nimi" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "vaaditaan tiedostonimi argumentiksi" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: tiedostoa ei löytynyt" @@ -870,61 +871,61 @@ msgstr "ei voida keskeyttää" msgid "cannot suspend a login shell" msgstr "sisäänkirjautumiskomentotulkkia ei voi keskeyttää" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s on aliasioitu ”%s”\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s on komentotulkin avainsana\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s on funktio\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s on komentotulkin sisäänrakennettu komento\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s on komentotulkin sisäänrakennettu komento\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s on %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s on hajautettu (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: virheellinen rajoitusargumentti" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "”%c”: virheellinen komento" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: rajoitusta ei saada: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "rajoitus" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: rajoitusta ei voida muokata: %s" @@ -943,357 +944,367 @@ msgstr "”%c”: virheellinen symbolisen tilan operaattori" msgid "`%c': invalid symbolic mode character" msgstr "”%c”: virheellinen symbolisen tilan merkki" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " rivi " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "viimeinen komento: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Keskeytetään..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "tuntematon komentovirhe" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "virheellinen komentotyyppi" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "virheellinen liittäjä" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "virheellinen hyppy" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: sitomaton muuttuja" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aaikakatkaisu: automaattinen uloskirjautuminen\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "syötettä ei voida lukea tiedostosta /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "AJAN MUOTOMÄÄRITYS: ”%c”: virheellinen muotoilumerkki" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "putkitusvirhe" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: rajoitettu: komentojen nimissä ei voi käyttää ”/”-merkkiä" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: komentoa ei löydy" -#: execute_cmd.c:5470 -#, fuzzy, c-format +#: execute_cmd.c:5682 +#, c-format msgid "%s: %s" -msgstr "%s on %s\n" +msgstr "" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: virheellinen tulkki" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: binääritiedostoa ei voida suorittaa" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s on komentotulkin sisäänrakennettu komento\n" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "tiedostokahvaa %d ei voida kopioida kahvaksi %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "lausekkeen rekursiomäärä ylittyi" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "rekursiopinon alivuoto" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "lauseoppivirhe lausekkeessa" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "yritettiin sijoittaa objektiin, joka ei ole muuttuja" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "lauseoppivirhe lausekkeessa" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "jako nollalla" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "bugi: virheellinen sijoitusavainsana" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "”:”:ttä odotettiin ehdolliseen lausekkeeseen" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "eksponentti on pienempi kuin 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "odotettiin muuttujaa ++:n tai --:n jälkeen" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "puuttuva ”)”" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "lauseoppivirhe: odotettiin operandia" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "lauseoppivirhe: virheellinen aritmetiikkaoperaattori" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (virheellinen avainsana on ”%s”)" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "virheellinen lukujärjestelmä" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "liian iso luku lukujärjestelmälle" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: virhe lausekkeessa\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: ylempiin hakemistoihin ei päästä" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "bashin syötteeksi ei voida avata uutta tiedostokahvaa kahvasta %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: uudella tiedostokahvalla %d on jo puskuri" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp-putki" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "haarautettu prosessi-id %d on ajossa olevalla työllä %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "poistetaan pysäytetty työ %d prosessiryhmästä %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: prosessi %5ld (%s) putkijonossa" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: prosessi %5ld (%s) on merkattu vielä toimivaksi" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: prosessitunnusta ei löydy." -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Signaali %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Valmis" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Pysäytetty" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Pysäytetty(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Ajossa" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Valmis(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Poistui %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Tuntematon tila" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(luotiin core-tiedosto)" -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (työhakemisto: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "lapsiprosessin setpgid (%ld => %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: prosessi %ld ei ole tämän komentotulkin lapsiprosessi" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Prosessista %ld ei ole tietoja" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: työ %d on pysäytetty" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: työ on lopetettu" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: työ %d on jo taustalla" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: rivi %d:" -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (luotiin core-tiedosto)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(työhakemisto nyt: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp epäonnistui" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: vuonhallinta" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: vuonhallinta" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "päätteen prosessiryhmää ei voitu asettaa (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "tällä komentotulkilla ei ole työnohjausta" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: varmistus epäonnistui: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1302,39 +1313,39 @@ msgstr "" "\r\n" "malloc: %s:%d: varmistus epäonnistui\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "tuntematon" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: vapaitten listan lohko ylikirjoittui" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: kutsuttiin argumenttina jo vapautettu lohko" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: kutsuttuun argumenttina varaamaton lohko" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: alku- ja loppulohkojen koot eroavat" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: kutsuargumentti on varaamaton lohko" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: alku- ja loppulohkojen koot eroavat" @@ -1376,22 +1387,22 @@ msgstr "%s: virheellinen verkkopolkumääritys" msgid "network operations not supported" msgstr "verkko-operaatioita ei ole tuettu" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:259 +#: locale.c:272 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "xrealloc: %s:%d: ei voida varata %lu tavua" -#: locale.c:261 +#: locale.c:274 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: %s:%d: ei voida varata %lu tavua" @@ -1409,149 +1420,149 @@ msgstr "Sinulla on uutta postia laatikossa $_" msgid "The mail in %s has been read\n" msgstr "Posti laatikossa %s on luettu\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "lauseoppivirhe: vaaditaan aritmeettinen lauseke" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "lauseoppivirhe: odottamaton ”;”" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "lauseoppivirhe: ”((%s))”" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: virheellinen käskytyyppi %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-dokumentti rivillä %d päättyi tiedoston loppumiseen (haluttiin ”%s”)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: uudelleenohjaus ”%d” rajojen ulkopuolella" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "odottamaton EOF (tiedostonloppu) odotettaessa sulkevaa ”%c”" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "odottamaton EOF odotettaessa ”]]”" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "lauseoppivirhe ehdollisessa lausekkeessa: odottamaton avainsana ”%s”" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "lauseoppivirhe ehdollisessa lausekkeessa" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "odottamaton avainsana ”%s”, odotettiin ”)”" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "odototettiin ”)”" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "odottamaton argumentti ”%s” ehdolliselle unaariselle operaattorille" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "odottamaton argumentti ehdolliselle unaariselle operaattorille" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" "odottamaton avainsana ”%s”, odotettiin ehdollista binääristä operaattoria" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "odotettiin ehdollista binääristä operaattoria" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "odottamaton argumentti ”%s” ehdolliselle binääriselle operaattorille" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "odottamaton argumentti ehdolliselle binääriselle operaattorille" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "odottamaton avainsana ”%c” ehdollisessa komennossa" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "odottamaton avainsana ”%s” ehdollisessa komennossa" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "odottamaton avainsana %d ehdollisessa komennossa" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "lauseoppivirhe lähellä odottamatonta avainsanaa ”%s”" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "lauseoppivirhe lähellä ”%s”" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "lauseoppivirhe: odottamaton tiedostonloppu" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "lauseoppivirhe" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Kirjoita ”%s” poistuaksesi komentotulkista.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "Odottamaton EOF odotettaessa vastaavaa ”)”" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "täydennys: funktiota ”%s” ei löytynyt" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1580,90 +1591,94 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ”%c”: virheellinen muotoilumerkki" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "tiedostokahva rajojen ulkopuolella" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: epämääräinen uudelleenohjaus" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: olemassa olevan tiedoston päälle ei voida kirjoittaa" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: rajoitettu: tulostusta ei voida uudelleenohjata" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "here-dokumentille ei voida luoda väliaikaistiedostoa: %s" -#: redir.c:196 +#: redir.c:192 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: listaa ei voida sijoittaa taulukon alkioon" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port-muotoa ei tueta ilman tietoliikennettä" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "virhe uudelleenohjauksessa: tiedostokahvaa ei voida kopioida" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "/tmp-hakemistoa ei löytynyt, luo se!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp:n pitää olla kelvollinen hakemiston nimi" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: virheellinen valitsin" -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d" -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: on hakemisto" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Minulla ei ole nimeä!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versio %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1672,55 +1687,55 @@ msgstr "" "Käyttö:\t%s[GNU:n pitkä valitsin] [valitsin] ...\n" "\t%s [GNU:n pitkä valitsin] [valitsin] komentotiedosto ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU:n pitkät valitsimet:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Komentotulkin valitsimet:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" "\t-irsD tai -c komento tai -O shopt_option (ainoastaan käynnistettäessä)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s tai -o -valitsin\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Kirjoita ”%s -c 'help set'” saadaksesi lisätietoja komentotulkin " "valitsimista.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Kirjoita ”%s -c help” saadaksesi lisätietoja komentotulkin " "sisäänrakennetuista komennoista.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Raportoi virheet komennolla ”bashbug”.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: virheellinen operaatio" @@ -1894,103 +1909,108 @@ msgstr "Tuntematon signaali #" msgid "Unknown Signal #%d" msgstr "Tuntematon signaali #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "virheellinen korvaus: ei sulkevaa ”%s” jonossa %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: listaa ei voida sijoittaa taulukon alkioon" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "putkea ei voida luoda prosessin korvaamista varten" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "lapsiprosessia ei voida luoda prosessin korvaamista varten" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nimettyä putkea %s ei voida avata lukemista varten" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "nimettyä putkea %s ei voida avata kirjoitusta varten" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nimettyä putkea %s ei voida kopioida tiedostokahvaksi %d" -#: subst.c:5959 +#: subst.c:6062 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "virheellinen korvaus: ei sulkevaa ”`” jonossa %s" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "putkea ei voida luoda komennon korvaamista varten" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "ei voida luoda lapsiprosessia komennon korvaamista varten" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: putkea ei voida kopioida tiedostokahvaksi 1" -#: subst.c:6580 subst.c:8939 -#, fuzzy, c-format -msgid "%s: invalid variable name for name reference" -msgstr "%d: virheellinen tiedostokahva: %s" - -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6710 subst.c:9623 #, c-format -msgid "%s: bad substitution" -msgstr "%s: virheellinen korvaus" +msgid "%s: invalid variable name for name reference" +msgstr "" -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: virheellinen rivimäärä" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, fuzzy, c-format msgid "%s: invalid variable name" -msgstr "”%s”: virheellinen näppäinkartan nimi" +msgstr "%s: virheellinen toiminnon nimi" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametria ei ole tai sitä ei ole asetettu" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametria ei ole tai sitä ei ole asetettu" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: alimerkkijonolauseke < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: virheellinen korvaus" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ei voida asettaa näin" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "virheellinen korvaus: ei sulkevaa ”`” jonossa %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "ei osumia: %s" @@ -2013,30 +2033,35 @@ msgstr "odotettiin ”)”" msgid "`)' expected, found %s" msgstr "odotettiin ”)”, löydettiin %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: odotettiin unaarista operaattoria" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: odotettiin binääristä operaattoria" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "puuttuva ”]”" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "virheellinen signaalinumero" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: virheellinen arvo trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2044,86 +2069,86 @@ msgstr "" "run_pending_traps: signaalikäsittelijä on SIG_DFL, lähetän %d (%s) uudelleen " "itselleni" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: virheellinen signaali %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "virhe tuotaessa ”%s”:n funktiomääritystä" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "komentotulkkitaso (%d) liian korkea, palautetaan 1:ksi" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ei funktiokontekstia nykytilassa" -#: variables.c:2432 -#, fuzzy, c-format +#: variables.c:2674 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: listaa ei voida sijoittaa taulukon alkioon" +msgstr "" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%d: virheellinen tiedostokahva: %s" +msgstr "" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ei funktiokontekstia nykytilassa" -#: variables.c:4218 +#: variables.c:4698 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parametria ei ole tai sitä ei ole asetettu" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "virheellinen merkki %d %s:n exportstr:ssä" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "ei =:ä kohteen %s exportstr:ssä" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variablesin alku ei ole funktiokonteksti" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ei global_variables-kontekstia" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: shell_variablesin alku ei väliaikaisten ympäristömuuttujien " "ympäristössä" -#: variables.c:5619 +#: variables.c:6272 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: ei voida avata: %s" -#: variables.c:5624 +#: variables.c:6277 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: virheellinen tiedostokahva: %s" -#: variables.c:5669 +#: variables.c:6322 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s rajojen ulkopuolella" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." msgstr "Copyright © 2009 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2149,22 +2174,22 @@ msgstr "Tämä on vapaa ohjelma; saat muutella ja levittää sitä vapaasti.\n" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Takuuta ei ole lain määräämissä rajoissa.\n" -#: xmalloc.c:91 +#: xmalloc.c:93 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "xmalloc: ei voida varata %lu tavua (varattiin %lu tavua)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes" msgstr "xmalloc: ei voitu varata %lu tavua" -#: xmalloc.c:163 +#: xmalloc.c:165 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "xmalloc: %s:%d: ei voida varata %lu tavua (varattiin %lu tavua)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "xmalloc: %s:%d: ei voida varata %lu tavua" @@ -2388,13 +2413,13 @@ msgstr "umask [-p] [-S] [tila]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "wait [id]" #: builtins.c:181 #, fuzzy msgid "wait [pid ...]" -msgstr "wait [id]" +msgstr "wait [pid]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2483,7 +2508,7 @@ msgstr "printf [-v muuttuja] muoto [argumentit]" #: builtins.c:231 #, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2503,7 +2528,7 @@ msgstr "" #: builtins.c:239 #, fuzzy -msgid "compopt [-o|+o option] [-DE] [name ...]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o valitsin] [nimi ...]" #: builtins.c:242 @@ -2516,9 +2541,10 @@ msgstr "" "[-C paluukutsu] [-c määrä] [taulukko]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n lukumäärä] [-O alkuperä] [-s laskuri] [-t] [-u " "tiedostokahva] \n" @@ -2696,6 +2722,7 @@ msgstr "" " Paluuarvo on 0 ellei N ole suurempi tai yhtäsuuri kuin 1." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2706,7 +2733,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Suorita komentotulkin sisäänrakennettuja komentoja.\n" " \n" @@ -2944,11 +2971,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3069,6 +3096,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3102,7 +3135,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa onnistuneen ellei tapahdu virhettä." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3124,7 +3157,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa onnistuneen ellei tapahdu virhettä." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3178,7 +3211,7 @@ msgstr "" "sisäänrakennettu\n" " komento tai tapahtuu virhe." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3197,7 +3230,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa komennon paluuarvon tai onnistuneen jos komento on tyhjä." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3277,7 +3310,7 @@ msgstr "" "valitsimet\n" " loppuvat tai tapahtuu virhe." -#: builtins.c:688 +#: builtins.c:692 #, fuzzy msgid "" "Replace the shell with the given command.\n" @@ -3320,7 +3353,7 @@ msgstr "" "uudelleenohjauksessa\n" " tapahtuu virhe." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3332,7 +3365,7 @@ msgstr "" " Poistuu komentotulkista paluuarvolla N. Jos N:ää ei anneta, paluuarvo\n" " on viimeisen komennon paluuarvo." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3345,7 +3378,7 @@ msgstr "" " Poistuu sisäänkirjautumiskomentotulkista paluuarvolla N. Palauttaa\n" " virheen jos ei olla sisäänkirjautumiskomentotulkissa." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3399,7 +3432,7 @@ msgstr "" " Palauttaa onnistuneen tai suoritetun komennon paluuarvon; nollasta\n" " poikkeava virhetilanteessa." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3420,7 +3453,7 @@ msgstr "" " Paluuarvo:\n" " Edustalle tuodun työn paluuarvo, tai epäonnistuminen virhetilanteessa." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3446,7 +3479,7 @@ msgstr "" "tapahtuu\n" " virhe." -#: builtins.c:787 +#: builtins.c:791 #, fuzzy msgid "" "Remember or display program locations.\n" @@ -3492,7 +3525,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos NIMEÄ ei löydy tai on annettu " "virheellinen valitsin." -#: builtins.c:812 +#: builtins.c:816 #, fuzzy msgid "" "Display information about builtin commands.\n" @@ -3508,7 +3541,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3534,7 +3567,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos MALLINETTA ei löydy tai valitsin on\n" " virheellinen." -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3544,7 +3577,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3600,7 +3634,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin " "tai tapahtuu virhe." -#: builtins.c:872 +#: builtins.c:877 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3645,7 +3679,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai \n" " tapahtuu virhe. Jos -x:ää on käytetty, palauttaa KOMENNON paluuarvon." -#: builtins.c:899 +#: builtins.c:904 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3678,7 +3712,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos jokin valitsin tai TYÖTUNNISTE on " "virheellinen." -#: builtins.c:918 +#: builtins.c:923 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3722,7 +3756,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai " "tapahtuu virhe." -#: builtins.c:942 +#: builtins.c:947 #, fuzzy msgid "" "Evaluate arithmetic expressions.\n" @@ -3811,7 +3845,7 @@ msgstr "" " Jos viimeinen ARGUMENTTI evaluoituu nollaksi, let palauttaa 1, muussa\n" " tapauksessa 0." -#: builtins.c:987 +#: builtins.c:992 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3833,7 +3867,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3902,7 +3936,7 @@ msgstr "" " Paluuarvo on nolla, ellei törmätä tiedoston loppumiseen, aikarajan\n" " ylitykseen tai mikäli -u:lle annetaan virheellinen tiedostokahva." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3926,7 +3960,7 @@ msgstr "" "suorittamassa\n" " funktiota tai skriptiä." -#: builtins.c:1047 +#: builtins.c:1052 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4097,7 +4131,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa onnistumisen ellei ole annettu virheellistä valitsinta." -#: builtins.c:1132 +#: builtins.c:1137 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4136,7 +4170,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai NIMI on kirjoitussuojattu." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4170,7 +4204,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai NIMI on virheellinen." -#: builtins.c:1173 +#: builtins.c:1178 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4209,7 +4243,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai NIMI on virheellinen." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4228,7 +4262,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa onnistuneen ellei N ole negatiivinen tai suurempi kuin $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4253,7 +4287,7 @@ msgstr "" "epäonnistuu\n" " mikäli TIEDOSTOA ei voida lukea." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4280,7 +4314,7 @@ msgstr "" "tapahtuu\n" " virhe." -#: builtins.c:1254 +#: builtins.c:1259 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4443,7 +4477,7 @@ msgstr "" " Palauttaa onnistumisen jos LAUSEKE evaluoituu todeksi; epäonnistuu jos\n" " LAUSEKE evaluoituu vääräksi tai on annettu virheellinen argumentti." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4455,7 +4489,7 @@ msgstr "" " Tämä on sisäänrakennetun ”test”-komennon synonyymi, mutta viimeisen\n" " argumentin pitää olla ”]”, joka sulkee avaavan ”[”:n." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4475,7 +4509,7 @@ msgstr "" " Paluuarvo:\n" " Onnistuu aina." -#: builtins.c:1357 +#: builtins.c:1362 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4557,7 +4591,7 @@ msgstr "" "annettu\n" " virheellinen valitsin." -#: builtins.c:1393 +#: builtins.c:1398 #, fuzzy msgid "" "Display information about command type.\n" @@ -4614,7 +4648,7 @@ msgstr "" " Palauttaa onnistuneen mikäli kaikki NIMET löytyivät, muussa tapauksessa\n" " epäonnistuu." -#: builtins.c:1424 +#: builtins.c:1429 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4705,7 +4739,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai tapahtuu virhe." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4740,7 +4774,7 @@ msgstr "" " Palauttaa onnistuneen ellei TILA ole virheellinen tai on annettu \n" " virheellinen valitsin." -#: builtins.c:1494 +#: builtins.c:1499 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4749,13 +4783,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4774,7 +4810,7 @@ msgstr "" " Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n" " virheellinen valitsin." -#: builtins.c:1515 +#: builtins.c:1523 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4800,7 +4836,7 @@ msgstr "" " Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n" " virheellinen valitsin." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4822,7 +4858,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4854,7 +4890,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4891,7 +4927,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4920,7 +4956,7 @@ msgstr "" " Paluuarvo:\n" " KOMENTOKETJUN paluuarvo." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4939,7 +4975,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4973,7 +5009,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4991,7 +5027,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen komennon paluuarvo." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5009,7 +5045,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1653 +#: builtins.c:1661 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5032,7 +5068,7 @@ msgstr "" " Paluuarvo:\n" " KOMENNON paluuarvo." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5055,7 +5091,7 @@ msgstr "" " Paluuarvo:\n" " Onnistuu, ellei NIMI ole kirjoitussuojattu." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5074,7 +5110,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5100,7 +5136,7 @@ msgstr "" " Paluuarvo:\n" " Työn tila." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5118,7 +5154,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa 1, jos LAUSEKKEEN arvo on 0; muuten palauttaa 0." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5172,7 +5208,7 @@ msgstr "" " Paluuarvo:\n" " 0 tai 1 riippuen LAUSEKKEEN arvosta." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5275,7 +5311,7 @@ msgstr "" " HISTIGNORE\tKaksoispistein eroteltu lista mallineista, joita käytetään\n" " \t\tpäätettäessä komentojen tallentamisesta historialistaan.\n" -#: builtins.c:1803 +#: builtins.c:1811 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5334,7 +5370,7 @@ msgstr "" "tai\n" " hakemiston vaihtaminen epäonnistuu." -#: builtins.c:1837 +#: builtins.c:1845 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5382,7 +5418,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen argumentti tai\n" " hakemiston vaihto epäonnistuu." -#: builtins.c:1867 +#: builtins.c:1875 #, fuzzy msgid "" "Display directory stack.\n" @@ -5437,14 +5473,14 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai tapahtuu virhe." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5475,7 +5511,7 @@ msgstr "" " Palauttaa onnistuneen, mikäli VALITSIN on käytössä, epäonnistuu jos on\n" " annettu virheellinen VALITSIN tai VALITSIN ei ole käytössä." -#: builtins.c:1919 +#: builtins.c:1927 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5535,7 +5571,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" " tapahtuu kirjoitus- tai sijoitusvirhe." -#: builtins.c:1953 +#: builtins.c:1961 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5554,10 +5590,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5583,7 +5623,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai \n" " tapahtuu virhe." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5606,7 +5646,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" " tapahtuu virhe." -#: builtins.c:1996 +#: builtins.c:2006 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5622,6 +5662,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5660,7 +5701,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" " NIMELLE ei ole määritetty täydennysmääritystä." -#: builtins.c:2026 +#: builtins.c:2037 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5734,7 +5775,7 @@ msgstr "" " tai TAULUKKO on kirjoitussuojattu." # Changed " characters into ”... -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5744,9 +5785,15 @@ msgstr "" " \n" " ”mapfile”:n synonyymi." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright © 2009 Free Software Foundation, Inc." +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: ei voida uudelleenvarata %lu tavua (varattiin %lu tavua)" + +#~ msgid "xrealloc: cannot allocate %lu bytes" +#~ msgstr "xrealloc: ei voida varata %lu tavua" + +#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "" +#~ "xrealloc: %s:%d: ei voida uudelleenvarata %lu tavua (varattiin %lu tavua)" #~ msgid ":" #~ msgstr ":" @@ -5759,32 +5806,3 @@ msgstr "" #~ msgid "times" #~ msgstr "times" - -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Copyright © 2009 Free Software Foundation, Inc." - -#, fuzzy -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Copyright © 2009 Free Software Foundation, Inc." - -#, fuzzy -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Lisenssi GPLv3+: GNU GPL versio 3 tai uudempi \n" - -#~ msgid "wait [pid]" -#~ msgstr "wait [pid]" - -#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: ei voida uudelleenvarata %lu tavua (varattiin %lu tavua)" - -#~ msgid "xrealloc: cannot allocate %lu bytes" -#~ msgstr "xrealloc: ei voida varata %lu tavua" - -#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "" -#~ "xrealloc: %s:%d: ei voida uudelleenvarata %lu tavua (varattiin %lu tavua)" diff --git a/po/fr.gmo b/po/fr.gmo index 7c7a736f1..3277a3543 100644 Binary files a/po/fr.gmo and b/po/fr.gmo differ diff --git a/po/fr.po b/po/fr.po index 4816b052f..dea194b02 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1,140 +1,141 @@ # Messages français pour GNU concernant bash. -# Copyright (C) 2015 Free Software Foundation, Inc. +# Copyright (C) 2018 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Michel Robitaille , 2004 # Christophe Combelles , 2008, 2009, 2010, 2011 -# Frédéric Marchal , 2015 +# Frédéric Marchal , 2018 msgid "" msgstr "" -"Project-Id-Version: bash-4.4-beta1\n" +"Project-Id-Version: bash-5.0-beta2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-17 13:49+0200\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2018-12-01 19:00+0100\n" "Last-Translator: Frédéric Marchal \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n >= 2);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "mauvais indice de tableau" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: retire l'attribut nameref" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s : impossible de convertir un tableau indexé en associatif" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s : clé non valable pour le tableau associatif" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s : impossible d'assigner à un index non numérique" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s : %s : l'assignation d'un tableau associatif doit se faire avec un indice" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s : impossible de créer : %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command : impossible de trouver le mappage clavier pour la " "commande" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s : le premier caractère non vide n'est pas « \" »" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "pas de « %c » de fermeture dans %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s : virgule de séparation manquante" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "expansion des accolades : impossible d'allouer la mémoire pour %s" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -"expansion des accolades : échec lors de l'allocation mémoire pour %d éléments" +"expansion des accolades : échec lors de l'allocation mémoire pour %u éléments" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "expansion des accolades : échec de l'allocation mémoire pour « %s »" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "« %s » : nom d'alias non valable" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "édition de ligne non activée" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "« %s » : nom du mappage clavier invalide" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s : impossible de lire : %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "« %s » : impossible à délier" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "« %s » : nom de fonction inconnu" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s n'est lié à aucune touche.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s peut être appelé via " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "« %s » : impossible à délier" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "nombre de boucles" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "ceci n'a un sens que dans une boucle « for », « while » ou « until »" @@ -148,240 +149,239 @@ msgstr "" " \n" " Sans EXPR, renvoie" -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "« HOME » non défini" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "trop d'arguments" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "de répertoire se fait vers le nouveau répertoire supérieur." +msgstr "répertoire nul" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "« OLDPWD » non défini" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "ligne %d : " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "avertissement :" -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s : utilisation :" -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s : l'option nécessite un argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s : argument numérique nécessaire" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s : non trouvé" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s : option non valable" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s : nom d'option non valable" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "« %s » : identifiant non valable" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "nombre octal non valable" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "nombre hexadécimal non valable" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "nombre non valable" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s : indication de signal non valable" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "" "« %s » : ce n'est pas un n° de processus ou une spécification de tâche valable" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s : variable en lecture seule" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s : %s hors plage" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s hors plage" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s : tâche inexistante" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s : pas de contrôle de tâche" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "pas de contrôle de tâche" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s : restreint" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "restreint" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s : ceci n'est pas une primitive du shell" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "erreur d'écriture : %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "erreur lors de la définition de l'attribut du terminal : %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "erreur lors de la récupération de l'attribut du terminal : %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s : erreur de détermination du répertoire actuel : %s : %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s : spécification de tâche ambiguë" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "l'aide n'est pas disponible dans cette version" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s : nom d'action non valable" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s : pas d'indication de complètement" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "" "avertissement : l'option « -F » peut fonctionner différemment de ce à quoi " "vous vous attendez" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "" "avertissement : l'option « -C » peut fonctionner différemment de ce à quoi " "vous vous attendez" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "fonction de complétion actuellement non en cours d'exécution" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "utilisable seulement dans une fonction" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s : la variable de référence ne peut pas être un tableau" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s : références bouclées sur la même variable interdites" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s : référence de nom circulaire" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s : nom de variable invalide pour une référence de nom" +msgstr "« %s » : nom de variable invalide pour une référence de nom" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "« -f » ne peut pas être utilisé pour fabriquer des fonctions" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s : fonction en lecture seule" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" "%s : l'assignation d'un tableau composé entre apostrophes est dépréciée" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s : impossible de détruire des variables tableaux de cette façon" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s : impossible de convertir un tableau indexé en tableau associatif" @@ -415,68 +415,68 @@ msgstr "%s : non chargé dynamiquement" msgid "%s: cannot delete: %s" msgstr "%s : impossible d'effacer : %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s : ceci est un répertoire" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s : ceci n'est pas un fichier régulier" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s : le fichier est trop grand" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s : ne peut exécuter le fichier binaire" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s : impossible d'exécuter : %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "déconnexion\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "ce n'est pas un shell de connexion : utilisez « exit »" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Il y a des tâches stoppées.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Il y a des tâches en cours d'exécution.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "aucune commande trouvée" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "indication d'historique" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s : impossible d'ouvrir le fichier temporaire : %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "courant" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "tâche %d démarrée sans contrôle de tâche" @@ -491,28 +491,27 @@ msgstr "%s : option non permise -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s : l'option nécessite un argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hachage désactivé" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s : table de hachage vide\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "occurrences\tcommande\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Commandes du shell correspondant au mot-clé « " msgstr[1] "Commandes du shell correspondant aux mots-clés « " -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -520,12 +519,12 @@ msgstr "" "Aucune rubrique d'aide ne correspond à « %s ». Essayez « help help », « man -k %" "s » ou « info %s »." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s : impossible d'ouvrir : %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -546,20 +545,21 @@ msgstr "" "Une astérisque (*) à côté d'un nom signifie que la commande est désactivée.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "impossible d'utiliser plus d'une option parmi « -anrw »" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "position dans l'historique" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s : argument non valable" +msgstr "%s : horodatage non valable" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s : l'expansion de l'historique a échoué" @@ -573,17 +573,17 @@ msgstr "%s : « inlib » a échoué" msgid "no other options allowed with `-x'" msgstr "pas d'autre option permise avec « -x »" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" "%s : les arguments doivent être des identifiants de tâche ou de processus" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Erreur inconnue" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "une expression est attendue" @@ -592,69 +592,69 @@ msgstr "une expression est attendue" msgid "%s: not an indexed array" msgstr "%s : n'est pas un tableau indexé" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s : spécification de descripteur de fichier non valable" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d : descripteur de fichier non valable : %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s : nombre de lignes non valable" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s : origine de tableau non valable" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s : quantum de callback non valable" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "nom de variable tableau vide" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "nécessité de prise en charge des variables tableaux" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "« %s » : caractère de format manquant" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "« %c » : spécification de format d'heure incorrecte" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "« %c » : caractère de format non permis" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "avertissement : %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "problème d'analyse du format : %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "chiffre hexadécimal manquant pour \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "chiffre unicode manquant pour \\%c" @@ -668,19 +668,19 @@ msgstr "pas d'autre répertoire" msgid "%s: invalid argument" msgstr "%s : argument non valable" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "pile de répertoire vide" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "indice de pile de répertoire" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -723,7 +723,7 @@ msgstr "" " -N\tAffiche le Nième élément en comptant de zéro depuis la droite de la\n" " liste affichée par « dirs » lorsque celle-ci est appelée sans option." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -769,7 +769,7 @@ msgstr "" " \n" " Vous pouvez voir la pile des répertoires avec la commande « dirs »." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -813,44 +813,44 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s : spécification de délai d'expiration non valable" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "erreur de lecture : %d : %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "« return » n'est possible que depuis une fonction ou depuis un script exécuté " "par « source »" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "" "« unset » ne peut pas s'appliquer simultanément à une fonction et à une " "variable" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s : « unset » impossible" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s : « unset » impossible : %s est en lecture seule" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s : n'est pas une variable tableau" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s : n'est pas une fonction" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s : impossible d'exporter" @@ -859,22 +859,22 @@ msgstr "%s : impossible d'exporter" msgid "shift count" msgstr "nombre de « shift »" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "" "les options du shell ne peuvent pas être simultanément activées et " "désactivées" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s : nom d'option du shell non valable" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "nom de fichier nécessaire en argument" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s : fichier introuvable" @@ -887,61 +887,61 @@ msgstr "suspension impossible" msgid "cannot suspend a login shell" msgstr "un shell de connexion ne peut pas être suspendu" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s est un alias vers « %s »\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s est un mot-clé du shell\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s est une fonction\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s est une primitive spéciale du shell\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s est une primitive du shell\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s est %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s est haché (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s : argument de limite non valable" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "« %c » : mauvaise commande" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s : impossible d'obtenir la limite : %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limite" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s : impossible de modifier la limite : %s" @@ -960,363 +960,371 @@ msgstr "« %c » : opérateur de mode symbolique non valable" msgid "`%c': invalid symbolic mode character" msgstr "« %c » : caractère de mode symbolique non valable" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " ligne " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "dernière commande : %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Annulation…" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORM: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "erreur de commande inconnue" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "mauvais type de commande" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "mauvais connecteur" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "mauvais saut" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s : variable sans liaison" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aattente de données expirée : déconnexion automatique\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "l'entrée standard ne peut pas être redirigée depuis /dev/null : %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT : « %c » : caractère de format non valable" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] existe encore" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "erreur de tube" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" "eval : dépassement de la profondeur maximum d'imbrication d'évaluations (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" "%s : dépassement de la profondeur maximum d'imbrication de sources (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" "%s : dépassement de la profondeur maximum d'imbrication de fonctions (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" "%s : restriction : « / » ne peut pas être spécifié dans un nom de commande" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s : commande introuvable" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s : %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s : %s : mauvais interpréteur" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s : impossible d'exécuter le fichier binaire : %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "« %s » : est une primitive spéciale" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossible de dupliquer le fd %d vers le fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "dépassement du niveau de récursivité dans l'expression" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "débordement négatif de la pile de récursivité" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "erreur de syntaxe dans l'expression" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "tentative d'affectation à une non-variable" -#: expr.c:495 expr.c:858 +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "erreur de syntaxe dans l'affectation d'une variable" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "division par 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "bogue : mauvais symbole pour expassign" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "« : » attendu pour une expression conditionnelle" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "exposant négatif" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identifiant attendu après un pré-incrément ou un pré-décrément" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "« ) » manquante" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "erreur de syntaxe : opérande attendu" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "erreur de syntaxe : opérateur arithmétique non valable" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s : %s (le symbole erroné est « %s »)" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "base arithmétique non valable" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "valeur trop grande pour la base" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s : erreur d'expression\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd : ne peut accéder aux répertoires parents" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "impossible de réinitialiser le mode « nodelay » pour le fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "impossible d'allouer un nouveau descripteur de fichier pour l'entrée de bash " "depuis le fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input : le tampon existe déjà pour le nouveau fd %d" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline : pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "le processus cloné n°%d apparaît dans la tâche en fonctionnement %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "suppression de la tâche stoppée %d avec le groupe de processus %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process : processus %5ld (%s) dans le_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process : pid %5ld (%s) signalé toujours en vie" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid : %ld : n° de processus inexistant" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Fini" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Stoppé" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Stoppé(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "En cours d'exécution" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Fini(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Termine %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "État inconnu" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(core dumped)" -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd : %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "fils setpgid (%ld à %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait : le processus n°%ld n'est pas un fils de ce shell" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for : Aucun enregistrement du processus n°%ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job : la tâche %d est stoppée" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s : la tâche s'est terminée" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s : la tâche %d est déjà en arrière plan" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld : activation de WNOHANG pour éviter un blocage définitif" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s : ligne %d : " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(maintenant, wd : %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control : getpgrp a échoué" -#: jobs.c:4104 +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control : pas de contrôle de tâche en tâche de fond" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control : discipline de ligne" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control : setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "impossible de régler le groupe de processus du terminal (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "pas de contrôle de tâche dans ce shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc : échec de l'assertion : %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1325,39 +1333,39 @@ msgstr "" "\r\n" "malloc : %s:%d : assertion manquée\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "inconnu" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc : bloc écrasé sur liste libre" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free : appelé avec un bloc déjà libéré comme argument" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free : appelé avec un bloc non alloué comme argument" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free : débordement négatif détecté ; « mh_nbytes » est hors plage" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free : les tailles de fragment au début et à la fin sont différentes" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc : appelé avec un bloc non alloué comme argument" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc : débordement négatif détecté ; « mh_nbytes » est hors plage" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "" "realloc : les tailles de fragment au début et à la fin sont différentes" @@ -1400,23 +1408,23 @@ msgstr "%s : mauvaise spécification de chemin réseau" msgid "network operations not supported" msgstr "opérations sur le réseau non prises en charge" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale : LC_ALL : impossible de changer le paramètre de langue (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" "setlocale : LC_ALL : impossible de changer le paramètre de langue (%s) : %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale : %s : impossible de changer le paramètre de langue (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "" @@ -1435,157 +1443,159 @@ msgstr "Vous avez du nouveau courrier dans $_" msgid "The mail in %s has been read\n" msgstr "Le courrier dans %s a été lu\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "erreur de syntaxe : expression arithmétique nécessaire" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "erreur de syntaxe : « ; » non attendu" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "erreur de syntaxe : « ((%s)) »" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document : le type d'instruction %d est incorrect" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "« here-document » à la ligne %d délimité par la fin du fichier (au lieu de « %" "s »)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection : l'instruction de redirection « %d » est hors plage" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) dépasse SIZE_MAX (%lu): ligne " +"tronquée" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "nombre maximum de documents en ligne (« here-document ») dépassé" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" "fin de fichier (EOF) prématurée lors de la recherche du « %c » correspondant" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "fin de fichier (EOF) prématurée lors de la recherche de « ]] »" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" "erreur de syntaxe dans une expression conditionnelle : symbole « %s » " "inattendu" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "erreur de syntaxe dans une expression conditionnelle" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "symbole inattendu « %s » au lieu de « ) »" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "« ) » attendu" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argument inattendu « %s » pour l'opérateur conditionnel à un argument" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "argument inattendu pour l'opérateur conditionnel à un argument" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "symbole « %s » trouvé à la place d'un opérateur binaire conditionnel" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "opérateur binaire conditionnel attendu" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argument « %s » inattendu pour l'opérateur binaire conditionnel" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "argument inattendu pour l'opérateur binaire conditionnel" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "symbole « %c » inattendu dans la commande conditionnelle" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "symbole « %s » inattendu dans la commande conditionnelle" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "symbole « %d » inattendu dans la commande conditionnelle" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "erreur de syntaxe près du symbole inattendu « %s »" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "erreur de syntaxe près de « %s »" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "erreur de syntaxe : fin de fichier prématurée" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "erreur de syntaxe" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Utilisez « %s » pour quitter le shell.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "" "fin de fichier (EOF) prématurée lors de la recherche d'une « ) » " "correspondante" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "complètement : fonction « %s » non trouvée" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: boucle de ré-essai possible" #: pcomplib.c:182 #, c-format @@ -1611,92 +1621,96 @@ msgstr "xtrace_set : pointeur de fichier NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf : « %c » : caractère de format invalide" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "descripteur de fichier hors plage" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s : redirection ambiguë" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s : impossible d'écraser le fichier existant" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s : restreint : impossible de rediriger la sortie" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" "impossible de créer un fichier temporaire pour le « here-document » : %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s : impossible d'affecter le descripteur de fichier à la variable" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port non pris en charge sans réseau" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "" "erreur de redirection : impossible de dupliquer le descripteur de fichier" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "« /tmp » introuvable, veuillez le créer !" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "« /tmp » doit être un nom de répertoire valable" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "le mode d'affichage amélioré est ignoré dans les shells interactifs" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c : option non valable" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "impossible de changer le uid en %d : uid effectif %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "impossible de changer le gid en %d: gid effectif %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "impossible de démarrer le débogueur: mode déboguage désactivé" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s : Ceci est un répertoire" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Je n'ai pas de nom !" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1705,54 +1719,54 @@ msgstr "" "Utilisation :\t%s [option longue GNU] [option] ...\n" "\t%s [option longue GNU] [option] fichier-script ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Options longues GNU :\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Options du shell :\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD ou -c commande ou -O shopt_option\t\t(invocation seulement)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ou -o option\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Pour en savoir plus sur les options du shell, saisissez « %s -c \"help set\" " "».\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Pour en savoir plus sur les primitives du shell, saisissez « %s -c help ».\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Utilisez la commande « bashbug » pour faire un rapport de bogue.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "page d'accueil de bash : \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" "Aide générale sur l'utilisation de logiciels GNU : \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask : %d : opération non valable" @@ -1926,93 +1940,97 @@ msgstr "N° de signal inconnu" msgid "Unknown Signal #%d" msgstr "Signal n°%d inconnu" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Mauvaise substitution : pas de « %s » de fermeture dans %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s : impossible d'affecter une liste à un élément de tableau" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "impossible de fabriquer un tube pour une substitution de processus" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "impossible de fabriquer un fils pour une substitution de processus" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "impossible d'ouvrir le tube nommé « %s » en lecture" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "impossible d'ouvrir le tube nommé « %s » en écriture" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "impossible de dupliquer le tube nommé « %s » vers le fd %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "mauvais remplacement : pas de « ` » de fermeture dans %s" +msgstr "substitution de commande: octet nul ignoré en entrée" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "impossible de fabriquer un tube pour une substitution de commande" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "" "impossible de fabriquer un processus fils pour une substitution de commande" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute : impossible de dupliquer le tube vers le fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s : nom de variable invalide pour une référence de nom" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s : mauvaise substitution" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s : expansion indirecte invalide" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "%s: nom de variable invalide" -#: subst.c:6854 +#: subst.c:7056 +#, c-format +msgid "%s: parameter not set" +msgstr "%s : paramètre non défini" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s : paramètre vide ou non défini" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s : expression de sous-chaîne négative" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s : mauvaise substitution" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s : affectation impossible de cette façon" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2020,12 +2038,12 @@ msgstr "" "les versions futures du shell forceront l'évaluation comme une substitution " "arithmétique" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "mauvais remplacement : pas de « ` » de fermeture dans %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "pas de correspondance : %s" @@ -2048,30 +2066,37 @@ msgstr "« ) » attendue" msgid "`)' expected, found %s" msgstr "« ) » attendue au lieu de %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s : opérateur unaire attendu" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s : opérateur binaire attendu" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "« ] » manquant" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "numéro de signal non valable" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" +"gestionnaire trap : dépassement de la profondeur maximum du gestionnaire " +"« trap » (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps : mauvaise valeur dans trap_list[%d] : %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2079,93 +2104,92 @@ msgstr "" "run_pending_traps : le gestionnaire de signal est SIG_DFL, renvoi de %d (%s) " "à moi-même" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler : mauvais signal %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "erreur lors de l'importation de la définition de fonction pour « %s »" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "niveau de shell trop élevé (%d), initialisation à 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "" "make_local_variable : aucun contexte de fonction dans le champ d'application " "actuel" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s : la variable ne peut se voir assigner une valeur" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s : nom de variable invalide pour une référence de nom" +msgstr "%s : assigne un entier à la référence de nom" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "" "all_local_variables : aucun contexte de fonction dans le champ d'application " "actuel" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s a un « exportstr » nul" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "caractère %d non valable dans « exportstr » pour %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "pas de « = » dans « exportstr » pour %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context : le début de « shell_variables » n'est pas un contexte de " "fonction" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context : aucun contexte à « global_variables »" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope : le début de « shell_variables » n'est pas un champ d'application " "temporaire d'environnement" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s : %s : impossible d'ouvrir comme FILE" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s : %s : valeur non valable pour un descripteur de fichier de trace" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s : %s : valeur de compatibilité hors plage" #: version.c:46 version2.c:46 -#, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2015 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2190,22 +2214,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "AUCUNE GARANTIE n'est fournie, dans les limites permises par la loi." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s : impossible d'allouer %lu octets (%lu octets alloués)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s : impossible d'allouer %lu octets" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s : %s:%d : impossible d'allouer %lu octets (%lu octets alloués)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s : %s:%d : impossible d'allouer %lu octets" @@ -2333,9 +2357,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobspec ...] ou jobs -x commande [args]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" #: builtins.c:134 msgid "" @@ -2418,8 +2441,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -msgid "wait [-n] [id ...]" -msgstr "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" +msgstr "wait [-fn] [id ...]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2511,13 +2534,13 @@ msgstr "printf [-v var] format [arguments]" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G motif_glob] " -"[-W liste_mots] [-F fonction] [-C commande] [-X motif_filtre] [-P prefixe] " -"[-S suffixe] [nom ...]" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G " +"motif_glob] [-W liste_mots] [-F fonction] [-C commande] [-X motif_filtre] [-" +"P prefixe] [-S suffixe] [nom ...]" #: builtins.c:235 msgid "" @@ -2529,8 +2552,8 @@ msgstr "" "suffixe] [mot]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "compopt [-o|+o option] [-DE] [nom ...]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o option] [-DEI] [nom ...]" #: builtins.c:242 msgid "" @@ -2542,11 +2565,11 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -"readarray [-n nombre] [-O origine] [-s nombre] [-t] [-u fd] [-C callback] [-" -"c quantum] [tableau]" +"readarray [-d delim] [-n nombre] [-O origine] [-s nombre] [-t] [-u fd] [-C " +"callback] [-c quantum] [tableau]" #: builtins.c:256 msgid "" @@ -2744,7 +2767,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Exécute des commandes shell intégrées.\n" " \n" @@ -2759,7 +2782,7 @@ msgstr "" " Code de retour :\n" " Renvoie le code de retour de SHELL-BUILTIN, ou false si SHELL-BUILTIN " "n'est\n" -" pas une commande intégrée.." +" pas une commande intégrée." #: builtins.c:369 msgid "" @@ -3010,11 +3033,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3050,7 +3073,8 @@ msgstr "" " -a\tpour faire de NOMs des tableaux indexés (si pris en charge)\n" " -A\tpour faire de NOMs des tableaux associatifs (si pris en charge)\n" " -i\tpour assigner l'attribut « integer » aux NOMs\n" -" -l\tpour convertir les NOMs en minuscules lors de l'affectation\n" +" -l\tpour convertir la valeur de chaque NOM en minuscules lors de " +"l'affectation\n" " -n\ttransforme NOM en une référence vers une variable nommée d'après " "sa valeur\n" " -r\tpour mettre les NOMs en lecture seule\n" @@ -3076,15 +3100,14 @@ msgstr "" " erreur survienne lors de l'assignation d'une variable." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" " A synonym for `declare'. See `help declare'." msgstr "" -"Définit des valeurs ou des attributs de variables.\n" +"Définit des valeurs et des attributs de variables.\n" " \n" -" Obsolète. Essayez « help declare »." +" Un synonyme de « déclare ». Consultez « help declare »." #: builtins.c:538 msgid "" @@ -3120,6 +3143,7 @@ msgstr "" " n'exécute pas une fonction." #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3148,6 +3172,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3188,7 +3218,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de succès à moins qu'une erreur d'écriture survienne." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3210,7 +3240,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de succès à moins qu'une erreur d'écriture survienne." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3267,7 +3297,7 @@ msgstr "" " Renvoie le code de succès à moins que NOM ne soit pas une commande " "intégrée ou qu'une erreur ne survienne." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3288,7 +3318,7 @@ msgstr "" " Renvoie le même code de sortie que la commande, ou le code de succès si " "la commande est vide." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3382,7 +3412,7 @@ msgstr "" "la fin des options\n" " est rencontrée ou si une erreur survient." -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3425,7 +3455,7 @@ msgstr "" "ou\n" " qu'une erreur de redirection ne survienne." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3437,7 +3467,7 @@ msgstr "" " Termine le shell avec le code de retour « N ». Si N est omis, le code\n" " de retour est celui de la dernière commande exécutée." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3451,7 +3481,7 @@ msgstr "" "erreur\n" " s'il n'est pas exécuté dans un shell de connexion." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3512,7 +3542,7 @@ msgstr "" "autre\n" " chose que 0 si une erreur survient." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3533,7 +3563,7 @@ msgstr "" " Celui de la commande placée au premier plan ou le code d'échec si une " "erreur survient." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3558,7 +3588,7 @@ msgstr "" "activé\n" " ou qu'une erreur ne survienne." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3604,7 +3634,7 @@ msgstr "" " Renvoie le code de succès à moins que le NOM ne soit pas trouvé ou\n" " qu'une option non valable ne soit donnée." -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3619,7 +3649,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3645,8 +3675,7 @@ msgstr "" "qu'une\n" " option non valable ne soit donnée." -#: builtins.c:836 -#, fuzzy +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3655,7 +3684,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3688,16 +3718,18 @@ msgstr "" " \n" " Options :\n" " -c\tefface la liste d'historique en supprimant tous les éléments\n" -" -d offset\tefface l'élément d'historique à l'emplacement OFFSET.\n" +" -d offset\tefface l'élément d'historique à l'emplacement OFFSET. Un " +"offset négatif\n" +" \t\tcompte à partir de la fin de la liste de l'historique\n" " \n" " -a\tajoute les lignes d'historique de cette session au fichier " "d'historique\n" " -n\tlit toutes les lignes d'historique non déjà lues depuis le fichier " "d'historique\n" +" \t\tet les ajoute à la liste de l'historique\n" " -r\tlit le fichier d'historique et ajoute le contenu à la liste " "d'historique\n" -" -w\técrit l'historique actuel dans le fichier d'historique\n" -" \t\tet l'ajoute à la liste d'historique\n" +" -w\técrit l'historique actuelle dans le fichier d'historique\n" " \n" " -p\teffectue un développement de l'historique sur chaque ARG et " "affiche le résultat\n" @@ -3720,7 +3752,7 @@ msgstr "" "ou\n" " qu'une erreur ne survienne." -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3770,7 +3802,7 @@ msgstr "" "de\n" " la COMMANDE est renvoyé." -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3802,8 +3834,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option ou un JOBSPEC non\n" " valable ne soit donné." -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3840,6 +3871,7 @@ msgstr "" " \t\tils sont supposés être des numéros de signaux pour lesquels les noms " "doivent\n" " \t\têtre affichés\n" +" -L\tsynonyme de -l\n" " \n" " « kill » est une commande intégrée pour deux raisons : elle permet aux " "IDs de\n" @@ -3854,7 +3886,7 @@ msgstr "" "ou qu'une\n" " erreur ne survienne." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3943,7 +3975,7 @@ msgstr "" " Code de sortie :\n" " Si le dernier ARG est évalué à 0, « let » renvoie 1, sinon 0 est renvoyé." -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3964,7 +3996,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -4018,8 +4050,7 @@ msgstr "" " -d délim\tcontinue jusqu'à ce que le premier caractère de DELIM soit " "lu,\n" " \t\tau lieu du retour à la ligne\n" -" -e\t\tutilise « Readline » pour obtenir la ligne dans un shell " -"interactif\n" +" -e\t\tutilise « Readline » pour obtenir la ligne\n" " -i texte\tUtilise TEXTE comme texte initial pour « Readline »\n" " -n n\ttermine après avoir lu N caractères plutôt que d'attendre\n" " \t\tun retour à la ligne, mais obéi à un délimiteur si moins de N " @@ -4058,7 +4089,7 @@ msgstr "" " ou qu'un descripteur de fichier non valable ne soit fourni comme " "argument à « -u »." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -4080,8 +4111,7 @@ msgstr "" " Renvoie N ou le code d'échec si le shell n'est pas en train d'exécuter\n" " une fonction ou un script." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4251,11 +4281,11 @@ msgstr "" " -P Si défini, les liens symboliques ne sont pas suivis lors de " "l'exécution des\n" " commandes telles que « cd » qui changent le répertoire courant.\n" -" -T Si défini, l'interception DEBUG est héritée par les fonctions du " -"shell.\n" +" -T Si défini, l'interception de DEBUG et RETURN est héritée par les " +"fonctions du shell.\n" " -- Affecte tous les arguments restants aux paramètres de position.\n" -" S'il n'y a plus d'argument, les paramètres de position sont " -"indéfinis.\n" +" S'il n'y a plus d'argument, les paramètres de position sont\n" +" indéfinis.\n" " - Affecter tous les arguments restants aux paramètres de " "position.\n" " Les options « -x » et « -v » sont désactivées.\n" @@ -4274,7 +4304,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit " "donnée." -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4316,7 +4346,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit\n" " donnée ou que NOM soit en lecture seule." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4353,7 +4383,7 @@ msgstr "" "données\n" " ou que NOM ne soit pas valable." -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4395,7 +4425,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit\n" " donnée ou que NOM ne soit pas valable." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4414,7 +4444,7 @@ msgstr "" " Code de retour :\n" " Renvoie le code de succès à moins que N soit négatif ou supérieur à $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4442,7 +4472,7 @@ msgstr "" "code\n" " d'échec si NOMFICHIER ne peut pas être lu." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4470,7 +4500,7 @@ msgstr "" "activé\n" " ou qu'une erreur survienne." -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4642,7 +4672,7 @@ msgstr "" "fausse ou si\n" " un argument non valable est donné." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4654,7 +4684,7 @@ msgstr "" " Ceci est un synonyme de la primitive « test », mais le dernier argument\n" " doit être le caractère « ] », pour fermer le « [ » correspondant." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4673,7 +4703,7 @@ msgstr "" " Code de retour :\n" " Toujours le code de succès." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4758,7 +4788,7 @@ msgstr "" "qu'une\n" " option non valable ne soit donnée." -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4822,7 +4852,7 @@ msgstr "" "si l'un\n" " d'entre eux n'est pas trouvé." -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4925,7 +4955,7 @@ msgstr "" "fournie ou\n" " qu'une erreur ne survienne." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4963,7 +4993,7 @@ msgstr "" "qu'une\n" " option non valable ne soit donnée." -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4971,13 +5001,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4998,12 +5030,16 @@ msgstr "" "retourne\n" " son code de retour.\n" " \n" +" Si l'option -f est fournie et que le contrôle de tâche est activé, " +"attends que\n" +" le ID spécifié soit terminé au lieu d'attendre qu'il change de statut.\n" +" \n" " Code de retour :\n" " Renvoie le même code que celui d'ID, ou le code d'échec si ID n'est pas " "valable\n" " ou en cas d'option non valable." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -5031,7 +5067,7 @@ msgstr "" "valable ou\n" " si une option non valable est donnée." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -5054,7 +5090,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -5085,7 +5121,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5121,7 +5157,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5152,7 +5188,7 @@ msgstr "" " Code de sortie :\n" " Le code de retour est celui du PIPELINE." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5172,7 +5208,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5210,7 +5246,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5229,7 +5265,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5248,8 +5284,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5270,9 +5305,9 @@ msgstr "" " cours d'exécution. Le NOM par défaut est « COPROC ».\n" " \n" " Code de retour :\n" -" Renvoie le même code de retour que la COMMANDE." +" La commande coproc renvoie le code de sortie 0." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5298,7 +5333,7 @@ msgstr "" " Code de retour :\n" " Renvoie le code de succès à moins que NOM ne soit en lecture seule." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5316,7 +5351,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5342,7 +5377,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la commande reprise." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5360,7 +5395,7 @@ msgstr "" " Code de sortie :\n" " Renvoie 1 si EXPRESSION est évaluée à 0, sinon renvoie 0." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5415,7 +5450,7 @@ msgstr "" " Code de sortie :\n" " 0 ou 1 selon la valeur de l'EXPRESSION." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5540,7 +5575,7 @@ msgstr "" " \t\tdécider quelles commandes doivent être conservées dans la liste " "d'historique.\n" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5603,7 +5638,7 @@ msgstr "" "fourni\n" " ou que le changement de répertoire n'échoue." -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5655,7 +5690,7 @@ msgstr "" "donné\n" " ou que le changement de répertoire n'échoue." -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5714,14 +5749,13 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit\n" " fournie ou qu'une erreur ne survienne." -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5738,9 +5772,10 @@ msgstr "" " \n" " Change la valeur de chaque option du shell NOMOPT. S'il n'y a pas " "d'argument\n" -" à l'option, la commande liste toutes les options du shell en indiquant " -"si\n" -" elles sont actives ou non.\n" +" à l'option, liste chaque NOMOPT fourni ou toutes les options du shell si " +"aucun\n" +" NOMOPT est donné, avec une indication montrant si chacun est actif ou " +"non.\n" " \n" " Options :\n" " -o\trestreint les NOMOPT à ceux définis pour être utilisés avec « set -" @@ -5750,12 +5785,12 @@ msgstr "" " -s\tactive (set) chaque NOMOPT\n" " -u\tdésactive (unset) chaque NOMOPT\n" " \n" -" Code de retour :\n" -" Renvoie le code de succès si NOMOPT est active ; échec si une option non " +" Code de retour :\n" +" Renvoie le code de succès si NOMOPT est active ; échec si une option non " "valable\n" " est donnée ou si NOMOPT est inactive." -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5833,7 +5868,8 @@ msgstr "" "donnée ou qu'une\n" " erreur d'écriture ou d'affectation ne survienne." -#: builtins.c:1953 +#: builtins.c:1961 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5851,22 +5887,26 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" "Spécifie la façon dont Readline complète les arguments.\n" " \n" -" Pour chaque NOM, la commande spécifie la façon dont les arguments son " +" Pour chaque NOM, la commande spécifie la façon dont les arguments sont " "complétés\n" " S'il n'y a pas d'option, le réglage actuel est affiché d'une manière\n" " réutilisable comme une entrée.\n" " \n" -" Options :\n" +" Options :\n" " -p\taffiche le réglage d'auto-complètement actuel dans un format " "réutilisable\n" " -r\tretire un réglage d'auto-complètement de chaque NOM ou, si aucun " @@ -5877,19 +5917,24 @@ msgstr "" " \t\tcommandes ne possédant aucun auto-complètement spécifique\n" " -E\tapplique les auto-complètements et actions aux commandes vides\n" " \t\t(auto-complètement tenté sur une ligne vide)\n" +" -I\tapplique les auto-complètements et actions au mot initial " +"(habituellement\n" +" \t\tla commande)\n" " \n" " Lorsqu'un auto-complètement est tenté, les actions sont appliquées dans " "l'ordre\n" -" dans lequel les options en majuscule ci-dessus sont listées. L'option « -" -"D » est\n" -" prioritaire sur « -E ».\n" +" dans lequel les options en majuscule ci-dessus sont listées. Si " +"plusieurs\n" +" options sont fournies, l'option « -D » est prioritaire sur -E et les deux " +"sont\n" +" prioritaires sur -I.\n" " \n" " Code de retour :\n" " Renvoie le code de succès à moins qu'une option non valable ne soit " "fournie ou\n" " qu'une erreur ne survienne." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5911,7 +5956,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit\n" " fournie ou qu'une erreur ne survienne." -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -5926,6 +5971,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5956,6 +6002,7 @@ msgstr "" " \t-D\t\tChange les options pour l'auto-complètement de commande par " "défaut\n" " \t-E\t\tChange les options pour l'auto-complètement de commande vide\n" +" \t-I\t\tChange les options pour l'auto-complètement du mot initial\n" " \n" " Utiliser « +o » au lieu de « -o » désactive l'option spécifiée.\n" " \n" @@ -5976,7 +6023,7 @@ msgstr "" "fournie\n" " ou que NOM n'ait aucun réglage d'auto-complètement." -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -6059,7 +6106,7 @@ msgstr "" "donnée ou que\n" " le TABLEAU soit en lecture seule ou ne soit pas un tableau indexé." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/ga.gmo b/po/ga.gmo index 692913440..d7712deeb 100644 Binary files a/po/ga.gmo and b/po/ga.gmo differ diff --git a/po/ga.po b/po/ga.po index 805c0d21c..0254a01d0 100644 --- a/po/ga.po +++ b/po/ga.po @@ -1,142 +1,144 @@ -# translation of bash4.po to Irish -# Copyright (C) 2009 Free Software Foundation, Inc. +# translation of bash.po to Irish +# Copyright (C) 2017 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # -# Séamus Ó Ciardhuáin , 2009. +# Séamus Ó Ciardhuáin , 2009, 2017, 2018. msgid "" msgstr "" -"Project-Id-Version: bash 4.3-rc2\n" +"Project-Id-Version: bash 5.0-beta2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-02-05 17:02-0000\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2018-12-06 21:34+0000\n" "Last-Translator: Séamus Ó Ciardhuáin \n" "Language-Team: Irish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ga\n" -"X-Generator: Poedit 1.7.4\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Lokalize 2.0\n" "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :" "(n>6 && n<11) ? 3 : 4;\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "droch-fhoscript eagair" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: aitreabúid nameref (tagairt athróga) á baint" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" "%s: ní féidir eagar innéacsaithe a thiontú go heagar comhthiomsaitheach" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: eochair neamhbhailí eagair chomhthiomsaithigh" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ní féidir sannadh go hinnéacs neamhuimhriúil." -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: caithfear foscript a úsáid le sannadh chuig eagar comhthiomsaitheach" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ní féidir cruthú: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: ní féidir mapa eochrach an ordaithe a aimsiú" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "%s: ní \" é an chéad charachtar nach spás bán é." +msgstr "%s: ní \" an chéad charachtar nach spás bán é." -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" -msgstr "Níl \"%c\" dúnta i %s" +msgstr "Níl '%c' dúnta i %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: deighilteoir idirstaid ar iarraidh" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "fairsingiú lúibíní: ní féidir cuimhne a leithdháileadh le haghaidh %s" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" +"fairsingiú lúibíní: theip ar leithdháileadh cuimhne le haghaidh %u eilimint" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "fairsingiú lúibíní: theip ar leithdháileadh cuimhne le haghaidh '%s'" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" -msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach" +msgstr "'%s': ainm neamhbhailí ar mhapa eochrach" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "níl eagarthóireacht líne cumasaithe" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" -msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach " +msgstr "'%s': ainm neamhbhailí ar mhapa eochrach " -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ní féidir léamh: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "\"%s\": ní féidir dícheangail" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" -msgstr "\"%s\": ainm feidhme neamhaithnid" +msgstr "'%s': ainm feidhme neamhaithnid" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "Níl %s ceangailte le heochair ar bith.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "Is féidir %s a ghlaoigh trí " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "'%s': ní féidir dícheangail" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "comhaireamh lúibe" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "Gan chiall ach i lúb \"for\", \"while\" nó \"until\"" +msgstr "Gan chiall ach i lúb 'for', 'while' nó 'until'" #: builtins/caller.def:136 msgid "" @@ -148,236 +150,236 @@ msgstr "" " \n" " Gan SLONN, aischuirtear " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "Níl HOME socruithe" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "An iomarca argóintí" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "Níl comhadlann eile ann" +msgstr "comhadlann neamhnitheach" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "Níl OLDPWD socruithe" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "líne %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "rabhadh: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: úsáid: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: tá argóint riachtanach don rogha" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: argóint uimhriúil de dhíth" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: gan aimsiú" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: rogha neamhbhailí" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: ainm neamhbhailí rogha" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" -msgstr "\"%s\": ní aitheantóir bailí é" +msgstr "'%s': ní aitheantóir bailí é" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "uimhir ochtnártha neamhbhailí" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "uimhir heicsidheachúlach neamhbhailí" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "uimhir neamhbhailí" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: sonrú neamhbhailí comhartha" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "\"%s\": ní aitheantas próisis nó sonrú jab bailí é" +msgstr "'%s': ní aitheantas próisis nó sonrú taisc bailí é" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: athróg inléite amháin" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s as raon" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argóint" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s as raon" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" -msgstr "%s: níl a léithéid de jab ann." +msgstr "%s: níl a léithéid de tasc ann." -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" -msgstr "%s: gan rialú jabanna." +msgstr "%s: gan rialú tascanna." -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" -msgstr "Gan rialú jabanna." +msgstr "Gan rialú tascanna." -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: srianta" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "srianta" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ní ordú ionsuite blaoisce é." -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "earráid scríofa: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "earráid agus airíonna teirminéil á socrú: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "earráid agus airíonna teirminéil á fáil: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: earráid ag fáil na comhadlainne reatha: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" -msgstr "%s: sonrú jab athbhríoch" +msgstr "%s: sonrú taisc athbhríoch" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" -msgstr "" +msgstr "Níl cabhair ar fáil sa leagan seo." -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: ainm neamhbhailí gnímh" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: níl sonrú iomlánaithe ann." -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "" "Rabhadh: b'fhéidir nach n-oibríonn an rogha -F mar a bheifeá ag súil leis." -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "" "Rabhadh: b'fhéidir nach n-oibríonn an rogha -C mar a bheifeá ag súil leis." -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "níl an fheidhm chomhlánaithe á rith faoi láthair" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "Inúsáidte i bhfeidhmeanna amháin. " -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: ní féidir le athróg thagartha bheith ina h-eagar" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" +"%s: ní cheadaítear tagairtí don athróg féin i nameref (tagairt athróga)" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" -msgstr "" +msgstr "%s: tagairt ainm ciorclach" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach" +msgstr "'%s': ainm neamhbhailí athróige le haghaidh tagairt ainm" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" -msgstr "Ní féidir \"-f\" a úsáid chun feidhmeanna a dhéanamh" +msgstr "Ní féidir '-f' a úsáid chun feidhmeanna a dhéanamh" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: feidhm inléite amháin" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "" +msgstr "%s: cáintear sannadh na gcomheagar athfhriotail" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: ní féidir athróga eagair a scrios mar seo." -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -401,6 +403,8 @@ msgstr "Ní féidir %s a aimsiú sa réad comhroinnte %s: %s" #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "" +"Theip ar an ngníomh luchtála le haghaidh %s (aiscuireadh %d): níor " +"luchtáladh é" #: builtins/enable.def:512 #, c-format @@ -412,71 +416,71 @@ msgstr "%s: níl sé luchtaithe go dinimiciúil" msgid "%s: cannot delete: %s" msgstr "%s: ní féidir scrios: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: is comhadlann é" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: ní gnáthchomhad é" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: tá an comhad ró-mhór" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ní féidir comhad dénártha a rith" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: ní féidir rith: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" -msgstr "Ní blaosc logála isteach é seo: úsáid \"exit\"" +msgstr "Ní blaosc logála isteach é seo: úsáid 'exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" -msgstr "Tá jabanna stoptha ann.\n" +msgstr "Tá tascanna stoptha ann.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" -msgstr "Tá jabanna ag rith.\n" +msgstr "Tá tascanna ag rith.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "Níor aimsíodh ordú" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "Sonrú staire" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: ní féidir comhad sealadach a oscailt: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "reatha" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" -msgstr "Thosaigh jab %d gan rialú jabanna." +msgstr "Tosaíodh tasc %d gan rialú tascanna." #: builtins/getopt.c:110 #, c-format @@ -488,31 +492,30 @@ msgstr "%s: rogha neamhdhleathach -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: tá argóint riachtanach don rogha -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "Tá haiseáil díchumasaithe." -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tá an tábla haiseála folamh.\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "amais\tordú\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "Ordaithe blaoisce a mheaitseálann an lorgfhocal \"" -msgstr[1] "Ordaithe blaoisce a mheaitseálann na lorgfhocail \"" +msgstr[0] "Ordaithe blaoisce a mheaitseálann an lorgfhocal '" +msgstr[1] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '" msgstr[2] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '" msgstr[3] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '" msgstr[4] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -520,12 +523,12 @@ msgstr "" "Ní mheaitseálann ábhar cabhrach ar bith \"%s\". Bain triail as \"help help\" " "nó \"man -k %s\" nó \"info %s\"." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ní féidir oscailt: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -545,20 +548,21 @@ msgstr "" "Ciallaíonn réalt (*) ar ainm go bhfuil an t-ordú díchumasaithe.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "Ní féidir níos mó ná ceann amháin as -anrw a úsáid." -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "suíomh staire" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: argóint neamhbhailí" +msgstr "%s: stampa ama neamhbhailí" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: theip ar fhairsingiú staire." @@ -570,18 +574,18 @@ msgstr "%s: theip ar inlib" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" -msgstr "Níl roghanna eile ceadaithe le \"-x\"" +msgstr "Níl roghanna eile ceadaithe le '-x'" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "%s: is gá le argóintí bheith ina aitheantais phróisis nó jab" +msgstr "%s: is gá le argóintí bheith ina aitheantais phróisis nó taisc" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Earráid neamhaithnid" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "Ag súil le slonn" @@ -590,69 +594,69 @@ msgstr "Ag súil le slonn" msgid "%s: not an indexed array" msgstr "%s: ní eagar innéacsaithe é" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: sonrú neamhbhailí tuairisceora comhaid" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: tuairisceoir comhaid neamhbhailí: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: comhaireamh neamhbhailí línte" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: bunphointe neamhbhailí eagair" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: candam neamhbhailí aisghlaoigh" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "ainm folamh athróga eagair" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "tacaíocht le hathróga eagair de dhíth" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" -msgstr "\"%s\": carachtar formáide ar iarraidh." +msgstr "'%s': carachtar formáide ar iarraidh." -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" -msgstr "\"%c\": sonrú neamhbhailí formáide ama" +msgstr "'%c': sonrú neamhbhailí formáide ama" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" -msgstr "\"%c\": carachtar formáide neamhbhailí." +msgstr "'%c': carachtar formáide neamhbhailí." -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "rabhadh: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "fadhb i bpársáil formáide: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "digit heicsidheachúlach ar iarraidh le haghaidh \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "digit Unicode ar iarraidh le haghaidh \\%c" @@ -666,19 +670,19 @@ msgstr "Níl comhadlann eile ann" msgid "%s: invalid argument" msgstr "%s: argóint neamhbhailí" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" -msgstr "cruach fholamh chomhadlainne" +msgstr "cruach chomhadlainne fholamh" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" -msgstr "innéacs cruaiche comhadlainne" +msgstr "innéacs chruach na gcomhadlann" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -701,8 +705,29 @@ msgid "" "by\n" "\tdirs when invoked without options, starting with zero." msgstr "" - -#: builtins/pushd.def:718 +"Taispeáin liosta na gcomhadlann a bhfuil cuimhne orthu faoi láthair.\n" +" Cuirtear comhadlanna ar an liosta leis an ordú \"pushd\". Is féidir dul\n" +" siar trín liosta leis an ordú \"popd\".\n" +" \n" +" Roghanna:\n" +" -c\tglantar cruach na gcomhadlann trí gach mhír a bhaint de\n" +" -l\tná priontáiltear na comhadlanna i gcoibhneas le do chomhadlann " +"bhaile\n" +" \tagus le tilde rompu\n" +" -p\tpriontáiltear cruach na gcomhadlann, mír amháin ar gach líne\n" +" -v\tpriontáiltear cruach na gcomhadlann, mír amháin ar gach líne agus\n" +" \ta háit sa chruach roimpi\n" +" \n" +" Argóintí:\n" +" +N\tTaispeántar mír N, agus uimhrithe curtha ar na míreanna ó thaobh " +"clé\n" +" \tan liosta a thaispeántar le \"dirs\" rite gan argóintí, ag tosú ó " +"náid. -N\tTaispeántar mír N, agus uimhrithe curtha ar na míreanna ó " +"thaobh deas\n" +" \tan liosta a thaispeántar le \"dirs\" rite gan argóintí, ag tosú ó " +"náid." + +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -726,8 +751,32 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" +"Cuireann \"pushd\" comhadlann ar bharr na cruaiche comhadlanna, nó " +"rothlaíonn\n" +" sé an chruach, ag cur barr nua na cruaiche mar an chomhadlann oibrithe\n" +" reatha. Gan argóintí, malartaítear an dá chomhadlann ar bharr.\n" +" \n" +" Roghanna:\n" +" -n\tNá déantar an gnáthathrú comhadlainne agus comhadlanna á gcur\n" +" \tleis an gcruach; ní athraítear ach an chruach.\n" +" \n" +" Argóintí:\n" +" +N\tRothlaítear an chruach sa chaoi go mbeidh an Nú chomhadlann (ag\n" +" \tcomhaireamh ó thaobh clé an liosta a thaispeánann \"dirs\" agus ag " +"tosú\n" +" \tó náid) ar bharr.\n" +" \n" +" -N\tRothlaítear an chruach sa chaoi go mbeidh an Nú chomhadlann (ag\n" +" \tcomhaireamh ó thaobh deas an liosta a thaispeánann 'dirs' agus ag " +"tosú\n" +" \tó náid) ar bharr.\n" +" \n" +" COMHADLANN\tCuirtear COMHADLANN ar bharr na cruaiche, agus socraítear\n" +" \tí mar an chomhadlann oibrithe reatha.\n" +" \n" +" Taispeánann an t-ordú ionsuite \"dirs\" cruach na gcomhadlann." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -747,69 +796,89 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" +"Baineann \"popd\" comhadlanna ón gcruach comhadlanna. Gan argóintí, baintear " +"an\n" +" chomhadlann ó bharr na cruaiche, agus téann sé go dtí an chomhadlann\n" +" atá ar bharr.\n" +" \n" +" Roghanna:\n" +" -n\tNá déantar an gnáthathrú comhadlainne agus comhadlanna á gcur\n" +" \tleis an gcruach; ní athraítear ach an chruach.\n" +" \n" +" Argóintí:\n" +" +N\tBaintear an Nú chomhadlann ag comhaireamh ó thaobh clé an liosta\n" +" \ta thaispeánann \"dirs\" agus ag tosú ó náid. Mar shampla, baineann\n" +" \t\"popd +0\" an chéad chomhadlann, agus \"popd +1\" an dara cheann.\n" +" \n" +" -N\tBaintear an Nú chomhadlann ag comhaireamh ó thaobh deas an liosta\n" +" \ta thaispeánann 'dirs' agus ag tosú ó náid. Mar shampla, baineann\n" +" \t\"popd -0\" an chomhadlann dheireanach, agus \"popd -1\" an ceann\n" +" \tleathdheireanach.\n" +" \n" +" Taispeánann an t-ordú ionsuite \"dirs\" cruach na gcomhadlann." #: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: sonrú neamhbhailí teorann ama" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" -msgstr "earráid léite: %d: %s" +msgstr "Earráid léite: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" -"ní féidir \"return\" a dhéanamh ach ó fheidhm nó ó script rite le \"source\"" +"Ní féidir \"return\" a dhéanamh ach ó fheidhm nó ó script rite le \"source\"" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "Ní féidir feidhm agus athróg a dhíshocrú ag an am céanna." -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: ní féidir díshocrú" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ní féidir díshocrú: %s inléite amháin" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: ní athróg eagair é" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: ní feidhm é." -#: builtins/setattr.def:196 -#, fuzzy, c-format +#: builtins/setattr.def:194 +#, c-format msgid "%s: cannot export" -msgstr "%s: ní féidir díshocrú" +msgstr "%s: ní féidir easpórtáil" #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "comhaireamh iomlaoide" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "Ní féidir roghanna blaoisce a shocrú agus a dhíshocrú ag an am céanna." -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ainm neamhbhailí ar rogha blaoisce" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "Is gá don argóint bheith ina ainm comhaid." -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: níor aimsíodh an comhad" @@ -822,61 +891,61 @@ msgstr "Ní féidir cur ar fionraí." msgid "cannot suspend a login shell" msgstr "Ní féidir blaosc logála isteach a chur ar fionraí." -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" -msgstr "Tá %s ailiasáilte go \"%s\".\n" +msgstr "Tá %s ailiasáilte go '%s'.\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "Is eochairfhocal blaoisce é %s.\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "Is feidhm é %s.\n" -#: builtins/type.def:300 -#, fuzzy, c-format +#: builtins/type.def:299 +#, c-format msgid "%s is a special shell builtin\n" -msgstr "Is ordú ionsuite blaoisce é %s\n" +msgstr "Is ordú ionsuite blaoisce speisialta é %s\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "Is ordú ionsuite blaoisce é %s\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "Tá %s %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "Tá %s haiseáilte (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: argóint teorann neamhbhailí" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" -msgstr "\"%c\": droch-ordú" +msgstr "'%c': droch-ordú" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ní féidir teorainn a fháil: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "teorainn" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ní féidir teorainn a athrú: %s" @@ -888,371 +957,379 @@ msgstr "uimhir ochtnártha" #: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "\"%c\": oibreoir neamhbhailí móid shiombalaigh" +msgstr "'%c': oibreoir neamhbhailí móid shiombalaigh" #: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "\"%c\": carachtar neamhbhailí móid shiombalaigh" +msgstr "'%c': carachtar neamhbhailí móid shiombalaigh" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " líne " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "Ordú deireanach: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Ag tobscor..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "EOLAS: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "earráid ordaithe neamhaithnid" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "droch-chineál ordaithe" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "drochnascóir" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "drochléim" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: athróg neamhcheangailte" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" -msgstr "\aimithe thar am ag feitheamh le hionchur: logáil amach uathoibríoch\n" +msgstr "\aImithe thar am ag feitheamh le hionchur: logáil amach uathoibríoch\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "Ní féidir an ionchur caighdeánach a atreorú ó /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" -msgstr "FORMÁID_AMA: \"%c\": carachtar formáide neamhbhaií." +msgstr "FORMÁID_AMA: '%c': carachtar formáide neamhbhaií." -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: tá an comhphróiseas [%d:%s] fós ann" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "earráid phíopa" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "" +msgstr "eval: imithe thar uasleibhéal neadaithe eval (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "" +msgstr "%s: imithe thar uasleibhéal neadaithe foinse (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: imithe thar uasleibhéal neadaithe feidhme (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: srianta: ní féidir \"/\" a shonrú in ainmneacha ordaithe" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: níor aimsíodh an t-ordú" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: drochléirmhínitheoir" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: ní féidir comhad dénártha a rith: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" -msgstr "Is ordú ionsuite speisialta é \"%s\"" +msgstr "Is ordú ionsuite speisialta é '%s'" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" "Ní féidir an tuairisceoir comhaid %d a dhúbailt mar thuairisceoir comhaid %d." -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" -msgstr "imithe thar leibhéal athchursála sloinn" +msgstr "Imithe thar leibhéal athchursála sloinn" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" -msgstr "gannsreabhadh na cruaiche athchúrsála" +msgstr "Gannsreabhadh na cruaiche athchúrsála" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "Earráid chomhréire sa slonn." -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "Deineadh iarracht sannadh go rud nach athróg é." -#: expr.c:495 expr.c:858 +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "Earráid chomhréire i sannadh athróige." + +#: expr.c:544 expr.c:910 msgid "division by 0" -msgstr "roinnt ar 0" +msgstr "Roinnt ar 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" -msgstr "fabht: droch-chomhartha expassign" +msgstr "Fabht: droch-chomhartha expassign" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "Bhíothas ag súil le \":\" le haghaidh sloinn choinníollaigh." -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "Easpónant níos lú ná 0." -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "ag súil le aitheantóir tar éis réamhincriminte nó réamhdeicriminte" +msgstr "Ag súil le aitheantóir tar éis réamhincriminte nó réamhdeicriminte" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "\")\" ar iarraidh" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "Earráid chomhréire: bhíothas ag súil le hoibreann." -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" -msgstr "earráid chomhréire: oibreoir neamhbhailí uimhríochta" +msgstr "Earráid chomhréire: oibreoir neamhbhailí uimhríochta" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" -msgstr "%s%s%s: %s (comhartha earráide \"%s\")" +msgstr "%s%s%s: %s (comhartha earráide '%s')" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "Bonnuimhir uimhríochtúil neamhbhailí." -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "Tá an luach rómhór don bhonnuimhir." -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: earráid sloinn\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: ní féidir na máthairchomhadlanna a rochtain." -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" -"ní féidir an mód gan mhoill a athshocrú le haghaidh an tuairisceora chomhaid " +"Ní féidir an mód gan mhoill a athshocrú le haghaidh an tuairisceora chomhaid " "%d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "Ní féidir tuairisceoir comhaid nua a leithdháileadh le haghaidh ionchur bash " "ón tuairisceoir comhaid %d." -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" "save_bash_input: tá an maolán ann cheana le haghaidh an tuairisceoir comhaid " "nua %d" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp píopa" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "tá an aitheantas an phróisis ghabhlaithe %d sa jab %d atá ag rith" +msgstr "Tá aitheantas an phróisis ghabhlaithe %d sa tasc %d atá ag rith" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" -msgstr "Tá an jab stoptha %d leis an ngrúpa próisis %ld á scrios." +msgstr "Tá an tasc stoptha %d leis an ngrúpa próisis %ld á scrios." -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: próiseas %5ld (%s) sa phíblíne" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: próiseas %5ld (%s) marcáilte mar fós beo" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: níl an aitheantóir próisis sin ann." -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Comhartha %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Déanta" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Stoptha" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Stoptha(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Ag Rith" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Déanta(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Scoir %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Stádas neamhaithnid" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(cuimhne dumpáilte)" -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (comhadlann oibre: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid macphróisis (%ld go %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: níl an próiseas %ld ina mhacphróiseas den bhlaosc seo." -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: níl taifead den phróiseas %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" -msgstr "wait_for_job: tá an jab %d stoptha." +msgstr "wait_for_job: tá an tasc %d stoptha." -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" -msgstr "%s: tá an jab críochnaithe." +msgstr "%s: tá an tasc críochnaithe." -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" -msgstr "%s: tá an jab %d sa chúlra cheana." +msgstr "%s: tá an tasc %d sa chúlra cheana." -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" -msgstr "" +msgstr "waitchld: ag cumasú WNOHANG chun stad éiginnte a sheachaint" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: líne %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (cuimhne dumpáilte)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(comhadlann oibre anois: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: theip ar getpgrp" -#: jobs.c:4104 +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: níl rialú jabanna ar fáil sa chúlra" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: araíonacht líne" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" -msgstr "ní féidir grúpa próisis teirminéil a shocrú (%d)" +msgstr "ní féidir an grúpa próisis teirminéil a athrú (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" -msgstr "Níl rialú jabanna sa bhlaosc seo." +msgstr "Níl rialú tascanna sa bhlaosc seo." -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: dearbhú teipthe: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1261,39 +1338,39 @@ msgstr "" "\r\n" "malloc: %s:%d: dearbhú ina phraiseach\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "neamhaithnid" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: bloc ar an liosta saor scriosta" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: glaoite le argóint bhloic á saoradh cheana" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: glaoite le argóint bhloic nár leithdháileadh" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: gannsreabhadh; tá mh_nbytes as raon" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: ní ionann méid na smután túis agus deiridh" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: glaoite le argóint bhloic nár leithdháileadh" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: gannsreabhadh; tá mh_nbytes as raon" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: ní ionann méideanna na smután túis agus deiridh" @@ -1336,22 +1413,22 @@ msgstr "%s: drochshonrú conaire líonra" msgid "network operations not supported" msgstr "Ní thacaítear le oibríochtaí líonra." -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: ní féidir an logchaighdeán a athrú (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: ní féidir an logchaighdeán a athrú (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s): %s" @@ -1369,156 +1446,157 @@ msgstr "Tá ríomhphost nua agat i $_" msgid "The mail in %s has been read\n" msgstr "Tá an ríomhphost i %s léite\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "Earráid chomhréire: tá slonn uimhríochtúil de dhith." -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" -msgstr "Earráid chomhréire: \";\" gan súil leis." +msgstr "Earráid chomhréire: ';' gan súil leis." -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" -msgstr "Earráid chomhréire: \"((%s))\"" +msgstr "Earráid chomhréire: '((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: drochchineál ordaithe %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -"cáipéis leabaithe ag líne %d teormharcáilte le deireadh comhaid (\"%s\" á " +"Cáipéis leabaithe ag líne %d teormharcáilte le deireadh comhaid (\"%s\" á " "lorg)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: ordú atreoraithe \"%d\" as raon." -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: tá méid an líne ionchuir blaoisce (%zu) níos mó ná SIZE_MAX (%" +"lu): líne giorraithe" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" -msgstr "" +msgstr "Imithe thar uasfhad na cáipéise-anseo" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "Deireadh comhaid gan súil leis agus \"%c\" a mheaitseálann á lorg." -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "Deireadh comhaid gan súil leis agus \"]]\" á lorg." -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" "Earráid chomhréire i slonn coinníollach: comhartha \"%s\" gan suil leis." -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "Earráid chomhréire i slonn coinníollach." -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "Comhartha \"%s\" gan súil leis; ag súil le \")\"." +msgstr "Comhartha '%s' gan súil leis; ag súil le ')'." -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "Ag súil le \")\"" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "Argóint \"%s\" gan súil lei go hoibreoir aonártha coinníollach." -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "Argóint gan súil lei go hoibreoir coinníollach aonártha ." -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" "Comhartha \"%s\" gan súil leis. Bhíothas ag súil le hoibreoir coinníollach " "dénártha." -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "Bhíothas ag súil le hoibreoir coinníollach dénártha." -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "Argóint \"%s\" gan súil lei go hoibreoir dénártha coinníollach." +msgstr "Argóint '%s' gan súil lei go hoibreoir dénártha coinníollach." -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "Argóint gan súil lei go hoibreoir dénártha coinníollach." -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "Comhartha \"%c\" gan súil leis in ordú coinníollach." +msgstr "Comhartha '%c' gan súil leis in ordú coinníollach." -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "Comhartha \"%s\" gan súil leis in ordú coinníollach." -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "Comhartha %d gan súil leis in ordú coinníollach." -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "" -"Earráid chomhréire in aice comhartha \"%s\" nach rabhthas ag súil leis." +msgstr "Earráid chomhréire in aice comhartha '%s' nach rabhthas ag súil leis." -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" -msgstr "Earráid chomhréire in aice \"%s\"" +msgstr "Earráid chomhréire in aice '%s'" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "Earráid chomhréire: deireadh comhaid gan súil leis." -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "Earráid chomhréire" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" -msgstr "Úsáid \"%s\" le scoir den mblaosc.\n" +msgstr "Úsáid '%s' le scoir den mblaosc.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" -msgstr "Deireadh comhaid gan súil leis agus \")\" á lorg le meaitseáil." +msgstr "Deireadh comhaid gan súil leis agus ')' á lorg le meaitseáil." -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" -msgstr "Iomlánú: níor aimsíodh an fheidhm \"%s\"." +msgstr "Iomlánú: níor aimsíodh an fheidhm '%s'." -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "críochnú in-ríomhchláraithe: %s: d'fhéadfadh lúb atriail a bheith ann" #: pcomplib.c:182 #, c-format @@ -1528,7 +1606,7 @@ msgstr "progcomp_insert: %s: tá COMPSPEC neamhnitheach" #: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" -msgstr "print_command: drochnascóir \"%d\"" +msgstr "print_command: drochnascóir '%d'" #: print_cmd.c:375 #, c-format @@ -1537,101 +1615,106 @@ msgstr "xtrace_set: %d: tuairisceoir comhaid neamhbhailí" #: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" -msgstr "" +msgstr "xtrace_set: pointeoir folamh comhaid" #: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" -msgstr "cprintf: \"%c\": carachtar formáide neamhbhailí" +msgstr "cprintf: '%c': carachtar formáide neamhbhailí" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "tuairisceoir comhaid as raon" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: atreorú athbhríoch" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: ní féidir comhad atá ann cheana a fhorscríobh." -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: srianta: ní féidir aschur a atreorú." -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "ní féidir cáipéis shealadach a chruthú don cháipéis leabaithe: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ní féidir tuairisceoir comhaid a shannadh go hathróg." -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "Ní thacaítear le /dev/(tcp|udp)/óstríomhaire/port gan líonrú." -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "Earráid atreoraithe: ní féidir an tuairisceoir comhaid a dhúbailt." -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "Níorbh fhéidir /tmp a aimsiú. Cruthaigh é le do thoil!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "Caithfidh /tmp bheith ina ainm comhadlainne bailí." -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: rogha neamhbhailí" -#: shell.c:1282 -#, fuzzy, c-format +#: shell.c:1299 +#, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "" -"ní féidir an mód gan mhoill a athshocrú le haghaidh an tuairisceora chomhaid " -"%d" +"Ní féidir an t-aitheantóir úsáideora (uid) a athrú go %d: aitheantóir " +"éifeachtach %d" -#: shell.c:1289 -#, fuzzy, c-format +#: shell.c:1306 +#, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "" -"ní féidir an mód gan mhoill a athshocrú le haghaidh an tuairisceora chomhaid " -"%d" +"Ní féidir an t-aitheantóir grúpa (gid) a athrú go %d: aitheantóir " +"éifeachtach %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" +"Ní féidir an dífhabhtóir a thosú; tá an mód dífhabhtaithe díchumasaithe." -#: shell.c:1566 -#, fuzzy, c-format +#: shell.c:1608 +#, c-format msgid "%s: Is a directory" msgstr "%s: is comhadlann é" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Níl ainm orm!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, leagan %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1640,53 +1723,52 @@ msgstr "" "Úsáid:\t%s [rogha fada GNU] [rogha] ...\n" "\t%s [rogha fada GNU] [rogha] comhad_scripte ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Roghanna fada GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Roghanna blaoisce:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD nó -c ordú nó -O rogha_shopt\t\t(glaoch amháin)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s nó -o rogha\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -"Úsáid %s -c \"help set\" le haghaidh tuilleadh eolais faoi roghanna " -"blaoisce.\n" +"Úsáid %s -c 'help set' le haghaidh tuilleadh eolais faoi roghanna blaoisce.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -"Úsáid \"%s -c help\" le haghaidh tuilleadh eolais faoi orduithe ionsuite " +"Úsáid '%s -c help' le haghaidh tuilleadh eolais faoi orduithe ionsuite " "blaoisce.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" -msgstr "Úsáid an t-ordú \"bashbug\" le tuarascáil a sheoladh faoi fhabht.\n" +msgstr "Úsáid an t-ordú 'bashbug' le tuarascáil a sheoladh faoi fhabht.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "leathanach baile bash: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" -msgstr "" +msgstr "Cabhair ghinearálta le bogearraí GNU: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: oibríocht neamhbhailí" @@ -1860,106 +1942,112 @@ msgstr "Comhartha neamhaithnid #" msgid "Unknown Signal #%d" msgstr "Comhartha neamhaithnid #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "Drochionadú: níl \"%s\" dúnta i %s" +msgstr "Drochionadú: níl '%s' dúnta i %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: ní féidir liosta a shannadh go ball eagair." -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadaíocht próisis." -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadaíocht próisis." -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "Ní féidir píopa ainmnithe %s a oscailt le haghaidh léamh." -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "Ní féidir píopa ainmnithe %s a oscailt le haghaidh scríofa." -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" "Ní féidir an píopa ainmnithe %s a dhúbailt mar thuairisceoir comhaid %d." -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "drochionadú: níl \"`\" dúnta i %s" +msgstr "ionadú orduithe: tugadh neamhaird ar ghiotán neamhnitheach san ionchur" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadú ordaithe." -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadú ordaithe." -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute: ní feidir an píopa a dhúbailt mar thuairisceoir comhaid " "1." -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" -msgstr "" +msgstr "'%s': ainm neamhbhailí athróige le haghaidh tagairt ainm" -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format -msgid "%s: bad substitution" -msgstr "%s: drochionadú" - -#: subst.c:6800 -#, fuzzy, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: comhaireamh neamhbhailí línte" +msgstr "%s: fairsingiú neamhbhailí indíreach" -#: subst.c:6807 -#, fuzzy, c-format +#: subst.c:6840 subst.c:6987 +#, c-format msgid "%s: invalid variable name" -msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach" +msgstr "%s: ainm neamhbhailí athróige" -#: subst.c:6854 +#: subst.c:7056 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: paraiméadar gan socrú." + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: paraiméadar neamhnitheach nó gan socrú." -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: slonn fotheaghráin < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: drochionadú" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ní féidir sannadh mar seo." -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" +"i leaganacha den bhlaosc amach anseo, beidh luachálú mar ionadú uimhríochta " +"éigeantach" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "drochionadú: níl \"`\" dúnta i %s" +msgstr "drochionadú: níl '`' dúnta i %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "gan meaitseáil: %s" @@ -1975,37 +2063,42 @@ msgstr "%s: ag súil le slonn slánuimhreach." #: test.c:265 msgid "`)' expected" -msgstr "Ag súil le \")\"" +msgstr "Ag súil le ')'" #: test.c:267 #, c-format msgid "`)' expected, found %s" -msgstr "Ag súil le \")\", ach fuarthas %s." +msgstr "Ag súil le ')', ach fuarthas %s." -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: ag súil le hoibreoir aonártha." -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: ag súil le hoibreoir dénártha." -#: test.c:869 +#: test.c:875 msgid "missing `]'" -msgstr "\"]\" ar iarraidh" +msgstr "']' ar iarraidh" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "Uimhir chomhartha neamhbhailí" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: imithe thar uasleibhéal na láimhseálaithe gaistí (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: drochluach sa liosta_gaistí[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2013,85 +2106,84 @@ msgstr "" "run_pending_traps: is SIG_DFL an láimhseálaí comharthaí; %d (%s) á " "athsheoladh chugam féin." -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: droch-chomhartha %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" -msgstr "Earráid agus sainmhíniú na feidhme \"%s\" á iompórtáil." +msgstr "Earráid agus sainmhíniú na feidhme '%s' á iompórtáil." -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "Tá an leibhéal blaoisce (%d) ró-ard; á athshocrú go 1." -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: níl comhthéacs feidhme sa scóip reatha." -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: ní féidir luach a shannadh ar an athróg" -#: variables.c:3043 +#: variables.c:3453 #, c-format msgid "%s: assigning integer to name reference" -msgstr "" +msgstr "%s: slánuimhir a sannadh go tagairt ainm" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: níl comhthéacs feidhme sa scóip reatha" -#: variables.c:4218 -#, fuzzy, c-format +#: variables.c:4698 +#, c-format msgid "%s has null exportstr" -msgstr "%s: paraiméadar neamhnitheach nó gan socrú." +msgstr "Tá teaghrán easpórtála neamhnitheach ag %s" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "Carachtar neamhbhailí %d sa teaghrán easpórtála le haghaidh %s." -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" -msgstr "Níl \"=\" sa teaghrán easpórtála le haghaidh %s." +msgstr "Níl '=' sa teaghrán easpórtála le haghaidh %s." -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: ní comhthéacs feidhme é ceann shell_variables" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: níl comhthéacs global_variables ann" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: ní scóip shealadach thimpeallachta é ceann shell_variables" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ní féidir a oscailt mar CHOMHAD" -#: variables.c:5624 -#, fuzzy, c-format +#: variables.c:6277 +#, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "%d: tuairisceoir comhaid neamhbhailí: %s" +msgstr "%s: %s: luach neamhbhailí le haghaidh tuairisceoir comhaid rianaithe" -#: variables.c:5669 -#, fuzzy, c-format +#: variables.c:6322 +#, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s: %s as raon" +msgstr "%s: %s: luach comhoiriúnachta as raon" #: version.c:46 version2.c:46 -#, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Cóipcheart © 2013 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Cóipcheart © 2018 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2115,23 +2207,23 @@ msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" "Ní ghabhann baránta ar bith leis, sa mhéid is atá sin ceadaithe de réir dlí." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: ní féidir %lu beart a leithdháileadh (%lu beart leithdháilte)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: ní féidir %lu beart a leithdháileadh" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "" "%s: %s:%d: ní féidir %lu beart a leithdháileadh (%lu beart leithdháilte)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: ní féidir %lu beart a leithdháileadh" @@ -2149,6 +2241,9 @@ msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" +"bind [-lpsvPSVX] [-m MAPA_EOCHRACH] [-f AINM_CHOMHAID] [-q AINM] [-u AINM] [-" +"r SRAITH_EOCHRACHA] [-x SRAITH_EOCHRACHA:ORDÚ_BLAOISCE] [SRAITH_EOCHRACHA:" +"GNÍOMH_readline nó ORDÚ_readline]" #: builtins.c:56 msgid "break [n]" @@ -2180,12 +2275,11 @@ msgstr "command [-pVv] ORDÚ [ARGÓINT ...]" #: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilnrtux] [-p] [ainm[=luach] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [AINM[=LUACH] ...]" #: builtins.c:80 -#, fuzzy msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] ainm[=luach] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] AINM[=LUACH] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2213,7 +2307,7 @@ msgstr "getopts teaghrán_roghanna ainm [argóint]" #: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" -msgstr "exec [-cl] [-a ainm] [ordú [argóintí ...]] [atreorú ...]" +msgstr "exec [-cl] [-a AINM] [ORDÚ [ARGÓINTÍ ...]] [ATREORÚ ...]" #: builtins.c:100 msgid "exit [n]" @@ -2230,11 +2324,11 @@ msgstr "" #: builtins.c:109 msgid "fg [job_spec]" -msgstr "fg [SONRÚ_JAB]" +msgstr "fg [SONRÚ_TAISC]" #: builtins.c:113 msgid "bg [job_spec ...]" -msgstr "bg [SONRÚ_JAB ...]" +msgstr "bg [SONRÚ_TAISC ...]" #: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" @@ -2254,20 +2348,19 @@ msgstr "" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "jobs [-lnprs] [SONRÚ_JAB ...] nó jobs -x ORDÚ [ARGÓINTÍ]" +msgstr "jobs [-lnprs] [SONRÚ_TAISC ...] nó jobs -x ORDÚ [ARGÓINTÍ]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [SONRÚ_JAB ...]" +msgstr "disown [-h] [-ar] [SONRÚ_TAISC ... | AITHEANTAS_PRÓISIS ...]" #: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" -"kill [-s sonrú_comhartha | -n uimhir_chomhartha | -sonrú_comhartha] " -"aitheantóir_próisis | sonrú_jab ... nó kill -l [sonrú_comhartha]" +"kill [-s SONRÚ_COMHARTHA | -n UIMHIR_CHOMHARTHA | -SONRÚ_COMHARTHA] " +"AITHEANTAS_PRÓISIS | SONRÚ_TAISC ... nó kill -l [SONRÚ_COMHARTHA]" #: builtins.c:136 msgid "let arg [arg ...]" @@ -2288,15 +2381,15 @@ msgstr "return [n]" #: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [-abefhkmnptuvxBCHP] [-o ainm-rogha] [--] [argóint ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o AINM-ROGHA] [--] [ARGÓINT ...]" #: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "unset [-f] [-v] [-n] [ainm ...]" +msgstr "unset [-f] [-v] [-n] [AINM ...]" #: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" -msgstr "export [-fn] [ainm[=luach] ...] nó export -p" +msgstr "export [-fn] [AINM[=LUACH] ...] nó export -p" #: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" @@ -2308,7 +2401,7 @@ msgstr "shift [n]" #: builtins.c:152 msgid "source filename [arguments]" -msgstr "source comhadainm [argóintí]" +msgstr "source AINM_COMHAID [ARGÓINTÍ]" #: builtins.c:154 msgid ". filename [arguments]" @@ -2335,21 +2428,20 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] ainm [ainm ...]" #: builtins.c:171 -#, fuzzy msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [teorainn]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [teorainn]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" -msgstr "umask [-p] [-S] [mód]" +msgstr "umask [-p] [-S] [MÓD]" #: builtins.c:177 -msgid "wait [-n] [id ...]" -msgstr "wait [-n] [aitheantas ...]" +msgid "wait [-fn] [id ...]" +msgstr "wait [-fn] [AITHEANTAS ...]" #: builtins.c:181 msgid "wait [pid ...]" -msgstr "wait [aitheantas_próisis ...]" +msgstr "wait [AITHEANTAS_PRÓISIS ...]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2365,7 +2457,7 @@ msgstr "select AINM [in FOCAIL ... ;] do ORDUITHE; done" #: builtins.c:190 msgid "time [-p] pipeline" -msgstr "time [-p] píblíne" +msgstr "time [-p] PÍBLÍNE" #: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" @@ -2381,7 +2473,7 @@ msgstr "" #: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" -msgstr "while ORDUITHE; do ORDUITHE; done" +msgstr "while ORDUITHE1; do ORDUITHE2; done" #: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" @@ -2389,7 +2481,7 @@ msgstr "until ORDUITHE; do ORDUITHE; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" -msgstr "coproc [AINM] ordú [atreoruithe]" +msgstr "coproc [AINM] ORDÚ [ATREORUITHE]" #: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" @@ -2401,7 +2493,7 @@ msgstr "{ ORDUITHE ; }" #: builtins.c:206 msgid "job_spec [&]" -msgstr "sonrú_jab [&]" +msgstr "SONRÚ_TAISC [&]" #: builtins.c:208 msgid "(( expression ))" @@ -2413,7 +2505,7 @@ msgstr "[[ slonn ]]" #: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "Athróga - ainmneacha agus mínithe ar fathróga áirithe blaoisce" +msgstr "athróga - ainmneacha agus mínithe ar athróga áirithe blaoisce" #: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" @@ -2429,7 +2521,7 @@ msgstr "dirs [-clpv] [+N] [-N]" #: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" -msgstr "shopt [-pqsu] [-o] [ainm_rogha ...]" +msgstr "shopt [-pqsu] [-o] [AINM_ROGHA ...]" #: builtins.c:228 msgid "printf [-v var] format [arguments]" @@ -2437,43 +2529,44 @@ msgstr "printf [-v athróg] formáid [argóintí]" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o rogha] [-A gníomh] [-G patrún] [-W " -"liosta_focal] [-F feidhm] [-C ordú] [-X patrún_scagaire] [-P réimír] [-S " -"iarmhír] [ainm ...]" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o ROGHA] [-A GNÍOMH] [-G PATRÚN] [-W " +"LIOSTA_FOCAL] [-F FEIDHM] [-C ORDÚ] [-X PATRÚN_SCAGAIRE] [-P RÉIMÍR] [-S " +"IARMHÍR] [AINM ...]" #: builtins.c:235 -#, fuzzy msgid "" "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o rogha] [-A gníomh] [-G patrún] [-W " "liosta_focal] [-F feidhm] [-C ordú] [-X patrún_scagaire] [-P réimír] [-S " -"iarmhír] [FOCAL]" +"iarmhír] [focal]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "compopt [-o|+o rogha] [-DE] [ainm ...]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o ROGHA] [-DEI] [AINM ...]" #: builtins.c:242 -#, fuzzy msgid "" "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" -msgstr "a" +msgstr "" +"mapfile [-d TEORMHARCÓIR] [-n COMHAIREAMH] [-O BUNÚS] [-s COMHAIREAMH] [-t] " +"[-u TC] [-C AISGHLAOCH] [-c CANDAM] [EAGAR]" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" -msgstr "t" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d TEORMHARCÓIR] [-n COMHAIREAMH] [-O BUNÚS] [-s COMHAIREAMH] [-" +"t] [-u TUAIRISCEOIR_COMHAID] [-C AISGHLAOCH] [-c CANDAM] [EAGAR]" #: builtins.c:256 -#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2494,22 +2587,20 @@ msgid "" msgstr "" "Sainigh nó taispeáin ailiasanna.\n" " \n" -" Gan argóintí, priontálann \"alias\" an liosta ailiasanna san fhoirm\n" -" \"alias LUACH=VALUE\" ar an ngnáth-aschur.\n" +" Gan argóintí, priontáiltear an liosta ailiasanna san fhoirm\n" +" ath-inúsáidte 'alias AINM=LUACH' ar an ngnáth-aschur.\n" " \n" " I ngach cás eile, sainítear ailias do gach AINM a thugtar LUACH dó.\n" " Má tá spás chun deiridh LUACH, déantar an chéad fhocal eile a sheiceáil\n" " le haghaidh ionadú ailias nuair a fhairsingítear an ailias.\n" " \n" " Roghanna:\n" -" -p\tPriontáil gach ailias sainithe i bhfoirm inathúsáidte.\n" +" -p\tPriontáiltear gach ailias sainithe i bhfoirm ath-inúsáidte.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear an luach true mura thugtar AINM nach bhfuil\n" -" ailias sainithe dó." +" Aischuirtear fíor mura dtugtar AINM nach bhfuil ailias sainithe dó." #: builtins.c:278 -#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" @@ -2521,7 +2612,7 @@ msgstr "" "Bain gach AINM de liosta na n-ailiasanna sainithe.\n" " \n" " Roghanna:\n" -" -a\tbain gach sainiú ailias.\n" +" -a\tbaintear gach sainiú ailias.\n" " \n" " Aischuirtear rath ach sa chás nach bhfuil AINM ann." @@ -2579,7 +2670,7 @@ msgid "" msgstr "" "Scoir de lúba for, while nó until.\n" " \n" -" Scoir de lúb \"for\", \"while\" \"nó \"until\". Má shonraítear N, scoir\n" +" Scoir de lúb 'for', 'while' nó 'until'. Má shonraítear N, scoir\n" " de N lúb mhórthimpeall.\n" " \n" " Stádas Scortha:\n" @@ -2597,8 +2688,8 @@ msgid "" msgstr "" "Lean ar aghaidh le lúba for, while nó until.\n" " \n" -" Tosaigh an chéad atriall eile den lúb mhórthimpeall \"for\", \"while\" " -"nó \"until\".\n" +" Tosaigh an chéad atriall eile den lúb mhórthimpeall 'for', 'while' nó " +"'until'.\n" " Má shonraítear N, tosaigh an Nú lúb mhórthimpeall.\n" " \n" " Stádas Scortha:\n" @@ -2615,19 +2706,19 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Rith orduithe ionsuite na blaoisce.\n" " \n" -" Rith ORDÚ-IONSUITE-BLAOISCE leis na hargóintí ARGÓINTÍ gan cuardach\n" -" ordaithe a dhéanamh. Tá sé seo úsáideach más mian leat ordú blaoisce a\n" +" Ritear ORDÚ-IONSUITE-BLAOISCE leis na hargóintí ARGÓINTÍ gan cuardach\n" +" ordaithe a dhéanamh. Tá sé seo úsáideach más mian ordú blaoisce a\n" " athshainiú mar fheidhm bhlaoisce agus gur ghá an t-ordú ionsuite a rith\n" " laistigh den fheidhm.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear stádas scortha ORDÚ-IONSUITE-BLAOISCE, nó falsa mura " -"bhfuil\n" -" ORDÚ-IONSUITE-BLAOISCE ina ordú ionsuite blaoisce." +" Aischuirtear stádas scortha ORDÚ-IONSUITE-BLAOISCE, nó falsa sa chás " +"nach\n" +" bhfuil ORDÚ-IONSUITE-BLAOISCE ina ordú ionsuite blaoisce." #: builtins.c:369 msgid "" @@ -2646,12 +2737,12 @@ msgid "" msgstr "" "Aischuir comhthéacs an ghlaoigh reatha fhoghnáthaimh.\n" " \n" -" Gan SLONN, aischuirtear \"$line $filename\". Le SLONN, aischuirtear\n" -" \"$line $subroutine $filename\"; is féidir lorg cruaiche a sholáthar " +" Gan SLONN, aischuirtear '$líne $ainm_comhaid'. Le SLONN, aischuirtear\n" +" '$líne $foghnáthamh $ainm_comhaid'; is féidir lorg cruaiche a sholáthar " "leis an\n" " fhaisnéis bhreise seo.\n" " \n" -" Taispeánann an luach atá ag SLONN an méis frámaí glaoigh le dul siar\n" +" Taispeánann an luach atá ag SLONN líon na bhfrámaí glaoigh le dul siar\n" " roimh an ceann reatha; fráma 0 an ceann atá ar barr.\n" " \n" " Stádas Scortha:\n" @@ -2703,9 +2794,50 @@ msgid "" "when\n" " -P is used; non-zero otherwise." msgstr "" +"Athraigh comhadlann oibre na blaoisce.\n" +" \n" +" Athraíonn \"cd\" an chomhadlann reatha go COMHADLANN. Is é luach na " +"hathróige\n" +" blaoisce HOME an réamhshocrú le haghaidh COMHADLANN.\n" +" \n" +" Sainmhíníonn an athróg CDPATH an chonair chuardaigh don chomhadlann ina\n" +" bhfuil COMHADLANN. Cuirtear idirstad (:) idir ainmneacha malartacha\n" +" comhadlainne i CDPATH.\n" +" Is ionann ainm comhadlainne folamh agus an chomhadlann reatha. Má " +"thosaíonn\n" +" COMHADLANN le slaiste (/), ní usáidtear CDPATH.\n" +" \n" +" Mura aimsítear an chomhadlann, agus má ta an athróg bhlaoisce " +"\"cdable_vars\"\n" +" socruithe, glactar leis an bhfocal mar ainm athróige. Má tá luach ag an " +"athróg\n" +" sin, úsáidtear a luach i gcomhair COMHADLANN.\n" +" \n" +" Roghanna:\n" +" -L\tLean naisc shiombalaigh. Taifigh naisc shiombalaigh i COMHADLANN\n" +" \t\ttar éis gach \"..\" a phróiseáil. -P\tÚsáid an chomhadlann " +"fhisiciúil gan naisc shiombalaigh a leanúint.\n" +" \t\tTaifigh naisc shiombalaigh i COMHADLANN roimh \"..\" a " +"phróiseáil.\n" +" -e\tMá tá an rogha -P ann, agus mura féidir an chomhadlann oibre " +"reatha\n" +" \t\ta dhéanamh amach i gceart, scoir le stádas nach náid é.\n" +" -@\tMá thacaíonn an córas leis, taispeáin comhad le haitreabúidí " +"bhreisithe\n" +" \t\tmar chomhadlann ina bhfuil na haitreabúidí bhreisithe.\n" +" \n" +" Leantar naisc shiombalaigh ar bhonn réamhshocraithe, mar a bheadh -L " +"ann.\n" +" Chun \"..\" a phróiseáil, baintear páirt na conaire díreach roimhe siar " +"go\n" +" slaiste (/) nó go tús COMHADLANN.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear 0 má athraíodh an chomhadlann, agus má d'éirigh le socrú " +"$PWD\n" +" nuair a úsáidtear -P; i gcásanna eile aischuirtear luach nach náid é." #: builtins.c:425 -#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" @@ -2724,13 +2856,14 @@ msgstr "" " \n" " Roghanna:\n" " -L\tpriontáil luach $PWD má thugann sé ainm na comhadlainne\n" -" \toibre reatha. -P\tpriontáil an chomhadlann fhisiciúil, gan naisc " -"shiombalacha\n" +" \toibre reatha.\n" +" -P\tpriontáil an chomhadlann fhisiciúil, gan naisc shiombalacha\n" " \n" -" Mar réamhshocrú, oibríonn \"pwd\" faoi mar a bheadh \"-L\" sonraithe.\n" +" Mar réamhshocrú, oibríonn 'pwd' faoi mar a bheadh '-L' sonraithe.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear luach de 0 mura thugtar rogha neamhbhailí nó mura féidir\n" +" Aischuirtear luach de 0 ach sa chás go dtugtar rogha neamhbhailí nó nach " +"féidir\n" " an chomhadlann reatha a léamh." #: builtins.c:442 @@ -2774,7 +2907,6 @@ msgstr "" " Teipeann air i gcónaí." #: builtins.c:471 -#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2792,23 +2924,23 @@ msgid "" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" -"Rith ordú simplí nó taispeáin eolas maidir le horduithe.\n" +"Ritheann \"command\" ordú simplí nó taispeánann eolas maidir le horduithe.\n" " \n" -" Ritheann ORDÚ le hARGÓINTÍ gan cuardach feidhme blaoisce, nó " -"taispeánann\n" +" Ritear ORDÚ le hARGÓINTÍ gan cuardach feidhme blaoisce, nó taispeántar\n" " eolas maidir leis na horduithe sonraithe. Is féidir é seo a úsáid chun " "orduithe ar\n" " diosca a rith má tá feidhm leis an ainm céanna ann.\n" " \n" " Roghanna:\n" -" -p\túsáid luach réamhshocraithe le haghaidh CONAIR a aimseoidh go " +" -p\túsáidtear luach réamhshocraithe le haghaidh CONAIR a aimseoidh go " "cinnte\n" " \tgach ceann de na gnáthríomhchláir áirge.\n" -" -v\ttaispeáin cur síos ar ORDÚ cosúil leis an ordú ionsuite \"type\"\n" -" -V\ttaispeáin cur síos níos faide de gach ORDÚ\n" +" -v\ttaispeántar cur síos ar ORDÚ cosúil leis an ordú ionsuite 'type'\n" +" -V\ttaispeántar cur síos níos faide ar gach ORDÚ\n" " \n" " Stádas Scortha:\n" -" Aischuirtear an stádas scortha ó ORDÚ, nó teip mura aimsítear ORDÚ." +" Aischuirtear an stádas scortha ó ORDÚ, nó teip sa chás nach n-aimsítear " +"ORDÚ." #: builtins.c:490 msgid "" @@ -2829,11 +2961,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2849,20 +2981,59 @@ msgid "" " Returns success unless an invalid option is supplied or a variable\n" " assignment error occurs." msgstr "" +"Socraíonn \"declare\" luachanna agus airíonna athróige.\n" +" \n" +" Fograíonn \"declare\" athróga agus tugann sé aitreabúidí dóibh. Gan\n" +" AINMneacha, taispeántar a luach agus a haitreabúidí le haghaidh gach " +"athróg.\n" +" \n" +" Roghanna:\n" +" -f\tGníomh nó taispeáint srianta le hainmneacha feidhmeanna agus " +"sainithe.\n" +" -F\tGníomh le hainmneacha feidhmeanna amháin (móide uimhir líne agus\n" +" \t\tcomhad foinse le linn dífhabhtaithe).\n" +" -g\tCruthaítear athróga comhchoiteanna nuair a úsáidtear é laistigh " +"de\n" +" \t\tfheidhm bhlaoisce; déantar neamhaird de i gcásanna eile.\n" +" -p\tTaispeántar a luach agus a haitreabúidí le haghaidh gach AINM.\n" +" \n" +" Roghanna a shocraíonn aitreabúidí:\n" +" -a\tAINMneacha mar eagair innéacsaithe (má thacaítear leo)\n" +" -A\tAINMneacha mar eagair chomhthiomsaitheacha (má thacaítear leo)\n" +" -i\tCuirtear an aitreabúid \"integer\" (.i. slonnuimhir) le " +"hAINMneacha.\n" +" -l\tTiontaítear luach gach AINM go cás íochtair agus é á shannadh.\n" +" -n\tBíodh AINM ina thagairt don athróg ainmnithe ag a luach.\n" +" -r\tBíodh AINMneacha inléite amháin.\n" +" -t\tCuirtear an aitreabúid \"trace\" (.i. lorg) le hAINMneacha.\n" +" -u\tTiontaítear luach gach AINM go cás uachtair agus é á shannadh.\n" +" -x\tEaspórtálfar na hAINMneacha as seo amach.\n" +" \n" +" Le \"+\" in áit \"-\", múchtar an aitreabúid shonraithe.\n" +" \n" +" Má tá an aitreabúid \"integer\" ag athróg, déantar luacháil " +"uimhríochtuil\n" +" (feic an t-ordú \"let\") nuair a shanntar leis an athróg.\n" +" \n" +" Nuair a úsáidtear \"declare\" laistigh de fheidhm, beidh na hAINMneacha\n" +" logánta, mar a bheadh leis an t-ordú \"local\". Stopann an rogha \"-g\" " +"é seo.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí, nó go\n" +" dtarlaíonn earráid shannta." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" " A synonym for `declare'. See `help declare'." msgstr "" -"Socraigh luachanna agus airíonna athróg.\n" +"Socraíonn \"typeset\" luachanna agus airíonna athróige.\n" " \n" -" Imithe i léig. Feic \"help declare\"." +" Comhchiallach le \"declare\". Feic \"help declare\"." #: builtins.c:538 -#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2876,21 +3047,21 @@ msgid "" " Returns success unless an invalid option is supplied, a variable\n" " assignment error occurs, or the shell is not executing a function." msgstr "" -"Sainigh athróga logánta.\n" +"Sainíonn \"local\" athróga logánta.\n" " \n" -" Cruthaítear athróg logánta darbh ainm AINM, agus cuirtear LUACH leis. " -"Is\n" -" féidir le ROGHA a bheith ceann ar bith de na roghanna a ghlacann " -"\"declare\" leo.\n" +" Cruthaítear athróg logánta darbh ainm AINM, agus cuirtear LUACH leis.\n" +" Is féidir ceann ar bith de na roghanna a ghlacann \"declare\" leo a " +"úsáid\n" +" mar ROGHA.\n" " \n" " Ní féidir athróga logánta a úsáid ach laistigh de fheidhm. Tá siad " "infheicthe\n" " san fheidhm ina shainítear iad agus a mic amháin.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear rath mura thugtar rogha neamhbhailí, nó mura tharlaíonn " -"earráid,\n" -" nó mura bhfuil an bhlaosc ag rith feidhme." +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí, nó go " +"dtarlaíonn earráid,\n" +" nó go bhfuil an bhlaosc ag rith feidhme." #: builtins.c:555 #, fuzzy @@ -2922,23 +3093,32 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" "Scríobh na hargóintí ar an ngnáthaschur.\n" " \n" -" Taispeáin na hARGÓINTÍ ar an ngnáthaschur agus líne nua ina ndiadh.\n" +" Taispeántar na hARGÓINTÍ ar an ngnáthaschur le carachtair spáis eatarthu " +"agus\n" +" líne nua ina ndiadh.\n" " \n" " Roghanna:\n" -" -n\tná hiarcheangail líne nua\n" -" -n\tcumasaigh na héaluithe cúlslaise -E\tdíchumasaigh na " -"héaluithe cúlslaise \n" -" Tuigeann \"echo\" na carachtair éalaithe le cúlslais seo a leanas:\n" +" -n\tní hiarcheanglaítear líne nua\n" +" -e\tcumasaítear na héaluithe cúlslaise thíos\n" +" -E\tdíchumasaítear na héaluithe cúlslaise\n" +" Tuigeann 'echo' na carachtair éalaithe le cúlslais seo a leanas:\n" " \\a\tairdeall (clog)\n" " \\b\tcúlspás\n" " \\c\tcur deireadh le aschur\n" " \\e\tcaractar éalaithe\n" +" \\E\tcaractar éalaithe\n" " \\f\tfotha foirme\n" " \\n\tlíne nua\n" " \\r\taisfhilleadh carráiste\n" @@ -2955,7 +3135,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear rath ach i gcás earráide scríofa." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2977,7 +3157,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear rath ach i gcás earráide scríofa." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3004,7 +3184,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3024,7 +3204,7 @@ msgstr "" " Aischuirtear stádas scortha an ordaithe, nó rath más ordú neamhnitheach " "é." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3065,7 +3245,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3087,8 +3267,27 @@ msgid "" " Returns success unless COMMAND is not found or a redirection error " "occurs." msgstr "" +"Cuir an t-ordú sonraithe in áit na blaoisce.\n" +" \n" +" Ritear ORDÚ, agus an ríomhchlár sonraithe curtha in áit na blaoisce " +"seo.\n" +" Úsáidtear na hARGÓINTÍ mar argóintí don ORDÚ. Gan ÓRDÚ, cuirtear\n" +" atreoruithe i bhfeidhm sa bhlaosc reatha.\n" +" \n" +" Roghanna:\n" +" -a AINM\túsáidtear AINM mar argóint uimhir a náid don ORDÚ.\n" +" -c\tritear ORDÚ le timpeallacht fholamh\n" +" -l\tcuirtear fleiscín mar argóint uimhir a náid don ORDÚ.\n" +" \n" +" Sa chás nach féidir an t-ordú a rith, scoirfidh blaosc " +"neamhidirghníomhach,\n" +" mura bhfuil an rogha blaoisce 'execfail' socruithe.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás nach bhfaightear ORDÚ nó go dtarlaíonn\n" +" earráid atreoraithe." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3100,7 +3299,7 @@ msgstr "" " Scoireann den bhlaosc le stádas N. Má fhágtar N ar lár, is é stádas\n" " an chéad ordaithe deireanaigh an stádas scortha." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3113,7 +3312,7 @@ msgstr "" " Scoireann de bhlaosc logála isteach le stádas scortha N. Aischuirtear\n" " earráid má ritear é i mblaosc nach blaosc logála isteach í." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3158,17 +3357,17 @@ msgstr "" " -n\tfág uimhreacha na línte ar lár agus liosta á thaispeáint\n" " -r\taisiompaigh ord na línte (.i. liostaigh an ceann is nuaí ar dtús)\n" " \n" -" San fhormáid \"fc -s [PATRÚN=IONADAÍ ...] [ORDÚ]\", ath-ritear ORDÚ\n" +" San fhormáid 'fc -s [PATRÚN=IONADAÍ ...] [ORDÚ]', ath-ritear ORDÚ\n" " tar éis an t-ionadú SEAN=NUA a dhéanamh.\n" " \n" -" Ailias úsáideach is ea r='fc -s', sa chaoi go ritheann \"r cc\" an t-" -"ordú is deireanaí\n" -" a thosaíonn le \"cc\", agus ath-ritheann \"r\" an t-ordú is deireanaí.\n" +" Ailias úsáideach is ea r='fc -s', sa chaoi go ritheann 'r cc' an t-ordú " +"is deireanaí\n" +" a thosaíonn le 'cc', agus ath-ritheann 'r' an t-ordú is deireanaí.\n" " \n" " Stádas Scortha:n\\ Aischuirtear rath nó stádas an ordaithe rite; " "neamh-nialas má tharlaíonn earráid." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3179,17 +3378,18 @@ msgid "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -"Bog jab go dtí an tulra.\n" +"Bog tasc go dtí an tulra.\n" " \n" -" Cuir an jab a shonraítear le SONRÚ_JAB sa tulra agus é mar an jab " +" Cuirtear an tasc a shonraítear le SONRÚ_TASC sa tulra agus é mar an tasc " "reatha.\n" -" Mura bhfuil SONRÚ_JAB ann, úsáidtear cibé jab atá reatha de réir na " +" Mura bhfuil SONRÚ_TASC ann, úsáidtear cibé tasc atá reatha de réir na " "blaoisce.\n" " \n" " Stádas Scortha:\n" -" Stádas an ordaithe curtha sa tulra, nó teip má tharlaíonn earráid." +" Aischuirtear stádas an ordaithe a cuireadh sa tulra, nó teip má " +"tharlaíonn earráid." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3202,18 +3402,18 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" -"Bog jabanna go dtí an cúlra.\n" +"Bog tascanna go dtí an cúlra.\n" " \n" -" Cuir an jab a shonraítear le SONRÚ_JAB sa chúlra cosúil le é a thosú le " -"\"&\".\n" -" Mura bhfuil SONRÚ_JAB ann, úsáidtear cibé jab atá reatha de réir na " +" Cuirtear an tasc a shonraítear le SONRÚ_TASC sa chúlra cosúil le é a " +"thosú le '&'.\n" +" Mura bhfuil SONRÚ_TASC ann, úsáidtear cibé tasc atá reatha de réir na " "blaoisce.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear rath ach má tharlaíonn earráid nó mura bhfuil\n" -" rialú jabanna cumasaithe." +" Aischuirtear rath ach sa chás go dtarlaíonn earráid nó nach bhfuil\n" +" rialú tascanna cumasaithe." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3236,9 +3436,30 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" +"Cuimhnigh ar nó taispeáin suíomhanna ríomhchláracha.\n" +" \n" +" Faigh agus cuimhnigh ar an gconair iomlán le haghaidh gach AINM.\n" +" Gan argóintí, taispeántar eolas maidir le orduithe a bhfuil cuimhne " +"orthu.\n" +" \n" +" Roghanna:\n" +" -d\tDéantar dearmad ar shuíomh gach AINM.\n" +" -l\tTaispeáintear i bhformáid atá inúsáidte mar ionchur.\n" +" -p CONAIR\tÚsáidtear CONAIR mar an gconair iomlán le haghaidh AINM.\n" +" -r\tDéantar dearmad ar gach shuíomh atá coinnithe i gcuimhne.\n" +" -t\tPriontáiltear an suíomh atá i gcuimhne le haghaidh gach AINM, " +"agus\n" +" \t\tcuirtear AINM roimh a shuíomh má thugtar níos mó ná AINM amháin. " +"Argóintí:\n" +" AINM\tLorgaítear gach AINM i $PATH agus cuirtear le liosta na n-" +"orduithe\n" +" \t\tatá coinnithe i gcuimhne é.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás nach n-aimsítear AINM, nó go bhfuil\n" +" rogha neamhbhailí ann." -#: builtins.c:812 -#, fuzzy +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3253,7 +3474,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3267,9 +3488,10 @@ msgstr "" " i gcásanna eile taispeántar liosta na n-ábhar cabhrach.\n" " \n" " Roghanna:\n" -" -d\ttaispeáin cur síos gairid ar gach ábhar\n" -" -m\ttaispeáin úsáid i bhformáid cosúil leis an lámhleabhar man(1)\n" -" -s\tná taispeáin ach achoimre gairid úsáide le haghaidh gach ábhair a\n" +" -d\ttaispeántar cur síos gairid ar gach ábhar\n" +" -m\ttaispeántar úsáid i bhformáid cosúil leis an lámhleabhar man(1)\n" +" -s\tní thaispeántar ach achoimre gairid úsáide le haghaidh gach ábhair " +"a\n" " \tmheatseálann PATRÚN\n" " \n" " Argóintí:\n" @@ -3279,7 +3501,7 @@ msgstr "" " Aischuirtear rath ach sa chás nach n-aimsítear PATRÚN nó go dtugtar\n" " rogha neamhbhailí." -#: builtins.c:836 +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3288,7 +3510,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3313,7 +3536,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3336,9 +3559,31 @@ msgid "" " Returns success unless an invalid option is given or an error occurs.\n" " If -x is used, returns the exit status of COMMAND." msgstr "" - -#: builtins.c:899 -#, fuzzy +"Taispeáin stádas tascanna.\n" +" \n" +" Liostáiltear na tascanna gníomhacha. Le SONRÚ_TAISC, ní thaispeántar ach " +"an tasc sin.\n" +" Gan roghanna, taispeántar stádas gach tasc gníomhach.\n" +" \n" +" Roghanna:\n" +" -l\tliostáiltear aitheantais na bpróiseas chomh maith leis an ngnáth-" +"eolas.\n" +" -n\tní liostáiltear ach na próisis le stádas athruithe ón chéad fógra " +"roimhe seo\n" +" -p\tliostáiltear aitheantais na bpróiseas amháin\n" +" -r\tní liostáiltear ach tascanna atá ag rith\n" +" -s\tní liostáiltear ach tascanna atá stoptha\n" +" \n" +" Le -x, ritear ORDÚ tar éis gach SONRÚ_TAISC atá in ARGÓINTÍ a athrú go " +"aitheantas\n" +" próisis an phríomh-phróisis i ngrúpa próiseas an taisc sin.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbailí nó go " +"dtarlaíonn earráid.\n" +" Má úsáidtear -x, aischuirtear an stádas scortha ó ORDÚ. " + +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3354,22 +3599,23 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -"Bain jabanna den mblaosc reatha.\n" +"Bain tascanna den mblaosc reatha.\n" " \n" -" Baintear gach SONRÚ_JAB den tábla de jabanna gníomhacha. Gan\n" -" SONRÚ_JAB ar bith úsáidtear an jab atá reatha dar leis an mblaosc.\n" +" Baintear gach SONRÚ_TAISC den tábla de tascanna gníomhacha. Gan\n" +" SONRÚ_TAISC ar bith úsáidtear an tasc atá reatha dar leis an mblaosc.\n" " \n" " Roghanna:\n" -" -a\tbain gach jab mura sholáraítear SONRÚ_JAB\n" -" -h\tmarcáil gach SONRÚ_JAB sa chaoi nach seolfar SIGHUP chuige má\n" +" -a\tbaintear gach tasc mura sholáraítear SONRÚ_TAISC\n" +" -h\tmarcáiltear gach SONRÚ_TAISC sa chaoi nach seolfar SIGHUP chuige " +"má\n" " \tfhaigheann an bhlaosc féin SIGHUP\n" -" -r\tná bain ach jabanna atá ag rith\n" +" -r\tní bhaintear ach tascanna atá ag rith\n" " \n" " Stádas Scortha:\n" -" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí\n" -" nó SONRÚ_JAB neamhbhailí." +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó " +"SONRÚ_TAISC neamhbhailí." -#: builtins.c:918 +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3391,8 +3637,36 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" +"Seol comhartha chuig tasc.\n" +" \n" +" Seoltar an comhartha ainmnithe ag SONRÚ_COMHARTHA nó UIMHIR_CHOMHARTHA " +"go dti\n" +" an tasc sonraithe le AITHEANTAS_PRÓISIS nó SONRÚ_TAISC. Mura bhfuil " +"SONRÚ_COMHARTHA\n" +" nó UIMHIR_CHOMHARTHA ann, úsáidtear SIGTERM.\n" +" \n" +" Roghanna:\n" +" -s SONRÚ_COMHARTHA\n" +"Is ainm comhartha é SONRÚ_COMHARTHA\n" +" -n UIMHIR_COMHARTHA\n" +"Is uimhir chomhartha é SONRÚ_COMHARTHA\n" +" -l\tLiostáiltear ainmneacha na gcomharthaí. Má tá argóintí i ndiadh \"-" +"l\",\n" +" \t\tglactar leo mar uimhreacha comharthaí agus taispeántar a n-" +"ainmneacha.\n" +" -L\tMar an gcéanna le \"-l\"\n" +" \n" +" Tá \"kill\" ina ordú ionsuite blaoisce ar dhá chúis: is féidir " +"aitheantais\n" +" tascanna a úsáid in ionad aitheantais próiseas, agus is féidir próisis a " +"stopadh\n" +" fiú má tá uasmhéid na bpróiseas a bhfuil cead agat a chruthú sroichte " +"agat.\n" +" Stádas Scortha:\n" +" Aischuirtear rath muna bhfuil rogha neamhbhailí ann nó muna tharla " +"earráid." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3437,7 +3711,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3458,7 +3732,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3489,7 +3763,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3511,7 +3785,7 @@ msgstr "" " Aischuirtear N, nó teip sa chás nach bhfuil an bhlaosc ag rith feidhme " "nó scripte." -#: builtins.c:1047 +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3597,7 +3871,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3619,7 +3893,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3637,8 +3911,25 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" +"Socraíonn \"export\" an aitreabúid easpórtála le haghaidh athróga blaoisce.\n" +" \n" +" Marcáiltear gach AINM le haghaidh easpórtáil uathoibríoch go dtí " +"timpeallacht\n" +" na n-orduithe a ritear ina dhiaidh sin. Má sonraítear LUACH, sann LUACH\n" +" roimh easpórtáil.\n" +" \n" +" Roghanna:\n" +" -f\tcuirtear an aitreabúid i bhfeidhm ar feidhmeanna blaoisce\n" +" -n\tbaintear an aitreabúid ó gach AINM\n" +" -p\tpriontáiltear liosta de athróga agus feidhmeanna easpórtáilte\n" +" \n" +" Cuireann argóint de '--' deireadh le próiseáil na hargóintí.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go bhfuil " +"AINM neamhbhailí." -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3659,7 +3950,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -3669,8 +3960,15 @@ msgid "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." msgstr "" +"Iomlaoidigh paraiméadair ionaid.\n" +" \n" +" Athainmnítear na paraiméadair ionaid $N+1,$N+2 ... mar $1,$2 ...\n" +" Gan N, glactar leis mar 1.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go bhfuil N diúltach, nó níos mó ná $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3683,8 +3981,19 @@ msgid "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." msgstr "" +"Rith orduithe ó chomhad sa bhlaosc reatha.\n" +" \n" +" Léitear agus ritear orduithe ó AINM_CHOMHAID sa bhlaosc reatha.\n" +" Úsáidtear na hiontrálacha i $PATH chun an chomhadlann ina bhfuil\n" +" AINM_CHOMHAID a aimsiú. Má shonraítear ARGÓINTÍ, cuirtear iad mar\n" +" paraiméadair ionaid agus AINM_CHOMHAID á rith.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh in " +"AINM_COMHAID.\n" +" Teipeann air sa chás nach féidir AINM_CHOMHAID a léamh." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -3697,8 +4006,21 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"Cuir rith na blaoisce ar fionraí.\n" +" \n" +" Cuirtear rith na blaoisce seo ar fionraí go dtí go bhfaigheann sí\n" +" comhartha SIGCONT. Gan iallach, ní féidir blaosc logála isteach a\n" +" chur ar fionraí.\n" +" \n" +" Roghanna:\n" +" -f\tcuirtear iallach ar an t-ordú, fiú más blaosc logála isteach atá " +"ann.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás nach bhfuil rialú tascanna cumasaithe,\n" +" nó go dtarlaíonn earráid." -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3781,7 +4103,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3794,7 +4116,7 @@ msgstr "" " caithfear \"]\" go díreach a bheith ann mar an argóint\n" " dheireanach, le bheith comhoiriúnach leis an \"[\" ag an tús." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -3814,7 +4136,7 @@ msgstr "" " Stádas Scortha:\n" " Éiríonn leis i gcónaí." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -3858,7 +4180,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -3888,7 +4210,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -3937,7 +4259,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -3954,8 +4276,24 @@ msgid "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" +"Taispeáin nó socraigh masc mhód na gcomhad.\n" +" \n" +" Athraítear masc cruthaithe comhaid an úsáideora go MÓD. Gan MÓD,\n" +" taispeántar luach reatha an mhaisc.\n" +" \n" +" Ma thosaíonn MÓD le digit, glactar leis mar uimhir ochtnártha;\n" +" i gcásanna eile is teaghrán móid shiombalaigh é cosúil leis na cinn\n" +" a ghlacann chmod(1) leo.\n" +" \n" +" Roghanna:\n" +" -p\tgan mód, bíodh an aschur i bhformáid atá inúsáidte mar ionchur\n" +" -S\taschur siombalach; seachas sin aschuirfear uimhir ochtnártha\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go bhfuil MÓD neamhbhailí\n" +" nó go sonraítear rogha neamhbhailí." -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3963,19 +4301,45 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" +"Fanann \"wait\" go gcríochnaíonn tasc agus aischuireann a stádas scortha.\n" +" \n" +" Fantar le gach próiseas ata sonraithe le AITHEANTAS, a d'fhéadann a " +"bheith\n" +" ina aitheantas próisis nó sonrú taisc, agus tuairiscítear a stádas " +"críochnaithe.\n" +" Gan AITHEANTAS, fantar le gach macphróiseas gníomhach reatha, agus " +"aischuirtear 0.\n" +" Más sonrú taisc atá in AITHEANTAS, fantar le gach próiseas i bpíblíne an " +"taisc sin.\n" +" \n" +" Má sonraítear an rogha -n, fantar leis an gcéad tasc eile a stopann " +"agus\n" +" aischuirtear a stádas scortha.\n" +" \n" +" Má sonraítear an rogha -f agus má tá rialú jabanna cumasaithe, fantar go " +"dtí\n" +" go stopann an AITHEANTAS sonraithe, in áit fanadh le athrú stádais sa " +"tasc sin.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an AITHEANTAIS dheireanaigh. Teipeann ar an ordú má " +"tá\n" +" AITHEANTAS neamhbhailí nó má sonraítear rogha neamhbhailí." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3989,8 +4353,20 @@ msgid "" "invalid\n" " option is given." msgstr "" +"Fanann \"wait\" go gcríochnaíonn próiseas agus aischuireann an stádas " +"scortha.\n" +" \n" +" Fantar le gach próiseas atá sonraithe le AITHEANTAS_PRÓISIS, agus\n" +" tuairiscítear a stádais chríochnaithe. Gan AITHEANTAS_PRÓISIS, fantar\n" +" le gach macphróiseas gníomhach reatha, agus aischuirtear 0.\n" +" Ní mór d'AITHEANTAS_PRÓISIS bheith ina aitheantas próisis.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an AITHEANTAIS dheireanaigh. Teipeann ar an\n" +" ordú má tá AITHEANTAS_PRÓISIS neamhbhailí nó má shonraítear\n" +" rogha neamhbhailí." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4002,8 +4378,17 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Rith orduithe le haghaidh gach mír i liosta.\n" +" \n" +" Ritheann an lúb 'for' sraith ordaithe le haghaidh gach mír i liosta\n" +" míreanna. Gan 'in WORDS ...;', úsáidtear 'in \"$@\"'.\n" +" Le haghaidh gach eilimint i bhFOCAIL, tugtar an luach sin do AINM agus\n" +" ritear na hORDUITHE.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4024,7 +4409,7 @@ msgstr "" " Mar an gcéanna le\n" " \t(( SLONN1 ))\n" " \twhile (( SLONN2 )); do\n" -" \t\tORDAITHE\n" +" \t\tORDUITHE\n" " \t\t(( SLONN3 ))\n" " \tdone\n" " Is sloinn uimhreachtúla iad SLONN1, SLONN2 agus SLONN3.\n" @@ -4034,7 +4419,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4054,7 +4439,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4069,8 +4454,21 @@ msgid "" " Exit Status:\n" " The return status is the return status of PIPELINE." msgstr "" +"Tuairscíonn \"time\" tréimhse rite píblíne.\n" +" \n" +" Ritear PÍBLÍNE agus taispeántar achoimre den fhíor-am, am LAP\n" +" an úsáideora agus am LAP an chórais a chaitheadh ag rith PÍBLÍNE\n" +" nuair a stopann sí.\n" +" \n" +" Roghanna:\n" +" -p\tTaispeántar an achoimre sa bhformáid iniompartha POSIX.\n" +" \n" +" Úsáidtear luach na hathróige TIMEFORMAT don fhormáid aschuir.\n" +" \n" +" Stádas Scortha:\n" +" Is é stadas aischuir PÍBLÍNE an stádas aischuir ó \"time\"." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4080,8 +4478,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Rith orduithe de réir mheaitseála patrún.\n" +" \n" +" Ritear ORDUITHE de réir mar a mheaitseálann FOCAL an PATRÚN.\n" +" Úsáidtear '|' chun na patrúin a dheighilt.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4102,7 +4507,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4112,8 +4517,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Rith orduithe chomh fada agus a éiríonn le tástáil.\n" +" \n" +" Fairsingítear agus ritear ORDUITHE2 chomh fada agus atá stádas scortha\n" +" de náid ag an t-ordú deireanach sna hORDUITHE1 a leanann 'while'.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe deireanach a ritheadh." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4123,8 +4535,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Rith orduithe chomh fada agus a theipeann ar tástáil.\n" +" \n" +" Fairsingítear agus ritear ORDUITHE chomh fada agus atá stádas scortha\n" +" nach náid é ag an t-ordú deireanach sna hORDUITHE 'until'.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe deireanach a ritheadh." -#: builtins.c:1653 +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4136,8 +4555,17 @@ msgid "" " Exit Status:\n" " The coproc command returns an exit status of 0." msgstr "" +"Cruthaíonn \"coproc\" comhphróiseas ainmnithe AINM.\n" +" \n" +" Ritear ORDÚ go haisioncronach. Beidh gnáthaschur agus gnáthionchur\n" +" an ordaithe ceangailte trí phíopa le tuairisceoirí comhaid a bheidh\n" +" sannta do innéacsanna 0 agus 1 de eagar athróga ainmnithe AINM sa\n" +" bhlaosc atá ag rith. Is é \"COPROC\" an tAINM réamhshocraithe.\n" +" \n" +" Stádas Scortha:\n" +" Aischuireann an t-ordú \"coproc\" stádas scortha de 0." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -4161,7 +4589,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear rath mura bhfuil AINM inléite amháin." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -4179,7 +4607,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -4192,8 +4620,17 @@ msgid "" " Exit Status:\n" " Returns the status of the resumed job." msgstr "" - -#: builtins.c:1708 +"Tosaigh tasc arís sa tulra.\n" +"\n" +" Is ionann é seo agus an argóint SONRÚ_TAISC don ordú 'fg'.\n" +" Atosaítear tasc atá stoptha nó sa chúlra. Sonraíonnn SONRÚ_TAISC\n" +" ainm nó uimhir taisc. Má leanann '&' SONRÚ_TAISC, ritear an tasc sa\n" +" chúlra, cosúil leis an tasc a chur mar argóint le 'bg'.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an taisc atosaithe." + +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4203,8 +4640,17 @@ msgid "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" +"Faigh luach sloinn uimhríochtúil.\n" +" \n" +" Faightear luach an tSLOINN de réir na rialacha a bhaineann le\n" +" luacháil uimhríochtúil. Tá an t-ordú seo mar an gcéanna le\n" +" \"let SLONN\".\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear 1 más 0 an luach atá ag SLONN; aischuirtear 0 i gcásanna " +"eile." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -4232,7 +4678,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4286,7 +4732,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -4316,8 +4762,36 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"Cuir comhadlanna ar an gcruach.\n" +" \n" +" Cuireann comhadlann ar bharr na cruaiche comhadlanna, nó rothlaíonn\n" +" an chruach, ag cur barr nua na cruaiche mar an chomhadlann oibrithe\n" +" reatha. Gan argóintí, malartaítear an dá chomhadlann ar bharr.\n" +" \n" +" Roghanna:\n" +" -n\tNá déantar an gnáthathrú comhadlainne agus comhadlanna á gcur\n" +" \tleis an gcruach; ní athraítear ach an chruach.\n" +" \n" +" Argóintí:\n" +" +N\tRothlaítear an chruach sa chaoi go mbeidh an Nú chomhadlann (ag\n" +" \tcomhaireamh ó thaobh clé an liosta a thaispeánann \"dirs\" agus ag " +"tosú\n" +" \tó náid) ar bharr.\n" +" \n" +" -N\tRothlaítear an chruach sa chaoi go mbeidh an Nú chomhadlann (ag\n" +" \tcomhaireamh ó thaobh deas an liosta a thaispeánann \"dirs\" agus ag " +"tosú\n" +" \tó náid) ar bharr.\n" +" \n" +" COMHADLANN\tCuirtear COMHADLANN ar bharr na cruaiche, agus socraítear\n" +" \tí mar an chomhadlann oibrithe reatha.\n" +" \n" +" Taispeánann an t-ordú ionsuite \"dirs\" cruach na gcomhadlann. \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go sonraítear argóint neamhbhailí, nó\n" +" go dteipeann ar an athrú comhadlainne." -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -4343,8 +4817,37 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"Bain comhadlanna ón gcruach.\n" +" \n" +" Baintear comhadlanna ón gcruach comhadlanna. Gan argóintí, baintear an\n" +" chomhadlann ó bharr na cruaiche, agus téann go dtí an chomhadlann\n" +" atá ar bharr.\n" +" \n" +" Roghanna:\n" +" -n\tNá déantar an gnáthathrú comhadlainne agus comhadlanna á gcur\n" +" \tleis an gcruach; ní athraítear ach an chruach.\n" +" \n" +" Argóintí:\n" +" +N\tBaintear an Nú chomhadlann ag comhaireamh ó thaobh clé an liosta\n" +" \ta thaispeánann \"dirs\" agus ag tosú ó náid. Mar shampla, baineann\n" +" \t\"popd +0\" an chéad chomhadlann, agus \"popd +1\" an dara cheann.\n" +" \n" +" -N\tBaintear an Nú chomhadlann ag comhaireamh ó thaobh deas an liosta\n" +" \ta thaispeánann \"dirs\" agus ag tosú ó náid. Mar shampla, baineann\n" +" \t\"popd -0\" an chomhadlann dheireanach, agus \"popd -1\" an ceann\n" +" \tleathdheireanach.\n" +" \n" +" \n" +" COMHADLANN\tCuirtear COMHADLANN ar bharr na cruaiche, agus socraítear\n" +" \tí mar an chomhadlann oibrithe reatha.\n" +" \n" +" Taispeánann an t-ordú ionsuite \"dirs\" cruach na gcomhadlann.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go sonraítear argóint neamhbhailí, nó\n" +" go dteipeann ar an athrú comhadlainne." -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -4372,15 +4875,42 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Taispeáin cruach na gcomhadlann.\n" +" \n" +" Taispeáin liosta na gcomhadlann a bhfuil cuimhne orthu faoi láthair.\n" +" Cuirtear comhadlanna ar an liosta leis an ordú 'pushd'. Is féidir dul\n" +" siar trín liosta leis an ordú 'popd'.\n" +" \n" +" Roghanna:\n" +" -c\tglantar cruach na gcomhadlann trí gach mhír a bhaint de\n" +" -l\tná priontáiltear na comhadlanna i gcoibhneas le do chomhadlann " +"bhaile\n" +" \tagus le tilde rompu\n" +" -p\tpriontáiltear cruach na gcomhadlann, mír amháin ar gach líne\n" +" -v\tpriontáiltear cruach na gcomhadlann, mír amháin ar gach líne agus\n" +" \ta háit sa chruach roimpi\n" +" \n" +" Argóintí:\n" +" +N\tTaispeántar mír N, agus uimhrithe curtha ar na míreanna ó thaobh " +"clé\n" +" \tan liosta a thaispeántar le 'dirs' rite gan argóintí, ag tosú ó " +"náid.\n" +" -N\tTaispeántar mír N, agus uimhrithe curtha ar na míreanna ó thaobh " +"deas\n" +" \tan liosta a thaispeántar le 'dirs' rite gan argóintí, ag tosú ó " +"náid.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath muna bhfuil rogha neamhbhailí ann nó muna tharla " +"earráid." -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4393,8 +4923,27 @@ msgid "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." msgstr "" +"Socraigh agus díshocraigh roghanna na blaoisce.\n" +" \n" +" Athraítear socrú gach rogha blaoisce AINM_ROGHA. Gan argóintí roghnacha " +"ar bith,\n" +" liostáiltear gach AINM_ROGHA, nó gach rogha blaoisce mura bhfuil " +"AINM_ROGHA\n" +" ann, lena stádas socruithe nó díshocraithe.\n" +" \n" +" Roghanna:\n" +" -o\tbíodh AINM_ROGHA srianta dóibh siúd atá inúsáidte le 'set -o'\n" +" -p\tpriontáiltear gach rogha blaoisce le comhartha dá stádas\n" +" -q\tcuir cosc ar aschur\n" +" -s\tcumasaigh (socraigh) gach AINM_ROGHA\n" +" -u\tdíchumasaigh (díshocraigh) gach AINM_ROGHA\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath má tá AINM_ROGHA cumasaithe. Teipeann ar shopt má " +"thugtar\n" +" rogha neamhbhailí, nó má tá AINM_ROGHA díchumasaithe." -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4433,7 +4982,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1953 +#: builtins.c:1961 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4451,16 +5000,20 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4474,16 +5027,16 @@ msgid "" msgstr "" "Taispeáin na hiomlánaithe atá ar fáil de réir na roghanna.\n" " \n" -" Tá sé seo ceaptha le húsáid i bhfeidmeanna blaoisce a chruthaíonn " +" Tá sé seo ceaptha le húsáid i bhfeidmeanna blaoisce a dhéanann " "iomlánaithe.\n" -" Má thugtar an argóint roghnach FOCAL, cruthaítear iomlánaithe\n" -" atá comhoiriúnach le FOCAL.\n" +" Má thugtar an argóint roghnach FOCAL, cruthaítear iomlánaithe\n" +" atá comhoiriúnach le FOCAL.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear rath mura thugtar rogha neamhbhailí agus mura tharlaíonn " -"earráid." +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go " +"dtarlaíonn earráid." -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -4498,6 +5051,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -4513,8 +5067,35 @@ msgid "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." msgstr "" +"Athraíonn nó taispeánann \"compopt\" na roghanna iomlánaithe.\n" +" Athraítear na roghanna iomlánaithe le haghaidh gach AINM,\n" +" nó gan AINMneacha taispeántar an t-iomlánú atá á dhéanamh faoi láthair.\n" +" Gan ROGHA ar bith, taispeántar na hiomlánaithe le haghaidh gach AINM\n" +" nó an mionsonrú iomlánaithe reatha.\n" +" \n" +" Roghanna:\n" +" \t-o ROGHA\tSocraítear an rogha iomlánaithe ROGHA le haghaidh gach " +"AINM.\n" +" \t-D\t\tAthraítear roghanna don iomlánú ordaithe \"réamhshocraithe\".\n" +" \t-E\t\tAthraítear roghanna don iomlánú ordaithe \"folamh\".\n" +" \t-I\t\tAthraítear roghanna don iomlánú ar an gcéad focal.\n" +" \n" +" Le \"+o+ in áit \"-o\", múchtar an rogha shonraithe.\n" +" \n" +" Argóintí:\n" +" \n" +" Tagraíonn gach AINM do ordú a bhfuil mionsonrú iomlánaithe sainmhínithe\n" +" dó roimh ré leis an ordú ionsuite \"complete\". Gan AINM, ní mór " +"\"compopt\"\n" +" a ghlaoigh ó fheidhm atá ag déanamh iomlánaithe ag an am, agus " +"athraítear\n" +" na roghanna don déantóir iomlánaithe sin atá ag rith.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí, nó nach\n" +" bhfuil sonrú iomlánaithe ann le haghaih AINM." -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4555,20 +5136,65 @@ msgid "" "or\n" " not an indexed array." msgstr "" +"Léann \"mapfile\" línte ón ngnáthionchur agus cuireann in athróg eagair " +"innéacsaithe iad.\n" +" \n" +" Léann línte ón ngnáthionchur agus cuireann san athróg eagair " +"innéacsaithe\n" +" EAGAR iad, nó léann ón dtuairisceoir comhaid TC má shonraítear -u. Is í " +"an\n" +" athróg MAPFILE an eagar réamhshocraithe.\n" +" \n" +" Roghanna:\n" +" -d TEORMHARCÓIR\tÚsáidtear TEORMHARCÓIR chun deireadh a chur le " +"línte.\n" +" -n COMHAIREAMH\tCóipeáiltear COMHAIREAMH líne ar a mhéid. Más 0 é " +"COMHAIREAMH,\n" +" \t\tcóipeáiltear gach líne.\n" +" -O BUNÚS\tTosaítear ag sannadh go EAGAR ag an innéacs BUNÚS. Is é 0 an " +"BUNÚS\n" +" \t\tréamhshocraithe.\n" +" -s COMHAIREAMH\tDéantar neamhaird de na chéad COMHAIREAMH líne a " +"léitear.\n" +" -t\tBaintear TEORMHARCÓIR ó deireadh gach líne (carachtar líne nua\n" +" réamhshocraithe).\n" +" -u TC\tLéitear línte ón dtuairisceoir comhad TC in áit an " +"ghnáthionchuir.\n" +" -C AISGHLAOCH\tLuacháiltear AISGHLAOCH tar éis gach CANDAM líne a " +"léitear.\n" +" -c CANDAM\tLíon na línte atá le léamh idir glaoanna ar AISGHLAOCH.\n" +" \n" +" Argóintí:\n" +" EAGAR\tAinm an athróige eagair atá le húsáid le haghaidh sonraí " +"comhaid.\n" +" \n" +" Má shonráitear -C gan -c, is é 5000 an CANDAM réamhshocraithe. Agus " +"AISGHLAOCH\n" +" á luacháil, tugtar dó innéacs na céad eiliminte eile atá le sannadh " +"agus\n" +" an líne atá le sannadh don eilimint sin mar argóintí breise.\n" +" \n" +" Gan BUNÚS sonraithe go soiléir, glanfaidh \"mapfile\" EAGAR roimh faic " +"a\n" +" shannadh dó.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go sonraítear rogha neamhbhailí, nó go " +"bhfuil\n" +" EAGAR inléite amháin, nó nach eagar innéacsaithe é EAGAR." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" -"Léigh línte ó chomhad agus cuir in athróg eagair iad.\n" +"Léann línte ó chomhad agus cuireann in athróg eagair iad.\n" " \n" " Comhchiallach le \"mapfile\"." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Cóipcheart © 2013 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Cóipcheart © 2012 Free Software Foundation, Inc." #~ msgid ":" #~ msgstr ":" @@ -4582,9 +5208,6 @@ msgstr "" #~ msgid "times" #~ msgstr "times" -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Cóipcheart © 2012 Free Software Foundation, Inc." - #~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" #~ msgstr "" #~ "xrealloc: ní féidir %lu beart a athleithdháileadh (%lu beart leithdháilte)" diff --git a/po/gl.gmo b/po/gl.gmo index de9d0aedb..feaa792d0 100644 Binary files a/po/gl.gmo and b/po/gl.gmo differ diff --git a/po/gl.po b/po/gl.po index 7e101ced4..081e0a384 100644 --- a/po/gl.po +++ b/po/gl.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" "PO-Revision-Date: 2012-02-23 14:38+0100\n" "Last-Translator: Leandro Regueiro \n" "Language-Team: Galician \n" @@ -21,123 +21,124 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: gl\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "subíndice de matriz incorrecto" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: non é posíbel converter a matriz de indizada a asociativa" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: índice de matriz asociativa non válido" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: non é posíbel asignar a un índice que non é numérico" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: se debe usar un subíndice ao asignar a unha matriz asociativa" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: non foi posíbel crear: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: non foi posíbel atopar a combinación de teclas " "para a orde" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: o primeiro carácter que non é espazo en branco non é `\"'" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "no hai un `%c' que peche en %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: falta un `:' separador" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nome de alias non válido" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "no se activó a edición de liña" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': nome de combinación de teclas non válido" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: non se pode leer: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "%s: non se pode borrar a asignación" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': nome de función descoñecido" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s non está asignado a ningunha tecla.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s pódese invocar a través de " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "%s: non se pode borrar a asignación" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "contía de ciclo" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "só ten significado nun ciclo `for', `while' ou `until'" @@ -151,234 +152,234 @@ msgstr "" " \n" " Sen EXPR, devovle " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME non está definido" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "demasiados argumentos" -#: builtins/cd.def:336 +#: builtins/cd.def:341 #, fuzzy msgid "null directory" msgstr "non hai outro directorio" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD non está definido" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "liña %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "aviso: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: a opción require un argumento" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: requírese un argumento numérico" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: non se atopou" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: opción non válida" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: nome de opción non válido" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': non é un identificador válido" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "número octal non válido" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "número hexadecimal non válido" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "número non válido" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: especificación de sinal non válida" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': no é un pid ou unha especificación válida de traballo" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: variábel de só lectura" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fóra de rango" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argumento" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s fóra de rango" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: non existe ese traballo" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: no hai control de traballos" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "no ha control de traballos" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: restrinxido" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "restrinxido" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: no é una orde interna do shell" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "erro de escritura: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "erro ao estabelecer os atributos da terminal: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "erro ao obtener os atributos da terminal: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: erro ao obtener o directorio actual: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: especificación de traballo ambigüa" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: nome de acción non válido" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: non hai completado de especificación" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "aviso: é posíbel que a opción -F non funcione como se espera" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "aviso: é posíbel que a opción -C non funcione como se espera" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "non se está executando a función de completado" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "só se pode usar dentro dunha función" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 -#, fuzzy, c-format +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 +#, c-format msgid "%s: circular name reference" -msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" +msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" +msgstr "`%s': nome de alias non válido" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "non se pode use `-f' para facer funcións" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: función de só lectura" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: non é posíbel destruír variábeis de matriz desta forma" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: non é posíbel converter unha matriz asociativa a indizada" @@ -412,68 +413,68 @@ msgstr "%s: non foi cargado dinamicamente" msgid "%s: cannot delete: %s" msgstr "%s: non foi posíbel eliminar: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: é un directorio" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: non é un ficheiro regular" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: o ficheiro é demasiado grande" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: non é posíbel executar o ficheiro binario" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: non foi posíbel executar: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "non é un shell de entrada: use `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Hai traballos pendentes.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Hay traballos en execución.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "non foi posíbel atopar a orde" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "especificación de historial" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: non é posíbel abrir o ficheiro temporal: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "actual" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "o traballo %d iniciou sen control de traballo" @@ -488,28 +489,27 @@ msgstr "%s: opción ilegal -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: a opción require un argumento -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "asociación desactivada" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: táboa de asociación baleira\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "coinc\torde\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Orde do shell que coincide coa palabra `" msgstr[1] "Orde do shell que coincide coas palabras `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -517,12 +517,12 @@ msgstr "" "non hai temas de axuda que coincidan con «%s». Probe «help help» ou «man -k %s» " "ou «info %s»" -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: non foi posíbel abrir: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -543,20 +543,21 @@ msgstr "" "Un asterisco (*) xunto a un nome significa que a orde está desactivada.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "non foi posíbel usar máis dun de -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "posición no historial" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: límite de argumento non válido" +msgstr "%s: nome de opción non válido" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: fallou a expansión do historial" @@ -570,16 +571,16 @@ msgstr "%s: fallou inlib" msgid "no other options allowed with `-x'" msgstr "non se permiten outras opcións con «-x»" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: os argumentos deben ser procesos ou IDs de traballos" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Erro descoñecido" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "agardábase unha expresión" @@ -588,69 +589,69 @@ msgstr "agardábase unha expresión" msgid "%s: not an indexed array" msgstr "%s: non é unha matriz indizada" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: especificación de descritor de ficheiro non válida" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descritor de ficheiro non válido: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: conta de liñas non válida" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: orixe de matriz non válido" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantum de chamada non válido" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "nome de variábel de matriz baleiro" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "requírese a compatibilidade de variábel de matriz" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "`%s': falta o carácter de formato" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': especificación de formato de tempo non válida" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "`%c': carácter de formato non válido" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "falta o díxito hexadecimal para \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "falta o díxito unicode para \\%c" @@ -664,19 +665,19 @@ msgstr "non hai outro directorio" msgid "%s: invalid argument" msgstr "%s: límite de argumento non válido" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "a pila de directorios está baleira" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "índice da pila de directorios" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -720,7 +721,7 @@ msgstr "" "\tlista mostrada por dirs cando se chama sen opcións,\n" "\tcomezando desde cero." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -762,7 +763,7 @@ msgstr "" " \n" " A orde interna `dirs' mostra a rima de directorios." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -807,40 +808,40 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: especificación de tempo de expiración non válida" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "erro de lectura: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "só se pode usar «return» nunha función ou guión lido con «source»" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "non é posíbel borrar ao mesmo tempo unha función e unha variábel" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: non é posíbel borrar" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: non é posíbel borrar: %s é de só lectura" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: non é unha variábel de matriz" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: non é unha función" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: non é posíbel borrar" @@ -849,20 +850,20 @@ msgstr "%s: non é posíbel borrar" msgid "shift count" msgstr "conta de shift" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "non é posíbel activar e desactivar opcións do shell simultaneamente" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nome de opción do shell non válido" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "requírese un argumento de nome de ficheiro" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: non se atopou o ficheiro" @@ -875,61 +876,61 @@ msgstr "non é posíbel suspender" msgid "cannot suspend a login shell" msgstr "non é posíbel suspender un shell de entrada" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s é un alias de `%s'\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s é unha palabra chave do shell\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s é unha función\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s é unha orde interna do shell\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s é unha orde interna do shell\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s é %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s está asociado (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: límite de argumento non válido" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': orde errónea" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: non é posíbel obter o límite: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "límite" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: non é posíbel modificar o límite: %s" @@ -948,361 +949,371 @@ msgstr "`%c': operador de modo simbólico non válido" msgid "`%c': invalid symbolic mode character" msgstr "`%c': carácter de modo simbólico non válido" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " liña " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "última orde: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Abortando…" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "erro de orde descoñecido" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "tipo de orde erróneo" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "conector erróneo" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "salto erróneo" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: variable sen asignar" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aexpirou mentres agardaba algunha entrada: auto-logout\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "non é posíbel redirixir a saída estándar desde /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': carácter de formato non válido" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "erro de canalización" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restrinxido: non se pode especificar `/' en nomes de ordes" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: non se atopou a orde" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: intérprete erróneo" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: non é posíbel executar o ficheiro binario" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s é unha orde interna do shell\n" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "no se pode duplicar o df %d ao df %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "excedeuse o nivel de recursión da expresión" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "desbordamento da base da pila de recursión" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "erro de sintaxe na expresión" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "tentouse asignar a algo que non é unha variábel" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "erro de sintaxe na expresión" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "división entre 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "erro: elemento de asignación de expresión erróneo" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "agardábase `:' para a expresión condicional" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "expoñente menor que 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "agardábase un identificador despois do pre-incremento ou pre-decremento" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "falta un `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "erro de sintaxe: agardábase un operando" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "erro de sintaxe: operador aritmético non válido" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (o elemento de erro é \"%s\")" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "base aritmética non válida" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "valor demasiado grande para a base" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: erro de expresión\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: non é posíbel acceder aos directorios pai" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "non é posíbel restabelecer o modo nodelay para o df %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "non é posíbel asignar un novo descritor de ficheiros para a entrada de bash " "desde o fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" "save_bash_input: o almacenamento intermedio xa existe para o novo fd %d" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: tubería de pgrp" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "o pid `forked' %d aparece no traballo en execución %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "borrando o trabajo detido %d con grupo de proceso %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: o proceso %5ld (%s) en the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) márcase como vivo aínda" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: non existe tal pid" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Sinal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Feito" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Detido" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Detido(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "En execución" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Feito(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Saída %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Estado descoñecido" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(«core» xerado) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (dir agora: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid fillo (%ld a %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld non é un proceso fillo desta shell" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Non hai un rexistro do proceso %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: o traballo %d está detido" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: o traballo rematou" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: o trabajo %d xa está en segundo plano" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: actívase WNOHANG para evitar o bloque indefinido" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: liña %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " («core» generado)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(dir agora: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs_control: fallou getpgrp" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_jobs_control: disciplina de liña" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_jobs_control: disciplina de liña" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_jobs_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "non é posíbel estabelecer o grupo de procesos de terminal (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "non hai control de trabalos nesta shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: fallou a aserción: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1311,40 +1322,40 @@ msgstr "" "\r\n" "malloc: %s:%d: aserción arruinada\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "descoñecido" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: bloque na lista libre sobreescrito" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: chamouse cun argumento de bloque previamente liberado" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: chamouse cun argumento de bloque sen asignar" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: os tamaños dos anacos de inicio e fin son diferentes" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: chamouse cun argumento de bloque sen asignar" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "realloc: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: os tamaños dos anacos de inicio e fin son diferentes" @@ -1386,23 +1397,23 @@ msgstr "%s: especificación de ruta de rede errónea" msgid "network operations not supported" msgstr "non hai compatibilidade para operacións de rede" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL non se pode cambiar a configuración rexional (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" "setlocale: LC_ALL: non se pode cambiar a configuración rexional (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: non se pode cambiar a configuración rexional (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: non se pode cambiar a configuración rexional (%s): %s" @@ -1420,149 +1431,149 @@ msgstr "Ten unha nova mensaxe en $_" msgid "The mail in %s has been read\n" msgstr "O correo en %s foi lido\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "error de sintaxe: requírese unha expresión aritmética" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "error sintáctico: `;' non esperado" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "erro de sintaxe: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo de instrución %d erróneo" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "o documento-aquí na liña %d está delimitado por fin-de-fichero (agardábase `%" "s')" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: a instrucción de redirección `%d' está fóra de rango" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF inesperado mentres se buscaba un `%c' coincidente" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "EOF inesperado mentres se buscaba `]]'" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "error de sintaxe na expresión condicional: elemento inesperado `%s'" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "error sintáctico na expresión condicional" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "elemento inesperado `%s', agardábase `)'" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "agardábase `)'" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento inesperado `%s' para o operador unario condicional" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para o operador unario condicional" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "elemento inesperado `%s', agardábase un operador binario condicional" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "agardábase un operador binario condicional" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento inesperado `%s' para o operador binario condicional" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para o operador binario condicional" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "elemento inesperado `%c' na orde condicional" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "elemento inesperado `%s' na orde condicional" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "elemento inesperado %d na orde condicional" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "error de sintaxe perto do elemento inesperado `%s'" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "erro de sintaxe cerca de «%s»" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "error de sintaxe: non se agardaba o final do fichero" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "erro de sintaxe" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use «%s» para deixar o shell.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF non agardado mentres se buscaba un «)» coincidente" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: non se atopa a función `%s'" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1591,90 +1602,94 @@ msgstr "xtrace_set: punteiro a ficheiro NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != numfich xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': carácter de formato non válido" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "descritor de ficheiro fóra de rango" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redireccionamento ambigüo" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: non se pode sobreescribir un fichero existente" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restrinxido: no se pode redirixir a saída" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "non se pode crear un fichero temporal para o documento-aquí: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: non é posíbel asignar o gd á variábel" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "non se admite /dev/(tcp|udp)/anfitrion/porto sen rede" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "erro de redirección: non é posíbel duplicar o fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "non é posíbel atopar /tmp, por favor creeo!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp debe ser un nome de directorio válido" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opción non válida" -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "non é posíbel restabelecer o modo nodelay para o df %d" -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "non é posíbel restabelecer o modo nodelay para o df %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: é un directorio" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Non teño nome!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versión %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1683,54 +1698,54 @@ msgstr "" "Uso:\t%s [opción GNU longa] [opción] ...\n" "\t%s [opción GNU longa] [opción] guión-do-shell\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Opcións GNU longas:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Opcións do shell:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD o -c orde ou -O opcion_shopt\t\t(só invocación)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ou -o opción\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Escriba `%s -c \"help set\"' para máis información sobre as opcións do " "shell.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Escriba `%s -c help' para máis información sobre as ordes internas do " "shell.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use a orden `bashbug' para reportar erros.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operación non válida" @@ -1904,92 +1919,97 @@ msgstr "Sinal descoñecido #" msgid "Unknown Signal #%d" msgstr "Sinal descoñecido #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "susbtitución errónea: non hai un `%s' que peche en %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: no é posíbel asignar unha lista a un membro da matriz" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "non é posíbel crear a tubería para a sustitución do proceso" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "non é posíbel crear un proceso fillo para a substitución do proceso" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "non é posíbel abrir a tubería chamada %s para lectura" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "non é posíbel abrir a tubería chamada %s para escritura" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "non é posíbel duplicar a tubería chamada %s como df %d" -#: subst.c:5959 +#: subst.c:6062 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "substitución errónea: non hai unha \"`\" que peche en %s" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "non é posíble crear a tubería para a substitución da orde" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "non é posíbel crear un proceso fillo para a substitución da orde" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: non é posíbel duplicar a tubería como fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: substitución errónea" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: conta de liñas non válida" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "`%s': nome de alias non válido" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parámetro nulo ou non estabelecido" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parámetro nulo ou non estabelecido" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expresión de subcadea < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substitución errónea" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: non é posíbel asignar de esta forma" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1997,12 +2017,12 @@ msgstr "" "versiones futuras do intérprete obligarán a evaluación como unha " "substitución aritmética" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substitución errónea: non hai unha \"`\" que peche en %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "non hai concidencia: %s" @@ -2025,30 +2045,35 @@ msgstr "agardábase `)'" msgid "`)' expected, found %s" msgstr "`)' agardábase, atopouse %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: agardábase un operador unario" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: agardábase un operador binario" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "falta un «]»" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "número de sinal non válido" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: valor erróneo en trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2056,86 +2081,86 @@ msgstr "" "run_pending_traps: o manexador de sinal é SIG_DFL, reenviando %d (%s) a sí " "mesmo" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: sinal errónea %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "erro ao importar a definición da función para «%s»" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "o nivel de shell (%d) é demasiado alto, restabelécese a 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: non hai contexto de función no ámbito actual" -#: variables.c:2432 +#: variables.c:2674 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: non é posíbel asignar o gd á variábel" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" +msgstr "" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: non hai contexto de función no ámbito actual" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s ten exportstr nulo" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carácter non válido %d en exportsrt para %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "non hai «=» en exportstr para %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: a cabezak de shell_variables non é un contexto de función" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: non é un contexto global_variables " -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: a cabeza de shell_variables non é un ámbito de ambiente temporal" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: non é posíbel abrir como FICHEIRO" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" -#: variables.c:5669 +#: variables.c:6322 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s fóra de rango" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." msgstr "Copyright (C) 2011 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2161,22 +2186,22 @@ msgstr "Isto é software libre; vostede é libre de cambialo e redistribuilo.\n" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Non hai GARANTÍA, á extensión permitida pola ley.\n" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: non é posíbel asignar %lu bytes (%lu bytes asignados)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: non é posíbel asignar %lu bytes" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: non é posíbel asignar %lu bytes (%lu bytes asignados)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: non é posíbel asignar %lu bytes" @@ -2395,13 +2420,13 @@ msgstr "umask [-p] [-S] [modo]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "wait [id]" #: builtins.c:181 #, fuzzy msgid "wait [pid ...]" -msgstr "wait [id]" +msgstr "wait [pid]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2486,8 +2511,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] formato [argumentos]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2506,7 +2532,8 @@ msgstr "" "sufixo] [palabra]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o opción] [-DE] [nome ...]" #: builtins.c:242 @@ -2519,9 +2546,10 @@ msgstr "" "quantum] [matriz]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n conta] [-O orixe] [-s conta] [-t] [-u df] [-C chamada] [-c " "quantum] [matriz]" @@ -2699,6 +2727,7 @@ msgstr "" " O estado de salida é 0 a menos que N non sexa maior ou igual a 1." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2709,7 +2738,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Executa ordes internas do shell\n" " \n" @@ -2904,11 +2933,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2992,12 +3021,18 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3010,7 +3045,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3037,7 +3072,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3056,7 +3091,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado de saida da orde ou éxito se a orde é nula." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3097,7 +3132,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3120,7 +3155,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3132,7 +3167,7 @@ msgstr "" " Termina o shell cun estado de N. Se se omite N, o estado de saída\n" " é o mismo da última orde executada." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3145,7 +3180,7 @@ msgstr "" " Termina un shell de entrada cun estado de saída de N. Devolve un\n" " erro se non se executa nunha shell de entrada." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3175,7 +3210,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3196,7 +3231,7 @@ msgstr "" " O estado da orde localizada en primeiro plano, ou falla se sucede un " "erro." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3210,7 +3245,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3234,7 +3269,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3249,14 +3284,14 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " "given." msgstr "" -#: builtins.c:836 +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3265,7 +3300,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3290,7 +3326,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3314,7 +3350,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3331,7 +3367,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:918 +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3354,7 +3390,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3399,7 +3435,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3420,7 +3456,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3451,7 +3487,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3463,7 +3499,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3549,7 +3585,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3571,7 +3607,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3590,7 +3626,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3611,7 +3647,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -3622,7 +3658,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3636,7 +3672,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -3662,7 +3698,7 @@ msgstr "" " Devolve con éxito a menos que non estea activo o control de traballos o\n" " se produza un erro." -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3745,7 +3781,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3757,7 +3793,7 @@ msgstr "" " Este é un sinónimo para a orde interna \"test\", pero o último\n" " argumento debe ser un `]' literal, que coincida co `[' inicial." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -3776,7 +3812,7 @@ msgstr "" " Estado de saída:\n" " Sempre con éxito." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -3820,7 +3856,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -3850,7 +3886,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -3899,7 +3935,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -3917,8 +3953,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 -#, fuzzy +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3926,28 +3961,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -"Agarda a terminación do traballo e devolve o estado de saída.\n" -" \n" -" Espera ao proceso especificado e reporta o seu estado de saída. Se\n" -" non se fornece un PID, agarda a todos os procesos fillo activos,\n" -" e o código de devolución é cero. PID debe ser un ID de proceso.\n" -" \n" -" Estado de Saída:\n" -" Devolve o estado de ID; falla se ID non é válido ou se se fornece unha\n" -" opción non válida." -#: builtins.c:1515 +#: builtins.c:1523 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -3972,7 +4000,7 @@ msgstr "" " Devolve o estado de ID; falla se ID non é válido ou se se fornece unha\n" " opción non válida." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3994,7 +4022,7 @@ msgstr "" " Estado de Saída:\n" " Devuelve o estado da última orden executada." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4024,7 +4052,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4044,7 +4072,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4060,7 +4088,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4078,7 +4106,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4099,7 +4127,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4117,7 +4145,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4135,7 +4163,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1653 +#: builtins.c:1661 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -4158,7 +4186,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado de saída da ORDE." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -4172,7 +4200,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -4190,7 +4218,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -4204,7 +4232,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4222,7 +4250,7 @@ msgstr "" " Estado de Saída:\n" " Devolve 1 se a EXPRESIÓN avalía a 0; devovle 0 de outra maneira." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -4250,7 +4278,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4304,7 +4332,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1811 #, fuzzy msgid "" "Add directories to stack.\n" @@ -4353,7 +4381,7 @@ msgstr "" " \n" " A orde interna `dirs' mostra a rima de directorios." -#: builtins.c:1837 +#: builtins.c:1845 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -4400,7 +4428,7 @@ msgstr "" " \n" " A orde interna `dirs' mostra a pila de directorios." -#: builtins.c:1867 +#: builtins.c:1875 #, fuzzy msgid "" "Display directory stack.\n" @@ -4450,14 +4478,14 @@ msgstr "" "\tlista mostrada por dirs cando se chama sen opcións,\n" "\tcomezando desde cero." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4487,7 +4515,7 @@ msgstr "" " Devolve con éxito se se activa NOME_OPCIÓN; falla se se fornece\n" " unha opción non válida ou NOME_OPCIÓN está desactivado." -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4526,7 +4554,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1953 +#: builtins.c:1961 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4544,16 +4572,20 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4575,7 +4607,7 @@ msgstr "" " Devolve con éxito a menos que se forneza unha opción non válida o\n" " se produza un erro." -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -4590,6 +4622,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -4606,7 +4639,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4648,7 +4681,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4658,9 +4691,15 @@ msgstr "" " \n" " Un sinónimo de `mapfile'." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Licenza GPLv2+: GPL de GNU versión 2 ou posterior \n" #~ msgid ":" #~ msgstr ":" @@ -4673,20 +4712,3 @@ msgstr "" #~ msgid "times" #~ msgstr "times" - -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." - -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" - -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Licenza GPLv2+: GPL de GNU versión 2 ou posterior \n" - -#~ msgid "wait [pid]" -#~ msgstr "wait [pid]" diff --git a/po/hr.gmo b/po/hr.gmo index cc117fe74..44224b1e5 100644 Binary files a/po/hr.gmo and b/po/hr.gmo differ diff --git a/po/hr.po b/po/hr.po index f914d13a3..14e12dea6 100644 --- a/po/hr.po +++ b/po/hr.po @@ -1,139 +1,152 @@ # Translation of bash to Croatian. -# Copyright © 2012 Free Software Foundation, Inc. +# Copyright © 2018 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Tomislav Krznar , 2012, 2013. # +# Tomislav Krznar , 2012, 2013. +# Božidar Putanec , 2018. msgid "" msgstr "" -"Project-Id-Version: bash 4.2\n" +"Project-Id-Version: bash 5.0-beta2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2013-04-18 01:00+0200\n" -"Last-Translator: Tomislav Krznar \n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2018-12-05 17:31-0800\n" +"Last-Translator: Božidar Putanec \n" "Language-Team: Croatian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hr\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Gtranslator 2.91.6\n" +"X-Generator: Poedit 2.2\n" +"X-Poedit-Basepath: ../sources\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPath-1: bash-5.0-beta2\n" +"X-Poedit-SearchPath-2: bash-5.0-beta2/builtins\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" -msgstr "neispravan indeks polja" +msgstr "nevaljani indeks polja" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: uklanja se atribut nameref" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "%s: ne mogu pretvoriti indeksirano u asocijativno polje" +msgstr "%s: nije moguće pretvoriti indeksirano u asocijativno polje" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" -msgstr "%s: neispravan ključ asocijativnog polja" +msgstr "%s: nevaljani ključ asocijativnoga polja" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" -msgstr "%s: ne mogu pridružiti nenumeričkom indeksu" +msgstr "%s: indeks mora biti numerički" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" -msgstr "%s: %s: mora koristiti indeks pri pridruživanju asocijativnog polja" +msgstr "%s: %s: mora se koristiti indeks pri dodijeli asocijativnoga polja" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" -msgstr "%s: ne mogu napraviti: %s" +msgstr "%s: nije moguće napraviti: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" -msgstr "bash_execute_unix_command: ne mogu pronaći tipkovničku mapu za naredbu" +msgstr "bash_execute_unix_command: nije moguće pronaći keymap za naredbu" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "%s: prvi znak različit od praznine nije „\"”" +msgstr "%s: prvi znak, koji nije bjelina, nije „\"“" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" -msgstr "nema zatvorene „%c” u %s" +msgstr "nema zaključnoga „%c“ u %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" -msgstr "%s: nedostaje dvotočje za razdvajanje" +msgstr "%s: nema razdjelnika dvotočke" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" +"brace expansion: nije moguće dodijeliti memoriju za %s\n" +"(primjer ekspanzije unutar vitičastih zagrada: echo a{d,c}e -> ade, ace)" -#: braces.c:427 +# Brace expansion is a mechanism by which arbitrary strings may be generated +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" +"brace expansion: nije uspjelo dodijeliti memoriju za %u elemenata\n" +"(primjer ekspanzije unutar vitičastih zagrada: echo a{d,c}e -> ade, ace)" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" +"brace expansion: nije uspjelo dodijeliti memoriju za „%s“\n" +"(primjer ekspanzije unutar vitičastih zagrada: echo a{d,c}e -> ade, ace)" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" -msgstr "„%s”: neispravno drugo ime" +msgstr "„%s“: nevaljano ime aliasa" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" -msgstr "uređivanje redaka nije omogućeno" +msgstr "redigiranje retka nije omogućeno" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" -msgstr "„%s”: neispravno ime tipkovničke mape" +msgstr "„%s“: nevaljano ime za keymap" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" -msgstr "%s: ne mogu čitati: %s" - -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "„%s”: ne mogu ukloniti vezu" +msgstr "%s: nije moguće pročitati: %s" -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" -msgstr "„%s”: nepoznato ime funkcije" +msgstr "„%s“: nepoznato ime funkcije" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" -msgstr "%s nije pridružen nijednoj tipki.\n" +msgstr "%s nije vezano s nijednom tipkom.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s se može pozvati pomoću " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: nije moguće razvezati" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" -msgstr "broj ponavljanja" +msgstr "brojač ponavljanja" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "ima značenje samo u petljama „for”, „while” ili „until”" +msgstr "ima značenje samo u „for“, „while“ ili „until“ petljama" #: builtins/caller.def:136 msgid "" @@ -141,241 +154,240 @@ msgid "" " \n" " Without EXPR, returns " msgstr "" -"Vraća kontekst poziva trenutnog potprograma.\n" +"Vraća kontekst od trenutačnoga poziva funkciji.\n" " \n" -" Bez IZRAZA vraća " +" Bez EXPR, rezultati " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" -msgstr "HOME nije postavljen" +msgstr "HOME varijabla nije definirana" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "previše argumenata" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "nema drugog direktorija" +msgstr "null direktorij" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" -msgstr "OLDPWD nije postavljen" +msgstr "OLDPWD nije postavljeni" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "redak %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "upozorenje: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: uporaba: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: opcija zahtijeva argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" -msgstr "%s: potreban je numerički argument" +msgstr "%s: zahtijeva se numerički argument" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" -msgstr "%s: nije pronađen" +msgstr "%s: nije pronađeno" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" -msgstr "%s: neispravna opcija" +msgstr "%s: nevaljana opcija" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" -msgstr "%s: neispravno ime opcije" +msgstr "%s: nevaljano ime opcije" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" -msgstr "„%s”: nije ispravan identifikator" +msgstr "„%s“: nije valjani identifikator" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" -msgstr "neispravan oktalni broj" +msgstr "nevaljani oktalni broj" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" -msgstr "neispravan heksadekadski broj" +msgstr "nevaljani heksadecimalni broj" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" -msgstr "neispravan broj" +msgstr "nevaljani broj" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" -msgstr "%s: neispravno naveden signal" +msgstr "%s: nevaljana specifikacija signala" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "„%s”: nije pid ili ispravno naveden zadatak" +msgstr "„%s“: nije PID ili valjani pokazatelj posla" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: varijabla samo za čitanje" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" -msgstr "%s: %s je izvan granica" +msgstr "%s: %s je izvan raspona" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" -msgstr "%s je izvan granica" +msgstr "%s je izvan raspona" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" -msgstr "%s: nema takvog zadatka" +msgstr "%s: nema takvoga posla" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" -msgstr "%s: nema kontrole zadataka" +msgstr "%s: nema kontrole nad poslovima u ovoj ljuski" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" -msgstr "nema kontrole zadataka" +msgstr "nema kontrole nad poslovima u ovoj ljuski" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" -msgstr "%s: ograničeno" +msgstr "%s: ograničeni način" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" -msgstr "ograničeno" +msgstr "ograničeni način" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" -msgstr "%s: nije ugrađen u ljusku" +msgstr "%s: nije ugrađena bash naredba" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "greška pisanja: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "greška pri postavljanju svojstava terminala: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "greška pri preuzimanju svojstava terminala: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" -msgstr "%s: greška pri otkrivanju trenutnog direktorija: %s: %s\n" +msgstr "%s: nije moguće pronaći trenutačno direktorij: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" -msgstr "%s: višeznačan navod zadatka" +msgstr "%s: dvosmisleni pokazatelj posla" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" -msgstr "" +msgstr "u ovoj inačici pomoć nije ugrađena" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" -msgstr "%s: neispravno ime radnje" +msgstr "%s: nevaljano ime za akciju" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" -msgstr "%s: nije navedeno nadopunjavanje" +msgstr "%s: dovršavanje nije specificirano" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" -msgstr "upozorenje: opcija -F možda neće raditi kako želite" +msgstr "upozorenje: opcija -F možda neće raditi prema očekivanju" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" -msgstr "upozorenje: opcija -C možda neće raditi kako želite" +msgstr "upozorenje: opcija -C možda neće raditi prema očekivanju" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" -msgstr "trenutno ne izvršavam funkciju nadopunjavanja" +msgstr "trenutačno se ne izvršava funkcija kompletiranja" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "može se koristiti samo u funkciji" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: referentna varijabla ne može biti polje" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "" +msgstr "%s: varijabla nameref ukazuje na samu sebe, a to nije dopušteno" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" -msgstr "" +msgstr "%s: kružna referencija na ime" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "„%s”: neispravno drugo ime" +msgstr "„%s“: nevaljano ime varijable za referenciju na ime" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" -msgstr "ne mogu koristiti „-f” za izradu funkcija" +msgstr "„-f“ se ne može koristiti za definiranje funkcije" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: funkcija samo za čitanje" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "" +msgstr "%s: dodjeljivanje citiranoga složenog polja je zastarjelo" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" -msgstr "%s: ne mogu uništiti varijable polja na ovaj način" +msgstr "%s: nije moguće uništiti varijable polja na ovaj način" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "%s: ne mogu pretvoriti asocijativno u indeksirano polje" +msgstr "%s: nije moguće pretvoriti asocijativno u indeksirano polje" #: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" @@ -384,17 +396,17 @@ msgstr "dinamičko učitavanje nije dostupno" #: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" -msgstr "ne mogu otvoriti dijeljeni objekt %s: %s" +msgstr "nije moguće otvoriti dijeljeni objekt %s: %s" #: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" -msgstr "ne mogu pronaći %s u dijeljenom objektu %s: %s" +msgstr "nije moguće pronaći %s u dijeljenom objektu %s: %s" #: builtins/enable.def:387 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "" +msgstr "funkcija učitavanja za %s završila je s pogreškom (%d): nije učitano" #: builtins/enable.def:512 #, c-format @@ -404,120 +416,120 @@ msgstr "%s: nije dinamički učitan" #: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" -msgstr "%s: ne mogu ukloniti: %s" +msgstr "%s: nije moguće izbrisati: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: to je direktorij" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: nije obična datoteka" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: datoteka je prevelika" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" -msgstr "%s: ne mogu izvršiti binarnu datoteku" +msgstr "%s: nije moguće izvršiti binarnu datoteku" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" -msgstr "%s: ne mogu izvršiti: %s" +msgstr "%s: nije moguće izvršiti: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "odjava\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" -msgstr "nije prijavna ljuska: koristite „exit”" +msgstr "nije prijavna ljuska: odjavite se s „exit“" -#: builtins/exit.def:124 +# stopped > pauzirano ili zaustavljeno +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" -msgstr "Ima zaustavljenih zadataka.\n" +msgstr "Ima zaustavljenih poslova.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" -msgstr "Ima pokrenutih zadataka.\n" +msgstr "Ima pokrenutih poslova.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "naredba nije pronađena" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" -msgstr "specifikacija povijesti" +msgstr "prikaz povijesti naredbi" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" -msgstr "%s: ne mogu otvoriti privremenu datoteku: %s" +msgstr "%s: nije moguće otvoriti privremenu datoteku: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" -msgstr "trenutno" +msgstr "trenutačno" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" -msgstr "zadatak %d pokrenut bez kontrole zadataka" +msgstr "posao %d je pokrenut bez kontrole nad njim" #: builtins/getopt.c:110 #, c-format msgid "%s: illegal option -- %c\n" -msgstr "%s: nedozvoljena opcija -- %c\n" +msgstr "%s: nedopuštena opcija -- %c\n" #: builtins/getopt.c:111 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: opcija zahtijeva argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" -msgstr "raspršivanje onemogućeno" +msgstr "hash-tablica je onemogućena" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" -msgstr "%s: tablica raspršivanja prazna\n" +msgstr "%s: hash-tablica je prazna\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" -msgstr "pogoci\tnaredba\n" +msgstr "pogodci\tnaredba\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "Naredbe ljuske koje odgovaraju ključnoj riječi „" -msgstr[1] "Naredbe ljuske koje odgovaraju ključnim riječima „" -msgstr[2] "Naredbe ljuske koje odgovaraju ključnim riječima „" +msgstr[0] "Naredba koja odgovara ključnoj riječi „" +msgstr[1] "Naredbe koje odgovaraju ključnim riječima „" +msgstr[2] "Naredbi koje odgovaraju ključnim riječima „" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -"nisu pronađene teme pomoći za „%s”. Pokušajte „help help”, „man -k %s” ili " -"„info %s”." +"nisu pronađene teme pomoći za „%s“. Pokušajte s „help help“, „man -k %s“ ili " +"„info %s“." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" -msgstr "%s: ne mogu otvoriti: %s" +msgstr "%s: nije moguće otvoriti: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -528,29 +540,30 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" -"Ove naredbe ljuske su interno definirane. Upišite „help” za prikaz popisa.\n" -"Upišite „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 " +"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:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" -msgstr "ne mogu koristiti više od jedne od opcija -anrw" +msgstr "smije se rabiti samo jedna od opcija -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" -msgstr "mjesto u povijesti" +msgstr "mjesto u povijesti naredbi" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: neispravan argument ograničenja" +msgstr "%s: nevaljana vremenska oznaka" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: proširenje povijesti nije uspjelo" @@ -562,89 +575,89 @@ msgstr "%s: inlib nije uspio" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" -msgstr "nisu dozvoljene druge opcije uz „-x”" +msgstr "nisu dopuštene druge opcije uz „-x“" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "%s: argumenti moraju biti identifikatori procesa ili zadataka" +msgstr "%s: argumenti moraju biti ID-ovi procesa ili posla" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Nepoznata greška" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" -msgstr "očekujem izraz" +msgstr "očekivao se izraz" #: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: nije indeksirano polje" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" -msgstr "%s: neispravno naveden opisnik datoteke" +msgstr "%s: nevaljana specifikacija deskriptora datoteke" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" -msgstr "%d: neispravan opisnik datoteke: %s" +msgstr "%d: nevaljani deskriptor datoteke: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" -msgstr "%s: neispravan broj redaka" +msgstr "%s: nevaljani količina redaka" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" -msgstr "%s: neispravan izvor polja" +msgstr "%s: nevaljani početak polja" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" -msgstr "%s: neispravan element povratnog poziva" +msgstr "%s: nevaljana količina od callback" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "prazno ime varijable polja" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" -msgstr "potrebna je podrška varijable polja" +msgstr "potrebna podrška varijable polja nije podržana u ovoj ljusci" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" -msgstr "„%s”: nedostaje znak oblika" +msgstr "„%s“: nedostaje znak za format" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" -msgstr "„%c”: neispravno naveden oblik vremena" +msgstr "„%c“: nevaljana specifikacija za format vremena" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" -msgstr "„%c”: neispravan znak oblika" +msgstr "„%c“: nevaljani znak za format" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "upozorenje: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "greška pri analizi: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" -msgstr "nedostaje heksadekadska znamenka za \\x" +msgstr "nedostaje heksadecimalna znamenka za \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "nedostaje unicode znamenka za \\%c" @@ -654,23 +667,23 @@ msgid "no other directory" msgstr "nema drugog direktorija" #: builtins/pushd.def:360 -#, fuzzy, c-format +#, c-format msgid "%s: invalid argument" -msgstr "%s: neispravan argument ograničenja" +msgstr "%s: nevaljani argument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" -msgstr "" +msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" -msgstr "stog direktorija je prazan" +msgstr "snop direktorija je prazan" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "indeks stoga direktorija" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -693,28 +706,24 @@ msgid "" "by\n" "\tdirs when invoked without options, starting with zero." msgstr "" -"Prikaži popis trenutno zapamćenih direktorija. Direktoriji se dodaju\n" -" na popis naredbom „pushd”, kroz popis se možete vraćati naredbom\n" -" „popd”.\n" -" \n" +"Pokaže popis trenutačno zapamćenih direktorija. Direktoriji se unose\n" +" na popis pomoću naredbe „pushd“, a s naredbom „popd“ se uklanjaju.\n" +"\n" " Opcije:\n" -" -c\točisti stog direktorija uklanjanjem svih elemenata\n" -" -l\tne ispisuj tildom prefiksirane inačice direktorija\n" -" \trelativno u odnosu na početni direktorij\n" -" -p\tispiši stog direktorija jednu stavku po retku\n" -" -v\tispiši stog direktorija jednu stavku po retku\n" -" \tprefiksiranu položajem u stogu\n" -" \n" +" -c počisti snop direktorija brisanjem svih elemenata\n" +" -l ispiše apsolutne staze direktorija u odnosu na osobni\n" +" direktorij (ne skraćuje staze upotrebom tilde)\n" +" -p ispiše sadržaj snopa po jedan direktorij po retku\n" +" -v kao „-p“, ali s prefiksom koji pokazuje\n" +" poziciju direktorija snopu\n" +"\n" " Argumenti:\n" -" +N\tPrikazuje N-tu stavku s lijeve strane popisa koju prikazuje " -"naredba\n" -" \t„dirs” pozvana bez opcija, počevši od nule.\n" -" \n" -" -N\tPrikazuje N-tu stavku s desne strane popisa koju prikazuje " -"naredba\n" -"\t„dirs” pozvana bez opcija, počevši od nule." +" +N Pokaže N-ti direktorij iz snopa, brojeći od od nule s\n" +" lijeve strane popisa kȁd se „dirs“ pokrene bez opcija.\n" +" -N Pokaže N-ti direktorij iz snopa, brojeći od nule s\n" +" desne strane popisa kȁd se „dirs“ pokrene bez opcija." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -738,8 +747,29 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" +"Doda direktorij na vrh snopa direktorija ili zarotira snop tako da\n" +" učini novi vrh snopa trenutačnim radnim direktorijem. Bez argumenata\n" +" razmijeni pozicije dva direktorija na vrhu snopa.\n" +"\n" +" Opcije:\n" +" -n izostavi uobičajenu promjenu direktorija kȁd dodaje\n" +" direktorije u snop, odnosno samo manipulira sa snopom\n" +"\n" +" Argumenti:\n" +" +N Zarotira snop tako, da N-ti direktorij u snopu (brojeći od nule " +"s\n" +" lijeve strane popisa prikazanoga s „dirs“) postane novi vrh " +"snopa.\n" +" -N Zarotira snop tako, da N-ti direktorij u snopu (brojeći od nule " +"s\n" +" desne strane popisa prikazanoga s „dirs“) postane novi vrh " +"snopa.\n" +" DIREKTORIJ Doda DIREKTORIJ na vrh snopa direktorija i\n" +" učini ga novim aktualnim radnim direktorijem.\n" +"\n" +" Naredba „dirs“ prikaže trenutačni sadržaj snopa direktorija." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -759,138 +789,154 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" +"Ukloni direktorije iz snopa direktorija. Bez argumenata, ukloni\n" +" direktorij na vrhu snopa i premjesti se u novi najviši direktorij.\n" +"\n" +" Opcije:\n" +" -n izostavi uobičajenu promjenu direktorija kȁd uklanja\n" +" direktorije iz snopa, odnosno samo manipulira sa snopom\n" +"\n" +" Argumenti:\n" +" +N Ukloni da N-ti direktorij iz snopa brojeći od nule s lijeve\n" +" strane popisa prikazanoga s „dirs“. Na primjer: „popd +0“\n" +" ukloni prvi, a „popd +1“ ukloni drugi direktorij.\n" +" +N Ukloni da N-ti direktorij iz snopa brojeći od nule s desne\n" +" strane popisa prikazanoga s „dirs“. Na primjer.: „popd -0“\n" +" ukloni zadnji, a „popd -1“ ukloni predzadnji direktorij.\n" +"\n" +" Naredba „dirs“ prikaže trenutačni sadržaj snopa direktorija." #: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" -msgstr "%s: neispravno navedeno vremensko ograničenje" +msgstr "%s: nevaljana specifikacija za istek vremena" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "greška čitanja: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" -msgstr "pozivanje „return” je moguće samo iz funkcije ili pokrenute skripte" +msgstr "„return“ je mogući samo iz funkcije ili iz pokrenute skripte" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" -msgstr "ne mogu istovremeno poništiti funkciju i varijablu" +msgstr "nije moguće istovremeno poništiti funkciju i varijablu" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" -msgstr "%s: ne mogu poništiti" +msgstr "%s: nije moguće poništiti" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" -msgstr "%s: ne mogu poništiti: %s je samo za čitanje" +msgstr "%s: nije moguće poništiti: %s je moguće samo čitati" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: nije varijabla polja" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: nije funkcija" -#: builtins/setattr.def:196 -#, fuzzy, c-format +#: builtins/setattr.def:194 +#, c-format msgid "%s: cannot export" -msgstr "%s: ne mogu poništiti" +msgstr "%s: nije moguće eksportirati" #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" -msgstr "broj pomaka" +msgstr "brojač pomaka" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" -msgstr "ne mogu istovremeno postaviti i poništiti opcije ljuske" +msgstr "nije moguće istovremeno postaviti i poništiti opcije ljuske" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" -msgstr "%s: neispravno ime opcije ljuske" +msgstr "%s: nevaljano ime za opciju ljuske" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" -msgstr "potrebno je ime datoteke kao argument" +msgstr "zahtijeva se ime datoteke kao argument" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: datoteka nije pronađena" #: builtins/suspend.def:102 msgid "cannot suspend" -msgstr "ne mogu zaustaviti" +msgstr "obustava nije moguća" #: builtins/suspend.def:112 msgid "cannot suspend a login shell" -msgstr "ne mogu zaustaviti prijavnu ljusku" +msgstr "nije moguće obustaviti prijavnu ljusku" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" -msgstr "%s je drugo ime za „%s”\n" +msgstr "%s je alias za „%s“\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s je ključna riječ ljuske\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s je funkcija\n" -#: builtins/type.def:300 -#, fuzzy, c-format +#: builtins/type.def:299 +#, c-format msgid "%s is a special shell builtin\n" -msgstr "%s je ugrađen u ljusku\n" +msgstr "%s je specijalna ugrađena funkcija ljuske\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" -msgstr "%s je ugrađen u ljusku\n" +msgstr "%s je ugrađena funkcija ljuske\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s je %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" -msgstr "%s je raspršen (%s)\n" +msgstr "za %s izračunata hash vrijednost (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" -msgstr "%s: neispravan argument ograničenja" +msgstr "%s: nevaljani argument za ograničenje" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" -msgstr "„%c”: neispravna naredba" +msgstr "„%c“: loša naredba" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" -msgstr "%s: ne mogu otkriti ograničenje: %s" +msgstr "%s: nije moguće dobiti ograničenje: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "ograničenje" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" -msgstr "%s: ne mogu urediti ograničenje: %s" +msgstr "%s: nije moguće promijeniti ograničenje: %s" #: builtins/umask.def:115 msgid "octal number" @@ -899,424 +945,434 @@ msgstr "oktalni broj" #: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "„%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:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " redak " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "posljednja naredba: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." -msgstr "Prekidam..." +msgstr "Prekida se..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "informacije: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "nepoznata greška naredbe" -#: error.c:464 +#: error.c:463 msgid "bad command type" -msgstr "neispravna vrsta naredbe" +msgstr "loša vrsta naredbe" -#: error.c:465 +#: error.c:464 msgid "bad connector" -msgstr "neispravno spajanje" +msgstr "loš konektor" -#: error.c:466 +#: error.c:465 msgid "bad jump" -msgstr "neispravan skok" +msgstr "loši skok" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: nepovezana varijabla" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" -msgstr "\avrijeme čekanja ulaza je isteklo: automatska-odjava\n" +msgstr "\avrijeme čekanja na ulaz je isteklo: automatska-odjava\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" -msgstr "ne mogu preusmjeriti standardni ulaz iz /dev/null: %s" +msgstr "nije moguće preusmjeriti standardni ulaz iz /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" -msgstr "TIMEFORMAT: „%c”: neispravan znak oblika" +msgstr "TIMEFORMAT: „%c“: nevaljani znak za format" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc(): coproc [%d:%s] još uvijek postoji" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" -msgstr "greška cjevovoda" +msgstr "greška cijevi" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "" +msgstr "eval: prekoračena je dopuštena razina eval gniježđenja (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "" +msgstr "%s: prekoračena je dopuštena razina source gniježđenja (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: prekoračena je dopuštena razina gniježđenja funkcije (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "%s: ograničeno: ne možete navesti „/” u imenu naredbe" +msgstr "%s: ograničeni način: znak „/“ nije dopušten u imenima naredba" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: naredba nije pronađena" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" -msgstr "%s: %s: neispravan tumač" +msgstr "%s: %s: loši interpreter" -#: execute_cmd.c:5545 -#, fuzzy, c-format +#: execute_cmd.c:5757 +#, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s: ne mogu izvršiti binarnu datoteku" +msgstr "%s: binarnu datoteku %s nije moguće pokrenuti/izvršiti" -#: execute_cmd.c:5623 -#, fuzzy, c-format +#: execute_cmd.c:5843 +#, c-format msgid "`%s': is a special builtin" -msgstr "%s je ugrađen u ljusku\n" +msgstr "„%s“ je specijalna funkcija ugrađena u ljusku" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" -msgstr "ne mogu udvostručiti opisnik datoteke %d u opisnik datoteke %d" +msgstr "nije moguće kopirati deskriptor datoteke %d u deskriptor datoteke %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" -msgstr "razina rekurzije izraza je prekoračena" +msgstr "izraz ima preveliki broj rekurzija" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" -msgstr "podljev stoga rekurzije" +msgstr "snop rekurzija je prazan" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" -msgstr "sintaksna greška u izrazu" +msgstr "sintaktička greška u izrazu" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" -msgstr "pokušaj pridruživanja ne-varijabli" +msgstr "vrijednost se može dodijeliti samo varijabli" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "sintaktička greška zadavanja varijable" -#: expr.c:495 expr.c:858 +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "dijeljenje s 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" -msgstr "greška: neispravan simbol expassign" +msgstr "**interna greška** : loši token u izrazu za dodjelu" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" -msgstr "očekujem „:” za uvjetni izraz" +msgstr "znak „:“ je nužan u uvjetnom izrazu" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "eksponent je manji od 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "očekujem identifikator nakon pred-povećanja ili pred-smanjenja" +msgstr "nakon pre-increment ili pre-decrement očekuje se identifikator" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" -msgstr "nedostaje „)”" +msgstr "nema „)“" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" -msgstr "sintaksna greška: očekujem operand" +msgstr "sintaktička greška: očekivao se operand" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" -msgstr "sintaksna greška: neispravan aritmetički operator" +msgstr "sintaktička greška: nevaljani aritmetički operator" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" -msgstr "%s%s%s: %s (simbol greške je „%s”)" +msgstr "%s%s%s: %s (simbol greške je „%s“)" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" -msgstr "neispravna aritmetička baza" +msgstr "nevaljana aritmetička baza" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "vrijednost baze je prevelika" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" -msgstr "%s: greška izraza\n" +msgstr "%s: greška u izrazu\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" -msgstr "getcwd: ne mogu pristupiti nadređenim direktorijima" +msgstr "getcwd(): nije moguće pristupiti nadređenim direktorijima" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" -msgstr "" +msgstr "ne može se onemogućiti nodelay način za deskriptor datoteke %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" -msgstr "ne mogu alocirati novi datotečni opisnik za bash ulaz iz fd %d" +msgstr "nije moguće dodijeliti novi datotečni deskriptor za bash ulaz iz fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" -msgstr "save_bash_input: međuspremnik već postoji za novi fd %d" +msgstr "save_bash_input(): međuspremnik već postoji za novi fd %d" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" -msgstr "start_pipeline: pgrp pipe" +msgstr "start_pipeline(): pgrp pipe (procesna grupa cijevi)" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "razdvojen pid %d se javlja u pokrenutom zadatku %d" +msgstr "potproces PID %d javlja se u pokrenutom poslu %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" -msgstr "uklanjam zaustavljeni zadatak %d s grupom procesa %ld" +msgstr "uklanja se zaustavljeni posao %d s grupom procesa %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" -msgstr "add_process: proces %5ld (%s) u the_pipeline" +msgstr "add_process(): proces %5ld (%s) u cjevovodu" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" -msgstr "add_process: pid %5ld (%s) označen kao još živ" +msgstr "add_process(): PID %5ld (%s) označen kao još uvijek aktivan" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" -msgstr "describe_pid: %ld: ne postoji takav pid" +msgstr "describe_pid(): %ld: PID ne postoji" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Gotovo" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" -msgstr "Zaustavljen" +msgstr "Zaustavljeno" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" -msgstr "Zaustavljen(%s)" +msgstr "Zaustavljeno(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" -msgstr "Pokrenut" +msgstr "Pokrenuto" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Gotovo(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Izlaz %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" -msgstr "Nepoznato stanje" +msgstr "Nepoznati status" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " -msgstr "(jezgra izbačena) " +msgstr "(stanje memorije zapisano) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" -msgstr "" +msgstr "postavljanje procesne grupe %2$ld od potomka %1$ld" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" -msgstr "wait: pid %ld nije dijete ove ljuske" +msgstr "wait: PID %ld nije potomak ove ljuske" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" -msgstr "wait_for: Ne postoji zapis o procesu %ld" +msgstr "wait_for: nema zapisa o procesu %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" -msgstr "wait_for_job: zadatak %d je zaustavljen" +msgstr "wait_for_job: posao %d je zaustavljen" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" -msgstr "%s: zadatak je dovršen" +msgstr "%s: posao je prekinut" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" -msgstr "%s: zadatak %d je već u pozadini" +msgstr "%s: posao %d je već u pozadini" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" -msgstr "" +msgstr "waitchld(): omogući WNOHANG da se izbjegne neodređeno blokiranje" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: redak %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" -msgstr " (jezgra izbačena)" +msgstr " (stanje memorije zapisano)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" -msgstr "(sadašnji wd: %s)\n" +msgstr "(radni direktorij je sada: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" -msgstr "initialize_job_control: getpgrp nije uspio" +msgstr "initialize_job_control: neuspješni getpgrp()" + +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: nema kontrole nad pozadinskim poslovima" -#: jobs.c:4104 +#: jobs.c:4263 msgid "initialize_job_control: line discipline" -msgstr "" +msgstr "initialize_job_control: line discipline" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" -msgstr "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid()" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" -msgstr "ne mogu postaviti grupu procesa terminala (%d)" +msgstr "nije moguće postaviti procesnu grupu (%d) terminala" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" -msgstr "nema kontrole zadataka u ovoj ljusci" +msgstr "nema kontrole nad poslovima u ovoj ljusci" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" -msgstr "" +msgstr "malloc(): neuspješni kontrolni test: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" +"\r\n" +"malloc(): %s:%d: loše provedena proba\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "nepoznato" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" -msgstr "" +msgstr "malloc(): prepisani je blok na popisu slobodne memorije" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" -msgstr "free: pozvan s argumentom već oslobođenog bloka" +msgstr "free(): pozvan s argumentom za već slobodni memorijski blok" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" -msgstr "free: pozvan s argumentom nealociranog bloka" +msgstr "free(): pozvan s argumentom za ne dodijeljeni memorijski blok" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" -msgstr "free: otkriven podljev, mh_nbytes izvan granica" +msgstr "free(): otkriveni je podljev, mh_nbytes ispod granica" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" -msgstr "" +msgstr "free(): veličine segmenta od početka i kraja su različite" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" -msgstr "realloc: pozvan s argumentom nealociranog bloka" +msgstr "realloc(): pozvan s argumentom za ne dodijeljeni memorijski blok" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" -msgstr "realloc: otkriven podljev, mh_nbytes izvan granica" +msgstr "realloc(): otkriveni je podljev, mh_nbytes ispod granica" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" -msgstr "" +msgstr "realloc(): veličine segmenta od početka i kraja su različite" #: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" -msgstr "" +msgstr "register_alloc(): rezervacijska tablica je popunjena s FIND_ALLOC??\n" #: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" -msgstr "" +msgstr "register_alloc(): %p je već rezervirani u tablici??\n" #: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" -msgstr "register_free: %p već u tablici kao oslobođen?\n" +msgstr "register_free(): %p je već slobodan u tablici??\n" #: lib/sh/fmtulong.c:102 msgid "invalid base" -msgstr "neispravna baza" +msgstr "nevaljana baza" #: lib/sh/netopen.c:168 #, c-format @@ -1326,36 +1382,36 @@ msgstr "%s: nepoznato računalo" #: lib/sh/netopen.c:175 #, c-format msgid "%s: invalid service" -msgstr "%s: neispravna usluga" +msgstr "%s: nevaljani servis" #: lib/sh/netopen.c:306 #, c-format msgid "%s: bad network path specification" -msgstr "%s: neispravno navedena mrežna putanja" +msgstr "%s: loša specifikacija za mrežnu stazu" #: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "mrežne operacije nisu podržane" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" -msgstr "setlocale: LC_ALL: ne mogu promijeniti lokal (%s)" +msgstr "setlocale(): LC_ALL: nije moguće promijeniti jezično područje (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" -msgstr "setlocale: LC_ALL: ne mogu promijeniti lokal (%s): %s" +msgstr "setlocale(): LC_ALL: nije moguće promijeniti jezično područje (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" -msgstr "setlocale: %s: ne mogu promijeniti lokal (%s)" +msgstr "setlocale(): %s: nije moguće promijeniti jezično područje (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" -msgstr "setlocale: %s: ne mogu promijeniti lokal (%s): %s" +msgstr "setlocale(): %s: nije moguće promijeniti jezično područje (%s): %s" #: mailcheck.c:439 msgid "You have mail in $_" @@ -1368,319 +1424,330 @@ msgstr "Imate novu poštu u $_" #: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" -msgstr "Pošta u %s je pročitana\n" +msgstr "Pošta u %s je već pročitana\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" -msgstr "sintaksna greška: potreban aritmetički izraz" +msgstr "sintaktička greška: zahtijeva se aritmetički izraz" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" -msgstr "sintaksna greška: neočekivana „;”" +msgstr "sintaktička greška: neočekivani „;“ znak" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" -msgstr "sintaksna greška: „((%s))”" +msgstr "sintaktička greška: „((%s))“" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" -msgstr "make_here_document: neispravna vrsta instrukcije %d" +msgstr "make_here_document(): loša vrsta instrukcije %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "" +msgstr "redak %d od here-document ima za razdjelnik EOF (očekuje se „%s“)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" +"make_redirection(): instrukcija za preusmjeravanje „%d“ je izvan raspona" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc(): shell_input_line_size (%zu) je veća od SIZE_MAX (%lu): " +"skraćuje se" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" -msgstr "" +msgstr "maksimalni broj za here-document je prekoračeni" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "neočekivani EOF pri traženju odgovarajućeg „%c”" +msgstr "neočekivani EOF pri traženju odgovarajućeg „%c“" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" -msgstr "neočekivani EOF pri traženju „]]”" +msgstr "neočekivani EOF pri traženju „]]“" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" -msgstr "sintaksna greška u uvjetnom izrazu: neočekivani simbol „%s”" +msgstr "sintaktička greška u uvjetnom izrazu: neočekivani token „%s“" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" -msgstr "sintaksna greška u uvjetnom izrazu" +msgstr "sintaktička greška u uvjetnom izrazu" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "neočekivani simbol „%s”, očekujem „)”" +msgstr "neočekivani token „%s“ umjesto očekivane „)“" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" -msgstr "očekujem „)”" +msgstr "očekivana je „)“" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "neočekivani argument „%s” uvjetnom unarnom operatoru" +msgstr "neočekivani argument „%s“ uvjetnom unarnom operatoru" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" -msgstr "neočekivani argument uvjetnom unarnom operatoru" +msgstr "neočekivani argument za uvjetni unarni operator" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "neočekivani simbol „%s”, očekujem uvjetni binarni operator" +msgstr "neočekivani token „%s“; očekivao se uvjetni binarni operator" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" -msgstr "očekujem uvjetni binarni operator" +msgstr "očekivao se uvjetni binarni operator" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "neočekivani argument „%s” uvjetnom binarnom operatoru" +msgstr "neočekivani argument „%s“ za uvjetni binarni operator" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" -msgstr "neočekivani argument uvjetnom binarnom operatoru" +msgstr "neočekivani argument za uvjetni binarni operator" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "neočekivani simbol „%c” u uvjetnoj naredbi" +msgstr "neočekivani token „%c“ u uvjetnoj naredbi" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "neočekivani simbol „%s” u uvjetnoj naredbi" +msgstr "neočekivani token „%s“ u uvjetnoj naredbi" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" -msgstr "neočekivani simbol %d u uvjetnoj naredbi" +msgstr "neočekivani token %d u uvjetnoj naredbi" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "sintaksna greška kod neočekivanog simbola „%s”" +msgstr "sintaktička greška blizu neočekivanog tokena „%s“" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" -msgstr "sintaksna greška kod „%s”" +msgstr "sintaktička greška blizu „%s“" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" -msgstr "sintaksna greška: neočekivani kraj datoteke" +msgstr "sintaktička greška: neočekivani kraj datoteke" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" -msgstr "sintaksna greška" +msgstr "sintaktička greška" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" -msgstr "Koristite „%s” za napuštanje ljuske.\n" +msgstr "Koristite \"%s\" da napustite ljusku.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" -msgstr "neočekivani EOF pri traženju odgovarajuće „)”" +msgstr "neočekivani EOF pri traženju odgovarajuće „)“" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" -msgstr "completion: funkcija „%s” nije pronađena" +msgstr "completion(): funkcija „%s“ nije pronađena" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion(): %s: moguća je beskonačna petlja" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" -msgstr "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert(): %s: prazni COMPSPEC" #: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" -msgstr "" +msgstr "print_command(): loši konektor „%d“" #: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" -msgstr "xtrace_set: %d: neispravan opisnik datoteke" +msgstr "xtrace_set(): %d: nevaljani deskriptor datoteke" #: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" -msgstr "xtrace_set: NULL pokazivač na datoteku" +msgstr "xtrace_set(): prazni pokazivač na datoteku" #: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" -msgstr "" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" -msgstr "" +msgstr "cprintf(): „%c“: nevaljani znak za format" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" -msgstr "opisnik datoteke izvan granica" +msgstr "deskriptor datoteke je izvan raspona" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" -msgstr "%s: višeznačno preusmjeravanje" +msgstr "%s: dvosmisleno preusmjeravanje" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" -msgstr "%s: ne mogu pisati preko postojeće datoteke" +msgstr "%s: nije moguće pisati preko postojeće datoteke" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" -msgstr "%s: ograničeno: ne mogu preusmjeriti izlaz" +msgstr "%s: ograničeno: nije moguće preusmjeriti izlaz" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" -msgstr "ne mogu napraviti privremenu datoteku za here-document: %s" +msgstr "nije moguće napraviti privremenu datoteku za here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" -msgstr "%s: ne mogu pridružiti opisnik datoteke varijabli" +msgstr "%s: nije moguće dodijeliti deskriptor datoteke varijabli" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nije podržan bez umrežavanja" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" -msgstr "greška preusmjeravanja: ne mogu udvostručiti opisnik datoteke" +msgstr "greška preusmjeravanja: nije moguće kopirati deskriptor datoteke" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" -msgstr "ne mogu pronaći /tmp, molim, napravite ga!" +msgstr "nije bilo moguće pronaći /tmp; napravite taj direktorij!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp mora biti ispravno ime direktorija" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "u interaktivnoj ljusci pretty-printing se ignorira" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" -msgstr "%c%c: neispravna opcija" +msgstr "%c%c: nevaljana opcija" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "" +msgstr "nije moguće postaviti UID na %d: efektivni UID je %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "" +msgstr "nije moguće postaviti GID na %d: efektivni GID je %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "nije moguće pokrenuti debugger; debugiranje je onemogućeno" -#: shell.c:1566 -#, fuzzy, c-format +#: shell.c:1608 +#, c-format msgid "%s: Is a directory" msgstr "%s: to je direktorij" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Nemam ime!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, inačica %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" "Uporaba: %s [GNU dugačka opcija] [opcija] ...\n" -"\t %s [GNU dugačka opcija] [opcija] skripta ...\n" +" %s [GNU dugačka opcija] [opcija] skripta ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU dugačke opcije:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Opcije ljuske:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "" +msgstr "\t-ilrsD ili -c NAREDBA ili -O SHOPT-OPCIJA (samo za pokretanje)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" -msgstr "" +msgstr "\t-%s ili -o opcija\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" +"„%s -c \"help set\"“ pokaže vam dodatne informacije o opcijama ljuske.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" +"„%s -c help set“ pokaže vam više informacija o ugrađenim funkcijama " +"ljuske.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" -msgstr "Koristite naredbu „bashbug” za prijavljivanje grešaka.\n" +msgstr "Koristite naredbu „bashbug“ za prijavljivanje grešaka.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "bash Web stranica: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" +"Općenita pomoć za korištenje GNU softvera: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" -msgstr "" +msgstr "sigprocmask(): %d: nevaljana operacija" #: siglist.c:48 msgid "Bogus signal" -msgstr "Lažan signal" +msgstr "Lažni signal" #: siglist.c:51 msgid "Hangup" @@ -1696,11 +1763,11 @@ msgstr "Izlaz" #: siglist.c:63 msgid "Illegal instruction" -msgstr "Nedozvoljena instrukcija" +msgstr "Nedopuštena instrukcija" #: siglist.c:67 msgid "BPT trace/trap" -msgstr "BPT praćenje/zamka" +msgstr "BPT trag/zamka instrukcija (Trace/Breakpoint trap)" #: siglist.c:75 msgid "ABORT instruction" @@ -1712,15 +1779,15 @@ msgstr "EMT instrukcija" #: siglist.c:83 msgid "Floating point exception" -msgstr "Iznimka pomičnog zareza" +msgstr "Iznimka/greška u radu s realnim brojem" #: siglist.c:87 msgid "Killed" -msgstr "Prekinut" +msgstr "Ubijen" #: siglist.c:91 msgid "Bus error" -msgstr "Sabirnička greška" +msgstr "Greška adresiranja" #: siglist.c:95 msgid "Segmentation fault" @@ -1728,11 +1795,11 @@ msgstr "Segmentacijska greška" #: siglist.c:99 msgid "Bad system call" -msgstr "Neispravan poziv sustava" +msgstr "Loši sustavski poziv" #: siglist.c:103 msgid "Broken pipe" -msgstr "Prekinut cjevovod" +msgstr "Prekinuta cijev" #: siglist.c:107 msgid "Alarm clock" @@ -1740,7 +1807,7 @@ msgstr "Budilica" #: siglist.c:111 msgid "Terminated" -msgstr "Završen" +msgstr "Završeno" #: siglist.c:115 msgid "Urgent IO condition" @@ -1748,15 +1815,15 @@ msgstr "Hitno U/I stanje" #: siglist.c:119 msgid "Stopped (signal)" -msgstr "Zaustavljen (signalom)" +msgstr "Zaustavljeno (signalom)" #: siglist.c:127 msgid "Continue" -msgstr "Nastavi" +msgstr "Nastavljanje" #: siglist.c:135 msgid "Child death or stop" -msgstr "Dijete je umrlo ili zaustavljeno" +msgstr "Potomak-proces ubijen ili zaustavljen" #: siglist.c:139 msgid "Stopped (tty input)" @@ -1768,7 +1835,7 @@ msgstr "Zaustavljen (tty izlaz)" #: siglist.c:147 msgid "I/O ready" -msgstr "U/I spreman" +msgstr "U/I je spreman" #: siglist.c:151 msgid "CPU limit" @@ -1780,19 +1847,19 @@ msgstr "Ograničenje datoteke" #: siglist.c:159 msgid "Alarm (virtual)" -msgstr "Budilica (virtualna)" +msgstr "Alarm (virtualni)" #: siglist.c:163 msgid "Alarm (profile)" -msgstr "" +msgstr "Alarm (profil)" #: siglist.c:167 msgid "Window changed" -msgstr "Promijenjen prozor" +msgstr "Prozor promijenjen" #: siglist.c:171 msgid "Record lock" -msgstr "" +msgstr "Zapis zaključan" #: siglist.c:175 msgid "User signal 1" @@ -1804,7 +1871,7 @@ msgstr "Korisnički signal 2" #: siglist.c:183 msgid "HFT input data pending" -msgstr "" +msgstr "HFT ulazni podaci čekaju" #: siglist.c:187 msgid "power failure imminent" @@ -1824,15 +1891,15 @@ msgstr "greška programiranja" #: siglist.c:203 msgid "HFT monitor mode granted" -msgstr "" +msgstr "HFT nadzor dopušten" #: siglist.c:207 msgid "HFT monitor mode retracted" -msgstr "" +msgstr "HFT nadzor oduzet" #: siglist.c:211 msgid "HFT sound sequence has completed" -msgstr "" +msgstr "HFT sekvencija zvukova je završena" #: siglist.c:215 msgid "Information request" @@ -1840,249 +1907,260 @@ msgstr "Zahtjev za informacijom" #: siglist.c:223 msgid "Unknown Signal #" -msgstr "Nepoznat signal #" +msgstr "Nepoznati signal #" #: siglist.c:225 #, c-format msgid "Unknown Signal #%d" -msgstr "Nepoznat signal #%d" +msgstr "Nepoznati signal #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "neispravna zamjena: nema zatvorene „%s” u %s" +msgstr "loša supstitucija: nema zaključnoga „%s“ u %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" -msgstr "%s: ne mogu pridružiti popis elementu polja" +msgstr "%s: nije moguće dodijeliti popis elementu polja" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" -msgstr "ne mogu napraviti cjevovod za zamjenu procesa" +msgstr "nije moguće napraviti cijev za zamjenu procesa" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" -msgstr "ne mogu napraviti dijete za zamjenu procesa" +msgstr "nije moguće napraviti potomka za zamjenu procesa" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" -msgstr "ne mogu otvoriti imenovani cjevovod %s za čitanje" +msgstr "nije moguće otvoriti imenovanu cijev %s za čitanje" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" -msgstr "ne mogu otvoriti imenovani cjevovod %s za pisanje" +msgstr "nije moguće otvoriti imenovanu cijev %s za pisanje" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" -msgstr "ne mogu udvostručiti imenovani cjevovod %s kao opisnik datoteke %d" +msgstr "nije moguće kopirati imenovanu cijev %s kao deskriptor datoteke %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "neispravna zamjena: nema zatvorenog „`” u %s" +msgstr "nevaljana supstitucija: ignorirani NULL bajt na ulazu" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" -msgstr "ne mogu napraviti cjevovod za zamjenu naredbi" +msgstr "nije moguće napraviti cijev za zamjenu naredbi" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" -msgstr "ne mogu napraviti dijete za zamjenu naredbi" +msgstr "nije moguće napraviti potomka za zamjenu naredbi" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -"command_substitute: ne mogu udvostručiti cjevovod kao opisnik datoteke 1" +"command_substitute(): nije moguće kopirati cijev kao deskriptor datoteke 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" -msgstr "" +msgstr "%s: nevaljano ime varijable za naziv referencije" -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format -msgid "%s: bad substitution" -msgstr "%s: neispravna zamjena" - -#: subst.c:6800 -#, fuzzy, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: neispravan broj redaka" +msgstr "%s: nevaljana indirektna ekspanzija" -#: subst.c:6807 -#, fuzzy, c-format +#: subst.c:6840 subst.c:6987 +#, c-format msgid "%s: invalid variable name" -msgstr "„%s”: neispravno drugo ime" +msgstr "„%s“: nevaljano ime varijable" + +#: subst.c:7056 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parametar nije postavljen" -#: subst.c:6854 +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" -msgstr "%s: parametar prazan ili nije postavljen" +msgstr "%s: prazni parametar ili nije postavljen" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" -msgstr "%s: izraz podniza < 0" +msgstr "%s: rezultat od izraza dijela stringa < 0" + +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: loša supstitucija" -#: subst.c:8450 +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" -msgstr "$%s: ne mogu pridružiti na ovaj način" +msgstr "$%s: nije moguće dodijeliti na ovaj način" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" -msgstr "buduće inačice ljuske će prisiliti procjenu kao aritmetičku zamjenu" +msgstr "" +"buduće inačice ljuske će prisiliti procjenu kao aritmetičku supstituciju" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "neispravna zamjena: nema zatvorenog „`” u %s" +msgstr "loša supstitucija: nema zaključnoga znaka „`“ u %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "nema podudaranja: %s" #: test.c:147 msgid "argument expected" -msgstr "očekujem argument" +msgstr "očekuje se argument" #: test.c:156 #, c-format msgid "%s: integer expression expected" -msgstr "%s: očekujem cjelobrojni izraz" +msgstr "%s: očekuje se cijelo brojni izraz" #: test.c:265 msgid "`)' expected" -msgstr "očekujem „)”" +msgstr "očekivana je „)“" #: test.c:267 #, c-format msgid "`)' expected, found %s" -msgstr "očekujem „)”, našao %s" +msgstr "očekuje se „)“, nađen %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" -msgstr "%s: očekujem unarni operator" +msgstr "%s: očekuje se unarni operator" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" -msgstr "%s: očekujem binarni operator" +msgstr "%s: očekuje se binarni operator" -#: test.c:869 +#: test.c:875 msgid "missing `]'" -msgstr "nedostaje „]”" +msgstr "nedostaje „]“" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" -msgstr "neispravan broj signala" +msgstr "nevaljani broj za signal" + +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "trap handler: prekoračena je dopuštena razina gniježđenja (%d)" -#: trap.c:387 +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" -msgstr "" +msgstr "run_pending_traps(): loša vrijednost u trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" +"run_pending_traps: signalom manipulira SIG_DFL, opet šalje %d (%s) na samoga " +"sebe" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" -msgstr "trap_handler: neispravan signal %d" +msgstr "trap_handler(): loši signal %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" -msgstr "greška pri uvozu definicije funkcije za „%s”" +msgstr "greška pri importiranju definicije funkcije za „%s“" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" -msgstr "razina ljuske (%d) je previsoka, vraćam na 1" +msgstr "razina ljuske (%d) je previsoka, vraća se na 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" -msgstr "" +msgstr "make_local_variable(): u trenutačnom području nema konteksta funkcije" -#: variables.c:2432 -#, fuzzy, c-format +#: variables.c:2674 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: ne mogu pridružiti opisnik datoteke varijabli" +msgstr "%s: varijabli se ne može dodijeliti vrijednost" -#: variables.c:3043 +#: variables.c:3453 #, c-format msgid "%s: assigning integer to name reference" -msgstr "" +msgstr "%s: nazivu referencije se pripisuje cijeli broj" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" -msgstr "" +msgstr "all_local_variables(): u trenutačnom području nema konteksta funkcije" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" -msgstr "%s ima prazan exportstr" +msgstr "*** %s ima prazni exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" -msgstr "" +msgstr "*** nevaljani znak %d u exportstr za %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" -msgstr "" +msgstr "*** nema „=“ u exportstr za %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" -msgstr "" +msgstr "pop_var_context(): vrh od „shell_variables“ nije funkcijski kontekst" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" -msgstr "" +msgstr "pop_var_context(): nije „global_variables“ kontekst" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" -msgstr "" +msgstr "pop_scope(): vrh od „shell_variables“ nije privremeni kontekst okoline" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" -msgstr "%s: %s: ne mogu otvoriti kao DATOTEKU" +msgstr "%s: %s: nije moguće otvoriti kao DATOTEKU" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "" +msgstr "%s: %s: nevaljana vrijednost za praćenje deskriptora datoteke" -#: variables.c:5669 -#, fuzzy, c-format +#: variables.c:6322 +#, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s: %s je izvan granica" +msgstr "%s: %s vrijednost za kompatibilnost je izvan raspona" #: version.c:46 version2.c:46 -#, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright © 2011 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \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 @@ -2090,68 +2168,70 @@ msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, inačica %s (%s)\n" #: version.c:91 version2.c:91 -#, fuzzy msgid "This is free software; you are free to change and redistribute it." -msgstr "Ovo je slobodan softver, slobodno ga smijete mijenjati i dijeliti.\n" +msgstr "Ovo je slobodni softver; slobodno ga mijenjajte i dijelite." #: version.c:92 version2.c:92 -#, fuzzy msgid "There is NO WARRANTY, to the extent permitted by law." -msgstr "NEMA JAMSTAVA, do krajnje mjere dozvoljene zakonom.\n" +msgstr "NEMA JAMSTVA do granica dopuštenih zakonom." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "%s: ne mogu alocirati %lu bajtova (alocirano %lu bajtova)" +msgstr "%s: nije moguće dodijeliti %lu bajtova (dodijeljeno je %lu bajtova)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" -msgstr "%s: ne mogu alocirati %lu bajtova" +msgstr "%s: nije moguće dodijeliti %lu bajtova" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "%s: %s:%d: ne mogu alocirati %lu bajtova (alocirano %lu bajtova)" +msgstr "" +"%s: %s:%d: nije moguće dodijeliti %lu bajtova (dodijeljeno je %lu bajtova)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" -msgstr "%s: %s:%d: ne mogu alocirati %lu bajtova" +msgstr "%s: %s:%d: nije moguće dodijeliti %lu bajtova" #: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" -msgstr "alias [-p] [ime[=vrijednost] ... ]" +msgstr "alias [-p] [IME[=VRIJEDNOST]... ]" #: builtins.c:49 msgid "unalias [-a] name [name ...]" -msgstr "unalias [-a] ime [ime ...]" +msgstr "unalias [-a] IME..." #: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" +"bind [-lpsvPSVX] [-m TIPKOVNICA] [-f DATOTEKA] [-q IME] [-u IME]\n" +" [-r PREČAC] [-x PREČAC:SHELL_NAREDBA]\n" +" [PREČAC:READLINE_FUNKCIJA | READLINE_NAREDBA]" #: builtins.c:56 msgid "break [n]" -msgstr "" +msgstr "break [N]" #: builtins.c:58 msgid "continue [n]" -msgstr "" +msgstr "continue [N]" #: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" -msgstr "" +msgstr "builtin [UGRAĐENA_SHELL_FUNKCIJA [ARGUMENT...]]" #: builtins.c:63 msgid "caller [expr]" -msgstr "" +msgstr "caller [IZRAZ]" #: builtins.c:66 msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "" +msgstr "cd [-L|[-P [-e]] [-@]] [DIREKTORIJ]" #: builtins.c:68 msgid "pwd [-LP]" @@ -2159,238 +2239,246 @@ msgstr "pwd [-LP]" #: builtins.c:76 msgid "command [-pVv] command [arg ...]" -msgstr "" +msgstr "command [-pVv] NAREDBA [ARGUMENT...]" #: builtins.c:78 -#, fuzzy msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "alias [-p] [ime[=vrijednost] ... ]" +msgstr "declare [-aAfFgilnrtux] [-p] [IME[=VRIJEDNOST]...]" #: builtins.c:80 -#, fuzzy msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." -msgstr "alias [-p] [ime[=vrijednost] ... ]" +msgstr "typeset [-aAfFgilnrtux] [-p] IME[=VRIJEDNOST]..." #: builtins.c:82 msgid "local [option] name[=value] ..." -msgstr "" +msgstr "local [OPCIJA] IME[=VRIJEDNOST]..." #: builtins.c:85 msgid "echo [-neE] [arg ...]" -msgstr "" +msgstr "echo [-neE] [ARGUMENT...]" #: builtins.c:89 msgid "echo [-n] [arg ...]" -msgstr "" +msgstr "echo [-n] [ARGUMENT...]" #: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" -msgstr "" +msgstr "enable [-a] [-dnps] [-f DATOTEKA] [IME...]" #: builtins.c:94 msgid "eval [arg ...]" -msgstr "" +msgstr "eval [ARGUMENT...]" #: builtins.c:96 msgid "getopts optstring name [arg]" -msgstr "" +msgstr "getopts OPCIJA_STRING IME [ARGUMENT]" #: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" -msgstr "" +msgstr "exec [-cl] [-a IME] [NAREDBA [ARGUMENT...]] [PREUSMJERAVANJE...]" #: builtins.c:100 msgid "exit [n]" -msgstr "" +msgstr "exit [N]" #: builtins.c:102 msgid "logout [n]" -msgstr "" +msgstr "logout [N]" #: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" +"fc [-e EDITOR] [-lnr] [PRVA] [ZADNJA] ili: fc -s [UZORAK=ZAMJENA] [NAREDBA]" #: builtins.c:109 msgid "fg [job_spec]" -msgstr "" +msgstr "fg [JOBSPEC]" #: builtins.c:113 msgid "bg [job_spec ...]" -msgstr "" +msgstr "bg [JOBSPEC...]" #: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" -msgstr "" +msgstr "hash [-lr] [-p IME_STAZE] [-dt] [IME...]" #: builtins.c:119 msgid "help [-dms] [pattern ...]" -msgstr "" +msgstr "help [-dms] [UZORAK ...]" #: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" +"history [-c] [-d POZICIJA] [N]\n" +" ili: history -anrw [DATOTEKA]\n" +" ili: history -ps ARGUMENT..." #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "" +msgstr "jobs [-lnprs] [JOBSPEC...] ili: jobs -x NAREDBA [ARGUMENT...]" #: builtins.c:131 msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "" +msgstr "disown [-h] [-ar] [JOBSPEC... | PID...]" #: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" +"kill [-s SIGSPEC | -n SIGNUM | -SIGSPEC] pid | JOBSPEC\n" +" ili: kill -l [SIGSPEC]" #: builtins.c:136 msgid "let arg [arg ...]" -msgstr "" +msgstr "let ARGUMENT..." #: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" msgstr "" +"read [-ers] [-a POLJE] [-d MEĐA] [-i TEKST] [-p PROMPT]\n" +" [-n BROJ_ZNAKOVA] [-N BROJ_ZNAKOVA] [-t SEKUNDA]\n" +" [-u FD] [IME...]" #: builtins.c:140 msgid "return [n]" -msgstr "" +msgstr "return [N]" #: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "" +msgstr "set [-abefhkmnptuvxBCHP] [-o IME_OPCIJE] [--] [ARGUMENT...]" #: builtins.c:144 -#, fuzzy msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "unalias [-a] ime [ime ...]" +msgstr "unset [-f] [-v] [-n] [IME...]" #: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" -msgstr "" +msgstr "export [-fn] [IME[=VRIJEDNOST]...] ili: export -p" #: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" -msgstr "" +msgstr "readonly [-aAf] [IME[=VRIJEDNOST]...] ili: readonly -p" #: builtins.c:150 msgid "shift [n]" -msgstr "" +msgstr "shift [N]" #: builtins.c:152 msgid "source filename [arguments]" -msgstr "" +msgstr "source DATOTEKA [ARGUMENTI]" #: builtins.c:154 msgid ". filename [arguments]" -msgstr "" +msgstr ". DATOTEKA [ARGUMENTI]" #: builtins.c:157 msgid "suspend [-f]" -msgstr "" +msgstr "suspend [-f]" #: builtins.c:160 msgid "test [expr]" -msgstr "" +msgstr "test [IZRAZ]" #: builtins.c:162 msgid "[ arg... ]" -msgstr "" +msgstr "[ ARGUMENT... ]" #: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" -msgstr "" +msgstr "trap [-lp] [[ARGUMENT] SIGNAL_SPEC...]" #: builtins.c:168 msgid "type [-afptP] name [name ...]" -msgstr "" +msgstr "type [-afptP] IME..." #: builtins.c:171 msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [LIMIT]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" -msgstr "" +msgstr "umask [-p] [-S] [MODE]" #: builtins.c:177 -msgid "wait [-n] [id ...]" -msgstr "" +msgid "wait [-fn] [id ...]" +msgstr "wait [-fn] [ID...]" #: builtins.c:181 msgid "wait [pid ...]" -msgstr "" +msgstr "wait [PID...]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" -msgstr "" +msgstr "for IME [in RIJEČIMA...]; do NAREDBE; done" #: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" -msgstr "" +msgstr "for (( IZRAZ_1; IZRAZ_2; IZRAZ_3 )); do NAREDBE; done" #: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" -msgstr "" +msgstr "select IME [in RIJEČIMA...;]; do NAREDBE; done" #: builtins.c:190 msgid "time [-p] pipeline" -msgstr "" +msgstr "time [-p] CJEVOVOD" #: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -msgstr "" +msgstr "case RIJEČ in [UZORAK [| UZORAK]...) NAREDBE;;]... esac" #: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" msgstr "" +"if NAREDBE; then NAREDBE; [elif NAREDBE; then NAREDBE;]... [else NAREDBE;]\n" +" fi" #: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" -msgstr "" +msgstr "while NAREDBE; do NAREDBE; done" #: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" -msgstr "" +msgstr "until NAREDBE; do NAREDBE; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" -msgstr "" +msgstr "coproc [IME] NAREDBA [PREUSMJERAVANJA]" #: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" -msgstr "" +msgstr "function IME {NAREDBE;} ili: IME () {NAREDBE;}" #: builtins.c:204 msgid "{ COMMANDS ; }" -msgstr "" +msgstr "{ NAREDBE; }" #: builtins.c:206 msgid "job_spec [&]" -msgstr "" +msgstr "JOBSPEC [&]" #: builtins.c:208 msgid "(( expression ))" -msgstr "(( izraz ))" +msgstr "(( IZRAZ ))" #: builtins.c:210 msgid "[[ expression ]]" -msgstr "[[ izraz ]]" +msgstr "(( IZRAZ ))" #: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "" +msgstr "varijable — imena i značenje nekih varijabla ljuske" #: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" -msgstr "pushd [-n] [+N | -N | direktorij]" +msgstr "pushd [-n] [+N | -N | DIREKTORIJ]" #: builtins.c:219 msgid "popd [-n] [+N | -N]" @@ -2398,44 +2486,54 @@ msgstr "popd [-n] [+N | -N]" #: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" -msgstr "" +msgstr "dirs [-clpv] [+N] [-N]" #: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" -msgstr "" +msgstr "shopt [-pqsu] [-o] [IME_OPCIJE...]" #: builtins.c:228 msgid "printf [-v var] format [arguments]" -msgstr "" +msgstr "printf [-v VARIJABLA] FORMAT [ARGUMENTI]" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPCIJA] [-A AKCIJA]\n" +" [-C NAREDBA] [-F FUNCIJA] [-G GLOB_UZORAK] [-P PREFIKS]\n" +" [-S SUFIKS] [-W POPIS_RIJEČI] [-X FILTAR_UZORAKA] [IME...]" #: builtins.c:235 msgid "" "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" +"compgen [-abcdefgjksuv] [-o OPCIJA] [-A AKCIJA] [-C NAREDBA]\n" +" [-F FUNCIJA] [-G GLOB_UZORAK] [-P PREFIKS] [-S SUFIKS]\n" +" [-W POPIS_RIJEČI] [-X FILTAR_UZORAKA] [RIJEČ]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "" +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o OPCIJA] [-DEI] [IME...]" #: builtins.c:242 msgid "" "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" msgstr "" +"mapfile [-d MEĐA] [-n BROJ] [-O POČETAK] [-s BROJ] [-t] [-u FD]\n" +" [-C FUNKCIJA] [-c TOLIKO] [POLJE]" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" +"readarray [-d DELIM] [-n BROJ] [-O POČETAK] [-s BROJ] [-t] [-u FD]\n" +" [-C FUNKCIJA] [-c TOLIKO] [POLJE]" #: builtins.c:256 msgid "" @@ -2456,6 +2554,15 @@ msgid "" "been\n" " defined." msgstr "" +"Definira ili prikaže aliase.\n" +"\n" +" Bez argumenata, „alias“ ispiše popis aliasa na standardni izlaz u\n" +" iskoristivom formatu: alias IME='ZAMJENA'.\n" +" S argumentima, alias je definirani za svako IME za koje je dȃna\n" +" ZAMJENA. Ako ZAMJENA završi s razmakom (bjelinom), onda pri ekspanziji\n" +" alias provjeri je li je i sljedeća riječ alias.\n" +"\n" +" Završi s kȏdom 0 osim ako nije definirani alias za dȃno IME." #: builtins.c:278 msgid "" @@ -2466,6 +2573,11 @@ msgid "" " \n" " Return success unless a NAME is not an existing alias." msgstr "" +"Ukloni svako dȃno IME iz popisa definiranih aliasa.\n" +"\n" +" S opcijom „-a“ izbriše sve definirane aliase.\n" +"\n" +" Završi s uspjehom osim ako IME nije postojeći alias." #: builtins.c:291 msgid "" @@ -2508,6 +2620,42 @@ msgid "" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" +"Odredi i postavi „readline“ prečace i varijable.\n" +"\n" +" Poveže sekvencije tipki (prečace) na „readline“ funkciju, ili makro ili\n" +" „readline“ varijablu. Sintaksa argumenta koji nije opcija je ista kao\n" +" u ~/.inputrc, ali mora biti proslijeđeni kao pojedinačni argument,\n" +" na primjer: '\"\\C-x\\C-r\": re-read-init-file'.\n" +"\n" +" Opcije:\n" +" -f DATOTEKA pročita prečace iz ove DATOTEKE\n" +" -l izlista sve poznate funkcije\n" +" -m TIPKOVNICA koristi ovu TIPKOVNICU dok traje ova naredba;\n" +" moguće TIPKOVNICE su emacs, emacs-standard,\n" +" emacs-meta, emacs-ctlx, vi, vi-move, vi-command,\n" +" i vi-insert.\n" +" -P izlista imena funkcija i prečaca\n" +" -p ispiše imena funkcija i prečaca u formatu\n" +" koji se može iskoristiti kao ulaz\n" +" -r PREČAC ukloni sekvenciju tipki za ovaj prečac\n" +" -q FUNKCIJA pokaže tipke koje pozivaju ovu FUNKCIJU\n" +" -S pokaže sekvencije tipki poje pozivaju makroe\n" +" s njihovim vrijednostima\n" +" -s ispiše sekvencije tipki poje pozivaju makroe s\n" +" njihovim vrijednostima u formatu koji se može\n" +" iskoristiti kao ulaz\n" +" -u FUNKCIJA poništi sve prečace vezane na ovu FUNKCIJU\n" +" -V izlista imena varijabli s njihovim vrijednostima\n" +" -v ispiše imena varijabli s njihovim vrijednostima\n" +" u formatu koji se može iskoristiti kao ulaz\n" +" -x PREČAC:SHELL_NAREDBA učini da se izvrši ova SHELL_NAREDBA kȁd god\n" +" se unese taj PREČAC (sekvencija tipki)\n" +" -X ispiše prečace (sekvencije tipki) vezane s „-x“ i\n" +" njima pridružene naredbe u formatu koji se može\n" +" iskoristiti kao ulaz\n" +"\n" +" Završi s kȏdom 0 osim ako je dȃna neprepoznata opcija\n" +" ili se dogodila greška." #: builtins.c:330 msgid "" @@ -2519,6 +2667,11 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" +"Izlaz iz for, while ili until petlji.\n" +"\n" +" Ako je dȃn N, ukida se N ugnježđenih petlji.\n" +"\n" +" Završi s kȏdom 0 osim ako je N manji od 1." #: builtins.c:342 msgid "" @@ -2530,6 +2683,10 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" +"Nastavlja sljedeću iteraciju ugnježđenih for, while ili until petlji.\n" +" Ako je dȃn N, nastavlja se N-tom ugnježđenom petljom.\n" +"\n" +" Završi s kȏdom 0 osim ako je N manji od 1." #: builtins.c:354 msgid "" @@ -2542,8 +2699,19 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" +"Izvrši ugrađenu funkciju ljuske (shell builtins).\n" +"\n" +" Izvrši dȃnu UGRAĐENU_SHELL_FUNKCIJU (SHELL-BUILTIN) funkciju s dȃnim\n" +" ARGUMENTIMA. To je korisno ako želite redefinirati implementaciju\n" +" ugrađene shell funkcije kao vlastitu shell funkciju (skriptu s istim\n" +" imenom kao ugrađena shell funkcija), a potrebna vam je funkcionalnost\n" +" te ugrađene shell funkcije unutar vaše vlastite skripte (shell " +"funkcije).\n" +"\n" +" Završi s kȏdom UGRAĐENE_SHELL_FUNKCIJE ili s kȏdom 1 ako\n" +" UGRAĐENA_SHELL_FUNKCIJA nije ugrađene funkcija ljuske (shell builtin)." #: builtins.c:369 msgid "" @@ -2560,6 +2728,17 @@ msgid "" " Returns 0 unless the shell is not executing a shell function or EXPR\n" " is invalid." msgstr "" +"Vrati kontekst trenutačnoga poziva potprogramu.\n" +"\n" +" Bez IZRAZA, vrati „$line $filename“. Ako je dȃn IZRAZ, vrati\n" +" „$line $subroutine $filename“; ova dodatna informacija može poslužiti\n" +" za „stack trace“.\n" +"\n" +" Vrijednost IZRAZA pokazuje koliko se treba vratiti unazad od\n" +" trenutačne pozicije, s time da je pozicija 0 trenutačna pozicija.\n" +"\n" +" Završi s kȏdom 0 osim ako ljuska ne izvršava ljuskinu funkciju\n" +" ili je IZRAZ nevaljani." #: builtins.c:387 msgid "" @@ -2605,6 +2784,42 @@ msgid "" "when\n" " -P is used; non-zero otherwise." msgstr "" +"Promjeni trenutačni direktorij.\n" +"\n" +" Promijeni trenutačni direktorij u dȃni DIREKTORIJ. Zadano, DIREKTORIJ\n" +" je vrijednost varijable HOME.\n" +"\n" +" Varijabla CDPATH definira staze (direktorije) po kojima se\n" +" traži dȃni DIREKTORIJ.\n" +"\n" +" Nazivi direktorija (staza) u CDPATH su razdvojeni s dvotočkom (:);\n" +" prazni naziv za direktorij je isto kao i trenutačni direktorij (.).\n" +" Ako dȃni DIREKTORIJ započinje s kosom crtom (/), onda se CDPATH\n" +" ne koristi.\n" +"\n" +" Ako se dȃni direktorij ne pronađe, a omogućena je opcija „cdable_vars“,\n" +" tada se dȃna riječ uzme kao ime varijable; ako ta varijabla sadrži\n" +" naziv, „cd“ prijeđe u direktorij s tim nazivom.\n" +"\n" +" Opcije:\n" +" -L slijedi simboličke veze; simboličke veze u DIREKTORIJu\n" +" razriješi nakon procesiranja „..“ instancije DIREKTORIJa;\n" +" opcija „-L“ je aktivna u zadanom (početnom) stanju\n" +" -P rabi fizičku strukturu direktorija umjesto da slijedi\n" +" simboličke veze; simboličke veze DIREKTORIJa\n" +" razriješi prije procesiranja „..“ instancije DIREKTORIJa\n" +" -e ako je dȃna s opcijom „-P“, i trenutačni radni direktorij nije\n" +" moguće uspješno odrediti nakon uspješne promjene direktorija,\n" +" „cd“ završi s kȏdom različitim od 0.\n" +" -@ opiše proširene atribute povezane s datotekom kao direktorij\n" +" koji sadrži atribute datoteke (ako sustav to podržava)\n" +"\n" +" Token „..“ se procesira uklanjanjem komponente staze koja mu neposredno\n" +" prethodi unatrag do kose crte „/“ ili do početka DIREKTORIJA.\n" +"\n" +" Završi s kȏdom 0 ako je direktorij promijenjen i ako je\n" +" varijabla okoline PWD uspješno postavljena kȁd je dȃna opcija „-P“;\n" +" u suprotnom završi s kȏdom 1." #: builtins.c:425 msgid "" @@ -2621,6 +2836,16 @@ msgid "" " Returns 0 unless an invalid option is given or the current directory\n" " cannot be read." msgstr "" +"Ispiše ime trenutačnoga radnog direktorija.\n" +"\n" +" Opcije:\n" +" -L ispiše vrijednost od $PWD ako sadrži trenutačni radni direktorij\n" +" -P ispiše stvarnu fizičku stazu do direktorija bez simboličkih veza\n" +"\n" +" U zadanom stanju „pwd“ se ponaša kao da je aktivna „-L“ opcija.\n" +"\n" +" Završi s kȏdom 0 osim ako nije dȃna nevaljana opcija\n" +" ili se trenutačni radni direktorij ne može pročitati." #: builtins.c:442 msgid "" @@ -2630,13 +2855,7 @@ msgid "" " \n" " Exit Status:\n" " Always succeeds." -msgstr "" -"Prazna naredba.\n" -" \n" -" Nema efekta, ova naredba ne radi ništa.\n" -" \n" -" Izlazno stanje:\n" -" Uvijek uspješno." +msgstr "Naredba nema nikakvog efekta, ne radi ništa; uvijek završi s kȏdom 0." #: builtins.c:453 msgid "" @@ -2644,11 +2863,7 @@ msgid "" " \n" " Exit Status:\n" " Always succeeds." -msgstr "" -"Vrati uspješan rezultat.\n" -" \n" -" Izlazno stanje:\n" -" Uvijek uspješno." +msgstr "Uvijek završi uspješno s kȏdom 0." #: builtins.c:462 msgid "" @@ -2656,11 +2871,7 @@ msgid "" " \n" " Exit Status:\n" " Always fails." -msgstr "" -"Vrati neuspješan rezultat.\n" -" \n" -" Izlazno stanje:\n" -" Uvijek neuspješno." +msgstr "Uvijek završi neuspješno s kȏdom 1." #: builtins.c:471 msgid "" @@ -2680,6 +2891,20 @@ msgid "" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" +"Izvrši jednostavnu naredbu ili pokaže informacije o naredbama.\n" +"\n" +" Izvrši dȃnu NAREDBU s dȃnim ARGUMENTIMA ignorirajući pritom bilo\n" +" koju funkciju ljuske s istim imenom (naredba). Može se koristiti da\n" +" pokrenete naredbu na disku i onda kȁd postoji funkcija s istim imenom.\n" +"\n" +" Opcije:\n" +" -p rabi zadanu vrijednost za PATH kao garanciju\n" +" pronalaženja svih standardnih programa\n" +" -v ispiše opis NAREDBE, slično kao „type“ builtin\n" +" -V ispiše opširniji opis svake dȃne NAREDBE\n" +"\n" +" Završi s izlaznim statusom NAREDBE\n" +" ili s 1 ako NAREDBA nije pronađena." #: builtins.c:490 msgid "" @@ -2700,11 +2925,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2720,17 +2945,50 @@ msgid "" " Returns success unless an invalid option is supplied or a variable\n" " assignment error occurs." msgstr "" +"Postavlja vrijednosti i atribute varijablama.\n" +"\n" +" Deklarira varijable i dodjeljuje im atribute. Ako IMEna nisu dȃna,\n" +" prikaže atribute i vrijednosti svih varijabli.\n" +"\n" +" Opcije:\n" +" -f prikaže samo definirane funkcije (ne pokaže varijable)\n" +" -F prikaže samo imena funkcija bez definicija\n" +" -g kreira globalne varijable samo za upotrebu u funkciji ljuske;\n" +" inače se ignoriraju\n" +" -p prikaže atribute i vrijednost za svako dȃno IME\n" +"\n" +" Atributi:\n" +" -a učini od dȃnih IMEna indeksirana polja (ako je to podržano)\n" +" -A učini od dȃnih IMEna asocijativna polja (ako je to podržano)\n" +" -i učini da dȃna IMEna dobiju „integer“ svojstva\n" +" -l pretvori slova dȃnih IMEna u mala slova prilikom upotrebe\n" +" -n učini dȃno IME referencijom na drugu varijablu s imenom\n" +" jednakim „vrijednost od varijable IME“\n" +" -r učini dȃna IMEna readonly\n" +" -t učini da dȃna IMEna dobiju „trace“ svojstva\n" +" -u pretvori slova dȃnih IMEna u velika slova prilikom upotrebe\n" +" -x označi dȃna IMEna za ekport\n" +"\n" +" „+“ umjesto „-“ isključi dȃni atribut.\n" +"\n" +" Varijable s „integer“ atributom obavljaju aritmetičke operacije tijekom\n" +" izvođenja i upotrebe (pogledajte „let“ naredbu).\n" +"\n" +" Unutar funkcije „declare“ učini dȃna IMEna lokalnima, slično kao\n" +" naredba „local“. Opcija „-g“ spriječi takvo ponašanje.\n" +"\n" +" Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n" +" ili se dogodila greška prilikom zadavanja varijabli." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" " A synonym for `declare'. See `help declare'." msgstr "" "Postavi vrijednosti i svojstva varijabli.\n" -" \n" -" Zastarjelo. Pogledajte „help declare”." +"\n" +" Sinonim za „declare“. Za detalje upišite „help declare“." #: builtins.c:538 msgid "" @@ -2746,8 +3004,19 @@ msgid "" " Returns success unless an invalid option is supplied, a variable\n" " assignment error occurs, or the shell is not executing a function." msgstr "" +"Definira lokalne varijable.\n" +"\n" +" Kreira lokalnu varijablu IME i dodijeli joj vrijednost. OPCIJA\n" +" može biti bilo koja od opcija koju prihvaća naredba „declare“.\n" +"\n" +" Lokalne varijable mogu se koristiti samo unutar neke funkcije a\n" +" vidljive su samo funkciji u kojoj su definirane i njezinim potomcima.\n" +"\n" +" Završi s kȏdom 0 osim ako su dȃne nevaljane opcije,\n" +" dogodila se greška pri dodijeli ili ljuska ne izvrši funkciju." #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -2776,12 +3045,47 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Dȃne argumente ispiše na standardni izlaz.\n" +"\n" +" Ispiše dȃne argumente na standardni izlaz, međusobno odvojene s\n" +" jednim razmakom (bjelina) i na kraju s novim retkom.\n" +"\n" +" Opcije:\n" +" -n ne pripoji novi redak (znak novog retka)\n" +" -e interpretira sljedeće sekvencije maskirane\n" +" s obratnom kosom crtom (backslash escapes)\n" +" -E ne interpretira sekvencije maskirane\n" +" s obratnom kosom crtom (backslash escapes)\n" +"\n" +" „echo“ interpretira ove kontrolne kodove (sekvencije maskirane\n" +" s obratnom kosom crtom — backslash escapes):\n" +" \\a alert (zvučni signal)\n" +" \\b backspace\n" +" \\c spriječi daljni izlaz\n" +" \\e znak za escape (ESC)\n" +" \\E znak za escape (ESC)\n" +" \\f nova stranica (znak za FF, form feed)\n" +" \\n novi redak (znak za LF, line feed)\n" +" \\r na početak novoga retka (Enter, znak za CR, carriage return)\n" +" \\t horizontalni tabulator\n" +" \\v vertikalni tabulator\n" +" \\\\ backslash (\\)\n" +" \\0NNN znak s ASCII kȏdom NNN (oktalni, 1 do 3 znamenke)\n" +" \\xHH znak s ASCII kȏdom HH (heksadecimalni, 1 do 2 znamenke)\n" +"\n" +" Završi s kȏdom 0 osim ako se ne dogodi greška pisanja." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2793,8 +3097,15 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Ispiše argumente na standardni izlaz.\n" +"\n" +" Prikaže ARGUMENTE na standardnom izlazu (pripoji im znak za novi " +"redak).\n" +" Opcijom „-n“ može se isključiti pripajanje znaka za novi redak.\n" +"\n" +" Završi s kȏdom 0 ako se ne dogodi greška pisanja." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2820,8 +3131,33 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" +"Omogući ili onemogući ugrađene opcije ljuske.\n" +"\n" +" Aktivira i deaktivira ugrađene opcije ljuske. Deaktiviranje vam\n" +" omogućava pokrenuti naredbu na disku s istim imenom kao ugrađena\n" +" komanda bez potrebe specificiranja kompletne staze.\n" +"\n" +" Opcije:\n" +" -a ispiše ugrađene naredbe i pokaže jesu ili nisu omogućene\n" +" -n onemogući IMEnovane naredbe ili izlista onemogućene naredbe\n" +" -p generira izlaz koji se može koristi za ulaz (zadano)\n" +" -s ispiše samo imena specijalnih POSIX ugrađenih naredbi\n" +"\n" +" Opcije koje upravljaju dinamičko učitavanje:\n" +" -f učita ugrađenu naredbu IME iz dijeljenoga objekta DATOTEKA\n" +" -d ukloni ugrađenu naredbu učitanu s „-f“\n" +"\n" +" Bez opcija, omogućena su sva dȃna IMEna. Bez imena prikazane su\n" +" omogućene naredbe (ili s „-n“ onemogućene).\n" +"\n" +" Primjer: da koristite binarnu datoteku „test“ koja se nalazi na putu\n" +" pretraživanja PATH, umjesto ugrađene (test) naredbe, upišite\n" +" „enable -n test“.\n" +"\n" +" Završi s kȏdom 0 osim ako IME nije ugrađena naredba\n" +" ili se nije dogodila greška." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2832,8 +3168,14 @@ msgid "" " Exit Status:\n" " Returns exit status of command or success if command is null." msgstr "" +"Izvrši argumente kao naredbu ljuske.\n" +"\n" +" Združi argumente u jedinstveni string, upotrijebi ga kao ulaz za ljusku\n" +" i izvrši rezultirajuću naredbu.\n" +"\n" +" Završi s kȏdom naredbe ili uspješno ako je naredba prazna." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -2873,8 +3215,48 @@ msgid "" " Returns success if an option is found; fails if the end of options is\n" " encountered or an error occurs." msgstr "" +"Analiza argumenata opcija.\n" +"\n" +" Procedure ljuske koriste „getopts“ za analizu položajnih parametara\n" +" kao opcije.\n" +" \n" +" OPCIJA_STRING sadrži slova opcije koje treba prepoznati; ako iza\n" +" slova slijedi dvotočka, očekuje se da opcija ima argument koji treba\n" +" biti bjelinom odvojen od opcije.\n" +"\n" +" Svaki put kȁd se pozove, getopts će smjestiti sljedeću opciju u " +"ljuskinu\n" +" varijablu IME (ako IME ne postoji, getopts ga inicijalizira), a indeks\n" +" sljedećeg argumenta koji treba procesirati u ljuskinu varijablu OPTIND.\n" +" OPTIND je inicijaliziran na 1 pri svakom pozivanju ljuske ili ljuskine\n" +" skripte. Ako opcija zahtijeva argument, getopts smjesti taj argument u\n" +" ljuskinu varijablu OPTARG.\n" +"\n" +" getopts javlja greške na jedan od dva načina. Ako je dvotočka prvi znak " +"u\n" +" OPCIJA_STRING, getopts tiho prijavi grešku (ne ispisuje poruke o " +"greškama).\n" +" Ako naiđe na nevaljanu opciju, getopts smjesti nađeni znak opcije u " +"OPTARG.\n" +" Ako zahtijevani argument nije pronađen, getopts smjesti „:“ u IME i " +"postavi\n" +" OPTARG na pronađeni znak opcije. Ako getopts ne radi tiho i naiđe na\n" +" nevaljanu opciju, getopts smjesti „?“ u IME i poništi OPTARG.\n" +" Ako zahtijevani argument nije pronađen, getopts smjesti „?“ u IME, " +"poništi\n" +" OPTARG i ispiše poruku o greškama.\n" +"\n" +" Ako ljuskina varijabla OPTERR ima vrijednost 0, getopts onemogući ispis\n" +" poruka o greškama, čak i kȁd prvi znak u OPCIJA_STRING nije dvotočka.\n" +" Zadano, OPTERR ima vrijednost 1.\n" +"\n" +" Obično getopts analizira položajne parametre ($0 - $9), ali ako je\n" +" dȃno više argumenata, onda analizira te argumente.\n" +"\n" +" Završi s kȏdom 0 ako pronađe opciju; ako naiđe na kraj opcija\n" +" ili ako se dogodi greška, završi s neuspjehom." -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2896,20 +3278,35 @@ msgid "" " Returns success unless COMMAND is not found or a redirection error " "occurs." msgstr "" +"Zamjeni ljusku s dȃnom naredbom.\n" +"\n" +" Izvrši dȃnu NAREDBU, zamijenivši ovu ljusku s ovim programom.\n" +" Eventualni ARGUMENTI postanu argumenti NAREDBE. Ako NAREDBA nije\n" +" specificirana, sva preusmjeravanja se dogode u trenutačnoj ljusci.\n" +"\n" +" Opcije:\n" +" -a IME dȁde IME kao nulti argument NAREDBI\n" +" -c izvrši NAREDBU u praznoj okolini\n" +" -l smjesti spojnicu („-“) kao nulti argument NAREDBI\n" +"\n" +" Ako se naredba ne može izvršiti, ne-interaktivna ljuska završi,\n" +" osim ako je aktivna opcija ljuske „execfail“.\n" +"\n" +" Završi s kȏdom 0, osim ako NAREDBA nije pronađena,\n" +" ili se dogodila greška preusmjeravanja." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" " Exits the shell with a status of N. If N is omitted, the exit status\n" " is that of the last command executed." msgstr "" -"Izađi iz ljuske.\n" -" \n" -" Izlazi iz ljuske sa stanjem N. Ako N nije naveden, izlazno stanje je\n" -" isto kao i stanje zadnje izvršene naredbe." +"Izlaz iz ljuske.\n" +"\n" +" Završi s kȏdom N. Bez N završi s kȏdom zadnje izvršene naredbe." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -2917,12 +3314,11 @@ msgid "" "executed\n" " in a login shell." msgstr "" -"Izađi iz prijavne ljuske.\n" -" \n" -" Izlazi iz prijavne ljuske s izlaznim stanjem N. Vraća grešku ako nije\n" -" izvršeno u prijavnoj ljusci." +"Izlaz iz prijavne ljuske.\n" +"\n" +" Završi s kȏdom N. Završi s greškom ako to nije prijavna ljuska." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2951,8 +3347,27 @@ msgid "" " Returns success or status of executed command; non-zero if an error " "occurs." msgstr "" +"Prikaže ili izvrši naredbe iz popisa povijesti.\n" +"\n" +" Koristi se za prikazivanje dosadašnjih, za uređivanje, ili za ponovno\n" +" pokretanje naredbi. PRVA i ZADNJA mogu biti brojevi koji specificiraju\n" +" raspon, ili PRVA može biti string koji pokazuje na posljednju naredbu\n" +" čije ime započinje sa stringom.\n" +"\n" +" Opcije:\n" +" -e EDITOR ime EDITORA koji će se koristi; zadano, koristi se FCEDIT,\n" +" zatim EDITOR ili konačno „vi“\n" +" -l izlista popis naredbi (umjesto uređivanja)\n" +" -n popis bez brojeva\n" +" -r popis s obrnutim redoslijedom (najnovija prvo)\n" +"\n" +" Prikladni alias s ovom funkcijom je r='fc -s'. Tako uneseni „r“ izvrši\n" +" ponovno posljednju naredbu, a uneseni „r cc“ izvrši posljednju naredbu\n" +" koja započinje s „cc“.\n" +"\n" +" Završi s kȏdom izvršene naredbe; različito od 0 ako se dogodi greška." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -2963,8 +3378,16 @@ msgid "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." msgstr "" +"Premjesti posao u interaktivni način.\n" +"\n" +" Smjesti posao JOBSPEC u interaktivni način i učini ga\n" +" trenutačnim poslom. Bez dȃnoga JOBSPEC, ljuska rabi svoj pojam\n" +" o trenutačnom poslu.\n" +"\n" +" Završi s kȏdom naredbe smještene u interaktivni način\n" +" ili s neuspjehom ako se dogodi greška." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -2977,8 +3400,16 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"Premjesti poslove u pozadinu.\n" +"\n" +" Smjesti poslove idenificirane sa svakim JOBSPEC u pozadinu, kao da su\n" +" pokrenuti s „&“. Bez dȃnih JOBSPEC, ljuska rabi svoj pojam\n" +" o trenutačnom poslu.\n" +"\n" +" Završi s kȏdom 0 osim ako kontrola nad poslovima nije omogućena\n" +" ili se dogodila greška." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3001,8 +3432,25 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" +"Zapamti ili prikaže lokacije programa.\n" +"\n" +" Odredi i zapamti apsolutnu stazu za svaku naredbu IME. Ako nisu\n" +" dȃni argumenti, prikaže informacije o zapamćenim naredbama.\n" +"\n" +" Opcije:\n" +" -d zaboravi zapamćene lokacije za svako IME\n" +" -l generira izlaz koji se može koristi za ulaz\n" +" -p IME_STAZE rabi IME_STAZE kao kao apsolutnu stazu za IME\n" +" -r zaboravi sve zapamćene lokacije\n" +" -t ispiše zapamćene lokacije za svako IME\n" +" (s prefiksom IME ako je dȃno više IMEna)\n" +" Svako dȃno IME se traži u $PATH i doda se popisu zapamćenih\n" +" naredbi.\n" +"\n" +" Završi s kȏdom 0 osim ako nije pronađeno IME\n" +" ili je dȃna nevaljana opcija." -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3017,14 +3465,28 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " "given." msgstr "" +"Prikaže informacije o ugrađenim (builtin) naredbama.\n" +"\n" +" Prikaže kratke sažetke o ugrađenim naredbama. Ako je specificirani\n" +" UZORAK, pokaže detaljnu pomoć za sve naredbe koje podudare UZORAK,\n" +" inače ispiše popis tema za koje možete potražiti detalje.\n" +"\n" +" Opcije:\n" +" -d ukratko opisano djelovanje naredbe\n" +" -m prikaže uporabu u pseudo manpage formatu\n" +" -s prikaže samo sinopsis uporabe za svaku\n" +" naredbu koja podudara UZORAK\n" +"\n" +" Završi s kȏdom 0 osim ako UZORAK nije pronađen,\n" +" ili je dȃna nevaljana opcija." -#: builtins.c:836 +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3033,7 +3495,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3057,8 +3520,39 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" +"Prikaže ili manipulira povijest naredbi.\n" +"\n" +" Prikaže numerirani popis izvršenih naredbi (povijest); ispred\n" +" modificiranih stavki stoji prefiks „*“. Ako je dȃn argument N,\n" +" ispiše N najmlađih (zadnjih) redaka povijesti.\n" +"\n" +" Opcije:\n" +" -c počisti povijest iz memorije; zaboravi sve izvršene naredbe\n" +" -d POZICIJA izbriše redak povijesti na POZICIJI\n" +"\n" +" -a pripoji trenutačnu povijest „povijesnoj“ datoteci\n" +" -n pripoji sve nepročitane retke povijesne datoteke\n" +" trenutačnom popisu povijesti\n" +" -r pročita i pripoji povijesnu datoteku\n" +" trenutačnom popisu povijesti\n" +" -w trenutačnu povijest zapiše u povijesnu datoteku\n" +"\n" +" -p proširi povijest na svakom ARGUMENTU i prikaže rezultat\n" +" bez spremanja u povijesni popis\n" +" -s Pripoji ARGUMENTe popisu povijesti kao pojedinačne stavke \n" +"\n" +" Kao povijesna datoteka koristi se DATOTEKA ako je dȃna; ako nije dȃna,\n" +" koristi se varijabla HISTFILE (ako ima vrijednost), inače se koristi\n" +" ~/.bash_history.\n" +"\n" +" Ako HISTTIMEFORMAT varijabla postoji i nije nula, njezinu vrijednost\n" +" koristi strftime(3) kao format string za ispis vremenskih oznaka\n" +" povijesnih stavki; inače, vremenske oznake se ne ispisuju.\n" +"\n" +" Završi s statusom 0 osim ako nije dȃna nevaljana opcija\n" +" ili se dogodila greška." -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3081,8 +3575,27 @@ msgid "" " Returns success unless an invalid option is given or an error occurs.\n" " If -x is used, returns the exit status of COMMAND." msgstr "" +"Prikaže status poslova.\n" +"\n" +" Izlista aktivne poslove. JOBSPEC ograniči izlaz na taj posao.\n" +" Bez opcija, prikaže status svih aktivnih poslova.\n" +"\n" +" Opcije:\n" +" -l pokaže i ID-ove procesa uz uobičajene informacije\n" +" -n pokaže samo procese koji su se promijenili od zadnjeg izvješća\n" +" -p pokaže samo ID-ove procesa\n" +" -r ograniči izlaz samo na trenutačno pokrenute poslove\n" +" -s ograniči izlaz samo na zaustavljene poslove\n" +"\n" +" Ako je dȃna opcija -x, „jobs“ zamijeni svaki JOBSPEC\n" +" pronađen u NAREDBI ili u ARGUMENTIMA s odgovarajućim\n" +" ID-om procesne grupe i izvrši NAREDBU s ARGUMENTIMA.\n" +"\n" +" Završi s kȏdom 0 osim ako je dȃna nevaljana opcija ili se dogodila " +"greška.\n" +" Ako je dȃna opcija -x, završi sa izlaznim statusom NAREDBE." -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3098,8 +3611,22 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" +"Ukloni poslove iz trenutačne ljuske.\n" +"\n" +" Ukloni svaki JOBSPEC argument iz tablice aktivnih poslova.\n" +" Bez ikakvih JOBSPEC ljuska rabi svoj pojam o trenutačnom\n" +" poslu.\n" +"\n" +" Opcije:\n" +" -a ukloni sve poslove ako nije dȃni JOBSPEC\n" +" -h označi svaki JOBSPEC tako da se SIGHUP ne šalje\n" +" poslu ako ljuska primi SIGHUP\n" +" -r ukloni samo pokrenute poslove\n" +"\n" +" Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n" +" ili nije dȃni JOBSPEC." -#: builtins.c:918 +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3121,8 +3648,29 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" +"Pošalje signal poslu.\n" +"\n" +" Pošalje signal dȃn u SIGSPEC ili SIGNUM procesima koji su\n" +" identificirani s PID-om ili s JOBSPEC. Ako nije\n" +" dȃn nijedan signal (ni SIGSPEC ni SIGNUM), pošalje se SIGTERM.\n" +"\n" +" Opcije:\n" +" -s IME IME je ime signala koji se šalje\n" +" -n BROJ BROJ je broj signala koji se šalje\n" +" -l izlista imena dostupnih signala; ako su dȃni argumenti iza\n" +" „-l“, to su brojevi signala čija odgovarajuća imena\n" +" treba ispisati\n" +" -L isto kao -l\n" +"\n" +" „kill“ je ugrađena ljuskina naredba iz dva razloga: dopušta vam da se\n" +" koristi ID posla umjesto ID procesa i također vam dopušta ubiti procese\n" +" iako ste dostigli vaše ograničenje broja procesa koje možete kreirati;\n" +" tj. ne morate pokrenuti novi proces da ubijete prekobrojne procese.\n" +"\n" +" Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n" +" ili se dogodila greška." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3166,8 +3714,48 @@ msgid "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" +"Evaluira aritmetičke izraze.\n" +"\n" +" Evaluira svaki ARGUMENT kao aritmetički izraz. Evaluacija se\n" +" obavlja za cijele brojeve fiksne širine bez provjere prelijevanja.\n" +" Ipak, dijeljenje s nulom se detektira i prijavi kao greška.\n" +"\n" +" Popis koji slijedi opisuje operatore s jednakim prioritetom u\n" +" istoj grupi, a grupe su poredane po opadajućemu prioritetu.\n" +"\n" +" var++, var-- post-increment, post-decrement varijable\n" +" ++var, --var pre-increment, pre-decrement varijable\n" +" -, + unarni minus, unarni plus\n" +" !, ~ logička i bitovska negacija\n" +" ** potenciranje\n" +" *, /, % množenje, dijeljenje, ostatak dijeljenja\n" +" +, - zbrajanje, oduzimanje\n" +" <<, >> pomak za bit ulijevo i udesno\n" +" <=, >=, <, > usporedba\n" +" ==, != jednako, nejednako\n" +" & bitovski AND\n" +" ^ bitovski XOR\n" +" | bitovski OR\n" +" && logički AND\n" +" || logički OR\n" +"\n" +" expr ? expr : expr uvjetni izraz\n" +"\n" +" =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |= pridruživanje\n" +"\n" +" Varijable ljuske su dopuštene kao parametri. Ime varijable se zamijeni\n" +" s njezinom vrijednošću (ako treba, pretvori se u cijeli broj).\n" +" Varijable, za upotrebu u izrazima, ne moraju imati atribut cijelog\n" +" broja.\n" +"\n" +" Operatori se evaluiraju prema pravilima prioriteta. Najprije se\n" +" evaluiraju pod-izrazi u zagradama i tako mogu prevagnuti nad gore\n" +" opisanim pravilima prioriteta.\n" +"\n" +" Ako zadnji ARGUMENT evaluira na 0 (nula), „let“ završi s kȏdom 1;\n" +" inače završi s kȏdom 0." -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3188,7 +3776,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3218,8 +3806,49 @@ msgid "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" +"Pročita redak iz standardnoga ulaza i razdijeli ga na polja.\n" +"\n" +" Pročita jedan redak iz standardnoga ulaza (ili dȃnoga deskriptora " +"datoteke\n" +" FD ako je dȃna opcija „-u“) i dodijeli prvu riječ prvom IMEnu, drugu " +"riječ\n" +" drugom IMEnu, i tako dalje; višak riječi dodijeli je zadnjem IMEnu\n" +" Samo znakovi sadržani u varijabli IFS prepoznaju se kao MEĐA\n" +" (razdjelnik riječi). Ako nije dȃno nijedno IME, pročitani redak se\n" +" spremi u varijablu REPLY.\n" +"\n" +" Opcije:\n" +" -a POLJE pročitane riječi dodijeli sekvencijalno indeksima POLJA\n" +" počevši od nule\n" +" -d MEĐA nastavi čitati sve dok ne pročita prvu MEĐU (umjesto LF " +"znaka)\n" +" -e rabi „readline“ za dobaviti redak\n" +" -i TEKST rabi TEKST kao početni tekst za „readline“\n" +" -n BROJ zaustavi čitanje nakon pročitanih ne više od BROJ znakova\n" +" ili nakon LF znaka (umjesto da uvijek čeka na LF znak)\n" +" -N BROJ zaustavi čitanje samo nakon pročitanih ne više od BROJ\n" +" znakova ili nakon EOF znaka ili nakon isteka „t SEKUNDA\n" +" -p PROMPT ispiše string PROMPT kao prompt (bez završnog znaka novog\n" +" retka) prije početka čitanja retka\n" +" -r onemogući maskiranje kódova s obratnom kosom crtom\n" +" -s siguran ulaz — ne odjekuje ulaz na terminal\n" +" -t BROJ nakon isteka BROJ SEKUNDI prestane čekati na ulaz i završi\n" +" s kȏdom većim od 128; zadano, broj sekundi čekanja je\n" +" vrijednost varijable TMOUT; BROJ može biti i realni " +"broj;\n" +" Ako je BROJ = 0, „read“ završi odmah bez da išta čita, a\n" +" samo ako je ulaz dostupni na specificiranom deskriptoru\n" +" datoteke Završi s kȏdom 0\n" +"\n" +" -u FD čita iz deskriptora datoteke FD umjesto iz standardnoga " +"ulaza\n" +"\n" +" Završi s kȏdom 0 osim ako ne naiđe na konac datoteke\n" +" (EOF), ili je isteklo vrijeme čekanja, ili se dogodila greška\n" +" pri dodjeli, ili je specificirani nevaljani deskriptor datoteke\n" +" kao argument opciji „-u“." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3230,8 +3859,16 @@ msgid "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." msgstr "" +"Povrat iz funkcije ljuske.\n" +"\n" +" Učini da funkcija ili pokrenuta skripta završi sa izlaznom vrijednošću\n" +" specificiranom s N. Ako N nije dȃn, završi s kȏdom zadnje naredbe\n" +" izvršene unutar funkcije ili skripte.\n" +"\n" +" Vrati vrijednost N ili 1 ako ljuska ne izvrši\n" +" funkciju ili skriptu." -#: builtins.c:1047 +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3316,8 +3953,88 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" +"Postavi vrijednosti opcija ljuske i položajnih parametara.\n" +"\n" +" Omogući/onemogući svojstva ljuske ili mijenja vrijednosti položajnih\n" +" parametara. Bez opcija ili argumenata „set“ prikaže imena i vrijednosti\n" +" svih definiranih varijabli i funkcija u formatu upotrebljivom kao\n" +" ulaz za postavljanje/poništavanje trenutačno postavljenih varijabli.\n" +" Dostupne su sljedeće opcije („+“ umjesto „-“ isključi dȃnu opciju):\n" +"\n" +" -a automatski eksportira nove ili modificirane varijable i funkcije\n" +" -B izvrši brace expansion, npr. echo a{d,c}e -> ade, ace (zadano)\n" +" -b odmah prijavi prekid posla (ne čeka da završi trenutna naredba)\n" +" -C onemogući da preusmjereni eksport piše preko regularnih datoteka\n" +" -E omogući da bilo koji ERR „trap“ naslijede funkcije ljuske i " +"potomci\n" +" -e završi odmah ako naredba završi s kȏdom različitim od nula\n" +" -f onemogući zamjenske znakove za imena datoteka (isključi " +"„globbing“)\n" +" -H omogući upotrebu znaka „!“ za supstituciju povijesti naredbi\n" +" -h pamti (apslolutne) lokacije izvršenih naredbi (zadano)\n" +" -k smjesti sve argumente dodijeljene varijablama u okolinu\n" +" (a ne samo one koje prethode imenu naredbe)\n" +" -m kontrola nad poslovima je omogućena (zadano)\n" +" -n pročita, ali ne izvrši naredbe („testiranje“)\n" +" -o IME_OPCIJE omogući IME_OPCIJU (v. niže za dugačka imena opcija)\n" +" -P ne razriješi simboličke veze pri izvršavanju naredbi poput „cd“\n" +" koje promjene trenutačni direktorij\n" +" -p uključi privilegirani mȏd: datoteke BASH_ENV i ENV se ignoriraju,\n" +" funkcije ljuske se ne importiraju iz okoline, a ignoriraju se i\n" +" sve SHELLOPTS; taj mȏd se automatski aktivira kȁd god se realni\n" +" i efektivni UID i GID ne podudaraju. Isključivanje ove opcije\n" +" učini da je efektivni UID i GID isti kao i realni UID i GID.\n" +" -T DEBUG i RETURN „trap“ naslijede funkcije ljuske i potomci\n" +" -t završi nakon čitanja i izvršenja jedne naredbe\n" +" -u nepostojeće varijable tretira kao grešku kȁd supstituira\n" +" -v ispisuju ulaz (odjekuje ih) istovremeno s čitanjem\n" +" -x ispisuje naredbe s argumentima istovremeno s izvršavanjem\n" +" -- argumenti koji slijede su položajni parametri; ako ih nema,\n" +" postojeći položajni argumenti se brišu (uklanjaju se)\n" +" - isključi opcije -v i -x; argumenti koji slijede su položajni\n" +" parametri; ali ako ih nema, postojeći položajni argumenti\n" +" se ne brišu (ostaju)\n" +"\n" +" Opcije se također mogu koristiti pri pokretanju ljuske. Postojeće\n" +" stanje opcija može se naći u $-. Za eventualne dodatne argumente iz\n" +" „set“ uzima se da su položajni parametri i dodjeljuje se, po redu, na\n" +" $1, $2, ... $N.\n" +"\n" +" Dugački nazivi koji se koriste s opcijom -o (ili +o)\n" +" allexport isto kao -a\n" +" braceexpand isto kao -B (brace ekspanzija, npr. echo a{d,c}e -> ade, " +"ace\n" +" emacs za uređivanje redaka koristi sučelje u „emacs“ stilu\n" +" errexit isto kao -e\n" +" errtrace isto kao -E\n" +" functrace isto kao -T\n" +" hashall isto kao -h\n" +" histexpand isto kao -H\n" +" history omogući naredbu „history“\n" +" ignoreeof ignorira Ctrl-D; ne završi (ne iziđe iz) ljusku na EOF\n" +" interactive-comments dopusti komentiranje u interaktivnim naredbama\n" +" keyword isto kao -k\n" +" monitor isto kao -m\n" +" noclobber isto kao -C\n" +" noexec isto kao -n\n" +" noglob isto kao -f\n" +" nolog (prepoznata, ali se ignorira)\n" +" notify isto kao -b\n" +" nounset isto kao -u\n" +" onecmd isto kao -t\n" +" physical isto kao -P\n" +" pipefail cjevovod vrati vrijednost izlaznog statusa zadnje " +"neuspješne\n" +" naredbe ili 0 ako su svi poslovi uspješno završeni\n" +" posix striktno poštuje POSIX standard\n" +" privileged isto kao -p\n" +" verbose isto kao -v\n" +" vi za uređivanje redaka koristi sučelje u „vi“ stilu\n" +" xtrace isto kao -x\n" +"\n" +" Završi s kȏdom 0 osim ako je dȃna nevaljana opcija." -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3338,8 +4055,24 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" +"Ukloni vrijednosti i atribute varijabli i funkcija ljuske.\n" +"\n" +" Za svako IME ukloni odgovarajuću varijablu ili funkciju\n" +"\n" +" Opcije:\n" +" -f tretira svako IME kao funkciju ljuske\n" +" -v tretira svako IME kao varijablu ljuske\n" +" -n tretira svako IME kao referenciju na neki objekt i ukloni\n" +" samu varijablu IME umjesto referiranog objekta\n" +"\n" +" Bez dȃnih opcija, „unset“ prvo pokuša ukloniti varijablu, a ako to\n" +" ne uspije, onda pokuša ukloniti funkciju. Neke varijable nije moguće\n" +" ukloniti; pogledajte „readonly.\n" +"\n" +" Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n" +" ili IME je „samo-za-čitanje“." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3357,8 +4090,23 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" +"Postavi eksportni atribut na varijable ljuske.\n" +"\n" +" Označi automatski svako dȃno IME za eksport u okolinu za naknadno\n" +" izvršavanje naredbi. Ako je dȃna VRIJEDNOST, dodijeli im VRIJEDNOST\n" +" prije eksportiranja.\n" +"\n" +" Opcije:\n" +" -f dȃna IMEna se odnose samo na funkcije\n" +" -n ukloni eksportni atribut iz svakoga IMEna \n" +" -p izlista popis svih eksportiranih varijabli i funkcija\n" +"\n" +" Argument „--“ spriječi daljnje procesiranje opcija.\n" +"\n" +" Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n" +" ili dȃno IME nije valjano." -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3378,8 +4126,26 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" +"Označi varijable ljuske kao nepromjenjive.\n" +"\n" +" Označi svako IME kao nepromjenjivo (readonly), tako da se vrijednosti\n" +" ovih IMEna ne može promijeniti kasnijim operacijama. Ako je dȃna\n" +" VRIJEDNOST, prvo mu dodijeli VRIJEDNOST, a zatim ga označi " +"nepromjenjivim.\n" +"\n" +" Opcije:\n" +" -a svako IME se odnosi na varijable indeksiranoga polja\n" +" -A svako IME se odnosi na varijable asocijativnoga polja\n" +" -f svako IME se odnosi na funkcije ljuske\n" +" -p prikaže popis svih nepromjenjivih varijabli ili funkcija\n" +" ovisno o opciji „-f“ (je li ili nije dȃna).\n" +"\n" +" Argument „--“ onemogući daljnje procesiranje opcija.\n" +"\n" +" Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n" +" ili je IME nevaljano." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -3389,8 +4155,14 @@ msgid "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." msgstr "" +"Pomakne položajne parametre.\n" +"\n" +" Preimenuje položajne parametre $N+1,$N+2,... u $1,$2,...\n" +" Ako nije dȃni N, uzima se da je N = 1.\n" +"\n" +" Završi s kȏdom 0 osim ako je N negativni ili veći od $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3403,8 +4175,17 @@ msgid "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." msgstr "" +"Izvrši naredbe iz datoteke u trenutačnoj ljusci.\n" +"\n" +" Čita i izvrši naredbe iz DATOTEKE u trenutačnoj ljusci.\n" +" Direktorij s DATOTEKOM traži se po stazama sadržanima u varijabli\n" +" PATH. Ako su dȃni ikoji ARGUMENTI, oni postaju položajni parametri\n" +" tijekom izvršavanja DATOTEKE.\n" +"\n" +" Završi s kȏdom zadnje izvršene naredbe iz DATOTEKE,\n" +" ili sa statusom 1 ako se DATOTEKA ne može pročitati." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -3417,8 +4198,18 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"Obustavi rad ljuske.\n" +"\n" +" Obustavi rad u ovoj ljusci sve dok ne primi SIGCONT signal.\n" +" Ako nije prisiljena, rad prijavne ljuske se ne može obustaviti.\n" +"\n" +" Opcije:\n" +" -f prisili obustavu, čak i ako je to prijavna ljuska\n" +"\n" +" Završi s kȏdom 0 osim ako kontrola nad poslovima nije omogućena\n" +" ili se dogodila greška." -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3500,16 +4291,90 @@ msgid "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." msgstr "" +"Evaluira uvjetni izraz.\n" +"\n" +" Evaluira dȃni IZRAZ; ovisno o rezultatu evaluacije, završi sa\n" +" statusom 0 (istina), ili 1 (neistina, laž). Izrazi mogu biti unarni\n" +" ili binarni. Unarni izrazi se često koriste za ispitivanje statusa\n" +" datoteke. Također postoje operatori za usporedbu stringova i brojeva.\n" +"\n" +" Ponašanje od „test“ ovisi o broju argumenata. Potražite u „bash“\n" +" uputama detalje za uporabu.\n" +"\n" +" Operatori za datoteke:\n" +" -a DATOTEKA istina ako datoteka postoji\n" +" -b DATOTEKA istina ako je datoteka blok uređaj\n" +" -c DATOTEKA istina ako je datoteka znakovni uređaj\n" +" -d DATOTEKA istina ako je datoteka direktorij\n" +" -e DATOTEKA istina ako datoteka postoji\n" +" -f DATOTEKA istina ako je datoteka regularna datoteka\n" +" -G DATOTEKA istina ako je datoteka efektivno vlasništvo vaše " +"grupe\n" +" -g DATOTEKA istina ako je datoteka SETGUID\n" +" -h DATOTEKA istina ako je datoteka simbolička veza\n" +" -k DATOTEKA istina ako datoteka ima postavljeni \"sticky\" " +"bit\n" +" -L DATOTEKA istina ako je datoteka simbolička veza\n" +" -N DATOTEKA istina ako se datoteka promijenila od zadnjeg " +"čitanja\n" +" -O DATOTEKA istina ako je datoteka efektivno vaše vlasništvo\n" +" -p DATOTEKA istina ako je datoteka imenovana cijev\n" +" -r DATOTEKA istina ako vi možete čitati datoteku\n" +" -S DATOTEKA istina ako je datoteka utičnica\n" +" -s DATOTEKA istina ako datoteka nije prazna\n" +" -t DESKRIPTOR istina ako je deskriptor datoteke otvoren u " +"terminalu\n" +" -u DATOTEKA istina ako je datoteka SETUID\n" +" -w DATOTEKA istina ako vi možete pisati datoteku\n" +" -x DATOTEKA istina ako vi možete izvršiti datoteku\n" +"\n" +" DTEKA1 -nt DTEKA2 istina ako je prva datoteka promijenjena\n" +" kasnije od druge\n" +" DTEKA1 -ot DTEKA2 istina ako je prva datoteka promijenjena\n" +" ranije od druge\n" +" DTEKA1 -ef DTEKA2 istina ako je prva datoteka čvrsta veza na drugu\n" +"\n" +" Operatori za stringove:\n" +" -z STRING istina ako je string prazni\n" +" -n STRING istina ako string nije prazni\n" +" STRING istina ako string nije prazni\n" +" STRING1 = STRING2 istina ako su stringovi jednaki\n" +" STRING1 != STRING2 istina ako stringovi nisu jednaki\n" +" STRING1 < STRING2 istina ako se leksikografski prvi string\n" +" razvrsta ispred drugoga\n" +" STRING1 > STRING2 istina ako se leksikografski prvi string\n" +" razvrsta iza drugoga\n" +"\n" +" Ostali operatori:\n" +" -o OPCIJA istina ako je ova OPCIJA ljuske omogućena\n" +" -v VARIJABLA istina ako ova VARIJABLA ima vrijednost\n" +" -R VARIJABLA istina ako je ova VARIJABLA referencija " +"(nameref) \n" +" ! IZRAZ istina ako IZRAZ neistiniti\n" +" IZRAZ1 -a IZRAZ2 istina ako su oba izraza istinita\n" +" IZRAZ1 -o IZRAZ2 laž ako su oba izraza neistinita\n" +" ARG1 OP ARG2 istina ako je aritmetika ispravna; operator OP je\n" +" jedan od: -eq, -ne, -lt, -le, -gt, ili -ge;\n" +" koji znače: jednako, nejednako, manje od, " +"manje,\n" +" ili jednako, veće od, veće ili jednako.\n" +"\n" +" Završi s kȏdom 0 ako je IZRAZ istiniti, 1 ako je IZRAZ neistiniti,\n" +" ili 2 ako je dȃn nevaljani argument." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" " This is a synonym for the \"test\" builtin, but the last argument must\n" " be a literal `]', to match the opening `['." msgstr "" +"Provjeri uvjetni izraz.\n" +"\n" +" To je sinonim za ugrađenu funkciju „test“, ali zadnji argument\n" +" mora biti zagrada „]“ kao par zagradi „[“ na početku." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -3520,8 +4385,14 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" +"Prikaže potrošnju vremena procesa.\n" +" \n" +" Prikaže ukupno potrošeno vrijeme korisnikom i sustavom; prvo, vrijeme\n" +" potrošeno samom ljuskom, a zatim svim potomcima pokrenutih ljuskom.\n" +"\n" +" Završi uvijek s kȏdom 0." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -3564,8 +4435,40 @@ msgid "" " Returns success unless a SIGSPEC is invalid or an invalid option is " "given." msgstr "" +"Prikupljanje (hvatanje) signala i drugih događaja.\n" +"\n" +" Definira i aktivira postupke rukovanja koji se pokrenu kȁd ljuska\n" +" primi signal ili se dogodi neki drugi slučaj.\n" +"\n" +" ARGUMENT je naredba koja se pročita i izvrši kȁd ljuska primi jedan od\n" +" specificiranih signala (SIGNAL_SPEC). Ako nema ARGUMENTA (i dȃn je samo\n" +" jedan signal), ili ARGUMENT je „-“, specificirani signal zadobije svoju\n" +" originalnu vrijednost (koju je imao na startu ove ljuske). Ako je " +"ARGUMENT\n" +" prazni string, ljuska i njezini potomci ignoriraju svaki SIGNAL_SPEC.\n" +"\n" +" Ako je SIGNAL_SPEC 0 ili EXIT, ARGUMENT se izvrši kȁd zatvorite\n" +" (exit) ljusku. Ako je SIGNAL_SPEC DEBUG, ARGUMENT se izvrši prije\n" +" svake jednostavne naredbe. Ako je SIGNAL_SPEC RETURN, ARGUMENT se\n" +" izvrši svaki put kȁd funkcija ljuske ili skripta izvršena s . ili\n" +" „ugrađeni source“ završi izvršavanje. SIGNAL_SPEC ERR znači da se\n" +" ARGUMENT izvrši nakon neuspješne naredbe koja bi uzrokovala da ljuska\n" +" završi (exit) kȁd je opcija „-e“ omogućena.\n" +"\n" +" Bez argumenta, „trap“ izlista popis koji pokaže asocijaciju\n" +" između naredbi i signala.\n" +"\n" +" Opcije:\n" +" -l popis imena signala i njihov odgovarajući broj\n" +" -p pokaže koja naredba je povezana na svaki dȃni signal\n" +"\n" +" Svaki je SIGNAL_SPEC ili ime signala iz ili broj signala.\n" +" Signal se može poslati ljusci s „kill -signal $$“.\n" +"\n" +" Završi s kȏdom 0 osim ako SIGNAL_SPEC nije valjani\n" +" ili je dȃna nevaljana opcija." -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -3594,8 +4497,29 @@ msgid "" " Returns success if all of the NAMEs are found; fails if any are not " "found." msgstr "" +"Informacije o tipu naredbe.\n" +"\n" +" Za svako dȃno IME pokaže kako će se interpretirati\n" +" ako se koristi kao naredba.\n" +"\n" +" Opcije:\n" +" -a pokaže sve lokacije koje sadrže izvršnu datoteku IME; uključuje i\n" +" lokacije s aliasima, ugrađenim naredbama i funkcijama, ali onda\n" +" i samo onda ako nije dȃna opcija „-p“\n" +" -f ignorira funkcije kao da nisu definirane\n" +" -P traži dȃno IME po stazama definiranim u PATH (također ako je IME\n" +" alias, ugrađena naredba (builtin) ili funkcija)\n" +" i ispiše puni naziv datoteke na disku koja bi se izvršila\n" +" -p ispiše puni naziv datoteke na disku koja bi se izvršila ili\n" +" ništa ako je IME alias, ugrađena naredba (builtin) ili funkcija\n" +" -t ispiše samo tip navedenih IMEna: „alias“, „builtin“, „file“,\n" +" „function“ ili „keyword“, ovisno o tome je li riječ o aliasu,\n" +" ugrađenoj funkciji (builtin), datoteci na disku, definiranoj\n" +" funkciji ili ključnoj riječi; ili ništa, ako je ime nepoznato\n" +"\n" +" Završi s kȏdom 0 ako se pronađu sva IMEna, inače s 1." -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -3643,8 +4567,53 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Upravlja i modificira ograničenja ljuske.\n" +"\n" +" Omogući upravljanje s resursima koji su dostupni ovoj ljusci i\n" +" procesima koje kreira -- na sustavima koji to dopuštaju.\n" +"\n" +" Opcije:\n" +" -S rabi „mekano“ (soft) ograničenje resursa\n" +" -H rabi „tvrdo“ (hard) ograničenje resursa\n" +" -a popis svih trenutačnih ograničenja\n" +" -b maks. veličina međuspremnika utičnice\n" +" -c maks. veličina „core“ datoteka (u kB)\n" +" -d maks. veličina segmenta s procesnim podacima (in kB)\n" +" -e maks. prioritet raspoređivanja („nice“ vrijednost)\n" +" -f maks. veličina datoteka ljuska i njeni potomci mogu zapisati\n" +" -i maks. broj signala koji može biti na čekanju\n" +" -l maks. veličina koju proces može zaključati u memoriju\n" +" -k maks. broj rezerviranih/dodijeljenih „kqueues“ za taj proces\n" +" -m maks. iznos fizičke memorije procesa (in kB)\n" +" -n maks. broj otvorenih deskriptora datoteka\n" +" -p maks. veličina međuspremnika cijevi\n" +" -q maks. broj bajtova za red POSIX poruka\n" +" -r maks. prioritet raspoređivanja u realnom vremenu\n" +" -s maks. veličina snopa (stack) (u kB)\n" +" -t maks. iznos CPU vremena (u sekundama)\n" +" -u maks. broj korisničkih procesa\n" +" -v maks. veličina virtualne memorije (u kB)\n" +" -x maks. broj datotečnih brava (lokota, locks)\n" +" -P maks. broj pseudo terminala\n" +" -T maks. broj dretvi\n" +"\n" +" Nisu sve opisane opcije dostupne na svim platformama.\n" +"\n" +" Ako je specificirani, LIMIT postane nova vrijednost za specificirani\n" +" resurs, inače se prikažu trenutačne vrijednosti. Specijalne " +"vrijednosti,\n" +" „soft“, „hard“, i „unlimited“ su trenutačni soft limit, trenutačni hard\n" +" limit i unlimited. Ako nijedna opcija nije specificirana, podrazumijeva\n" +" se da je aktivna „-f“ opcija.\n" +"\n" +" Vrijednosti su višekratnik od 1024 bajta, osim za „-t“ koji je\n" +" u sekundama, „-p“ koji je višekratnik od 512 bajta i „-u“ je apsolutni\n" +" broj procesa.\n" +"\n" +" Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n" +" ili se dogodila greška." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -3661,8 +4630,23 @@ msgid "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" +"Prikaže ili postavi masku prilikom kreiranje datoteke.\n" +"\n" +" Postavi masku datoteke koju kreira korisnik na MODE.\n" +" Ako MODE nije dȃn, ispiše trenutačnu vrijednost maske.\n" +"\n" +" Ako MODE počinje sa znamenkom, interpretira se kao oktalni broj;\n" +" inače to je simbolički mode string kakav prihvaća chmod(1).\n" +"\n" +" Opcije:\n" +" -p ako nije dȃn MODE, generira izlaz u formatu\n" +" koji se može iskoristiti kao ulaz\n" +" -S napravi simbolički izlaz; inače izlaz je oktalni broj\n" +"\n" +" Završi s kȏdom 0 osim ako MODE nije valjan\n" +" ili je dȃna nevaljana opcija." -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3670,19 +4654,37 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" +"Čeka da posao završi i vrati njegov izlazni status.\n" +"\n" +" Čeka na svaki posao identificirani s ID — to jest indikatorom posla ili\n" +" indikatorom procesa — i izvijesti njegov završni status. Ako nije dȃn\n" +" ID, čeka na sve trenutačno aktivne potomke, a završni status je nula.\n" +" Ako je ID specifikacija posla, čeka na sve procese u cjevovodu tog " +"posla.\n" +"\n" +" Ako je dȃna opcija „-n“, čeka na završetak sljedećeg posla i vrati\n" +" njegov izlazni status.\n" +"\n" +" Ako je dȃna opcija „-f“ i kontrola nad poslovima je omogućena, čeka dok\n" +" specificirani ID ne završi, umjesto da promijeni status.\n" +"\n" +" Završi s kȏdom zadnjeg ID-a, a s kȏdom 1 ako je ID nevaljani\n" +" ili je dȃna nevaljana opcija." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3696,8 +4698,16 @@ msgid "" "invalid\n" " option is given." msgstr "" +"Čeka da proces završi i vrati njegov izlazni status.\n" +"\n" +" Čeka na svaki proces identificirani s PID i izvijesti njegov završni\n" +" status. Ako nije dȃn PID, čeka na sve trenutačno aktivne potomke,\n" +" a završni status je nula. PID mora biti proces ID.\n" +"\n" +" Završi s kȏdom zadnjeg PID-a, s kȏdom 1 ako je PID nevaljani,\n" +" ili s 2 ako je dȃna nevaljana opcija." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3709,8 +4719,17 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Izvrši naredbe za svakoga člana u popisu.\n" +"\n" +" Petlja „for“ izvrši sekvenciju naredbi za svakoga člana u popisu " +"stavki.\n" +" Ako nema operanda „in RIJEČIMA...;“, podrazumijeva se operand\n" +" „in \"$@\"“. Svakom elementu u RIJEČIMA, IME se postavi na taj element\n" +" i izvrše se NAREDBE.\n" +"\n" +" Završi s kȏdom zadnje izvršene naredbe." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -3726,8 +4745,18 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Aritmetička „for“ petlja.\n" +"\n" +" Isto kao:\n" +"\n" +" (( EXP1 )); while (( EXP2 )); do NAREDBE; (( EXP3 )); done\n" +"\n" +" EXP1, EXP2, EXP3 su aritmetički izrazi. Ako bilo koji izraz nije\n" +" dȃn, uzima se da mu je vrijednost jednaka 1.\n" +"\n" +" Završi s kȏdom zadnje izvršene naredbe." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3746,8 +4775,26 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Pripremi izbornik i izvrši izabrane naredbe.\n" +"\n" +" Proširenjem RIJEČI, „select“ generira i prikaže izbornik na standardnom\n" +" izlazu za greške s brojem ispred svake riječi. Ako operand „u RIJEČIMA“\n" +" nije dȃn, podrazumijeva se operand „in \"$@\"“.\n" +" Nakon izbornika prikaže se PS3 prompt i redak se čita iz standardnoga\n" +" ulaza; ako se redak sastoji od broja koji odgovara jednoj od prikazanih\n" +" riječi, onda varijabla IME dobije vrijednost te riječi; ako je redak\n" +" prazan, RIJEČI i prompt se ponovno prikažu; ako se pročita EOF „select“\n" +" naredba završi s poslom. Bilo koja druga vrijednost koja se pročita " +"učini\n" +" da se IME isprazni (nulira). Pročitani redak spremi se u varijablu " +"REPLY.\n" +" NAREDBE se izvršavaju nakon svakog izbora, tako dugo dok „break“ " +"naredba\n" +" ne prekine posao.\n" +"\n" +" Završi s kȏdom zadnje izvršene naredbe." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3762,8 +4809,19 @@ msgid "" " Exit Status:\n" " The return status is the return status of PIPELINE." msgstr "" +"Prikaže vrijeme potrošeno cjevovodom.\n" +"\n" +" Nakon završetka izvršavanja CJEVOVODA prikaže sažetak statistike\n" +" trošenja vremena: ukupno potrošeno vrijeme, CPU vrijeme potrošeno\n" +" korisnikom i CPU vrijeme potrošeno sustavom za izvršavanje naredbi.\n" +"\n" +" Izlazni format se može prilagoditi s varijablom okoline TIMEFORMAT.\n" +" Opcija „-p“ ignorira TIMEFORMAT i ispiše izlaz u prenosivom POSIX\n" +" formatu.\n" +"\n" +" Završi s izlaznim statusom CJEVOVODA." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3773,8 +4831,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Izvrši naredbe ovisno o slaganju s uzorkom.\n" +"\n" +" Izvrši onu NAREDBU koja odgovara prvom UZORKU koji se podudara s " +"RIJEČI.\n" +" Znak „|“ rabi se za razdvajanje više uzoraka.\n" +"\n" +" Završi s kȏdom zadnje izvršene naredbe." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3794,8 +4859,18 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Izvršavanje uvjetovanih naredbi.\n" +"\n" +" Prvo izvrši zadatke iza „if“; ako „if“ završi s kȏdom nula, izvrši\n" +" zadatke iza prvog „then“; inače, izvrše se zadatci iza sljedećeg „elif“\n" +" (ako postoji), ili „else“ (ako postoji). Ako „elif“ završi s kȏdom\n" +" nula, izvrše se zadatci iza odgovarajućih „then“. Ako više nema „elif“,\n" +" ili „else“, ili nakon izvršenja zadataka iza „then“, „if“ naredba " +"završi.\n" +"\n" +" „if“ završi s kȏdom zadnjeg izvršenoga zadatka." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3805,8 +4880,14 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Izvršava naredbe tako dugo dok je test uspješan.\n" +"\n" +" Izvršava sukcesivne NAREDBE tako dugo dok zadnja naredba u\n" +" „while“ NAREDBI Završi s kȏdom 0.\n" +"\n" +" Završi s kȏdom zadnje izvršene naredbe." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3816,8 +4897,14 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Izvršava naredbe tako dugo dok test ne uspije.\n" +"\n" +" Izvršava sukcesivne NAREDBE tako dugo dok zadnja naredba u\n" +" „until“ NAREDBAMA završi s kȏdom različitim od nule.\n" +"\n" +" Završi s kȏdom zadnje izvršene naredbe." -#: builtins.c:1653 +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3829,8 +4916,16 @@ msgid "" " Exit Status:\n" " The coproc command returns an exit status of 0." msgstr "" +"Kreira coprocess (suproces) s imenom IME.\n" +"\n" +" Izvrši NAREDBU asinkrono, sa standardnim izlazom i standardnim ulazom\n" +" naredbe spojene preko cijevi na deskriptore datoteke dodijeljene\n" +" indeksima 0 i 1 varijable polja IME u izvršnoj ljusci.\n" +" Zadano, IME je \"COPROC\".\n" +"\n" +" Naredba coproc završi s kȏdom 0." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -3843,8 +4938,16 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is readonly." msgstr "" +"Definira funkciju ljuske.\n" +"\n" +" Kreira funkciju ljuske nazvanu IME. Kȁd se pokrene kao jednostavna\n" +" naredba, IME izvrši NAREDBE unutar konteksta ljuske pozivanja.\n" +" Kȁd se IME pozove, argumenti se proslijede funkciji kao $0...$N,\n" +" a ime funkcije je $FUNCNAME.\n" +"\n" +" Završi s kȏdom 0 osim ako je IME readonly (samo-za-čitanje)." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -3854,8 +4957,14 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Grupira naredbe u jednu cjelinu.\n" +"\n" +" Izvrši skup naredbi kao grupu. To je jedan od načina za preusmjeravanje\n" +" čitavog skupa naredbi\n" +"\n" +" Završi s kȏdom zadnje izvršene naredbe." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -3868,8 +4977,16 @@ msgid "" " Exit Status:\n" " Returns the status of the resumed job." msgstr "" +"Nastavi posao u interaktivnom načinu.\n" +"\n" +" Nastavi dȃni obustavljeni ili pozadinski posao u interaktivnom mȏdu\n" +" To je ekvivalentno naredbi „fg“. JOBSPEC može specificirati\n" +" ili ime posla ili broj posla. Ako „&“ slijedi iza JOBSPEC\n" +" onda posao prelazi u pozadinu. To je ekvivalentno naredbi „bg“\n" +"\n" +" Završi s kȏdom nastavljenoga posla." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3879,8 +4996,15 @@ msgid "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" +"Izračuna aritmetički izraz.\n" +"\n" +" IZRAZ se izračuna po aritmetičkim pravilima.\n" +" To je isto kao \"let IZRAZ\".\n" +"\n" +" Završi s kȏdom 1 ako je rezultat IZRAZA jednaki 0;\n" +" inače završi s kȏdom 0." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -3907,8 +5031,30 @@ msgid "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." msgstr "" +"Izvrši uvjetnu naredbu.\n" +"\n" +" Evaluira dani uvjetni IZRAZ; ovisno o rezultatu evaluacije završi sa\n" +" statusom 0 (istina) ili 1 (neistina, laž). Izrazi koriste iste osnovne\n" +" komponente koje koristi ugrađena naredba (builtin) „test“, i mogu se\n" +" kombinirati sa sljedećim operatorima:\n" +"\n" +" ( IZRAZ ) vrati vrijednost danoga IZRAZa\n" +" ! IZRAZ istina ako je IZRAZ istina, inače laž\n" +" IZRAZ1 && IZRAZ2 istina ako su oba izraza istinita, inače laž\n" +" IZRAZ1 || IZRAZ2 laž ako su oba izraza neistinita, inače istina\n" +"\n" +" Ako se rabe operatori „==“ ili „!=“, onda se string desno od operatora\n" +" smatra za uzorak i provodi se podudaranje uzoraka.\n" +" Ako se rabi operator „=~“, onda se string na desno od operatora " +"podudara\n" +" kao regularni izraz.\n" +"\n" +" Operatori „&&“ i „|| ne evaluiraju IZRAZ2 ako je IZRAZ1 dovoljan za\n" +" određivanje konačnog rezurlata.\n" +"\n" +" Završi s kȏdom 0 ili 1 ovisno o IZRAZU." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3961,8 +5107,57 @@ msgid "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" msgstr "" - -#: builtins.c:1803 +"Značenje i upotreba standardnih varijabli ljuske.\n" +"\n" +" U nastavku je opis brojnih varijabli od kojih neke sadrže popis\n" +" elemenata. U svakom od tih popisa elementi su razdvojeni dvotočkama.\n" +"\n" +" BASH_VERSION inačica ovog „bash“ programa\n" +" CDPATH popis direktorija u kojima se traži direktorij\n" +" kȁd argument od „cd“ (direktorij) nije u\n" +" trenutačnom radnom direktoriju\n" +" GLOBIGNORE popis uzoraka koji opisuju imena datoteka koje\n" +" se ignoriraju prilikom ekspanzije imena staza\n" +" HISTFILE ime datoteke koja sadrži povijest vaših naredbi\n" +" HISTFILESIZE maksimalni broj redaka datoteke s povijesti naredba\n" +" HISTIGNORE popis uzoraka koji opisuju naredbe koje ne treba zapisati\n" +" u datoteku koja sadrži povijest vaših naredbi\n" +" HISTSIZE maksimalni broj redaka koje aktualna ljuska može " +"dosegnuti\n" +" HOME puni naziv staze do vašega osobnoga direktorija\n" +" HOSTNAME ime računala na kojem se izvršava „bash“\n" +" HOSTTYPE tip CPU-a na kojem se izvršava „bash“\n" +" IGNOREEOF broj ignoriranih Ctrl-D (EOF) prije zatvaranja ljuske\n" +" MACHTYPE tip računala na kojem se izvršava „bash“\n" +" MAILCHECK kako često (u sekundama) „bash“ gleda ima li nove pošte\n" +" MAILPATH popis datoteka koje „bash“ provjeri za novu poštu\n" +" OSTYPE distribucija Unix-a no kojem se izvršava ovaj „bash“\n" +" PATH popis direktorija u kojima se traže naredbe\n" +" PROMPT_COMMAND naredba koja se izvrši prije ispisa primarnoga prompta\n" +" PS1 string koji opisuje primarni prompt\n" +" PS2 string koji opisuje sekundarni prompt (zadano, „>“)\n" +" PWD puni naziv staze trenutačnoga radnoga direktorija\n" +" SHELLOPTS popis svih omogućenih opcija ljuske\n" +" TERM naziv vrste trenutačnoga terminala\n" +" TIMEFORMAT pravilo za format ispisa „time“ statistika\n" +" auto_resume ako nije prazan, učini da se naredbena riječ na " +"naredbenom\n" +" retku prvo potraži na popisu obustavljenih poslova,\n" +" i ako se tamo pronađe, taj se posao premjesti u\n" +" interaktivni mȏd; vrijednost „exact“ znači da naredbena\n" +" riječ mora strikno podudariti naredbu iz popisa;\n" +" vrijednost „substring“ znači da naredbena riječ mora\n" +" podudariti podstring naredbe iz popisa; bilo koja druga\n" +" vrijednost znači da naredbena riječ mora biti prefiks\n" +" obustavljene naredbe\n" +" histchars znakovi koje upravljaju s proširenjem i brzom " +"supstitucijom\n" +" povijesti; prvi znak je znak za „supstituciju\n" +" povijesti“, obično „!“; drugi znak je „znak brze\n" +" supstitucije“, obično „^“; treći znak je „komentar\n" +" povijesti“, obično „#“.\n" + +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -3992,8 +5187,34 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"Doda direktorije na snop.\n" +"\n" +" Doda direktorij na vrh snopa direktorija ili zarotira snop tako da\n" +" učini novi vrh snopa trenutačnim radnim direktorijem. Bez argumenata\n" +" razmijeni pozicije dva direktorija na vrhu snopa.\n" +"\n" +" Opcije:\n" +" -n izostavi uobičajenu promjenu direktorija kȁd dodaje\n" +" direktorije u snop, odnosno samo manipulira sa snopom\n" +"\n" +" Argumenti:\n" +" DIREKTORIJ Doda DIREKTORIJ na vrh snopa direktorija i\n" +" učini ga novim aktualnim radnim direktorijem.\n" +" +N Zarotira snop tako, da N-ti direktorij u snopu (brojeći od nule " +"s\n" +" lijeve strane popisa prikazanoga s „dirs“) postane novi vrh " +"snopa.\n" +" -N Zarotira snop tako, da N-ti direktorij u snopu (brojeći od nule " +"s\n" +" desne strane popisa prikazanoga s „dirs“) postane novi vrh " +"snopa.\n" +"\n" +" Naredba „dirs“ prikaže trenutačni sadržaj snopa direktorija.\n" +"\n" +" Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n" +" ili nije uspjela promjena direktorija." -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -4019,9 +5240,29 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"Ukloni direktorije iz snopa.\n" +"\n" +" Ukloni direktorije iz snopa direktorija. Bez argumenata, ukloni\n" +" direktorij na vrhu snopa i premjesti se u novi najviši direktorij.\n" +"\n" +" Opcije:\n" +" -n izostavi uobičajenu promjenu direktorija kȁd uklanja\n" +" direktorije iz snopa, odnosno samo manipulira sa snopom\n" +"\n" +" Argumenti:\n" +" +N Ukloni da N-ti direktorij iz snopa brojeći od nule s lijeve\n" +" strane popisa prikazanoga s „dirs“. Na primjer: „popd +0“\n" +" ukloni prvi, a „popd +1“ ukloni drugi direktorij.\n" +" +N Ukloni da N-ti direktorij iz snopa brojeći od nule s desne\n" +" strane popisa prikazanoga s „dirs“. Na primjer.: „popd -0“\n" +" ukloni zadnji, a „popd -1“ ukloni predzadnji direktorij.\n" +"\n" +" Naredba „dirs“ prikaže trenutačni sadržaj snopa direktorija.\n" +"\n" +" Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n" +" ili nije uspjela promjena direktorija." -#: builtins.c:1867 -#, fuzzy +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -4049,35 +5290,35 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -"Prikaži popis trenutno zapamćenih direktorija. Direktoriji se dodaju\n" -" na popis naredbom „pushd”, kroz popis se možete vraćati naredbom\n" -" „popd”.\n" +"Ispiše sadržaj snopa direktorija.\n" +"\n" +" Pokaže popis trenutačno zapamćenih direktorija. Direktoriji se unose\n" +" na popis pomoću naredbe „pushd“, a s naredbom „popd“ se uklanjaju.\n" " \n" " Opcije:\n" -" -c\točisti stog direktorija uklanjanjem svih elemenata\n" -" -l\tne ispisuj tildom prefiksirane inačice direktorija\n" -" \trelativno u odnosu na početni direktorij\n" -" -p\tispiši stog direktorija jednu stavku po retku\n" -" -v\tispiši stog direktorija jednu stavku po retku\n" -" \tprefiksiranu položajem u stogu\n" -" \n" +" -c počisti snop direktorija brisanjem svih elemenata\n" +" -l ispiše apsolutne staze direktorija u odnosu na osobni\n" +" direktorij (ne skraćuje staze upotrebom tilde)\n" +" -p ispiše sadržaj snopa po jedan direktorij po retku\n" +" -v kao „-p“, ali s prefiksom koji pokazuje\n" +" poziciju direktorija snopu\n" +"\n" " Argumenti:\n" -" +N\tPrikazuje N-tu stavku s lijeve strane popisa koju prikazuje " -"naredba\n" -" \t„dirs” pozvana bez opcija, počevši od nule.\n" -" \n" -" -N\tPrikazuje N-tu stavku s desne strane popisa koju prikazuje " -"naredba\n" -"\t„dirs” pozvana bez opcija, počevši od nule." +" +N Pokaže N-ti direktorij iz snopa, brojeći od od nule s\n" +" lijeve strane popisa kȁd se „dirs“ pokrene bez opcija.\n" +" -N Pokaže N-ti direktorij iz snopa, brojeći od nule s\n" +" desne strane popisa kȁd se „dirs“ pokrene bez opcija.\n" +"\n" +" Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n" +" ili se dogodila greška." -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4090,8 +5331,25 @@ msgid "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." msgstr "" +"Uključi ili isključi opcije ljuske.\n" +"\n" +" Promjeni postavku svakoj opciji ljuske IME_OPCIJE. Bez ikakvih opcija i\n" +" argumenta, „shopt“ izlista sve opcije ljuske pokazujući je li, ili nije\n" +" uključena.\n" +"\n" +" Opcije:\n" +" -o ograniči IME_OPCIJE na ona koja su definirana\n" +" za upotrebu sa „set -o“\n" +" -p generira izlaz koji se može koristi za ulaz\n" +" -q izostavi izlaz (ništa ne ispisuje)\n" +" -s omogući (uključi) sve dȃne IME_OPCIJE\n" +" -u onemogući (isključi) sve dȃne IME_OPCIJE\n" +"\n" +" Bez opcija (ili samo s „-q“ opcijom) Završi s kȏdom 0 ako je IME_OPCIJE\n" +" uključeno, a s 1 ako je isključeno. Završi također s 1 ako je dȃno\n" +" nevaljano ime opcije, a završi s 2 ako je dȃna nevaljana opcija." -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4129,8 +5387,37 @@ msgid "" "assignment\n" " error occurs." msgstr "" +"Oblikuje ispis ARGUMENATA prema pravilima FORMATA.\n" +"\n" +" Ispiše dane ARGUMENTE u danom FORMATU.\n" +"\n" +" Opcije:\n" +" -v VARIJABLA preusmjeri (dodijeli) izlaz (ispis) u VARIJABLU\n" +" umjesto na standardni izlaz\n" +"\n" +" FORMAT je znakovni string koji sadrži tri vrste objekta:\n" +" obične znakove koji se jednostavno kopiraju na izlaz; kontrolne znakove\n" +" (maskirane sekvencije) koji se pretvore i kopiraju na izlaz; i\n" +" specifikacije formata od kojih svaka uzrokuje ispisivanje sljedećeg\n" +" sukcesivnoga argumenta.\n" +"\n" +" Pored standardnih simbola za format opisanih u printf(1),\n" +" printf dodatno interpretira:\n" +" %b proširi maskirane sekvencije s obratnom kosom crtom\n" +" (backslash escape sequences) u relevantim argumentima\n" +" %q citira argument tako, da se može iskoristiti kao ulaz\n" +" %(fmt)T ispis vremena rezultira upotrebom FMT kao\n" +" format stringa za strftime(3)\n" +"\n" +" Dani format se koristi sve dok se ne potroše svi argumenti. Ako ima\n" +" manje od očekivanoga broja argumenata, suvišne format specifikacije\n" +" se ponašaju kao da im je vrijednost nula, ili prazni string.\n" +"\n" +" Završi s kȏdom 0 osim ako je dana nevaljana opcija\n" +" ili se dogodila greška pisanja ili greška pri dodijeli." -#: builtins.c:1953 +#: builtins.c:1961 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4148,16 +5435,44 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Specificira kako „readline“ treba kompletirati argumente.\n" +"\n" +" Za svako dȃno IME specificira kako se kompletiraju argumenti. Bez\n" +" dȃnih opcija ispiše postojeće specifikacije koje se mogu ponovno\n" +" iskoristiti kao ulaz.\n" +"\n" +" Opcije:\n" +" -p ispiše postojeće specifikacije kompletiranja u formatu\n" +" upotrebljivom za ulaz\n" +" -r ukloni specifikaciju kompletiranja za svako dȃno IME\n" +" ili ukloni sve specifikacije ako nisu dȃna IMEna\n" +" -D na naredbe koje nemaju vlastitu specifikaciju za kompletiranje\n" +" primjeni „zadano“ ponašanje specifikacija i akcija\n" +" -E primjeni zadano ponašanje specifikacija i akcija i na „prazne“\n" +" naredbe, to jest pokuša kompletirati prazni redak\n" +" -I primjeni zadano ponašanje specifikacija i akcija i na početnu\n" +" (obično naredbu) riječ\n" +"\n" +" Redoslijed akcija pri pokušaju kompletiranja slijedi gore dȃni poredak\n" +" opcija u verzalu. Opcija „-D“ ima veći prioritet od opcije „-E“.\n" +" a obje imaju veći prioritet od opcije „-I“\n" +"\n" +" Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n" +" ili se dogodila greška." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4169,8 +5484,16 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Prikaže moguća kompletiranja ovisno o opcijama.\n" +"\n" +" „compgen“ je namijenjen za upotrebu unutar funkcije koja generira\n" +" moguća kompletiranja. Ako je dȃna neobvezna opcija RIJEČ, generira\n" +" samo moguća kompletiranja podudarna s opcijom RIJEČ.\n" +"\n" +" Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n" +" ili se dogodila greška." -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -4185,6 +5508,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -4200,8 +5524,31 @@ msgid "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." msgstr "" +"Izmjena ili prikaz opcija za kompletiranje.\n" +"\n" +" Izmijenite opcije kompletiranja za svako IME u skladu s opcijama,\n" +" ili za kompletiranje koje se trenutačno vrši ako nisu dȃna IMEna.\n" +" Ako nema opcija, ispišu se opcije kompletiranja za svako IME ili\n" +" za trenutačno kompletiranje.\n" +"\n" +" Opcije:\n" +" -o OPCIJA ovu OPCIJU kompletiranja postavi za svako IME\n" +" -D promijeni opcije za kompletiranje „zadanih“ naredba\n" +" -E promijeni opcije za kompletiranje „praznih“ naredba\n" +" -I promijeni opcije za kompletiranje za početnu riječ\n" +"\n" +" „+“ umjesto „-“ isključi odgovarajuću opciju.\n" +"\n" +" Svako IME ukazuje na naredbu za koju specifikacija kompletiranja mora\n" +" već prije biti definirana pomoću ugrađene naredbe „complete“. Ako nije\n" +" dȃno nijedno IME, funkcija koja trenutačno generira kompletiranja mora\n" +" pozvati „compopt“; time se onda promjene opcije za taj generator koji\n" +" trenutačno izvršava kompletiranja.\n" +"\n" +" Završi s kȏdom 0 osim ako nije dȃna nevaljana opcija\n" +" ili nije definirana specifikacija za kompletiranje IMEna." -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4242,27 +5589,46 @@ msgid "" "or\n" " not an indexed array." msgstr "" +"Mapira pročitane retke iz standardnoga ulaza u varijablu tipa polje.\n" +"\n" +" Učitane retke iz standardnoga ulaza mapira u indeksiranu varijablu " +"POLJE.\n" +" Ako nema argumenta POLJE, koristi se (zadano) varijabla MAPFILE.\n" +"\n" +" Opcije:\n" +" -d MEĐA prvi znak u MEĐI (umjesto LF) je znak za kraj retka\n" +" -n BROJ kopira ne više od BROJ redaka (0 znači sve retke)\n" +" -O POČETAK mapiranje započinje s indeksom POČETAK (zadano 0)\n" +" -s BROJ preskoči (izostavi) prvih BROJ redaka\n" +" -t ukloni zaostalu MEĐU (zadano LF) iz svakog učitanoga " +"retka\n" +" -u FD čita retke iz FD (deskriptora datoteke) umjesto iz stdin\n" +" -C FUNKCIJA evaluira FUNKCIJU nakon svako TOLIKO pročitanih redaka\n" +" -c TOLIKO nakon svako TOLIKO pročitanih redaka pozove FUNKCIJU\n" +"\n" +" Argument:\n" +" POLJE ime varijable polja u koju se mapiraju pročitani redci\n" +"\n" +" Ako je opcija „-C“ dȃna bez opcije „-c“, TOLIKO je 5000 (zadano).\n" +" Kȁd FUNKCIJA evaluira — dobiva indeks sljedećeg elementa polja koji se\n" +" mapira i redak koji će biti dodijeljen tom elementu — kao dodatne " +"argumente.\n" +"\n" +" Ako nije dȃni eksplicitni POČETAK, „mapfile“ počisti polje\n" +" prije početka mapiranja.\n" +"\n" +" Završi s kȏdom 0 osim ako je POLJE readonly (samo-za-čitanje)\n" +" ili nije polje; ili je dȃna nevaljana opcija." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" -"Učitaj retke iz datoteke u varijablu polja.\n" -" \n" -" Sinonim za „mapfile”." - -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright © 2011 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Copyright © 2011 Free Software Foundation, Inc." +"Učita retke iz datoteke u varijablu tipa indeksirano polje.\n" +"\n" +" Sinonim za „mapfile“." #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" @@ -4273,3 +5639,6 @@ msgstr "" #~ msgstr "" #~ "Licenca GPLv2+: GNU GPL inačica 2 ili novija \n" + +#~ msgid ":" +#~ msgstr ":" diff --git a/po/hu.gmo b/po/hu.gmo index a1b022e36..478db6769 100644 Binary files a/po/hu.gmo and b/po/hu.gmo differ diff --git a/po/hu.po b/po/hu.po index c206a0eff..4fec68954 100644 --- a/po/hu.po +++ b/po/hu.po @@ -1,140 +1,142 @@ # Hungarian translation for bash. -# Copyright (C) 2010, 2016 Free Software Foundation, Inc. +# Copyright (C) 2010, 2016, 2017 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # # Mate Ory , 2010, 2016. # Gabor Kelemen , 2016. +# Balázs Úr , 2017. msgid "" msgstr "" -"Project-Id-Version: bash 4.4-beta1\n" +"Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2016-01-03 23:59+0100\n" -"Last-Translator: Mate Ory \n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2017-04-27 21:42+0200\n" +"Last-Translator: Balázs Úr \n" "Language-Team: Hungarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hu\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Lokalize 1.5\n" +"X-Generator: Lokalize 1.2\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "Hibás tömbindex" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: névhivatkozás attribútum eltávolítása" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: nem lehetséges az indexelt tömb asszociatívvá alakítása" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: érvénytelen asszociatívtömb-index" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: a nem-szám indexnek való értékadás nem lehetséges" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: asszociatív tömbhöz való értékadásnál meg kell adni az indexet" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nem hozható létre: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: nem található billentyűkiosztás a parancshoz" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: az első nem szóközkarakter nem „\"”" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "nincs záró „%c” a következőben: %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: hiányzó kettőspont-elválasztó" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "szögleteszárójel-kiegészítés: Nem foglalható memória ehhez: %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" "szögleteszárójel-kiegészítés: nem sikerült a memóriafoglalás %d elem számára" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" "szögleteszárójel-kiegészítés: nem sikerült a memóriafoglalás „%s” számára" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "„%s”: érvénytelen alias-név" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "nincs engedélyezve a sorszerkesztés" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s”: érvénytelen billentyűkiosztás-név" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: nem olvasható a következő: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "„%s”: nem lehetséges a kötés megszüntetése" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "„%s”: ismeretlen függvénynév" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s nincs kötve egy billentyűhöz sem.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s a következő módon hajtható végre: " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s”: nem lehetséges a kötés megszüntetése" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "ciklusszám" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "csak „for”, „while” és „until” ciklusokban értelmezhető" @@ -149,234 +151,233 @@ msgstr "" " \n" " EXPR nélkül a " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "Nincs beállítva HOME" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "túl sok argumentum" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "nincs másik könyvtár" +msgstr "null könyvtár" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "Nincs beállítva OLDPWD" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "%d. sor: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "figyelmeztetés: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: használat: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: a kapcsolónak kötelező argumentuma van" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: a kötelező argumentum egy szám" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: nem található" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: érvénytelen kapcsoló" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: érvénytelen kapcsolónév" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s”: érvénytelen azonosító" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "érvénytelen oktális szám" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "érvénytelen hexadecimális szám" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "érvénytelen szám" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: érvénytelen szignálmegadás" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s”: nem pid vagy munkaazonosító" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: csak olvasható változó" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s kívül esik a tartományon" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argumentum" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s kívül esik a tartományon" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: nincs ilyen munka" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: nincs munkakezelés" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "nincs munkakezelés" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: korlátozott" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "korlátozott" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: nem beépített parancs" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "írási hiba: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "hiba a terminálattribútum beállításakor: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "hiba a terminálattribútum lekérdezésekor: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: hiba a munkakönyvtár lekérdezésekor: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: kétértelmű munkamegadás" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "ebben a verzióban nem érhető el súgó" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: érvénytelen műveletnév" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: nincs kiegészítés meghatározva" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "figyelmeztetés: a -F kapcsoló nem a várt módon működhet" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "figyelmeztetés: a -C kapcsoló nem a várt módon működhet" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "jelenleg nincs kiegészítési függvény végrehajtás alatt" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "csak függvényben használható" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: a referenciaváltozó nem lehet tömb" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: a névhivatkozás változó önhivatkozása nem engedélyezett" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: körkörös névhivatkozás" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: érvénytelen változóérték a névhivatkozáshoz" +msgstr "„%s”: érvénytelen változónév a névhivatkozáshoz" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "nem használható a „-f” függvény létrehozására" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: csak olvasható függvény" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: az idézőjelezett összetett tömb értékadása elavult" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: ilyen módon nem lehet tömböt megszüntetni" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: nem lehetséges az asszociatív tömb indexeltté alakítása" @@ -410,68 +411,68 @@ msgstr "%s: nem dinamikusan van betöltve" msgid "%s: cannot delete: %s" msgstr "%s: nem törölhető: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s egy könyvtár" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: nem normál fájl" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: a fájl túl nagy" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: bináris nem hajtható végre" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: nem hajtható végre: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "kijelentkezés\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "nem bejelentkező parancsértelmező: használja az „exit”-et" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Vannak leállított munkák.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Vannak futó munkák.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "nincs ilyen parancs" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "előzményválasztás" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: az átmeneti fájl nem nyitható meg: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "aktuális" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "a(z) %d. munka munkakezelés nélkül indult" @@ -486,28 +487,27 @@ msgstr "%s: érvénytelen kapcsoló – %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: a kapcsolónak kötelező argumentuma van – %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "a hashelés le van tiltva" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: a hashtábla üres\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "t.szám\tparancs\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "A következő kifejezésre illeszkedő parancsok: „" msgstr[1] "A következő kifejezésekre illeszkedő parancsok: „" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -515,12 +515,12 @@ msgstr "" "nem illeszkedik egy szócikk sem a következőre: „%s”.\n" "A „help help”, „man -k '%s'” vagy „info '%s'” parancsok segíthetnek." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nem nyitható meg: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -539,20 +539,21 @@ msgstr "" "A parancs nevét követő csillag (*) azt jelzi, hogy le van tiltva.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "a következő kapcsolók kizárják egymást: -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "előzménypozíció" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: érvénytelen argumentum" +msgstr "%s: érvénytelen időbélyeg" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: sikertelen előzményből való kiegészítés" @@ -566,16 +567,16 @@ msgstr "%s: sikertelen inlib" msgid "no other options allowed with `-x'" msgstr "a „-x” mellett nem használható más kapcsoló" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: az argumentumok folyamat- vagy munkaazonosítók lehetnek" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Ismeretlen hiba" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "az értelmező kifejezést várt" @@ -584,69 +585,69 @@ msgstr "az értelmező kifejezést várt" msgid "%s: not an indexed array" msgstr "%s: nem egy indexelt tömb" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: érvénytelen fájlleíró-megadás" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: érvénytelen fájlleíró: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: sorok száma érvénytelen" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: érvénytelen tömbkezdet" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: érvénytelen parancshívási távolság" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "üres tömbváltozó-név" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "a tömbök használata nincs támogatva" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "„%s”: hiányzó formátumkarakter" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c”: érvénytelen időformátum-megadás" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "„%c”: érvénytelen formátumkarakter" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "figyelmeztetés: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "formátumfeldolgozási probléma: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "hiányzó hexadecimális számjegy a következőhöz: \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "hiányzó unicode számjegy a következőhöz: \\%c" @@ -660,19 +661,19 @@ msgstr "nincs másik könyvtár" msgid "%s: invalid argument" msgstr "%s: érvénytelen argumentum" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "a könyvtárverem üres" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "könyvtárveremindex" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -712,7 +713,7 @@ msgstr "" " -N\tN darab bejegyzést jelenít meg az argumentum nélkül a dirs\n" " \táltal megjelenített listán jobbról számolva, nullától kezdve." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -758,7 +759,7 @@ msgstr "" " \n" " A „dirs” beépített parancs listázza a könyvtárvermet." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -800,42 +801,42 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: érvénytelen időkorlát-megadás" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "olvasási hiba: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "csak függvényből vagy source-olt parancsfájlból lehet „return”-nel " "visszatérni" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "nem lehet egyszerre függvényt és változót megszüntetni" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: nem szüntethető meg" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nem szüntethető meg: csak olvasható %s" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: nem egy tömbváltozó" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: nem függvény" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: nem exportálható" @@ -844,21 +845,21 @@ msgstr "%s: nem exportálható" msgid "shift count" msgstr "shift-szám" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "" "nem lehet egyszerre beállítani és törölni parancsértelmező-beállításokat" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: érvénytelen parancsértelmezőkapcsoló-név" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "fájlnévargumentum szükséges" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: a fájl nem található" @@ -871,61 +872,61 @@ msgstr "nem lehet szüneteltetni" msgid "cannot suspend a login shell" msgstr "nem lehet bejelentkező parancsértelmezőt szüneteltetni" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s egy alias a következőre: „%s”\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s egy parancsértelmező-kulcsszó\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s egy függvény\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s egy speciális beépített parancs\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s egy beépített parancs\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s: %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s hashelve van (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: érvénytelen korlátérték" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "„%c”: érvénytelen parancs" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nem kérdezhető le a korlát: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "korlát" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nem módosítható a korlát: %s" @@ -944,358 +945,368 @@ msgstr "„%c”: érvénytelen szimbolikus módoperátor" msgid "`%c': invalid symbolic mode character" msgstr "„%c”: érvénytelen szimbolikus módkarakter" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " sor: " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "utolsó parancs: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Megszakítás..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORM: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "hiba: érvénytelen parancs" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "hibás parancstípus" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "hibás csatlakozó" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "hibás ugrás" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: kötetlen változó" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aidőtúllépés bemenetre várva: automatikus kijelentkezés\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "szabványos bemenet /dev/null-ra állítása sikertelen: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "IDŐFORMÁTUM: „%c”: érvénytelen formátumkarakter" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: a coproc [%d:%s] még mindig létezik" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "hibás csővezeték" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: a maximális eval beágyazási szint túllépve (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: a maximális source beágyazási szint túllépve (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: a maximális függvénybeágyazási szint túllépve (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: korlátozott: nem adható meg „/” a parancsok nevében" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: parancs nem található" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: rossz parancsértelmező" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: a bináris nem hajtható végre: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "„%s”: egy speciális beépített parancs" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nem lehet duplikálni a(z) %d. fájlleírót a(z) %d. helyre" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "a kifejezés rekurziókorlátot" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "alulcsordult a rekurziós verem" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "szintaktikai hiba a kifejezésben" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "nem változóhoz próbált értéket rendelni" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "szintaktikai hiba a kifejezésben" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "0-val osztás" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "bug: rossz expassign token" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "„:” egy feltételkifejezés szükséges" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "0-nál kisebb kitevő" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "prefix növelés vagy csökkentés után azonosító kell következzen" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "hiányzó „)”" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "szintaktikai hiba: operandus kell következzen" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "szintaktikai hiba: érvénytelen aritmetikai operátor" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (hibás token: „%s”)" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "érvénytelen számrendszer" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "túl nagy érték a számrendszerhez" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: hibás kifejezés\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: nem érhetőek el a szülőkönyvtárak" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nem lehet újraindítani a nodelay módot a(z) %d. fájlleíróhoz" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "nem lehet új fájlleírót foglalni a bash bemenetéhez a(z) %d. fájlleíróból" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: már van puffer a(z) %d. fájlleíróhoz" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp csővezeték" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "a(z) %d számú forkolt pid a(z) %d számú munkában jelent meg" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "%d. számú megállított munka törlése a %ld számú folyamatcsoporttal" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: %5ld. folyamat (%s) a the_pipeline-ban" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: %5ld. folyamat (%s) még élőként van jelölve" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: nincs ilyen pid" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "%d. szignál" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Kész" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Megállítva" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Megállítva(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Fut" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Kész(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Kilépett(%d)" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Ismeretlen állapot" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(core készült) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (mk: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "gyermek setpgid (innen: %ld ide: %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: %ld. számú folyamat nem gyermeke ennek a parancsértelmezőnek" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Nincs bejegyzés %ld. számú folyamatról" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: %d. számú munka le lett állítva" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: a munka be lett fejezve" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: %d. számú munka már a háttérben van" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: WNOHANG bekapcsolása a korlátlan blokk elkerülésére" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: %d. sor: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core készült)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(mk most: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp sikertelen" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: line discipline" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nem állítható be a terminál folyamatcsoportja (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "nincsen munkakezelés ebben a parancsértelmezőben" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: nem teljesülő feltételezés: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1304,39 +1315,39 @@ msgstr "" "\r\n" "malloc: %s:%d: téves feltételezés\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "ismeretlen" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: a szabadlistán lévő blokk felülírva" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: már felszabadított blokkal lett hívva" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: nem lefoglalt blokkal lett hívva" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: kezdő- és záródarab mérete eltér" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: nem lefoglalt blokkal lett hívva" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: kezdő- és záródarab mérete eltér" @@ -1378,22 +1389,22 @@ msgstr "%s: hibás hálózatiútvonal-megadás" msgid "network operations not supported" msgstr "a hálózati műveletek nincsenek támogatva" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: nem lehet területi beállításokat váltani (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: nem lehet területi beállításokat váltani (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: nem lehet területi beállításokat váltani (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: nem lehet területi beállításokat váltani (%s): %s" @@ -1411,150 +1422,152 @@ msgstr "Új levél a következőben: $_" msgid "The mail in %s has been read\n" msgstr "A(z) „%s” helyen lévő levél el van olvasva\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "szintaktikai hiba: aritmetikai kifejezés szükséges" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "szintaktikai hiba: váratlan „;”" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "szintaktikai hiba: „((%s))”" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: hibás utasítástípus: %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "a(z) %d. sorban kezdett heredocot EOF zárja („%s” helyett)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: %d. átirányító utasítás kívül esik a tartományon" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: a shell_input_line_size (%zu) meghaladja a MÉRET_MAXIMUM értékét " +"(%lu): a sor csonkolva" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "a maximális here-document szám túllépve" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "váratlan EOF „%c” helyett" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "váratlan EOF „]]” helyett" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "szintaktikai hiba a feltételben: váratlan token: „%s”" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "szintaktikai hiba a feltételben" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "váratlan token (%s) „)” helyett" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "„)” szükséges" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "váratlan argumentum (%s) feltételes egyoperandusú operátorhoz" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "váratlan argumentum feltételes egyoperandusú operátorhoz" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "váratlan token (%s), feltételes kétoperandusú operátor szükséges" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "feltételes kétoperandusú operátor szükséges" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "váratlan argumentum (%s) feltételes kétoperandusú operátorhoz" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "váratlan argumentum feltételes kétoperandusú operátorhoz" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "váratlan token (%c) feltételes parancsban" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "váratlan token (%s) feltételes parancsban" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "váratlan token (%d) feltételes parancsban" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "szintaktikai hiba „%s” váratlan token közelében" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "szintaktikai hiba „%s” közelében" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "szintaktikai hiba: váratlan fájlvége" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "szintaktikai hiba" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "„%s” használatával lehet elhagyni a parancsértelmezőt.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "váratlan EOF „)” helyett" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "kiegészítés: nem található „%s” függvény" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: lehetséges újrapróbálási hurok" #: pcomplib.c:182 #, c-format @@ -1580,90 +1593,94 @@ msgstr "xtrace_set: NULL fájlmutató" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c”: érvénytelen formátumkarakter" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "fájlleíró kívül esik a tartományon" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: kétértelmű átirányítás" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nem lehet felülírni létező fájlt" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: korlátozott: nem lehet átirányítani a kimenetet" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "nem lehet a heredocnak átmeneti fájlt létrehozni: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nem lehet változóhoz fájlleírót rendelni" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nincs támogatva hálózat nélkül" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "átirányítási hiba: nem lehet duplikálni a fájlleírót" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "nem található /tmp, hozza létre!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp érvényes könyvtárnév kell legyen" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: érvénytelen kapcsoló" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "az uid nem állítható be %d értékre: a hatásos uid %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "a gid nem állítható be %d értékre: a hatásos gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "nem indítható el a hibakereső; a hibakeresési mód letiltva" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: ez egy könyvtár" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Nincs nevem!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, %s-(%s) verzió\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1672,53 +1689,53 @@ msgstr "" "Használat:\t%s [GNU hosszú kapcsoló] [kapcsoló] ...\n" "\t%s [GNU hosszú kapcsoló] [kapcsoló] parancsfájl ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU hosszú kapcsolók:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Parancsértelmező-kapcsolók:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD vagy -c parancs vagy -O shopt_option\t\t(csak hívás)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s vagy -o kapcsoló\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "A „%s -c \"help set\"” további információt ad a parancsértelmező-" "beállításokról.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "A „%s -c help” további információt ad a beépített parancsokról.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "A „bashbug” paranccsal jelenthet hibákat.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "a bash honlapja: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" "Általános segítség a GNU szoftverek használatához: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: érvénytelen művelet" @@ -1892,92 +1909,96 @@ msgstr "Ismeretlen szignál #" msgid "Unknown Signal #%d" msgstr "%d. számú ismeretlen szignál" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "hibás helyettesítés: nincs záró „%s” a következőben: %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: lista nem adható tömbelemnek értékül" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "nem hozható létre a csővezeték a folyamatbehelyettesítéshez" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "nem hozható létre a gyermek a folyamatbehelyettesítéshez" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nem nyitható meg olvasásra a(z) %s csővezeték" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "nem nyitható meg írásra a(z) %s csővezeték" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nem duplikálható a(z) %s csővezeték %d. fájlleíróként" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "hibás helyettesítés: nincs záró „`” a következőben: %s" +msgstr "parancshelyettesítés: figyelmen kívül hagyott null bájt a bemeneten" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "nem hozható létre csővezeték a parancsbehelyettesítéshez" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "nem hozható létre gyermek a parancsbehelyettesítéshez" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: nem duplikálható a csővezeték 1. fájlleíróként" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: érvénytelen változóérték a névhivatkozáshoz" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: rossz helyettesítés" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: az indirekt kiegészítés érvénytelen" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "%s: érvénytelen változónév" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: a paraméter null vagy nincs beállítva" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: a paraméter null vagy nincs beállítva" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: részkarakterlánc-kifejezés < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: rossz helyettesítés" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nem lehet így értéket adni" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1985,12 +2006,12 @@ msgstr "" "a parancsértelmező későbbi verziói kötelezővé teszik majd az aritmetikai " "kiértékelést" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "hibás helyettesítés: nincs záró „`” a következőben: %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "nincs találat: %s" @@ -2013,115 +2034,120 @@ msgstr "„)” szükséges" msgid "`)' expected, found %s" msgstr "„)” szükséges %s helyett" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: egyoperandusú operátor szükséges" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: kétoperandusú operátor szükséges" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "hiányzó „]”" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "érvénytelen szignálszám" -#: trap.c:387 +#: trap.c:320 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: a maximális eval beágyazási szint túllépve (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: rossz érték a trap_list[%d]-ban: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: szignálkezelő a SIG_DFL, %d (%s) újraküldése önmagunknak" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: rossz szignál: %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "hiba a függvénydefiníció betöltésekor: „%s”" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "a parancsértelmező szintje (%d) túl magas, visszaállítás 1-re" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: nincs függvénykörnyezet az aktuális látókörben" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: nem lehet a változóhoz értéket rendelni" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: érvénytelen változóérték a névhivatkozáshoz" +msgstr "%s: egész szám hozzárendelése a névhivatkozáshoz" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: nincs függvénykörnyezet az aktuális látókörben" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s exportstr-je null" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "érvénytelen karakter (%d) %s exportstr-jében" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "nincs „=” %s exportstr-jében" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variables feje nem egy függvénykörnyezet" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nincs global_variables környezet" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables feje nem egy átmeneti környezeti látókör" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nem nyitható meg FILE-ként" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: érvénytelen érték a trace fájlleíróhoz" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: a kompatibilitási érték kívül esik a tartományon" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright © 2015 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright © 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2144,22 +2170,22 @@ msgstr "Ez egy szabad szoftver, terjesztheti és/vagy módosíthatja." msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "NINCS GARANCIA, a törvény által engedélyezett mértékig." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: nem lehetséges %lu byte foglalása (%lu byte lett foglalva)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: nem lehetséges %lu byte foglalása" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d nem lehetséges %lu byte foglalása (%lu byte lett foglalva)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d nem lehetséges %lu byte foglalása" @@ -2287,9 +2313,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [munkaszám ...] vagy jobs -x parancs [args]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [munkaszám ...]" +msgstr "disown [-h] [-ar] [munkaszám ... | pid ...]" #: builtins.c:134 msgid "" @@ -2372,7 +2397,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mód]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2464,8 +2490,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v változó] formátum [argumentumok]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2483,7 +2510,8 @@ msgstr "" "szuffixum] [szó]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o beállítás] [-DE] [név ...]" #: builtins.c:242 @@ -2495,9 +2523,10 @@ msgstr "" "parancs] [-c távolság] [tömb]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n szám] [-O kezdet] [-s szám] [-t] [-u fd] [-C parancs] [-c " "távolság] [tömb]" @@ -2673,6 +2702,7 @@ msgstr "" " A kilépési kód 0, ha N >= 1." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2683,7 +2713,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Beépített parancsok végrehajtása.\n" " \n" @@ -2909,6 +2939,7 @@ msgstr "" " található a PARANCS." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2927,11 +2958,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2986,7 +3017,6 @@ msgstr "" " hiba történik." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2994,7 +3024,7 @@ msgid "" msgstr "" "Változóértékek és attribútumok beállítása.\n" " \n" -" Elavult. Lásd „help declare”." +" A „declare” szinonimája. Lásd: „help declare”." #: builtins.c:538 msgid "" @@ -3023,6 +3053,7 @@ msgstr "" " hiba történik, vagy nem függvényben lett hívva." #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3051,6 +3082,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3084,7 +3121,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve írási hiba esetén." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3106,7 +3143,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve írási hiba esetén." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3158,7 +3195,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha a NÉV nem egy beépített parancs, vagy\n" " hiba történt." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3177,7 +3214,7 @@ msgstr "" " Kilépési kód:\n" " A parancs kilépési kódjával tér vissza, vagy sikerrel, ha üres a parancs." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3255,7 +3292,7 @@ msgstr "" " Sikerrel tér vissza, ha kapcsolót talált, sikertelenül, ha elfogytak a\n" " kapcsolók, vagy hiba történt." -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3297,7 +3334,7 @@ msgstr "" " Sikerrel tér vissza, kivéve, ha a PARANCS nem található vagy sikertelen\n" " az átirányítás." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3310,7 +3347,7 @@ msgstr "" "utolsó\n" " parancs kilépési kódjával lép ki." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3323,7 +3360,7 @@ msgstr "" " Kilép a bejelentkező parancsértelmezőből az N kilépési kóddal. Hibával\n" " tér vissza, ha nem bejelentkező parancsértelmezőből hívják." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3381,7 +3418,7 @@ msgstr "" "eltérőt\n" " hiba esetén." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3403,7 +3440,7 @@ msgstr "" " Az előtérbe hozott parancs állapota (annak kilépésekor), vagy nem nulla\n" " hiba esetén." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3427,7 +3464,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha a munkakezelés le van tiltva, vagy\n" " hiba történt." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3470,7 +3507,8 @@ msgstr "" " Sikerrel tér vissza, kivéve, ha a NÉV nem található vagy érvénytelen\n" " kapcsolót kap." -#: builtins.c:812 +#: builtins.c:816 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3485,7 +3523,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3509,7 +3547,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha nincs találat vagy hibás kapcsolót kap." -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3519,7 +3557,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3551,17 +3590,19 @@ msgstr "" " bejegyzést listázza.\n" " \n" " Kapcsolók:\n" -" -c\tminden előzmény törlése\n" -" -d szám\ta SZÁM számú bejegyzés törlése\n" -" -a\ta futó munkamenet előzményeinek központi fájlba írása\n" -" -n\tminden olvasatlan előzménysor kiírása az előzményfájlból\n" -" -r\telőzményfájl beolvasása és előzménylistához írása\n" -" -w\taz aktuális előzmények előzményfájlba írása és\n" -" \t\telőzménylistához írása\n" +" -c\taz előzménylista törlése az összes bejegyzésének törlésével\n" +" -d eltolás\taz ELTOLÁS pozícióban lévő előzménybejegyzés törlése\n" +" -a\ta munkamenet előzménysorainak hozzáfűzése az előzményfájlhoz\n" +" -n\tminden olyan előzménysor beolvasása, amelyek még nem lettek\n" +" \t\tbeolvasva az előzményfájlból, és azok hozzáfűzése az\n" +" \t\telőzménylistához\n" +" -r\telőzményfájl beolvasása, és a tartalom hozzáfűzése az\n" +" \t\telőzménylistához\n" +" -w\taz aktuális előzmények előzményfájlba írása\n" " \n" " -p\telőzménykiegészítés végrehajtása minden ARGUMENTUMON, és az\n" -" \t\teredmény kiírása előzménylistán való tárolás nélkül\n" -" -s\tARGUMENTUMOK hozzáírása egyetlen bejegyzésként a listához\n" +" \t\teredmény megjelenítése előzménylistán való tárolás nélkül\n" +" -s\tARGUMENTUMOK hozzáfűzése egyetlen bejegyzésként a listához\n" " \n" " Ha FÁJLNÉV is meg van adva, az lesz előzményfájlként használva. " "Különben\n" @@ -3575,7 +3616,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap, vagy hiba\n" " történik." -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3620,7 +3661,7 @@ msgstr "" " Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót, és nem történik\n" " hiba. -x használata esetén a PARANCS kilépési kódjával tér vissza." -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3652,8 +3693,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót vagy MUNKASZÁMOT" -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3683,21 +3723,22 @@ msgstr "" " \n" " Kapcsolók:\n" " -s sig\ta SIG egy szignálnév\n" -" -n sig\taSIG egy szignálszám\n" -" -l\ta szignálnevek listázása; ha argumentumok is követik, akkor\n" -" \t\taz általuk meghatározott szignálok nevei kerülnek listázásra\n" +" -n sig\ta SIG egy szignálszám\n" +" -l\ta szignálnevek listázása; ha argumentumok követik a -l kapcsolót,\n" +" \t\takkor azok szignálszámoknak lesznek tekintve ahhoz, hogy mely\n" +" \t\tneveket kell listázni\n" " -L\ta -l szinonimája\n" " \n" -" A kill két okból beépített parancs: így lehetővé teszi munkaszámok\n" -" használatát PID helyett, továbbá lehetségessé válik folyamatok " -"kilövése,\n" -" ha a folyamatok számának korlátja kimerült.\n" +" A kill két okból beépített parancs: így lehetővé teszi munkaazonosítók\n" +" használatát folyamatazonosítók helyett, továbbá lehetségessé válik a\n" +" folyamatok kilövése, ha a folyamatok számának korlátja elérve.\n" " \n" " Kilépési kód:\n" -" Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót, és nem történik\n" +" Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót, vagy nem " +"történik\n" " hiba." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3780,7 +3821,8 @@ msgstr "" " Kilépési kód:\n" " Ha az utolsó argumentum 0, a let 1-gyel tér vissza, különben 0-val." -#: builtins.c:987 +#: builtins.c:992 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3801,7 +3843,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3869,7 +3911,7 @@ msgstr "" " A kilépési kód nulla, kivéve ha EOF-ot ér a beolvasás, időtúllépéskor\n" " (ekkor > 128) vagy érvénytelen fájlleíró megadásakor a -u kapcsolónak." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3891,8 +3933,7 @@ msgstr "" " N-nel tér vissza, kivéve ha nem függvényből vagy parancsfájlból akar\n" " visszatérni – ekkor sikertelenséget jelez." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4011,7 +4052,7 @@ msgstr "" " noclobber mint -C\n" " noexec mint -n\n" " noglob mint -f\n" -" nolog (jelenleg nincs hatása)\n" +" nolog jelenleg elfogadott, de mellőzött\n" " notify mint -b\n" " nounset mint -u\n" " onecmd mint -t\n" @@ -4042,7 +4083,7 @@ msgstr "" " parancsértelmezőnél alapértelmezés\n" " -P Parancsok végrehajtásánál szimbolikus linkek követésének tiltása\n" " (például cd esetében)\n" -" -T A DEBUG csapdát öröklik a függvények\n" +" -T A DEBUG és RETURN csapdát öröklik a függvények\n" " -- A további argumentumok hozzárendelése a pozicionális " "paraméterekhez.\n" " Ha nincsenek további argumentumok, akkora a pozicionális " @@ -4062,7 +4103,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap." -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4104,7 +4145,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha hibás kapcsolót kap, vagy egy NÉV csak\n" " olvasható." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4138,7 +4179,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEVET kap." -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4176,7 +4217,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEVET kap." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4194,7 +4235,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha N negatív vagy nagyobb mint $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4219,7 +4260,7 @@ msgstr "" "sikertelenül,\n" " ha a FÁJLNÉV nem olvasható." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4245,7 +4286,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha a munkakezelés nem támogatott vagy hiba\n" " történt." -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4406,7 +4447,7 @@ msgstr "" "vagy\n" " érvénytelen argumentumokat kap." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4418,7 +4459,7 @@ msgstr "" " Ez a „test” beépített parancs szinonimája, de annyiban eltér tőle,\n" " hogy az utolsó argumentuma „]” kell legyen – a nyitó „]”-lel összhangban." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4437,7 +4478,7 @@ msgstr "" " Kilépési kód:\n" " Mindig sikeres." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4520,7 +4561,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha a SZIGNÁL érvénytelen, vagy érvénytelen\n" " kapcsolót kap." -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4572,7 +4613,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel lép ki, ha minden NÉV megtalálható, sikertelenül, ha nem." -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4667,7 +4708,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve érvénytelen kapcsoló vagy hiba esetében." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4703,7 +4744,8 @@ msgstr "" " Kilépési kód:\n" " Sikerrel lép ki, kivéve ha a MÓD vagy egy kapcsoló érvénytelen." -#: builtins.c:1494 +#: builtins.c:1499 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4711,13 +4753,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4738,7 +4782,7 @@ msgstr "" " ID kilépési kódjával tér vissza; érvénytelen ID vagy kapcsoló esetén\n" " sikertelenül." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4763,7 +4807,7 @@ msgstr "" "kapcsoló\n" " esetén sikertelenül." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4785,7 +4829,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4816,7 +4860,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4852,7 +4896,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4882,7 +4926,7 @@ msgstr "" " Kilépési kód:\n" " A kilépési kód a CSŐVEZETÉK kilépési kódja lesz." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4902,7 +4946,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4935,7 +4979,7 @@ msgstr "" " Kilépési kód:\n" " Az utoljára végrehajtott parancs kilépési kódja." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4954,7 +4998,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsónak végrehajtott parancs kilépési kódja." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4973,8 +5017,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsónak végrehajtott parancs kilépési kódja." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4988,15 +5031,15 @@ msgid "" msgstr "" "Egy NÉV nevű társfolyamat létrehozása.\n" " \n" -" A PARANCS aszinkron végrehajtása, a szabványos ki- és bemenet\n" -" átirányításával egy-egy csővezetékbe, amelyek fájlleírói a NÉV tömb\n" -" 0-s és 1-es elemeibe kerülnek a végrehajtó parancsértelmezőben.\n" +" PARANCS aszinkron végrehajtása, a parancs szabványos ki- és bemenetének\n" +" átirányításával egy-egy csővezetékbe, amelyek fájlleírói a NÉV tömb-\n" +" változó 0-s és 1-es elemeibe kerülnek a végrehajtó parancsértelmezőben.\n" " Az alapértelmezett NÉV: „COPROC”.\n" " \n" " Kilépési kód:\n" -" A PARANCS kilépési kódjával tér vissza." +" A coproc parancs 0-s kilépési kóddal tér vissza." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5020,7 +5063,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha a NÉV csak olvasható." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5038,7 +5081,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5062,7 +5105,7 @@ msgstr "" " Kilépési kód:\n" " A visszaállított parancs kilépési kódjával lép ki." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5080,7 +5123,7 @@ msgstr "" " Kilépési kód:\n" " 1-gyel tér vissza, ha KIFEJEZÉS értéke 0, különben 0-val." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5129,7 +5172,7 @@ msgstr "" " Kilépési kód:\n" " 0 vagy 1 a KIFEJEZÉSTŐL függően." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5230,7 +5273,7 @@ msgstr "" " HISTIGNORE\tKettőspontokkal elválasztott mintalista, amely mintákra\n" " \t\tilleszkedő parancsok nem kerülnek az előzmények közé\n" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5288,7 +5331,7 @@ msgstr "" " Sikerrel tér vissza, kivéve érvénytelen argumentum vagy könyvtárváltás\n" " során történő hiba esetén." -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5337,7 +5380,7 @@ msgstr "" " Sikerrel tér vissza, kivéve érvénytelen argumentum vagy könyvtárváltás\n" " során történő hiba esetén." -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5387,14 +5430,14 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve érvénytelen argumentum vagy hiba esetén." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5424,7 +5467,7 @@ msgstr "" " Sikerrel tér vissza, ha az OPTNÉV engedélyezve van; sikertelenül, ha\n" " hibás kapcsolókat kap vagy az OPTNÉV tiltva van." -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5494,7 +5537,8 @@ msgstr "" " Sikerrel tér vissza, kivéve ha hibás kapcsolókat kap, vagy az írás/\n" " értékadás hibával járt." -#: builtins.c:1953 +#: builtins.c:1961 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5512,10 +5556,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5543,7 +5591,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve érvénytelen kapcsoló és hiba esetén." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5565,7 +5613,8 @@ msgstr "" " Kilépési kód:\n" " Sikerrel lép ki, kivéve érvénytelen kapcsoló vagy hiba esetén." -#: builtins.c:1996 +#: builtins.c:2006 +#, fuzzy msgid "" "Modify or display completion options.\n" " \n" @@ -5580,6 +5629,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5622,7 +5672,7 @@ msgstr "" "nincs\n" " még megadva." -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5694,7 +5744,7 @@ msgstr "" " Sikerrel tér vissza, kivéve érvénytelen kapcsoló vagy csak olvasható,\n" " vagy nem indexelt TÖMB megadása esetén." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5703,50 +5753,3 @@ msgstr "" "Sorok olvasása egy tömbváltozóba.\n" " \n" " A „mapfile” szinonimája." - -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright © 2014 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "true" - -#~ msgid "false" -#~ msgstr "false" - -#~ msgid "times" -#~ msgstr "times" - -#~ msgid "" -#~ ". With EXPR, returns\n" -#~ " " -#~ msgstr "" -#~ "kifejezéssel, EXPR-rel a\n" -#~ " " - -#~ msgid "" -#~ "; this extra information can be used to\n" -#~ " provide a stack trace.\n" -#~ " \n" -#~ " The value of EXPR indicates how many call frames to go back before " -#~ "the\n" -#~ " current one; the top frame is frame 0." -#~ msgstr "" -#~ " kifejezéssel tér vissza. Ez az adat stack trace kiírásához\n" -#~ " lehet hasznos.\n" -#~ " \n" -#~ " Az EXPR értéke azt adja meg, hogy a jelenlegihez képest milyen " -#~ "mélyre\n" -#~ " lépjen vissza; a verem tetején a 0-s keret van." - -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" - -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "A licenc GPLv2+: a GNU GPL 2. vagy újabb változata \n" diff --git a/po/id.gmo b/po/id.gmo index 388299aaf..118b170a9 100644 Binary files a/po/id.gmo and b/po/id.gmo differ diff --git a/po/id.po b/po/id.po index b78f067a3..596273dac 100644 --- a/po/id.po +++ b/po/id.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.3-rc2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" "PO-Revision-Date: 2014-08-06 12:45+0700\n" "Last-Translator: Arif E. Nugroho \n" "Language-Team: Indonesian \n" @@ -15,121 +15,122 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "Language: id\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "array subscript buruk" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: tidak dapat mengubah index ke array yang berassosiasi" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: kunci array assosiasi tidak valid" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: tidak dapat mengassign ke index tidak-numeric" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: harus menggunakan subscript ketika memberikan assosiasi array" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: tidak dapat membuat: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: tidak dapat menemukan keymap untuk perintah" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: bukan karakter whitespace (spasi) pertama ditemukan `\"'" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "tidak menutup '%c' dalam %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: hilang pemisah colon" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "brace expansion: cannot allocate memory for %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "brace expansion: failed to allocate memory for %d elements" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "brace expansion: failed to allocate memory for `%s'" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nama alias tidak valid" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "pengubahan baris tidak aktif" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "'%s': nama keymap tidak valid" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: tidak dapat membaca: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "'%s': tidak dapat melepaskan" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "'%s': nama fungsi tidak dikenal" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s tidak terikat ke kunci apapun.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s dapat dipanggil melalui " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "'%s': tidak dapat melepaskan" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "jumlah loop" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "hanya berarti dalam sebuah `for', `while', atau `until'loop" @@ -143,236 +144,236 @@ msgstr "" " \n" " Tanpa EXPR, kembali " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME tidak diset" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "terlalu banyak argumen" -#: builtins/cd.def:336 +#: builtins/cd.def:341 #, fuzzy msgid "null directory" msgstr "top direktori yang baru." -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD tidak diset" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "baris %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "peringatan: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: penggunaan: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: pilihan membutuhkan sebuah argumen" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: argumen numeric dibutuhkan" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: tidak ditemukan" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: pilihan tidak valid" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: nama pilihan tidak valid" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': bukan sebuah identifier yang valid" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "nomor oktal tidak valid" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "nomor hexa tidak valid" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "nomor tidak valid" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: spesifikasi sinyal tidak valid" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': bukan sebuah pid atau spesifikasi pekerjaan yang valid" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: variabel baca-saja" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s diluar jangkauan" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argumen" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s diluar jangkauan" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: tidak ada pekerjaan seperti itu" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: tidak ada pengontrol kerja" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "tidak ada pengontrol kerja" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: terbatas" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "terbatas" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: bukan sebuah builtin shell" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "gagal menulis: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "error menentukan atribut terminal: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "error mendapatkan atribut terminal: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error mengambil direktori saat ini: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: spesifikasi pekerjaan ambigu" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: nama aksi tidak valid" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: tidak ada spesifikasi completion" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "" "peringatan: pilihan -F mungkin tidak bekerja seperti yang anda harapkan" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "" "peringatan: pilihan -C mungkin tidak bekerja seperti yang anda harapkan" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "saat ini sedang tidak menjalankan fungsi completion" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "hanya dapat digunakan dalam sebuah fungsi" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: reference variable cannot be an array" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: nameref variable self references not allowed" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: circular name reference" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "tidak dapat menggunakan `-f' untuk membuat fungsi" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: fungsi baca-saja" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: tidak dapat menghapus variabel array secara ini" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: tidak dapat mengubah assosiasi ke array index" @@ -406,68 +407,68 @@ msgstr "%s: bukan dinamically loaded" msgid "%s: cannot delete: %s" msgstr "%s: tidak dapat menghapus: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: bukan sebuah direktori" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: bukan sebuah file umum" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: file terlalu besar" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: tidak dapat menjalankan berkas binary" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: tidak dapat menjalankan: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "bukan sebuah login shell: gunakan `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Ada pekerjaan yang terhenti.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Ada pekerjaan yang sedang berjalan.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "perintah tidak ditemukan" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "spesifikasi sejarah" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: tidak dapat membuka file sementara: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "sekarang" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "pekerjaan %d dimulai tanpa pengontrol pekerjaan" @@ -482,28 +483,27 @@ msgstr "%s: pilihan tidak legal -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: pilihan membutuhkan sebuah argumen -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashing dinonaktifkan" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tabel hash kosong\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "tekan\tperintah\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Perintah shell cocok dengan kata kunci `" msgstr[1] "Perintah shell cocok dengan kata kunci `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -511,12 +511,12 @@ msgstr "" "tidak ada topik bantuan yang cocok dengan `%s'. Coba `help help' atau 'man -" "k %s' atau `info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: tidak dapat membuka: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -539,20 +539,21 @@ msgstr "" "aktif.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "tidak dapat menggunakan lebih dari satu pilihan dari -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "posisi sejarah" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" msgstr "%s: argumen limit tidak valid" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: expansi sejarah gagal" @@ -566,16 +567,16 @@ msgstr "%s: inlib gagal" msgid "no other options allowed with `-x'" msgstr "tidak ada pilihan lain yang diperbolehkan dengan `-x'" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumen harus diproses atau ID pekerjaan" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Kesalahan tidak diketahui" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "diduga sebuah ekspresi" @@ -584,69 +585,69 @@ msgstr "diduga sebuah ekspresi" msgid "%s: not an indexed array" msgstr "%s: bukan sebuah indeks array" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: spesifikasi file deskripsi tidak valid" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: file deskriptor %s tidak valid" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: jumlah baris tidak valid" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: asal array tidak valid" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: nama aksi tidak valid" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "nama variabel array kosong" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "bantuan array variabel dibutuhkan" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "`%s': hilang karakter format" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': spesifikasi timeout tidak valid" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "`%c': karakter format tidak valid" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "peringatan: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "format parsing problem: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "hilang digit hexa untuk \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "hilang digit hexa untuk \\%c" @@ -660,19 +661,19 @@ msgstr "tidak ada direktori lain" msgid "%s: invalid argument" msgstr "%s: argumen limit tidak valid" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "direktori stack kosong" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "index direktori stack" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -717,7 +718,7 @@ msgstr "" "ditampilkan oleh\n" " \tdirs ketika dipanggil tanpa pilihan, dimulai dari nol." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -764,7 +765,7 @@ msgstr "" " \n" " Builtin `dirs' menampilkan direktori stack." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -805,40 +806,40 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: spesifikasi timeout tidak valid" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "error baca: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "hanya dapat `return' dari sebuah fungsi atau script yang disource" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "tidak dapat secara simultan unset sebuah fungsi dan sebuah variable" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: tidak dapat unset" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: tidak dapat unset: baca-saja %s" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: bukan sebuah variabel array" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: bukan sebuah fungsi" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: tidak dapat unset" @@ -847,20 +848,20 @@ msgstr "%s: tidak dapat unset" msgid "shift count" msgstr "shift terhitung" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "tidak dapat menset dan menunset pilihan shell secara bersamaan" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nama pilihan shell tidak valid" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "argumen nama file dibutuhkan" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: berkas tidak ditemukan" @@ -873,61 +874,61 @@ msgstr "tidak dapat suspend" msgid "cannot suspend a login shell" msgstr "tidak dapat suspend sebuah login shell" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s sudah dialiasi ke `%s'\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s adalah sebuah shell dengan kata kunci\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s adalah sebuah fungsi\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s adalah sebuah shell builtin\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s adalah sebuah shell builtin\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s adalah %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s memiliki hash (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: argumen limit tidak valid" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': perintah buruk" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: tidak dapat get limit: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "batas" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: tidak dapat memodifikasi batas: %s" @@ -946,360 +947,370 @@ msgstr "`%c': operator mode symbolic tidak valid" msgid "`%c': invalid symbolic mode character" msgstr "`%c': mode karakter symbolic tidak valid" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " baris " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "perintah terakhir: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "membatalkan..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "perintah error tidak diketahui" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "tipe perintah buruk" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "konektor buruk" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "lompat buruk" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: variabel tidak terikat" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "kehabisan waktu menunggu masukan: otomatis-keluar\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "tidak dapat menyalurkan masukan standar dari /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': karakter format tidak valid" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, fuzzy, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, fuzzy, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" "%s: dibatasi: tidak dapat menspesifikasikan '/' dalam nama nama perintah" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: perintah tidak ditemukan" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: interpreter buruk" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: tidak dapat menjalankan berkas binary: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "`%s': adalah sebuah shell builtin" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "tidak dapat menduplikasikan fd %d ke fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "expresi level rekursi terlewati" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "rekursi stack underflow" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "syntax error dalam expresi" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "mencoba menempatkan ke bukan sebuah variabel" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "syntax error dalam expresi" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "dibagi oleh 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "bug: tanda expassign buruk" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "`:' diharapkan untuk sebuah pernyataan kondisional" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "eksponen kurang dari 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "idenfier diharapkan setelah pre-increment atau pre-decrement" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "hilang `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "syntax error: operand diharapkan" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: operator arithmetic tidak valid" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (error token adalah \"%s\")" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "basis arithmetic tidak valid" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "nilai terlalu besar untuk basis" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: expresi error\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: tidak dapat mengakses direktori orang tua" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "tidak dapat mereset mode nodelay untuk fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "tidak dapat mengalokasikan berkas deskripsi bari untuk masukan bash dari fd %" "d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "simpan bash_input: buffer telah ada untuk fd %d baru" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forked pid %d terlihat dalam pekerjaan yang sedang berjalan %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "menghapus pekerjaan yang terhenti %d dengan proses grup %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) dalam the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) ditandai dengan tetap hidup" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: tidak ada pid seperti itu" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "sinyal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Selesai" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Terhenti" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Terhenti(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Berjalan" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Selesai(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Keluar %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Status tidak diketahui" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(core didump) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "anak setpgid (%ld ke %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld bukan sebuah anak dari shell ini" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Tidak ada catatan untuk proses %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: pekerjaan %d terhenti" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: pekerjaan telah selesai" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: pekerjaan %d sudah berjalan di belakang (background)" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: mengaktifkan WNOHANG untuk menghindari blok tak terhingga" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: baris %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core didump)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(wd sekarang: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp gagal" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: baris disiplin" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: baris disiplin" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "tidak dapat menset terminal proses grup (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "tidak ada pengontrol pekerjaan dalam shell ini" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: gagal assertion: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1308,39 +1319,39 @@ msgstr "" "\r\n" "malloc: %s:%d: assertion rusak\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "tidak diketahui" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: blok dalam daftar bebas clobbered" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: dipanggil dengan argumen blok yang sudah dibebaskan" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: dipanggil dengan argumen blok yang tidak dialokasikan" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underflow terdeteksi; mh_nbytes diluar dari jangkauan" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: awal dan akhir dari ukuran potongan berbeda" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: dipanggil dengan argumen blok yang tidak teralokasikan" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underflow terdeteksi; my_nbytes diluar dari jangkauan" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: awal dan akhir dari ukuran potongan berbeda" @@ -1383,22 +1394,22 @@ msgstr "%s: spesifikasi jalur network buruk" msgid "network operations not supported" msgstr "operasi jaringan tidak dilayani" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: tidak dapat mengubah lokal (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: tidak dapat mengubah local (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: tidak dapat mengubah lokal (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: tidak dapat mengubah lokal (%s): %s" @@ -1416,148 +1427,148 @@ msgstr "Anda memiliki surat baru dalam $_" msgid "The mail in %s has been read\n" msgstr "Surat dalam %s telah dibaca\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "syntax error: membutuhkan ekspresi arithmetic" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "syntax error: `;' tidak terduga" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "syntax error: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipe instruksi buruk %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "dokumen-disini di baris %d dibatasi oleh akhir-dari-berkas (diinginkan `%s')" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instruksi redireksi `%d' diluar dari jangkauan" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF tidak terduga ketika mencari untuk pencocokan `%c'" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "EOF tidak terduga ketika mencari untuk `]]'" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error dalam ekspresi kondisional: tanda `%s' tidak terduga" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "syntax error dalam ekspresi kondisional" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "tanda `%s' tidak terduga, diduga `)'" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "diduga `)'" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumen tidak terduga `%s' ke operator kondisional unary" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "argumen tidak terduga untuk operasi unary kondisional" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "tanda `%s' tidak terduga, operator binary kondisional diduga" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "operator binary kondisional diduga" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumen `%s' tidak terduga ke operator binary kondisional" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "argumen tidak terduga ke operasi binary kondisional" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "tanda `%c' tidak terduga dalam perintah kondisional" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "tanda `%s' tidak terduga dalam perintah kondisional" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "tanda %d tidak terduga dalam perintah kondisional" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntax error didekat tanda `%s' yang tidak terduga" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "syntax error didekat `%s'" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "syntax error: tidak terduga diakhir dari berkas" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "syntax error" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Gunakan \"%s\" untuk meninggalkan shell.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF tidak terduga ketika mencari untuk pencocokan ')'" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: fungsi `%s' tidak ditemukan" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1586,90 +1597,94 @@ msgstr "xtrace_set: berkas penunjuk KOSONG" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: '%c': format karakter tidak valid" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "berkas deskripsi diluar dari jangkauan" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirect ambigu" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: tidak dapat menulis berkas yang sudah ada" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: tidak dapat meredirect keluaran" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "tidak dapat membuat berkas sementara untuk dokumen disini: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: tidak dapat meng-'assign' fd ke variabel" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port tidak dilayani tanpa jaringan" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "redirection error: tidak dapat menduplikasi fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "tidak dapat menemukan /tmp, tolong buat!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp harus berupa sebuah nama direktori yang valid" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: pilihan tidak valid" -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "tidak dapat mereset mode nodelay untuk fd %d" -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "tidak dapat mereset mode nodelay untuk fd %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: bukan sebuah direktori" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Aku tidak memiliki nama!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versi %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1678,54 +1693,54 @@ msgstr "" "Penggunaan:\t%s [GNU pilihan panjang] [pilihan] ...\n" "\t%s [GNU pilihan panjang] [pilihan] berkas-script ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU pilihan panjang:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Pilihan shell:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" "\t-ilrsD atau -c perintah atau -O shopt_option\t\t(hanya pemanggilan)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s atau pilihan -o\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Ketik `%s -c \"help set\"' untuk informasi lebih lanjut mengenai pilihan " "shell.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Ketik `%s -c help' untuk informasi lebih lanjut mengenai perintah builting " "shell.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Gunakan perintah 'bashbug' untuk melaporkan bugs.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operasi tidak valid" @@ -1899,92 +1914,97 @@ msgstr "Sinyal tidak diketahui #" msgid "Unknown Signal #%d" msgstr "Sinyal tidak diketahui #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "substitusi buruk: tidak ada penutupan `%s' dalam %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: tidak dapat meng-assign daftar kedalam anggoya array" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "tidak dapat membuat pipe untuk proses substitusi" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "tidak dapat membuat anak untuk proses substitusi" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "tidak dapat membuka named pipe %s untuk membaca" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "tidak dapat membukan named pipe %s untuk menulis" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "tidak dapat menduplikasi nama pipe %s sebagai fd %d" -#: subst.c:5959 +#: subst.c:6062 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "tidak dapat membuat pipe untuk perintah substitusi" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "tidak dapat membuat anak untuk perintah substitusi" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: tidak dapat menduplikasikan pipe sebagi fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: substitusi buruk" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: jumlah baris tidak valid" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "`%s': nama alias tidak valid" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter kosong atau tidak diset" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter kosong atau tidak diset" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: substring expresi < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substitusi buruk" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: tidak dapat meng-assign dengan cara ini" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1992,12 +2012,12 @@ msgstr "" "versi selanjutnya dari shell akan memaksa evaluasi dari sebuah penggantian " "aritmetika" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "tidak cocok: %s" @@ -2020,30 +2040,35 @@ msgstr "')' diduga" msgid "`)' expected, found %s" msgstr "`)' diduga, ditemukan %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: operator unary diduga" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: operator binary diduga" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "hilang `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "nomor sinyal tidak valid" -#: trap.c:387 +#: trap.c:320 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "%s: maximum function nesting level exceeded (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: nilai buruk dalam trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2051,87 +2076,87 @@ msgstr "" "run_pending_traps: sinyal handler adalah SIG_DFL, mengirimkan kembali %d (%" "s) kediri sendiri" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: sinyal buruk %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "error mengimpor definisi fungsi untuk `%s'" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "level shell (%d) terlalu tinggi, mereset ke 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: tidak ada context fungsi di scope ini" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: tidak dapat meng-'assign' fd ke variabel" -#: variables.c:3043 +#: variables.c:3453 #, fuzzy, c-format msgid "%s: assigning integer to name reference" msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: tidak ada context fungsi dalam scope ini" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s memiliki exportstr kosong" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "karakter %d tidak valid dalam exporstr untuk %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "bukan `=' dalam exportstr untuk %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: kepala dari shell_variables bukan sebuah fungsi cbntext" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: bukan global_variable context" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: kepala dari shell_variables bukan sebuah scope lingkungan " "sementara" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: tidak dapat membuka sebagai BERKAS" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: nilai dari berkas pendeskripsi penelusur tidak valid" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: diluar jangkauan" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." msgstr "Hak Cipta (C) 2013 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2157,22 +2182,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "TIDAK ADA GARANSI, selama masih diijinkan oleh hukum yang berlaku." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: tidak dapat mengalokasikan %lu bytes (%lu bytes teralokasi)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: tidak dapat mengalokasikan %lu bytes" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: tidak dapat mengalokasikan %lu bytes (%lu bytes teralokasi)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s: %d: tidak dapat teralokasi %lu bytes" @@ -2387,7 +2412,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2479,8 +2505,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [argumen]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2498,7 +2525,8 @@ msgstr "" "F fungsi] [-C perintah] [-X filterpat] [-P prefix] [-S suffix] [word]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o pilihan] [-DE] [nama ...]" #: builtins.c:242 @@ -2511,9 +2539,10 @@ msgstr "" "quantum] [array]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n jumlah] [-O asal] [-s jumlah] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2699,6 +2728,7 @@ msgstr "" " Status keluar adalah 0 kecuali N tidak lebih besar atau sama dengan 1." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2709,7 +2739,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Menjalankan shell builtins.\n" " \n" @@ -2957,11 +2987,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3080,6 +3110,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3112,7 +3148,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali sebuah penulisan error terjadi." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3134,7 +3170,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali sebuah penulisan error terjadi." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3190,7 +3226,7 @@ msgstr "" " Mengembalikan sukses kecuali NAMA bukan sebuah shell builtin atau sebuah " "error terjadi." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3211,7 +3247,7 @@ msgstr "" " Mengembalikan status keluar dari perintah atau sukses jika perintah " "adalah kosong." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3297,7 +3333,7 @@ msgstr "" "dari pilihan\n" " ditemui atau sebuah error terjadi." -#: builtins.c:688 +#: builtins.c:692 #, fuzzy msgid "" "Replace the shell with the given command.\n" @@ -3341,7 +3377,7 @@ msgstr "" " Mengembalikan sukses kecuali PERINTAH tidak ditemukan atau sebuah " "redireksi error terjadi." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3354,7 +3390,7 @@ msgstr "" "keluaran\n" " adalah status dari perintah terakhir yang dijalankan." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3368,7 +3404,7 @@ msgstr "" "error jika tidak dijalankan\n" " dalam sebuah login shell." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3427,7 +3463,7 @@ msgstr "" " Mengembalikan sukses atau status dari perintah yang dijalankan; tidak-" "nol jika sebuah error terjadi." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3448,7 +3484,7 @@ msgstr "" " Status dari perintah yang ditempatkan di foreground, atau gagal jika " "sebuah error terjadi." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3472,7 +3508,7 @@ msgstr "" " Mengembalikan sukses kecuali pengontrol pekerjaan tidak aktif atau " "sebuah error terjadi." -#: builtins.c:787 +#: builtins.c:791 #, fuzzy msgid "" "Remember or display program locations.\n" @@ -3519,7 +3555,7 @@ msgstr "" " Mengembalikan sukses kecuali NAMA tidak ditemukan atau sebuah pilihan " "tidak valid telah diberikan." -#: builtins.c:812 +#: builtins.c:816 #, fuzzy msgid "" "Display information about builtin commands.\n" @@ -3535,7 +3571,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3561,7 +3597,7 @@ msgstr "" " Mengembalikan sukses kecuali POLA tidak ditemukan atau pilihan tidak " "valid diberikan." -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3571,7 +3607,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3637,7 +3674,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:872 +#: builtins.c:877 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3686,7 +3723,7 @@ msgstr "" "sebuah error terjadi.\n" " Jika -x digunakan, mengembalikan status keluar dari PERINTAH." -#: builtins.c:899 +#: builtins.c:904 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3719,7 +3756,7 @@ msgstr "" " Mengembalikan sukses kecuali ada sebuah pilihan tidak valid atau JOBSPEC " "diberikan." -#: builtins.c:918 +#: builtins.c:923 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3764,7 +3801,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3852,7 +3889,7 @@ msgstr "" " Jika ARG terakhir dievaluasi ke 0, membiarkan kembali ke 1; 0 " "dikembalikan Jika tidak." -#: builtins.c:987 +#: builtins.c:992 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3874,7 +3911,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3955,7 +3992,7 @@ msgstr "" " atau sebuah berkas deskripsi disupply sebagai sebuah argumen ke pilihan -" "u." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3977,7 +4014,7 @@ msgstr "" " Mengembalikan N, atau gagal jika shell tidak menjalan sebuah fungsi atau " "script." -#: builtins.c:1047 +#: builtins.c:1052 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4154,7 +4191,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan." -#: builtins.c:1132 +#: builtins.c:1137 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4194,7 +4231,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah NAMA adalah baca-saja." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4229,7 +4266,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "NAMA tidak valid." -#: builtins.c:1173 +#: builtins.c:1178 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4270,7 +4307,7 @@ msgstr "" " Mengembalikan sukses kecual sebuah pilihan tidak valid diberikan atau " "NAMA tidak valid." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4288,7 +4325,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali N adalah negatif atau lebih besar dari $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4314,7 +4351,7 @@ msgstr "" "BERKAS; gagal jika\n" " NAMA BERKAS tidak dapat dibaca." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4340,7 +4377,7 @@ msgstr "" " Mengembalikan sukses kecuali pengontrol pekerjaan tidak aktif atau " "sebuah error terjadi." -#: builtins.c:1254 +#: builtins.c:1259 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4507,7 +4544,7 @@ msgstr "" "EXPR mengevaluasi ke\n" " salah atau sebuah argumen tidak valid diberikan." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4519,7 +4556,7 @@ msgstr "" " Ini sinonim untuk \"test\" builtin, tetapi argumen terakhir\n" " harus berupa sebuah literal `]', untuk mencocokan dengan pembukaan `['." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4539,7 +4576,7 @@ msgstr "" " Status Keluar:\n" " Selalu sukses." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4620,7 +4657,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah SIGSPEC adalah tidak valid atau " "sebuah pilihan tidak valid diberikan." -#: builtins.c:1393 +#: builtins.c:1398 #, fuzzy msgid "" "Display information about command type.\n" @@ -4683,7 +4720,7 @@ msgstr "" " Mengembalikan sukses jika seluruh dari NAMA ditemukan; gagal jika ada " "yang tidak ditemukan." -#: builtins.c:1424 +#: builtins.c:1429 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4777,7 +4814,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4815,7 +4852,8 @@ msgstr "" " Mengembalikan sukses kecuali MODE tidak valid atau sebuah pilihan tidak " "valid diberikan." -#: builtins.c:1494 +#: builtins.c:1499 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4823,13 +4861,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4850,7 +4890,7 @@ msgstr "" "pilihan tidak\n" " valid diberikan." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4876,7 +4916,7 @@ msgstr "" "pilihan tidak valid\n" " diberikan." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4900,7 +4940,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4930,7 +4970,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4967,7 +5007,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4995,7 +5035,7 @@ msgstr "" " Status Keluar:\n" " Status kembali adalah status kembali dari PIPELINE." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5013,7 +5053,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan setatus dari perintah terakhir yang dijalankan." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5051,7 +5091,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5069,7 +5109,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5086,7 +5126,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1653 +#: builtins.c:1661 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5110,7 +5150,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status keluar dari PERINTAH." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5135,7 +5175,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali NAMA adalah baca-saja." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5154,7 +5194,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dieksekusi." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5181,7 +5221,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari pekerjaan yang dilanjutkan." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5199,7 +5239,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan 1 jika EXPRESI dievaluasi ke 0; mengembalikan 0 jika tidak." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5256,7 +5296,7 @@ msgstr "" " Status Keluar:\n" " 0 atau 1 tergantun dari nilai dari EKSPRESI." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5370,7 +5410,7 @@ msgstr "" "digunakan untuk menentukan dimana\n" " \t\tperintah seharusnya disimpan dalam daftar sejarah.\n" -#: builtins.c:1803 +#: builtins.c:1811 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5431,7 +5471,7 @@ msgstr "" "atau pemindahan\n" " direktori gagal." -#: builtins.c:1837 +#: builtins.c:1845 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5487,7 +5527,7 @@ msgstr "" "atau pemindahan\n" " direktori gagal." -#: builtins.c:1867 +#: builtins.c:1875 #, fuzzy msgid "" "Display directory stack.\n" @@ -5544,14 +5584,14 @@ msgstr "" " Mengembalikan sukses kecuali ada sebuah pilihan tidak valid diberikan " "atau sebuah error terjadi." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5583,7 +5623,7 @@ msgstr "" "tidak valid diberikan\n" " atau OPTNAME dinonaktifkan." -#: builtins.c:1919 +#: builtins.c:1927 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5648,7 +5688,7 @@ msgstr "" "sebuah penulisan atau penempatan\n" " error terjadi." -#: builtins.c:1953 +#: builtins.c:1961 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5667,10 +5707,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5702,7 +5746,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5725,7 +5769,8 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:1996 +#: builtins.c:2006 +#, fuzzy msgid "" "Modify or display completion options.\n" " \n" @@ -5740,6 +5785,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5787,7 +5833,7 @@ msgstr "" "NAMA tidak memiliki\n" " spesifikasi penyelesaian yang terdefinisi." -#: builtins.c:2026 +#: builtins.c:2037 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5865,7 +5911,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "ARRAY adalah baca-saja." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5875,9 +5921,8 @@ msgstr "" " \n" " Sebuah sinonim untuk `mapfile'." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Hak Cipta (C) 2013 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Hak Cipta (C) 2012 Free Software Foundation, Inc." #~ msgid ":" #~ msgstr ":" @@ -5891,9 +5936,6 @@ msgstr "" #~ msgid "times" #~ msgstr "kali" -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Hak Cipta (C) 2012 Free Software Foundation, Inc." - #~ msgid "" #~ ". With EXPR, returns\n" #~ " " diff --git a/po/it.gmo b/po/it.gmo index 99e98a493..bda505ca7 100644 Binary files a/po/it.gmo and b/po/it.gmo differ diff --git a/po/it.po b/po/it.po index 6bff65a29..97ed1ae74 100644 --- a/po/it.po +++ b/po/it.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" "PO-Revision-Date: 2011-10-17 09:14+0200\n" "Last-Translator: Sergio Zanchetta \n" "Language-Team: Italian \n" @@ -15,123 +15,124 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural= (n != 1)\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "indice dell'array errato" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: impossibile convertire un array indicizzato in uno associativo" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: chiave dell'array associativo non valida" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: impossibile assegnare a un indice non numerico" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: deve essere usato un indice nell'assegnazione di un array associativo" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: impossibile creare: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: impossibile trovare una mappatura per il comando" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: il primo carattere non spazio non è \"\"\"" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "carattere di chiusura \"%c\" non presente in %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: separatore di tipo due punti mancante" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "\"%s\": nome alias non valido" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "modifica delle righe non abilitata" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "\"%s\": nome della mappatura non valido" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: impossibile leggere: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "\"%s\": impossibile eliminare l'associazione" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "\"%s\" nome della funzione sconosciuto" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s non è associato ad alcun tasto.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s può essere invocato tramite " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "\"%s\": impossibile eliminare l'associazione" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "numero di cicli" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "significativo solo in un ciclo \"for\", \"while\" o \"until\"" @@ -145,234 +146,234 @@ msgstr "" " \n" " Senza ESPR, restituisce " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME non impostata" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "troppi argomenti" -#: builtins/cd.def:336 +#: builtins/cd.def:341 #, fuzzy msgid "null directory" msgstr "nessun'altra directory" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD non impostata" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "riga %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "attenzione: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: l'opzione richiede un argomento" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: è necessario un argomento numerico" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: non trovata" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: opzione non valida" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: nome dell'opzione non valido" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "\"%s\": non è un identificatore valido" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "numero ottale non valido" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "numero esadecimale non valido" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "numero non valido" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: specifica di segnale non valida" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "\"%s\": non è un pid o un numero di job valido" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: variabile in sola lettura" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fuori dall'intervallo" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argomento" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s fuori dall'intervallo" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: job inesistente" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: nessun controllo dei job" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "nessun controllo dei job" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: limitato" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "limitato" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: non è un comando interno di shell" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "errore in scrittura: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "errore nell'impostazione degli attributi del terminale: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "errore nel recupero degli attributi del terminale: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: errore nel recupero della directory corrente: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: specifica di job ambigua" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: nome azione non valido" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: nessun completamento specificato" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "attenzione: l'opzione -F potrebbe non funzionare come previsto" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "attenzione: l'opzione -C potrebbe non funzionare come previsto" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "funzione di completamento attualmente non in esecuzione" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "può essere usato solo in una funzione" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 -#, fuzzy, c-format +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 +#, c-format msgid "%s: circular name reference" -msgstr "%s: %s: valore non valido per il descrittore del file di traccia" +msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: %s: valore non valido per il descrittore del file di traccia" +msgstr "\"%s\": nome alias non valido" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "impossibile usare \"-f\" per creare funzioni" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: funzione in sola lettura" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: impossibile eliminare variabili array in questo modo" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: impossibile convertire un array associativo in uno indicizzato" @@ -406,68 +407,68 @@ msgstr "%s: non caricato dinamicamente" msgid "%s: cannot delete: %s" msgstr "%s: impossibile eliminare: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: è una directory" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: non è un file regolare" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: file troppo grande" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: impossibile eseguire il file binario" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: impossibile eseguire: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "non è una shell di login: utilizzare \"exit\"" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Sono presenti job interrotti.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Ci sono job in esecuzione.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "nessun comando trovato" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "specifica della cronologia" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: impossibile aprire il file temp: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "attuale" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "job %d avviato senza controllo dei job" @@ -482,28 +483,27 @@ msgstr "%s: opzione illecita -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: l'opzione richiede un argomento -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashing disabilitato" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s tabella di hash vuota\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "rich.\tcomando\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Comandi di shell corrispondenti alla parola chiave \"" msgstr[1] "Comandi di shell corrispondenti alle parole chiave \"" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -511,12 +511,12 @@ msgstr "" "nessun argomento della guida corrisponde a \"%s\". Provare \"help help\" o " "\"man -k %s\" o \"info %s\"." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: impossibile aprire: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -537,20 +537,21 @@ msgstr "" "Un asterisco (*) vicino a un nome significa che il comando è disabilitato.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "impossibile usare più di uno tra -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "posizione nella cronologia" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: argomento di limite non valido" +msgstr "%s: nome dell'opzione non valido" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: espansione della cronologia non riuscita" @@ -564,16 +565,16 @@ msgstr "%s: inlib non riuscito" msgid "no other options allowed with `-x'" msgstr "nessuna altra opzione permessa con \"-x\"" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: gli argomenti devono essere ID di processo o di job" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Errore sconosciuto" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "attesa espressione" @@ -582,69 +583,69 @@ msgstr "attesa espressione" msgid "%s: not an indexed array" msgstr "%s: non è un array indicizzato" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: specifica di descrittore di file non valida" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descrittore di file non valido: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: numero di righe non valido" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: origine dell'array non valida" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantum di callback non valido" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "nome della variabile array vuoto" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "necessario il supporto alla variabile array" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "\"%s\": manca il carattere di formato" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "\"%c\": specifica di formato dell'orario non valida" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "\"%c\": carattere di formato non valido" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "attenzione: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "cifra esadecimale mancante in \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "cifra unicode mancante in \\%c" @@ -658,19 +659,19 @@ msgstr "nessun'altra directory" msgid "%s: invalid argument" msgstr "%s: argomento di limite non valido" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "stack delle directory vuoto" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "indice dello stack delle directory" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -713,7 +714,7 @@ msgstr "" " -N\tVisualizza l'N-sima voce contando a partire da destra dell'elenco\n" "\tmostrato da dirs quando invocato senza opzioni, iniziando da zero." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -759,7 +760,7 @@ msgstr "" " \n" " Il comando interno \"dirs\" visualizza lo stack delle directory." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -802,41 +803,41 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: specifica di timeout non valida" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "errore in lettura: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "è possibile eseguire \"return\" solo da una funzione o da uno script chiamato" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "impossibile azzerare contemporaneamente una funzione e una variabile" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: impossibile azzerare" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: impossibile azzerare: %s in sola lettura" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: non è una variabile array" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: non è una funzione" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: impossibile azzerare" @@ -845,20 +846,20 @@ msgstr "%s: impossibile azzerare" msgid "shift count" msgstr "numero di scorrimenti" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "impossibile impostare e azzerare opzioni di shell contemporaneamente" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nome dell'opzione di shell non valido" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "necessario un nome file come argomento" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: file non trovato" @@ -871,61 +872,61 @@ msgstr "impossibile sospendere" msgid "cannot suspend a login shell" msgstr "impossibile sospendere una shell di login" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s ha \"%s\" come alias\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s è una parola chiave di shell\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s è una funzione\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s è un comando interno di shell\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s è un comando interno di shell\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s è %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "hash effettuato su %s (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: argomento di limite non valido" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "\"%c\": comando errato" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: impossibile recuperare il limite: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limite" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: impossibile modificare il limite: %s" @@ -944,359 +945,369 @@ msgstr "\"%c\": operatore di modo simbolico non valido" msgid "`%c': invalid symbolic mode character" msgstr "\"%c\": carattere di modo simbolico non valido" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " riga " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "ultimo comando: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Interruzione..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "errore di comando sconosciuto" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "tipo di comando errato" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "connettore errato" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "salto errato" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: variabile non assegnata" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atempo di attesa scaduto per l'input: auto-logout\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "impossibile redirigere lo standard input da /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: \"%c\": carattere di formato non valido" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "errore della pipe" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: limitato: impossibile specificare \"/\" nei nomi dei comandi" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: comando non trovato" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: interprete errato" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: impossibile eseguire il file binario" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s è un comando interno di shell\n" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossibile duplicare fd %d su fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "superato il livello di ricorsione dell'espressione" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "underflow dello stack di ricorsione" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "errore di sintassi nell'espressione" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "tentata un'assegnazione a una non variabile" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "errore di sintassi nell'espressione" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "divisione per 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "bug: token di expassign errato" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "atteso \":\" per l'espressione condizionale" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "esponente minore di 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "atteso identificatore dopo un pre-incremento o un pre-decremento" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "\")\" mancante" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "errore di sintassi: atteso un operando" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "errore di sintassi: operatore aritmetico non valido" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (il token dell'errore è \"%s\")" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "base aritmetica non valida" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "valore troppo grande per la base" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: errore di espressione\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: impossibile accedere alle directory padre" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "impossibile reimpostare il modo nodelay per fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "impossibile allocare un nuovo descrittore di file per l'input della bash da " "fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer già esistente per il nuovo fd %d" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pipe pgrp" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "il pid %d del fork appare nel job in esecuzione %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "eliminazione del job %d interrotto con il gruppo di processi %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: processo %5ld (%s) in the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) segnato come ancora in vita" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: pid inesistente" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Segnale %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Completato" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Fermato" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Fermato(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "In esecuzione" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Eseguito(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Uscita %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Stato sconosciuto" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(core dump creato) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (dir: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid del figlio (%ld a %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: il pid %ld non è un figlio di questa shell" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: nessun record del processo %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: il job %d è fermo" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: il job è terminato" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: il job %d è già in background" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: attivato WNOHANG per evitare blocchi indefiniti" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: riga %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core dump creato)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(dir ora: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp non riuscita" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: disciplina di linea" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplina di linea" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "impossibile impostare il gruppo di processi del terminale (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "nessun controllo dei job in questa shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: asserzione non riuscita: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1305,39 +1316,39 @@ msgstr "" "\r\n" "malloc: %s:%d: asserzione non riuscita\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "sconosciuto" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: blocco eliminato nell'elenco dei disponibili" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: chiamata con un argomento di blocco già liberato" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: chiamata con un argomento di blocco non allocato" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: riscontrato un underflow; mh_nbytes fuori intervallo" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: dimensioni diverse dei blocchi di inizio e di fine" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: chiamata con un argomento di blocco non allocato" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: riscontrato un underflow; mh_nbytes fuori intervallo" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: dimensioni diverse dei blocchi di inizio e di fine" @@ -1380,22 +1391,22 @@ msgstr "%s: specifica del percorso di rete errata" msgid "network operations not supported" msgstr "operazione di rete non supportata" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: impossibile cambiare la localizzazione (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: impossibile cambiare la localizzazione (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: impossibile cambiare la localizzazione (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: impossibile cambiare la localizzazione (%s): %s" @@ -1413,150 +1424,150 @@ msgstr "È presente della nuova posta in $_" msgid "The mail in %s has been read\n" msgstr "La posta in %s è stata letta\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "errore di sintassi: richiesta espressione aritmetica" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "errore di sintassi: \";\" non atteso" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "errore di sintassi: \"((%s))\"" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo di istruzione errata %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-document alla riga %d è delimitato da un EOF (era richiesto \"%s\")" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "make_redirection: istruzione di reindirizzamento \"%d\" fuori dell'intervallo" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF non atteso durante la ricerca di \"%c\"" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "EOF non atteso durante la ricerca di \"]]\"" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" "errore di sintassi nell'espressione condizionale: token non atteso \"%s\"" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "errore di sintassi nell'espressione condizionale" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "token non atteso \"%s\", era atteso \")\"" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "atteso \")\"" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argomento non atteso \"%s\" per l'operatore unario condizionale" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "argomento non atteso per l'operatore unario condizionale" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "token non atteso \"%s\", era atteso un operatore binario condizionale" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "atteso operatore binario condizionale" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argomento non atteso \"%s\" per l'operatore binario condizionale" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "argomento non atteso per l'operatore binario condizionale" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "token non atteso \"%c\" nel comando condizionale" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "token non atteso \"%s\" nel comando condizionale" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "token non atteso %d nel comando condizionale" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "errore di sintassi vicino al token non atteso \"%s\"" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "errore di sintassi vicino a \"%s\"" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "errore di sintassi: EOF non atteso" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "errore di sintassi" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Usare \"%s\" per uscire dalla shell.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF non atteso durante la ricerca di \")\"" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: funzione \"%s\" non trovata" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1585,90 +1596,94 @@ msgstr "xtrace_set: puntatore a file NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != numfile xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: \"%c\": carattere di formato non valido" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "descrittore di file fuori dell'intervallo" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirezione ambigua" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: impossibile sovrascrivere il file esistente" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: limitato: impossibile redirigere l'output" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "impossibile creare un file temporaneo per here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: impossibile assegnare fd a una variabile" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port non supportata senza rete" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "errore di reindirizzamento: impossibile duplicare fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "impossibile trovare /tmp, è necessario crearla" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp deve essere un nome di directory valido" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opzione non valida" -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "impossibile reimpostare il modo nodelay per fd %d" -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "impossibile reimpostare il modo nodelay per fd %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: è una directory" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Manca il nome" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versione %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1677,54 +1692,54 @@ msgstr "" "Uso:\t%s [opzione lunga GNU] [opzione] ...\n" "\t%s [opzione lunga GNU] [opzione] file-script ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Opzioni lunghe GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Opzioni di shell:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD o -c comando o -O opzione_shopt\t\t(solo invocazione)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\topzione -%s oppure -o\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Digitare «%s -c \"help set\"» per ulteriori informazioni sulle opzioni di " "shell.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Digitare \"%s -c help\" per ulteriori informazioni sui comandi interni di " "shell.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Usare il comando \"bashbug\" per segnalare i bug.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operazione non valida" @@ -1898,92 +1913,97 @@ msgstr "Numero di segnale sconosciuto" msgid "Unknown Signal #%d" msgstr "Segnale sconosciuto n° %d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "sostituzione errata: nessuna chiusura di \"%s\" in %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: impossibile assegnare una lista a un membro di un array" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "impossibile creare una pipe per la sostituzione del processo" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "impossibile creare un figlio per la sostituzione del processo" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "impossibile aprire la pipe con nome %s in lettura" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "impossibile aprire la pipe con nome %s in scrittura" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "impossibile duplicare una pipe con nome %s come fd %d" -#: subst.c:5959 +#: subst.c:6062 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "sostituzione errata: manca «\"» di chiusura in %s" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "impossibile creare una pipe per la sostituzione del comando" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "impossibile creare un figlio per la sostituzione del comando" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: impossibile duplicare la pipe come fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: %s: valore non valido per il descrittore del file di traccia" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: sostituzione errata" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: numero di righe non valido" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "\"%s\": nome alias non valido" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametro nullo o non impostato" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametro nullo o non impostato" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expressione di sottostringa < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: sostituzione errata" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: impossibile assegnare in questo modo" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1991,12 +2011,12 @@ msgstr "" "le versioni future della shell forzeranno la valutazione come fosse una " "sostituzione aritmetica" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sostituzione errata: manca «\"» di chiusura in %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "nessuna corrispondenza: %s" @@ -2019,30 +2039,35 @@ msgstr "atteso \")\"" msgid "`)' expected, found %s" msgstr "atteso \")\", trovato %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: atteso operatore unario" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: atteso operatore binario" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "\"]\" mancante" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "numero di segnale non valido" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: valore errato in trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2050,88 +2075,88 @@ msgstr "" "run_pending_traps: il gestore dei segnali è SIG_DFL, viene inviato " "nuovamente %d (%s)" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: segnale errato %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "errore nell'importazione della definizione di funzione per \"%s\"" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "livello di shell (%d) troppo alto, reimpostato a 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: nessun contesto di funzione nell'ambito corrente" -#: variables.c:2432 +#: variables.c:2674 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: impossibile assegnare fd a una variabile" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: %s: valore non valido per il descrittore del file di traccia" +msgstr "" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: nessun contesto di funzione nell'ambito corrente" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s ha exportstr null" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carattere non valido %d in exportstr per %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "nessun \"=\" in exportstr per %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: la prima parte di shell_variables non è un contesto di " "funzione" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nessun contesto global_variables" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: la prima parte di shell_variables non è un ambito temporaneo " "d'ambiente" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: impossibile aprire come FILE" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valore non valido per il descrittore del file di traccia" -#: variables.c:5669 +#: variables.c:6322 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s fuori dall'intervallo" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." msgstr "Copyright © 2011 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2157,22 +2182,22 @@ msgstr "Questo è software libero; è possibile modificarlo e ridistribuirlo.\ msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Non c'è ALCUNA GARANZIA, nei limiti permessi dalla legge.\n" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: impossibile allocare %lu byte (%lu byte allocati)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: impossibile allocare %lu byte" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: impossibile allocare %lu byte (%lu byte allocati)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: impossibile allocare %lu byte" @@ -2391,13 +2416,13 @@ msgstr "umask [-p] [-S] [modo]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "wait [id]" #: builtins.c:181 #, fuzzy msgid "wait [pid ...]" -msgstr "wait [id]" +msgstr "wait [pid]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2484,8 +2509,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] formato [argomenti]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2504,7 +2530,8 @@ msgstr "" "suffisso] [parola]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o opzione] [-DE] [nome ...]" #: builtins.c:242 @@ -2517,9 +2544,10 @@ msgstr "" "quantità] [array]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n numero] [-O origine] [-s numero] [-t] [-u fd] [-C callback] [-" "c quantità] [array]" @@ -2705,6 +2733,7 @@ msgstr "" " Lo stato di uscita è 0 a meno che N non sia maggiore o uguale a 1." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2715,7 +2744,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Esegue comandi interni di shell.\n" " \n" @@ -2974,11 +3003,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3107,6 +3136,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3144,7 +3179,7 @@ msgstr "" " Restituisce successo a meno che non venga riscontrato un errore di " "scrittura." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3167,7 +3202,7 @@ msgstr "" " Restituisce successo a meno che non venga riscontrato un errore di " "scrittura." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3223,7 +3258,7 @@ msgstr "" " Restituisce successo a meno che NOME non sia un comando interno di shell " "o si riscontri un errore." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3243,7 +3278,7 @@ msgstr "" " Restituisce lo stato di uscita del comando o successo se il comando è " "nullo." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3334,7 +3369,7 @@ msgstr "" "raggiunta\n" " la fine delle opzioni o viene riscontrato un errore." -#: builtins.c:688 +#: builtins.c:692 #, fuzzy msgid "" "Replace the shell with the given command.\n" @@ -3378,7 +3413,7 @@ msgstr "" " Restituisce successo a meno che non sia trovato il COMANDO o si " "riscontri un errore di ridirezione." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3390,7 +3425,7 @@ msgstr "" " Esce dalla shell con uno stato N. Se N è omesso lo stato di uscita\n" " è quello dell'ultimo comando eseguito." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3404,7 +3439,7 @@ msgstr "" "se non eseguito\n" " in una shell di login." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3464,7 +3499,7 @@ msgstr "" " Restituisce successo o lo stato del comando eseguito, non zero se si " "riscontra un errore." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3485,7 +3520,7 @@ msgstr "" " Stato del comando messo in primo piano, o insuccesso se si riscontra un " "errore." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3510,7 +3545,7 @@ msgstr "" " Restituisce successo a meno che il controllo dei job non sia abilitato o " "si riscontri un errore." -#: builtins.c:787 +#: builtins.c:791 #, fuzzy msgid "" "Remember or display program locations.\n" @@ -3558,7 +3593,7 @@ msgstr "" " Restituisce successo a meno che non sia trovato NOME o sia fornita una " "opzione non valida." -#: builtins.c:812 +#: builtins.c:816 #, fuzzy msgid "" "Display information about builtin commands.\n" @@ -3574,7 +3609,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3602,7 +3637,7 @@ msgstr "" " Restituisce successo a meno che non venga trovato il MODELLO o sia " "fornita una opzione non valida." -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3612,7 +3647,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3677,7 +3713,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:872 +#: builtins.c:877 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3725,7 +3761,7 @@ msgstr "" "si riscontri un errore.\n" " Se viene usato -x, restituisce lo stato di uscita del COMANDO." -#: builtins.c:899 +#: builtins.c:904 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3759,7 +3795,7 @@ msgstr "" " Restituisce successo a meno che non venga fornita una opzione non valida " "o uno SPECJOB." -#: builtins.c:918 +#: builtins.c:923 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3806,7 +3842,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3901,7 +3937,7 @@ msgstr "" " Se l'ultimo ARG viene valutato pari a 0 restituisce 1, altrimenti " "restituisce 0." -#: builtins.c:987 +#: builtins.c:992 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3923,7 +3959,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -4006,7 +4042,7 @@ msgstr "" "timeout in lettura\n" " o venga fornito un descrittore di file non valido come argomento per -u." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -4028,7 +4064,7 @@ msgstr "" " Restituisce N, oppure insuccesso se la shell non sta eseguendo una " "funzione o uno script." -#: builtins.c:1047 +#: builtins.c:1052 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4214,7 +4250,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce successo a meno che non venga fornita una opzione non valida." -#: builtins.c:1132 +#: builtins.c:1137 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4255,7 +4291,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "NOME sia in sola lettura." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4291,7 +4327,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "il NOME non sia valido." -#: builtins.c:1173 +#: builtins.c:1178 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4331,7 +4367,7 @@ msgstr "" " Restituisce successo a meno che non venga fornita una opzione non valida " "o NOME non sia valido." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4349,7 +4385,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce successo a meno che N non sia negativo o maggiore di $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4374,7 +4410,7 @@ msgstr "" "insuccesso se\n" " il NOMEFILE non può essere letto." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4400,7 +4436,7 @@ msgstr "" " Restituisce successo a meno che non sia abilitato il controllo job o si " "riscontri un errore." -#: builtins.c:1254 +#: builtins.c:1259 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4570,7 +4606,7 @@ msgstr "" "viene valutata\n" " falsa o viene fornito un argomento non valido." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4583,7 +4619,7 @@ msgstr "" "deve\n" " essere un \"]\" letterale per corrispondere al \"[\" di apertura." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4603,7 +4639,7 @@ msgstr "" " Stato di uscita:\n" " Sempre successo." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4689,7 +4725,7 @@ msgstr "" " Restituisce successo a meno che SPEC_SEGNALE non sia valido o si " "fornisca una opzione non valida." -#: builtins.c:1393 +#: builtins.c:1398 #, fuzzy msgid "" "Display information about command type.\n" @@ -4752,7 +4788,7 @@ msgstr "" " Restituisce successo se tutti i NOMI vengono trovati; insuccesso in caso " "contrario." -#: builtins.c:1424 +#: builtins.c:1429 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4848,7 +4884,7 @@ msgstr "" " Restituisce successo a meno che non venga fornita una opzione non valida " "o venga riscontrato un errore." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4885,7 +4921,7 @@ msgstr "" " Restituisce successo a meno che MODO non sia valido o venga fornita una " "opzione non valida." -#: builtins.c:1494 +#: builtins.c:1499 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4894,13 +4930,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4921,7 +4959,7 @@ msgstr "" "fornita una\n" " opzione non valida." -#: builtins.c:1515 +#: builtins.c:1523 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4949,7 +4987,7 @@ msgstr "" "fornita una opzione non\n" " valida." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4974,7 +5012,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -5005,7 +5043,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5043,7 +5081,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato di uscita dell'ultimo comando eseguito." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5072,7 +5110,7 @@ msgstr "" " Stato di uscita:\n" " Viene restituito lo stato della PIPELINE." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5091,7 +5129,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5130,7 +5168,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5148,7 +5186,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5166,7 +5204,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1653 +#: builtins.c:1661 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5192,7 +5230,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato di uscita del COMANDO." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5218,7 +5256,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce successo a meno che il NOME non sia in sola lettura." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5237,7 +5275,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5261,7 +5299,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato del job ripristinato." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5279,7 +5317,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce 1 se ESPRESSIONE è valutata 0, altrimenti restituisce 0." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5336,7 +5374,7 @@ msgstr "" " Stato di uscita:\n" " 0 o 1 a seconda del valore dell'ESPRESSIONE." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5464,7 +5502,7 @@ msgstr "" "decidere quale\n" " \t\tcomando dovrebbe essere salvato nell'elenco della cronologia.\n" -#: builtins.c:1803 +#: builtins.c:1811 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5524,7 +5562,7 @@ msgstr "" "non abbia\n" " successo il cambio di directory." -#: builtins.c:1837 +#: builtins.c:1845 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5576,7 +5614,7 @@ msgstr "" "valido o non\n" " abbia successo il cambio di directory." -#: builtins.c:1867 +#: builtins.c:1875 #, fuzzy msgid "" "Display directory stack.\n" @@ -5630,14 +5668,14 @@ msgstr "" " Restituisce successo a meno che non sia fornita un'opzione non valida o " "si riscontri un errore." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5671,7 +5709,7 @@ msgstr "" "fornita\n" " una opzione non valida o NOMEOPZ è disabilitato." -#: builtins.c:1919 +#: builtins.c:1927 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5741,7 +5779,7 @@ msgstr "" "o si riscontri\n" " un errore di scrittura o assegnazione." -#: builtins.c:1953 +#: builtins.c:1961 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5760,10 +5798,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5797,7 +5839,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5821,7 +5863,8 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:1996 +#: builtins.c:2006 +#, fuzzy msgid "" "Modify or display completion options.\n" " \n" @@ -5836,6 +5879,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5885,7 +5929,7 @@ msgstr "" "o NOME non\n" " abbia una specifica di completamento definita." -#: builtins.c:2026 +#: builtins.c:2037 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5966,7 +6010,7 @@ msgstr "" "valida, ARRAY sia\n" " in sola lettura oppure non indicizzato." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5976,9 +6020,15 @@ msgstr "" " \n" " Sinonimo per \"mapfile\"." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright © 2011 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Licenza GPLv2+: GNU GPL versione 2 o successive \n" #~ msgid ":" #~ msgstr ":" @@ -5991,20 +6041,3 @@ msgstr "" #~ msgid "times" #~ msgstr "times" - -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Copyright © 2011 Free Software Foundation, Inc." - -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" - -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Licenza GPLv2+: GNU GPL versione 2 o successive \n" - -#~ msgid "wait [pid]" -#~ msgstr "wait [pid]" diff --git a/po/ja.gmo b/po/ja.gmo index 3f5a091a3..bace2114c 100644 Binary files a/po/ja.gmo and b/po/ja.gmo differ diff --git a/po/ja.po b/po/ja.po index 171eadb34..b1feb4fdb 100644 --- a/po/ja.po +++ b/po/ja.po @@ -3,136 +3,138 @@ # This file is distributed under the same license as the bash package. # Kyoichi Ozaki , 2000. # Takeshi Hamasaki , 2011, 2013. -# Yasuaki Taniguchi , 2011, 2014. +# Yasuaki Taniguchi , 2011, 2014, 2017. msgid "" msgstr "" -"Project-Id-Version: GNU bash 4.3-rc2\n" +"Project-Id-Version: GNU bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2014-10-30 05:04+0100\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2017-07-02 01:46+0100\n" "Last-Translator: Yasuaki Taniguchi \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: Japanese\n" +"Language: ja\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.0.2\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "誤った配列の添字" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: インデックス配列から連想配列に変換することはできません" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: 無効な連想配列のキーです" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: 配列の添字に非数字を設定できません" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: 連想配列を設定するときには添字をつけなければいけません" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: %s を作成できません" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: コマンドのキーマップがありません" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: 最初の非空白類文字が `\"' ではありません" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "閉じる `%c' が %s にありません" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: 区切り文字コロン(:)がありません" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "中括弧展開: %s へメモリを割り当てられません" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" "中括弧展開: failed to allocate memory for %d 要素のメモリの割り当てに失敗しま" "した" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "中括弧展開: `%s' へのメモリ割り当てに失敗しました" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': 無効なエイリアス名です" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "行編集が有効になっていません" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': 無効なキーマップ名です" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: %s を読み込めません" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': 割り当て解除できません" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': 不明な関数名です" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s はどのキーにも割り当てられていません。\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s は次を通して起動します " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': 割り当て解除できません" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "ループ回数" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "`for'、`while' または `until' ループでのみ意味があります" @@ -146,234 +148,234 @@ msgstr "" " \n" " EXPR が無い場合、次を返します " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME が設定されていません" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "引数が多すぎます" -#: builtins/cd.def:336 +#: builtins/cd.def:341 #, fuzzy msgid "null directory" msgstr "他のディレクトリはありません" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD が設定されていません" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "%d 行: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "警告: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: 使用法: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: オプションには引数が必要です" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: 数字の引数が必要です" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: 見つかりません" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: 無効なオプションです" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: 無効なオプション名です" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': 有効な識別子ではありません" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "無効な八進数です" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "無効な十六進数です" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "無効な数字です" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: 無効なシグナル指定です" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': pid または有効なジョブ指定ではありません" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: 読み取り専用の変数です" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s が範囲外です" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "引数" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s が範囲外です" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: そのようなジョブはありません" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: ジョブ制御が無効になっています" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "ジョブ制御が無効になっています" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: 制限されています" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "制限されています" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: シェルのビルトイン関数ではありません" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "書き込みエラー: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "ターミナル属性の設定時にエラーが発生しました : %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "ターミナル属性の取得時にエラーが発生しました : %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: カレントディレクトリの取得時にエラーが発生しました : %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: 曖昧なジョブ指定です" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" -msgstr "" +msgstr "このバージョンではヘルプが利用できません" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: 無効なアクション名です" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: 補完指定がありません" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "警告: -F オプションは期待通りに動作しないかもしれません" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "警告: -C オプションは期待通りに動作しないかもしれません" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "補完機能は現在実行されていません" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "関数の中でのみ使用できます" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: 参照変数は配列であってはいけません" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: 自身を参照する名前参照変数は許可されていません" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: 循環名前参照です" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: 名前参照として無効な変数です" +msgstr "`%s': 名前参照として無効な変数です" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "関数作成時に `-f' を使用できません" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: 読み取り専用関数です" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: この方法で配列変数を消去することはできません" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: 連想配列からインデックス配列に変換することはできません" @@ -395,7 +397,7 @@ msgstr "%s が共有オブジェクト %s に存在しません: %s" #: builtins/enable.def:387 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "" +msgstr "関数 %s のロードが失敗を返しました(%d): ロードされませんでした" #: builtins/enable.def:512 #, c-format @@ -407,68 +409,68 @@ msgstr "%s: 動的にロードされていません" msgid "%s: cannot delete: %s" msgstr "%s: 削除できません: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: ディレクトリです" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: 通常ファイルではありません" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: ファイルが大きすぎます" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: バイナリファイルを実行できません" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: 実行できません: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "ログアウト\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "ログインシェルではありません: `exit' を使用してください" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "停止しているジョブがあります。\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "動作中のジョブがあります。\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "コマンドが見つかりません" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "ヒストリ指定" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: 一時ファイルを開くことができません: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "カレント" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "ジョブ %d がジョブ制御なしで開始されました" @@ -483,27 +485,26 @@ msgstr "%s: 不正なオプションです -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: オプションには引数が必要です -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "ハッシュが無効になっています" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: ハッシュテーブルが空です\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "hits\tcommand\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "キーワードに一致したシェルコマンド `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -511,12 +512,12 @@ msgstr "" "`%s' に一致するヘルプ項目がありません。`help help'、`man -k %s' または `info " "%s' を試してください" -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: 開くことができません: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -538,20 +539,21 @@ msgstr "" "味します。\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "-anrw を2つ以上一緒に使用することはできません" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "ヒストリ位置" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: 無効な引数です" +msgstr "%s: 無効なタイムスタンプです" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: ヒストリの展開に失敗しました" @@ -565,16 +567,16 @@ msgstr "%s: inlib が失敗しました" msgid "no other options allowed with `-x'" msgstr "`-x' は他のオプションを同時に使用できません" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: 引数はプロセスIDかジョブIDでなければいけません" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "不明なエラーです" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "式が予期されます" @@ -583,69 +585,69 @@ msgstr "式が予期されます" msgid "%s: not an indexed array" msgstr "%s: インデックス配列ではありません" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: 無効なファイル記述子指定です" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: 無効なファイル記述子: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: 無効な行数です" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: 無効な配列の原点です" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: コールバックの quantum が無効です" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "空の配列変数名です" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "配列変数のサポートが必要です" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "`%s': 書式指定文字がありません" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': 無効な時間書式指定です" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "`%c': 無効な書式指定文字です" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "警告: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "書式解析問題です: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "\\x 用の十六進数字がありません" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "\\%c 用のユニコード数値がありません" @@ -659,19 +661,19 @@ msgstr "他のディレクトリはありません" msgid "%s: invalid argument" msgstr "%s: 無効な引数です" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<カレントディレクトリがありません>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "ディレクトリスタックが空です" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "ディレクトリスタックのインデックス" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -713,7 +715,7 @@ msgstr "" " -N\tオプションなしで起動された場合にリストの末尾から数えて\n" "\tN番目の要素を表示します。開始番号は0です。" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -757,7 +759,7 @@ msgstr "" " \n" " `dirs' ビルトインコマンドでディレクトリスタックを表示します。" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -800,62 +802,62 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: 無効なタイムアウト指定です" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "読み込みエラー: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "`return' は関数または source されたスクリプト内のみで利用できます" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "変数と関数を同時に消去することはできません" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: 消去できません" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: 消去できません: %s は読み取り専用です" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: 配列変数ではありません" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: 関数ではありません" -#: builtins/setattr.def:196 -#, fuzzy, c-format +#: builtins/setattr.def:194 +#, c-format msgid "%s: cannot export" -msgstr "%s: 消去できません" +msgstr "%s: export できません" #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "シフト回数" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "シェルオプションを同時に有効かつ無効にできません" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: 無効なシェルオプション名です" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "ファイル名が引数として必要です" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: ファイルが見つかりません" @@ -868,61 +870,61 @@ msgstr "中断できません" msgid "cannot suspend a login shell" msgstr "ログインシェルを中断できません" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s は `%s' のエイリアスです\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s はシェルの予約語です\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s は関数です\n" -#: builtins/type.def:300 -#, fuzzy, c-format +#: builtins/type.def:299 +#, c-format msgid "%s is a special shell builtin\n" -msgstr "%s はシェル組み込み関数です\n" +msgstr "%s は特殊シェル組み込み関数です\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s はシェル組み込み関数です\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s は %s です\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s はハッシュされています (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: limit の無効な引数です" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': 誤ったコマンドです" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: limit を取得できません: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: limit を変更できません : %s" @@ -941,357 +943,367 @@ msgstr "`%c': 無効なシンボリックモード演算子です" msgid "`%c': invalid symbolic mode character" msgstr "`%c': 無効なシンボリックモード文字です" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " 行 " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "最後のコマンド: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "中止しています..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "情報: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "不明なコマンドエラーです" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "誤ったコマンドタイプです" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "誤った接続です" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "誤ったジャンプです" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: 未割り当ての変数です" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\a入力待ちがタイムアウトしました: 自動ログアウト\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "/dev/null から標準入力に対してリダイレクトできません: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': 無効な書式文字です" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "パイプエラー" -#: execute_cmd.c:4496 -#, fuzzy, c-format +#: execute_cmd.c:4671 +#, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "%s: 関数の入れ子レベルの最大値を超えています (%d)" +msgstr "eval: eval の入れ子レベルの最大値を超えています (%d)" -#: execute_cmd.c:4508 -#, fuzzy, c-format +#: execute_cmd.c:4683 +#, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "%s: 関数の入れ子レベルの最大値を超えています (%d)" +msgstr "%s: source の入れ子レベルの最大値を超えています (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: 関数の入れ子レベルの最大値を超えています (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: 制限されています: `/' をコマンド名の中に指定できません" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: コマンドが見つかりません" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: 誤ったインタプリタです" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: バイナリファイルを実行できません: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "`%s': 特殊シェル組み込み関数です" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "fd %d を fd %d に複製できません" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "式の再帰可能レベルを越えました" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "再帰スタックがアンダーフローしました" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "式に構文エラーがあります" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "非変数に割り当てを行おうとしてます" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "式に構文エラーがあります" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "0 による除算です" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "バグ: 誤った式のトークンです" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "条件式には `:' が予期されます" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "0より小さい指数部です" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "識別子は前置インクリメントまたは前置デクリメントが予期されます" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "`)' がありません" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "構文エラー: オペランドが予期されます" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "構文エラー: 無効な計算演算子です" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (エラーのあるトークンは \"%s\")" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "無効な基底の数値です" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "基底の値が大きすぎます" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: 式のエラー\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: 親ディレクトリにアクセスできません" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "ファイル記述子(fd) %d を無遅延モードに再設定できません" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "新規ファイル記述子(fd) %d を bash の入力として割り当てられません" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: 新規 fd %d のバッファはすでに存在します" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "実行中のジョブ %2$d で fork した pid %1$d が出現しました" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "プロセスグループ %2$ld のジョブ %1$d を削除しています" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: プロセス %5ld (%s) が the_pipeline にあります" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) はまだ存在しているとマークされています" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: そのような pid は存在しません" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "シグナル %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "終了" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "停止" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "停止 (%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "実行中" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "終了(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "終了 %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "不明なステータス" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(コアダンプ) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "子プロセス setpgid (%ld から %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld はこのシェルの子プロセスではありません" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: プロセス %ld の記録がありません" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: ジョブ %d は停止しています" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: ジョブは終了しました" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: ジョブ %d はすでにバックグラウンドで動作しています" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: 不定のブロックを避けるために WNOHANG をオンにしました。" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: %d 行: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (コアダンプ)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(wd now: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp が失敗しました" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: line discipline" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "端末プロセスグループを設定できません (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "このシェルではジョブ制御が無効になっています" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: 失敗したアサーション: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1300,39 +1312,39 @@ msgstr "" "\r\n" "malloc: %s:%d: アサーション失敗\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "不明" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: free ブロックリストが壊れています" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: 既に free されたブロックを引数として呼び出されました" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: 未割当のブロックを引数として呼び出されました" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: アンダーフローを検出しました。 mh_nbytes が範囲外です" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: 開始と終了の塊の大きさが異なっています" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: 未割当のブロックを引数として呼び出されました" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: アンダーフローを検出しました。 mh_nbytes が範囲外です" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: 開始と終了の塊の大きさが異なっています" @@ -1374,22 +1386,22 @@ msgstr "%s: ネットワークパス指定に誤りがあります" msgid "network operations not supported" msgstr "ネットワーク操作はサポートされていません" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: ロケールを変更できません (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: ロケールを変更できません (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ロケールを変更できません (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ロケールを変更できません (%s): %s" @@ -1407,148 +1419,148 @@ msgstr "新しいメールが $_ にあります" msgid "The mail in %s has been read\n" msgstr "%s のメールは既読です\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "構文エラー: 数値の式が必要です" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "構文エラー: 予期しない `;' です" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "構文エラー: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: 誤った指定の種類 %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "ヒアドキュメントの %d 行目でファイル終了 (EOF) に達しました (`%s' が必要)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: リダイレクト指定 `%d' は範囲外です" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "対応する `%c' を探索中に予期しないファイル終了 (EOF) です" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "`]]' を探索中に予期しないファイル終了 (EOF) です" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "条件式に構文エラー: 予期しないトークン `%s' です" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "条件式に構文エラーがあります" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "予期しないトークン `%s' です。`)' が予期されます" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "`)' が予期されます" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "条件単項演算子に予期しない引数 `%s' です" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "条件単項演算子に予期しない引数です" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "`%s` は予期しないトークンです。条件二項演算子が予期されます" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "条件二項演算子が予期されます" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "条件二項演算子に予期しない引数 `%s' です" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "条件二項演算子に予期しない引数です" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "条件コマンドに予期しないトークン `%c' があります" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "条件コマンドに予期しないトークン `%s' があります" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "条件コマンドに予期しないトークン %d があります" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "予期しないトークン `%s' 周辺に構文エラーがあります" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "`%s' 周辺に構文エラーがあります" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "構文エラー: 予期しないファイル終了 (EOF) です" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "構文エラー" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "シェルから脱出するには \"%s\" を使用してください。\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "対応する `)' を探索中に予期しないファイル終了(EOF)です" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: 関数 `%s' が見つかりません" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1577,90 +1589,94 @@ msgstr "xtrace_set: NULL ファイルポインタです" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': 無効な書式文字です" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "ファイル記述子が範囲外です" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: 曖昧なリダイレクトです" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: 存在するファイルを上書きできません" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: 制限されています: 出力をリダイレクト出来ません" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "ヒアドキュメント用一時ファイルを作成できません: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ファイル記述子 (fd) を変数に設定することはできません" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "ネットワークが無効な場合 /dev/(tcp|udp)/host/port はサポートされません" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "リダイレクトエラー: ファイル記述子を複製できません" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "/tmp が見つかりません。作成してください!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp は有効なディレクトリ名でなければいけません" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: 無効なオプション" -#: shell.c:1282 -#, fuzzy, c-format +#: shell.c:1299 +#, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "ファイル記述子(fd) %d を無遅延モードに再設定できません" +msgstr "uidを %d に設定できません: 実効uid %d" -#: shell.c:1289 -#, fuzzy, c-format +#: shell.c:1306 +#, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "ファイル記述子(fd) %d を無遅延モードに再設定できません" +msgstr "gidを %d に設定できません: 実効gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "デバッガを開始できません。デバッガモードが無効になっています" -#: shell.c:1566 -#, fuzzy, c-format +#: shell.c:1608 +#, c-format msgid "%s: Is a directory" msgstr "%s: ディレクトリです" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "私は名前がありません!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, バージョン %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1669,50 +1685,51 @@ msgstr "" "使用法:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU 形式の長いオプション:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "シェルオプション:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD, -c command または -O shopt_option\t\t(起動時のみ)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s または -o option\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "シェルオプションの詳細については `%s -c \"help set\"'と入力してください。\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "シェル組み込みコマンドについては `%s -c help' と入力してください。\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "バグ報告をする場合は `bashbug' コマンドを使用してください。\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "bashホームページ: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" +"GNUソフトウェアを使用する時の一般的なヘルプ : \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: 無効な操作です" @@ -1886,103 +1903,108 @@ msgstr "不明なシグナル番号" msgid "Unknown Signal #%d" msgstr "不明なシグナル番号 %d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "誤った代入: 閉じる `%s' が %s に存在しません" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: リストを配列要素に割り当てできません" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "プロセス代入ではパイプを作成できません" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "プロセス代入では子プロセスを作成できません" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "名前付きパイプ %s を読み込み用に開けません" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "名前付きパイプ %s を書き込み用に開けません" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "名前付きパイプ %s をファイル記述子(fd) %d として複製できません" -#: subst.c:5959 +#: subst.c:6062 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "誤った代入: %s に閉じる \"`\" がありません" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "コマンド代入ではパイプを作成できません" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "コマンド代入では子プロセスを作成できません" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: パイプを fd 1 として複製できません" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: 名前参照として無効な変数です" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: 誤った代入です" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: 無効な行数です" -#: subst.c:6807 -#, fuzzy, c-format +#: subst.c:6840 subst.c:6987 +#, c-format msgid "%s: invalid variable name" -msgstr "`%s': 無効なエイリアス名です" +msgstr "%s: 無効な変数名です" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: パラメータが null または設定されていません" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: パラメータが null または設定されていません" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: substring expression < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: 誤った代入です" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: この方法で割当はできません" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "将来のバージョンのシェルでは強制的に数値代入として評価されます" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "誤った代入: %s に閉じる \"`\" がありません" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "一致しません: %s" @@ -2005,30 +2027,35 @@ msgstr "`)' が予期されます" msgid "`)' expected, found %s" msgstr "`)' が予期されますが、見つかったのは %s です" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: 単項演算子が予期されます" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: 二項演算子が予期されます" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "`]'がありません" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "無効なシグナル番号" -#: trap.c:387 +#: trap.c:320 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: eval の入れ子レベルの最大値を超えています (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: trap_list[%d] に誤った値があります: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2036,86 +2063,86 @@ msgstr "" "run_pending_traps: シグナルハンドラーは SIG_DFLです。, %d (%s) を自身に再送し" "ます。" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: 誤ったシグナル %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "`%s' の関数定義をインポート中にエラーが発生しました" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "シェルレベル (%d) は高すぎます。1に再設定されました" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: 現在のスコープは関数コンテキストではありません" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: 変数が初期化されていないかもしれません" -#: variables.c:3043 +#: variables.c:3453 #, fuzzy, c-format msgid "%s: assigning integer to name reference" msgstr "%s: 名前参照として無効な変数です" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: 現在のスコープは関数コンテキストではありません" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s は null の exportstr を持っています" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%2$s に対する exportstr で %1$d は無効な文字です" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s に対する exportstr に `=' がありません" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: shell_variables の先頭です。関数コンテキストではありません" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: global_variables コンテキストではありません" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables の先頭です。一時環境スコープではありません" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ファイルとして開くことができません" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: トレースファイル記述子として無効な値です" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: 値の互換性が範囲外です" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2013 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2138,22 +2165,22 @@ msgstr "This is free software; you are free to change and redistribute it." msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "There is NO WARRANTY, to the extent permitted by law." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %lu バイトを割当できません (%lu バイトを割当済み)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: %lu バイトを割当できません" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: %lu バイトを割当できません (%lu バイトを割当済み)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: %lu バイトを割当できません" @@ -2207,9 +2234,8 @@ msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" #: builtins.c:80 -#, fuzzy msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2280,9 +2306,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobspec ...] または jobs -x command [args]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" #: builtins.c:134 msgid "" @@ -2357,16 +2382,16 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] name [name ...]" #: builtins.c:171 -#, fuzzy msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2458,8 +2483,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [arguments]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2468,31 +2494,31 @@ msgstr "" "suffix] [name ...]" #: builtins.c:235 -#, fuzzy msgid "" "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o option] [-DE] [name ...]" #: builtins.c:242 -#, fuzzy msgid "" "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" msgstr "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2672,6 +2698,7 @@ msgstr "" " N が1未満の場合を除き、終了ステータスは 0 です。" #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2682,7 +2709,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "シェル組み込みコマンドを実行します。\n" " \n" @@ -2932,11 +2959,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3057,6 +3084,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3089,7 +3122,7 @@ msgstr "" " 終了ステータス:\n" " 書き込みエラーが発生しない限り成功を返します。" -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3111,7 +3144,7 @@ msgstr "" " 終了ステータス:\n" " 書き込みエラーが発生しない限り成功を返します。" -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3163,7 +3196,7 @@ msgstr "" " 終了ステータス:\n" " NAME が組み込み関数ではないかエラーが発生しない限り成功を返します。" -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3183,7 +3216,7 @@ msgstr "" " コマンドの終了ステータスを返します。コマンドが null の場合は成功を\n" " 返します。" -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3260,7 +3293,7 @@ msgstr "" " オプションが見つかった場合に成功を返します。オプションの終わり\n" " に到達するかエラーが発生した時に失敗を返します。" -#: builtins.c:688 +#: builtins.c:692 #, fuzzy msgid "" "Replace the shell with the given command.\n" @@ -3303,7 +3336,7 @@ msgstr "" " COMMAND が見つからないかリダイレクトエラーが発生しない限り成功を返しま" "す。" -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3315,7 +3348,7 @@ msgstr "" " 終了ステータス N でシェルを終了します。 N を指定しない場合は\n" " 最後に実行したコマンドの終了ステータスになります。" -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3329,7 +3362,7 @@ msgstr "" "ル\n" " 内で無い場合はエラーを返します。" -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3389,7 +3422,7 @@ msgstr "" "0 \n" " 以外の値になります。" -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3414,7 +3447,7 @@ msgstr "" "が\n" " 発生した時に失敗を返します。" -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3438,7 +3471,7 @@ msgstr "" " 終了ステータス:\n" " ジョブ制御が有効になっていないかエラーが発生しない限り成功を返します。" -#: builtins.c:787 +#: builtins.c:791 #, fuzzy msgid "" "Remember or display program locations.\n" @@ -3482,7 +3515,7 @@ msgstr "" " 終了ステータス:\n" " NAME が見つからないか、無効なオプションが与えられない限り成功を返します。" -#: builtins.c:812 +#: builtins.c:816 #, fuzzy msgid "" "Display information about builtin commands.\n" @@ -3498,7 +3531,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3523,7 +3556,7 @@ msgstr "" " PATTERN が見つからないか無効なオプションが与えられない限り成功を返しま" "す。" -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3533,7 +3566,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3590,7 +3624,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:872 +#: builtins.c:877 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3637,7 +3671,7 @@ msgstr "" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。\n" " もし -x が使用された場合、COMMAND の終了ステータスを返します。" -#: builtins.c:899 +#: builtins.c:904 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3670,7 +3704,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションか JOBSPEC が与えられない限り成功を返します。" -#: builtins.c:918 +#: builtins.c:923 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3716,7 +3750,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3801,7 +3835,7 @@ msgstr "" " ARG の最終的な評価値が 0 の場合 let は 1 を返します。それ以外の場合は\n" " let は 0 を返します。" -#: builtins.c:987 +#: builtins.c:992 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3823,7 +3857,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3900,7 +3934,7 @@ msgstr "" "エ\n" " ラーが発生、 -u に無効なファイル記述子が与えられた場合を除き0を返します。" -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3924,7 +3958,7 @@ msgstr "" "を\n" " 返します。" -#: builtins.c:1047 +#: builtins.c:1052 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4090,7 +4124,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられない限り成功を返します。" -#: builtins.c:1132 +#: builtins.c:1137 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4132,7 +4166,7 @@ msgstr "" " 無効なオプションが与えられるか NAME が読み取り専用の場合を除き成功を返し" "ます。" -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4167,7 +4201,7 @@ msgstr "" " 無効なオプションが与えられるか、無効な NAME が与えられない限り成功\n" " を返します。" -#: builtins.c:1173 +#: builtins.c:1178 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4207,7 +4241,7 @@ msgstr "" " 無効なオプションが与えられるか、与えられた NAME が無効な場合を除き成功\n" " を返します。" -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4225,7 +4259,7 @@ msgstr "" " 終了ステータス:\n" " Nが負の値または $# より大きい場合を除き成功を返します。" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4249,7 +4283,7 @@ msgstr "" " FILENAME で最後に実行したコマンドのステータスを返します。FILENAME が\n" " 読み込めなかった場合は失敗を返します。" -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4273,7 +4307,7 @@ msgstr "" " 終了ステータス:\n" " ジョブ制御が有効でないかエラーが発生しない限り成功を返します。" -#: builtins.c:1254 +#: builtins.c:1259 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4435,7 +4469,7 @@ msgstr "" "または\n" " 引数が無効な場合に失敗を返します。" -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4448,7 +4482,7 @@ msgstr "" "致\n" " するように文字`]'を与えなければいけません。" -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4468,7 +4502,7 @@ msgstr "" " 終了ステータス:\n" " 常に成功を返します。" -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4550,7 +4584,7 @@ msgstr "" " 終了ステータス:\n" " SIGSPEC が無効か、無効なオプションを与えられない限り成功を返します。" -#: builtins.c:1393 +#: builtins.c:1398 #, fuzzy msgid "" "Display information about command type.\n" @@ -4609,7 +4643,7 @@ msgstr "" "合\n" " は失敗を返します。" -#: builtins.c:1424 +#: builtins.c:1429 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4702,7 +4736,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションを与えるか、エラーが発生しない限り、成功を返します。" -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4736,7 +4770,8 @@ msgstr "" " 終了ステータス:\n" " MODE が無効か、無効なオプションが与えられない限り成功を返します。" -#: builtins.c:1494 +#: builtins.c:1499 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4744,13 +4779,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4767,7 +4804,7 @@ msgstr "" " 最後の ID の終了ステータスを返します。IDが無効であるか、無効なオプ\n" " ションが与えられた場合には失敗を返します。" -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4793,7 +4830,7 @@ msgstr "" "えられた\n" " 場合は失敗します。" -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4814,7 +4851,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4844,7 +4881,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4879,7 +4916,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4907,7 +4944,7 @@ msgstr "" " 終了ステータス:\n" " PIPELINE の戻り値が終了ステータスとなります。" -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4926,7 +4963,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4960,7 +4997,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドの終了ステータスを返します。" -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4978,7 +5015,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4996,7 +5033,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1653 +#: builtins.c:1661 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5019,7 +5056,7 @@ msgstr "" " 終了ステータス:\n" " COMMAND の終了ステータスを返します。" -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5044,7 +5081,7 @@ msgstr "" " 終了ステータス:\n" " NAME が読み取り専用でない限り成功を返します。" -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5062,7 +5099,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5085,7 +5122,7 @@ msgstr "" " 終了ステータス:\n" " 再開されたジョブの終了ステータスを返します。" -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5103,7 +5140,7 @@ msgstr "" " 終了ステータス:\n" " EXPRESSION の評価値が 0 の場合は 1、それ以外は 0 を返します。" -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5158,7 +5195,7 @@ msgstr "" " 終了ステータス:\n" " EXPRESSION の値に基づいて 0 または 1 を返します。" -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5259,7 +5296,7 @@ msgstr "" " HISTIGNORE\tヒストリ一覧に保存されるコマンドを決める時に使用される\n" " \t\tコロン (:) で区切られたパターンの一覧。\n" -#: builtins.c:1803 +#: builtins.c:1811 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5319,7 +5356,7 @@ msgstr "" " 無効な引数が与えられるかディレクトリ変更が失敗しない限り成功を\n" " 返します。" -#: builtins.c:1837 +#: builtins.c:1845 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5371,7 +5408,7 @@ msgstr "" " 無効な引数が与えられるかディレクトリ変更が失敗しない限り成功を\n" " 返します。" -#: builtins.c:1867 +#: builtins.c:1875 #, fuzzy msgid "" "Display directory stack.\n" @@ -5424,14 +5461,14 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5460,7 +5497,7 @@ msgstr "" " OPTNAME が有効な場合は成功を返します。無効なオプションが与えられた場合\n" " または OPTNAME が無効な場合は失敗を返します。" -#: builtins.c:1919 +#: builtins.c:1927 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5530,7 +5567,7 @@ msgstr "" " 無効な引数が与えられるか、書き込み、代入エラーが発生しない限り成功を返し" "ます。" -#: builtins.c:1953 +#: builtins.c:1961 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5549,10 +5586,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5580,7 +5621,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5602,7 +5643,8 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:1996 +#: builtins.c:2006 +#, fuzzy msgid "" "Modify or display completion options.\n" " \n" @@ -5617,6 +5659,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5658,7 +5701,7 @@ msgstr "" "合\n" " を除き、成功を返します。" -#: builtins.c:2026 +#: builtins.c:2037 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5735,7 +5778,7 @@ msgstr "" "列で無い\n" " 場合を除き成功を返します。" -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5745,9 +5788,8 @@ msgstr "" " \n" " `mapfile'の別名です。" -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2013 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2012 Free Software Foundation, Inc." #~ msgid ":" #~ msgstr ":" @@ -5760,6 +5802,3 @@ msgstr "" #~ msgid "times" #~ msgstr "times" - -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2012 Free Software Foundation, Inc." diff --git a/po/lt.gmo b/po/lt.gmo index 36a127952..6abd02a01 100644 Binary files a/po/lt.gmo and b/po/lt.gmo differ diff --git a/po/lt.po b/po/lt.po index 2594d1d1a..30f0ec1dd 100644 --- a/po/lt.po +++ b/po/lt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" "PO-Revision-Date: 2009-03-25 16:49+0200\n" "Last-Translator: Gintautas Miliauskas \n" "Language-Team: Lithuanian \n" @@ -15,123 +15,124 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lt\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%" "100<10 || n%100>=20) ? 1 : 2);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "blogas masyvo indeksas" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%s: netaisyklingas veiksmo pavadinimas" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nepavyko priskirti prie neskaitinio indekso" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nepavyko sukurti: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: nepavyko rasti keymapo komandai" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: pirmas ne tarpo simbolis nėra „\"“" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "nėra uždarančiojo „%c“ %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: trūksta dvitaškio skirtuko" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "„%s“: netaisyklingas keymap'o pavadinimas" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "eilutės redagavimas neįgalintas" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s“: netaisyklingas keymap'o pavadinimas" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: nepavyko perskaityti: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "„%s“: nepavyko atjungti (unbind)" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "„%s“: nežinomas funkcijos pavadinimas" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s nėra priskirtas jokiam klavišui.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s gali būti iškviestas su " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: nepavyko atjungti (unbind)" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "prasminga tik „for“, „while“ arba „until“ cikle" @@ -143,234 +144,234 @@ msgid "" " Without EXPR, returns " msgstr "Grąžina esamos procedūros kontekstą." -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME nenustatytas" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "per daug argumentų" -#: builtins/cd.def:336 +#: builtins/cd.def:341 #, fuzzy msgid "null directory" msgstr "steko viršūnėje esančiu." -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD nenustatytas" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "eilutė %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "įspėjimas: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: naudojimas: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: parametrui reikia argumento" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: reikia skaitinio argumento" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: nerasta" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: negalimas parametras" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: netaisyklingas parametro vardas" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': netaisyklingas identifikatorius" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "netaisyklingas aštuonetainis skaičius" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "netaisyklingas šešioliktainis skaičius" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "netaisyklingas skaičius" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: netaisyklinga signalo specifikacija" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s“: ne pid'as ar taisyklinga darbo specifikacija" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: kintamasis tik skaitymui" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s išėjo už ribų" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argumentas" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s už ribų" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: nėra tokio darbo" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: nėra darbų valdymo" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "nėra darbų valdymo" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: apribota" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "apribota" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ne vidinė aplinkos komanda" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "rašymo klaida: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: klaida skaitant esamą aplanką: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: dviprasmis darbo aprašymas" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: netaisyklingas veiksmo pavadinimas" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: nėra baigimo specifikacijos" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "įspėjimas: parametras -F gali neveikti taip, kaip tikitės" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "įspėjimas: parametras -C gali neveikti taip, kaip tikitės" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "galima naudoti tik funkcijoje" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 -#, fuzzy, c-format +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 +#, c-format msgid "%s: circular name reference" -msgstr "%d: netaisyklingas failo deskriptorius: %s" +msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%d: netaisyklingas failo deskriptorius: %s" +msgstr "" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "negalima naudoti „-f“ funkcijoms kurti" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: funkcija tik skaitymui" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: negalima tokiu būdu sunaikinti masyvų kintamųjų" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -404,68 +405,68 @@ msgstr "%s: nedinamiškai įkrauta" msgid "%s: cannot delete: %s" msgstr "%s: nepavyko ištrinti: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: aplankas" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: ne paprastas failas" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: failas per didelis" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: negalima vykdyti dvejetainių failų" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: nepavyko paleisti: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "ne prisijungimo aplinka: naudokite „exit“" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Yra sustabdytų darbų.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Yra veikiančių darbų.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "komandų nerasta" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "istorijos specifikacija" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: nepavyko atverti laikinojo failo: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "darbas %d pradėtas be darbų valdymo" @@ -480,29 +481,29 @@ msgstr "%s: neleistinas parametras -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: parametrui reikia argumento -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "maiša išjungta" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: maišos lentelė tuščia\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, fuzzy, c-format msgid "hits\tcommand\n" msgstr "paskutinė komanda: %s\n" -#: builtins/help.def:135 -#, fuzzy, c-format +#: builtins/help.def:133 +#, fuzzy msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Aplinkos komandos, atitinkančios raktažodį „" msgstr[1] "Aplinkos komandos, atitinkančios raktažodį „" msgstr[2] "Aplinkos komandos, atitinkančios raktažodį „" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -510,12 +511,12 @@ msgstr "" "nėra žinyno temų, atitinkančių „%s“. Bandykite „help help“, „man -k %s“ arba " "„info %s“." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nepavyko atverti: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -536,20 +537,21 @@ msgstr "" "Žvaigždutė (*) prie vardo reiškia, kad komanda išjungta.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "negalima naudoti daugiau negu vieno parametro iš -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "istorijos pozicija" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: netaisyklingas limito argumentas" +msgstr "%s: netaisyklingas parametro vardas" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: istorijos išskleidimas nesėkmingas" @@ -563,16 +565,16 @@ msgstr "%s: istorijos išskleidimas nesėkmingas" msgid "no other options allowed with `-x'" msgstr "su „-x“ neleidžiama naudoti kitų parametrų" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumentai turi būti procesų arba darbų ID" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Nežinoma klaida" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "tikėtasi išraiškos" @@ -581,70 +583,70 @@ msgstr "tikėtasi išraiškos" msgid "%s: not an indexed array" msgstr "%s: ne masyvo kintamasis" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: netaisyklinga failo deskriptoriaus specifikacija" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: netaisyklingas failo deskriptorius: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%s: nesamas parametras" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%s: nesamas parametras" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "%s: netaisyklingas veiksmo pavadinimas" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 #, fuzzy msgid "empty array variable name" msgstr "%s: ne masyvo kintamasis" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "„%s“: trūksta formato simbolio" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: klaidinga laiko ribos (timeout) specifikacija" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: netaisyklingas formato simbolis" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "įspėjimas: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "trūksta šešioliktainio skaitmens išraiškoje \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "trūksta šešioliktainio skaitmens išraiškoje \\x" @@ -658,20 +660,20 @@ msgstr "nėra kito aplanko" msgid "%s: invalid argument" msgstr "%s: netaisyklingas limito argumentas" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 #, fuzzy msgid "directory stack index" msgstr "rekursijos steko atvirkštinis perpildymas" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -695,7 +697,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -720,7 +722,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -746,40 +748,40 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: klaidinga laiko ribos (timeout) specifikacija" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "skaitymo klaida: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "galima grįžti (return) tik iš funkcijos ar scenarijaus" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "negalima kartu ištrinti funkcijos ir kintamojo" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: nepavyko ištrinti" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nepavyko ištrinti: %s tik skaitymui" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: ne masyvo kintamasis" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: ne funkcija" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: nepavyko ištrinti" @@ -788,20 +790,20 @@ msgstr "%s: nepavyko ištrinti" msgid "shift count" msgstr "postūmių skaičius" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "negalima aplinkos nuostatos vienu metu įjungti ir išjungti" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: netaisyklingas aplinkos nuostatos pavadinimas" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "reikia failo pavadinimo argumento" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: failas nerastas" @@ -814,61 +816,61 @@ msgstr "nepavyko sustabdyti" msgid "cannot suspend a login shell" msgstr "nepavyko sustabdyti prisijungimo aplinkos" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s yra „%s“ sinonimas\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s yra aplinkos raktinis žodis\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s yra funkcija\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s yra aplinkos vidinė komanda\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s yra aplinkos vidinė komanda\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s yra %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s yra hešuotas (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: netaisyklingas limito argumentas" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': bloga komanda" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nepavyko gauti limito: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "riba" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nepavyko pakeisti limito: %s" @@ -887,359 +889,368 @@ msgstr "„%c“: netaisyklingas simbolinės veiksenos operatorius" msgid "`%c': invalid symbolic mode character" msgstr "„%c“: netaisyklingas simbolinės veiksenos simbolis" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " eilutė " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "paskutinė komanda: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Nutraukiama..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "nežinoma komandos klaida" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "blogas komandos tipas" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "blogas jungtukas" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "blogas šuolis" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: nepriskirtas kintamasis" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\alaukiant įvedimo baigėsi laikas: automatiškai atsijungta\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "nepavyko peradresuoti standartinio įvedimo iš /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c“: netaisyklingas formato simbolis" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 #, fuzzy msgid "pipe error" msgstr "rašymo klaida: %s" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: apribota: negalima naudoti „/“ komandų pavadinimuose" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: komanda nerasta" -#: execute_cmd.c:5470 -#, fuzzy, c-format +#: execute_cmd.c:5682 +#, c-format msgid "%s: %s" -msgstr "%s yra %s\n" +msgstr "" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: blogas interpretatorius" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: negalima vykdyti dvejetainių failų" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s yra aplinkos vidinė komanda\n" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nepavyko dublikuoti fd %d į fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "viršytas išraiškos rekursijos lygis" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "rekursijos steko atvirkštinis perpildymas" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "sintaksės klaida išraiškoje" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "bandymas priskirti ne kintamajam" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "sintaksės klaida išraiškoje" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "dalyba iš 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "klaida: bloga expassign leksema" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "sąlygos išraiškoje tikėtasi „:“" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "eksponentė mažesnis už 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "po prieš-didinimo ar prieš-mažinimo operatoriaus tikėtasi identifikatoriaus" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "Trūksta „)“" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "sintaksės klaida: tikėtasi operando" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "sintaksės klaida: netaisyklingas aritmetinis operatorius" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "netaisyklingas aritmetinis pagrindas" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "per didelė pagrindo reikšmė" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: išraiškos klaida\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: nepavyko pasiekti aukštesnių aplankų" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, fuzzy, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nepavyko dublikuoti fd %d į fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "nepavyko išskirti naujo failo deskriptoriaus bash įvedimui iš fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: naujam fd %d buferis jau egzistuoja" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "trinamas sustabdytas darbas %d procesų grupėje %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: tokio pid nėra" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Signalas %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Atlikta" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Atlikta(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Nežinoma būsena" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld nėra šios aplinkos dukterinis procesas" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: nėra proceso %ld įrašo" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: darbas %d yra sustabdytas" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: darbas užsibaigė" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: darbas %d jau fone" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: %d eilutė: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:4104 +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "šioje aplinkoje nėra darbų valdymo" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: pažeista prielaida: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1248,39 +1259,39 @@ msgstr "" "\r\n" "malloc: %s:%d: prielaida pažeista\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "nežinoma" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: blokas iš laisvų blokų sąrašo sugadintas" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: iškviestas su jau atlaisvintu bloku" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: iškviestas su nerezervuotu bloku" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: atvirkštinis perpildymas (underflow); mh_nbytes už ribos" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: iškviestas su nerezervuotu bloku" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: atvirkštinis perpildymas (underflow); mh_nbytes už ribos" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi" @@ -1322,22 +1333,22 @@ msgstr "%s: netaisyklingas tinklo kelias" msgid "network operations not supported" msgstr "tinklo operacijos nepalaikomos" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:259 +#: locale.c:272 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "xrealloc: %s:%d: nepavyko išskirti %lu baitų" -#: locale.c:261 +#: locale.c:274 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: %s:%d: nepavyko išskirti %lu baitų" @@ -1355,147 +1366,147 @@ msgstr "Turite naujų laiškų $_" msgid "The mail in %s has been read\n" msgstr "Paštas %s perskaitytas\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "sintaksės klaida: reikia aritmetinės išraiškos" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "sintaksės klaida: netikėtas „;“" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "sintaksės klaida: „((%s))“" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: blogas instrukcijos tipas %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: nukreipimo instrukcija „%d“ už ribų" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "netikėta failo pabaiga ieškant atitinkamo „%c“" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "netikėta failo pabaiga ieškant „]]“" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "sintaksės klaida sąlygos išraiškoje: netikėta leksema „%s“" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "sintaksės klaida sąlygos išraiškoje" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "netikėta leksema „%s“, tikėtasi „)“" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "tikėtasi „)“" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "netikėtas argumentas „%s“ sąlygos unariniam operatoriui" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "netikėtas argumentas sąlygos unariniam operatoriui" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "netikėta leksema „%s“, tikėtasi sąlyginio binarinio operatoriaus" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "tikėtasi sąlygos binarinio operatoriaus" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "netikėtas argumentas „%s“ sąlygos binariniam operatoriui" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "netikėtas argumentas sąlygos binariniam operatoriui" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "netikėta leksema „%c“ sąlygos komandoje" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "netikėta leksema „%s“ sąlygos komandoje" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "netikėta leksema %d sąlygos komandoje" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "sintaksės klaida prie netikėtos leksemos: „%s“" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "sintaksės klaida prie „%s“" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "sintaksės klaida: netikėta failo pabaiga" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "sintaksės klaida" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Naudokite „%s“, jei norite išeiti iš ap.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "netikėta failo pabaiga ieškant atitinkamo „)“" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: funkcija „%s“ nerasta" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1524,90 +1535,94 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: netaisyklingas formato simbolis" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "failo deskriptorius už ribų" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ambiguous redirect" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: negalima perrašyti egzistuojančio failo" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: apribota: negalima peradresuoti išvedimo" -#: redir.c:192 +#: redir.c:188 #, fuzzy, c-format msgid "cannot create temp file for here-document: %s" msgstr "nepavyko sukurti laikino failo „here“ dokumentui: %s" -#: redir.c:196 +#: redir.c:192 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: negalima priskirti sąrašo masyvo elementui" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/serveris/prievadas nepalaikoma be tinklo" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "nukreipimo klaida: nepavyko dublikuoti fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "nepavyko rasti /tmp, sukurkite šį aplanką!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp turi būti taisyklingas aplanko pavadinimas" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: netaisyklingas parametras" -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "nepavyko dublikuoti fd %d į fd %d" -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "nepavyko dublikuoti fd %d į fd %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: aplankas" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Neturiu vardo!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versija %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1616,53 +1631,53 @@ msgstr "" "Naudojimas:\t%s [GNU ilgas parametras] [parametras] ...\n" "\t%s [GNU ilgas parametras] [parametras] scenarijaus-failas ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU ilgi parametrai:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Aplinkos parametrai:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" "\t-irsD arba -c komanda arba -O shopt_nustatymas\t\t(tik iškvietimui)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s arba -o nustatymas\n" -#: shell.c:1959 +#: shell.c:2013 #, fuzzy, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Bandykite „%s --help“ arba „%s --usage“, jei norite gauti daugiau " "informacijos.\n" -#: shell.c:1960 +#: shell.c:2014 #, fuzzy, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Bandykite „ldd --help“, jei norite daugiau informacijos." -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Naudokite komandą „bashbug“ klaidoms pranešti.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: netaisyklinga operacija" @@ -1837,103 +1852,108 @@ msgstr "Nežinomas signalas #" msgid "Unknown Signal #%d" msgstr "Nežinomas signalas #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "blogas keitinys: trūksta „%s“ %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: negalima priskirti sąrašo masyvo elementui" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5959 +#: subst.c:6062 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "blogas keitinys: trūksta „%s“ %s" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:6580 subst.c:8939 -#, fuzzy, c-format -msgid "%s: invalid variable name for name reference" -msgstr "%d: netaisyklingas failo deskriptorius: %s" - -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6710 subst.c:9623 #, c-format -msgid "%s: bad substitution" -msgstr "%s: blogas keitinys" +msgid "%s: invalid variable name for name reference" +msgstr "" -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: nesamas parametras" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, fuzzy, c-format msgid "%s: invalid variable name" -msgstr "„%s“: netaisyklingas keymap'o pavadinimas" +msgstr "%s: netaisyklingas veiksmo pavadinimas" + +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametras tuščias arba nenustatytas" -#: subst.c:6854 +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametras tuščias arba nenustatytas" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: posekio išraiška < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: blogas keitinys" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: negalima tokiu būdu priskirti" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:9349 +#: subst.c:10043 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "blogas keitinys: trūksta „%s“ %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "nėra atitikmenų: %s" @@ -1956,113 +1976,118 @@ msgstr "tikėtasi „)“" msgid "`)' expected, found %s" msgstr "tikėtasi „)“, rasta %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: tikėtasi unarinio operatoriaus" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: tikėtasi binarinio operatoriaus" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "trūksta „]“" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "netaisyklingas signalo numeris" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: bloga trap_list[%d] reikšmė: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: signalo doroklė yra SIG_DFL, siunčiamas %d (%s) sau" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: blogas signalas %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "klaida importuojant funkcijos apibrėžimą „%s“" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "aplinkos lygmuo (%d) per aukštas, nustatoma į 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2432 -#, fuzzy, c-format +#: variables.c:2674 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: negalima priskirti sąrašo masyvo elementui" +msgstr "" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%d: netaisyklingas failo deskriptorius: %s" +msgstr "" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4218 +#: variables.c:4698 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parametras tuščias arba nenustatytas" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "netaisyklingas simbolis %d %s exportstr'e" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s exportstr'e trūksta „=“" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nėra global_variables konteksto" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5619 +#: variables.c:6272 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: nepavyko atverti: %s" -#: variables.c:5624 +#: variables.c:6277 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: netaisyklingas failo deskriptorius: %s" -#: variables.c:5669 +#: variables.c:6322 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s išėjo už ribų" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." msgstr "Autorinės teisės (C) 2009 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2089,22 +2114,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Nėra JOKIOS GARANTIJOS, kiek tik tą leidžia įstatymas.\n" -#: xmalloc.c:91 +#: xmalloc.c:93 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "xmalloc: nepavyko išskirti %lu baitų (%lu baitų išskirta)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes" msgstr "xmalloc: nepavyko išskirti %lu baitų" -#: xmalloc.c:163 +#: xmalloc.c:165 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "xmalloc: %s:%d: nepavyko išskirti %lu baitų (išskirta %lu baitų)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "xmalloc: %s:%d: nepavyko išskirti %lu baitų" @@ -2318,13 +2343,13 @@ msgstr "umask [-p] [-S] [režimas]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "wait [id]" #: builtins.c:181 #, fuzzy msgid "wait [pid ...]" -msgstr "wait [id]" +msgstr "wait [pid]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2412,7 +2437,7 @@ msgstr "printf [-v kint] formatas [argumentai]" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2425,7 +2450,7 @@ msgstr "" #: builtins.c:239 #, fuzzy -msgid "compopt [-o|+o option] [-DE] [name ...]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "shopt [-pqsu] [-o] [optvardas ...]" #: builtins.c:242 @@ -2436,8 +2461,8 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" #: builtins.c:256 @@ -2560,7 +2585,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" #: builtins.c:369 @@ -2727,11 +2752,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2799,12 +2824,18 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2817,7 +2848,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2844,7 +2875,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2856,7 +2887,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -2897,7 +2928,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2920,7 +2951,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:709 +#: builtins.c:713 #, fuzzy msgid "" "Exit the shell.\n" @@ -2932,7 +2963,7 @@ msgstr "" "nustatomas\n" " paskutinės vykdytos komandos klaidos kodas." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -2941,7 +2972,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2971,7 +3002,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -2983,7 +3014,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -2997,7 +3028,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3021,7 +3052,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3036,14 +3067,14 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " "given." msgstr "" -#: builtins.c:836 +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3052,7 +3083,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3077,7 +3109,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3101,7 +3133,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3118,7 +3150,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:918 +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3141,7 +3173,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3186,7 +3218,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3207,7 +3239,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3238,7 +3270,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3250,7 +3282,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3336,7 +3368,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3358,7 +3390,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3377,7 +3409,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3398,7 +3430,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -3409,7 +3441,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 #, fuzzy msgid "" "Execute commands from a file in the current shell.\n" @@ -3428,7 +3460,7 @@ msgstr "" " Jei nurodyta ARGUMENTŲ, jie tampa poziciniais parametrais iškvietus\n" " FAILĄ." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -3442,7 +3474,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3525,7 +3557,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3533,7 +3565,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -3545,7 +3577,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -3589,7 +3621,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -3619,7 +3651,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -3668,7 +3700,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -3686,7 +3718,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3694,19 +3726,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3721,7 +3755,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3734,7 +3768,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -3751,7 +3785,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3771,7 +3805,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3787,7 +3821,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3798,7 +3832,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3819,7 +3853,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1637 #, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" @@ -3833,7 +3867,7 @@ msgstr "" "Išskleisti ir vykdyti KOMANDAS tol, kol galutinė komanda iš\n" " „while“ komandų grąžina klaidos kodą 0." -#: builtins.c:1641 +#: builtins.c:1649 #, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" @@ -3847,7 +3881,7 @@ msgstr "" "Išskleisti ir vykdyti KOMANDAS tol, kol galutinė komanda iš\n" " „until“ komandų grąžina klaidos kodą, nelygų 0." -#: builtins.c:1653 +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3860,7 +3894,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -3874,7 +3908,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1689 #, fuzzy msgid "" "Group commands as a unit.\n" @@ -3888,7 +3922,7 @@ msgstr "" "Vykdyti eilę komandų grupėje. Tai yra vienas iš būdų nukreipti\n" " visos eilės komandų įvedimą/išvedimą." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -3902,7 +3936,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3913,7 +3947,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -3941,7 +3975,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3995,7 +4029,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -4026,7 +4060,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -4053,7 +4087,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -4082,14 +4116,13 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4103,7 +4136,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1919 +#: builtins.c:1927 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -4154,7 +4187,7 @@ msgstr "" " Jei pateiktas parametras -v, išvedimas įrašomas į aplinkos kintamąjį\n" " KINT, užuot spausdinus į standartinį išvedimą." -#: builtins.c:1953 +#: builtins.c:1961 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4172,16 +4205,20 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1991 #, fuzzy msgid "" "Display possible completions depending on the options.\n" @@ -4199,7 +4236,7 @@ msgstr "" " Jei pateiktas nebūtinasis ŽODŽIO argumentas, išvedami įrašai,\n" " atitinkantys ŽODĮ." -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -4214,6 +4251,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -4230,7 +4268,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4272,16 +4310,21 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Autorinės teisės (C) 2009 Free Software Foundation, Inc." +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: nepavyko išskirti %lu baitų (išskirta %lu baitų)" + +#~ msgid "xrealloc: cannot allocate %lu bytes" +#~ msgstr "xrealloc: nepavyko išskirti %lu baitų" + +#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: %s:%d: nepavyko išskirti %lu baitų (išskirta %lu baitų)" #~ msgid ":" #~ msgstr ":" @@ -4295,34 +4338,6 @@ msgstr "" #~ msgid "times" #~ msgstr "times" -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Autorinės teisės (C) 2009 Free Software Foundation, Inc." - -#, fuzzy -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Autorinės teisės (C) 2009 Free Software Foundation, Inc." - -#, fuzzy -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Licencija GPLv3+: GNU GPL versija 3 arba naujesnė \n" - -#~ msgid "wait [pid]" -#~ msgstr "wait [pid]" - -#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: nepavyko išskirti %lu baitų (išskirta %lu baitų)" - -#~ msgid "xrealloc: cannot allocate %lu bytes" -#~ msgstr "xrealloc: nepavyko išskirti %lu baitų" - -#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: %s:%d: nepavyko išskirti %lu baitų (išskirta %lu baitų)" - #~ msgid " " #~ msgstr " " diff --git a/po/nb.gmo b/po/nb.gmo index 63a485d60..c42352112 100644 Binary files a/po/nb.gmo and b/po/nb.gmo differ diff --git a/po/nb.po b/po/nb.po index 441d8a003..1aa973d15 100644 --- a/po/nb.po +++ b/po/nb.po @@ -1,136 +1,137 @@ # Norwegian (bokmål) translation of GNU Bash -# Copyright (C) 2015 Free Software Foundation, Inc. +# Copyright (C) 2017 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Åka Sikrom , 2015. +# Åka Sikrom , 2015-2017. # msgid "" msgstr "" -"Project-Id-Version: bash-4.4-beta1\n" +"Project-Id-Version: bash-4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-22 12:19+0100\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2017-03-02 10:45+0100\n" "Last-Translator: Åka Sikrom \n" "Language-Team: Norwegian Bokmaal \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: Norwegian bokmål\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.5.4\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "feil i tabell-underskript" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: fjerner navnref-egenskap" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: indeksert tabell kan ikke konverteres til assosiativ tabell" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: ugyldig nøkkel for assosiativ tabell" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: kan ikke tildeles ikke-numerisk indeks" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: underskript må brukes ved tildeling av assosiative tabeller" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: klarte ikke å opprette: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: fant ikke tastaturoppsett for kommando" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: første ikke-blanktegn må være «\"»" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "avsluttende «%c» mangler i %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: kolon-skilletegn mangler" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "brace-utvidelse: klarte ikke å tildele minne for %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "brace-utvidelse: klarte ikke å tildele minne for %d elementer" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "brace-utvidelse: klarte ikke å tildele minne for «%s»" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "«%s»: ugyldig alias" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "linjeredigering er ikke slått på" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "«%s»: ugyldig navn på tastaturoppsett" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: klarte ikke å lese: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "«%s»: klarte ikke å fjerne tildeling" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "«%s»: ukjent funksjonsnavn" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s er ikke tilknyttet en knapp.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s kan startes via" -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: klarte ikke å fjerne tildeling" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "antall sløyfer" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "gir bare mening i «for»-, «while»- og «until»-sløyfer" @@ -144,234 +145,233 @@ msgstr "" " \n" " Hvis EXPR mangler, vises" -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME har ingen verdi" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "for mange argumenter" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "ingen annen mappe" +msgstr "null-mappe" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD har ingen verdi" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "linje %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "advarsel:" -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: bruk: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: valget krever et argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: valget krever et tall-argument" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" -msgstr "%s: ikke funnet" +msgstr "fant ikke %s" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: ugyldig valg" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: ugyldig valgnavn" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "«%s»: ugyldig navn" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "ugyldig oktal-tall" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "ugldig heksadesimalt tall" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "ugyldig tall" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: ugyldig signalspesifikasjon" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "«%s» er hverken hverken et PID eller en gyldig jobbspesifikasjon" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: skrivebeskyttet variabel" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s er utenfor rekkevidde" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s er utenfor rekkevidde" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: jobben finnes ikke" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: ingen jobbkontroll" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "ingen jobbkontroll" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: begrenset" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "begrenset" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ikke innebygd i skall" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "skrivefeil: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" -msgstr "feil ved endring av terminal-egenskaper: %s" +msgstr "feil under endring av terminal-egenskaper: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" -msgstr "feil ved henting av terminal-egenskaper: %s" +msgstr "feil under henting av terminal-egenskaper: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" -msgstr "%s: feil ved henting av gjeldende mappe: %s: %s\n" +msgstr "%s: feil under henting av gjeldende mappe: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: flertydig jobbspesifikasjon" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "hjelp er ikke tilgjengelig for denne versjonen" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: ugyldig handlingsnavn" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: ingen spesifikasjon for fullføring" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "advarsel: valget «-F» virker kanskje ikke slik du forventer" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "advarsel: valget «-C» virker kanskje ikke slik du forventer" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "fullføringsfunksjon kjøres ikke nå" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "kan bare brukes i funksjoner" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: referansevariabler kan ikke være tabeller (arrays)" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: navnref.-variabler kan ikke referere til seg selv" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: sirkulær navnreferanse" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: ugyldig variabelnavn for navnreferanse" +msgstr "«%s»: ugyldig variabelnavn for navnreferanse" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "valget«-f» kan ikke brukes til å lage funksjoner" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: skrivebeskyttet funksjon" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: sammensatt tabell-tideling i hermetegn er utgått" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: tabellvariabler kan ikke ødelegges på denne måten" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: assosiative tabeller kan ikke konverteres til indekserte tabeller" @@ -405,68 +405,68 @@ msgstr "%s: ikke dynamisk innlastet" msgid "%s: cannot delete: %s" msgstr "%s: klarte ikke å slette: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: er en mappe" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: ikke en vanlig fil" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: fila er for stor" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: klarte ikke å kjøre binærfil" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: klarte ikke å kjøre: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "logg ut\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "ikke innloggingsskall. Bruk «exit»" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Bakgrunnsjobb(er) venter.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Bakgrunnsjobb(er) kjører.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "fant ingen kommando" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "historikk-spesifikasjon" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: klarte ikke å åpne midlertidig fil: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "gjeldende" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "jobb %d startet uten jobbkontroll" @@ -481,28 +481,27 @@ msgstr "%s: -- %c er et ugyldig valg\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: -- %c krever et argument\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "nøkkelsummering er slått av" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: kontrollsum-tabell er tom\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "treff\tkommando\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Skallkommandoer som samsvarer med nøkkelordet `" msgstr[1] "Skallkommandoer som samsvarer med nøkkelordene `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -510,12 +509,12 @@ msgstr "" "ingen hjelpeemner samsvarer med «%s». Prøv «help help», «man -k %s» eller «info " "%s»." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: klarte ikke å åpne: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -537,20 +536,21 @@ msgstr "" "slått av.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "du kan ikke bruke flere enn ett av valgene -anrw på én gang" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "historikkposisjon" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: ugyldig argument" +msgstr "%s: ugyldig tidsstempel" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: historikk-utvidelse mislyktes" @@ -564,16 +564,16 @@ msgstr "%s: inlib mislyktes" msgid "no other options allowed with `-x'" msgstr "valget «-x» kan ikke brukes i kombinasjon med andre valg" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenter må være prosess- eller jobb-ID-er" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Ukjent feil" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "forventet uttrykk" @@ -582,69 +582,69 @@ msgstr "forventet uttrykk" msgid "%s: not an indexed array" msgstr "%s: ikke en indeksert tabell" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ugyldig spesifikasjon av fildeskriptor" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ugyldig fildeskriptor: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: ugyldig linjeantall" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: ugyldig tabellopphav" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ugyldig tilbakekallsmengde" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "tomt navn på tabellvariabel" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "støtte for tabellvariabler kreves" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "«%s»: formattegn mangler" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "«%c»: ugyldig spesifikasjon av tidsformat" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "«%c»: ugyldig formattegn" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "advarsel: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "problem med tolkning av format: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "heks-siffer mangler for \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "unicode-siffer mangler for \\%c" @@ -658,19 +658,19 @@ msgstr "ingen annen mappe" msgid "%s: invalid argument" msgstr "%s: ugyldig argument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "mappestabel er tom" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "mappestabel-indeks" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -712,7 +712,7 @@ msgstr "" " -N\tVis N-te mappe talt fra null\n" "\tpå høyre side av lista (gjelder når programmet kjøres uten valg)." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -756,7 +756,7 @@ msgstr "" " \n" " Den innebygde funksjonen «dirs» viser mappestabelen." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -800,42 +800,42 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: ugyldig spesifikasjon av tidsavbrudd" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "lesefeil: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "du kan bare «return» fra en funksjon eller kildeskript" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "" "du kan ikke utføre «unset» (tømme både en funksjon og en variabel for " "verdier) samtidig" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: klarte ikke å fjerne verdi" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: klarte ikke å fjerne verdi fra skrivebeskyttet %s" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: ikke en tabellvariabel" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: ikke en funksjon" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: klarte ikke å eksportere" @@ -844,20 +844,20 @@ msgstr "%s: klarte ikke å eksportere" msgid "shift count" msgstr "shift-antall" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "du kan ikke både definere og fjerne skallvalg samtidig" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ugyldig navn på skallvalg" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "filnavn-argument kreves" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: fant ikke fil" @@ -870,61 +870,61 @@ msgstr "klarte ikke å sette i hvilemodus" msgid "cannot suspend a login shell" msgstr "klarte ikke å sette et innloggingsskall i hvilemodus" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s har alias «%s»\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s er et skall-nøkkelord\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s er en funksjon\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s er en innebygd skallkommando\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s er en innebygget skallfunksjon\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s er %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s er nøkkelsummert («hashed») (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: ugyldig grenseargument" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "«%c»: ugyldig kommando" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: klarte ikke å hente grense: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "grense" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: klarte ikke å endre grense: %s" @@ -943,359 +943,369 @@ msgstr "«%c»: ugyldig symbolsk modus-operatør" msgid "`%c': invalid symbolic mode character" msgstr "«%c»: ugyldig symbolsk modustegn" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " linje " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "forrige kommando: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Abryter …" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORM: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "ukjent kommandofeil" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "ugyldig kommandotype" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "ugyldig tilkobling" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "ugyldig hopp" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: utildelt variabel" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atidsavbrudd for inndata: auto-utlogging\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "klarte ikke å videresende standard inndata fra «/dev/null». %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: «%c» er et ugyldig formattegn" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] finnes fremdeles" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "datarør-feil" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" "eval: grensa for nivåer av eval-funksjoner i eval-funksjoner (%d) er " "overskredet" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: grensa for nivåer av kilder i kilder (%d) er overskredet" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: grensa for nivåer av funksjoner i funksjoner (%d) er overskredet" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ikke tillatt: kommandonavn kan ikke inneholde «/»" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" -msgstr "%s: fant ikke kommando" +msgstr "fant ikke kommando %s" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: ugyldig tolk" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: klarte ikke å kjøre binærfil: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "«%s» er en innebygd spesialfunksjon" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "klarte ikke å duplisere fd %d til fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "grensa for rekursjonsnivåer i uttrykk er overskredet" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "rekursjonsstabelen er tom" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "uttrykk inneholder syntaksfeil" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "du forsøkte å tilordne en verdi til noe som ikke er en variabel" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "uttrykk inneholder syntaksfeil" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "forsøkte å dele på 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "programfeil: ugyldig expassign-symbol" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "forventet «:» for betinget uttrykk" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "eksponent er lavere enn 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "forventet identifikator etter pre-økning eller pre-forminskelse" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "mangler «)»" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "syntaksfeil: forventet operand" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "syntaksfeil: ugyldig aritmetisk operatør" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (feilaktig symbol er «%s»)" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "ugyldig aritmetisk grunntall" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "verdien er for høy for grunntallet" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: feil i uttrykk\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: fikk ikke tilgang til foreldermapper" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "klarte ikke å tilbakestille nodelay-modus for fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "klarte ikke å knytte ny fildeskriptor til bash-inndata fra fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: mellomlager for ny fd %d finnes allerede" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp-datarør" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "kopiert pid %d finnes i kjørende jobb %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "sletter ventende bakgrunnsjobb %d med prosessgruppe %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: prosess %5ld (%s) i _kommandokø" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: markert PID %5ld (%s) som levende" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: pid-en finnes ikke" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Ferdig" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Venter" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Venter(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Kjører" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Ferdig(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Avsluttet %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Ukjent status" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(kjerne lagret i fil) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "underprosess setpgid (%ld til %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld er ikke en underprosess av dette skallet" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ingen kjennskap til prosess %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: prosess %d venter" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: jobben er avsluttet" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: jobb %d kjører allerede i bakgrunnen" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: slår på WNOHANG for å unngå kronisk blokkering" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: linje %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (kjerne lagret i fil)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(wd nå: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp mislyktes" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: linjeregler" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: linjeregler" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "klarte ikke å velge terminal-prosessgruppe (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "ingen jobbkontroll i dette skallet" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: mislykket premiss: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1304,39 +1314,39 @@ msgstr "" "\r\n" "malloc: %s:%d: urimelig premiss\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "ukjent" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: rotete blokk på befrielsesliste" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: ble bedt om å behandle blokk som allerede er ledig" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: ble bedt om å behandle blokk som ikke er tildelt" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: tomt. mh_nbytes er utenfor rekkevidde" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: start- og sluttdel er av ulik størrelse" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: ble bedt om å behandle blokk som ikke er tildelt" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: tomt. mh_nbytes er utenfor rekkevidde" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start- og sluttdel er av ulik størrelse" @@ -1378,22 +1388,22 @@ msgstr "%s: ugyldig spesifikasjon av nettverkssti" msgid "network operations not supported" msgstr "nettverkshandlinger støttes ikke" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: klarte ikke å bytte region (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: klarte ikke å bytte region (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: klarte ikke å bytte region (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: klarte ikke å bytte region (%s): %s" @@ -1411,151 +1421,153 @@ msgstr "Du har ny e-post i $_" msgid "The mail in %s has been read\n" msgstr "Posten i %s er lest\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "syntaksfeil: aritmetisk uttrykk kreves" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "syntaksfeil: uforventet «;»" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "syntaksfeil: «((%s))»" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: %d er en ugyldig instrukstype" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-dokument ved linje %d adskilt av slutt på fil (forventet «%s»)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "make_redirection: videresendinginstruks «%d» er utenfor tillatt rekkevidde" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: «shell_input_line_size» (%zu) overskrider SIZE_MAX (%lu): linja " +"er forkortet" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "grensa for maksimalt antall here-dokumenter er overskredet" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "uforventet slutt på fil (EOF) under søk etter «%c»" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "uforventet slutt på fil (EOF) under søk etter «]]»" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaksfeil i betinget uttrykk: forventet ikke symbolet «%s»" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "syntaksfeil i betinget uttrykk" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "forventet ikke symbolet «%s», men «)»" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "forventet «)»" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "«%s» er et uforventet argument for betinget unær operatør" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "uforventet argument for betinget unær operatør" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "«%s» er et uforventet symbol. Forventet betinget binær operatør" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "forventet betinget binæroperatør" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "«%s» er et uforventet argument for betinget binæroperatør" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "uforventet argument for betinget binæroperatør" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "«%c» er et uforventet symbol i en betinget kommando" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "«%s» er et uforventet symbol i en betinget kommando" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "«%d» er et uforventet symbol i en betinget kommando" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaksfeil ved «%s», som er et uforventet symbol" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "syntaksfeil ved «%s»" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "syntaksfeil: uforventet slutt på fil" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "syntaksfeil" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Bruk «%s» for å gå ut av skallet.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "uforventet slutt på fil (EOF) under søk etter «)»" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "fullføring: fant ikke funksjonen «%s»" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: mulig løkke av nye forsøk" #: pcomplib.c:182 #, c-format @@ -1581,90 +1593,94 @@ msgstr "xtrace_set: filpeker er NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: «%c»: ugyldig formattegn" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "fildeskriptor er utenfor tillatt rekkevidde" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: flertydig videresending" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: klarte ikke å overskrive fil" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ikke tillatt: klarte ikke å videresende utdata" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "klarte ikke å lage midlertidig fil for here-dokument: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: klarte ikke å knytte fd til variabel" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port støttes ikke uten nettverkstilkobling" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "videresendingsfeil: klarte ikke å duplisere fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "fant ikke «/tmp». Opprett denne mappa!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "«/tmp» må være et gyldig mappenavn" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ugyldig valg" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "klarte ikke å velge %d som uid. Effektiv uid: %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "klarte ikke å velge %d som gid. Effektiv gid: %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "klarte ikke å starte feilsøkingsverktøy. Feilsøkingsmodus slått av" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: er en mappe" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Jeg manger navn!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versjon %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1673,51 +1689,51 @@ msgstr "" "Bruk:\t%s [langt GNU-valg] [valg] …\n" "\t%s [langt GNU-valg] [valg] skriptfil …\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Lange GNU-valg:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Skallvalg:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" "\t«-ilrsD», «-c kommando» eller «-O kortvalg_valg»\t\t(kun programkall)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t«-%s» eller «-o»\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Skriv «%s -c \"help set\"» for mer informasjon om skallvalg.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Skriv «%s -c help» for mer informasjon om innebygde skallkommandoer.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Bruk kommandoen «bashbug» for å rapportere programfeil.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "bash-nettside: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" "Generell hjelp til bruk av GNU-programvare: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: ugyldig handling" @@ -1891,92 +1907,96 @@ msgstr "Ukjent signal #" msgid "Unknown Signal #%d" msgstr "#%d er et ukjent signal" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "ugyldig substitutt: %2$s mangler avsluttende «%1$s»" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: klarte ikke å knytte liste til tabellmedlem" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "klarte ikke å lage datarør for substitusjon av prosess" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "klarte ikke å lage underprosess for substitusjon av prosess" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "klarte ikke å åpne navngitt datarør %s for lesing" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "klarte ikke å åpne navngitt datarør %s for skriving" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "klarte ikke å duplisere navngitt datarør %s som fd %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "ugyldig substitusjon. %s mangler avsluttende «`»" +msgstr "kommandosubstitusjon: null-byte i inndata ignorert" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "klarte ikke å lage datarør for substitusjon av kommando" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "klarte ikke å lage underprosess for substitusjon av kommando" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: klarte ikke å duplisere datarør som fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: ugyldig variabelnavn for navnreferanse" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: ugyldig substitusjon" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: ugyldig indirekte utvidelse" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "%s: ugyldig variabelnavn" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter har null-verdi eller står tomt" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter har null-verdi eller står tomt" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: understreng-uttrykk < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: ugyldig substitusjon" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: du kan ikke tildele på denne måten" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1984,12 +2004,12 @@ msgstr "" "fremtidige versjoner av skallet skal tvinge evaluering som en aritmetisk " "substitusjon" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "ugyldig substitusjon. %s mangler avsluttende «`»" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "ingen treff på %s" @@ -2012,30 +2032,37 @@ msgstr "forventet «)»" msgid "`)' expected, found %s" msgstr "forventet «)», men fant %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: forventet unær operatør" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: forventet binær operatør" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "«]» mangler" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "ugyldig signalnummer" -#: trap.c:387 +#: trap.c:320 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" +"eval: grensa for nivåer av eval-funksjoner i eval-funksjoner (%d) er " +"overskredet" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: ugyldig verdi i «trap_list[%d]»: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2043,86 +2070,86 @@ msgstr "" "run_pending_traps: SIG_DFL er signalbehandler. Sender %d (%s) til meg selv " "på nytt" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: %d er et ugyldig signal" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "feil under importering av definisjonen av funksjonen «%s»" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "skallnivået (%d) er for høyt. Tilbakestiller til 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ingen funksjonskontekst i gjeldende virkefelt" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variabel kan ikke tilknyttes verdi" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: ugyldig variabelnavn for navnreferanse" +msgstr "%s: knytter heltall til navnreferanse" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ingen funksjonskontekst i gjeldende virkefelt" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s har exportstr som er null" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%d er et ugyldig tegn i exportstr for %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "exportstr for %s mangler «=»" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: toppen av «shell_variables» er ikke en funksjonskontekst" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: kontekst for «global_variables» mangler" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: toppen av «shell_variables» er ikke et midlertidig miljøfelt" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: klarte ikke å åpne som FIL" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: ugyldig verdi for sporing av fildeskriptor" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: samspill-verdi er utenfor tillatt rekkevidde" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Opphavsrett (C) 2015 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Opphavsrett (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2147,22 +2174,22 @@ msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" "Det stilles INGEN GARANTI, i den grad dette tillates av gjeldende lovverk." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: klarte ikke å tildele %lu byte (%lu byte tildelt)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: klarte ikke å tildele %lu byte" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: klarte ikke å tildele %lu byte (%lu byte tildelt)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: klarte ikke å tildele %lu byte" @@ -2289,9 +2316,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobbspes …] eller jobs -x kommando [arg]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [jobbspes …]" +msgstr "disown [-h] [-ar] [jobbspes … | pid …]" #: builtins.c:134 msgid "" @@ -2374,7 +2400,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [modus]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id …]" #: builtins.c:181 @@ -2466,8 +2493,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [argumenter]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2484,7 +2512,8 @@ msgstr "" "[-F funksjon] [-C kommando] [-X filtersti] [-P prefiks] [-S suffiks] [ord]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o valg] [-DE] [navn …]" #: builtins.c:242 @@ -2496,9 +2525,10 @@ msgstr "" "tilbakekall] [-c mengde] [tabell]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-C tilbakekall] " "[-c mengde] [tabell]" @@ -2535,8 +2565,8 @@ msgstr "" " -p\tSkriv ut alle definerte alias i brukbart format\n" " \n" " Avslutningsstatus:\n" -" alias avslutter med positiv verdi («true»), med mindre brukeren angir et " -"NAVN\n" +" alias avslutter med positiv verdi («true»), med mindre bruker skriver inn " +"et NAVN\n" " som mangler definert alias." #: builtins.c:278 @@ -2553,8 +2583,8 @@ msgstr "" " Valg:\n" " -a\tfjern alle alias-definisjoner.\n" " \n" -" Programmet avslutter som vellykket med mindre brukeren velger et " -"aliasNAVN som ikke finnes." +" Programmet avslutter som vellykket med mindre bruker velger et aliasNAVN " +"som ikke finnes." #: builtins.c:291 msgid "" @@ -2636,8 +2666,8 @@ msgstr "" " i et format som kan gjenbrukes i inndata.\n" " \n" " Avslutningsstatus:\n" -" bind avslutter med 0, med mindre brukeren tar et ukjent valg eller det " -"oppstår en feil." +" bind avslutter med 0, med mindre bruker tar et ukjent valg eller det " +"oppstår feil." #: builtins.c:330 msgid "" @@ -2674,6 +2704,7 @@ msgstr "" " Statuskoden er 0, med mindre N er mindre enn 1." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2684,7 +2715,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Kjør innebygde skallfunksjoner.\n" " \n" @@ -2828,7 +2859,7 @@ msgstr "" " «pwd» kjører med valget «-L» som standard.\n" " \n" " Avslutningsstatus:\n" -" Status er 0, med mindre brukeren tar et ugyldig valg eller\n" +" Status er 0, med mindre bruker tar et ugyldig valg eller\n" " programmet ikke klarer å lese gjeldende mappe." #: builtins.c:442 @@ -2908,6 +2939,7 @@ msgstr "" "finnes." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2926,11 +2958,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2980,11 +3012,10 @@ msgstr "" " kommandoen «local». Valget «-g» slår av denne oppførselen.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller\n" " det oppstår en variabel-tildelingsfeil." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2992,7 +3023,7 @@ msgid "" msgstr "" "Gi verdier og attributter til variabler.\n" " \n" -" Denne funksjonen er utgått. Se «help declare»." +" Dette er synonymt med «declare» (se «help declare»)." #: builtins.c:538 msgid "" @@ -3018,10 +3049,11 @@ msgstr "" " for funksjonen de lages innenfor, samt underfunksjoner.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg, det oppstår\n" +" Vellykket, med mindre bruker tar et ugyldig valg, det oppstår\n" " en feil under variabeltildeling eller skallet ikke kjører en funksjon." #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3050,6 +3082,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3083,7 +3121,7 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket, med mindre det oppstår en skrivefeil." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3105,7 +3143,7 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket, med mindre det oppstår en skrivefeil." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3154,10 +3192,9 @@ msgstr "" " versjonen som er innebygd i skallet.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre valgt NAVN ikke er innebygd eller det oppstår en " -"feil." +" Vellykket, med mindre valgt NAVN ikke er innebygd eller det oppstår feil." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3176,7 +3213,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som valgt kommando, eller vellykket hvis kommando er null." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3234,7 +3271,7 @@ msgstr "" " \n" " getopts rapporterer feil på én av to måter. Hvis første tegn i " "VALGSTRENG\n" -" er kolon, rapporteres feil uten direkte feilmeldinger til brukeren.\n" +" er kolon, rapporteres feil uten direkte feilmeldinger til bruker.\n" " Hvis getopts ser et ugyldig valg, plasseres aktuelt valgtegn i OPTARG.\n" " Hvis et obligatorisk argument ikke er gitt, legger getopts et «:» i NAVN " "og\n" @@ -3255,7 +3292,7 @@ msgstr "" " Vellykket hvis et valg finnes, og mislykket hvis et valg ikke finnes\n" " eller det oppstår en annen feil." -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3297,7 +3334,7 @@ msgstr "" " Vellykket, med mindre valgt KOMMANDO ikke finnes eller det oppstår en " "videresendingsfeil." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3309,7 +3346,7 @@ msgstr "" " Avslutt skallet med status N. Hvis N utelates, er statuskoden\n" " den samme som forrige kjørte kommando." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3323,7 +3360,7 @@ msgstr "" "det\n" " ikke kjøres i et innloggingsskall." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3379,7 +3416,7 @@ msgstr "" " Enten vellykket, samme som kjørt kommando eller noe annet enn null hvis " "det oppstår feil." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3398,9 +3435,9 @@ msgstr "" " \n" " Avslutningsstatus:\n" " Samme som kommandoen som legges i forgrunnen, eller mislykket hvis det " -"oppstår en feil." +"oppstår feil." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3421,9 +3458,9 @@ msgstr "" " som gjeldende i skallet.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre jobbkontroll er slått av eller det oppstår en feil." +" Vellykket, med mindre jobbkontroll er slått av eller det oppstår feil." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3464,10 +3501,10 @@ msgstr "" " \t\tover lagrede kommandoer.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre NAVN ikke finnes eller brukeren tar et ugyldig " -"valg." +" Vellykket, med mindre NAVN ikke finnes eller bruker tar et ugyldig valg." -#: builtins.c:812 +#: builtins.c:816 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3482,7 +3519,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3504,10 +3541,10 @@ msgstr "" " MØNSTER\tVelger hjelpeemne\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre et MØNSTER ikke finnes eller brukeren tar et " -"ugyldig valg." +" Vellykket, med mindre et MØNSTER ikke finnes eller bruker tar et ugyldig " +"valg." -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3517,7 +3554,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3543,7 +3581,7 @@ msgid "" msgstr "" "Vis eller gjør endringer i kommandohistorikk.\n" " \n" -" Vis historikk som en liste med linjenumre, og legg til en «*» foran\n" +" Vis historikk som en liste med linjenumre, og legg til «*» foran\n" " endrede oppføringer. Argumentet N viser siste N antall oppføringer.\n" " \n" " Valg:\n" @@ -3570,10 +3608,9 @@ msgstr "" " hver historikkoppføring. Ellers skrives ingen tidsstempler ut.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstår en " -"feil." +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil." -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3613,11 +3650,11 @@ msgstr "" " jobber er erstattet med prosess-ID-en til gjeldende prosessgruppeleder.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstår en " +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår " "feil.\n" " Hvis «-x» er valgt, hentes statuskode fra aktuell KOMMANDO." -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3646,10 +3683,9 @@ msgstr "" " -r\tbare fjern kjørende jobber\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar ugyldig(e) valg eller JOBBSPES." +" Vellykket, med mindre bruker tar ugyldig(e) valg eller JOBBSPES." -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3671,7 +3707,7 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" -"Send et signal til en jobb.\n" +"Send signal til en jobb.\n" " \n" " Gi prosesser (valgt med PID eller JOBBSPES) et signal\n" " (valgt med SIGSPES eller SIGNUM). Hvis hverken SIGSPES eller SIGNUM er " @@ -3683,18 +3719,17 @@ msgstr "" " -n sig\tSIG er et signalnummer\n" " -l\tvis signalnavn. Hvis «-l» etterfølges av argumenter,\n" " \tantas disse å være signalnumre som det skal vises navn på\n" +" -L\ttilsvarer «-l»\n" " \n" " Kill er en innebygget skallkommando av to grunner: den tillater bruk av " "jobb-ID\n" -" i stedet for prosess-ID, og lar brukeren drepe prosesser hvis grensa " -"for\n" +" i stedet for prosess-ID, og lar bruker drepe prosesser hvis grensa for\n" " antall tillatte prosesser er nådd.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstår " -"feil." +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3777,7 +3812,8 @@ msgstr "" " Avslutningsstatus:\n" " Hvis siste ARGument blir 0, er status 1. Ellers er statuskoden 0." -#: builtins.c:987 +#: builtins.c:992 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3798,7 +3834,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3872,7 +3908,7 @@ msgstr "" "tidelingsfeil,\n" " eller valget «-u» argumenteres med en ugyldig fildeskriptor." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3892,8 +3928,7 @@ msgstr "" " Avslutningsstatus:\n" " N, eller mislykket hvis skallet ikke kjører en funksjon eller et skript." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3980,7 +4015,7 @@ msgid "" msgstr "" "Legg til eller fjern verdier for skallvalg og posisjonsparametre.\n" " \n" -" Endre verdien av skall-attributter og posisjonsparametre, eller\n" +" Endre verdier av skall-attributter og posisjonsparametre, eller\n" " vis navn og verdier av skallvariabler.\n" " \n" " Valg:\n" @@ -4048,20 +4083,20 @@ msgstr "" " som «cd».\n" " -T Gi DEBUG-felle videre til skallfunksjoner.\n" " -- Tildel gjenstående argumenter til posisjonsparametre.\n" -" Hvis ingen argumenter gjenstår, tømmes posisjonsparametrene..\n" -" - Knytt gjenstående argumenter til posisjonsparametrene.\n" +" Hvis ingen argumenter gjenstår, tømmes posisjonsparametrene.\n" +" - Knytt gjenstående argumenter til posisjonsparametre.\n" " Valgene «-x» og «-v» er slått av.\n" " \n" -" Bruk «+» i stedet for «-» for å skru av disse valgene.\n" -" De kan også brukes når skalelt kalles. Gjeldende valgsett finnes\n" +" Bruk «+» i stedet for «-» for å slå av disse valgene.\n" +" De kan også brukes når skallet kalles. Gjeldende valgsett finnes\n" " i «$-». Gjenstående antall ARGumenter er posisjonsparametre,\n" " og tildeles i rekkefølge til $1, $2, … $n. Hvis ingen\n" " ARGumenter er brukt, skrives alle skallvariabler ut.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg." +" Vellykket, med mindre bruker tar et ugyldig valg." -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4099,10 +4134,10 @@ msgstr "" " Enkelte variabler kan ikke tømmes. Se også «readonly».\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller et NAVN er " +" Vellykket, med mindre bruker tar et ugyldig valg eller et NAVN er " "skrivebeskyttet." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4135,10 +4170,10 @@ msgstr "" " Bruk argumentet«--» for å slå av videre behandling av valg.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg, eller et NAVN er " +" Vellykket, med mindre bruker tar et ugyldig valg, eller et NAVN er " "ugyldig." -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4176,9 +4211,9 @@ msgstr "" " Bruk argumentet «--» for å slå av videre behandling av valg.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller NAVN." +" Vellykket, med mindre bruker tar et ugyldig valg eller NAVN." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4196,7 +4231,7 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket, med mindre N er negativ eller større enn $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4220,7 +4255,7 @@ msgstr "" " Samme som siste kommando som ble kjørt via FILNAVN, eller\n" " mislykket hvis FILNAVN ikke kan leses." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4244,9 +4279,9 @@ msgstr "" " -f\ttving skallpause, selv hvis skallet er et innloggingsskall\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre jobbkontroll er slått av eller det oppstår en feil." +" Vellykket, med mindre jobbkontroll er slått av eller det oppstår feil." -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4410,9 +4445,9 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket hvis UTTR gir positiv verdi, og mislykket hvis det gir negativ " "verdi eller\n" -" brukeren bruker et ugyldig argument." +" bruker skriver inn et ugyldig argument." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4424,7 +4459,7 @@ msgstr "" " Dette er synonymt med den innebygde kommandoen «test», men\n" " siste argument må være «]» for å samsvare med «[»." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4443,7 +4478,7 @@ msgstr "" " Avslutningsstatus:\n" " Alltid vellykket." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4525,7 +4560,7 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket, med mindre en SIGNALSPES eller et valg er ugyldig." -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4583,7 +4618,7 @@ msgstr "" " Vellykket hvis alle NAVN finnes, og mislykket hvis ett eller flere ikke " "finnes." -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4676,10 +4711,9 @@ msgstr "" "prosesser.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstår en " -"feil." +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4698,8 +4732,7 @@ msgid "" msgstr "" "Vis eller endre filmodus-maske.\n" " \n" -" Endrer brukerens standardmaske for nye filer til valgt MODUS. Hvis " -"ingen\n" +" Endrer brukers standardmaske for nye filer til valgt MODUS. Hvis ingen\n" " MODUS er valgt, skrives gjeldende maskeverdi ut.\n" " \n" " Hvis MODUS begynner med et siffer, tolkes den som et oktalt tall,\n" @@ -4711,10 +4744,10 @@ msgstr "" " -S\tgjør utdata symbolsk (ikke skriv ut oktaltall)\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre MODUS er ugyldig eller brukeren tar et ugyldig " -"valg." +" Vellykket, med mindre MODUS er ugyldig eller bruker tar et ugyldig valg." -#: builtins.c:1494 +#: builtins.c:1499 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4722,13 +4755,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4748,9 +4783,9 @@ msgstr "" " \n" " Avslutningsstatus:\n" " Samme som siste ID, eller mislykket hvis enten en ID er ugyldig eller\n" -" brukeren tar et ugyldig valg." +" bruker tar et ugyldig valg." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4774,9 +4809,9 @@ msgstr "" " \n" " Avslutningsstatus:\n" " Samme som siste PID. Mislykket hvis PID er ugyldig, eller hvis\n" -" brukeren tar et ugyldig valg." +" bruker tar et ugyldig valg." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4797,7 +4832,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørte kommando." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4827,7 +4862,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørte kommando." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4863,7 +4898,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørt kommando." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4893,7 +4928,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som statuskoden fra valgt DATARØR." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4911,7 +4946,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørte kommando." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4945,7 +4980,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørt kommando." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4963,7 +4998,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørte kommando." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4981,8 +5016,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørte kommando." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4994,7 +5028,7 @@ msgid "" " Exit Status:\n" " The coproc command returns an exit status of 0." msgstr "" -"Lag en medprosess med valgt NAVN.\n" +"Lag medprosess med valgt NAVN.\n" " \n" " Kjør valgt KOMMANDO synkront, med standard inn- og utdata for " "kommandoen\n" @@ -5003,10 +5037,9 @@ msgstr "" " med oppgitt NAVN i kjørende skall.\n" "\v StandardNAVN er «COPROC».\n" " \n" -" Avslutningsstatus:\n" -" Samme som valgt KOMMANDO." +" coproc avslutter med kode 0." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5030,7 +5063,7 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket, med mindre valgt NAVN er skrivebeskyttet." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5048,7 +5081,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørt kommando." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5072,7 +5105,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som statuskoden for gjenopptatt jobb." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5090,7 +5123,7 @@ msgstr "" " Avslutningsstatus:\n" " 1 hvis UTTRYKK blir 0, og ellers 0." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5141,7 +5174,7 @@ msgstr "" " Avslutningsstatus:\n" " 0 eller 1, avhengig av UTTRYKKets verdi." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5246,7 +5279,7 @@ msgstr "" " HISTIGNORE\tEn kolondelt liste over mønstre som bestemmer\n" " \t\thvilke kommandoer som skal lagres i historikklista.\n" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5302,7 +5335,7 @@ msgstr "" " Vellykket, med mindre et ugyldig argument er brukt eller\n" " mappebytte mislykkes." -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5351,7 +5384,7 @@ msgstr "" " Vellykket, med mindre et ugyldig argument er brukt eller\n" " mappebytte mislykkes." -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5381,11 +5414,11 @@ msgid "" msgstr "" "Vis mappestabel.\n" " \n" -" Vis lista over hurtiglagrede mapper som er hurtiglagret med\n" +" Vis liste over hurtiglagrede mapper som er hurtiglagret med\n" " kommandoen «pushd». Du kan gå opp igjen med kommandoen «popd». \n" " Valg:\n" " -c\ttøm mappestabel ved å slette alle elementer\n" -" -l\tikke skriv ut undermapper av brukerens hjemmemappe som\n" +" -l\tikke skriv ut undermapper av brukers hjemmemappe som\n" " \trelative stier med tilde-prefiks\n" " -p\tskriv ut mappestabel med én oppføring per linje\n" " -v\ttilsvarer «-p», men med stabelposisjon som prefiks\n" @@ -5395,17 +5428,16 @@ msgstr "" " -N\tVis N-te oppføring (talt fra null til høyre, etter «dirs»).\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstår en " -"feil." +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5432,10 +5464,10 @@ msgstr "" " -u\tslå av (tilbakestill) hvert VALGNAVN\n" " \n" " Avslutningsstatus:\n" -" Vellykket hvis VALGNAVN er slått på, og mislykket hvis enten brukeren \n" +" Vellykket hvis VALGNAVN er slått på, og mislykket hvis enten bruker \n" " tar et ugyldig valg eller VALGNAVN er slått av." -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5500,10 +5532,11 @@ msgstr "" " formatstrenger seg som om de var 0-verdier eller null-strenger.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstår en\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår en\n" " skrive- eller tidelingsfeil." -#: builtins.c:1953 +#: builtins.c:1961 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5521,10 +5554,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5547,10 +5584,9 @@ msgstr "" " fremfor «-E».\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstår en " -"feil." +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5569,10 +5605,10 @@ msgstr "" " søketreff på ORD.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstår en " -"feil." +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil." -#: builtins.c:1996 +#: builtins.c:2006 +#, fuzzy msgid "" "Modify or display completion options.\n" " \n" @@ -5587,6 +5623,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5626,10 +5663,10 @@ msgstr "" " Valgene for den aktuelle fullføringsgeneratoren blir i så fall endret.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller NAVN\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller NAVN\n" " mangler fullføringsoppsett." -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5705,11 +5742,10 @@ msgstr "" "tildelt noe.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller TABELL enten " -"er\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller TABELL enten er\n" " skrivebeskyttet eller en ikke-indeksert tabell." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/nl.gmo b/po/nl.gmo index 34efe81bf..369c1956e 100644 Binary files a/po/nl.gmo and b/po/nl.gmo differ diff --git a/po/nl.po b/po/nl.po index f1c2b4729..88eb7d2a7 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1,8 +1,8 @@ # Dutch translations for GNU bash. -# Copyright (C) 2015 Free Software Foundation, Inc. +# Copyright (C) 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # -# “Änderung des Speises tut essen.” +# «Lernfähiger Software! Ich lach mich kaputt!» # # De vertaling van de ruim 70 laatste hulpteksten (65%) in dit bestand # volgt niet helemaal het normale stramien van "onbepaalde wijs voor @@ -17,139 +17,140 @@ # om stilstaan en niet om finale opgave. Een alternatieve vertaling # zou dus "Stilstand" kunnen zijn. # -# Benno Schulenberg , 2006, 2008, 2010, 2011, 2013, 2014, 2015. +# Benno Schulenberg , 2006, 2008, 2010, 2011, 2013, 2014, 2015, 2016. # Erwin Poeze , 2009. # Julie Vermeersch , 2004. # Erick Branderhorst , 1996. msgid "" msgstr "" -"Project-Id-Version: bash-4.4-beta1\n" +"Project-Id-Version: bash-4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-18 21:37+0200\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2016-11-12 16:31+0100\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nl\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "ongeldige array-index" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: 'nameref'-eigenschap wordt verwijderd" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: kan geïndexeerd array niet omzetten naar associatief array" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: ongeldige sleutel voor associatief array" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: niet-numerieke index is niet mogelijk" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: een index is nodig bij toekenning aan associatief array" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "Kan %s niet aanmaken: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command(): kan voor opdracht geen toetsenkaart vinden" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: eerste teken dat geen witruimte is is niet '\"'" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "geen sluit-'%c' in %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: ontbrekend scheidingsteken (dubbele punt)" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor %d elementen" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor '%s'" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "'%s': ongeldige naam voor alias" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "regelbewerking is niet ingeschakeld" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "'%s': ongeldige naam voor toetsenkaart" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "Kan %s niet lezen: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "Kan %s niet losmaken" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "'%s': onbekende functienaam" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s is aan geen enkele toets gebonden\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s kan worden aangeroepen via " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "Kan %s niet losmaken" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "herhalingsaantal" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "heeft alleen betekenis in een 'for'-, 'while'- of 'until'-lus" @@ -163,234 +164,233 @@ msgstr "" "\n" " Zonder EXPR, resulteert " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME is niet gedefinieerd" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "te veel argumenten" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "geen andere map" +msgstr "null-map" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD is niet gedefinieerd" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "regel %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "waarschuwing: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: Gebruik: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: optie vereist een argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: vereist een numeriek argument" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: niet gevonden" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: ongeldige optie" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: ongeldige optienaam" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "'%s': is geen geldige naam" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "ongeldig octaal getal" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "ongeldig hexadecimaal getal" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "ongeldig getal" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: ongeldige signaalaanduiding" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "'%s': is geen PID en geen geldige taakaanduiding" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: is een alleen-lezen variabele" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s valt buiten bereik" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s valt buiten bereik" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: taak bestaat niet" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: geen taakbesturing" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "geen taakbesturing" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: beperkte modus" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "beperkte modus" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: is geen ingebouwde opdracht van de shell" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "schrijffout: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "fout tijdens instellen van terminaleigenschappen: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "fout tijdens verkrijgen van terminaleigenschappen: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: fout tijdens bepalen van huidige map: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: taakaanduiding is niet eenduidig" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "hulp is niet beschikbaar in deze versie" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: ongeldige actienaam" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: is geen completerings-aanduiding" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "waarschuwing: optie -F functioneert mogelijk niet zoals verwacht" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "waarschuwing: optie -C functioneert mogelijk niet zoals verwacht" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "er wordt momenteel geen completeringsfunctie uitgevoerd" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "kan alleen worden gebruikt binnen een functie" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: verwijzingsvariabele mag geen array zijn" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: zelfverwijzing door naamsverwijzingsvariabele is niet toegestaan" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: circulaire naamsverwijzing" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: ongeldige variabelenaam voor naamsverwijzing" +msgstr "'%s': ongeldige variabelenaam voor naamsverwijzing" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "'-f' kan niet gebruikt worden om een functie te definiëren" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: is een alleen-lezen functie" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: aangehaalde samengesteld-array-toekenning is verouderd" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: kan array-variabelen niet op deze manier verwijderen" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: kan associatief array niet omzetten naar geïndexeerd array" @@ -424,68 +424,68 @@ msgstr "%s: is niet dynamisch geladen" msgid "%s: cannot delete: %s" msgstr "Kan %s niet verwijderen: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: is een map" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: is geen normaal bestand" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: bestand is te groot" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kan binair bestand niet uitvoeren" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "Kan %s niet uitvoeren: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "uitgelogd\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "geen login-shell; gebruik 'exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Er zijn nog gepauzeerde taken.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Er zijn nog draaiende taken.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "geen opdracht gevonden" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "geschiedenisaanduiding" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "Kan tijdelijk bestand '%s' niet openen: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "huidige" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "taak %d is gestart zonder taakbesturing" @@ -500,28 +500,27 @@ msgstr "%s: ongeldige optie -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: optie vereist een argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashen is uitgeschakeld" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: de hash-tabel is leeg\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "treffers commando\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Shell-opdrachten die overeenkomen met '" msgstr[1] "Shell-opdrachten die overeenkomen met '" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -529,12 +528,12 @@ msgstr "" "Er is geen hulptekst voor '%s'.\n" "Probeer 'help help' of 'man -k %s' of 'info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "Kan %s niet openen: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -556,20 +555,21 @@ msgstr "" "is.)\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "slechts één van '-a', '-n', '-r' of '-w' is mogelijk" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "geschiedenispositie" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: ongeldig argument" +msgstr "%s: ongeldig tijdsstempel" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: geschiedenisexpansie is mislukt" @@ -583,16 +583,16 @@ msgstr "%s: 'inlib' is mislukt" msgid "no other options allowed with `-x'" msgstr "bij '-x' zijn geen andere opties toegestaan" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenten moeten proces-IDs of taak-IDs zijn" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Onbekende fout" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "uitdrukking werd verwacht" @@ -601,71 +601,71 @@ msgstr "uitdrukking werd verwacht" msgid "%s: not an indexed array" msgstr "%s: is geen geïndexeerd array" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ongeldige aanduiding van bestandsdescriptor" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ongeldige bestandsdescriptor: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: ongeldig regelaantal" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: ongeldig array-begin" # Quantum is een hoeveelheid regels, een getal. # Callback is de aan te roepen functie, maar onnodig in de vertaling. -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ongeldige hoeveelheid" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "lege naam van array-variabele" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "ondersteuning van arrayvariabelen is vereist" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "'%s': ontbrekend opmaakteken" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "'%c': ongeldige aanduiding van tijdsopmaak" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "'%c': ongeldig opmaakteken" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "waarschuwing: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "probleem bij ontleden van opmaak: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "ontbrekend hexadecimaal cijfer bij \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "ontbrekend Unicode-cijfer bij \\%c" @@ -679,19 +679,19 @@ msgstr "geen andere map" msgid "%s: invalid argument" msgstr "%s: ongeldig argument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "mappenstapel is leeg" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "mappenstapelindex" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -731,7 +731,7 @@ msgstr "" " -N Toont het N-de item, tellend vanaf rechts, van de lijst getoond\n" " door 'dirs' wanneer opgeroepen zonder opties, beginnend bij nul." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -773,7 +773,7 @@ msgstr "" "\n" " De opdracht 'dirs' toont de huidige mappenstapel." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -816,42 +816,42 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: ongeldige aanduiding van tijdslimiet" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "leesfout: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "kan alleen een 'return' doen uit een functie of een uit script aangeroepen " "met 'source'" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "kan niet tegelijk een functie en een variabele verwijderen" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "Kan '%s' niet verwijderen" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "Kan '%s' niet verwijderen: %s is alleen-lezen" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: is geen array-variabele" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: is geen functie" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "Kan '%s' niet exporteren" @@ -860,20 +860,20 @@ msgstr "Kan '%s' niet exporteren" msgid "shift count" msgstr "shift-aantal" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "kan shell-opties niet tegelijk inschakelen en uitschakelen" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ongeldige shell-optienaam" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "vereist een bestandsnaam als argument" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: bestand niet gevonden" @@ -886,61 +886,61 @@ msgstr "kan niet pauzeren" msgid "cannot suspend a login shell" msgstr "kan een inlog-shell niet pauzeren" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s is een alias voor '%s'\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s is een shell-sleutelwoord\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s is een functie\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s is een speciale ingebouwde shell-functie\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s is een ingebouwde shell-functie\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s is %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s is gehasht (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: ongeldige limietwaarde" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "'%c': ongeldige opdracht" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: kan de limiet niet bepalen: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limiet" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: kan de limiet niet wijzigen: %s" @@ -959,362 +959,372 @@ msgstr "'%c': ongeldige operator in symbolische modus" msgid "`%c': invalid symbolic mode character" msgstr "'%c': ongeldig teken in symbolische modus" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " regel " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "laatste opdracht: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Afbreken..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "informatie: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "onbekende opdrachtfout" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "ongeldig opdrachttype" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "ongeldige verbinder" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "ongeldige sprong" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: ongebonden variabele" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\awachten op invoer duurde te lang -- automatisch afgemeld\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "kan standaardinvoer niet omleiden vanaf /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: '%c': ongeldig opmaakteken" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc(): coproc [%d:%s] bestaat nog steeds" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "pijpfout" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: maximum 'eval'-nestingsniveau is overschreden (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximum 'source'-nestingsniveau is overschreden (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum functie-nestingsniveau is overschreden (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: beperkte modus: '/' in opdrachtnamen is niet toegestaan" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: opdracht niet gevonden" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: ongeldige interpreter" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kan binair bestand %s niet uitvoeren" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "'%s' is een speciale ingebouwde shell-functie" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "kan bestandsdescriptor %d niet dupliceren naar bestandsdescriptor %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "recursieniveau van expressies is overschreden" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "recursiestapel-onderloop" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "syntaxfout in expressie" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "poging tot toewijzing aan een niet-variabele" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "syntaxfout in expressie" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "deling door nul" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "**interne fout**: onjuist symbool in toewijzingsexpressie" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "':' werd verwacht voor een voorwaardelijke expressie" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "exponent is kleiner dan 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "naam verwacht na pre-increment of pre-decrement" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "ontbrekend ')'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "syntaxfout: operator verwacht" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "syntaxfout: ongeldige rekenkundige operator" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (het onjuiste symbool is \"%s\")" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "ongeldige rekenkundige basis" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "waarde is te groot voor basis" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: expressiefout\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getwd(): kan geen geen toegang verkrijgen tot bovenliggende mappen" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "kan 'nodelay'-modus niet uitschakelen voor bestandsdescriptor %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "kan geen nieuwe bestandsdescriptor reserveren voor bash-invoer vanuit " "bestandsdescriptor %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" "check_bash_input(): buffer bestaat al voor nieuwe bestandsdescriptor %d" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline(): procesgroep van pijp" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "afgesplitst PID %d hoort bij draaiende taak %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "verwijderen van gepauzeerde taak %d met procesgroep %ld..." -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process(): proces %5ld (%s) in de pijplijn" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process(): PID %5ld (%s) staat gemarkeerd als nog actief" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid(): PID %ld bestaat niet" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Signaal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Klaar" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Gepauzeerd" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Gepauzeerd(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Wordt uitgevoerd" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Klaar(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Onbekende afsluitwaarde" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(geheugendump gemaakt) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (werkmap: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "instellen van procesgroep %2$ld van dochter %1$ld" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait(): PID %ld is geen dochterproces van deze shell" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for(): proces %ld is nergens geregistreerd" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job(): taak %d is gepauzeerd" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: taak is afgesloten" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: taak %d draait al op de achtergrond" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" "waitchld(): WNOHANG wordt ingeschakeld om een onbegrensde blokkering te " "vermijden" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: regel %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (geheugendump gemaakt)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(werkmap is nu: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp() is mislukt" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: lijnprotocol" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: lijnprotocol" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid()" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "kan procesgroep (%d) van terminal niet instellen" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "er is geen taakbesturing in deze shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc(): controletest is mislukt: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1323,39 +1333,39 @@ msgstr "" "\r\n" "malloc(): %s:%d: controletest is mislukt\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "onbekend" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc(): een pointer op de lijst van vrije blokken is overschreven" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free(): aangeroepen met als argument een blok dat al vrijgegeven is" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free(): aangeroepen met als argument een ongebruikt blok" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free(): onderloop: 'mh_nbytes' valt buiten bereik" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free(): blokgroottes van begin en eind zijn verschillend" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc(): aangeroepen met als argument een ongebruikt blok" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc(): onderloop: 'mh_nbytes' valt buiten bereik" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc(): blokgroottes van begin en eind zijn verschillend" @@ -1397,22 +1407,22 @@ msgstr "%s: ongeldige aanduiding van netwerkpad" msgid "network operations not supported" msgstr "netwerkoperaties worden niet ondersteund" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale(): LC_ALL: kan niet van taalregio veranderen (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale(): LC_ALL: kan niet van taalregio veranderen (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale(): %s: kan niet van taalregio veranderen (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale(): %s: kan niet van taalregio veranderen (%s): %s" @@ -1430,153 +1440,155 @@ msgstr "U hebt nieuwe post in $_" msgid "The mail in %s has been read\n" msgstr "De post in %s is gelezen.\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "syntaxfout: een rekenkundige uitdrukking is vereist" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "syntaxfout: onverwachte ';'" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "syntaxfout: '((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document(): ongeldig instructietype %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "regel %d van \"hier\"-document eindigt met einde van bestand (verwachtte '%" "s')" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection(): omleidingsinstructie '%d' valt buiten bereik" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc(): lengte van invoerregel (%zu) overschrijdt SIZE_MAX (%lu): " +"regel is afgekapt" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "maximum aantal \"hier\"-documenten is overschreden" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende '%c'" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "onverwacht bestandseinde tijdens zoeken naar ']]'" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaxfout in conditionele expressie: onverwacht symbool '%s'" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "syntaxfout in conditionele expressie" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "onverwacht symbool '%s'; ')' werd verwacht" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "')' werd verwacht" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "onverwacht argument '%s' bij eenzijdige conditionele operator" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "onverwacht argument bij eenzijdige conditionele operator" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" "onverwacht symbool '%s'; tweezijdige conditionele operator werd verwacht" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "tweezijdige conditionele operator werd verwacht" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "onverwacht argument '%s' bij tweezijdige conditionele operator" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "onverwacht argument bij tweezijdige conditionele operator" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "onverwacht symbool '%c' in conditionele opdracht" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "onverwacht symbool '%s' in conditionele opdracht" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "onverwacht symbool %d in conditionele opdracht" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaxfout nabij onverwacht symbool '%s'" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "syntaxfout nabij '%s'" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "syntaxfout: onverwacht bestandseinde" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "syntaxfout" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Gebruik \"%s\" om de shell te verlaten.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende ')'" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion(): functie '%s' niet gevonden" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion(): %s: mogelijke herprobeerlus" #: pcomplib.c:182 #, c-format @@ -1604,90 +1616,94 @@ msgstr "" "xtrace-bestandsdescriptor (%d) != bestandsnummer van xtrace-bestandspointer " "(%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf(): '%c': ongeldig opmaakteken" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "bestandsdescriptor valt buiten bereik" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: omleiding is niet eenduidig" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: kan bestaand bestand niet overschrijven" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: beperkte modus: omleiden van uitvoer is niet toegestaan" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "kan geen tijdelijk bestand maken voor \"hier\"-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: kan bestandsdescriptor niet toewijzen aan variabele" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port is niet mogelijk zonder netwerk" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "omleidingsfout: kan bestandsdescriptor niet dupliceren" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "Kan /tmp niet vinden; maak deze aan!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp dient een geldige mapnaam te zijn" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ongeldige optie" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "kan UID niet op %d instellen; effectieve UID is %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "kan GID niet op %d instellen; effectieve GID is %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "kan debugger niet starten; debugging-modus is uitgeschakeld" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: is een map" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Ik heb geen naam!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versie %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1696,51 +1712,51 @@ msgstr "" "Gebruik: %s [opties]\n" " %s [opties] scriptbestand...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Lange opties:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Korte opties:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD, of -c OPDRACHT, of -O SHOPT-OPTIE (enkel bij aanroep)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s, of -o optie (veranderbaar via 'set')\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Typ '%s -c \"help set\"' voor meer informatie over shell-opties.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Typ '%s -c help' voor meer informatie over ingebouwde shell-functies.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Gebruik de opdracht 'bashbug' om fouten in bash te rapporteren.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "Webpagina van 'bash': \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" "Algemene hulp bij gebruik van GNU-software: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask(): %d: ongeldige operatie" @@ -1917,93 +1933,97 @@ msgstr "Onbekend signaalnummer" msgid "Unknown Signal #%d" msgstr "Onbekend signaal #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "ongeldige vervanging: geen sluit-'%s' in %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: kan geen lijst toewijzen aan een array-element" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "kan geen pijp maken voor procesvervanging" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "kan geen dochterproces maken voor procesvervanging" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "kan pijp genaamd %s niet openen om te lezen" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "kan pijp genaamd %s niet openen om te schrijven" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "kan pijp genaamd %s niet dupliceren als bestandsdescriptor %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "ongeldige vervanging: geen afsluitende '`' in %s" +msgstr "opdrachtsubstitutie: null-byte in invoer is genegeerd" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "kan geen pijp maken voor opdrachtvervanging" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "kan geen dochterproces maken voor opdrachtvervanging" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute(): kan pijp niet dupliceren als bestandsdescriptor 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: ongeldige variabelenaam voor naamsverwijzing" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: ongeldige vervanging" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: ongeldige indirecte expansie" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "%s: ongeldige variabelenaam" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: lege parameter, of niet ingesteld" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: lege parameter, of niet ingesteld" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: resultaat van deeltekenreeks is kleiner dan nul" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: ongeldige vervanging" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: kan niet op deze manier toewijzen" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2011,12 +2031,12 @@ msgstr "" "toekomstige versies van de shell zullen dit als een rekenkundige vervanging " "evalueren" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "ongeldige vervanging: geen afsluitende '`' in %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "geen overeenkomst: %s" @@ -2039,30 +2059,35 @@ msgstr "')' werd verwacht" msgid "`)' expected, found %s" msgstr "')' werd verwacht; %s gevonden" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "eenzijdige operator werd verwacht, %s gevonden" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "tweezijdige operator werd verwacht, %s gevonden" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "ontbrekende ']'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "ongeldig signaalnummer" -#: trap.c:387 +#: trap.c:320 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: maximum 'eval'-nestingsniveau is overschreden (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps(): ongeldige waarde in trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2070,88 +2095,88 @@ msgstr "" "run_pending_traps: signaalverwerker is SIG_DFL, herzenden van %d (%s) aan " "mezelf..." -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler(): ongeldig signaal %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "fout tijdens importeren van functiedefinitie voor '%s'" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell-niveau is te hoog (%d); teruggezet op 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "" "make_local_variable(): er is geen functiecontext in huidige geldigheidsbereik" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: aan variabele mag geen waarde toegewezen worden" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: ongeldige variabelenaam voor naamsverwijzing" +msgstr "%s: toekenning van geheel getal aan naamsverwijzing" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "" "all_local_variables(): er is geen functiecontext in huidige geldigheidsbereik" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "*** %s heeft lege export-tekenreeks" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "*** ongeldig teken '%d' in export-tekenreeks voor %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "*** geen '=' in export-tekenreeks voor %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context(): top van 'shell_variables' is geen functiecontext" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context(): er is geen 'global_variables'-context" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope(): top van 'shell_variables' is geen tijdelijk geldigheidsbereik" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: Kan %s niet openen als BESTAND" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: ongeldige waarde %s voor 'trace'-bestandsdescriptor" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: compatibiliteitswaarde valt buiten bereik" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2015 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2175,22 +2200,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Er is GEEN GARANTIE, voor zover de wet dit toestaat." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: kan geen %lu bytes reserveren (%lu bytes gereserveerd)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: kan geen %lu bytes reserveren" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: kan geen %lu bytes reserveren (%lu bytes gereserveerd)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: kan geen %lu bytes reserveren" @@ -2289,8 +2314,8 @@ msgstr "logout [N]" #: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" -"fc [-e EDITORNAAM] [-lnr] [EERSTE] [LAATSTE] of: fc -s [PATROON=VERVANGING] " -"[OPDRACHT]" +"fc [-e EDITORNAAM] [-lnr] [EERSTE] [LAATSTE] of: fc -s " +"[PATROON=VERVANGING] [OPDRACHT]" #: builtins.c:109 msgid "fg [job_spec]" @@ -2313,17 +2338,17 @@ msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" -"history [-c] [-d POSITIE] [N] of: history -anrw [BESTANDSNAAM] of: history " -"-ps ARGUMENT..." +"history [-c] [-d POSITIE] [N] of: history -anrw [BESTANDSNAAM] of: " +"history -ps ARGUMENT..." #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "jobs [-lnprs] [TAAKAANDUIDING...] of: jobs -x OPDRACHT [ARGUMENT...]" +msgstr "" +"jobs [-lnprs] [TAAKAANDUIDING...] of: jobs -x OPDRACHT [ARGUMENT...]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [TAAKAANDUIDING...]" +msgstr "disown [-h] [-ar] [TAAKAANDUIDING... | PID...] " #: builtins.c:134 msgid "" @@ -2360,11 +2385,11 @@ msgstr "unset [-f] [-v] [-n] [NAAM...]" #: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" -msgstr "export [-fn] [NAAM[=WAARDE] ...] of export -p" +msgstr "export [-fn] [NAAM[=WAARDE] ...] of: export -p" #: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" -msgstr "readonly [-aAf] [NAAM[=WAARDE] ...] of readonly -p" +msgstr "readonly [-aAf] [NAAM[=WAARDE] ...] of: readonly -p" #: builtins.c:150 msgid "shift [n]" @@ -2407,7 +2432,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [MODUS]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [ID ...]" #: builtins.c:181 @@ -2456,7 +2482,7 @@ msgstr "coproc [NAAM] OPDRACHT [OMLEIDINGEN]" #: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" -msgstr "function NAAM { OPDRACHTEN ; } of NAAM () { OPDRACHTEN ; }" +msgstr "function NAAM { OPDRACHTEN ; } of: NAAM () { OPDRACHTEN ; }" #: builtins.c:204 msgid "{ COMMANDS ; }" @@ -2476,7 +2502,7 @@ msgstr "[[ EXPRESSIE ]]" #: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "variables - enkele shell-variabelen" +msgstr "var - namen en betekenissen van enkele shell-variabelen" #: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" @@ -2499,8 +2525,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v VARIABELE] OPMAAK [ARGUMENTEN]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2518,7 +2545,8 @@ msgstr "" " [-W WOORDENLIJST] [-X FILTERPATROON] [WOORD]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o OPTIE] [-DE] [NAAM...]" #: builtins.c:242 @@ -2531,9 +2559,10 @@ msgstr "" "[ARRAY]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n AANTAL] [-O BEGIN] [-s AANTAL] [-t] [-u BESTANDSDESCRIPTOR]\n" " [-C FUNCTIE] [-c HOEVEELHEID] [ARRAY]" @@ -2702,6 +2731,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij N kleiner dan 1 is." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2712,7 +2742,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Een ingebouwde shell-functie uitvoeren.\n" "\n" @@ -2923,6 +2953,7 @@ msgstr "" " of 1 als de OPDRACHT niet gevonden is." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2941,11 +2972,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3002,7 +3033,6 @@ msgstr "" " toekenningsfout optrad." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3010,7 +3040,7 @@ msgid "" msgstr "" "Waarden en eigenschappen van variabelen instellen.\n" "\n" -" Deze opdracht is verouderd. Zie 'help declare'." +" Een synoniem van 'declare'. Zie 'help declare'." #: builtins.c:538 msgid "" @@ -3039,6 +3069,7 @@ msgstr "" " toekenningsfout optrad, of de shell geen functie aan het uitvoeren is." #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3067,6 +3098,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3099,7 +3136,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een schrijffout optrad." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3118,7 +3155,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een schrijffout optrad." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3174,7 +3211,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij NAAM geen ingebouwde shell-opdracht is of\n" "  er een fout optreedt." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3195,7 +3232,7 @@ msgstr "" "opdracht\n" " leeg is." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3271,7 +3308,7 @@ msgstr "" " Normaliter ontleedt 'getopts' de positionele parameters: $0...$9.\n" " Maar als er argumenten gegeven worden, dan worden deze ontleed." -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3312,7 +3349,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij OPDRACHT niet gevonden wordt of er een\n" " omleidingsfout optreedt." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3324,7 +3361,7 @@ msgstr "" " Beëindigt de shell met een afsluitwaarde van N. Zonder N is de\n" " afsluitwaarde die van de laatst uitgevoerde opdracht." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3337,7 +3374,7 @@ msgstr "" " Beëindigt een login-shell met een afsluitwaarde van N. Geeft een\n" " foutmelding als de huidige shell geen login-shell is." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3392,7 +3429,7 @@ msgstr "" " De afsluitwaarde die van de uitgevoerde opdracht, of 0, of niet-nul als\n" " er een fout optreedt." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3415,7 +3452,7 @@ msgstr "" "er\n" " een fout optreedt." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3440,7 +3477,7 @@ msgstr "" "fout\n" " optreedt." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3482,7 +3519,8 @@ msgstr "" " De afsluitwaarde is 0, tenzij NAAM niet gevonden wordt of een ongeldige\n" " optie gegeven werd." -#: builtins.c:812 +#: builtins.c:816 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3497,7 +3535,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3519,7 +3557,7 @@ msgstr "" "ongeldige\n" " optie gegeven werd." -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3529,7 +3567,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3566,9 +3605,10 @@ msgstr "" "\n" " -a huidige geschiedenis aan eind van geschiedenisbestand toevoegen\n" " -n alle nog niet gelezen regels uit het geschiedenisbestand lezen\n" -" -r het geschiedenisbestand lezen en toevoegen aan einde van\n" -" huidige geschienis\n" -" -w huidige geschiedenis aan einde van geschiedenisbestand toevoegen\n" +" en toevoegen aan het einde van huidige geschiedenis\n" +" -r het geschiedenisbestand lezen en toevoegen aan het einde van\n" +" huidige geschiedenis\n" +" -w huidige geschiedenis naar het geschiedenisbestand schrijven\n" "\n" " -p geschiedenisopzoeking uitvoeren voor elk ARGUMENT en het " "resultaat\n" @@ -3589,7 +3629,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3635,7 +3675,7 @@ msgstr "" "een\n" " fout optrad. Met optie '-x' is de afsluitwaarde die van OPDRACHT." -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3667,8 +3707,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie of TAAKAANDUIDING\n" " gegeven werd." -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3702,6 +3741,7 @@ msgstr "" "argumenten\n" " volgen, dan wordt voor elk nummer de bijbehorende naam\n" " getoond, en voor elke naam het bijbehorende nummer\n" +" -L synoniem van '-l'\n" "\n" " 'kill' is om twee redenen een ingebouwde shell-opdracht: het " "accepteert\n" @@ -3714,7 +3754,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3803,7 +3843,8 @@ msgstr "" " Als het laatste ARGUMENT evalueert tot 0, dan is de afsluitwaarde van\n" " 'let' 1; anders 0." -#: builtins.c:987 +#: builtins.c:992 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3824,7 +3865,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3905,7 +3946,7 @@ msgstr "" " de tijdslimiet overschreden werd, er een toekenningsfout optrad, of een\n" " ongeldige bestandsdescriptor als argument van '-u' gegeven werd." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3926,8 +3967,7 @@ msgstr "" " uitvoeren is." # Voor de duidelijkheid is de tekstvolgorde veranderd. -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4055,8 +4095,8 @@ msgstr "" " ingeschakeld als effectieve en echte UID of GID niet " "overeenkomen;\n" " uitschakelen maakt dan effectieve UID en GID gelijk aan de echte\n" -" -T een 'trap' op DEBUG door laten werken in functies en " -"dochterprocessen\n" +" -T een 'trap' op DEBUG of RETURN door laten werken in functies en\n" +" dochterprocessen\n" " -t afsluiten na het lezen en uitvoeren van één opdracht\n" " -u het gebruik van niet-bestaande variabelen behandelen als een fout\n" " -v invoerregel weergeven (\"echoën\") zodra deze gelezen is\n" @@ -4113,7 +4153,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd." -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4151,7 +4191,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of een\n" " NAAM alleen-lezen is." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4185,7 +4225,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd." -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4223,7 +4263,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4240,7 +4280,7 @@ msgstr "" "\n" " De afsluitwaarde is 0 tenzij N negatief is of groter dan $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4265,7 +4305,7 @@ msgstr "" "gegeven\n" " bestand, of 1 als dit bestand niet gelezen kan worden." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4291,7 +4331,7 @@ msgstr "" "fout\n" " optreedt." -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4441,7 +4481,7 @@ msgstr "" " De afsluitwaarde is 0 als EXPRESSIE waar is, 1 als EXPRESSIE onwaar is,\n" " en 2 als een ongeldig argument gegeven werd." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4453,7 +4493,7 @@ msgstr "" " Dit is een synoniem voor de ingebouwde functie 'test', behalve dat\n" " het laatste argument een ']' moet zijn, horend bij de begin-'['." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4472,7 +4512,7 @@ msgstr "" "\n" " De afsluitwaarde is altijd 0." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4560,7 +4600,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie of SIGNAALAANDUIDING\n" " gegeven werd." -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4613,7 +4653,7 @@ msgstr "" "\n" " De afsluitwaarde is 0 als elke NAAM gevonden werd, anders 1." -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4711,7 +4751,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4747,7 +4787,8 @@ msgstr "" " De afsluitwaarde is 0, tenzij MODUS ongeldig is of een ongeldige optie\n" " gegeven werd." -#: builtins.c:1494 +#: builtins.c:1499 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4755,13 +4796,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4784,7 +4827,7 @@ msgstr "" " De afsluitwaarde is die van de laatste ID, 1 als ID ongeldig is,\n" " of 2 als een ongeldige optie gegeven werd." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4808,7 +4851,7 @@ msgstr "" " De afsluitwaarde is die van de laatste PID, 1 als PID ongeldig is,\n" " of 2 als een ongeldige optie gegeven werd." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4829,7 +4872,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4856,7 +4899,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4893,7 +4936,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4920,7 +4963,7 @@ msgstr "" " overdraagbare standaardopmaak.\n" " De afsluitwaarde is die van de PIJPLIJN." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4938,7 +4981,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4973,7 +5016,7 @@ msgstr "" "uitgevoerde\n" " deelopdracht, of nul als geen enkele 'if' of 'elif' nul opleverde." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4990,7 +5033,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5007,8 +5050,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5027,9 +5069,9 @@ msgstr "" " indices 0 en 1 van array-variabele NAAM in de uitvoerende shell.\n" " De standaard-NAAM is \"COPROC\".\n" "\n" -" De afsluitwaarde is die van de OPDRACHT." +" De afsluitwaarde van coproc is 0." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5051,7 +5093,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij NAAM onveranderbaar is." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5068,7 +5110,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5092,7 +5134,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de hervatte taak." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5109,7 +5151,7 @@ msgstr "" "\n" " De afsluitwaarde is 1 als de EXPRESSIE tot 0 evalueert; anders 0." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5164,7 +5206,7 @@ msgstr "" "\n" " De afsluitwaarde is 0 of 1, afhankelijk van EXPRESSIE." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5278,7 +5320,7 @@ msgstr "" "het\n" " geschiedeniscommentaarteken, gewoonlijk '#'\n" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5331,7 +5373,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n" " mapwijziging mislukte." -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5380,7 +5422,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n" " mapwijziging mislukte." -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5431,14 +5473,14 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5474,7 +5516,7 @@ msgstr "" " een ongeldige optienaam gegeven werd, en de afsluitwaarde is 2 als een\n" " ongeldige optie gegeven werd." -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5544,7 +5586,8 @@ msgstr "" "een\n" " schrijf- of toekenningsfout optrad." -#: builtins.c:1953 +#: builtins.c:1961 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5562,10 +5605,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5594,7 +5641,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5616,7 +5663,8 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1996 +#: builtins.c:2006 +#, fuzzy msgid "" "Modify or display completion options.\n" " \n" @@ -5631,6 +5679,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5672,7 +5721,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of voor\n" " NAAM geen completeringsvoorschrift gedefinieerd is." -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5747,7 +5796,7 @@ msgstr "" "of\n" " een ongeldige optie gegeven werd." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5757,12 +5806,6 @@ msgstr "" "\n" " Een synoniem voor 'mapfile'." -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - # Dit is een commandonaam. #~ msgid "true" #~ msgstr "true" @@ -5771,12 +5814,10 @@ msgstr "" #~ msgid "false" #~ msgstr "false" +# Dit is een commandonaam. #~ msgid "times" #~ msgstr "times" -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2012 Free Software Foundation, Inc." - #~ msgid "" #~ "License GPLv2+: GNU GPL version 2 or later \n" diff --git a/po/pl.gmo b/po/pl.gmo index a67cbd54c..ebbd8756e 100644 Binary files a/po/pl.gmo and b/po/pl.gmo differ diff --git a/po/pl.po b/po/pl.po index 9f97f368b..924bb10c2 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1,143 +1,144 @@ # Polish translation of bash -# Copyright (C) 2007, 2010, 2011, 2013, 2014 Free Software Foundation, Inc. +# Copyright (C) 2007, 2010, 2011, 2013, 2014, 2015, 2016, 2018 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Andrzej M. Krzysztofowicz 2006,2007. -# Jakub Bogusz 2010-2015. +# Jakub Bogusz 2010-2018. # msgid "" msgstr "" -"Project-Id-Version: bash 4.4-beta1\n" +"Project-Id-Version: bash 5.0-beta2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-24 22:34+0200\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2018-11-28 17:15+0100\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "nieprawidłowy indeks tablicy" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: usuwanie atrybutu nameref" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: nie można przekształcić tablicy indeksowanej na asocjacyjną" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: błędny klucz tablicy asocjacyjnej" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nie można przypisać do nienumerycznego indeksu" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: przy przypisaniu do tablicy asocjacyjnej należy użyć nawiasów" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nie można utworzyć: %s" # ??? -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: nie można znaleźć mapy klawiszy dla polecenia" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: pierwszym drukowalnym znakiem nie jest `\"'" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "brak zamykającego `%c' w %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: brak separującego dwukropka" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "rozwijanie nawiasów: nie można przydzielić pamięci dla %s" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" "rozwijanie nawiasów: nie udało się przydzielić pamięci dla elementów w " -"liczbie %d" +"liczbie %u" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "rozwijanie nawiasów: nie udało się przydzielić pamięci dla `%s'" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': błędna nazwa aliasu" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "edycja wiersza nie została włączona" # ??? -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': nieprawidłowa nazwa mapy klawiszy" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: nie można odczytać: %s" -# ??? -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': nie można usunąć dowiązania" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': nie znana nazwa funkcji" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s nie jest przypisany do żadnego klawisza.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s może być wywołany przez " -#: builtins/break.def:79 builtins/break.def:121 +# ??? +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': nie można usunąć dowiązania" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "licznik pętli" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "ma sens tylko w pętli `for', `while' lub `until'" @@ -151,234 +152,233 @@ msgstr "" " \n" " Bez WYRAŻENIA zwraca " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "Nie ustawiono HOME" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "za dużo argumentów" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "brak innego katalogu" +msgstr "zerowy katalog" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "Nie ustawiono OLDPWD" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "linia %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "uwaga: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: składnia: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: opcja wymaga argumentu" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: wymagany argument numeryczny" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: nie znaleziono" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: nieprawidłowa opcja" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: nieprawidłowa nazwa opcji" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': nieprawidłowy identyfikator" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "błędna liczba ósemkowa" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "błędna liczba szesnastkowa" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "nieprawidłowa liczba" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: nieprawidłowo określony sygnał" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': nie jest to nr PID ani prawidłowe określenie zadania" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: zmienna tylko do odczytu" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s poza zakresem" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s poza zakresem" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: brak takiego zadania" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: brak kontroli zadań" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "brak kontroli zadań" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: ograniczony" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "ograniczony" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: nie jest to polecenie powłoki" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "błąd zapisu: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "błąd podczas ustawiania atrybutów terminala: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "błąd podczas pobierania atrybutów terminala: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: błąd przy określaniu katalogu bieżącego: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: niejednoznaczne określenie zadania" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "pomoc nie jest dostępna w tej wersji" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: nieprawidłowa nazwa akcji" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: brak definicji dla uzupełnienia" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "uwaga: opcja -F może działać inaczej niż oczekiwano" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "uwaga: opcja -C może działać inaczej niż oczekiwano" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "aktualnie nie jest wykonywana funkcja dopełniania" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "można używać tylko w funkcji" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: zmienna referencyjna nie może być tablicą" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: zmienna referencyjna nie może wskazywać na siebie" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: cykliczne odwołanie do nazwy" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: nieprawidłowa nazwa zmiennej przy odwołaniu do nazwy" +msgstr "`%s': błędna nazwa zmiennej przy odwołaniu do nazwy" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "nie można używać `-f' do tworzenia funkcji" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: funkcja tylko do odczytu" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: przypisanie złożonej tablicy z cytowaniem jest przestarzałe" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: nie można w ten sposób unicestwić zmiennej tablicowej" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: nie można przekształcić tablicy asocjacyjnej na indeksowaną" @@ -412,68 +412,68 @@ msgstr "%s: nie jest ładowany dynamicznie" msgid "%s: cannot delete: %s" msgstr "%s: nie można usunąć: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: jest katalogiem" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: nie jest zwykłym plikiem" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: plik jest za duży" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: nie można uruchomić pliku binarnego" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: nie można uruchomić: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "wylogowanie\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "to nie jest powłoka logowania: użyj `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Istnieją zatrzymane zadania.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Istnieją działające zadania.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "nie znaleziono polecenia" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "specyfikacja historii" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: nie udało się otworzyć pliku tymczasowego: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "bieżące" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "zadanie %d uruchomiono bez kontroli zadań" @@ -488,29 +488,28 @@ msgstr "%s: niedozwolona opcja -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: opcja wymaga argumentu -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "zapamiętywanie ścieżek poleceń w tablicy asocjacyjnej wyłączone" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tablica asocjacyjna pusta\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "trafienia\tpolecenie\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Polecenia powłoki pasujące do słowa kluczowego `" msgstr[1] "Polecenia powłoki pasujące do słów kluczowych `" msgstr[2] "Polecenia powłoki pasujące do słów kluczowych `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -518,12 +517,12 @@ msgstr "" "żaden temat pomocy nie pasuje do `%s'. Spróbuj `help help', `man -k %s'\n" "lub `info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nie można otworzyć: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -545,20 +544,21 @@ msgstr "" "Gwiazdka (*) po nazwie oznacza, że dane polecenie jest wyłączone.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "nie można używać więcej niż jednego spośród -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "pozycja historii" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: nieprawidłowy argument" +msgstr "%s: nieprawidłowy znacznik czasu" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: rozwinięcie wg historii nie powiodło się" @@ -572,16 +572,16 @@ msgstr "%s: inlib nie powiodło się" msgid "no other options allowed with `-x'" msgstr "nie można używać innych opcji przy `-x'" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumentami muszą być numery procesów lub zadań" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Nieznany błąd" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "spodziewano się wyrażenia" @@ -590,69 +590,69 @@ msgstr "spodziewano się wyrażenia" msgid "%s: not an indexed array" msgstr "%s: nie jest tablicą indeksowaną" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: nieprawidłowo określony deskryptor pliku" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: nieprawidłowy deskryptor pliku: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: błędna liczba linii" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: błędny początek tablicy" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: błędna liczba linii między wywołaniami" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "pusta nazwa zmiennej tablicowej" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "wymagana obsługa zmiennych tablicowych" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "`%s': brak znaku formatującego" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': błędne określenie formatu czasu" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "`%c': nieprawidłowy znak formatujący" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "uwaga: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "problem z analizą formatu: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "brak cyfry szesnastkowej dla \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "brak cyfry unikodowej dla \\%c" @@ -666,19 +666,19 @@ msgstr "brak innego katalogu" msgid "%s: invalid argument" msgstr "%s: nieprawidłowy argument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "pusty stos katalogów" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "indeks stosu katalogów" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -721,7 +721,7 @@ msgstr "" " -N\tWypisanie N-tej pozycji licząc od prawej strony listy wypisywanej\n" "\tprzez dirs wywołane bez opcji, począwszy od zera." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -765,7 +765,7 @@ msgstr "" " \n" " Zawartość stosu katalogów można zobaczyć za pomocą polecenia `dirs'." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -809,40 +809,40 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: nieprawidłowo określony limit czasu" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "błąd odczytu: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "wyjście przez `return' możliwe tylko z funkcji lub skryptu" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "nie można jednocześnie anulować definicji funkcji i zmiennej" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: nie można anulować definicji" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nie można anulować definicji: %s jest tylko do odczytu" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: nie jest zmienną tablicową" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: nie jest funkcją" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: nie można wyeksportować" @@ -851,20 +851,20 @@ msgstr "%s: nie można wyeksportować" msgid "shift count" msgstr "licznik przesunięcia" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "nie można opcji powłoki jednocześnie ustawić i unieważnić" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nieprawidłowa nazwa opcji powłoki" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "wymagany argument w postaci nazwy pliku" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: nie znaleziono pliku" @@ -877,61 +877,61 @@ msgstr "nie można wstrzymać" msgid "cannot suspend a login shell" msgstr "nie można wstrzymać powłoki logowania" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s jest aliasem do %s'\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s jest słowem kluczowym powłoki\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s jest funkcją\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s jest specjalnym wewnętrznym poleceniem powłoki\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s jest wewnętrznym poleceniem powłoki\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s jest %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "ścieżka do %s jest zapamiętana (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: nieprawidłowy argument stanowiący ograniczenie" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': złe polecenie" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nie można odczytać ograniczenia: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "ograniczenie" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nie można zmienić ograniczenia: %s" @@ -950,361 +950,369 @@ msgstr "`%c': nieprawidłowy operator trybu symbolicznego" msgid "`%c': invalid symbolic mode character" msgstr "`%c': nieprawidłowy znak trybu symbolicznego" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " linia " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "ostatnie polecenie: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Przerywanie..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORM: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "nieznany błąd polecenia" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "zły rodzaj polecenia" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "zły łącznik" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "zły skok" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: nieustawiona zmienna" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aprzekroczony czas oczekiwania na dane wejściowe: auto-wylogowanie\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "nie można przekierować standardowego wejścia z /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': nieprawidłowy znak formatujący" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: koproces [%d:%s] nadal istnieje" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "błąd potoku" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: przekroczono maksymalny poziom zagnieżdżenia polecenia eval (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia polecenia source (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia funkcji (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ograniczony: nie można podawać `/' w nazwach poleceń" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: nie znaleziono polecenia" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: zły interpreter" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: nie można uruchomić pliku binarnego: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "`%s' jest specjalnym poleceniem wewnętrznym" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nie można skopiować deskryptora pliku %d do %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "przekroczone ograniczenie poziomu rekursji dla wyrażenia" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "niedomiar stosu rekursji" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "błąd składniowy w wyrażeniu" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "próba przypisania do nie-zmiennej" -#: expr.c:495 expr.c:858 +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "błąd składniowy w przypisaniu zmiennej" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "dzielenie przez 0" # ??? -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "błąd: zły prefiks operatora przypisującego" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "spodziewano się `:' w wyrażeniu warunkowym" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "wykładnik mniejszy niż 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "spodziewany identyfikator po operatorze preinkrementacji lub predekrementacji" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "brakujący `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "błąd składni: spodziewany argument" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "błąd składni: nieprawidłowy operator arytmetyczny" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (błędny znacznik to \"%s\")" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "nieprawidłowa podstawa arytmetyczna" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "wartość za duża na podstawę" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: błąd w wyrażeniu\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: niemożliwy dostęp do katalogów nadrzędnych" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nie można wyłączyć trybu nieblokującego dla deskryptora %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "nie można przydzielić nowego deskryptora pliku dla wejścia basha z %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: bufor dla nowego deskryptora %d już istnieje" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" # ??? -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "proces o PID %d występuje w działającym zadaniu %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "usuwanie zatrzymanego zadania %d z grupą procesów %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) w potoku" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) oznaczony jako nadal żywy" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: brak takiego PID-u" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Sygnał %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Zakończono" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Zatrzymano" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Zatrzymano(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Działa" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Zakończono(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Kod wyjścia %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Stan nieznany" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(zrzut pamięci) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (katalog: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid potomka (%ld na %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: PID %ld nie jest potomkiem tej powłoki" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Brak rekordu dla procesu %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: zadanie %d jest zatrzymane" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: zadanie zostało przerwane" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: zadanie %d już pracuje w tle" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" "waitchld: wyłączanie WNOHANG w celu uniknięcia nieskończonego oczekiwania" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: linia %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (zrzut pamięci)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(katalog: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp nie powiodło się" -#: jobs.c:4104 +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: brak kontroli zadań w tle" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: dyscyplina linii" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nie można ustawić grupy procesów terminala (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "w tej powłoce nie ma kontroli zadań" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: założenie, że %s nie jest spełnione\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1313,40 +1321,40 @@ msgstr "" "\r\n" "malloc: %s:%d: spartaczone założenie\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "nieznany" # ??? -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: nieprawidłowy blok na liście wolnych bloków" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: wywołane dla bloku, który już został zwolniony" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: wywołane dla bloku, który nie został przydzielony" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: wykryto niedomiar; mh_nbytes poza zakresem" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: rozmiar początkowy i końcowy fragmentu są różne" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: wywołane dla bloku, który nie został przydzielony" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: wykryto niedomiar; mh_nbytes poza zakresem" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: rozmiar początkowy i końcowy fragmentu są różne" @@ -1388,22 +1396,22 @@ msgstr "%s: źle określona ścieżka sieciowa" msgid "network operations not supported" msgstr "operacje sieciowe nie są wspierane" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: nie można zmienić lokalizacji (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: nie można zmienić lokalizacji (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: nie można zmienić lokalizacji (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: nie można zmienić lokalizacji (%s): %s" @@ -1421,151 +1429,153 @@ msgstr "Masz nową pocztę w $_" msgid "The mail in %s has been read\n" msgstr "Poczta w %s jest przeczytana\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "błąd składni: oczekiwano wyrażenia arytmetycznego" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "błąd składni: oczekiwany `;'" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "błąd składni: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: zły rodzaj instrukcji %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "dokument miejscowy w linii %d ograniczony końcem pliku (oczekiwano `%s')" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instrukcja przekierowania `%d' poza zakresem" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) przekracza SIZE_MAX (%lu): linia " +"skrócona" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "przekroczono maksymalną liczbę dokumentów w miejscu" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "nieoczekiwany EOF podczas poszukiwania pasującego `%c'" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "nieoczekiwany EOF podczas poszukiwania `]]'" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "błąd składni w wyrażeniu warunkowym: nieoczekiwany znacznik `%s'" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "błąd składni w wyrażeniu warunkowym" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "nieoczekiwany znacznik `%s', oczekiwano `)'" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "oczekiwano `)'" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "nieoczekiwany argument `%s' jednoargumentowego operatora warunkowego" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "nieoczekiwany argument jednoargumentowego operatora warunkowego" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "nieoczekiwany argument `%s', oczekiwano dwuarg. operatora warunkowego" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "oczekiwano dwuargumentowego operatora warunkowego" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "nieoczekiwany argument `%s' dwuargumentowego operatora warunkowego" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "nieoczekiwany argument dwuargumentowego operatora warunkowego" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "nieoczekiwany znacznik `%c' w poleceniu warunkowym" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "nieoczekiwany znacznik `%s' w poleceniu warunkowym" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "nieoczekiwany znacznik %d w poleceniu warunkowym" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "błąd składni przy nieoczekiwanym znaczniku `%s'" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "błąd składni przy `%s'" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "błąd składni: nieoczekiwany koniec pliku" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "błąd składni" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Użyj \"%s\", aby opuścić tę powłokę.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "nieoczekiwany EOF podczas poszukiwania pasującego `)'" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "uzupełnienie: nie znaleziono funkcji `%s'" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: możliwe zapętlenie wznowień" #: pcomplib.c:182 #, c-format @@ -1591,90 +1601,94 @@ msgstr "xtrace_set: pusty wskaźnik pliku" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': nieprawidłowy znak formatujący" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "deskryptor pliku poza zakresem" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: niejednoznaczne przekierowanie" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nie można nadpisać istniejącego pliku" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ograniczony: nie można przekierować wyjścia" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "nie można utworzyć pliku tymczasowego dla dokumentu miejscowego: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nie można przypisać deskryptora pliku do zmiennej" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nie są wspierane bez sieci" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "błąd przekierowania: nie można powielić deskryptora pliku" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "nie można znaleźć /tmp, proszę o utworzenie!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp musi być prawidłową nazwą katalogu" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "tryb ładnego wypisywania jest ignorowany w powłokach interaktywnych" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: nieprawidłowa opcja" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "nie można ustawić uid-a na %d: efektywny uid %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "nie można ustawić gid-a na %d: efektywny gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "nie można uruchomić debuggera; tryb diagnostyczny wyłączony" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: jest katalogiem" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Nie mam nazwy!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, wersja %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1683,55 +1697,55 @@ msgstr "" "Użycie:\t%s [długa opcja GNU] [opcja] ...\n" "\t%s [długa opcja GNU] [opcja] plik-skryptu ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Długie opcje GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Opcje powłoki:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD lub -c polecenie lub -O shopt_option\t\t(tylko wywołanie)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s lub -o opcja\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Aby uzyskać więcej informacji o opcjach powłoki, napisz `%s -c \"help set" "\"'.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Aby uzyskać więcej informacji o poleceniach wewnętrznych powłoki,\n" "napisz `%s -c help'.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Do zgłaszania błędów należy używać polecenia `bashbug'.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "strona domowa basha: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" "Ogólna pomoc przy użytkowaniu oprogramowania GNU: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: nieprawidłowa operacja" @@ -1905,92 +1919,96 @@ msgstr "Nieznany sygnał #" msgid "Unknown Signal #%d" msgstr "Nieznany sygnał #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "złe podstawienie: brak zamykającego `%s' w %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: nie można przypisać listy do elementu tablicy" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "nie można utworzyć potoku dla podstawienia procesu" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "nie można utworzyć procesu potomnego dla podstawienia procesu" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nie można otworzyć nazwanego potoku %s do odczytu" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "nie można otworzyć nazwanego potoku %s do zapisu" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nie można powielić nazwanego potoku %s jako deskryptor %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "złe podstawienie: brak zamykającego \"`\" w %s" +msgstr "podstawienie polecenia: zignorowano zerowy bajt na wejściu" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "nie można utworzyć potoku dla podstawienia polecenia" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "nie można utworzyć procesu potomnego dla podstawienia polecenia" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: nie można powielić potoku jako deskryptora 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: nieprawidłowa nazwa zmiennej przy odwołaniu do nazwy" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: złe podstawienie" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: błędne rozwinięcie niebezpośrednie" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "`%s': błędna nazwa zmiennej" -#: subst.c:6854 +#: subst.c:7056 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parametr nieustawiony" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametr pusty lub nieustawiony" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: wyrażenie dla podłańcucha < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: złe podstawienie" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nie można przypisywać w ten sposób" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1998,12 +2016,12 @@ msgstr "" "przyszłe wersje powłoki będą wymuszać obliczenie jako podstawienie " "arytmetyczne" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "złe podstawienie: brak zamykającego \"`\" w %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "brak pasującego: %s" @@ -2026,30 +2044,35 @@ msgstr "oczekiwano `)'" msgid "`)' expected, found %s" msgstr "oczekiwano `)', znaleziono %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: oczekiwano operatora jednoargumentowego" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: oczekiwano operatora dwuargumentowego" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "brakujący `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "nieprawidłowy numer sygnału" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "obsługa pułapki: przekroczono maksymalny poziom obsługi pułapek (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: zła wartość trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2057,86 +2080,85 @@ msgstr "" "run_pending_traps: obsługa sygnału jest ustawiona na SIG_DFL, wysyłając %d (%" "s) do siebie" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: zły sygnał %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "błąd importu definicji funkcji dla `%s'" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "poziom powłoki (%d) jest za duży, ustawiono na 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: brak kontekstu funkcji w bieżącym zakresie" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: nie można przypisać wartości do zmiennej" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: nieprawidłowa nazwa zmiennej przy odwołaniu do nazwy" +msgstr "%s: przypisanie wartości całkowitej przy odwołaniu do nazwy" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: brak kontekstu funkcji w bieżącym zakresie" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s ma pusty exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "nieprawidłowy znak %d w exportstr dla %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "brak `=' w exportstr dla %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: nagłówek shell_variables poza kontekstem funkcji" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: brak kontekstu global_variables" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: nagłówek shell_variables poza zakresem tymczasowego środowiska" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nie można otworzyć jako PLIK" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: nieprawidłowa wartość dla deskryptora pliku do śledzenia" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: wartość zgodności poza zakresem" #: version.c:46 version2.c:46 -#, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2015 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2161,22 +2183,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Nie ma ŻADNEJ GWARANCJI w granicach dopuszczanych przez prawo." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: nie można przydzielić %lu bajtów (przydzielono %lu)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: nie można przydzielić %lu bajtów" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: nie można przydzielić %lu bajtów (przydzielono %lu)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: nie można przydzielić %lu bajtów" @@ -2304,9 +2326,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [zadanie ...] lub jobs -x polecenie [argumenty]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [zadanie ...]" +msgstr "disown [-h] [-ar] [zadanie ... | pid ...]" #: builtins.c:134 msgid "" @@ -2389,8 +2410,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [uprawnienia]" #: builtins.c:177 -msgid "wait [-n] [id ...]" -msgstr "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" +msgstr "wait [-fn] [id ...]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2482,12 +2503,12 @@ msgstr "printf [-v var] format [argumenty]" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o opcja] [-A akcja] [-G wzorzec-glob] " -"[-W lista-słów] [-F funkcja] [-C polecenie] [-X wzorzec-filtra] [-P " +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o opcja] [-A akcja] [-G wzorzec-" +"glob] [-W lista-słów] [-F funkcja] [-C polecenie] [-X wzorzec-filtra] [-P " "przedrostek] [-S przyrostek] [nazwa ...]" #: builtins.c:235 @@ -2500,8 +2521,8 @@ msgstr "" "przyrostek] [słowo]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "compopt [-o|+o opcja] [-DE] [nazwa ...]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o opcja] [-DEI] [nazwa ...]" #: builtins.c:242 msgid "" @@ -2513,11 +2534,11 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -"readarray [-n liczba] [-O początek] [-s liczba] [-t] [-u fd] [-C wywołanie] " -"[-c co-ile] [tablica]" +"readarray [-d ogranicznik] [-n liczba] [-O początek] [-s liczba] [-t] [-u " +"fd] [-C wywołanie] [-c krok] [tablica]" #: builtins.c:256 msgid "" @@ -2712,7 +2733,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Wywołanie polecenia wbudowanego powłoki.\n" " \n" @@ -2958,11 +2979,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2995,12 +3016,13 @@ msgstr "" " -a\tczyni NAZWĘ tablicą indeksowaną (jeśli są one obsługiwane)\n" " -A\tczyni NAZWĘ tablicą asocjacyjną (jeśli są one obsługiwane)\n" " -i\tnadaje NAZWIE atrybut `integer' (zmiennej całkowitej)\n" -" -l\tprzekształca NAZWĘ na małe litery przy przypisaniu\n" +" -l\tprzekształca wartość każdej NAZWY na małe litery przy przypisaniu\n" " -n\tczyni NAZWĘ odwołaniem do zmiennej o nazwie wskazanej przez " "wartość\n" " -r\tczyni NAZWĘ tylko do odczytu\n" " -t\tnadaje NAZWIE atrybut `trace'\n" -" -u\tprzekształca NAZWĘ na wielkie litery przy przypisaniu\n" +" -u\tprzekształca wartość każdej NAZWY na wielkie litery przy " +"przypisaniu\n" " -x\teksportuje NAZWĘ\n" " \n" " Użycie `+' zamiast `-' wyłącza podany atrybut.\n" @@ -3015,7 +3037,6 @@ msgstr "" " Polecenie zwraca prawdę, chyba że podano błędną opcję lub wystąpi błąd." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3023,7 +3044,7 @@ msgid "" msgstr "" "Ustawienie wartości i atrybutów zmiennej.\n" " \n" -" Polecenie przestarzałe - p. `help declare'." +" Synonim `declare' - p. `help declare'." #: builtins.c:538 msgid "" @@ -3052,6 +3073,7 @@ msgstr "" " przypisaniu zmiennej lub powłoka nie wykonuje żadnej funkcji." #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3080,6 +3102,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3117,7 +3145,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że wystąpi błąd zapisu." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3139,7 +3167,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że wystąpi błąd zapisu." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3193,7 +3221,7 @@ msgstr "" " Zwracana jest prawda, chyba że NAZWA nie jest poleceniem wbudowanym lub\n" " wystąpi błąd." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3213,7 +3241,7 @@ msgstr "" " Zwracany jest stan wyjściowy polecenia lub prawdę, jeśli polecenie jest\n" " puste." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3299,7 +3327,7 @@ msgstr "" "koniec\n" " opcji lub błąd." -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3340,7 +3368,7 @@ msgstr "" "wystąpi\n" " błąd przekierowania." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3352,7 +3380,7 @@ msgstr "" " Opuszczenie powłoki z kodem zakończenia N. Jeśli N pominięto, kodem\n" " zakończenia będzie kod zakończenia ostatniego wykonanego polecenia." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3365,7 +3393,7 @@ msgstr "" " Opuszczenie powłoki logowania z kodem zakończenia N. Zwraca błąd, jeśli\n" " powłoka nie jest powłoką logowania." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3424,7 +3452,7 @@ msgstr "" " Zwracana jest prawda lub stan wykonanego polecenia; wartość niezerowa\n" " w przypadku błędu." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3445,7 +3473,7 @@ msgstr "" " Stan zadania umieszczonego na pierwszym planie lub fałsz, jeśli wystąpi\n" " błąd." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3468,7 +3496,7 @@ msgstr "" " Zwracana jest prawda, chyba że sterowanie zadaniami nie jest włączone\n" " lub wystąpi błąd." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3512,7 +3540,7 @@ msgstr "" " Zwracana jest prawda, chyba że nie znaleziono NAZWY lub podano błędną\n" " opcję." -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3527,7 +3555,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3553,8 +3581,7 @@ msgstr "" " Zwracana jest prawda, chyba że WZORCA nie znaleziono lub podano błędną\n" " opcję." -#: builtins.c:836 -#, fuzzy +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3563,7 +3590,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3595,11 +3623,13 @@ msgstr "" " \n" " Opcje:\n" " -c\twyczyszczenie listy historii poprzez usunięcie wszystkich wpisów\n" -" -d offset\tusunięcie wpisu historii o podanym OFFSECIE\n" +" -d offset\tusunięcie wpisu historii o podanym OFFSECIE. Ujemne " +"offsety\n" +" \t\tliczą się wstecz od końca listy historii\n" " \n" " -a\tdołączenie linii historii z tej sesji do pliku historii\n" " -n\todczyt wszystkich jeszcze nie przeczytanych linii z pliku\n" -" \t\thistorii\n" +" \t\thistorii i dołączenie ich do listy historii\n" " -r\todczyt pliku historii i dołączenie zawartości do listy historii\n" " -w\tzapis bieżącej historii do pliku historii\n" " \n" @@ -3623,7 +3653,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd." -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3668,7 +3698,7 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd.\n" " Jeśli użyto -x, zwracany jest stan wyjściowy POLECENIA." -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3698,8 +3728,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędną opcję lub ZADANIE." -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3734,6 +3763,7 @@ msgstr "" " -l\tlista nazw sygnałów; jeśli `-l' występuje z argumentami, są one\n" " \t\ttraktowane jako numery sygnałów, dla których mają być wypisane " "nazwy\n" +" -L\tsynonim -l\n" " \n" " Kill jest poleceniem wewnętrznym z dwóch powodów: umożliwia korzystanie\n" " z identyfikatorów zadań zamiast numerów PID oraz, w przypadku " @@ -3744,7 +3774,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest sukces, chyba że podano błędną opcję lub wystąpi błąd." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3833,7 +3863,7 @@ msgstr "" " Jeśli wartością ostatniego argumentu jest 0, let zwraca 1;\n" " w pozostałych przypadkach zwracane jest 0." -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3854,7 +3884,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3903,7 +3933,7 @@ msgstr "" " -d ogr\tkontynuacja do odczytu pierwszego znaku OGR zamiast znaku " "nowej\n" " \t\tlinii\n" -" -e\tużycie Readline'a do odczytania wiersza w powłoce interaktywnej\n" +" -e\tużycie Readline'a do odczytania wiersza\n" " -o tekst\tużycie TEKSTU jako początkowego tekstu dla Readline'a\n" " -n liczba\tpowrót po odczycie LICZBY znaków zamiast oczekiwania na\n" " \t\tznak nowej linii; ogranicznik jest honorowany, jeśli odczytano " @@ -3933,7 +3963,7 @@ msgstr "" " błąd przypisania zmiennej albo podano nieprawidłowy deskryptor dla\n" " argumentu -u." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3954,8 +3984,7 @@ msgstr "" " Zwracane jest N lub niepowodzenie, jeśli powłoka nie wykonuje żadnej\n" " funkcji ani skryptu." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4115,7 +4144,8 @@ msgstr "" " -P Gdy ustawione, nierozwiązywanie dowiązań symbolicznych podczas\n" " uruchamiania poleceń takich, jak cd, które zmieniają katalog\n" " bieżący.\n" -" -T Gdy ustawione, dziedziczenie pułapki DEBUG przez funkcje powłoki.\n" +" -T Gdy ustawione, dziedziczenie pułapek DEBUG i RETURN przez " +"funkcje.\n" " -- Przypisanie pozostałych argumentów do parametrów pozycyjnych.\n" " Jeśli nie ma więcej argumentów, parametry pozycyjne są anulowane.\n" " - Przypisanie pozostałych argumentów do argumentów pozycyjnych.\n" @@ -4131,7 +4161,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano nieprawidłową opcję." -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4173,7 +4203,7 @@ msgstr "" "do\n" " odczytu." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4208,7 +4238,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano nieprawidłową opcję lub NAZWĘ." -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4248,7 +4278,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano nieprawidłową opcję lub NAZWĘ." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4266,7 +4296,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że N jest ujemne lub większe niż $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4291,7 +4321,7 @@ msgstr "" "jeśli\n" " PLIKU nie udało się odczytać." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4319,7 +4349,7 @@ msgstr "" "wystąpi\n" " błąd." -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4492,7 +4522,7 @@ msgstr "" " Zwracana jest prawda, jeśli wartością WYRAŻENIA jest prawda; fałsz, gdy\n" " wartością WYRAŻENIA jest fałsz lub podano błędny argument." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4504,7 +4534,7 @@ msgstr "" " Jest to synonim dla wbudowanego polecenia \"test\", ale wymagający, by\n" " ostatnim argumentem był `]' pasujący do początkowego `['." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4524,7 +4554,7 @@ msgstr "" " Stan wyjściowy:\n" " Zawsze prawda." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4609,7 +4639,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędny SYGNAŁ lub błędną opcję." -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4667,7 +4697,7 @@ msgstr "" "jeśli\n" " którakolwiek nie zostanie znaleziona." -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4766,7 +4796,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4801,7 +4831,7 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędne uprawnienia lub błędną " "opcję." -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4809,13 +4839,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4834,11 +4866,14 @@ msgstr "" " Jeśli podano opcję -n, oczekiwanie na zakończenie następnego zadania\n" " i zwrócenie jego kodu zakończenia.\n" " \n" +" Jeśli podano opcję -f, a kontrola zadań jest włączona, oczekiwanie na\n" +" zakończenie podanego ID zamiast czekania na zmianę jego stanu.\n" +" \n" " Stan wyjściowy:\n" " Zwracany jest stan zakończenia ID; niepowodzenie, jeśli ID jest\n" " nieprawidłowe lub podano błędną opcję." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4867,7 +4902,7 @@ msgstr "" "podano\n" " nieprawidłową opcję." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4890,7 +4925,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4920,7 +4955,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4957,7 +4992,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4987,7 +5022,7 @@ msgstr "" " Stan wyjściowy:\n" " Polecenie zwraca status zakończenia POTOKU poleceń." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5005,7 +5040,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5041,7 +5076,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5059,7 +5094,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5077,8 +5112,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5098,9 +5132,9 @@ msgstr "" " przypisanymi do indeksów 0 i 1 zmiennej tablicowej NAZWA w powłoce.\n" " Domyślną NAZWĄ jest \"COPROC\".\n" " Stan wyjściowy:\n" -" Zwracany jest status zakończenia POLECENIA." +" Polecenie coproc zwraca status wyjścia 0." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5125,7 +5159,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest sukces, chyba że NAZWA jest tylko do odczytu." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5143,7 +5177,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5169,7 +5203,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest stan wznowionego zadania." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5189,7 +5223,7 @@ msgstr "" " Zwracane jest 1, jeśli wartością WYRAŻENIA jest 0; 0 w przeciwnym " "wypadku." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5244,7 +5278,7 @@ msgstr "" " Stan wyjściowy:\n" " 0 lub 1 w zależności od wartości WYRAŻENIA." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5352,7 +5386,7 @@ msgstr "" " \t\tdecydowaniu, które polecenia powinny być zapisywane na liście\n" " \t\thistorii.\n" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5410,7 +5444,7 @@ msgstr "" "katalogu\n" " się nie powiedzie." -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5462,7 +5496,7 @@ msgstr "" "katalogu\n" " się nie powiedzie." -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5516,14 +5550,13 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd." -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5540,7 +5573,9 @@ msgstr "" " \n" " Zmiana ustawienia każdej z NAZWY-OPCJI. Bez argumentów będących " "opcjami,\n" -" wypisywane są wszystkie opcje powłoki z zaznaczeniem włączonych.\n" +" wypisywane są wszystkie podane NAZWY-OPCJI, lub wszystkie opcje " +"powłoki,\n" +" jeśli nie podano NAZW-OPCJI, wraz z zaznaczeniem włączonych.\n" " \n" " Opcje:\n" " -o\tograniczenie NAZW-OPCJI do używanych z `set -o'\n" @@ -5554,7 +5589,7 @@ msgstr "" "jeśli\n" " podano błędną opcję lub NAZWA-OPCJI jest wyłączona." -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5626,7 +5661,9 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędną opcję lub zapis albo\n" " przypisanie zakończy się niepowodzeniem." -#: builtins.c:1953 +# FIXME: s/intial/initial/ +#: builtins.c:1961 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5644,10 +5681,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5667,14 +5708,17 @@ msgstr "" " \t\tokreślonych żadnych konkretnych reguł dopełniania\n" " -E\tstosowanie dopełniania i akcji dla \"pustych\" poleceń -\n" " \t\tpróby dopełnienia w pustej linii\n" +" -I\tstosowanie dopełniania i akcji do początkowego słowa (zwykle\n" +" \t\tpolecenia)\n" " \n" " Przy próbie dopełnienia akcje są wykonywane w kolejności takiej, jak\n" -" wielkie litery wymienione powyżej. Opcja -D ma priorytet nad -E.\n" +" wielkie litery wymienione powyżej. Jeśli podano wiele opcji, opcja -D\n" +" ma priorytet nad -E, a obie mają priorytet nad -I.\n" " \n" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5695,7 +5739,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd." -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -5710,6 +5754,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5736,6 +5781,7 @@ msgstr "" " \t-o opcja\tUstawienie podanej OPCJI dopełniania dla każdej NAZWY\n" " \t-D\t\tZmiana opcji dla \"domyślnego\" dopełniania polecenia\n" " \t-E\t\tZmiana opcji dla dopełniania \"pustego\" polecenia\n" +" \t-I\t\tZmiana opcji dla dopełniania dla początkowego słowa\n" " \n" " Użycie `+o' zamiast `-o' wyłącza podaną opcję.\n" " \n" @@ -5753,7 +5799,7 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędną opcję lub NAZWA nie ma\n" " zdefiniowanej specyfikacji dopełniania." -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5829,7 +5875,7 @@ msgstr "" "tylko\n" " do odczytu, lub nie jest tablicą indeksowaną." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5838,18 +5884,3 @@ msgstr "" "Odczyt linii z pliku do zmiennej tablicowej.\n" " \n" " Synonim polecenia `mapfile'." - -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "true" - -#~ msgid "false" -#~ msgstr "false" - -#~ msgid "times" -#~ msgstr "times" diff --git a/po/pt.gmo b/po/pt.gmo new file mode 100644 index 000000000..e14daa928 Binary files /dev/null and b/po/pt.gmo differ diff --git a/po/pt.po b/po/pt.po new file mode 100644 index 000000000..b20026234 --- /dev/null +++ b/po/pt.po @@ -0,0 +1,5888 @@ +# Bash - Bourne Again Shell. +# Copyright (C) 2018 Free Software Foundation, Inc. +# This file is distributed under the same license as the Bash package. +# Pedro Albuquerque , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: bash-5.0-beta2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2018-11-29 07:29+0000\n" +"Last-Translator: Pedro Albuquerque \n" +"Language-Team: Portuguese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=n !=1;\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: arrayfunc.c:58 +msgid "bad array subscript" +msgstr "subscrito de matriz inválido" + +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: a remover atributo nameref" + +#: arrayfunc.c:402 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: impossível converter matriz indexada para associativa" + +#: arrayfunc.c:586 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: chave de matriz associativa inválida" + +#: arrayfunc.c:588 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: impossível atribuir a índice não numérico" + +#: arrayfunc.c:633 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: tem de usar subscrito ao atribuir a matriz associativa" + +#: bashhist.c:451 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: impossível criar: %s" + +#: bashline.c:4144 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: impossível encontrar mapa de teclado para o " +"comando" + +#: bashline.c:4254 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: o 1º carácter não-espaço não é \"\"\"" + +#: bashline.c:4283 +#, c-format +msgid "no closing `%c' in %s" +msgstr "sem \"%c\" de fecho em %s" + +#: bashline.c:4317 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: separador dois pontos em falta" + +#: braces.c:331 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "expansão: impossível alocar memória para %s" + +#: braces.c:429 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "expansão: falha ao alocar memória para %u elementos" + +#: braces.c:474 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "expansão: falha ao alocar memória para \"%s\"" + +#: builtins/alias.def:131 variables.c:1842 +#, c-format +msgid "`%s': invalid alias name" +msgstr "\"%s\": aliás inválido" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "Edição de linha não activada" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "\"%s\": mapa de teclado inválido" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: impossível ler: %s" + +#: builtins/bind.def:304 builtins/bind.def:334 +#, c-format +msgid "`%s': unknown function name" +msgstr "\"%s\": nome de função desconhecido" + +#: builtins/bind.def:312 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s: não tem associação a qualquer tecla.\n" + +#: builtins/bind.def:316 +#, c-format +msgid "%s can be invoked via " +msgstr "%s pode ser chamado via " + +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "\"%s\": impossível desassociar" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "total de ciclos" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "só tem significado num ciclo \"for\", \"while\" ou \"until\"" + +#: builtins/caller.def:136 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "" +"Devolve o contexto da presente chamada a sub-rotina.\n" +" \n" +" Sem EXPR, devolve " + +#: builtins/cd.def:326 +msgid "HOME not set" +msgstr "HOME não definida" + +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 +msgid "too many arguments" +msgstr "demasiados argumentos" + +#: builtins/cd.def:341 +msgid "null directory" +msgstr "pasta nula" + +#: builtins/cd.def:352 +msgid "OLDPWD not set" +msgstr "OLDPWD não definida" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "linha %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "aviso: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: uso: " + +#: builtins/common.c:193 shell.c:510 shell.c:838 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: a opção requer um argumento" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: requer um argumento numérico" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: não encontrado" + +#: builtins/common.c:216 shell.c:851 +#, c-format +msgid "%s: invalid option" +msgstr "%s: opção inválida" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: nome de opção inválido" + +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "\"%s\": identificador inválido" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "número octal inválido" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "número hexadecimal inválido" + +#: builtins/common.c:244 expr.c:1564 +msgid "invalid number" +msgstr "número inválido" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: especificação de sinal inválida" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "\"%s\": especificação de pid ou tarefa inválida" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: variável só de leitura" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s fora do intervalo" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argumento" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s fora do intervalo" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: tarefa inexistente" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: sem controlo da tarefa" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "sem controlo da tarefa" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: restrita" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "restrita" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: não é interno da consola" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "erro de escrita: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "erro ao definir atributos do terminal: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "erro ao obter atributos do terminal: %s" + +#: builtins/common.c:579 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: erro ao obter a pasta actual: %s: %s\n" + +#: builtins/common.c:645 builtins/common.c:647 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: especificação de tarefa ambígua" + +#: builtins/common.c:908 +msgid "help not available in this version" +msgstr "ajuda indisponível nesta versão" + +#: builtins/complete.def:281 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: nome de acção inválido" + +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: sem especificação de conclusão" + +#: builtins/complete.def:733 +msgid "warning: -F option may not work as you expect" +msgstr "aviso: a opção -F pode não resultar como esperado" + +#: builtins/complete.def:735 +msgid "warning: -C option may not work as you expect" +msgstr "aviso: a opção -C pode não resultar como esperado" + +#: builtins/complete.def:883 +msgid "not currently executing completion function" +msgstr "a função de conclusão não está em execução" + +#: builtins/declare.def:132 +msgid "can only be used in a function" +msgstr "só pode ser usado numa função" + +#: builtins/declare.def:369 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: variável de referência não pode ser uma matriz" + +#: builtins/declare.def:380 variables.c:3363 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: não são permitidas auto-referências de nameref" + +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: referência circular de nome" + +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "\"%s\": nome de variável inválido para referência de nome" + +#: builtins/declare.def:520 +msgid "cannot use `-f' to make functions" +msgstr "impossível usar \"-f\" para fazer funções" + +#: builtins/declare.def:532 execute_cmd.c:5852 +#, c-format +msgid "%s: readonly function" +msgstr "%s: função só de leitura" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: atribuição de matriz composta citada obsoleta" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: impossível destruir variáveis de matriz assim" + +#: builtins/declare.def:845 builtins/read.def:788 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: impossível converter matriz associativa em indexada" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "carregamento dinâmico indisponível" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "impossível abrir objecto partilhado %s: %s" + +#: builtins/enable.def:369 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "impossível encontrar %s no objecto partilhado %s: %s" + +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "carregamento da função %s devolve falha (%d): não carregada" + +#: builtins/enable.def:512 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: não carregada dinamicamente" + +#: builtins/enable.def:538 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: impossível eliminar: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 +#, c-format +msgid "%s: is a directory" +msgstr "%s: é uma pasta" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: não é um ficheiro normal" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: ficheiro muito grande" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: impossível executar o binário" + +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: impossível executar: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "logout\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "não é consola de sessão: use \"exit\"" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Há tarefas interrompidas.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Há tarefas em curso.\n" + +#: builtins/fc.def:265 +msgid "no command found" +msgstr "sem comando encontrado" + +#: builtins/fc.def:323 builtins/fc.def:372 +msgid "history specification" +msgstr "especificação de histórico" + +#: builtins/fc.def:393 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: impossível abrir ficheiro temporário: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "actual" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "tarefa %d começou sem controlo de tarefa" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opção ilegal -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: a opção requer um argumento -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "hashing desactivado" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: tabela de hash vazia\n" + +#: builtins/hash.def:266 +#, c-format +msgid "hits\tcommand\n" +msgstr "sucessos\tcomando\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Comandos de consola correspondentes à palavra-chave \"" +msgstr[1] "Comandos de consola correspondentes a palavras-chave \"" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"nenhum tópico de ajuda para \"%s\". Tente \"help help\", \"man -k %s\" ou " +"\"info %s\"." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: impossível abrir: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"These shell commands are defined internally. Type `help' to see this list.\n" +"Type `help name' to find out more about the function `name'.\n" +"Use `info bash' to find out more about the shell in general.\n" +"Use `man -k' or `info' to find out more about commands not in this list.\n" +"\n" +"A star (*) next to a name means that the command is disabled.\n" +"\n" +msgstr "" +"Estes comandos de consola são definidos internamente. Insira \"help\" para " +"ver a lista.\n" +"Insira \"help nome\" para saber mais sobre a função \"nome\".\n" +"Use \"info bash\" para saber mais sobre a consola em geral.\n" +"Use \"man -k ou \"info\" para saber mais sobre comandos não listados.\n" +"\n" +"Um asterisco (*) junto a um nome significa que o comando está inactivo.\n" +"\n" + +#: builtins/history.def:154 +msgid "cannot use more than one of -anrw" +msgstr "impossível usar mais de um -anrw" + +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 +msgid "history position" +msgstr "posição do histórico" + +#: builtins/history.def:331 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: datação inválida" + +#: builtins/history.def:442 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: falha na expansão do histórico" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: falha inlib" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "não são permitidas mais opções com \"-x\"" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: os argumentos têm de ser IDs de processos ou tarefas" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Erro desconhecido" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 +msgid "expression expected" +msgstr "esperada expressão" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: não é uma matriz indexada" + +#: builtins/mapfile.def:271 builtins/read.def:307 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: especificação de descritor de ficheiro inválida" + +#: builtins/mapfile.def:279 builtins/read.def:314 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: descritor de ficheiro inválido: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: total de linhas inválido" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: origem de matriz inválida" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: callback inválida" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "nome de variável de matriz vazio" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "requerido suporte a variáveis de matriz" + +#: builtins/printf.def:420 +#, c-format +msgid "`%s': missing format character" +msgstr "%s: carácter de formato em falta" + +#: builtins/printf.def:475 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "\"%c\": especificação de formato de hora inválida" + +#: builtins/printf.def:677 +#, c-format +msgid "`%c': invalid format character" +msgstr "\"%c\": carácter de formato inválido" + +#: builtins/printf.def:703 +#, c-format +msgid "warning: %s: %s" +msgstr "aviso: %s: %s" + +#: builtins/printf.def:789 +#, c-format +msgid "format parsing problem: %s" +msgstr "problema de análise de formato: %s" + +#: builtins/printf.def:886 +msgid "missing hex digit for \\x" +msgstr "dígito hex em falta para \\x" + +#: builtins/printf.def:901 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "dígito unicode em falta para \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "nenhuma outra pasta" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: argumento inválido" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "pilha de pastas vazia" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "índice da pilha de pastas" + +#: builtins/pushd.def:701 +msgid "" +"Display the list of currently remembered directories. Directories\n" +" find their way onto the list with the `pushd' command; you can get\n" +" back up through the list with the `popd' command.\n" +" \n" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Mostrar a lista de pastas actualmente lembradas. As pastas\n" +" entram na lista com o comando \"pushd\"; pode recuar\n" +" na lista com o comando \"popd\".\n" +" \n" +" Opções:\n" +" -c\tlimpar a pilha de pastas eliminando todos os elementos\n" +" -l\tnão imprimir versões com prefixo til de pastas relativas\n" +" \tà sua pasta home\n" +" -p\timprimir a pilha de pastas com uma entrada por linha\n" +" -v\timprimir a pilha de pastas com uma entrada por linha com a sua\n" +" \tposição na pilha como prefixo\n" +" \n" +" Argumentos:\n" +" +N\tmostra a N entrada a contar da esquerda da lista mostrada por\n" +" \tpastas quando chamada sem opções, começando com zero.\n" +" \n" +" -N\tmostra a N entrada a contar da direita da lista mostrada por\n" +" \tpastas quando chamada sem opções, começando com zero." + +#: builtins/pushd.def:723 +msgid "" +"Adds a directory to the top of the directory stack, or rotates\n" +" the stack, making the new top of the stack the current working\n" +" directory. With no arguments, exchanges the top two directories.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Adiciona uma pasta ao cimo da pilha de pastas ou roda a pilha\n" +" tornando a pasta actual o novo cimo da pilha.\n" +" Sem argumentos, troca as duas pastas superiores.\n" +" \n" +" Opções:\n" +" -n\tSuprime a troca normal de pastas ao adicionar\n" +" \tpastas à pilha, só a pilha é manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tRoda a pilha de forma a que a N pasta (contando\n" +" \tda esquerda da lista mostrada por pastas, começando com\n" +" \tzero) fique no topo.\n" +" \n" +" -N\tRoda a pilha de forma a que a N pasta (contando\n" +" \tda direita da lista mostrada por pastas, começando com\n" +" \tzero) fique no topo.\n" +" \n" +" PST\tAdiciona PST ao cimo da pilha de pastas, tornando-a a\n" +" \tnova pasta de trabalho actual.\n" +" \n" +" O \"dirs\" interno mostra a pilha de pastas." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Remove entradas da pilha de pastas. Sem argumentos, remove\n" +" a pasta superior da pilha e muda para a nova pasta de topo.\n" +" \n" +" Opções:\n" +" -n\tSuprime a troca normal de pastas ao remover\n" +" \tpastas da pilha, só a pilha é manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tRemove a N pasta contando da esquerda da lista\n" +" \tmostrada por pastas, começando com zero Por exemplo: \"popd +0\"\n" +" \tremove a primeira pasta, \"popd +1\" a segunda.\n" +" \n" +" -N\tRemove a N pasta contando da direita da lista\n" +" \tmostrada por pastas, começando com zero Por exemplo: \"popd +0\"\n" +" \tremove a última pasta, \"popd +1\" a penúltima.\n" +" \n" +" O \"dirs\" interno mostra a pilha de pastas." + +#: builtins/read.def:279 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: especificação de inacção inválida" + +#: builtins/read.def:733 +#, c-format +msgid "read error: %d: %s" +msgstr "erro de leitura: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "só pode usar \"return\" a partir de uma função ou script baseado" + +#: builtins/set.def:852 +msgid "cannot simultaneously unset a function and a variable" +msgstr "impossível desactivar simultaneamente uma função e uma variável" + +#: builtins/set.def:904 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: impossível desactivar" + +#: builtins/set.def:925 variables.c:3813 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: impossível desactivar: %s só de leitura" + +#: builtins/set.def:938 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: não é variável de matriz" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: não é função" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: impossível exportar" + +#: builtins/shift.def:73 builtins/shift.def:79 +msgid "shift count" +msgstr "total de trocas" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "impossível definir e desactivar opções da consola em simultâneo" + +#: builtins/shopt.def:420 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: nome de opção da consola inválido" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "requerido argumento de nome de ficheiro" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: ficheiro não encontrado" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "impossível suspender" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "impossível suspender uma consola de sessão" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s usa o aliás \"%s\"\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s é palavra-chave da consola\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s é uma função\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s é opção interna especial da consola\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s é opção interna da consola\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s é %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s tem hash (%s)\n" + +#: builtins/ulimit.def:396 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: argumento de limite inválido" + +#: builtins/ulimit.def:422 +#, c-format +msgid "`%c': bad command" +msgstr "\"%c\": comando errado" + +#: builtins/ulimit.def:451 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: impossível obter limite: %s" + +#: builtins/ulimit.def:477 +msgid "limit" +msgstr "limite" + +#: builtins/ulimit.def:489 builtins/ulimit.def:789 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: impossível modificar limite: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "número octal" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "\"%c\": operador de modo simbólico inválido" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "\"%c\": carácter de modo simbólico inválido" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " linha " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "último comando: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "A abortar..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFORM.: " + +#: error.c:462 +msgid "unknown command error" +msgstr "erro de comando desconhecido" + +#: error.c:463 +msgid "bad command type" +msgstr "tipo de comando errado" + +#: error.c:464 +msgid "bad connector" +msgstr "conector errado" + +#: error.c:465 +msgid "bad jump" +msgstr "salto errado" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: variável desassociada" + +#: eval.c:245 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aDemasiada inacção à espera de entrada: sessão terminada\n" + +#: execute_cmd.c:536 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "impossível redireccionar entrada padrão de /dev/null: %s" + +#: execute_cmd.c:1306 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "FORMATOHORA: \"%c\": carácter de formato inválido" + +#: execute_cmd.c:2361 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] ainda existe" + +#: execute_cmd.c:2485 +msgid "pipe error" +msgstr "erro de pipe" + +#: execute_cmd.c:4671 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: nível máximo de aninhamento de eval excedido (%d)" + +#: execute_cmd.c:4683 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: nível máximo de aninhamento de fonte excedido (%d)" + +#: execute_cmd.c:4791 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: nível máximo de aninhamento de função excedido (%d)" + +#: execute_cmd.c:5340 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: restrito: impossível especificar \"/\" em nomes de comando" + +#: execute_cmd.c:5438 +#, c-format +msgid "%s: command not found" +msgstr "%s: comando não encontrado" + +#: execute_cmd.c:5682 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5720 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: interpretador errado" + +#: execute_cmd.c:5757 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: impossível executar binário: %s" + +#: execute_cmd.c:5843 +#, c-format +msgid "`%s': is a special builtin" +msgstr "%s: é uma opção interna especial" + +#: execute_cmd.c:5895 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "impossível duplicar fd %d para fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "nível de recursão da expressão excedido" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "sub-fluxo da pilha de recursividade" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "erro de sintaxe na expressão" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "tentativa de atribuição a não-variável" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "erro de sintaxe na atribuição de variável" + +#: expr.c:544 expr.c:910 +msgid "division by 0" +msgstr "divisão por 0" + +#: expr.c:591 +msgid "bug: bad expassign token" +msgstr "problema: símbolo expassign errado" + +#: expr.c:645 +msgid "`:' expected for conditional expression" +msgstr "\":\" esperados para expressão condicional" + +#: expr.c:971 +msgid "exponent less than 0" +msgstr "expoente menor que 0" + +#: expr.c:1028 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "identificador esperado após pré-incremento ou pré-decremento" + +#: expr.c:1055 +msgid "missing `)'" +msgstr "\")\" em falta" + +#: expr.c:1106 expr.c:1484 +msgid "syntax error: operand expected" +msgstr "erro de sintaxe: operando esperado" + +#: expr.c:1486 +msgid "syntax error: invalid arithmetic operator" +msgstr "erro de sintaxe: operador aritmético inválido" + +#: expr.c:1510 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (símbolo de erro é \"%s\")" + +#: expr.c:1568 +msgid "invalid arithmetic base" +msgstr "base aritmética inválida" + +#: expr.c:1588 +msgid "value too great for base" +msgstr "valor muito grande para a base" + +#: expr.c:1637 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: erro de expressão\n" + +#: general.c:69 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: impossível aceder a pastas-mãe" + +#: input.c:99 subst.c:5930 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "impossível repor modo nodelay para fd %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"impossível alocar novo descritor de ficheiro para entrada bash de fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: buffer já existe para o novo fd %d" + +#: jobs.c:529 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pipe pgrp" + +#: jobs.c:1084 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "pid %d aparece em tarefa em execução %d" + +#: jobs.c:1203 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "a eliminar tarefa interrompida %d com grupo de processo %ld" + +#: jobs.c:1307 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "add_process: processo %5ld (%s) na _pipeline" + +#: jobs.c:1310 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) marcado como ainda activo" + +#: jobs.c:1639 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: pid não existente" + +#: jobs.c:1654 +#, c-format +msgid "Signal %d" +msgstr "Sinal %d" + +#: jobs.c:1668 jobs.c:1694 +msgid "Done" +msgstr "Feito" + +#: jobs.c:1673 siglist.c:123 +msgid "Stopped" +msgstr "Interrompido" + +#: jobs.c:1677 +#, c-format +msgid "Stopped(%s)" +msgstr "Interrompido(%s)" + +#: jobs.c:1681 +msgid "Running" +msgstr "Em execução" + +#: jobs.c:1698 +#, c-format +msgid "Done(%d)" +msgstr "Feito(%d)" + +#: jobs.c:1700 +#, c-format +msgid "Exit %d" +msgstr "Sair de %d" + +#: jobs.c:1703 +msgid "Unknown status" +msgstr "Estado desconhecido" + +#: jobs.c:1790 +#, c-format +msgid "(core dumped) " +msgstr "(núcleo despejado) " + +#: jobs.c:1809 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2037 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid filho (%ld para %ld)" + +#: jobs.c:2399 nojobs.c:657 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld não é um filho desta consola" + +#: jobs.c:2695 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: sem registo do processo %ld" + +#: jobs.c:3055 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_tarefa: tarefa %d está interrompida" + +#: jobs.c:3362 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: tarefa terminada" + +#: jobs.c:3371 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: tarefa %d já em 2º plano" + +#: jobs.c:3597 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: a ligar WNOHANG para evitar bloquieo indefinido" + +#: jobs.c:4120 +#, c-format +msgid "%s: line %d: " +msgstr "%s: linha %d: " + +#: jobs.c:4134 nojobs.c:900 +#, c-format +msgid " (core dumped)" +msgstr " (núcleo despejado)" + +#: jobs.c:4146 jobs.c:4159 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd agora: %s)\n" + +#: jobs.c:4191 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp falhou" + +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: sem controlo de tarefa em 2º plano" + +#: jobs.c:4263 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: disciplina de linha" + +#: jobs.c:4273 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4294 jobs.c:4303 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "impossível definir grupo de processo do terminal (%d)" + +#: jobs.c:4308 +msgid "no job control in this shell" +msgstr "não há controlo de tarefa nesta consola" + +#: lib/malloc/malloc.c:331 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: asserção falhada: %s\n" + +#: lib/malloc/malloc.c:347 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: asserção frustrada\r\n" + +#: lib/malloc/malloc.c:348 +msgid "unknown" +msgstr "desconhecido" + +#: lib/malloc/malloc.c:855 +msgid "malloc: block on free list clobbered" +msgstr "malloc: bloqueio na lista livre clobbered" + +#: lib/malloc/malloc.c:932 +msgid "free: called with already freed block argument" +msgstr "free: chamado com argumento de bloco já liberto" + +#: lib/malloc/malloc.c:935 +msgid "free: called with unallocated block argument" +msgstr "free: chamado com argumento de bloco não alocado" + +#: lib/malloc/malloc.c:954 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: sub-fluxo detectado; mh_nbytes fora do intervalo" + +#: lib/malloc/malloc.c:960 +msgid "free: start and end chunk sizes differ" +msgstr "free: tamanho dos pontos inicial e final difere" + +#: lib/malloc/malloc.c:1070 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: chamado com argumento de bloco não alocado" + +#: lib/malloc/malloc.c:1085 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: sub-fluxo detectado; mh_nbytes fora do intervalo" + +#: lib/malloc/malloc.c:1091 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: tamanho dos pontos inicial e final difere" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: tabela de alocação cheia com FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p já na tabela como alocado?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p já na tabela como livre?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "base inválida" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: anfitrião desconhecido" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: serviço inválido" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: especificação de caminho de rede errada" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "operações de rede não suportadas" + +#: locale.c:205 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s)" + +#: locale.c:207 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s): %s" + +#: locale.c:272 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: não pode alterar o idioma (%s)" + +#: locale.c:274 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: não pode alterar o idioma (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Tem correio em $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Tem novo correio em $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "O correio em %s já foi lido\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "erro de sintaxe: requerida expressão aritmética" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "erro de sintaxe: \";\" inesperado" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "erro de sintaxe: \"((%s))\"" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: tipo de instrução %d errado" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"here-document na linha %d delimitado por fim-de-ficheiro (desejado \"%s\")" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" +"make_redirection: instrução de redireccionamento \"%d\" fora do intervalo" + +#: parse.y:2380 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"consola_getc: consola_input_line_size (%zu) excede SIZE_MAX (%lu): linha " +"truncada" + +#: parse.y:2786 +msgid "maximum here-document count exceeded" +msgstr "total here-document máximo excedido" + +#: parse.y:3536 parse.y:3906 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "EOF inesperado ao procurar \"%c\" correspondentes" + +#: parse.y:4606 +msgid "unexpected EOF while looking for `]]'" +msgstr "EOF inesperado ao procurar \"]]\"" + +#: parse.y:4611 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "erro de sintaxe em expressão condicional: símbolo inesperado \"%s\"" + +#: parse.y:4615 +msgid "syntax error in conditional expression" +msgstr "erro de sintaxe em expressão condicional" + +#: parse.y:4693 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "símbolo inesperado \"%s\", esperado \")\"" + +#: parse.y:4697 +msgid "expected `)'" +msgstr "esperado \")\"" + +#: parse.y:4725 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "argumento \"%s\" inesperado para operador unário condicional" + +#: parse.y:4729 +msgid "unexpected argument to conditional unary operator" +msgstr "argumento inesperado para operador unário condicional" + +#: parse.y:4775 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "símbolo \"%s\" inesperado, esperado operador binário condicional" + +#: parse.y:4779 +msgid "conditional binary operator expected" +msgstr "esperado operador binário condicional" + +#: parse.y:4801 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "argumento \"%s\" inesperado para operador binário condicional" + +#: parse.y:4805 +msgid "unexpected argument to conditional binary operator" +msgstr "argumento inesperado para operador binário condicional" + +#: parse.y:4816 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "símbolo \"%c\" inesperado em comando condicional" + +#: parse.y:4819 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "símbolo \"%s\" inesperado em comando condicional" + +#: parse.y:4823 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "símbolo %d inesperado em comando condicional" + +#: parse.y:6245 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "erro de sintaxe junto a símbolo \"%s\" inesperado" + +#: parse.y:6263 +#, c-format +msgid "syntax error near `%s'" +msgstr "erro de sintaxe junto a \"%s\"" + +#: parse.y:6273 +msgid "syntax error: unexpected end of file" +msgstr "erro de sintaxe: fim de ficheiro inesperado" + +#: parse.y:6273 +msgid "syntax error" +msgstr "erro de sintaxe" + +#: parse.y:6335 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Use \"%s\" para sair da consola.\n" + +#: parse.y:6497 +msgid "unexpected EOF while looking for matching `)'" +msgstr "EOF inesperado ao procurar o \")\" correspondente" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: função \"%s\" não encontrada" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: possível ciclo de repetição" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: conector \"%d\" errado" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: descritor de ficheiro inválido" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: ponteiro de ficheiro NULL" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: \"%c\": carácter de formato inválido" + +#: redir.c:121 redir.c:167 +msgid "file descriptor out of range" +msgstr "descritor de ficheiro fora de alcance" + +#: redir.c:174 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: redireccionamento ambíguo" + +#: redir.c:178 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: impossível sobrescrever ficheiro existente" + +#: redir.c:183 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restricto: impossível redireccionar saída" + +#: redir.c:188 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "impossível criar ficheiro temporário para here-document: %s" + +#: redir.c:192 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: impossível atribuir fd a variável" + +#: redir.c:591 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port não suportado em trabalho de rede" + +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 +msgid "redirection error: cannot duplicate fd" +msgstr "erro de redireccionamento: impossível duplicar fd" + +#: shell.c:343 +msgid "could not find /tmp, please create!" +msgstr "impossível encontrar /tmp, por favor crie-a!" + +#: shell.c:347 +msgid "/tmp must be a valid directory name" +msgstr "/tmp tem de ser um nome de pasta válido" + +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "modo pretty-printing ignorado em consolas interactivas" + +#: shell.c:940 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: opção inválida" + +#: shell.c:1299 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "impossível definir uid como %d: uid efectiva %d" + +#: shell.c:1306 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "impossível definir gid como %d: gid efectiva %d" + +#: shell.c:1494 +msgid "cannot start debugger; debugging mode disabled" +msgstr "impossível iniciar o depurador; modo de depuração desactivado" + +#: shell.c:1608 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: é uma pasta" + +#: shell.c:1826 +msgid "I have no name!" +msgstr "Não tenho nome!" + +#: shell.c:1980 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, versão %s-(%s)\n" + +#: shell.c:1981 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Uso:\t%s [opção longa GNU] [opção] ...\n" +"\t%s [opção longa GNU] [opção] script-file ...\n" + +#: shell.c:1983 +msgid "GNU long options:\n" +msgstr "Opções longas GNU:\n" + +#: shell.c:1987 +msgid "Shell options:\n" +msgstr "Opções da consola:\n" + +#: shell.c:1988 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\tcomando -ilrsD ou -c ou -O shopt_option\t\t(só chamada)\n" + +#: shell.c:2007 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\topção -%s ou -o\n" + +#: shell.c:2013 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Insira \"%s -c \"help set\"\" para mais informação sobre opções da consola.\n" + +#: shell.c:2014 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Insira \"%s -c help\" para mais informação sobre comandos internos da " +"consola.\n" + +#: shell.c:2015 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Use o comando \"bashbug\" para reportar erros.\n" + +#: shell.c:2017 +#, c-format +msgid "bash home page: \n" +msgstr "Página inicial do bash: \n" + +#: shell.c:2018 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Ajuda geral para usar programas GNU: \n" + +#: sig.c:730 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: operação inválida" + +#: siglist.c:48 +msgid "Bogus signal" +msgstr "Sinal falso" + +#: siglist.c:51 +msgid "Hangup" +msgstr "Desligar" + +#: siglist.c:55 +msgid "Interrupt" +msgstr "Interromper" + +#: siglist.c:59 +msgid "Quit" +msgstr "Sair" + +#: siglist.c:63 +msgid "Illegal instruction" +msgstr "Instrução ilegal" + +#: siglist.c:67 +msgid "BPT trace/trap" +msgstr "BPT trace/trap" + +#: siglist.c:75 +msgid "ABORT instruction" +msgstr "Instrução ABORT" + +#: siglist.c:79 +msgid "EMT instruction" +msgstr "Instrução EMT" + +#: siglist.c:83 +msgid "Floating point exception" +msgstr "Excepção de vírgula flutuante" + +#: siglist.c:87 +msgid "Killed" +msgstr "Morto" + +#: siglist.c:91 +msgid "Bus error" +msgstr "Erro de bus" + +#: siglist.c:95 +msgid "Segmentation fault" +msgstr "Falha de segmentação" + +#: siglist.c:99 +msgid "Bad system call" +msgstr "Chamada de sistema errada" + +#: siglist.c:103 +msgid "Broken pipe" +msgstr "Pipe quebrado" + +#: siglist.c:107 +msgid "Alarm clock" +msgstr "Alarme" + +#: siglist.c:111 +msgid "Terminated" +msgstr "Terminado" + +#: siglist.c:115 +msgid "Urgent IO condition" +msgstr "Condição IO urgente" + +#: siglist.c:119 +msgid "Stopped (signal)" +msgstr "Parado (sinal)" + +#: siglist.c:127 +msgid "Continue" +msgstr "Continuar" + +#: siglist.c:135 +msgid "Child death or stop" +msgstr "Morte ou paragem do filho" + +#: siglist.c:139 +msgid "Stopped (tty input)" +msgstr "Parado (entrada tty)" + +#: siglist.c:143 +msgid "Stopped (tty output)" +msgstr "Parado (saída tty)" + +#: siglist.c:147 +msgid "I/O ready" +msgstr "I/O pronto" + +#: siglist.c:151 +msgid "CPU limit" +msgstr "Limite do CPU" + +#: siglist.c:155 +msgid "File limit" +msgstr "Limite do ficheiro" + +#: siglist.c:159 +msgid "Alarm (virtual)" +msgstr "Alarme (virtual)" + +#: siglist.c:163 +msgid "Alarm (profile)" +msgstr "Alarme (perfil)" + +#: siglist.c:167 +msgid "Window changed" +msgstr "Janela alterada" + +#: siglist.c:171 +msgid "Record lock" +msgstr "Bloqueio de registo" + +#: siglist.c:175 +msgid "User signal 1" +msgstr "Sinal de utilizador 1" + +#: siglist.c:179 +msgid "User signal 2" +msgstr "Sinal de utilizador 2" + +#: siglist.c:183 +msgid "HFT input data pending" +msgstr "entrada de dados HTF pendente" + +#: siglist.c:187 +msgid "power failure imminent" +msgstr "falha de energia iminente" + +#: siglist.c:191 +msgid "system crash imminent" +msgstr "acidente do sistema iminente" + +#: siglist.c:195 +msgid "migrate process to another CPU" +msgstr "migrar processo para outro CPU" + +#: siglist.c:199 +msgid "programming error" +msgstr "erro de programação" + +#: siglist.c:203 +msgid "HFT monitor mode granted" +msgstr "concedido modo de monitor HTF" + +#: siglist.c:207 +msgid "HFT monitor mode retracted" +msgstr "retirado modo de monitor HTF" + +#: siglist.c:211 +msgid "HFT sound sequence has completed" +msgstr "sequência de som HTF terminou" + +#: siglist.c:215 +msgid "Information request" +msgstr "Pedido de informação" + +#: siglist.c:223 +msgid "Unknown Signal #" +msgstr "Sinal desconhecido #" + +#: siglist.c:225 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Sinal desconhecido #%d" + +#: subst.c:1454 subst.c:1644 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "má substituição: sem \"%s\" de fecho em %s" + +#: subst.c:3231 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: impossível atribuir lista a membro de matriz" + +#: subst.c:5789 subst.c:5805 +msgid "cannot make pipe for process substitution" +msgstr "impossível fazer pipe para substituição de processo" + +#: subst.c:5851 +msgid "cannot make child for process substitution" +msgstr "impossível fazer filho para substituição de processo" + +#: subst.c:5920 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "impossível abrir pipe chamado %s para leitura" + +#: subst.c:5922 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "impossível abrir pipe chamado %s para escrita" + +#: subst.c:5945 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "imossível duplicar pipe chamado %s como fd %d" + +#: subst.c:6062 +msgid "command substitution: ignored null byte in input" +msgstr "substituição de comando: byte nulo ignorado na entrada" + +#: subst.c:6190 +msgid "cannot make pipe for command substitution" +msgstr "impossível fazer pipe para substituição de comando" + +#: subst.c:6233 +msgid "cannot make child for command substitution" +msgstr "impossível fazer filho para substituição de comando" + +#: subst.c:6259 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: impossível duplicar pipe como fd 1" + +#: subst.c:6710 subst.c:9623 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: nome de variável inválido para referência de nome" + +#: subst.c:6806 subst.c:6824 subst.c:6979 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: expansão indirecta inválida" + +#: subst.c:6840 subst.c:6987 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: nome de variável inválido" + +#: subst.c:7056 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parâmetro não definido" + +#: subst.c:7058 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parâmetro nulo ou não definido" + +#: subst.c:7295 subst.c:7310 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expressão de sub-cadeia < 0" + +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: má substituição" + +#: subst.c:9082 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: impossível atribuir desta forma" + +#: subst.c:9485 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"futuras versões da consola vão forçar a avaliação como uma substituição " +"aritmética" + +#: subst.c:10043 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "má substituição: sem \"\"\" de fecho em %s" + +#: subst.c:11070 +#, c-format +msgid "no match: %s" +msgstr "sem par:%s" + +#: test.c:147 +msgid "argument expected" +msgstr "argumento esperado" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: expressão inteira esperada" + +#: test.c:265 +msgid "`)' expected" +msgstr "\")\" esperado" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "\")\" esperado, encontrado %s" + +#: test.c:282 test.c:750 test.c:753 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: operador unáro esperado" + +#: test.c:469 test.c:793 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: operador bináro esperado" + +#: test.c:875 +msgid "missing `]'" +msgstr "\"]\" em falta" + +#: trap.c:216 +msgid "invalid signal number" +msgstr "número de sinal inválido" + +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "gestor de trap: nível máximo de gestor de captura excedido (%d)" + +#: trap.c:408 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: valor errado em trap_list[%d]: %p" + +#: trap.c:412 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: gestor de sinal é SIG_DFL, a reenviar %d (%s) para mim " +"próprio" + +#: trap.c:470 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: sinal errado %d" + +#: variables.c:412 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "erro ao importar definição de função para \"%s\"" + +#: variables.c:821 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "nível da consola (%d) muito alto, a repor para 1" + +#: variables.c:2655 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variável: sem contexto de função no âmbito actual" + +#: variables.c:2674 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: não pode atribuir um valor à variável" + +#: variables.c:3453 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: a atribuir inteiro à referência de nome" + +#: variables.c:4365 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: sem contexto de função no âmbito actual" + +#: variables.c:4698 +#, c-format +msgid "%s has null exportstr" +msgstr "%s tem exportstr nulo" + +#: variables.c:4703 variables.c:4712 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "carácter %d inválido em exportstr para %s" + +#: variables.c:4718 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "sem \"=\" em exportstr para %s" + +#: variables.c:5243 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: cabeça de consola_variables não é contexto de função" + +#: variables.c:5256 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: sem contexto de global_variables" + +#: variables.c:5336 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: cabeça de consola_variables não é âmbito de ambiente temporário" + +#: variables.c:6272 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: impossível abrir como FICHEIRO" + +#: variables.c:6277 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: valor inválido para descritor de ficheiro trace" + +#: variables.c:6322 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: valor de compatibilidade fora do intervalo" + +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licença GPLv3+: GNU GPL versão 3 ou posterior \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, versão %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "Este é um programa gratuito; pode alterá-lo e distribuí-lo à vontade." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "Não há QUALQUER GARANTIA, até aos limites previstos pela Lei." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: impossível alocar %lu bytes (%lu bytes alocados)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: impossível alocar %lu bytes" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: impossível alocar %lu bytes (%lu bytes alocados)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: impossível alocar %lu bytes" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [nome[=valor] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] nome [nome ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m mapa de teclado] [-f ficheiro] [-q nome] [-u nome] [-r " +"seqtecl] [-x seqtecl:comando-consola] [seqtecl:função-readline ou comando-" +"readline]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [consola-interno [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [expr]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [pst]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "comando [-pVv] comando [arg ...]" + +#: builtins.c:78 +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [nome[=valor] ...]" + +#: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] nome[=valor] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [opção] nome[=valor] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f ficheiro] [nome ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +msgid "getopts optstring name [arg]" +msgstr "getopts optstring name [arg]" + +#: builtins.c:98 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "" +"exec [-cl] [-a nome] [comando [argumentos ...]] [redireccionamento ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e ename] [-lnr] [primeiro] [último] ou fc -s [pat=rep] [comando]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [job_spec]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [job_spec ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p caminho] [-dt] [nome ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [padrão ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d desvio] [n], history -anrw [ficheiro] ou history -ps arg " +"[arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "tarefas [-lnprs] [tarefaspec ...] ou tarefas -x comando [args]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [tarefaspec ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n signum | -sigspec] pid | tarefaspec ... ou kill -l " +"[sigspec]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a matriz] [-d delim] [-i texto] [-n ncars] [-N ncars] [-p " +"prompt] [-t inacção] [-u fd] [nome ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opção] [--] [arg ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [nome ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [nome[=valor] ...] ou export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [nome[=valor] ...] ou readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source ficheiro [argumentos]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". ficheiro [argumentos]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [expr]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signal_spec ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] nome [nome ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limite]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [modo]" + +#: builtins.c:177 +msgid "wait [-fn] [id ...]" +msgstr "wait [-fn] [id ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NOME [in PALAVRAS ... ] ; do COMANDOS; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do COMANDOS; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NOME [in PALAVRAS ... ;] do COMANDOS; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] pipeline" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case PALAVRA in [PADRÃO [| PADRÃO]...) COMANDOS ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if COMANDOS; then COMANDOS; [ elif COMANDOS; then COMANDOS; ]... [ else " +"COMANDOS; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while COMANDOS; do COMANDOS; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until COMANDOS; do COMANDOS; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NOME] comando [redireccionamentos]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "nome de função { COMANDOS ; } ou nome () { COMANDOS ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ COMANDOS ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( expressão ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ expressão ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variáveis - nomes e significados de algumas variáveis da consola" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | pasta]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [nomeopção ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] formato [argumentos]" + +#: builtins.c:231 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o opção] [-A acção] [-G " +"padrãoglobal] [-W listapalavras] [-F função] [-C comando] [-X filterpat] [-" +"P prefixo] [-S sufixo] [nome ...]" + +#: builtins.c:235 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o opção] [-A acção] [-G padrglob] [-W listpal] [-" +"F função] [-C comando] [-X padrfiltro] [-P prefixo] [-S sufixo] [palavra]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o opção] [-DEI] [nome ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n total] [-O origem] [-s total] [-t] [-u fd] [-C " +"callback] [-c quantia] [matriz]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d delim] [-n total] [-O origem] [-s total] [-t] [-u fd] [-C " +"callback] [-c quantum] [matriz]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Definir ou mostrar aliás.\n" +" \n" +" Sem argumentos, \"alias imprime a lista de aliás na forma\n" +" reutilizável \"alias NOME=VALOR\" na saída padrão.\n" +" \n" +" Com argumetos, é definido um aliás para cada NOME cujo VALOR é dado.\n" +" Um espaço final em VALOR causa uma verificação à palavra seguinte para\n" +" substituição do aliás quando o aliás for expandido.\n" +" \n" +" Opções:\n" +" -p\timprimir todos os aliás definidos em formato reutilizável\n" +" \n" +" Estado de saída:\n" +" alias devolve verdadeiro a não ser que seja fornecido um NOME para o " +"qual\n" +"ainda não haja um aliás." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Remover cada NOME da lista de aliás definidos.\n" +" \n" +" Opções:\n" +" -a\tremove todas as definições de aliás\n" +" \n" +" Devolve sucesso a não ser que NOME seja um aliás inexistente." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Definir associações de teclas e variáveis para Readline.\n" +" \n" +" Associar uma sequência de teclas a uma função ou macro Readline, ou\n" +" defina uma variável Readline. A sintaxe de argumento não-opção é " +"equivalente\n" +" à encontrada em ~/.inputrc, mas tem de ser passada como argumento " +"único:\n" +" e.g., bind \"\"\\C-x\\C-r\": re-read-init-file\".\n" +" \n" +" Opções:\n" +" -m maptecl Use MAPTECL como mapa de teclado para a " +"duração deste\n" +" comando. Nomes de mapas aceitáveis são " +"emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, " +"vi-move,\n" +" vi-command, e vi-insert.\n" +" -l Listar nomes de funções.\n" +" -P Listar nomes de funções e associações.\n" +" -p Listar funções funçãos e associações de " +"forma a que possam\n" +" ser reutilizados como entrada.\n" +" -S Listar sequências de teclas que chamem " +"macros e seus valores\n" +" -s Listar sequências de teclas que chamem " +"macros e seus valores\n" +" de forma a que possam ser reutilizados como " +"entrada.\n" +" -V Listar nomes de variáveis e seus valores\n" +" -v Listar nomes de variáveis e seus valores de " +"forma a que possam\n" +" ser reutilizados como entrada.\n" +" -q nome-função Consultar que teclas chamaram a função em " +"causa.\n" +" -u nome-função Unbind all keys which are bound to the named " +"função.\n" +" -r seqtecl Remover associação de SEQTECL.\n" +" -f nomefich Ler associações de teclas a partir de " +"NOMEFICH.\n" +" -x seqtecl:comando-consola\tCausa a execuçaõ de COMANDO-SHELL " +"quando\n" +" \t\t\t\tSEQTECL for inserido.\n" +" -X Listarsequências de teclas associadas a -x e " +"comandos ligados\n" +" de forma a que possam ser reutilizados como " +"entrada.\n" +" \n" +" Estado de saída:\n" +" bind devolve 0 a não ser que seja dada uma opção desconhecida ou ocorra " +"um erro." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Sair de ciclos for, while, ou until.\n" +" \n" +" Sai de um ciclo FOR, WHILE ou UNTIL. Se N for especificado, quebrar N " +"ciclos\n" +" envolventes.\n" +" \n" +" Estado de saída:\n" +" O estado de saída é 0 a não ser que N não seja maior ou igual que 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Retomar ciclos for, while, ou until.\n" +" \n" +" Retoma a iteração seguinte do ciclo FOR, WHILE ou UNTIL envolvente.\n" +" Se N for especificado, retoma o N-ésimo ciclo envolvente.\n" +" \n" +" Estado de saída:\n" +" O estado de saída é 0 a não ser que N não seja maior ou igual que 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Executa comandos internos da consola.\n" +" \n" +" Executa SHELL-INTERNO com argumentos ARGs sem realizar procura do " +"comando.\n" +" Útil quando deseja re-implementar um comando interno da consola como\n" +" função da consola, mas tem de executar o comando interno dentro da " +"função.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado de saída de SHELL-INTERNO ou falso se SHELL-INTERNO " +"não\n" +" for um comando interno da consola." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Devolver o contexto da actual chamada a sub-rotina.\n" +" \n" +" Sem EXPR, devolve \"$linha $nomefich\". Com EXPR, devolve\n" +" \"$linha $sub-rotina $nomefich\"; esta informação extra pode ser usada\n" +" para obter um rasto da pilha.\n" +" \n" +" O valor de EXPR indica quantas chamadas deve recuar antes da\n" +" actual; a chamada superior é a chamada 0.\n" +" \n" +" Estado de saída:\n" +" Devolve 0 a não ser que a consola não esteja a executar uma função ou " +"EXPR\n" +" seja inválida." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Alterar a pasta de trabalho da consola.\n" +" \n" +" Altera a pasta actual para PASTA. A PASTA predefinida é o valor da " +"variável\n" +" HOME.\n" +" \n" +" A variável CDPATH define o caminho de procura para a pasta que contém\n" +" PASTA. Nomes de pasta alternativos em CDPATH são separados por \":" +"\" (:).\n" +" Um nome de pasta nulo é equivalente à pasta actual. Se PASTA começar " +"com\n" +" uma barra (/), CDPATH não é usada.\n" +" \n" +" Se a pasta não for encontrada e a opção de consola \"cdable_vars\" " +"estiver definida,\n" +" a palavra é assumida como nome de variável. Se essa variável tiver um " +"valor,\n" +" será usado como PASTA.\n" +" \n" +" Opções:\n" +" -L\tforçar seguimento de ligações simbólicas: resolve ligações\n" +" \t\tsimbólicas em PASTA após processar instâncias de \"..\"\n" +" -P\tusa a estrutura física de pastas sem seguir ligações\n" +" \t\tsimbólicas: resolve ligações simbólicas em PASTA antes de\n" +" \t\tprocessar instâncias de \"..\"\n" +" -e\tse a opção -P for usada e a pasta de trabalho actual não puder\n" +" \t\tser determinada com sucesso, sair com\n" +" \t\testado não-zero\n" +" -@\tem sistemas que o suportam, apresentar um ficheiro com " +"atributos\n" +" \t\testendidos como uma pasta contendo os atributos do ficheiro.\n" +" \n" +" A predefinição é seguir ligações simbólicas, como se \"-L\" fosse " +"especificada.\n" +" \"..\" é processado colocando o componente de caminho imediatamente " +"anterior\n" +" como barra ou o começo de PASTA.\n" +" \n" +" Estado de saída:\n" +" Devolve 0 se a pasta for alterada e se $PWD for definida com sucesso " +"quando\n" +" -P é usada; caso contrário, não-zero." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Imprimir o nome da actual pasta de trabalho.\n" +" \n" +" Opções:\n" +" -L\tImprimir o valor de $PWD se nomear a actual pasta de\n" +" \t\ttrabalho\n" +" -P\timprimir a pasta física, sem quaisquer ligações simbólicas\n" +" \n" +" Por predefinição, \"pwd\" comporta-se como se \"-L\" fosse " +"especificada.\n" +" \n" +" Estado de saída:\n" +" Devolve 0 a não ser que seja indicada uma opçãoinválida ou a pasta " +"actual\n" +" não possa ser lida." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Comando nulo.\n" +" \n" +" Sem efeito; o comando não faz nada.\n" +" \n" +" Estado de saída:\n" +" Sempre com sucesso." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Devolve um resultado com sucesso.\n" +" \n" +" Estado de saída:\n" +" Sempre com sucesso." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Devolve um resultado sem sucesso.\n" +" \n" +" Estado de saída:\n" +" Falha sempre." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Executar um comando simples ou mostrar informação sobre comandos.\n" +" \n" +" Executa COMANDO com ARGS suprimindo procura de funções da consola ou " +"mostra\n" +" informação acerca dos COMANDOs especificados. Pode ser usado para " +"chamar comandos\n" +" em disco quando existe uma função com o mesmo nome.\n" +" \n" +" Opções:\n" +" -p usar valor predefinido para CAMINHO que garanta que se " +"encontram\n" +" todos os utilitários padrão\n" +" -v imprimir uma descrição de COMANDO similar ao interno \"type" +"\"\n" +" -V imprimir uma descrição mais detalhada de COMANDO\n" +" \n" +" Estado de saída:\n" +" Devolve o estado de saída de COMANDO ou falha se COMANDO não for " +"encontrado." + +#: builtins.c:490 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Define valores e atributos de variáveis.\n" +" \n" +" Declara variáveis e dá-lhes atributos. Se não indicar NOMEs,\n" +" mostrar os atributos e valores de todas as variáveis.\n" +" \n" +" Opções:\n" +" -f\trestringe acção ou exibição a nomes e definições de função\n" +" -F\trestringe exibição só a nomes de função (mais nº de linha e\n" +" \t\tficheiro fonte ao depurar)\n" +" -g\tcria variáveis globais quando usadas numa função da consola; " +"senão\n" +" \t\té ignorada\n" +" -p\tmostra atributos e valores de cada NOME\n" +" \n" +" Opções que definem atributos:\n" +" -a\tpara tornar NOMEs matrizes indexadas (se suportado)\n" +" -A\tpara tornar NOMEs matrizes associativas (se suportado)\n" +" -i\tpara dar a NOMEs o atributo \"integer\"\n" +" -l\tpara converter NOMEs em minúsculas ao atribuir\n" +" -n\ttornar NOME uma referência à variável chamada pelo seu valor\n" +" -r\tpara tornar NOMEs só de leitura\n" +" -t\tpara dar a NOMEs o atributo \"trace\"\n" +" -u\tpara converter NOMEs em maiúsculas ao atribuir\n" +" -x\tpara tornar NOMEs exportáveis\n" +" \n" +" Usar \"+\" em vez de \"-\" desliga o atributo indicado.\n" +" \n" +" Variáveis com o atributo integer têm avaliação aritmética (veja o\n" +" comando \"let\") realizada quando lhe é atribuído um valor.\n" +" \n" +" Quando usado numa função, \"declare\" torna NOMEs locais, como o " +"comando\n" +" \"local\". A opção \"-g\" suprime este comportamento.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que seja indicada uma opção inválida ou " +"ocorra um\n" +" erro de atribuição da variável." + +#: builtins.c:530 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Define variáveis e atributos.\n" +" \n" +" Um sinónimo para \"declare\". Veja \"help declare\"." + +#: builtins.c:538 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Define variáveis locais.\n" +" \n" +" Cria uma variável local chamada NOME e dá-lhe VALOR. OPÇÃO pode\n" +" ser qualquer opção aceite por \"declare\".\n" +" \n" +" Variáveis locais só podem ser usadas dentro de uma função; só são " +"visíveis\n" +" para a função onde foram definidas e para os seus filhos.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que uma opção inválida seja fornecida, " +"ocorra \n" +" um erro de atribuição ou a consola não esteja a executar uma função." + +#: builtins.c:555 +#, fuzzy +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Escreve argumentos para a saída padrão.\n" +" \n" +" Mostrar ARGs, separados por espaço único e seguidos de nova linha (LF)\n" +" na saída padrão.\n" +" \n" +" Opções:\n" +" -n\tnaõ acrescentar nova linha\n" +" -e\tpermitir interpretação dos escapes seguintes com barra esquerda\n" +" -E\tsuprimir explicitamente interpretação de escapes com barra " +"esquerda\n" +" \n" +" \"echo\" interpreta os seguintes caracteres de escapes com barra " +"esquerda:\n" +" \\a\talerta (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuprimir mais saídas\n" +" \\e\tcarácter de escape\n" +" \\E\tcarácter de escape\n" +" \\f\tform feed\n" +" \\n\tnova linha (LF)\n" +" \\r\tcarriage return (CR)\n" +" \\t\ttabulação horizontal\n" +" \\v\ttabulação vertical\n" +" \\\\\tbarra esquerda (\"\\\")\n" +" \\0nnn\to carácter cujo código ASCII é NNN (octal). NNN pode ter\n" +" \t\tde 0 a 3 dígitos octais\n" +" \\xHH\to carácter de 8-bit cujo valor é HH (hexadecimal). HH\n" +" \t\tpode ter um ou dois dígitos hexadecimais\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que ocorra um erro de escrita." + +#: builtins.c:595 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Escreve argumentos para a saída padrão.\n" +" \n" +" Mostrar ARGs na saída padrão seguidos de nova linha (LF).\n" +" \n" +" Opções:\n" +" -n\tnão acrescentar nova linha\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que ocorra um erro de escrita." + +#: builtins.c:610 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Activar e desactivar internos da consola.\n" +" \n" +" Activa e desactiva comandos internos da consola. Desativar permite\n" +" executar um comando de disco com o mesmo nome que comando interno\n" +" sem ter de usar um caminho completo.\n" +" \n" +" Opções:\n" +" -a\timprimir lista de internos mostrando se estão ou não activos\n" +" -n\tdesactivar cada NOME ou mostrar uma lista de internos " +"desactivados\n" +" -p\timprimir a lista de internos em formato reutilizável\n" +" -s\timprimir só os nomes de internos \"especiais\" Posix\n" +" \n" +" Opções que controlam o carregamento dinâmico:\n" +" -f\tCarregar interno NOME de objecto partilhado NOMEFICH\n" +" -d\tRemover um interno carregado com -f\n" +" \n" +" Sem opções, cada NOME é activado.\n" +" \n" +" Para usar o \"test\" encontado em $PATH em vez do interno da consola\n" +" insira \"enable -n test\".\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que NOME não seja um interno da consola ou " +"ocorra um erro." + +#: builtins.c:638 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Executa argumentos como comando da consola.\n" +" \n" +" Combina ARGs numa única cadeia, usa o resultado como entrada da " +"consola,\n" +" e executa os comandos resultantes.\n" +" \n" +" Estado de saída:\n" +" Devolve estado de saída do comando ou sucesso se o comando for nulo." + +#: builtins.c:650 +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters ($0 - $9), but if\n" +" more arguments are given, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Analisa argumentos da opção.\n" +" \n" +" Getopts é usado pelos procedimentos da consola para analisar parâmetros " +"posicionais\n" +" como opções.\n" +" \n" +" CADEIAOPÇÕES contém as letras de opção a reconhecer; se uma letra\n" +" for seguida de \":\", espera-se que a opção tenha um argumento,\n" +" separado da opção por um espaço.\n" +" \n" +" Sempre que é chamado, getopts coloca a opção seguinte na variável\n" +" da consola $name, inicializa name se não existir e o índice do\n" +" argumento seguinte a processar na variável da consola OPTIND.\n" +" OPTIND é inicializado em 1 sempre que a consola ou um script da\n" +" shellé chamado. Quando uma opção requer um argumento, o\n" +" getopts coloca esse argumento na variável da consola OPTARG.\n" +" \n" +" O getopts reporta erros de duas formas. Se o primeiro carácter\n" +" de OPTCADEIA é \":\", o getopts usa um relatório de erro\n" +" silencioso. Neste modo não verá mensagens de erro. Se for vista uma\n" +" opção inválida is seen, o getopts põe o carácter de opção em OPTARG.\n" +" Se não houver um argumento requerido, o getopts põe um \":\" no NOME e\n" +" define OPTARG como o carácter de opção encontrado. Se o getopts não\n" +" estiver em modo silêncio e for vista uma opção inválida, o getopts\n" +" põe \"?\" no NOME e limpa OPTARG. Se não houver um argumento " +"requeriso,\n" +" é posto \"?\" no NOME, OPTARG é limpoe é imprimida uma mensagem de\n" +" diagnóstico.\n" +" \n" +" Se a variável da consola OPTERR tiver valor 0, o getopts desactiva a\n" +" impressão de mensagens de erro, mesmo que o 1º carácter de\n" +" CADEIAOPÇÕES não seja \":\". OPTERR tem o valor 1 predefinido.\n" +" \n" +" O getopts normalmente analisa os parâmetros posicionais ($0 - $9), mas " +"se\n" +" receber mais argumentos, são eles que são analisados.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso se encontrar uma opção; falha se o fim da opção for\n" +" encontrado ou se ocorrer um erro." + +#: builtins.c:692 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Substitui a consola com o comando indicado.\n" +" \n" +" Executar COMANDO, substituindo esta consola pelo programa " +"especificado.\n" +" ARGUMENTOS tornam-se os argumentos de COMANDO. Se COMANDO não for " +"especificado,\n" +" quaisquer redireccionamentos têm efeito na consola actual.\n" +" \n" +" Opções:\n" +" -a nome\tpassa NOME como argumento 0 a COMANDO\n" +" -c\texecuta COMANDO com um ambiente vazio\n" +" -l\tpõe uma barra no argumento 0 de COMANDO\n" +" \n" +" Se o comando não puder ser executado, uma consola não interactiva sai, " +"a não ser que\n" +" a opção de consola \"execfail\" esteja definida.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que COMANDO não seja encontrado ou ocorra um " +"erro de redireccionamento." + +#: builtins.c:713 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Sai da consola.\n" +" \n" +" Sai da consola com estado N. Se N for omitido, o estado de saída\n" +" é o do último comando executado." + +#: builtins.c:722 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Sai de uma consola com sessão.\n" +" \n" +" Sai de uma consola com sessão com estado de saída N. Devolve um erro " +"se não for\n" +" executado numa consola com sessão." + +#: builtins.c:732 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Mostra ou executa comandos da lista do histórico.\n" +" \n" +" fc é usado para listar ou editar e re-executar comandos da lsiat do " +"histórico.\n" +" PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo, ou " +"PRIMEIRO pode ser\n" +" cadeia, que significa o comando mais recente começado por essa\n" +" cadeia.\n" +" \n" +" Opções:\n" +" -e NOMEED\tseleciona o editor a usar. A predefinição é FCEDIT, " +"depois EDITOR,\n" +" \t\tdepois vi\n" +" -l \tlistar linhas em vez de editar\n" +" -n\tomitir nºs de linha ao ouvir\n" +" -r\treverter a ordem das linhas (mais recentes primeiro)\n" +" \n" +" Com o formato \"fc -s [pat=rep ...] [comando]\", COMANDO é\n" +" re-executado após a substituição VELHO=NOVO ser realizada.\n" +" \n" +" Um aliás útil a usar aqui é r=\"fc -s\", para que inserir \"r cc\"\n" +" executa o último comando começado por \"cc\" e inserir \"r\" re-" +"executa\n" +" o último comando.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso ou estado do comando executado; não-zero se ocorrer um " +"erro." + +#: builtins.c:762 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Move a tarefa para 1º plano.\n" +" \n" +" Coloca a tarefa identificada com JOB_SPEC em 1º plano, tornando-a a\n" +" tarefa actual. Se JOB_SPEC não existir, é usada a noção da consola de\n" +" tarefa actual.\n" +" \n" +" Estado de saída:\n" +" Estado do comando colocado em 1º plano ou falha se ocorrer um erro." + +#: builtins.c:777 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Move a tarefa para 2º plano.\n" +" \n" +" Coloca a tarefa identificada com cada JOB_SPEC em 2º plano, como se " +"tivessem\n" +" sido iniciados com \"&\". Se JOB_SPEC não existir, é usada a noção da " +"consola de\n" +" tarefa actual.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que o controlo de tarefas esteja inactivo ou " +"ocorra um erro." + +#: builtins.c:791 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Recorda ou mostra localizações de programas.\n" +" \n" +" Determina e recorda o caminho completo de cada comando NOME. Se\n" +" não tiver argumentos, é mostrada informação sobre comando recordados.\n" +" \n" +" Opções:\n" +" -d\tesquecer a localização recordada de cada NOME\n" +" -l\tmostrar num formato que possa ser usado como entrada\n" +" -p caminho\tuse CAMINHO como caminho completo para NOME\n" +" -r\tesquecer todas as localizações recordadas\n" +" -t\timprimir a localização recordada de cada NOME, precedendo-a\n" +" \t\tdo correspondente NOME se forem\n" +" \t\tindicados múltiplos NOMEs\n" +" Argumentos:\n" +" NOME\tCada NOME é procurado no $PATH e adicionado à lista\n" +" \t\tde comandos lembrados.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que NOME não seja encontrado ou indique uma " +"opção inválida." + +#: builtins.c:816 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Mostra informação sobre comandos internos.\n" +" \n" +" Mostra breves resumos de comandos internos. Se PADRÃO for\n" +" especificado, dá ajuda detalhada em todos os comandos que cumpram " +"PADRÃO,\n" +" senão imprime a lista de tópicos de ajuda.\n" +" \n" +" Opções:\n" +" -d\tmostra uma descrição breve de cada tópico\n" +" -m\tmostra uso em formato pseudo-manpage\n" +" -s\tmostra só uma sinopse curta para cada tópico que cumpre\n" +" \t\tPADRÃO\n" +" \n" +" Argumentos:\n" +" PADRÃO\tPadrão que especifica um tópico de ajuda\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que PADRÃO não seja encontrado ou indique uma " +"opção inválida." + +#: builtins.c:840 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Mostra ou manipula a lista do histórico.\n" +" \n" +" Mostra a lista do histórico com nºs de linha, prefixando cada entrada\n" +" modificada com um \"*\". Um argumento de N lista só as últimas N " +"entradas.\n" +" \n" +" Opções:\n" +" -c\tlimpa a lista eliminado todas as entradas\n" +" -d desvio\telimina a entrada do histórico na posição DESVIO.\n" +" \t\tDesvios negativos contam-se do final da lista do histórico\n" +" \n" +" -a\tacrescenta linhas de histórico desta sessão ao ficheiro de " +"histórico\n" +" -n\tlê todas as linhas de histórico ainda não lidas do ficheiro de " +"histórico\n" +" \t\te acrescenta-as à lista de histórico\n" +" -r\tlê o ficheiro de histórico e acrescenta o conteúdo à lista de\n" +" \t\thistórico\n" +" -w\tescreve o histórico actual no ficheiro de histórico\n" +" \n" +" -p\trealiza expansão do histórico em cada ARG e mostra o resultado\n" +" \t\tsem gravar na lista de histórico\n" +" -s\tacrescenta ARGs à lista de histórico como entrada única\n" +" \n" +" Se NOMEFICH for dado, é usado como ficheiro de histórico. Senão,\n" +" se FICHHIST tiver um valor, será usado, caso contrário ~/." +"bash_history.\n" +" \n" +" Se a variável HISTTIMEFORMAT estiver definida e não for nula, o valor é " +"usado\n" +" como cadeia de formato para strftime(3) para imprimir o carimbo " +"associado\n" +" a cada entrada de histórico mostrada. Senão, não são imprimidos " +"quaisquer carimbos.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro." + +#: builtins.c:877 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Mostra o estado das tarefas.\n" +" \n" +" Lista as tarefas activas. JOBSPEC rea cadeiae a saída a essa tarefa.\n" +" Sem opções, é mostrado o estado de todas as tarefas activas.\n" +" \n" +" Opções:\n" +" -l\tlista IDs de processo além da informação normal\n" +" -n\tlista só processos com estado alterado desde a última\n" +" \t\tnotificação\n" +" -p\tlista só IDs de processo\n" +" -r\trea cadeiae saída a tarefas em execução\n" +" -s\trea cadeiae saída a tarefas paradas\n" +" \n" +" Se -x for usado, COMANDO é executado após todas as especificações de " +"tarefas\n" +" que aparecem em ARGS terem sido substituídas pela ID de processo do " +"líder de\n" +" grupo do processo dessat tarefa.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro.\n" +" Se -x for usado, devolve o estado de saída de COMANDO." + +#: builtins.c:904 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Remove tarefas da consola actual.\n" +" \n" +" Remove cada argumento JOBSPEC da tabela de tarefas activas. Sem\n" +" JOBSPECs, a consola usa a sua noção de tarefa actual.\n" +" \n" +" Opções:\n" +" -a\tremove todas as tarefas se JOBSPEC não for indicado\n" +" -h\tmarcar cada JOBSPEC para que SIGHUP não seja enviado para a " +"tarefa\n" +" \t\tse a consola receber um SIGHUP\n" +" -r\tremove só tarefas em execução\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que uma opção inválida ou JOBSPEC seja " +"indicada." + +#: builtins.c:923 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Envia um sinal a uma tarefa.\n" +" \n" +" Envia aos processos identificados por PID ou JOBSPEC o sinal chamado\n" +" SIGSPEC ou SIGNUM. Se nem SIGSPEC nem SIGNUM estiverem presentes,\n" +" SIGTERM é presumido.\n" +" \n" +" Opções:\n" +" -s sig\tSIG é um nome de sinal\n" +" -n sig\tSIG é um número de sinal\n" +" -l\tlista nomes de sinais; se se seguirem argumentos, são\n" +" \t\tassumidos como nºs de sinal para listar os nomes\n" +" -L\tsinónimo de -l\n" +" \n" +" Mata um interno da consola por dois motivos: permite usar as IDs de " +"tarefa\n" +" em vez de IDs de processo e permite matar processos se o limite de\n" +" processos que pode criar for atingido.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro." + +#: builtins.c:947 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Avalia as expressões aritméticas.\n" +" \n" +" Avalia cada ARG como uma expressão aritmética. A avaliação é feita em\n" +" inteiros de largura fixa sem verificação de transporte, embora a " +"divisão\n" +" por 0 seja sinalizada como erro. A seguinte lista de operadores é " +"agrupada\n" +" em níveis de igual prioridade. Os níveis estão listados\n" +" por ordem de precedência decrescente.\n" +" \n" +" \tid++, id--\tvariável pós-incremento, pós-decremento\n" +" \t++id, --id\tvariável pré-incremento, pré-decremento\n" +" \t-, +\t\tmenos, mais unário\n" +" \t!, ~\t\tnegação lógica e bitwise\n" +" \t**\t\texponenciação\n" +" \t*, /, %\t\tmultiplicação, divisão, resto\n" +" \t+, -\t\tadição, subtracção\n" +" \t<<, >>\t\tdeslocação esquerda e direita bitwise\n" +" \t<=, >=, <, >\tcomparação\n" +" \t==, !=\t\tigualdade, não igualdade\n" +" \t&\t\tE bitwise\n" +" \t^\t\tOUEX bitwise\n" +" \t|\t\tOU bitwise\n" +" \t&&\t\tE lógico\n" +" \t||\t\tOU lógico\n" +" \texpr ? expr : expr\n" +" \t\t\toperador condicional\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tatribuição\n" +" \n" +" As variáveis de consola são permitidas como operandos. O nome da " +"variável\n" +" é substituído pelo seu valor (convertido em inteiro de largura fixa) " +"dentro\n" +" de uma expressão. A variável não tem de ter o seu atributo inteiro\n" +" activado para ser usado numa expressão.\n" +" \n" +" Os operadores são avaliados por ordem de precedência. Sub-expressões\n" +" entre parênteses são avaliadas primeiro e ignoram as regras de\n" +" precedência acima.\n" +" \n" +" Estado de saída:\n" +" Se o último ARG for avaliado como 0, let devolve 1; senão let devolve 0." + +#: builtins.c:992 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Lê uma linha da entrada padrão e divide-a em campos.\n" +" \n" +" Lê uma linha da entrada padrão ou do descritor de ficheiro FD\n" +" se a opção -u for usada. A linha é dividida em campos como na divisão\n" +" de palavras e a primeira palavra é atribuída ao primeiro NOME, a " +"segunda\n" +" ao segundo NOME, e assim por diante, com quaisquer palavras que " +"sobrem \n" +" atribuídas ao último NOME. Só caracteres encontrados em $IFS são " +"reconhecidos\n" +" como delimitadores de palavras.\n" +" \n" +" Se não indicar NOMEs, a linha é armazenada na variável RESPONDER.\n" +" \n" +" Opções:\n" +" -a matriz\tatribui as palavras lidas a índices sequenciais da " +"MATRIZ\n" +" \t\tcomeçando em zero\n" +" -d delim\tcontinua até que o primeiro carácter de DELIM seja lido, " +"em vez de\n" +" \t\tnewline\n" +" -e\tusa Readline para obter a linha numa consola interactiva\n" +" -i texto\tusa TEXTO como texto inicial para Readline\n" +" -n ncars\tvolta após ler NCARS caracteres em vez de esperar\n" +" \t\tpor newline, mas respeita um delimitador se estiver\n" +" \t\tantes de NCARS caracteres\n" +" -N ncars\tvolta após ler exactamente NCARS caracteres, a não ser " +"que\n" +" \t\tEOF seja encontrado ou a leitura esteja inactiva, ignorando\n" +" \t\tqualquer delimitador\n" +" -p prompt\timprime PROMPT na saída sem newline final antes de\n" +" \t\ttentar ler\n" +" -r\tnão permite que barras esquerdas escapem qualquer carácter\n" +" -s\tnão ecoa entradas vindas de um terminal\n" +" -t inacção\tesgota o tempo e devolve falha se uma linha completa\n" +" \t\tde entrada não for lida em INACÇÃO segundos. O valor da\n" +" \t\tvariável TMOUT é o predefinido de inacção. INACÇÃO pode ser\n" +" \t\tuma fracção. Se INACÇÃO for 0, read volta\n" +" \t\timediatamente, sem tentar ler quaisquer dados, devolvendo\n" +" \t\tsucesso só se a entrada estiver disponível no descritor de\n" +" \t\tficheiro especificado. O estado de saída é maior que 128\n" +" \t\tse a inacção for excedida\n" +" -u fd\tlê do descritor de ficheiro FD em vez da entrada padrão\n" +" \n" +" Estado de saída:\n" +" O código devolvido é zero, a não ser que end-of-file seja encontrado, " +"haja\n" +" inacção (caso em que é maior que 128), ocorra um erro de atribuição de " +"variável,\n" +" ou seja indicado um descritor de ficheiro inválido como argumento de -u." + +#: builtins.c:1039 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Volta de uma função de consola.\n" +" \n" +" Força a saída de uma função ou script baseado com o valor especificado\n" +" por N. Se N for omitido, o estado de saída é o do último comando\n" +" executado dentro da função ou script.\n" +" \n" +" Estado de saída:\n" +" Devolve N, ou falha se a consola não estiver a executar uma função ou " +"script." + +#: builtins.c:1052 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Define ou limpa valores de opções ou parâmetros posicionais da consola.\n" +" \n" +" Altera o valor de atributos ou parâmetros posicionais da consola, ou\n" +" mostra os nomes e valores de variáveis da consola.\n" +" \n" +" Opções:\n" +" -a Marca variáveis modificadas ou criadas para exportação.\n" +" -b Notifica o fim da tarefa imediatamente.\n" +" -e Sai imediatamente se um comando sair com estado diferente de " +"zero.\n" +" -f Desactiva geração de nome de ficheiro (globbing).\n" +" -h Recordar localização de comandos à medida que são procurados.\n" +" -k Todos os argumentos de atribuição são colocados no ambiente para " +"um\n" +" comando, não só os que precedem o nome do comando.\n" +" -m Activa o controlo de tarefas.\n" +" -n Lê comandos, mas não os executa.\n" +" -option-name\n" +" Define a variável correspondente a option-name:\n" +" allexport igual a -a\n" +" braceexpand igual a -B\n" +" emacs usa estilo emacs de edição de linhas\n" +" errexit igual a -e\n" +" errtrace igual a -E\n" +" functrace igual a -T\n" +" hashall igual a -h\n" +" histexpand igual a -H\n" +" history activa histórico de comandos\n" +" ignoreeof a consola não sai após ler EOF\n" +" interactive-comments\n" +" permite que comentários apareçam em " +"comandos interactivos\n" +" keyword igual a -k\n" +" monitor igual a -m\n" +" noclobber igual a -C\n" +" noexec igual a -n\n" +" noglob igual a -f\n" +" nolog actualmente aceite mas ignorado\n" +" notify igual a -b\n" +" nounset igual a -u\n" +" onecmd igual a -t\n" +" physical igual a -P\n" +" pipefail o valor devolvido de um pipeline é o estado " +"do\n" +" último comando a sair com estado não-" +"zero,\n" +" ou zero se nenhum saiu com estado não-" +"zero\n" +" posix altera o comportamento do bash onde a " +"operação\n" +" predefinida diferir da norma Posix para " +"cumprir\n" +" a norma\n" +" privileged igual a -p\n" +" verbose igual a -v\n" +" vi usa estilo vi de edição de linhas\n" +" xtrace igual a -x\n" +" -p Activado sempre que as ID de utilizador reais e efectivas não\n" +" coincidam. Desactiva o processamento do ficheiro $ ENV e a \n" +" importação de funções da consola. Desligar esta opção faz com\n" +" que os uid e gid efectivos sejam definidos para os uid e gid " +"reais.\n" +" -t Sair depois de ler e executar um comando.\n" +" -u Trata as variáveis ​​não definidas como erro ao substituir.\n" +" -v Imprime as linhas de entrada da consola à medida que são lidas.\n" +" -x Imprime comandos e seus argumentos à medida que são executados.\n" +" -B a consola realizará expansão de suporte\n" +" -C Se definido, não permitir que ficheiros normais existentes " +"sejam\n" +" sobrescritos pelo redireccionamento da saída.\n" +" -E se definido, ERR é herdada pelas funções de consola.\n" +" -H Activa estilo ! de substituição do histórico. Esta bandeira\n" +" está activada por predefinição, em consolas interativas.\n" +" -P Se definido, não resolve ligações simbólicas ao executar\n" +" comandos como \"cd\" que altera a pasta actual.\n" +" -T Se definido, DEBUG e RETURN são herdadas por funções de " +"consola.\n" +" -- Atribui quaisquer outros argumentos aos parâmetros posicionais.\n" +" Se não houver mais argumentos, os parâmetros posicionais\n" +" são limpos.\n" +" - Atribui quaisquer outros argumentos aos parâmetros " +"posicionais.\n" +" As opções -x e -v são desactivadas.\n" +" \n" +" Usar + em vez de - faz com que as bandeiras sejam desactivadas. As\n" +" bandeiras também podem ser usadas por chamada da consola. O actual\n" +" conjunto de bandeiras pode ser encontrado em $-. Os n restantes ARGs\n" +" são parâmetros posicionais e são atribuídos, em ordem, a $1, $2 .. $n.\n" +" Se não houver ARGs, todas as variáveis de consola são imprimidas.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida." + +#: builtins.c:1137 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Limpa valores e atributos de variáveis e funções da consola.\n" +" \n" +" Para cada NOME, remove a correspondente variável ou função.\n" +" \n" +" Opções:\n" +" -f\ttrata cada NOME como função de consola\n" +" -v\ttrata cada NOME como variável de consola\n" +" -n\ttrata cada NOME como referência de nome e limpa a própria\n" +" \t\tvariável em vez da variável que referencia\n" +" \n" +" Sem opções, unset primeiro tenta limpar uma variável e, se falhar,\n" +" tenta limpar uma função.\n" +" \n" +" Algumas variáveis não podem ser limpas; veja também \"readonly\".\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja " +"só de leitura." + +#: builtins.c:1159 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Define o atributo de exportação em variáveis de consola.\n" +" \n" +" Marca cada NOME para exportação automática para o ambiente de futuros\n" +" comandos executados. Se VALOR for fornecido, atribui VALOR antes de " +"exportar.\n" +" \n" +" Opções:\n" +" -f\trefere funções de consola\n" +" -n\tremove a propriedade de exportação de cada NOME\n" +" -p\tmostra uma lista de todas as funções e variáveis exportadas\n" +" \n" +" Um argumento \"--\" desactiva futuro processamento da opção.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja " +"inválido." + +#: builtins.c:1178 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Marca as variáveis de consola como imutáveis.\n" +" \n" +" Marca cada NOME como só de leitura; os valores destes NOMEs não podem\n" +" ser alterados por subsequentes atribuições. Se VALOR for fornecido,\n" +" atribui VALOR antes de marcar como só de leitura.\n" +" \n" +" Opções:\n" +" -a\trefere a variáveis de matriz indexadas\n" +" -A\trefere a variáveis de matriz associativas\n" +" -f\trefere a funções de consola\n" +" -p\tmostra uma lista de todas as variáveis ou funções só de " +"leitura,\n" +" \t\tdependendo ou não se a opção -f é indicada\n" +" \n" +" Um argumento \"--\" desactiva futuro processamento da opção.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja " +"inválido." + +#: builtins.c:1200 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Deslocar parâmetros posicionais.\n" +" \n" +" Renomear os parâmetros posicionais $N+1,$N+2 ... para $1,$2 ... Se N\n" +" for omitido, presume-se como 1.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que N seja negativo ou maior que $#." + +#: builtins.c:1212 builtins.c:1227 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Executa comandos de um ficheiro na consola actual.\n" +" \n" +" Lê e execute comandos do NOMEFICH na consola actual. As\n" +" entradas em $PATH são usadas para encontrar a pasta contendo NOMEFICH.\n" +" Se nenhum ARGUMENTO for fornecido,tornam-se parâmetros posicionais\n" +" quando NOMEFICH é executado.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado em NOMEFICH; falha se\n" +" NOMEFICH não pode ser lido." + +#: builtins.c:1243 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Suspende a execução da consola.\n" +" \n" +" Suspende a execução desta consola até receber um sinal SIGCONT.\n" +" Se não forem forçadas, as consolas com sessão não podem ser suspensas.\n" +" \n" +" Opções:\n" +" -f\tforçar a suspensão, mesmo que seja uma consola com sessão\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que o controlo de tarefa esteja inactivo ou " +"ocorra um erro." + +#: builtins.c:1259 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Avalia a expressão condicional.\n" +" \n" +" Sai com estado 0 (verdadeiro) ou 1 (falso) dependendo da\n" +" avaliação de EXPR. As expressões podem ser unárias ou binárias. " +"Expressões\n" +" uinárias são frequentemente usadas para examinar o estado de um " +"ficheiro. Há\n" +" também operadores de cadeias e operadores de comparação numérica.\n" +" \n" +" O comportamento do teste depende do número de argumentos. Leia a\n" +" página do manual do bash para a especificação completa.\n" +" \n" +" Operadores de ficheiros:\n" +" \n" +" -a FICHEIRO Verdadeiro se o ficheiro existir.\n" +" -b FICHEIRO Verdadeiro se o ficheiro for bloqueio especial.\n" +" -c FICHEIRO Verdadeiro se o ficheiro for especial de " +"caracteres.\n" +" -d FICHEIRO Verdadeiro se o ficheiro for uma pasta.\n" +" -e FICHEIRO Verdadeiro se o ficheiro existir.\n" +" -f FICHEIRO Verdadeiro se o ficheiro existe e é um ficheiro " +"normal.\n" +" -g FICHEIRO Verdadeiro se o ficheiro for set-group-id.\n" +" -h FICHEIRO Verdadeiro se o ficheiro for uma ligação simbólica.\n" +" -L FICHEIRO Verdadeiro se o ficheiro for uma ligação simbólica.\n" +" -k FICHEIRO Verdadeiro se o ficheiro tiver o bit \"sticky\" " +"definido.\n" +" -p FICHEIRO Verdadeiro se o ficheiro for um pipe com nome.\n" +" -r FICHEIRO Verdadeiro se o ficheiro for legível.\n" +" -s FICHEIRO Verdadeiro se o ficheiro existe e não está vazio.\n" +" -S FICHEIRO Verdadeiro se o ficheiro for um socket.\n" +" -t FD Verdadeiro se FD for aberto num terminal.\n" +" -u FICHEIRO Verdadeiro se o ficheiro for set-user-id.\n" +" -w FICHEIRO Verdadeiro se o ficheiro for gravável por si.\n" +" -x FICHEIRO Verdadeiro se o ficheiro for executável por si.\n" +" -O FICHEIRO Verdadeiro se o ficheiro for efectivamente sua " +"propriedade.\n" +" -G FICHEIRO Verdadeiro se o ficheiro for efectivamente " +"propriedade do seu grupo.\n" +" -N FICHEIRO Verdadeiro se o ficheiro foi modificado desde a " +"última vez que foi lido.\n" +" \n" +" FICHEIRO1 -nt FICHEIRO2 Verdadeiro se o ficheiro1 for mais novo " +"que\n" +" o ficheiro2 (de acordo com a data " +"de modificação).\n" +" \n" +" FICHEIRO1 -ot FICHEIRO2 Verdadeiro se ficheiro1 for mais antigo que " +"o ficheiro2.\n" +" \n" +" FICHEIRO1 -ef FICHEIRO2 Verdadeiro se ficheiro1 for uma ligação " +"rígida a file2.\n" +" \n" +" Operadores de cadeias:\n" +" \n" +" -z CADEIA Verdadeiro se a cadeia estiver vazia.\n" +" \n" +" -n CADEIA\n" +" CADEIA Verdadeiro se a cadeia não estiver vazia.\n" +" \n" +" CADEIA1 = CADEIA2\n" +" Verdadeiro se as cadeias são iguais.\n" +" CADEIA1 != CADEIA2\n" +" Verdadeiro se as cadeias não são iguais.\n" +" CADEIA1 < CADEIA2\n" +" Verdadeiro se CADEIA1 ficar antes de CADEIA2 " +"lexicamente.\n" +" CADEIA1 > CADEIA2\n" +" Verdadeiro se CADEIA1 ficar após CADEIA2 " +"lexicamente.\n" +" \n" +" Outros operadores:\n" +" \n" +" -o OPÇÃO Verdadeiro se a opção de consola OPÇÃO está " +"activada.\n" +" -v VAR Verdadeiro se a variável de consola VAR estiver " +"definida.\n" +" -R VAR Verdadeiro se a variável de consola VAR estiver " +"definida e for um nome\n" +" referência.\n" +" ! EXPR Verdadeiro se EXPR for falso.\n" +" EXPR1 -a EXPR2 Verdadeiro se EXPR1 e EXPR2 forem verdadeiros.\n" +" EXPR1 -o EXPR2 Verdadeiro se EXPR1 OU EXPR2 forem verdadeiros.\n" +" \n" +" arg1 OP arg2 Testes aritméticos. OP é um de -eq, -ne,\n" +" -lt, -le, -gt, ou -ge.\n" +" \n" +" Operadores binários aritméticos devolvem verdadeiro se ARG1 for igual, " +"não\n" +" igual, menor que, menor ou igual que, maior que ou maior ou igual que\n" +" ARG2.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso se EXPR for avaliada como verdadeiro; falha se EXPR " +"for\n" +" avaliado como falso ou for indicado um argumento inválido." + +#: builtins.c:1341 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Avalia uma expressão condicional.\n" +" \n" +" Este é um sinónimo para o interno \"test\", mas o último argumento tem\n" +" de ser um \"]\" literal, para fechar o \"[\" aberto." + +#: builtins.c:1350 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Mostrar tempos de processo.\n" +" \n" +" Imprime os tempos acumulados de utilizador e sistema para a consola e " +"todos\n" +" os seus processos-filho.\n" +" \n" +" Estado de saída:\n" +" Sempre com sucesso." + +#: builtins.c:1362 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Capturar sinais e outros eventos.\n" +" \n" +" Define e activa gestores a executar quando a consola recebe sinais ou\n" +" outras condições.\n" +" \n" +" ARG é um comando a ser lido e executado quando a consola recebe o(s)\n" +" sinal(is) SIGNAL_SPEC. Se ARG estiver ausente (e um único SIGNAL_SPEC\n" +" for fornecido) ou \"-\", cada sinal especificado é reposto no seu " +"valor\n" +" original. Se ARG for a cadeia nula, cada SIGNAL_SPEC será ignorado\n" +" pela consola e pelos comandos que chama.\n" +" \n" +" Se um SIGNAL_SPEC for EXIT (0) ARG é executado na saída da consola. Se\n" +" SIGNAL_SPEC é DEBUG, ARG é executado antes de cada comando simples. Se\n" +" SIGNAL_SPEC é RETURN, ARG é executado cada vez que uma função de " +"consola\n" +" ou um script executado pelo . ou os internos terminam a execução. " +"SIGNAL_SPEC\n" +" de ERR significa executar ARG cada vez que uma falha do comando faça " +"com\n" +" que a consola sair quando a opção -e está activa.\n" +" \n" +" Se nenhum argumento for fornecido, trap imprime a lista de comandos \n" +" associados a cada sinal.\n" +" \n" +" Opções:\n" +" -l imprime uma lista de nomes de sinais e seus números " +"correspondentes\n" +" -p mostra os comandos trap associados a cada SIGNAL_SPEC\n" +" \n" +" Cada SIGNAL_SPEC é um nome de sinal em ou um número de " +"sinal.\n" +" Os nomes dos sinais são insensíveis a maiúsculas e o prefixo SIG é " +"opcional.\n" +" Um sinal pode ser enviado para a consola com \"kill -signal $$\".\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que SIGSPEC seja inválido ou indique uma " +"opção inválida." + +#: builtins.c:1398 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Mostra informações sobre o tipo de comando.\n" +" \n" +" Para cada NOME, indica como seria interpretado se usado como um\n" +" nome de comando.\n" +" \n" +" Opções:\n" +" -a\tmostra todos os locais contendo um executável chamado NOME;\n" +" \t\tinclui aliás, internos e funções, se e só se a opção \"-p\"\n" +" \t\ttambém não for usada\n" +" -f\tsuprime a procura da função de consola\n" +" -P\tforça uma procura em PATH para cada NOME, mesmo que seja um\n" +" \t\taliás, interno ou função e devolve o nome do ficheiro em disco\n" +" \t\tque seria executado\n" +" -p\tdevolve o nome do ficheiro em disco que seria executado,\n" +" \t\tou nada se \"type -t NOME\" não devolver \"file\"\n" +" -t\tdevolve uma só palavra de entre \"alias\", \"keyword\", " +"\"function\"\n" +" \t\t\"builtin\", \"file\" ou \"\", se NOME for um aliás, palavra " +"reservada\n" +" \t\tda consola, função de consola, interno da consola, ficheiro em\n" +" \t\tdisco, ou não encontrados, respectivamente\n" +" \n" +" Argumentos:\n" +" Nome do comando NOME a interpretar.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso se todos os NOMEs forem encontrados; falha se algum não " +"for." + +#: builtins.c:1429 +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Modifica os limites de recursos da consola.\n" +" \n" +" Fornece controlo sobre os recursos disponíveis para consola e " +"processos\n" +" que cria, em sistemas que permitem esse controlo.\n" +" \n" +" Opções:\n" +" -S\tusa o limite de recursos \"soft\"\n" +" -H\tusa o limite de recursos \"hard\"\n" +" -a\ttodos os limites actuais são reportados\n" +" -b\to tamanho do buffer de socket\n" +" -c\to tamanho máximo dos ficheiros núcleo criados\n" +" -d\to tamanho máximo do segmento de dados de um processo\n" +" -e\ta prioridade máxima de agendamento (\"nice\")\n" +" -f\to tamanho máximo dos ficheiros escritos pela consola e seus " +"filhos\n" +" -i\to número máximo de sinais pendentes\n" +" -k\to número máximo de kqueues alocados para este processo\n" +" -l\to tamanho máximo que um processo pode bloquear na memória\n" +" -m\to tamanho máximo do conjunto residente\n" +" -n\to número máximo de descritores de ficheiros abertos\n" +" -p\to tamanho do buffer do pipe\n" +" -q\to número máximo de bytes nas filas de mensagens POSIX\n" +" -r\ta prioridade máxima de programação em tempo real\n" +" -s\to tamanho máximo da pilha\n" +" -t\ta quantidade máxima de tempo de CPU em segundos\n" +" -u\to número máximo de processos do utilizador\n" +" -v\to tamanho da memória virtual\n" +" -x\to número máximo de bloqueios de ficheiros\n" +" -P\to número máximo de pseudo-terminais\n" +" -T\to número máximo de threads\n" +" \n" +" Nem todas as opções estão disponíveis em todas as plataformas.\n" +" \n" +" Se LIMIT for indicada, é o novo valor do recurso especificado; Os\n" +" valores LIMIT especiais \"soft\", \"hard\" e \"unlimited\" representam\n" +" olimite flexível actual, o limite rígido actual e nenhum limite, " +"respectivamente.\n" +" Caso contrário, é imprimido o valor actual do recurso especificado. Se\n" +" nenhuma opção for indicada, então -f é assumido.\n" +" \n" +" Os valores estão em incrementos de 1024 bytes, exceto para -t, que é em " +"segundos,\n" +" -p, que é em incrementos de 512 bytes e -u, que é um número de " +"processos\n" +" sem escala.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que seja indicada uma opção inválida ou " +"ocorra um erro." + +#: builtins.c:1479 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Mostrar ou definir a máscara do modo de ficheiro.\n" +" \n" +" Define a máscara do utilizador de criação de ficheiro para MODO. Se " +"MODO\n" +" for omitido, imprime o valor actual da máscara.\n" +" \n" +" Se MODO começa com um dígito, é interpretado como um número octal;\n" +" caso contrário, é uma cadeia de modo simbólico como a aceite por chmod" +"(1).\n" +" \n" +" Opções:\n" +" -p\tse MODO for omitido, saída de forma a que possa ser reutilizado " +"como entrada\n" +" -S\ttorna a saída simbólica; caso contrário, a saída é um número " +"octal\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que MODO seja inválido ou indique uma opção " +"inválida." + +#: builtins.c:1499 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given." +msgstr "" +"Aguarda a conclusão da tarefa e devolve o estado de saída.\n" +" \n" +" Espera por cada processo identificado por uma ID, que pode ser uma ID " +"de\n" +" processo ou uma especificação de tarefa e reporta o estado final. Se " +"não\n" +" for dada uma ID, aguarda por todos os processos-filho actualmente " +"activos e o\n" +" estado de saída é zero. Se ID for uma especificação de tarefa, espera " +"por\n" +" todos os processos no pipeline da tarefa.\n" +" \n" +" Se a opção -n for fornecida, espera que a próxima tarefa termine e\n" +" devolve seu estado de saída.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado da última ID; falha se a ID for inválida ou for " +"indicada\n" +" uma opção inválida." + +#: builtins.c:1523 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Aguarda a conclusão do processo e devolve o estado de saída.\n" +" \n" +" Espera por cada processo especificado por uma PID e reporta o estado " +"final.\n" +" Se PID não for dada, aguarda por todos os processos-filho actualmente " +"activos,\n" +" e o estado devolvido é zero. A PID tem de ser uma ID de processo.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado da última PID; falha se PID for inválido ou for " +"indicada\n" +" uma opção inválida." + +#: builtins.c:1538 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos para cada membro numa lista.\n" +" \n" +" O ciclo \"for\" executa uma seqüência de comandos para cada membro " +"numa\n" +" lista de itens. Se \"in PALAVRAS ...;\" não estiver presente, \" in \"$@" +"\" \" é\n" +" assumido. Para cada elemento em PALAVRAS, NOME está definido para " +"esseelemento,\n" +" e os COMANDOS são executados.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1552 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Ciclo for aritmético.\n" +" \n" +" Equivalente a\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMANDOS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2 e EXP3 são expressões aritméicas. Se alguma delas for " +"omitida\n" +" comporta-se como se fosse avaliada como 1.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1570 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Selecciona palavras de uma lista e executa comandos.\n" +" \n" +" As PALAVRAS são expandidas, gerando uma lista de palavras. O\n" +" conjunto de palavras expandidas é imprimido no erro padrão, cada\n" +" um precedido por um número. Se \"in PALAVRAS\" não estiver presente,\n" +" \" in \"$@\" \" é assumido. O prompt PS3 é então exibido e é lida uma\n" +" linha da entrada padrão. Se a linha for constituída pelo número\n" +" correspondente a uma das palavras mostradas, NOME é definido para\n" +" essa palavra. Se a linha estiver vazia, PALAVRAS e o prompt são\n" +" mostrados de novo. Se for lido EOF, o comando é concluído. Qualquer\n" +" outro valor lido faz com que NOME seja definido como nulo. A linha\n" +" lida é gravada na variável RESPOSTA. COMANDOS são executados após cada\n" +" selecção até que um comando de interrupção seja executado.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1591 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Reporta o tempo consumido pela execução do pipeline.\n" +" \n" +" Executa PIPELINE e imprime um resumo do tempo real, tempo de CPU do,\n" +" utilizador e tempo de CPU do sistema na execução de PIPELINE quando " +"terminar.\n" +" \n" +" Opções:\n" +" -p\timprime o resumo do tempo no formato portátil Posix\n" +" \n" +" O valor da variável FORMATOTEMPO é usado como formato de saída.\n" +" \n" +" Estado de saída:\n" +" O estado devolvido é o estado de PIPELINE." + +#: builtins.c:1608 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executea comandos baseado em comparação de padrões.\n" +" \n" +" Executar selectivamente COMANDOS baseado na comparação entre PALAVRA e\n" +" PADRÃO. \"|\" é usado para separar múltiplos padrões.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1620 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos com base em condicional.\n" +" \n" +" A lista \"if COMANDOS\" é executada. Se o estado de saída for zero, é\n" +" executada a lista \"then COMANDOS\". Caso contrário, cada lista \"elif " +"COMANDOS\"\n" +" é executado por sua vez e se o estado de saída for zero, a " +"correspondente\n" +" lista \"then COMANDOS\" é executada e o comando if é concluído. De " +"outra forma,\n" +" a lista \"else COMANDOS\" é executada, se presente. O estado de saída " +"da\n" +" construção inteira é o estado de saída do último comando executado, ou " +"zero\n" +" se nenhuma condição for verdadeira.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1637 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos enquanto o teste tiver sucesso.\n" +" \n" +" Expande e executa COMANDOS enquanto o comando final no ciclo\n" +" \"while COMANDOS\" tenha um estado de saída zero.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1649 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos enquanto o teste não tiver sucesso.\n" +" \n" +" Expande e executa COMANDOS enquanto o comando final no ciclo\n" +" \"until COMANDOS\" tenha um estado de saída não zero.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1661 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Cria um co-processo chamado NOME.\n" +" \n" +" Executa COMANDO assincronamente, com a saída e a entrada padrão " +"ligadas\n" +" via pipe a descritores de ficheiro atribuídos a índices 0 e 1 de uma \n" +" variável de matriz NOME na consola em execução.\n" +" O NOME predefinido é \"COPROC\".\n" +" \n" +" Estado de saída:\n" +" O comando coproc devolve um estado de saída 0." + +#: builtins.c:1675 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Define uma função de consola.\n" +" \n" +" Cria uma função de consola chamada NOME. Quando chamado como comando\n" +" simples, NOME executa COMANDOs no contexto da consola. Quando NOME é\n" +" invoked, os argumentos são passados à função como $1...$n e o nome da\n" +" função está em $FUNCNAME.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que NOME seja só de leitura." + +#: builtins.c:1689 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Agrupa comandos como uma unidade.\n" +" \n" +" Executa um conjunto de comandos num grupo. Esta é uma maneira de\n" +" redireccionar um conjunto completo de comandos.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1701 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Retoma a tarefa em primeiro plano.\n" +" \n" +" Equivalente ao argumento JOB_SPEC para o comando \"fg\". Retoma uma\n" +" tarefa parada ou em 2º plano. JOB_SPEC pode especificar um nome de\n" +" tarefa ou um número de tarefa. Pôr \"&\" a seguir a JOB_SPEC coloca a\n" +" tarefa em 2º plano, como se a especificação da tarefa tivesse sido\n" +" fornecida como um argumento para \"bg\".\n" +" \n" +" Estado de saída:\n" +" Devolve o estado da tarefa retomada." + +#: builtins.c:1716 +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to \"let EXPRESSION\".\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Avalia uma expressão aritmética.\n" +" \n" +" A expressão EXPRESSÃO é avaliada de acordo com as regras aritméticas.\n" +" Equivalente a \"let EXPRESSÃO\".\n" +" \n" +" Estado de saída:\n" +" Devolve 1 se EXPRESSÃO avaliar como 0; senão, devolve 0." + +#: builtins.c:1728 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Executa o comando condicional.\n" +" \n" +" Devolve um estado de 0 ou 1, dependendo da avaliação da expressão\n" +" condicional EXPRESSÃO. As expressões são compostas pelas mesmas " +"primárias\n" +" usadas pelo interno \"test\" e pode ser combinado com os seguintes " +"operadores:\n" +" \n" +" ( EXPRESSÃO )\tDevolve o valor de EXPRESSÃO\n" +" ! EXPRESSÃO\t\tVerdadeiro se EXPRESSÃO for falsa; senão falso\n" +" EXPR1 && EXPR2\tVerdadeiro se EXPR1 e EXPR2 forem verdadeiras; senão " +"falso\n" +" EXPR1 || EXPR2\tVerdadeiro se EXPR1 ou EXPR2 forem verdadeiras; " +"senão falso\n" +" \n" +" Quando os operadores \"==\" e \"! =\" são usados, a cadeia à direita do " +"operador\n" +" é usada como padrão e é feita a comparação de padrões. Quando o " +"operador \"= ~\"\n" +" é usado, a cadeia à direita do operador é comparada como expressão " +"regular.\n" +" \n" +" Os operadores && e || não avaliam EXPR2 se EXPR1 for suficiente para\n" +" determinar o valor da expressão." + +#: builtins.c:1754 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Nomes e uso comuns de variáveis de consola.\n" +" \n" +" BASH_VERSION\tInformações de versão para esta bash.\n" +" CDPATH\tUma lista de pastas separadas por \":\" para procurar\n" +" \t\tpor pastas dadas como argumentos a \"cd\".\n" +" GLOBIGNORE\tUma lista de padrões separada por \":\" que descreve nomes " +"de\n" +" ficheiro a ignorar pela expansão do nome do caminho.\n" +" HISTFILE\tNome de ficheiro onde o seu histórico de comandos é " +"armazenado.\n" +" HISTFILESIZE\tNúmero máximo de linhas que este ficheiro pode conter.\n" +" HISTSIZE\tNúmero máximo de linhas de histórico a que uma consola em \n" +" \t\texecução pode aceder.\n" +" HOME\tNome completo do caminho para a pasta de início de sessão.\n" +" HOSTNAME\tNome do anfitrião actual.\n" +" HOSTTYPE\tTipo de CPU em que esta versão do Bash está em execução.\n" +" IGNOREEOF\tControla a acção da consola ao receber um carácter EOF\n" +" \t\tcomo única entrada. Se definido, então o seu valor é o\n" +" \t\tnúmero de caracteres EOF que podem ser vistos numa linha\n" +" \t\tvazia antes que a consola saia (predefinição 10).\n" +" \t\tQuando não definido, EOF significa o fim da entrada.\n" +" MACHTYPE\tDescrição do sistema actual em que a bash está em execução.\n" +" MAILCHECK\tFrequência, em segundos, com que a bash procura novo " +"correio.\n" +" MAILPATH\tLista de ficheiros separados por \":\" onde a bash procura\n" +" \t\tnovas mensagens.\n" +" OSTYPE\tVersão Unix em que esta versão da bash está em execução.\n" +" PATH\tLista de pastas separadas por \":\" a procurar quando\n" +" \t\tprocura comandos.\n" +" PROMPT_COMMAND\tComando a executar antes da impressão de cada\n" +" \t\tprompt primário.\n" +" PS1\t\tCadeia do prompt primário.\n" +" PS2\t\tCadeia do prompt secundário\n" +" PWD\t\tCaminho completo da pasta actual.\n" +" SHELLOPTS\tLista separada por \":\" de opções da consola activadas.\n" +" TERM\tNome do tipo de terminal actual.\n" +" TIMEFORMAT\tFormato de saída para estatísticas de tempo mostradas\n" +" pela palavra reservada \"time\".\n" +" auto_resume\tNão-nulo significa que uma palavra de comando numa linha\n" +" \t\tpor si só é procurada primeiro na lista de tarefas actualmente\n" +" \t\tparadas. Se encontrado, a tarefa passa a primeiro plano. Um\n" +" \t\tvalor \"exact\" significa que a palavra de comando deve ser\n" +" \t\texactamente igual a um comando na lista de tarefas paradas.\n" +" \t\t\"substring\" significa que a palavra de comando deve ser igual\n" +" \t\ta uma sub-cadeia da tarefa. Qualquer outro valor significa que\n" +" \t\to comando deve ser um prefixo de uma tarefa interrompida.\n" +" histchars\tCaracteres que controlam a expansão do histórico e " +"substituições\n" +" \t\trápidas. O primeiro carácter é o carácter de subtituição do\n" +" \t\thistórico, normalmente \"!\". O 2º é o de substituição rápida,\n" +" \t\thabitualmente \"^\". O terceiro é o comentário do histórico,\n" +" \t\tnormalmente \"#\".\n" +" HISTIGNORE\tLista de padrões separada por \":\" usados para decidir " +"quais\n" +" \t\tos comandos que devem ser gravados na lista de histórico.\n" + +#: builtins.c:1811 +msgid "" +"Add directories to stack.\n" +" \n" +" Adds a directory to the top of the directory stack, or rotates\n" +" the stack, making the new top of the stack the current working\n" +" directory. With no arguments, exchanges the top two directories.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Adiciona pastas à pilha.\n" +" \n" +" Adiciona uma pasta ao topo da pilha de pastas, ou roda a pilha\n" +" tornando o novo topo da pilha a actual pasta de trabalho.\n" +" Sem argumentos, troca as duas pastas de topo.\n" +" \n" +" Opções:\n" +" -n\tSuprime a alteração normal de pasta ao adicionar\n" +" pastas à pilha, para que só a pilha seja manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tRoda a pilha de modo a que a N-ésima pasta (contando\n" +" \t\tda esquerda da lista mostrada por \"dirs\", começando por\n" +" \t\tzero) fique no topo.\n" +" \n" +" -N\tRoda a pilha de modo a que a N-ésima pasta (contando\n" +" \t\tda direita da lista mostrada por \"dirs\", começando por\n" +" \t\tzero) fique no topo.\n" +" \n" +" dir\tAdiciona DIR à pilha de pastas no topo, tornando-a a\n" +" \t\tnova pasta de trabalho actual.\n" +" \n" +" O interno \"dirs\" mostra a pilha de pastas.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique um argumento inválido ou a\n" +" troca de pastas falhe." + +#: builtins.c:1845 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Remove pastas da pilha.\n" +" \n" +" Remove entradas da pilha de pastas. Sem argumentos, remove\n" +" a pasta do topo da pilha e muda para a nova pasta superior.\n" +" \n" +" Opções:\n" +" -n\tSuprime a alteração normal de pasta ao remover\n" +" \t\tpastas da pilha, para que só a pilha seja manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tRemove a N-ésima entrada contando da esquerda da lista\n" +" \t\tmostrada por \"dirs\", começando por zero. E.g.: \"popd +0\"\n" +" \t\tremove a primeira pasta, \"popd +1\" a segunda.\n" +" \n" +" -N\tRemove a N-ésima entrada contando da direita da lista\n" +" \t\tmostrada por \"dirs\", começando por zero. E.g.: \"popd -0\"\n" +" \t\tremove a última pasta, \"popd -1\" a penúltima.\n" +" \n" +" O interno \"dirs\" mostra a pilha de pastas.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique um argumento inválido ou a troca\n" +" de pastas falhe." + +#: builtins.c:1875 +msgid "" +"Display directory stack.\n" +" \n" +" Display the list of currently remembered directories. Directories\n" +" find their way onto the list with the `pushd' command; you can get\n" +" back up through the list with the `popd' command.\n" +" \n" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Mostra a pilha de pastas.\n" +" \n" +" Mostra a lista de pastas actualmente lembradas. As pastas\n" +" entram na lista com o comando \"pushd\"; pode recuar na\n" +" lista com o comando \"popd\".\n" +" \n" +" Opções:\n" +" -c\tlimpa a pilha de pastas eliminando todos os elementos\n" +" -l\tnão imprime versões prefixadas com til de pastas relativas\n" +" \t\tà sua pasta inicial\n" +" -p\timprime a pilha de pastas com uma entrada por linha\n" +" -v\timprime a pilha de pastas com uma entrada por linha prefixada\n" +" \t\tcom a sua posição na pilha\n" +" \n" +" Argumentos:\n" +" +N\tMostra a N-ésima entrada contando da esquerda da lista\n" +" \t\tmostrada por \"dirs\" quando chamado sem opções, começando\n" +" \t\tpor zero.\n" +" \n" +" -N\tMostra a N-ésima entrada contando da direita da lista\n" +" \t\tmostrada por \"dirs\" quando chamado sem opções, começando\n" +" \t\tpor zero.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro" + +#: builtins.c:1906 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Define e cancela opções de consola.\n" +" \n" +" Altera a definição de cada opção de consola OPTNOME. Sem qualquer\n" +" argumento, lista todas as opções de consola com indicação de definição\n" +" ou não de estado.\n" +" \n" +" Opções:\n" +" -o\trestringe OPTNOMEs para os definidos para uso com \"set -o\"\n" +" -p\timprime cada opção de consola com indicação do seu estado\n" +" -q\tsuprime a saída\n" +" -s\tactiva (define) cada OPTNOME\n" +" -u\tdesactiva (limpa) cada OPTNOME\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso se OPTNOME estiver activado; falha se indicar uma opção\n" +" inválida ou OPTNOME esteja desactivada." + +#: builtins.c:1927 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in printf" +"(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Formata e imprime ARGUMENTOS sob controlo do FORMATO.\n" +" \n" +" Opções:\n" +" -v var\tatribui a saída à variável de consola VAR em vez de\n" +" \t\tmostrar na saída padrão\n" +" \n" +" FORMATO é uma cadeia de caracteres que contém três tipos de objectos: \n" +" caracteres simples, que são simplesmente copiados para a saída padrão;\n" +" sequências de escape, que são convertidas e copiadas para a saída " +"padrão; e\n" +" especificações de formato, cada uma das quais causa a impressão do " +"argumento\n" +" sucessivo seguinte.\n" +" \n" +" Além das especificações de formato padrão descritas em printf (1),\n" +" printf interpreta:\n" +" \n" +" %b\texpande sequências de escape para o argumento correspondente\n" +" %q\tcita o argumento de forma a ser reutilizado como entrada de " +"consola\n" +" %(fmt)T\timprime a cadeia de data-hora resultante da utilização do " +"FMT\n" +" \t\tcomo formato para strftime(3)\n" +" \n" +" O formato é reutilizado conforme necessário para consumir todos os " +"argumentos.\n" +" E se há menos argumentos do que o formato requer, especificações de " +"formato\n" +" extra comportam-se como um valor zero ou uma cadeia nula, conforme " +"apropriado,\n" +" tenha sido fornecido.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro de\n" +" escrita ou atribuição." + +#: builtins.c:1961 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Especifica como os argumentos devem ser concluídos por Readline.\n" +" \n" +" Para cada NOME, especifica como os argumentos devem ser concluídos. Se " +"não \n" +" fornecer opções, as especificações de conclusão existentes são " +"imprimidas\n" +" de forma a permitir que sejam reutilizados como entrada.\n" +" \n" +" Opções:\n" +" -p\timprime especificações de conclusão existentes em formato " +"reutilizável\n" +" -r\tremove uma especificação de conclusão para cada NOME, ou, se não\n" +" \t\tforneceu NOMEs, todas as especificações de conclusão\n" +" -D\taplicar as conclusões e acções como predefinição para comandos\n" +" \t\tsem qualquer especificação de conclusão definida\n" +" -E\taplicar as conclusões e acções a comandos -- \"vazios\"\n" +" \t\tconclusão tentada numa linha em branco\n" +" -I\taplica as conclusões e acções à palavra inicial (normalmente o\n" +" \t\tcomando)\n" +" \n" +" Quando a conclusão é tentada, as acções são aplicadas na ordem em que \n" +" as opções de letras maiúsculas estão listadas acima. Se forem fornecidas " +"múltiplas\n" +" opções, a opção -D toma precedência sobre -E e ambas têm precedência " +"sobre -I.\n" +" \n" +" Estado da saída: Devolve sucesso a não ser que seja fornecida uma opção\n" +" inválida ou ocorra um erro." + +#: builtins.c:1991 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Mostrar possíveis conclusões, dependendo das opções.\n" +" \n" +" Destinado a ser usado de dentro de uma função de consola gerando\n" +" possíveis conclusões. Se o argumento PALAVRA opcional for fornecido,\n" +" são geradas comparações com PALAVRA.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro." + +#: builtins.c:2006 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Modifica ou mostra as opções de conclusão.\n" +" \n" +" Modifica as opções de conclusão para cada NOME, ou, se não fornecer " +"NOME,\n" +" a conclusão actualmente em execução. Se nenhuma OPÇÃO for fornecida, " +"imprime\n" +" as opções de conclusão para cada NOME ou a especificação de conclusão " +"actual.\n" +" \n" +" Opções:\n" +" \t-o opção\tDefine opção de conclusão OPÇÃO para cada NOME\n" +" \t-D\t\tAltera opções para a conclusão do comando \"predefinido\"\n" +" \t-E\t\tAltera opções para a conclusão do comando \"vazio\"\n" +" \t-I\t\tAltera opções para a conclusão na palavra inicial\n" +" \n" +" Usar \"+ o\" em vez de \"-o\" desliga a opção especificada.\n" +" \n" +" Argumentos:\n" +" \n" +" Cada NOME refere-se a um comando para o qual uma especificação de " +"conclusão\n" +" deve ter sido anteriormente definida usando o interno \"complete\". Se " +"não\n" +" forneceu NOMEs, compopt tem de ser chamado por uma função actualmente a\n" +" gerar conclusões e as opções para esse gerador de conclusões " +"actualmente\n" +" em execução são modificadas.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou NOME não " +"tenha\n" +" uma especificação de conclusão definida." + +#: builtins.c:2037 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Lê linhas da entrada padrão para uma variável de matriz indexada.\n" +" \n" +" Lê linhas da entrada padrão para a variável de matriz indexada MATRIZ, " +"ou\n" +" do descritor de ficheiro FD se a opção -u for fornecida. A variável " +"MAPFILE\n" +" é a MATRIZ predefinida.\n" +" \n" +" Opções:\n" +" -d delim\tUsa DELIM para terminar as linhas, em vez de nova linha\n" +" -n total\tCopia no máximo TOTAL linhas. Se TOTAL for 0, copia todas\n" +" -O origem\tComeça a atribuir a MATRIZ no índice ORIGEM. A predefinição " +"é 0\n" +" -s total\tDescarta as primeiras TOTAL linhas lidas\n" +" -t\tRemove um DELIM inicial de cada linha lida (predefinição é nova " +"linha)\n" +" -u fd\tLê linhas do descritor de ficheiro FD em vez da entrada padrão\n" +" -C retorno\tAvalia RETORNO cada vez que QUANTUM linhas são lidas\n" +" -c quantum\tEspecifica o número de linhas lidas entre cada chamada a\n" +" \t\t\tRETORNO\n" +" \n" +" Argumentos:\n" +" ARRAY\tNome de variável de matriz a usar para dados de ficheiro\n" +" \n" +" Se -C for fornecido sem -c, a quantidade predefinida é 5000. Quando\n" +" RETORNO é avaliado, é fornecido o índice do elemento seguinte da\n" +" matriz a ser atribuído e a linha a ser atribuída a esse elemento\n" +" como argumentos adicionais.\n" +" \n" +" Se não for fornecido com uma origem explícita, mapfile limpa MATRIZ " +"antes\n" +" de lhe fazer atribuições.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida, MATRIZ seja " +"só\n" +" de leitura ou não seja uma matriz indexada." + +#: builtins.c:2073 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Lê linhas de um ficheiro para uma variável de matriz.\n" +" \n" +" Um sinónimo para \"mapfile\"." diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo index fd7eae62d..37b8dcb1c 100644 Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ diff --git a/po/pt_BR.po b/po/pt_BR.po index a2b7bb0c0..188a7fcee 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -1,139 +1,139 @@ # Brazilian Portuguese translation for bash -# Copyright (C) 2016 Free Software Foundation, Inc. +# Copyright (C) 2018 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Halley Pacheco de Oliveira , 2002. -# Rafael Fontenelle , 2015, 2016. -# +# Rafael Fontenelle , 2015, 2016, 2018. msgid "" msgstr "" -"Project-Id-Version: bash 4.4-beta1\n" +"Project-Id-Version: bash 5.0-beta2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2016-02-12 09:33-0200\n" -"Last-Translator: Rafael Fontenelle \n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2018-11-30 08:07-0200\n" +"Last-Translator: Rafael Fontenelle \n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" -"X-Generator: Poedit 1.8.7\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Virtaal 1.0.0-beta1\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "subscrito de array incorreto" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: removendo o atributo nameref" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: impossível converter array indexado para associativo" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: chave de array associativo inválida" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: impossível atribuir a índice não numérico" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: deve usar subscrito ao atribuir um array associativo" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: impossível criar: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: impossível localizar mapa de teclas para comando" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: primeiro caractere não-espaço em branco não é `\"'" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "sem `%c' de fechamento em %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s faltando separador dois-pontos" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "expansão de chaves: impossível alocar memória para %s" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "expansão de chaves: falha ao alocar memória para %d elementos" +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "expansão de chaves: falha ao alocar memória para %u elementos" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "expansão de chaves: falha ao alocar memória para `%s'" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nome de apelido (alias) inválido" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "edição de linha não habilitada" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': nome de mapa de teclas inválido" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: impossível ler: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': impossível desassociar (unbind)" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': nome de função desconhecida" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s não está associada a qualquer tecla.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s pode ser chamado via " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': impossível desassociar (unbind)" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "número de loops" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "significativo apenas em um loop de `for', `while' ou `until'" @@ -147,236 +147,235 @@ msgstr "" " \n" " Sem EXPR, retorna " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME não definida" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "número excessivo de argumentos" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "\t\tencontrado no diretório atual." +msgstr "diretório nulo" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD não definida" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "linha %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "aviso: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: a opção requer um argumento" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: requer argumento numérico" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: não encontrado" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: opção inválida" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: nome de opção inválido" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': não é um identificador válido" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "número octal inválido" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "número do hexa inválido" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "número inválido" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: especificação de sinal inválida" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "" "`%s': não é um identificador de processo (pid) nem é uma especificação de " "trabalho válida" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: a variável permite somente leitura" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fora dos limites" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argumento" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s fora dos limites" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: trabalho não existe" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: nenhum controle de trabalho" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "nenhum controle de trabalho" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: restrição" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "restrição" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: não é um comando interno do shell" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "erro de escrita: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "erro ao definir atributos do terminal: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "erro ao obter atributos do terminal: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: erro ao obter o diretório atual: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: especificação de trabalho ambígua" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "ajuda não disponível nesta versão" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: nome de ação inválido" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: nenhuma especificação de completação" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "aviso: a opção -F pode não funcionar como esperado" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "aviso: a opção -C pode não funcionar como esperado" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "não se está executando atualmente função de completação" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "somente pode ser usado em uma função" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: variável de referência não pode ser um array" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: referência a si próprio da variável nameref não é permitido" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s referência circular de nome" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: nome de variável inválido para referência de nome" +msgstr "\"%s\": nome de variável inválido para referência de nome" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "impossível usar `-f' para criar funções" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: função somente para leitura" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: atribuição de array composto com aspas está obsoleto" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: impossível destruir variáveis de array desta maneira" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: impossível converter array associativo para indexado" @@ -410,68 +409,68 @@ msgstr "%s: não foi carregado dinamicamente" msgid "%s: cannot delete: %s" msgstr "%s: impossível excluir: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: é um diretório" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: não é um arquivo irregular" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: arquivo é muito grande" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: impossível executar o arquivo binário" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: impossível executar: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "sair\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "não é um shell de login: use `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Há trabalhos parados.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Há trabalhos em execução.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "nenhum comando encontrado" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "especificação do histórico" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: impossível abrir arquivo temporário: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "atual" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "o trabalho %d iniciou sem controle de trabalho" @@ -486,28 +485,27 @@ msgstr "%s: opção ilegal -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: a opção requer um argumento: -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashing está desabilitado" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tabela de hash está vazia\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "número\tcomando\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Comandos shell correspondendo à palavra-chave `" msgstr[1] "Comandos shell correspondendo às palavras-chave `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -515,12 +513,12 @@ msgstr "" "nenhum tópico de ajuda corresponde a `%s'. Tente `help help' ou `man -k %s' " "ou `info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: impossível abrir: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -542,20 +540,21 @@ msgstr "" "Um asterisco (*) próximo ao nome significa que o comando está desabilitado.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "impossível usar mais de um dentre -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "posição no histórico" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s argumento inválido" +msgstr "%s: marca de tempo inválida" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: expansão do histórico falhou" @@ -569,16 +568,16 @@ msgstr "%s: inlib falhou" msgid "no other options allowed with `-x'" msgstr "nenhuma outra opção permitida com `-x'" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumentos devem ser IDs de trabalhos ou processo" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Erro desconhecido" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "esperava uma expressão" @@ -587,69 +586,69 @@ msgstr "esperava uma expressão" msgid "%s: not an indexed array" msgstr "%s: não é um array indexado" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: especificação de descritor de arquivo inválida" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descritor de arquivo inválido: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: número de linhas inválido" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: origem do array inválido" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantidade de chamadas inválida" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "nome de variável array vazio" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "requer suporte a variável de array" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "`%s': faltando caractere de formato" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': especificação de formato de tempo inválida" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "`%c': caractere de formato inválido" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "problema ao analisar formato: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "faltando dígito hexa para \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "faltando dígito unicode para \\%c" @@ -663,19 +662,19 @@ msgstr "nenhum outro diretório" msgid "%s: invalid argument" msgstr "%s argumento inválido" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "pilha de diretórios está vazia" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "índice de pilha de diretórios" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -717,7 +716,7 @@ msgstr "" " -N\tExibe a n-ésima entrada a partir da esquerda da linha\n" " \t\tmostrada por `dirs' chamado sem opções, iniciando com zero." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -764,7 +763,7 @@ msgstr "" " \n" " O comando interno `dirs' exibe a pilha de diretórios." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -807,43 +806,43 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: especificação de tempo limite inválida" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "erro de leitura: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "possível retornar (`return') apenas de uma função ou script carregado (com " "`source')" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "" "impossível simultaneamente remover definição de uma função e uma variável" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: impossível remover definição" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: impossível remover definição: %s somente-leitura" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: não é uma variável array" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: não é uma função" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: impossível exportar" @@ -852,21 +851,21 @@ msgstr "%s: impossível exportar" msgid "shift count" msgstr "número de shift" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "" "impossível simultaneamente definir e remover definição de opções do shell" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nome de opção de shell inválido" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "requer argumento arquivo" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: arquivo não encontrado" @@ -879,61 +878,61 @@ msgstr "impossível suspender" msgid "cannot suspend a login shell" msgstr "impossível suspender um shell de login." -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s está apelidada para `%s'\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s é uma palavra-chave do shell\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s é uma função\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s é um comando interno especial do shell\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s é um comando interno do shell\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s é %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s está na tabela hash (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: argumento limite inválido" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': comando incorreto" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: impossível obter limite: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limite" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: impossível modificar limite: %s" @@ -952,366 +951,374 @@ msgstr "`%c': operador de modo simbólico inválido" msgid "`%c': invalid symbolic mode character" msgstr "`%c': caractere de modo simbólico inválido" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " linha " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "último comando: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Abortando..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORM: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "erro de comando desconhecido" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "tipo de comando incorreto" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "conector incorreto" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "desvio incorreto" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: variável não associada" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" "\atempo limite de espera excedido aguardando entrada: fim automático da " "sessão\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "impossível redirecionar a entrada padrão para /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': caractere de formato inválido" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] ainda existe" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "erro de `pipe'" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: excedido o nível máximo de aninhamento de `eval' (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: excedido o nível máximo de aninhamento de `function' (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: excedido o nível máximo de aninhamento de avaliação (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restrição: não é permitido especificar `/' em nomes de comandos" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: comando não encontrado" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: interpretador incorreto" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: impossível executar o arquivo binário: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "`%s': é um comando interno especial" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossível duplicar fd (descritor de arquivo) %d para fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "excedido o nível de recursividade da expressão" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "esvaziamento de pilha de recursão" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "erro de sintaxe na expressão" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "tentativa de atribuição para algo que não é uma variável" -#: expr.c:495 expr.c:858 +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "erro de sintaxe na atribuição de variável" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "divisão por 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "erro de programação: token incorreto passado para expassign()" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "esperava `:' para expressão condicional" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "exponente menor que 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "esperava identificador após pré-acréscimo ou pré-decréscimo" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "faltando `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "erro de sintaxe: esperava operando" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "erro de sintaxe: operador aritmético inválido" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (token de erro é \"%s\")" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "base aritmética inválida" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "valor muito grande para esta base de numeração" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: erro de expressão\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: impossível acessar os diretórios pais (anteriores)" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" "impossível redefinir modo `nodelay' para o descritor de arquivo (fd) %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "impossível alocar novo descritor de arquivo (fd) para a entrada do `bash' a " "partir do fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" "save_bash_input: buffer já existe para o novo descritor de arquivo (fd) %d" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: `pipe' de pgrp" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" "identificador de processo (pid) %d bifurcado (fork) aparece no trabalho em " "execução %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "excluindo trabalho parado %d com grupo de processo %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: processo %5ld (%s) em the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marcado como ainda vivo" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: o identificador do processo (pid) não existe" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Sinal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Concluído" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Parado" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Parado(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Executando" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Concluído(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Fim da execução com status %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Status desconhecido" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(imagem do núcleo gravada)" -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "`setpgid' filho (%ld para %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: o pid %ld não é um processo filho deste shell" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Sem registro do processo %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: trabalho %d está parado" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: o trabalho terminou" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: o trabalho %d já está em plano de fundo" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: ativando WNOHANG para evitar bloqueio indefinido" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s, linha %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (imagem do núcleo gravada)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(wd agora: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp falhou" -#: jobs.c:4104 +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: nenhum controle de trabalho em plano de fundo" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplina da linha" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "impossível definir grupo do processo do terminal (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "nenhum controle de trabalho neste shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: asserção falhou: %s\n" -#: lib/malloc/malloc.c:312 -#, fuzzy, c-format +#: lib/malloc/malloc.c:347 +#, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" @@ -1319,40 +1326,39 @@ msgstr "" "\r\n" "malloc: %s:%d: asserção remendada\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "desconhecido" -#: lib/malloc/malloc.c:801 -#, fuzzy +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: bloco socado em lista livre" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: chamado com argumento de bloco já liberado" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: chamado com argumento de bloco não alocado" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: esvaziamento de pilha detectado; mh_nbytes fora do limite" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: tamanhos de porções do início e do fim são diferentes" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: chamado com argumento de bloco não alocado" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: esvaziamento de pilha detectado; mh_nbytes fora do limite" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: tamanhos de porções do início e do fim são diferentes" @@ -1394,22 +1400,22 @@ msgstr "%s: especificação de caminho de rede inválida" msgid "network operations not supported" msgstr "sem suporte a operações de rede" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: impossível alterar locale (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: impossível alterar locale (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: impossível alterar locale (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: impossível alterar locale (%s): %s" @@ -1427,151 +1433,152 @@ msgstr "Você tem mensagem nova de correio em $_" msgid "The mail in %s has been read\n" msgstr "As mensagens de correio em %s foram lidas\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "erro de sintaxe: requer expressão aritmética" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "erro de sintaxe: `;' inesperado" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "erro de sintaxe: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo da instrução incorreto %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-document na linha %d delimitado pelo fim do arquivo (desejava `%s')" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instrução de redirecionamento `%d' fora do limite" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) excede SIZE_MAX (%lu): linha truncada" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "excedido o número máximo de here-document" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "encontrado EOF inesperado enquanto procurava por `%c' correspondente" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "encontrado EOF inesperado enquanto procurava por `]]'" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "erro de sintaxe na expressão condicional: token inesperado `%s'" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "erro de sintaxe na expressão condicional" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "token inesperado `%s', esperava`)'" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "esperava `)'" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento inesperado `%s' para operador unário condicional" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para operador unário condicional" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "token inesperado `%s', esperava operador binário condicional" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "esperava operador binário condicional" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento inesperado `%s' para operador binário condicional" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para operador binário condicional" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "token inesperado `%c' em comando condicional" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "token inesperado `%s' em comando condicional" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "token inesperado %d em comando condicional" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "erro de sintaxe próximo ao token inesperado `%s'" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "erro de sintaxe próximo a `%s'" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "erro de sintaxe: fim prematuro do arquivo" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "erro de sintaxe" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use \"%s\" para sair do shell.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "encontrado EOF inesperado enquanto procurava por `)' correspondente" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: função `%s' não encontrada" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: possível loop de nova tentativa" # COMPSPEC é variável no código fonte, manter sem tradução para português. #: pcomplib.c:182 @@ -1598,90 +1605,94 @@ msgstr "xtrace_set: ponteiro de arquivo NULO" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': caractere de formato inválido" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "descritor de arquivo fora dos limites" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirecionamento ambíguo" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: impossível sobrescrever arquivo existente" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restrição: impossível redirecionar saída" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "impossível criar arquivo temporário para here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: impossível atribuir fd a variável" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "sem suporte a /dev/(tcp|udp)/máquina/porta sem rede" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "erro de redirecionamento: impossível duplicar fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "impossível localizar /tmp, por favor crie!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp deve ser um nome de diretório válido" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "modo de impressão bonita ignorada em shells interativos" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opção inválida" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "impossível definir uid para %d: uid efetivo %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "impossível definir gid para %d: gid efetivo %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "possível iniciar o depurador; modo de depuração desabilitado" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: É um diretório" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Eu não tenho nome!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versão %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1690,52 +1701,52 @@ msgstr "" "Utilização:\t%s [opção-longa-GNU] [opção] ...\n" "\t%s [opção-longa-GNU] [opção] arquivo-de-script ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "opções-longas-GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Opções do shell:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD or -c comando ou -O opção-shopt\t\t(somente para chamada)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ou -o opção\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Digite `%s -c \"help set\"' para mais informações sobre as opções do shell.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Digite `%s -c help' para mais informações sobre os comandos internos do " "shell.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Uso o comando `bashbug' para relatar erros.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "página do bash: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "Ajuda geral sobre uso de software GNU: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operação inválida" @@ -1909,106 +1920,110 @@ msgstr "Sinal desconhecido #" msgid "Unknown Signal #%d" msgstr "Sinal desconhecido #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "substituição incorreta: sem `%s' de fechamento em %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: impossível atribuir uma lista a um membro de um array" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "impossível criar `pipe' para a substituição do processo" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "impossível criar um processo filho para a substituição do processo" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "impossível abrir `pipe' %s para leitura" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "impossível abrir `pipe' %s para escrita" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "impossível duplicar `pipe' %s como descritor de arquivo (fd) %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "substituição incorreta: sem \"`\" de fechamento em %s" +msgstr "substituição de comando: byte nulo ignorado na entrada" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "impossível criar um `pipe' para substituição do comando" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "impossível criar um processo filho para substituição do comando" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute: impossível duplicar o `pipe' como descritor de arquivo " "(fd) 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: nome de variável inválido para referência de nome" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: substituição incorreta" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: expansão indireta inválida" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "%s: nome de variável inválido" -#: subst.c:6854 +#: subst.c:7056 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parâmetro não inicializado" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parâmetro nulo ou não inicializado" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expressão de substring < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substituição incorreta" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: impossível atribuir desta maneira" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" "versões futuras do shell vão forçar avaliação como um substituto aritmético" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substituição incorreta: sem \"`\" de fechamento em %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "sem correspondência: %s" @@ -2031,30 +2046,36 @@ msgstr "esperava `)'" msgid "`)' expected, found %s" msgstr "esperava `)', encontrado %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: esperava operador unário" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: esperava operador binário" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "faltando `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "número de sinal inválido" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" +"manipulador de trap: excedido o nível máximo de manipulador de captura (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: valor incorreto em trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2062,88 +2083,87 @@ msgstr "" "run_pending_traps: manipulador de sinal é SIG_DFL, enviando novamente %d (%" "s) para mim mesmo" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: sinal incorreto %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "erro ao importar a definição da função para `%s'" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "nível do shell (%d) muito grande, redefinindo para 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: nenhum contexto de função no atual escopo" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: a variável pode não ter um valor atribuído" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: nome de variável inválido para referência de nome" +msgstr "%s: atribuindo inteiro para referência de nome" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: nenhum contexto de função no escopo atual" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s possui a string de exportação nula" # exportstr é uma variável no código fonte do bash (arquivo variiables.c) -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "caractere inválido na %d na exportstr para %s" # exportstr é uma variável no código fonte do bash (arquivo variiables.c) -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "Sem `=' na exportstr para %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: cabeça de shell_variables não é um contexto de função" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nenhum contexto em no global_variables" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: cabeça de shell_variables não é um escopo de ambiente temporário" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: impossível abrir como ARQUIVO" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valor inválido para rastrear descritor de arquivo" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: valor de compatibilidade fora dos limites" #: version.c:46 version2.c:46 -#, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2015 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2166,22 +2186,22 @@ msgstr "Este é um software livre; você é livre para alterar e redistribuí-lo msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Há NENHUMA GARANTIA, na extensão permitida pela lei." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: impossível alocar %lu bytes (%lu bytes alocados)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: impossível alocar %lu bytes" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: impossível alocar %lu bytes (%lu bytes alocados)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: impossível alocar %lu bytes" @@ -2309,9 +2329,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [ESPEC-JOB ...] ou jobs -x COMANDO [ARGS]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [ESPEC-JOB ...]" +msgstr "disown [-h] [-ar] [ESPEC-JOB ... | pid ...]" #: builtins.c:134 msgid "" @@ -2394,8 +2413,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [MODO]" #: builtins.c:177 -msgid "wait [-n] [id ...]" -msgstr "wait [-n] [ID ...]" +msgid "wait [-fn] [id ...]" +msgstr "wait [-fn] [ID ...]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2488,11 +2507,11 @@ msgstr "printf [-v VAR] FORMATO [ARGUMENTOS]" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o OPÇÃO] [-A AÇÃO] [-G GLOBAL] [-W " +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPÇÃO] [-A AÇÃO] [-G GLOBAL] [-W " "LISTA-PALAVRAS] [-F FUNÇÃO] [-C COMANDO] [-X FILTRO] [-P PREFIXO] [-S " "SUFIXO] [NOME ...]" @@ -2506,8 +2525,8 @@ msgstr "" "[PALAVRA]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "compopt [-o|+o OPÇÃO] [-DE] [NOME ...]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o OPÇÃO] [-DEI] [NOME ...]" #: builtins.c:242 msgid "" @@ -2519,11 +2538,11 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -"readarray [-n NÚMERO] [-O ORIGEM] [-s NÚMERO] [-t] [-u FD] [-C CHAMADA] [-c " -"QUANTIDADE] [ARRAY]" +"readarray [-d DELIM] [-n NÚMERO] [-O ORIGEM] [-s NÚMERO] [-t] [-u FD] [-C " +"CHAMADA] [-c QUANTIDADE] [ARRAY]" # help alias #: builtins.c:256 @@ -2719,7 +2738,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Executa comandos internos (builtin) do shell.\n" " \n" @@ -2974,11 +2993,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3012,11 +3031,13 @@ msgstr "" " -a\tpara fazer NOMEs serem arrrays indexados (se houver suporte)\n" " -A\tpara fazer NOMEs serem arrrays associativos (se houver suporte)\n" " -i\tpara fazer NOMEs terem o atributo `integer'\n" -" -l\tpara converter NOMEs para minúsculo em sua atribuição\n" +" -l\tpara converter o valor de cada NOME para minúsculo em sua " +"atribuição\n" " -n\tfazer de NOME uma referência à variável chamada por seu valor\n" " -r\tpara fazer de NOMEs somente-leitura\n" " -t\tpara fazer NOMEs terem o atributo `trace'\n" -" -u\tpara converter NOMEs para maiúsculo em sua atribuição\n" +" -u\tpara converter o valor de cada NOME para maiúsculo em sua " +"atribuição\n" " -x\tpra fazer NOMEs exportar\n" " \n" " Usar `+' ao invés de `-' desliga o atributo dado.\n" @@ -3031,9 +3052,7 @@ msgstr "" " Retorna sucesso, a menos que uma opção inválida tenha sido fornecida ou\n" " ocorrer um erro de atribuição de variável." -# help typeset #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3041,7 +3060,7 @@ msgid "" msgstr "" "Define valores e atributos de variável.\n" " \n" -" Obsoleto. Veja `help declare'." +" Um sinônimo para `declare'. Veja `help declare'." # help local #: builtins.c:538 @@ -3075,6 +3094,7 @@ msgstr "" # help echo #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3103,6 +3123,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3138,7 +3164,7 @@ msgstr "" " Retorna sucesso, a menos que ocorra um erro de escrita." # help echo -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3161,7 +3187,7 @@ msgstr "" " Retorna sucesso, a menos que ocorra um erro de escrita." # help enable -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3215,7 +3241,7 @@ msgstr "" " ou ocorrer um erro." # help eval -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3235,7 +3261,7 @@ msgstr "" " Retorna status de saída do comando ou sucesso, se o comando for nulo." # help getopts -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3317,7 +3343,7 @@ msgstr "" " for encontrado ou ocorrer um erro." # help exec -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3359,7 +3385,7 @@ msgstr "" " erro no redirecionamento." # help exit -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3372,7 +3398,7 @@ msgstr "" " de saída é o mesmo do último comando executado." # help exit -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3386,7 +3412,7 @@ msgstr "" " se não for executada em um shell de login." # help fc -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3442,7 +3468,7 @@ msgstr "" " retorna não-zero." # help fg -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3464,7 +3490,7 @@ msgstr "" "erro." # help bg -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3488,7 +3514,7 @@ msgstr "" " habilitado ou ocorra um erro." # help hash -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3518,23 +3544,23 @@ msgstr "" " argumento for fornecido, exibe informação sobre comandos memorizados.\n" " \n" " Opções:\n" -" -d\t\t\tesquece a localização memorizada de cada NOME\n" -" -l\t\t\texibe em um formato que pode ser usado como entrada\n" +" -d\t\tesquece a localização memorizada de cada NOME\n" +" -l\t\texibe em um formato que pode ser usado como entrada\n" " -p CAMINHO\tusa CAMINHO como o caminho completo de NOME\n" -" -r\t\t\tesquece de todas as localizações memorizadas\n" -" -t\t\t\tmostra a localização memorizada de cada NOME, iniciando\n" -" \t\t\t\tcada localização com o NOME correspondente, se múltiplos\n" -" \t\t\t\tNOMEs forem fornecidos\n" +" -r\t\tesquece de todas as localizações memorizadas\n" +" -t\t\tmostra a localização memorizada de cada NOME, iniciando\n" +" \t\t\tcada localização com o NOME correspondente, se múltiplos\n" +" \t\t\tNOMEs forem fornecidos\n" " Argumentos:\n" -" NOME\t\t\tCada NOME é pesquisado em $PATH e adicionado à lista de\n" -" \t\t\t\tcomandos memorizados.\n" +" NOME\t\tCada NOME é pesquisado em $PATH e adicionado à lista de\n" +" \t\t\tcomandos memorizados.\n" " \n" " Status de saída:\n" " Retorna sucesso, a menos que NOME não seja encontrado ou uma opção\n" " inválida seja fornecida." # help help -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3549,7 +3575,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3574,9 +3600,7 @@ msgstr "" " Retorna sucesso, a menos que PADRÃO não seja encontrado ou uma opção\n" " inválida seja fornecida." -# help history -#: builtins.c:836 -#, fuzzy +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3585,7 +3609,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3616,18 +3641,21 @@ msgstr "" " últimas N entradas.\n" " \n" " Opções:\n" -" -c\t\t\tlimpa a lista de histórico ao excluir todas as entradas\n" -" -d POSIÇÃO\texclui a entrada de histórico na posição POSIÇÃO.\n" -" -a\t\t\tanexa linhas de histórico desta sessão no arquivo de\n" -" \t\t\t\thistórico\n" -" -n\t\t\tlê todas as linhas de histórico ainda não lidas do\n" -" \t\t\t\tarquivo de histórico\n" -" -r\t\t\tlê o histórico e anexa os conteúdos à lista de histórico\n" -" -w\t\t\tescreve o histórico atual para o arquivo de histórico e\n" -" \t\t\t\tanexa-os à lista de histórico \n" -" -p\t\t\texecuta expansão de histórico em cada ARG e exibe o\n" -" \t\t\t\tresultado sem armazená-lo na lista de histórico\n" -" -s\t\t\tanexa os ARGs à lista de histórico como uma única entrada\n" +" -c\t\tlimpa a lista de histórico ao excluir todas as entradas\n" +" -d POSIÇÃO\texclui a entrada de histórico na posição POSIÇÃO. " +"Posições\n" +"\t\t\tnegativas contam a partir do fim da lista de histórico\n" +" \n" +" -a\t\tanexa linhas de histórico desta sessão no arquivo de\n" +" \t\t\thistórico\n" +" -n\t\tlê todas as linhas de histórico ainda não lidas do\n" +" \t\t\tarquivo de histórico e anexa-os à lista de histórico\n" +" -r\t\tlê o histórico e anexa os conteúdos à lista de histórico\n" +" -w\t\tescreve o histórico atual para o arquivo de histórico\n" +" \n" +" -p\t\texecuta expansão de histórico em cada ARG e exibe o\n" +" \t\t\tresultado sem armazená-lo na lista de histórico\n" +" -s\t\tanexa os ARGs à lista de histórico como uma única entrada\n" " \n" " Se ARQUIVO for fornecido, ele é usado como o arquivo de histórico.\n" " Do contrário, se a variável HISTFILE tiver um valor, este será usado;\n" @@ -3643,7 +3671,7 @@ msgstr "" " ocorra um erro." # help jobs -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3689,7 +3717,7 @@ msgstr "" " ocorra um erro. Se -x for usado, retorna o status de saída do COMANDO." # help disown -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3721,8 +3749,7 @@ msgstr "" " sejam fornecidos." # help kill -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3756,6 +3783,7 @@ msgstr "" " -l\t\t\tlista os nomes dos sinais; se `-l' for acompanhado por\n" " \t\t\t\toutros argumentos, presume-se estes sejam números de\n" " \t\t\t\tsinais para os quais nomes deveriam ser listados\n" +" -L\t\t\tsinônimo de -l\n" " \n" " `Kill' é um comando interno do shell por duas razões: ele permite\n" " IDs de trabalho serem usados ao invés de IDs de processo e permite\n" @@ -3767,7 +3795,7 @@ msgstr "" " ocorra um erro." # help let -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3853,7 +3881,7 @@ msgstr "" " let retorna 0." # help read -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3874,7 +3902,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3923,7 +3951,7 @@ msgstr "" " variável array ARRAY, iniciando em zero\n" " -d DELIM continua até o primeiro caractere de DELIM ser lido, ao\n" " invés de nova linha\n" -" -e usa Readline para obter a linha em um shell interativo\n" +" -e usa Readline para obter a linha\n" " -i TEXTO usa TEXTO como o texto inicial para Readline\n" " -n NCHARS retorna após ler NCHARS caracteres, ao invés de esperar\n" " por uma nova linha, mas respeita um delimitador se " @@ -3960,7 +3988,7 @@ msgstr "" " arquivo inválido seja fornecido como argumento para -u." # help return -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3982,8 +4010,7 @@ msgstr "" " script." # help set -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4146,7 +4173,8 @@ msgstr "" " -P Se definida, não resolve links simbólicos ao sair de comandos, " "tais\n" " como `cd' (que altera o diretório atual).\n" -" -T Se definido, a armadilha DEBUG é herdada por funções do shell.\n" +" -T Se definido, a armadilha DEBUG e RETURN são herdadas por funções " +"do shell.\n" " -- Atribui quaisquer argumentos restantes aos parâmetros " "posicionais.\n" " Se não houver argumentos restantes, os parâmetros posicionais são\n" @@ -4168,7 +4196,7 @@ msgstr "" " Retorna sucesso, a menos que uma opção inválida seja fornecida." # help unset -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4209,7 +4237,7 @@ msgstr "" " um NOME seja somente-leitura." # help export -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4246,7 +4274,7 @@ msgstr "" " NOME seja inválido." # help readonly -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4286,7 +4314,7 @@ msgstr "" " NOME seja inválido." # help shift -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4306,7 +4334,7 @@ msgstr "" " Retorna sucesso, a menos que N seja negativo ou maior que $#." # help source -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4331,7 +4359,7 @@ msgstr "" " ARQUIVO não puder ser lido." # help suspend -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4357,7 +4385,7 @@ msgstr "" " ou ocorra um erro." # help test -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4527,7 +4555,7 @@ msgstr "" " avaliada como falsa ou um argumento inválido for informado." # help [ -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4540,7 +4568,7 @@ msgstr "" " argumento deve ser um `]' literal, para corresponder ao `[' que abriu." # help times -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4560,7 +4588,7 @@ msgstr "" " Sempre com sucesso." # help trap -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4641,7 +4669,7 @@ msgstr "" " uma opção inválida seja fornecida." # help type -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4698,7 +4726,7 @@ msgstr "" " deles não for encontrado." # help ulimit -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4793,7 +4821,7 @@ msgstr "" " ocorra um erro." # help umask -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4829,7 +4857,7 @@ msgstr "" " inválida seja fornecida." # help wait -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4837,13 +4865,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4860,12 +4890,16 @@ msgstr "" " Se a opção -n for fornecida, espera pelo próximo trabalho terminar e\n" " retorna seu status de trabalho.\n" " \n" +" Se a opção -f for fornecida, e o controle de trabalho estiver ativado,\n" +" espera o ID especificado terminar, em vez de esperar ele alterar o\n" +" status.\n" +" \n" " Status de saída:\n" " Retorna o status do último ID; falha, se ID for inválido ou uma opção\n" " inválida for fornecida." # help wait -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4891,7 +4925,7 @@ msgstr "" " inválida for fornecida." # help for -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4915,7 +4949,7 @@ msgstr "" " Retorna o status do último comando executado." # help for (( (?) -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4946,7 +4980,7 @@ msgstr "" " Retorna o status do último comando executado." # help select -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4984,7 +5018,7 @@ msgstr "" " Retorna o status do último comando executado." # help time -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5014,7 +5048,7 @@ msgstr "" " O status de retorno é o status retornado por LINHA-COMANDOS." # help case -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5033,7 +5067,7 @@ msgstr "" " Retorna o status do último comando executado." # help if -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5068,7 +5102,7 @@ msgstr "" " Retorna o status do último comando executado." # help while -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5087,7 +5121,7 @@ msgstr "" " Retorna o status do último comando executado." # help until -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5106,9 +5140,7 @@ msgstr "" " Status de saída:\n" " Retorna o status do último comando executado." -# help coproc -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5128,10 +5160,10 @@ msgstr "" " no shell em execução. O NOME padrão é \"COPROC\".\n" " \n" " Status de saída:\n" -" Retorna o status de saída de COMANDO." +" O comando coproc retorna um status de saída de 0." # help function -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5155,7 +5187,7 @@ msgstr "" " Retorna sucesso, a menos que NOME seja somente-leitura." # help -m { -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5173,7 +5205,7 @@ msgstr "" " Status de saída:\n" " Retorna o status do último comando executado." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5199,7 +5231,7 @@ msgstr "" " Retorna o status de um trabalho resumido." # help '((' -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5218,7 +5250,7 @@ msgstr "" " Retorna 1, se EXPRESSÃO for avaliada como 0; do contrário, retorna 0." # help '[' -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5271,7 +5303,7 @@ msgstr "" " 0 ou 1 dependendo do valor de EXPRESSÃO." # help variables -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5387,7 +5419,7 @@ msgstr "" " \t\t\t\thistórico.\n" # help pushd -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5447,7 +5479,7 @@ msgstr "" " a alteração de diretório falhar." # help popd -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5498,7 +5530,7 @@ msgstr "" " a alteração de diretório falhar." # help dirs -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5552,14 +5584,13 @@ msgstr "" " ocorrer um erro." # help shopt -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5575,8 +5606,8 @@ msgstr "" "Define e remove definições de opções de shell.\n" " \n" " Altera a configuração de cada opção shell NOME-OPÇÃO. Sem qualquer\n" -" argumento de opção, lista todos shell com uma indicação de se cada\n" -" uma está definida ou não.\n" +" argumento de opção, lista cada OPTNAME fornecido com uma indicação\n" +" de se cada uma está definida ou não.\n" " \n" " Opções:\n" " -o\trestringe NOME-OPÇÃO àqueles definidos para usar com `set -o'\n" @@ -5590,7 +5621,7 @@ msgstr "" " opção inválida for fornecida ou NOME-OPÇÃO estiver desabilitado." # help printf -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5660,7 +5691,8 @@ msgstr "" " ocorra um erro de escrita ou atribuição." # help complete -#: builtins.c:1953 +#: builtins.c:1961 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5678,10 +5710,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5702,9 +5738,13 @@ msgstr "" " \t\tsem qualquer especificação definida\n" " -E\taplica as completações e ações para tentativa de completar\n" " \t\tcomandos -- \"vazios\" em uma linha vazia\n" +" -I\taplica completações e ações para a palavra inicial (geralmente o\n" +" \t\tcomando)\n" " \n" " Ao tentar completar, as ações são fornecidas na ordem em que as opções\n" -" de letras de caixa alta são listadas acima. A opção -D tem precedência\n" +" de letras de caixa alta são listadas acima. Se várias opções forem " +"fornecidas,\n" +" a opção -D tem precedência sobre -E, e ambos têm precedência sobre -I.\n" " sobre -E.\n" " \n" " Status de saída:\n" @@ -5712,7 +5752,7 @@ msgstr "" " ocorra um erro." # help compgen -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5735,7 +5775,7 @@ msgstr "" " ocorra um erro." # help compopt -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -5750,6 +5790,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5776,6 +5817,7 @@ msgstr "" " \t-o OPÇÃO\tDefine a opção de completação OPÇÃO para cada NOME\n" " \t-D\t\tAltera opções para a completação de comando \"padrão\"\n" " \t-E\t\tAltera opções para a completação de comando \"vazio\"\n" +" \t-I\t\tAltera as opções para completação na palavra inicial\n" " \n" " Ao usar `+o', ao invés de `-o', desliga a opção especificada.\n" " \n" @@ -5793,7 +5835,7 @@ msgstr "" " NOME não tem uma especificação de completação definida." # help mapfile -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5876,7 +5918,7 @@ msgstr "" " somente leitura ou não for um array indexado." # help readarray -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5886,6 +5928,9 @@ msgstr "" " \n" " Um sinônimo para `mapfile'." +#~ msgid "Copyright (C) 2015 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2015 Free Software Foundation, Inc." + #~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." #~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." @@ -5900,10 +5945,362 @@ msgstr "" #~ msgid "false" #~ msgstr "false" +#~ msgid "disown [-h] [-ar] [jobspec ...]" +#~ msgstr "disown [-h] [-ar] [ESPEC-JOB ...]" + # não traduzir, este é um comando #~ msgid "times" #~ msgstr "times" +# help typeset +#~ msgid "" +#~ "Set variable values and attributes.\n" +#~ " \n" +#~ " Obsolete. See `help declare'." +#~ msgstr "" +#~ "Define valores e atributos de variável.\n" +#~ " \n" +#~ " Obsoleto. Veja `help declare'." + +# help history +#~ msgid "" +#~ "Display or manipulate the history list.\n" +#~ " \n" +#~ " Display the history list with line numbers, prefixing each modified\n" +#~ " entry with a `*'. An argument of N lists only the last N entries.\n" +#~ " \n" +#~ " Options:\n" +#~ " -c\tclear the history list by deleting all of the entries\n" +#~ " -d offset\tdelete the history entry at offset OFFSET.\n" +#~ " \n" +#~ " -a\tappend history lines from this session to the history file\n" +#~ " -n\tread all history lines not already read from the history file\n" +#~ " -r\tread the history file and append the contents to the history\n" +#~ " \t\tlist\n" +#~ " -w\twrite the current history to the history file\n" +#~ " \t\tand append them to the history list\n" +#~ " \n" +#~ " -p\tperform history expansion on each ARG and display the result\n" +#~ " \t\twithout storing it in the history list\n" +#~ " -s\tappend the ARGs to the history list as a single entry\n" +#~ " \n" +#~ " If FILENAME is given, it is used as the history file. Otherwise,\n" +#~ " if HISTFILE has a value, that is used, else ~/.bash_history.\n" +#~ " \n" +#~ " If the HISTTIMEFORMAT variable is set and not null, its value is " +#~ "used\n" +#~ " as a format string for strftime(3) to print the time stamp " +#~ "associated\n" +#~ " with each displayed history entry. No time stamps are printed " +#~ "otherwise.\n" +#~ " \n" +#~ " Exit Status:\n" +#~ " Returns success unless an invalid option is given or an error occurs." +#~ msgstr "" +#~ "Exibe ou manipula a lista de histórico.\n" +#~ " \n" +#~ " Exibe a lista de histórico com números de linhas, prefixando cada\n" +#~ " entrada modificada com um `*'. Um argumento de N lista apenas as\n" +#~ " últimas N entradas.\n" +#~ " \n" +#~ " Opções:\n" +#~ " -c\t\t\tlimpa a lista de histórico ao excluir todas as entradas\n" +#~ " -d POSIÇÃO\texclui a entrada de histórico na posição POSIÇÃO.\n" +#~ " -a\t\t\tanexa linhas de histórico desta sessão no arquivo de\n" +#~ " \t\t\t\thistórico\n" +#~ " -n\t\t\tlê todas as linhas de histórico ainda não lidas do\n" +#~ " \t\t\t\tarquivo de histórico\n" +#~ " -r\t\t\tlê o histórico e anexa os conteúdos à lista de histórico\n" +#~ " -w\t\t\tescreve o histórico atual para o arquivo de histórico e\n" +#~ " \t\t\t\tanexa-os à lista de histórico \n" +#~ " -p\t\t\texecuta expansão de histórico em cada ARG e exibe o\n" +#~ " \t\t\t\tresultado sem armazená-lo na lista de histórico\n" +#~ " -s\t\t\tanexa os ARGs à lista de histórico como uma única entrada\n" +#~ " \n" +#~ " Se ARQUIVO for fornecido, ele é usado como o arquivo de histórico.\n" +#~ " Do contrário, se a variável HISTFILE tiver um valor, este será " +#~ "usado;\n" +#~ " senão, usa de ~/.bash_history.\n" +#~ " \n" +#~ " Se a variável HISTTIMEFORMAT for definida e não for nula, seu valor " +#~ "é\n" +#~ " usado como uma string de formato para strftime(3) para mostrar a " +#~ "marca\n" +#~ " de tempo associada com cada entrada de histórico exibida. Do " +#~ "contrário,\n" +#~ " nenhuma marca de tempo é mostrada.\n" +#~ " \n" +#~ " Status de saída:\n" +#~ " Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +#~ " ocorra um erro." + +# help kill +#~ msgid "" +#~ "Send a signal to a job.\n" +#~ " \n" +#~ " Send the processes identified by PID or JOBSPEC the signal named by\n" +#~ " SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +#~ " SIGTERM is assumed.\n" +#~ " \n" +#~ " Options:\n" +#~ " -s sig\tSIG is a signal name\n" +#~ " -n sig\tSIG is a signal number\n" +#~ " -l\tlist the signal names; if arguments follow `-l' they are\n" +#~ " \t\tassumed to be signal numbers for which names should be listed\n" +#~ " \n" +#~ " Kill is a shell builtin for two reasons: it allows job IDs to be " +#~ "used\n" +#~ " instead of process IDs, and allows processes to be killed if the " +#~ "limit\n" +#~ " on processes that you can create is reached.\n" +#~ " \n" +#~ " Exit Status:\n" +#~ " Returns success unless an invalid option is given or an error occurs." +#~ msgstr "" +#~ "Envia um sinal para um trabalho.\n" +#~ "\n" +#~ " Envia aos processos identificados pelo PID ou pelo ESPEC-JOB o sinal\n" +#~ " informado por SIGSPEC ou SIGNUM. Se SIGSPEC e SIGNUM\n" +#~ " não estiverem presentes, então, SIGTERM é presumido.\n" +#~ " \n" +#~ " Opções:\n" +#~ " -s SIGSPEC\tSIGSPEC especifica o nome do sinal\n" +#~ " -n SIGNUM\t\tSIGNUM representa um número de sinal\n" +#~ " -l\t\t\tlista os nomes dos sinais; se `-l' for acompanhado por\n" +#~ " \t\t\t\toutros argumentos, presume-se estes sejam números de\n" +#~ " \t\t\t\tsinais para os quais nomes deveriam ser listados\n" +#~ " \n" +#~ " `Kill' é um comando interno do shell por duas razões: ele permite\n" +#~ " IDs de trabalho serem usados ao invés de IDs de processo e permite\n" +#~ " que processos sejam matados caso o limite de processos que você pode\n" +#~ " criar seja atingido.\n" +#~ " \n" +#~ " Status de saída:\n" +#~ " Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +#~ " ocorra um erro." + +# help set +#~ msgid "" +#~ "Set or unset values of shell options and positional parameters.\n" +#~ " \n" +#~ " Change the value of shell attributes and positional parameters, or\n" +#~ " display the names and values of shell variables.\n" +#~ " \n" +#~ " Options:\n" +#~ " -a Mark variables which are modified or created for export.\n" +#~ " -b Notify of job termination immediately.\n" +#~ " -e Exit immediately if a command exits with a non-zero status.\n" +#~ " -f Disable file name generation (globbing).\n" +#~ " -h Remember the location of commands as they are looked up.\n" +#~ " -k All assignment arguments are placed in the environment for a\n" +#~ " command, not just those that precede the command name.\n" +#~ " -m Job control is enabled.\n" +#~ " -n Read commands but do not execute them.\n" +#~ " -o option-name\n" +#~ " Set the variable corresponding to option-name:\n" +#~ " allexport same as -a\n" +#~ " braceexpand same as -B\n" +#~ " emacs use an emacs-style line editing interface\n" +#~ " errexit same as -e\n" +#~ " errtrace same as -E\n" +#~ " functrace same as -T\n" +#~ " hashall same as -h\n" +#~ " histexpand same as -H\n" +#~ " history enable command history\n" +#~ " ignoreeof the shell will not exit upon reading EOF\n" +#~ " interactive-comments\n" +#~ " allow comments to appear in interactive " +#~ "commands\n" +#~ " keyword same as -k\n" +#~ " monitor same as -m\n" +#~ " noclobber same as -C\n" +#~ " noexec same as -n\n" +#~ " noglob same as -f\n" +#~ " nolog currently accepted but ignored\n" +#~ " notify same as -b\n" +#~ " nounset same as -u\n" +#~ " onecmd same as -t\n" +#~ " physical same as -P\n" +#~ " pipefail the return value of a pipeline is the status " +#~ "of\n" +#~ " the last command to exit with a non-zero " +#~ "status,\n" +#~ " or zero if no command exited with a non-zero " +#~ "status\n" +#~ " posix change the behavior of bash where the default\n" +#~ " operation differs from the Posix standard to\n" +#~ " match the standard\n" +#~ " privileged same as -p\n" +#~ " verbose same as -v\n" +#~ " vi use a vi-style line editing interface\n" +#~ " xtrace same as -x\n" +#~ " -p Turned on whenever the real and effective user ids do not " +#~ "match.\n" +#~ " Disables processing of the $ENV file and importing of shell\n" +#~ " functions. Turning this option off causes the effective uid " +#~ "and\n" +#~ " gid to be set to the real uid and gid.\n" +#~ " -t Exit after reading and executing one command.\n" +#~ " -u Treat unset variables as an error when substituting.\n" +#~ " -v Print shell input lines as they are read.\n" +#~ " -x Print commands and their arguments as they are executed.\n" +#~ " -B the shell will perform brace expansion\n" +#~ " -C If set, disallow existing regular files to be overwritten\n" +#~ " by redirection of output.\n" +#~ " -E If set, the ERR trap is inherited by shell functions.\n" +#~ " -H Enable ! style history substitution. This flag is on\n" +#~ " by default when the shell is interactive.\n" +#~ " -P If set, do not resolve symbolic links when executing commands\n" +#~ " such as cd which change the current directory.\n" +#~ " -T If set, the DEBUG trap is inherited by shell functions.\n" +#~ " -- Assign any remaining arguments to the positional parameters.\n" +#~ " If there are no remaining arguments, the positional parameters\n" +#~ " are unset.\n" +#~ " - Assign any remaining arguments to the positional parameters.\n" +#~ " The -x and -v options are turned off.\n" +#~ " \n" +#~ " Using + rather than - causes these flags to be turned off. The\n" +#~ " flags can also be used upon invocation of the shell. The current\n" +#~ " set of flags may be found in $-. The remaining n ARGs are " +#~ "positional\n" +#~ " parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +#~ " ARGs are given, all shell variables are printed.\n" +#~ " \n" +#~ " Exit Status:\n" +#~ " Returns success unless an invalid option is given." +#~ msgstr "" +#~ "Define ou remove definição de valores das opções e dos parâmetros " +#~ "posicionais\n" +#~ "do shell:\n" +#~ " \n" +#~ " Altera o valor de opções e de parâmetros posicionais do shell ou " +#~ "mostra\n" +#~ " os nomes ou valores de variáveis shell.\n" +#~ " \n" +#~ " Opções:\n" +#~ " -a Marca variáveis, que foram modificadas ou criadas, para " +#~ "exportação.\n" +#~ " -b Notifica sobre terminação de trabalho imediatamente.\n" +#~ " -e Sai imediatamente se um comando sai com um status não-zero.\n" +#~ " -f Desabilita a geração de nome de arquivo (\"globbing\").\n" +#~ " -h Memoriza a localização de comandos à medida em que são " +#~ "procurados.\n" +#~ " -k Todos argumentos de atribuição são colocados no ambiente para " +#~ "um\n" +#~ " comando, e não apenas aqueles que precedem o nome do comando.\n" +#~ " -m Controle de trabalho está habilitado.\n" +#~ " -n Lê comandos, mas não os executa.\n" +#~ " -o NOME-OPÇÃO\n" +#~ " Define a variável correspondendo a NOME-OPÇÃO:\n" +#~ " allexport mesmo que -a\n" +#~ " braceexpand mesmo que -B\n" +#~ " emacs usa interface de edição de linha estilo Emacs\n" +#~ " errexit mesmo que -e\n" +#~ " errtrace mesmo que -E\n" +#~ " functrace mesmo que -T\n" +#~ " hashall mesmo que -h\n" +#~ " histexpand mesmo que -H\n" +#~ " history habilita histórico de comandos\n" +#~ " ignoreeof shell não vai sair após leitura de EOF\n" +#~ " interactive-comments\n" +#~ " permite mostrar comentários em comandos " +#~ "interativos\n" +#~ " keyword mesmo que -k\n" +#~ " monitor mesmo que -m\n" +#~ " noclobber mesmo que -C\n" +#~ " noexec mesmo que -n\n" +#~ " noglob mesmo que -f\n" +#~ " nolog atualmente aceito, mas ignorado\n" +#~ " notify mesmo que -b\n" +#~ " nounset mesmo que -u\n" +#~ " onecmd mesmo que -t\n" +#~ " physical mesmo que -P\n" +#~ " pipefail o valor de retorno de uma linha de comandos é " +#~ "o\n" +#~ " status do último comando a sair com status não-" +#~ "zero,\n" +#~ " ou zero se nenhum comando saiu com status não " +#~ "zero\n" +#~ " posix altera o comportamento do bash, onde a " +#~ "operação\n" +#~ " padrão diverge dos padrões do Posix para\n" +#~ " corresponder a estes padrões\n" +#~ " privileged mesmo que -p\n" +#~ " verbose mesmo que -v\n" +#~ " vi usa interface de edição de linha estilo vi\n" +#~ " xtrace mesmo que -x\n" +#~ " -p Ligado sempre que IDs de usuário real e efetivo não " +#~ "corresponderem.\n" +#~ " Desabilita processamento do arquivo $ENV e importação de " +#~ "funções da\n" +#~ " shell. Ao desligar essa opção, causa o uid e o gid efetivo " +#~ "serem\n" +#~ " os uid e gid reais.\n" +#~ " -t Sai após a leitura e execução de um comando.\n" +#~ " -u Trata limpeza (unset) de variáveis como um erro quando " +#~ "substituindo.\n" +#~ " -v Mostra linhas de entrada do shell na medida em que forem " +#~ "lidas.\n" +#~ " -x Mostra comandos e seus argumentos na medida em que forme " +#~ "executados.\n" +#~ " -B o shell vai realizar expansão de chaves\n" +#~ " -C Se definido, não permite arquivos normais existentes serem\n" +#~ " sobrescritos por redirecionamento da saída.\n" +#~ " -E Se definido, a armadilha ERR é herdada por funções do shell.\n" +#~ " -H Habilita substituição de histórico estilo \"!\". Essa " +#~ "sinalização está\n" +#~ " habilitada por padrão quando shell é interativa.\n" +#~ " -P Se definida, não resolve links simbólicos ao sair de comandos, " +#~ "tais\n" +#~ " como `cd' (que altera o diretório atual).\n" +#~ " -T Se definido, a armadilha DEBUG é herdada por funções do shell.\n" +#~ " -- Atribui quaisquer argumentos restantes aos parâmetros " +#~ "posicionais.\n" +#~ " Se não houver argumentos restantes, os parâmetros posicionais " +#~ "são\n" +#~ " limpos (unset).\n" +#~ " - Atribui quaisquer argumentos restantes aos parâmetros " +#~ "posicionais.\n" +#~ " As opções -x e -v são desligadas.\n" +#~ " \n" +#~ " Usar +, ao invés de -, causa essas sinalizações serem desligadas. As\n" +#~ " sinalizações também podem ser usadas por meio de chamada do shell. " +#~ "As\n" +#~ " sinalizações atualmente definidas podem ser encontradas em $-. Os n " +#~ "ARGs\n" +#~ " restantes são parâmetros posicionais e são atribuídos, em ordem, a " +#~ "$1, $2,\n" +#~ " .. $n. Se nenhuma ARG for fornecido, todas as variáveis shell são\n" +#~ " mostradas.\n" +#~ " \n" +#~ " Status de saída:\n" +#~ " Retorna sucesso, a menos que uma opção inválida seja fornecida." + +# help coproc +#~ msgid "" +#~ "Create a coprocess named NAME.\n" +#~ " \n" +#~ " Execute COMMAND asynchronously, with the standard output and " +#~ "standard\n" +#~ " input of the command connected via a pipe to file descriptors " +#~ "assigned\n" +#~ " to indices 0 and 1 of an array variable NAME in the executing shell.\n" +#~ " The default NAME is \"COPROC\".\n" +#~ " \n" +#~ " Exit Status:\n" +#~ " Returns the exit status of COMMAND." +#~ msgstr "" +#~ "Cria um coprocesso chamado NOME.\n" +#~ " \n" +#~ " Executa COMANDO assincronamente, com a saída padrão e entrada padrão\n" +#~ " do comando conectados via um `pipe' (redirecionamento) para " +#~ "descritores\n" +#~ " de arquivo atribuídos para índices 0 e 1 de uma variável array NOME\n" +#~ " no shell em execução. O NOME padrão é \"COPROC\".\n" +#~ " \n" +#~ " Status de saída:\n" +#~ " Retorna o status de saída de COMANDO." + #~ msgid "Missing `}'" #~ msgstr "Faltando `}'" @@ -7830,6 +8227,9 @@ msgstr "" #~ msgid "\t\twhen the argument to `cd' is not found in the current" #~ msgstr "\t\ta serem pesquisados quando o argumento para `cd' não for" +#~ msgid "\t\tdirectory." +#~ msgstr "\t\tencontrado no diretório atual." + #~ msgid "" #~ "HISTFILE The name of the file where your command history is stored." #~ msgstr "" diff --git a/po/ro.gmo b/po/ro.gmo index 5c7cb9a8b..572d64244 100644 Binary files a/po/ro.gmo and b/po/ro.gmo differ diff --git a/po/ro.po b/po/ro.po index 2b91db364..2daed94ed 100644 --- a/po/ro.po +++ b/po/ro.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 2.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" "PO-Revision-Date: 1997-08-17 18:42+0300\n" "Last-Translator: Eugen Hoanca \n" "Language-Team: Romanian \n" @@ -14,121 +14,121 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" "Language: ro\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "incluziune greºitã în interval" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:578 -#, fuzzy, c-format +#: arrayfunc.c:586 +#, c-format msgid "%s: invalid associative array key" -msgstr "%c%c: opþiune invalidã" +msgstr "" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nu se poate atribui cãtre index ne-numeric" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nu s-a putut crea: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 -#, fuzzy, c-format +#: builtins/alias.def:131 variables.c:1842 +#, c-format msgid "`%s': invalid alias name" -msgstr "%c%c: opþiune invalidã" +msgstr "" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, fuzzy, c-format msgid "%s: cannot read: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/bind.def:270 -#, fuzzy, c-format -msgid "`%s': cannot unbind" -msgstr "%s: comandã negãsitã" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, fuzzy, c-format msgid "`%s': unknown function name" msgstr "%s: funcþie doar în citire (readonly)" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "" -#: builtins/break.def:79 builtins/break.def:121 -#, fuzzy +#: builtins/bind.def:353 builtins/bind.def:368 +#, fuzzy, c-format +msgid "`%s': cannot unbind" +msgstr "%s: comandã negãsitã" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" -msgstr "logout" +msgstr "" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "" @@ -139,241 +139,240 @@ msgid "" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "prea mulþi parametri" -#: builtins/cd.def:336 +#: builtins/cd.def:341 #, fuzzy msgid "null directory" -msgstr "\t\tdirectorul curent." +msgstr "director superior." -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "" -#: builtins/common.c:102 -#, fuzzy, c-format +#: builtins/common.c:96 +#, c-format msgid "line %d: " -msgstr "slot %3d: " +msgstr "" -#: builtins/common.c:140 error.c:265 -#, fuzzy, c-format +#: builtins/common.c:134 error.c:264 +#, c-format msgid "warning: " -msgstr "în scriere" +msgstr "" -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "" -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, fuzzy, c-format msgid "%s: option requires an argument" msgstr "opþiunea necesitã un parametru: -" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "" -#: builtins/common.c:213 +#: builtins/common.c:207 #, fuzzy, c-format msgid "%s: not found" msgstr "%s: comandã negãsitã" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, fuzzy, c-format msgid "%s: invalid option" msgstr "%c%c: opþiune invalidã" -#: builtins/common.c:229 +#: builtins/common.c:223 #, fuzzy, c-format msgid "%s: invalid option name" msgstr "%c%c: opþiune invalidã" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, fuzzy, c-format msgid "`%s': not a valid identifier" msgstr "`%s' nu este un identificator valid" -#: builtins/common.c:246 +#: builtins/common.c:240 #, fuzzy msgid "invalid octal number" msgstr "numãr de semnal invalid" -#: builtins/common.c:248 +#: builtins/common.c:242 #, fuzzy msgid "invalid hex number" msgstr "numãr de semnal invalid" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 #, fuzzy msgid "invalid number" msgstr "numãr de semnal invalid" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: variabilã doar în citire" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 #, fuzzy msgid "argument" msgstr "se aºteaptã parametru" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "" -#: builtins/common.c:298 +#: builtins/common.c:292 #, fuzzy, c-format msgid "%s: no job control" msgstr "nici un control de job în acest shell" -#: builtins/common.c:300 +#: builtins/common.c:294 #, fuzzy msgid "no job control" msgstr "nici un control de job în acest shell" -#: builtins/common.c:310 +#: builtins/common.c:304 #, fuzzy, c-format msgid "%s: restricted" msgstr "%s: jobul a fost terminat" -#: builtins/common.c:312 -#, fuzzy +#: builtins/common.c:306 msgid "restricted" -msgstr "Terminat" +msgstr "" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "" -#: builtins/common.c:329 +#: builtins/common.c:323 #, fuzzy, c-format msgid "write error: %s" msgstr "eroare de legãturã (pipe): %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, fuzzy, c-format msgid "%s: ambiguous job spec" msgstr "%s: Redirectare ambiguã" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:127 +#: builtins/declare.def:132 #, fuzzy msgid "can only be used in a function" msgstr "poate fi folosit doar într-o funcþie, ºi face ca variabila NUME" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%c%c: opþiune invalidã" +msgstr "" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: funcþie doar în citire (readonly)" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, fuzzy, c-format msgid "%s: cannot destroy array variables in this way" msgstr "$%s: nu se poate asigna în acest mod" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -407,69 +406,69 @@ msgstr "" msgid "%s: cannot delete: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: este director" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, fuzzy, c-format msgid "%s: not a regular file" msgstr "%s: nu se poate executa fiºierul binar" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: nu se poate executa fiºierul binar" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, fuzzy, c-format msgid "%s: cannot execute: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, fuzzy, c-format msgid "logout\n" msgstr "logout" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "" -#: builtins/fc.def:269 +#: builtins/fc.def:265 #, fuzzy msgid "no command found" msgstr "%s: comandã negãsitã" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, fuzzy, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "" @@ -484,39 +483,38 @@ msgstr "op msgid "%s: option requires an argument -- %c\n" msgstr "opþiunea necesitã un parametru: -" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, fuzzy, c-format msgid "hits\tcommand\n" msgstr "ultima comandã." -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "" msgstr[1] "" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -#: builtins/help.def:226 +#: builtins/help.def:224 #, fuzzy, c-format msgid "%s: cannot open: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -528,20 +526,21 @@ msgid "" "\n" msgstr "" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%c%c: opþiune invalidã" +msgstr "" -#: builtins/history.def:375 +#: builtins/history.def:442 #, fuzzy, c-format msgid "%s: history expansion failed" msgstr "%s: se aºteaptã expresie întreagã (integer)" @@ -555,89 +554,88 @@ msgstr "%s: variabil msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:265 +#: builtins/kill.def:274 #, fuzzy msgid "Unknown error" msgstr "Eroare necunoscutã %d" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "se aºteaptã expresie" #: builtins/mapfile.def:178 -#, fuzzy, c-format +#, c-format msgid "%s: not an indexed array" -msgstr "%s: variabilã fãrã limitã" +msgstr "" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 -#, fuzzy, c-format +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format msgid "%s: invalid line count" -msgstr "%c%c: opþiune invalidã" +msgstr "" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, fuzzy, c-format msgid "%s: invalid array origin" -msgstr "%c%c: opþiune invalidã" +msgstr "%s:subscriere interval invalid" -#: builtins/mapfile.def:317 -#, fuzzy, c-format +#: builtins/mapfile.def:316 +#, c-format msgid "%s: invalid callback quantum" -msgstr "numãr de semnal invalid" +msgstr "" -#: builtins/mapfile.def:350 -#, fuzzy +#: builtins/mapfile.def:349 msgid "empty array variable name" -msgstr "%s: variabilã fãrã limitã" +msgstr "" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:467 -#, fuzzy, c-format +#: builtins/printf.def:475 +#, c-format msgid "`%c': invalid time format specification" -msgstr "%c%c: opþiune invalidã" +msgstr "" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -650,22 +648,22 @@ msgstr "director superior." #: builtins/pushd.def:360 #, fuzzy, c-format msgid "%s: invalid argument" -msgstr "%c%c: opþiune invalidã" +msgstr "%s necesitã un parametru" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 #, fuzzy msgid "" msgstr "\tnoul director de lucru curent." -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -689,7 +687,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -714,7 +712,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -740,41 +738,41 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:696 +#: builtins/read.def:733 #, fuzzy, c-format msgid "read error: %d: %s" msgstr "eroare de legãturã (pipe): %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:841 +#: builtins/set.def:852 #, fuzzy msgid "cannot simultaneously unset a function and a variable" msgstr "poate fi folosit doar într-o funcþie, ºi face ca variabila NUME" -#: builtins/set.def:888 +#: builtins/set.def:904 #, fuzzy, c-format msgid "%s: cannot unset" msgstr "%s: nu s-a putut crea: %s" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, fuzzy, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/set.def:922 +#: builtins/set.def:938 #, fuzzy, c-format msgid "%s: not an array variable" msgstr "%s: variabilã fãrã limitã" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, fuzzy, c-format msgid "%s: not a function" msgstr "%s: funcþie doar în citire (readonly)" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: nu s-a putut crea: %s" @@ -784,20 +782,20 @@ msgstr "%s: nu s-a putut crea: %s" msgid "shift count" msgstr "shift [n]" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "" -#: builtins/source.def:157 +#: builtins/source.def:154 #, fuzzy, c-format msgid "%s: file not found" msgstr "%s: comandã negãsitã" @@ -811,62 +809,62 @@ msgstr "" msgid "cannot suspend a login shell" msgstr "Ieºire dintr-un login al shell-ului." -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "" -#: builtins/type.def:276 +#: builtins/type.def:275 #, fuzzy, c-format msgid "%s is a function\n" msgstr "%s: funcþie doar în citire (readonly)" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, fuzzy, c-format msgid "`%c': bad command" msgstr "%c%c: opþiune invalidã" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, fuzzy, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 #, fuzzy msgid "limit" msgstr "limitã CPU" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, fuzzy, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nu s-a putut crea: %s" @@ -886,409 +884,418 @@ msgstr "" msgid "`%c': invalid symbolic mode character" msgstr "" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr "" -#: error.c:165 +#: error.c:164 #, fuzzy, c-format msgid "last command: %s\n" msgstr "ultima comandã." -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 #, fuzzy msgid "unknown command error" msgstr "Eroare necunoscutã %d" -#: error.c:464 +#: error.c:463 #, fuzzy msgid "bad command type" msgstr "ºi nume de comandã." -#: error.c:465 +#: error.c:464 #, fuzzy msgid "bad connector" msgstr "conector greºit `%d'" -#: error.c:466 +#: error.c:465 #, fuzzy msgid "bad jump" msgstr "Salt invalid %d" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: variabilã fãrã limitã" -#: eval.c:209 +#: eval.c:245 #, fuzzy, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "%ca expirat aºteptând introducere de date: auto-logout\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 #, fuzzy msgid "pipe error" msgstr "eroare de legãturã (pipe): %s" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: comandã negãsitã" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, fuzzy, c-format msgid "%s: %s: bad interpreter" msgstr "%s: este director" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: nu se poate executa fiºierul binar" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, fuzzy, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nu se poate duplica fd %d în fd 0: %s" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "nivel de recursivitate al expresiei depãºit" -#: expr.c:283 +#: expr.c:291 #, fuzzy msgid "recursion stack underflow" msgstr "Stivã recursivitate prea puþin folositã(underflow)" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "eroare de sintaxã în expresie " -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "s-a încercat asignare cãtre non-variabilã" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "eroare de sintaxã în expresie " + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "împãrþire la 0" -#: expr.c:542 +#: expr.c:591 #, fuzzy msgid "bug: bad expassign token" msgstr "bug: identificator(token) expassign greºit %d" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "`:' aºteptat dupã expresie condiþionalã" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "`)' lipsã" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 #, fuzzy msgid "syntax error: operand expected" msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1419 +#: expr.c:1510 #, fuzzy, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s: %s: %s (identificatorul erorii este \"%s\")\n" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "valoare prea mare pentru bazã" -#: expr.c:1546 +#: expr.c:1637 #, fuzzy, c-format msgid "%s: expression error\n" msgstr "eroare de redirectare" -#: general.c:68 +#: general.c:69 #, fuzzy msgid "getcwd: cannot access parent directories" msgstr "getwd: nu s-au putut accesa directoarele pãrinte" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" -#: input.c:271 +#: input.c:266 #, fuzzy, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "nu se poate aloca descriptor de fiºier nou pentru inputul bash din fd %d: %s" -#: input.c:279 +#: input.c:274 #, fuzzy, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "check_bash_input: buffer deja existent pentru fd nou %d" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1590 +#: jobs.c:1639 #, fuzzy, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: Nu existã pid-ul (%d)!\n" -#: jobs.c:1605 +#: jobs.c:1654 #, fuzzy, c-format msgid "Signal %d" msgstr "Semnal Necunoscut #%d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Finalizat" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Stopat" -#: jobs.c:1628 +#: jobs.c:1677 #, fuzzy, c-format msgid "Stopped(%s)" msgstr "Stopat" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "În rulare" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Finalizat(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Ieºire %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Stare necunoscutã" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:1760 +#: jobs.c:1809 #, fuzzy, c-format msgid " (wd: %s)" msgstr "(wd actual: %s)\n" -#: jobs.c:1985 +#: jobs.c:2037 #, fuzzy, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid copil (de la %d la %d) a întâlnit o eroare %d: %s\n" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, fuzzy, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "aºteptaþi: pid-ul %d nu este rezultat(child) al acestui shell" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: jobul a fost terminat" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3970 -#, fuzzy, c-format +#: jobs.c:4120 +#, c-format msgid "%s: line %d: " -msgstr "slot %3d: " +msgstr "" -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(wd actual: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 #, fuzzy msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs: getpgrp eºuat: %s" -#: jobs.c:4104 +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "" + +#: jobs.c:4263 #, fuzzy msgid "initialize_job_control: line discipline" msgstr "initialize_jobs: disciplinã linie: %s" -#: jobs.c:4114 +#: jobs.c:4273 #, fuzzy msgid "initialize_job_control: setpgid" msgstr "initialize_jobs: getpgrp eºuat: %s" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "nici un control de job în acest shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "necunoscut" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "" @@ -1330,25 +1337,25 @@ msgstr "" msgid "network operations not supported" msgstr "" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:259 -#, fuzzy, c-format +#: locale.c:272 +#, c-format msgid "setlocale: %s: cannot change locale (%s)" -msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" +msgstr "" -#: locale.c:261 -#, fuzzy, c-format +#: locale.c:274 +#, c-format msgid "setlocale: %s: cannot change locale (%s): %s" -msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" +msgstr "" #: mailcheck.c:439 msgid "You have mail in $_" @@ -1363,154 +1370,154 @@ msgstr "Ave msgid "The mail in %s has been read\n" msgstr "Mailul din %s a fost citit\n" -#: make_cmd.c:329 +#: make_cmd.c:317 #, fuzzy msgid "syntax error: arithmetic expression required" msgstr "eroare de sintaxã în expresie " -#: make_cmd.c:331 +#: make_cmd.c:319 #, fuzzy msgid "syntax error: `;' unexpected" msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat" -#: make_cmd.c:332 +#: make_cmd.c:320 #, fuzzy, c-format msgid "syntax error: `((%s))'" msgstr "eroare de sintaxã" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tip de instrucþiune greºit %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, fuzzy, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF brusc în cãutare dupã `%c'" -#: parse.y:4410 +#: parse.y:4606 #, fuzzy msgid "unexpected EOF while looking for `]]'" msgstr "EOF brusc în cãutare dupã `%c'" -#: parse.y:4415 +#: parse.y:4611 #, fuzzy, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "eroare de sintaxã neaºteptatã lângã `%s'" -#: parse.y:4419 +#: parse.y:4615 #, fuzzy msgid "syntax error in conditional expression" msgstr "eroare de sintaxã în expresie " -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4501 +#: parse.y:4697 #, fuzzy msgid "expected `)'" msgstr "se aºteaptã `)'" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4579 +#: parse.y:4775 #, fuzzy, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "%s: se aºteaptã operator binar" -#: parse.y:4583 +#: parse.y:4779 #, fuzzy msgid "conditional binary operator expected" msgstr "%s: se aºteaptã operator binar" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4620 +#: parse.y:4816 #, fuzzy, c-format msgid "unexpected token `%c' in conditional command" msgstr "`:' aºteptat dupã expresie condiþionalã" -#: parse.y:4623 +#: parse.y:4819 #, fuzzy, c-format msgid "unexpected token `%s' in conditional command" msgstr "`:' aºteptat dupã expresie condiþionalã" -#: parse.y:4627 +#: parse.y:4823 #, fuzzy, c-format msgid "unexpected token %d in conditional command" msgstr "`:' aºteptat dupã expresie condiþionalã" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "eroare de sintaxã neaºteptatã lângã `%s'" -#: parse.y:6014 +#: parse.y:6263 #, fuzzy, c-format msgid "syntax error near `%s'" msgstr "eroare de sintaxã neaºteptatã lângã `%s'" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "eroare de sintaxã" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Folosiþi \"%s\" pentru a pãrãsi shellul.\n" -#: parse.y:6248 +#: parse.y:6497 #, fuzzy msgid "unexpected EOF while looking for matching `)'" msgstr "EOF brusc în cãutare dupã `%c'" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1539,91 +1546,95 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "" -#: redir.c:178 +#: redir.c:174 #, fuzzy, c-format msgid "%s: ambiguous redirect" msgstr "%s: Redirectare ambiguã" -#: redir.c:182 +#: redir.c:178 #, fuzzy, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nu se poate accesa(clobber) fiºierul existent" -#: redir.c:187 +#: redir.c:183 #, fuzzy, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor" -#: redir.c:192 +#: redir.c:188 #, fuzzy, c-format msgid "cannot create temp file for here-document: %s" msgstr "nu pot face legãturã (pipe) pentru substituþia procesului: %s" -#: redir.c:196 +#: redir.c:192 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nu pot asigna listã membrului intervalului" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 #, fuzzy msgid "redirection error: cannot duplicate fd" msgstr "eroare de redirectare" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, fuzzy, c-format msgid "%c%c: invalid option" msgstr "%c%c: opþiune invalidã" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: este director" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Nu am nici un nume!" -#: shell.c:1930 +#: shell.c:1980 #, fuzzy, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU %s, versiunea %s\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1632,54 +1643,54 @@ msgstr "" "Folosire:\t%s [GNU opþiune lungã] [opþiune] ...\n" "\t%s [GNU opþiune lungã] [opþiune] fiºier script ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "opþiuni lungi GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Opþiuni ale shell-ului:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD sau -c comandã\t\t(doar invocaþie)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s sau -o opþiune\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Apãsaþi `%s -c \"set-ajutor\"' pentru mai multe informaþii despre opþiunile " "shell-ului.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Apãsaþi `%s -c ajutor' pentru mai multe informaþii despre comenzile interne " "ale shell-ului.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1853,108 +1864,113 @@ msgstr "Semnal Necunoscut #" msgid "Unknown Signal #%d" msgstr "Semnal Necunoscut #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, fuzzy, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "substituþie invalidã: nu existã '%s' în %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: nu pot asigna listã membrului intervalului" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 #, fuzzy msgid "cannot make pipe for process substitution" msgstr "nu pot face legãturã (pipe) pentru substituþia procesului: %s" -#: subst.c:5798 +#: subst.c:5851 #, fuzzy msgid "cannot make child for process substitution" msgstr "nu pot crea un proces copil pentru substituirea procesului: %s" -#: subst.c:5848 +#: subst.c:5920 #, fuzzy, c-format msgid "cannot open named pipe %s for reading" msgstr "nu pot deschide legãtura numitã %s pentru %s: %s" -#: subst.c:5850 +#: subst.c:5922 #, fuzzy, c-format msgid "cannot open named pipe %s for writing" msgstr "nu pot deschide legãtura numitã %s pentru %s: %s" -#: subst.c:5873 +#: subst.c:5945 #, fuzzy, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nu se poate duplica legãtura numitã %s ca fd %d: %s " -#: subst.c:5959 +#: subst.c:6062 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "substituþie invalidã: nu existã ')' de final în %s" -#: subst.c:6083 +#: subst.c:6190 #, fuzzy msgid "cannot make pipe for command substitution" msgstr "nu pot face legãturi(pipes) pentru substituþia de comenzi: %s" -#: subst.c:6127 +#: subst.c:6233 #, fuzzy msgid "cannot make child for command substitution" msgstr "nu pot crea un copil pentru substituþia de comenzi: %s" -#: subst.c:6153 +#: subst.c:6259 #, fuzzy msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: nu se poate duplica legãtura (pipe) ca fd 1: %s" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format -msgid "%s: bad substitution" -msgstr "%s: substituþie invalidã" - -#: subst.c:6800 -#, fuzzy, c-format msgid "%s: invalid indirect expansion" -msgstr "%c%c: opþiune invalidã" +msgstr "" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, fuzzy, c-format msgid "%s: invalid variable name" -msgstr "%c%c: opþiune invalidã" +msgstr "%s: variabilã fãrã limitã" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametru null sau nesetat" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametru null sau nesetat" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expresie subºir < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substituþie invalidã" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nu se poate asigna în acest mod" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:9349 +#: subst.c:10043 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substituþie invalidã: nu existã ')' de final în %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "" @@ -1977,113 +1993,118 @@ msgstr "se a msgid "`)' expected, found %s" msgstr "se aºteaptã `)', s-a primit %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: se aºteaptã operator unar" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: se aºteaptã operator binar" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "lipseºte ']'" -#: trap.c:224 +#: trap.c:216 #, fuzzy msgid "invalid signal number" msgstr "numãr de semnal invalid" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:447 +#: trap.c:470 #, fuzzy, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: Semnal invalid %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "eroare în importarea definiþiei funcþiei pentru '%s'" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2432 -#, fuzzy, c-format +#: variables.c:2674 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: nu pot asigna listã membrului intervalului" +msgstr "" -#: variables.c:3043 +#: variables.c:3453 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4218 +#: variables.c:4698 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parametru null sau nesetat" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5619 -#, fuzzy, c-format +#: variables.c:6272 +#, c-format msgid "%s: %s: cannot open as FILE" -msgstr "%s: nu s-a putut crea: %s" +msgstr "" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "" #: version.c:46 version2.c:46 -msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." msgstr "" #: version.c:47 version2.c:47 @@ -2105,25 +2126,25 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" -#: xmalloc.c:91 +#: xmalloc.c:93 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes" -msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)" +msgstr "%s: nu s-a putut crea: %s" -#: xmalloc.c:163 +#: xmalloc.c:165 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" -msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)" +msgstr "%s: nu s-a putut crea: %s" #: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" @@ -2355,8 +2376,8 @@ msgstr "umask [-S] [mod]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" -msgstr "wait [n]" +msgid "wait [-fn] [id ...]" +msgstr "echo [-n] [arg ...]" #: builtins.c:181 #, fuzzy @@ -2460,7 +2481,7 @@ msgstr "" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2473,8 +2494,8 @@ msgstr "" #: builtins.c:239 #, fuzzy -msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "type [-apt] nume [nume ...]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "unset [-f] [-v] [nume ...]" #: builtins.c:242 msgid "" @@ -2484,8 +2505,8 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" #: builtins.c:256 @@ -2593,7 +2614,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" #: builtins.c:369 @@ -2739,11 +2760,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2811,12 +2832,18 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2829,7 +2856,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2856,7 +2883,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2868,7 +2895,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -2909,7 +2936,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2932,7 +2959,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:709 +#: builtins.c:713 #, fuzzy msgid "" "Exit the shell.\n" @@ -2941,7 +2968,7 @@ msgid "" " is that of the last command executed." msgstr "Iese din shell cu starea lui N. Dacã N este omis, starea de ieºire" -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -2950,7 +2977,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2980,7 +3007,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -2992,7 +3019,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3006,7 +3033,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3030,7 +3057,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3045,14 +3072,14 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " "given." msgstr "" -#: builtins.c:836 +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3061,7 +3088,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3086,7 +3114,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3110,7 +3138,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3127,7 +3155,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:918 +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3150,7 +3178,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3195,7 +3223,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3216,7 +3244,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3247,7 +3275,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3259,7 +3287,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3345,7 +3373,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3367,7 +3395,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3386,7 +3414,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3407,7 +3435,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -3418,7 +3446,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3432,7 +3460,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -3446,7 +3474,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3529,7 +3557,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3537,7 +3565,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -3549,7 +3577,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -3593,7 +3621,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -3623,7 +3651,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -3672,7 +3700,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -3690,7 +3718,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3698,19 +3726,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3725,7 +3755,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3738,7 +3768,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -3755,7 +3785,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3775,7 +3805,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3791,7 +3821,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3802,7 +3832,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3823,7 +3853,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3834,7 +3864,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3845,7 +3875,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1653 +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3858,7 +3888,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -3872,7 +3902,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -3883,7 +3913,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -3897,7 +3927,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3908,7 +3938,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -3936,7 +3966,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3990,7 +4020,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -4021,7 +4051,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -4048,7 +4078,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -4077,14 +4107,13 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4098,7 +4127,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4137,7 +4166,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1953 +#: builtins.c:1961 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4155,16 +4184,20 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4177,7 +4210,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -4192,6 +4225,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -4208,7 +4242,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4250,34 +4284,13 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "times" -#~ msgstr "ori" - -#, fuzzy -#~ msgid "wait [pid]" -#~ msgstr "wait [n]" - -#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" - -#, fuzzy -#~ msgid "xrealloc: cannot allocate %lu bytes" -#~ msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" - -#, fuzzy -#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" - #~ msgid "Missing `}'" #~ msgstr "`}' lipsã" @@ -4332,6 +4345,9 @@ msgstr "" #~ msgid "You have entered %d (%d) items. The distribution is:\n" #~ msgstr "Aþi introdus %d (%d) elemente. Distribuþia este:\n" +#~ msgid "slot %3d: " +#~ msgstr "slot %3d: " + #~ msgid "" #~ msgstr "" @@ -4375,15 +4391,15 @@ msgstr "" #~ msgid "Bad code in sig.c: sigprocmask" #~ msgstr "Cod invalid în sig.c: sigprocmask" -#~ msgid "%s: bad array subscript" -#~ msgstr "%s:subscriere interval invalid" - #~ msgid "can't make pipes for process substitution: %s" #~ msgstr "nu pot face legãturi (pipes) pentru substituþia procesului: %s" #~ msgid "reading" #~ msgstr "în citire" +#~ msgid "writing" +#~ msgstr "în scriere" + #~ msgid "process substitution" #~ msgstr "substituire de proces" @@ -4410,6 +4426,9 @@ msgstr "" #~ msgid "[%s: bad subscript" #~ msgstr "[%s: subscripþie invalidã" +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" + #~ msgid "digits occur in two different argv-elements.\n" #~ msgstr "se regãsesc digiþi în douã elemente argv diferite.\n" @@ -4437,9 +4456,6 @@ msgstr "" #~ msgid "Unknown directive `%s'" #~ msgstr "Directivã necunoscutã '%s'" -#~ msgid "%s requires an argument" -#~ msgstr "%s necesitã un parametru" - #~ msgid "%s must be inside of a $BUILTIN block" #~ msgstr "%s trebuie sa fie înãuntrul unui bloc $BUILTIN" @@ -4461,9 +4477,15 @@ msgstr "" #~ msgid "mkbuiltins: Out of virtual memory!\n" #~ msgstr "mkbuiltins: Memorie virtualã plinã!\n" +#~ msgid ":" +#~ msgstr ":" + #~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]" #~ msgstr "read [-r] [-p prompt] [-a interval] [-e] [nume ...]" +#~ msgid "times" +#~ msgstr "ori" + #~ msgid "%[DIGITS | WORD] [&]" #~ msgstr "%[DIGIÞI | CUVÂNT] [&]" @@ -6323,6 +6345,9 @@ msgstr "" #~ "\t\tcãuta atunci când parametrii specificaþi comenzii `cd' nu sunt gãsiþi " #~ "în" +#~ msgid "\t\tdirectory." +#~ msgstr "\t\tdirectorul curent." + #~ msgid "" #~ "HISTFILE The name of the file where your command history is stored." #~ msgstr "" diff --git a/po/ru.gmo b/po/ru.gmo index 86ac1a6a3..821df4f76 100644 Binary files a/po/ru.gmo and b/po/ru.gmo differ diff --git a/po/ru.po b/po/ru.po index b42cd5d57..39b333e77 100644 --- a/po/ru.po +++ b/po/ru.po @@ -2,138 +2,139 @@ # Copyright (C) 2002 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Ruslan Batdalov , 2002. -# Pavel Maryanov , 2014. +# Pavel Maryanov , 2014, 2018. # msgid "" msgstr "" -"Project-Id-Version: bash 4.3-rc2\n" +"Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2014-10-13 17:51+0200\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2018-04-17 14:09+0300\n" "Last-Translator: Pavel Maryanov \n" -"Language-Team: Russian \n" +"Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Poedit 1.6.9\n" +"X-Generator: Poedit 2.0.6\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "неправильный индекс массива" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: удаляется атрибут nameref" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: не удаётся преобразовать индекс в ассоциативный массив" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" -msgstr "%s: недействительный ключ ассоциативного массива" +msgstr "%s: недопустимый ключ ассоциативного массива" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: не удаётся присвоить значение нечисловому индексу" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: необходимо использовать индекс при назначении ассоциативному массиву" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: не удаётся создать файл: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: не удаётся найти keymap для команды" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: первый непробельный символ не является «\"»" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "нет закрывающего «%c» в %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: отсутствует разделитель-двоеточие" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "расширение скобки: не удаётся выделить память для %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "расширение скобки: не удаётся выделить память для %d элементов" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "расширение скобки: не удалось выделить память для «%s»" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "«%s»: недопустимый псевдоним" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "редактирование строки не включено" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "«%s»: недопустимое название keymap" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: не удаётся прочитать файл: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "«%s»: не удаётся отменить привязку" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "«%s»: неизвестное название функции" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s не привязан ни к какой клавише.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s можно вызвать через " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: не удаётся отменить привязку" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "счётчик циклов" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "имеет значение только для циклов «for», «while» или «until»" @@ -147,234 +148,233 @@ msgstr "" " \n" " Без EXPR выполняет возврат " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "Не задана переменная HOME" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "слишком много аргументов" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "\t\tкаталоге." +msgstr "нулевой каталог" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "Не задана переменная OLDPWD" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "строка %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "предупреждение: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: использование: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: для параметра требуется аргумент" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: требуется числовой аргумент" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: не найден" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: недопустимый параметр" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: недопустимое название параметра" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "«%s»: это недопустимый идентификатор" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "недопустимое восьмеричное число" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "недопустимое шестнадцатеричное число" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "недопустимое число" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: недопустимое указание сигнала" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "«%s»: это не идентификатор процесса и не допустимый указатель задания" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: переменная только для чтения" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s за пределами диапазона" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "аргумент" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s за пределами диапазона" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: нет такого задания" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: нет управления заданиями" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "нет управления заданиями" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: ограниченный режим" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "ограниченный режим" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: это не не встроенная команда bash" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "ошибка записи: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "ошибка назначения атрибутов терминала: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "ошибка получения атрибутов терминала: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: ошибка определения текущего каталога: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: неоднозначный указатель задания" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" -msgstr "" +msgstr "справка отсутствует в этой версии" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: недопустимое название действия" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: нет определения завершения" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "предупреждение: параметр -F может работать не так, как ожидается" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "предупреждение: параметр -C может работать не так, как ожидается" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "сейчас не выполняет функцию завершения" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "можно использовать только внутри функции" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: ссылочная переменная не может быть массивом" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: переменные nameref, ссылающиеся сами на себя, не допускаются" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: круговая ссылка на имя" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: недопустимое название переменной для ссылки на имя" +msgstr "«%s»: недопустимое название переменной для ссылки на имя" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "«-f» нельзя использовать для создания функций" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: значение функции можно только считать" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "" +msgstr "%s: присвоение составного массива в кавычках устарело" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: переменные массива нельзя уничтожить таким образом" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: не удаётся преобразовать ассоциативный массив в индексированный" @@ -396,7 +396,7 @@ msgstr "не удаётся найти %s в общем объекте %s: %s" #: builtins/enable.def:387 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "" +msgstr "загрузка функции %s завершилась ошибкой (%d): не загружена" #: builtins/enable.def:512 #, c-format @@ -408,68 +408,68 @@ msgstr "%s: не загружается динамически" msgid "%s: cannot delete: %s" msgstr "%s: не удаётся удалить: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: это каталог" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: это не обычный файл" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: файл слишком велик" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: не удаётся запустить бинарный файл" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: не удаётся запустить: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "выход\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "не командный процессор login: используйте «exit»" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Есть остановленные задания.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Есть выполняемые задания.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "команда не найдена" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "указание журнала команд" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: не удаётся открыть временный файл: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "текущий" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "задание %d запущено без возможности управления" @@ -484,29 +484,28 @@ msgstr "%s: недопустимый параметр — %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: для параметра требуется аргумент — %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "хэширование отключено" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: таблица хэшей пустая\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "вызовы\tкоманда\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Команды, соответствующие ключевому слову «" msgstr[1] "Команды, соответствующие ключевым словам «" msgstr[2] "Команды, соответствующие ключевым словам «" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -514,12 +513,12 @@ msgstr "" "нет разделов справки, соответствующих «%s». Попробуйте ввести «help help» или " "«man -k %s» или «info %s»." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: не удаётся открыть файл: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -541,20 +540,21 @@ msgstr "" "отключена.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "нельзя использовать больше одного параметра -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "положение журнала команд" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: недопустимый аргумент" +msgstr "%s: недопустимая метка времени" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: не удалось расширить журнал команд" @@ -568,16 +568,16 @@ msgstr "%s: ошибка inlib" msgid "no other options allowed with `-x'" msgstr "с параметром «-x» нельзя указывать другие параметры" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: аргументами должны быть идентификаторы процессов или заданий" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Неизвестная ошибка" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "ожидается выражение" @@ -586,69 +586,69 @@ msgstr "ожидается выражение" msgid "%s: not an indexed array" msgstr "%s: это не индексированный массив" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: недопустимое указание дескриптора файла" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: invalid недопустимый дескриптор файла: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: недопустимое число строк" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: недопустимое начало массива" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: недопустимый квант обратного вызова" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "пустое имя переменной массива" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "требуется поддержка переменных массива" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "«%s»: отсутствует символ форматирования" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "«%c»: недопустимое указание формата времени" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "«%c»: недопустимый символ форматирования" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "предупреждение: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "ошибка анализа формата: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "отсутствует шестнадцатеричная цифра для \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "отсутствует цифра Юникода для \\%c" @@ -662,19 +662,19 @@ msgstr "отсутствует другой каталог" msgid "%s: invalid argument" msgstr "%s: недопустимый аргумент" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<отсутствует текущий каталог>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "стек каталогов пуст" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "индекс стека каталогов" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -716,7 +716,7 @@ msgstr "" " -N\tпоказать N-ю запись справа в списке каталогов,\n" "\tпоказанного при вызове без параметров, начиная с нуля." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -763,7 +763,7 @@ msgstr "" " \n" " Встроенная команда dirs показывает стек каталогов." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -806,62 +806,62 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: недопустимое указание тайм-аута" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "ошибка чтения: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "возврат можно выполнить только из функции или исходного скрипта" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "нельзя одновременно сбросить функцию и переменную" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: не удаётся выполнить сброс" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не удаётся выполнить сброс: %s доступен только для чтения" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: это не переменная массива" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: это не функция" -#: builtins/setattr.def:196 -#, fuzzy, c-format +#: builtins/setattr.def:194 +#, c-format msgid "%s: cannot export" -msgstr "%s: не удаётся выполнить сброс" +msgstr "%s: не удаётся экспортировать" #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "счётчик смещений" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "нельзя одновременно задать и сбросить параметры командного процессора" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: недопустимое название параметра командного процессора" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "требуется аргумент с именем файла" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: файл не найден" @@ -874,61 +874,61 @@ msgstr "не удаётся приостановить" msgid "cannot suspend a login shell" msgstr "не удаётся приостановить командный процессор login" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s — это псевдонимом для «%s»\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s — это ключевое слово командного процессора\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s — это функция\n" -#: builtins/type.def:300 -#, fuzzy, c-format +#: builtins/type.def:299 +#, c-format msgid "%s is a special shell builtin\n" -msgstr "%s — это встроенная команда bash\n" +msgstr "%s — это специальная встроенная команда bash\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s — это встроенная команда bash\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s является %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "для %s вычислен хэш (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: недопустимый аргумент ограничения" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "«%c»: недопустимая команда" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: не удаётся получить ограничение: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "ограничение" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: не удаётся изменить ограничение: %s" @@ -947,365 +947,375 @@ msgstr "«%c»: недопустимый оператор символьного msgid "`%c': invalid symbolic mode character" msgstr "«%c»: недопустимый знак символьного режима" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " строка " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "последняя команда: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Прерывание..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "ИНФО: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "неизвестная ошибка команды" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "неверный тип команды" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "неверный соединитель" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "ошибка перехода" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: не заданы границы переменной" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" -msgstr "\\aпревышено время ожидания ввода: auto-logout\n" +msgstr "\aпревышено время ожидания ввода: auto-logout\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "не удаётся перенаправить стандартный ввод из /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: «%c»: недопустимый символ форматирования" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] всё ещё существует" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "ошибка конвейера" -#: execute_cmd.c:4496 -#, fuzzy, c-format +#: execute_cmd.c:4671 +#, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "%s: достигнут максимальный уровень вложенности функций (%d)" +msgstr "eval: достигнут максимальный уровень вложенности eval (%d)" -#: execute_cmd.c:4508 -#, fuzzy, c-format +#: execute_cmd.c:4683 +#, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "%s: достигнут максимальный уровень вложенности функций (%d)" +msgstr "%s: достигнут максимальный уровень вложенности source (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: достигнут максимальный уровень вложенности функций (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" "%s: ограниченный режим: в названиях команд нельзя использовать косую черту «/»" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: команда не найдена" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: неверный интерпретатор" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: не удаётся запустить бинарный файл: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "«%s»: это специальная встроенная команда" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "не удаётся скопировать файловый дескриптор %d в %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "слишком много вложенных выражений" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "отрицательное переполнение стека вложенных выражений" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "синтаксическая ошибка в выражении" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "значение можно присвоить только переменной" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "синтаксическая ошибка в выражении" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "деление на 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "ошибка: недопустимый маркер присвоения выражения" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "в условном выражении должен быть символ «:»" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "экспонента меньше нуля" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "после предварительного инкремента или декремента ожидается идентификатор " -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "отсутствует символ «)»" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "синтаксическая ошибка: ожидается операнд" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "ошибка синтаксиса: недопустимый математический оператор" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (неверный маркер «%s»)" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "недопустимое математическое основание" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "слишком большое значение для основания" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: ошибка выражения\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: нет доступа к родительским каталогам" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не удаётся сбросить режим nodelay для файлового дескриптора %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "не удаётся выделить новый дескриптор для входных данных bash из файлового " "дескриптора %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: у нового файлового дескриптора %d уже есть буфер" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "идентификатор дочернего процесса %d принадлежит запущенному заданию %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "удаление остановленного задания %d с группой процесса %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: процесс %5ld (%s) в the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" "add_process: процесс с идентификатором %5ld (%s) помечен как всё ещё активный" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: нет процесса с таким идентификатором" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Завершён" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Остановлен" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Остановлен (%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Запущен" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Завершён (%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Выход %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Состояние неизвестно" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(стек памяти сброшен на диск) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (рабочий каталог: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "дочерний setpgid (%ld к %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" "wait: процесс %ld не является дочерним процессом этого командного процессора" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: нет записей процесса %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: задание %d остановлено" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: выполнение задания прервано" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: задание %d уже выполняется в фоновом режиме" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" "waitchld: включается WNOHANG, чтобы предотвратить появление неопределённого " "блока" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: строка %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (стек памяти сброшен на диск)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(рабочий каталог: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: ошибка вызова getpgrp " -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: дисциплина строки" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: дисциплина строки" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "не удаётся задать группу процесса терминала (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "этот командный процессор не может управлять заданиями" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: ошибка утверждения: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1314,43 +1324,43 @@ msgstr "" "\\r\n" "malloc: %s:%d: утверждение не удалось\\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "неизвестно" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: блок в списке свободных затёрт" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: вызван с аргументом уже освобождённого блока" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: вызван с аргументом невыделенного блока" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" "free: обнаружено отрицательное переполнение; mh_nbytes байт за пределами " "диапазона" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: размеры начального и конечного блока отличаются" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: вызван с аргументом невыделенного блока" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "realloc: обнаружено отрицательное переполнение; mh_nbytes байт за пределами " "диапазона" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: размеры начального и конечного блока отличаются" @@ -1392,22 +1402,22 @@ msgstr "%s: недопустимое указание сетевого пути" msgid "network operations not supported" msgstr "сетевые операции не поддерживаются" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: не удаётся изменить язык (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: не удаётся изменить язык (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: не удаётся изменить язык (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: не удаётся изменить язык (%s): %s" @@ -1425,152 +1435,154 @@ msgstr "Для вас есть почта в $_" msgid "The mail in %s has been read\n" msgstr "Сообщения в %s были прочитаны\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "синтаксическая ошибка: требуется математическое выражение" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "синтаксическая ошибка: ожидается «;»" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "синтаксическая ошибка: «((%s))»" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: недопустимый тип инструкции %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "блок here-document в строке %d разделён знаком конца файла (ожидался «%s»)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "make_redirection: инструкция перенаправления «%d» вышла за пределы диапазона" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) превысил SIZE_MAX (%lu): строка " +"обрезана" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" -msgstr "" +msgstr "достигнуто максимальное число переменных here-document" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "неожиданный конец файла во время поиска «%c»" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "неожиданный конец файла во время поиска «]]»" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "синтаксическая ошибка в условном выражении: неожиданный маркер «%s»" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "синтаксическая ошибка в условном выражении" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неожиданный маркер «%s», ожидался «)»" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "ожидается символ «)»" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неожиданный аргумент «%s» для условного унарного оператора" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "неожиданный аргумент для условного унарного оператора" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неожиданный маркер «%s», ожидается условный бинарный оператор" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "ожидается условный бинарный оператор" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неожиданный аргумент «%s» для условного бинарного оператора" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "неожиданный аргумент для условного бинарного оператора" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неожиданный маркер «%c» в условной команде" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неожиданный маркер «%s» в условной команде" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "неожиданный маркер %d в условной команде" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "синтаксическая ошибка рядом с неожиданным маркером «%s»" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "синтаксическая ошибка рядом с «%s»" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "синтаксическая ошибка: неожиданный конец файла" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "синтаксическая ошибка" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Для выхода из командного процессора используйте «%s».\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "неожиданный конец файла во время поиска «)»" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: функция «%s» не найдена" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: возможен бесконечный цикл повторов" #: pcomplib.c:182 #, c-format @@ -1596,90 +1608,94 @@ msgstr "xtrace_set: пустой указатель на файл" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: «%c»: недопустимый символ форматирования" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "файловый дескриптор за пределами диапазона" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: неоднозначное перенаправление" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: не удаётся перезаписать существующий файл" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ограниченный режим: не удаётся перенаправить вывод" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не удаётся создать временный файл для блока here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: не удаётся присвоить файловый дескриптор переменной" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port не поддерживается без сети" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "ошибка перенаправления: не удаётся создать копию файлового дескриптора" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "не удалось найти /tmp; создайте этот каталог" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp должен быть допустимым названием каталога" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: недопустимый параметр" -#: shell.c:1282 -#, fuzzy, c-format +#: shell.c:1299 +#, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "не удаётся сбросить режим nodelay для файлового дескриптора %d" +msgstr "не удаётся установить UID %d: эффективный UID %d" -#: shell.c:1289 -#, fuzzy, c-format +#: shell.c:1306 +#, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "не удаётся сбросить режим nodelay для файлового дескриптора %d" +msgstr "не удаётся установить GID %d: эффективный GID %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "не удаётся запустить отладчик: режим отладки отключён" -#: shell.c:1566 -#, fuzzy, c-format +#: shell.c:1608 +#, c-format msgid "%s: Is a directory" msgstr "%s: это каталог" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Не удаётся определить название" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, версия %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1688,54 +1704,55 @@ msgstr "" "Использование:\t%s [длинные параметры GNU] [параметры] ...\n" "\t\t%s [длинные параметры GNU] [параметры] файл_скрипта ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Длинные параметры GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Параметры командного процессора:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" "\t-irsD или -c команда или -O короткие_параметры\t\t(только при запуске)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s или -o параметр\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Для получения дополнительных сведений о параметрах командного процессора " "введите «%s -c \"help set\"».\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Для получения дополнительных сведений о встроенных командах введите «%s -c " "help».\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Для отправки сообщений об ошибках используйте команду «bashbug».\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "Домашняя страница bash: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" +"Общая справка по использованию программ GNU: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: недопустимая операция" @@ -1909,94 +1926,98 @@ msgstr "Неизвестный номер сигнала" msgid "Unknown Signal #%d" msgstr "Неизвестный номер сигнала %d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "неверная подстановка: нет закрывающей «%s» в %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: не удаётся присвоить список элементу массива" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "не удаётся создать конвейер для подстановки процесса" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "не удаётся создать дочерний процесс для подстановки" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "не удаётся открыть именованный конвейер %s для чтения" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "не удаётся открыть именованный конвейер %s для записи" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" "не удаётся скопировать именованный конвейер %s в файловый дескриптор %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "неверная подстановка: нет закрывающей «`» в %s" +msgstr "подстановка команды: во входных данных проигнорирован нулевой байт" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "не удаётся создать конвейер для подстановки команды" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "не удаётся создать дочерний процесс для подстановки команды" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute: не удаётся скопировать конвейер в файловый дескриптор 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: недопустимое название переменной для ссылки на имя" -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format -msgid "%s: bad substitution" -msgstr "%s: неверная подстановка" - -#: subst.c:6800 -#, fuzzy, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: недопустимое число строк" +msgstr "%s: недопустимое непрямое раскрытие" -#: subst.c:6807 -#, fuzzy, c-format +#: subst.c:6840 subst.c:6987 +#, c-format msgid "%s: invalid variable name" -msgstr "«%s»: недопустимый псевдоним" +msgstr "%s: недопустимое имя переменной" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: параметр не задан или пустой" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: параметр не задан или пустой" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: заданное подстрокой выражение меньше нуля" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: недопустимая подстановка" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: такое присвоение невозможно" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2004,12 +2025,12 @@ msgstr "" "в будущих версиях командный процессор оценка будет выполняться как " "математическая подстановка" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "неверная подстановка: нет закрывающей «`» в %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "нет совпадений: %s" @@ -2032,30 +2053,35 @@ msgstr "ожидается символ «)»" msgid "`)' expected, found %s" msgstr "ожидается символ «)», обнаружено %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: ожидается унарный оператор" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: ожидается бинарный оператор" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "отсутствует символ «]»" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "недопустимый номер сигнала" -#: trap.c:387 +#: trap.c:320 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: достигнут максимальный уровень вложенности eval (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: неверное значение в trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2063,88 +2089,88 @@ msgstr "" "run_pending_traps: обработчик сигнала — SIG_DFL; повторная отправка %d (%s) " "самому себе" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: неверный сигнал %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "ошибка импорта определения функции для «%s»" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "слишком высокий уровень командного процессора (%d); сбрасывается до 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: в текущей области отсутствует контекст функции" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: переменной не может быть присвоено значение" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: недопустимое название переменной для ссылки на имя" +msgstr "%s: целое числе присваивается ссылке на имя" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: в текущей области отсутствует контекст функции" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s имеет пустую exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "недопустимый символ %d в exportstr для %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "отсутствует «=» в exportstr для %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: заголовок shell_variables не является контекстом функции" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: отсутствует контекст global_variables" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: заголовок shell_variables не является областью временного " "окружения" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: не удаётся открыть как ФАЙЛ" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: недопустимое значение для дескриптора файла трассировки" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: значение совместимости за пределами диапазона" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "© Free Software Foundation, Inc, 2013." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "© Free Software Foundation, Inc, 2016." #: version.c:47 version2.c:47 msgid "" @@ -2169,22 +2195,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "НИКАКАЯ ГАРАНТИЯ не предоставляется в пределах, допускаемых законом." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: не удаётся выделить %lu байт (выделено %lu байт)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: не удаётся выделить %lu байт" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: не удаётся выделить %lu байт (выделено %lu байт)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: не удаётся выделить %lu байт" @@ -2239,9 +2265,8 @@ msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [имя[=значение] ...]" #: builtins.c:80 -#, fuzzy msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] имя[=значение] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] имя[=значение] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2314,9 +2339,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [задание ...] или jobs -x команда [аргументы]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [задание ...]" +msgstr "disown [-h] [-ar] [задание ... | pid ...]" #: builtins.c:134 msgid "" @@ -2391,16 +2415,16 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] имя [имя ...]" #: builtins.c:171 -#, fuzzy msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [ограничение]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ограничение]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [режим]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [идентификатор ...]" #: builtins.c:181 @@ -2493,8 +2517,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v переменная] формат [аргументы]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2503,7 +2528,6 @@ msgstr "" "P префикс] [-S суффикс] [имя ...]" #: builtins.c:235 -#, fuzzy msgid "" "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" @@ -2513,28 +2537,28 @@ msgstr "" "суффикс] [слово]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o параметр] [-DE] [имя ...]" #: builtins.c:242 -#, fuzzy msgid "" "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" msgstr "" -"mapfile [-n число] [-O начало] [-s число] [-t] [-u fd] [-C callback] [-c " -"quantum] [массив]" +"mapfile [-d разделитель] [-n число] [-O начало] [-s число] [-t] [-u fd] [-C " +"callback] [-c quantum] [массив]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n число] [-O начало] [-s число] [-t] [-u fd] [-C callback] [-c " "quantum] [массив]" #: builtins.c:256 -#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2558,10 +2582,10 @@ msgstr "" " Если не указать аргументы, alias выводит список псевдонимов\n" " в виде «alias имя=значение» на стандартный вывод.\n" " \n" -" В противном случае каждому имени, для которого указано значение, " -"назначается псевдоним.\n" -" Если значение в конце содержит пробел, следующее слово будет\n" -" проверяться на замену псевдонима при его развёртывании.\n" +" В противном случае каждому имени, для которого указано значение,\n" +" назначается псевдоним. Если значение в конце содержит пробел,\n" +" следующее слово будет проверяться на замену псевдонима при его\n" +" развёртывании.\n" " \n" " Параметры:\n" " -p\tвыводит все определённые псевдонимы\n" @@ -2571,7 +2595,6 @@ msgstr "" " псевдоним." #: builtins.c:278 -#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" @@ -2580,10 +2603,10 @@ msgid "" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -"Удаляет каждое имя из списка определённых псевдонимов.\n" +"Удаляет все имена из списка определённых псевдонимов.\n" " \n" " Параметры:\n" -" -a\tудаляет все определения псевдонимов\n" +" -a\tудаляет все псевдонимы\n" " \n" " Возвращает успех, если имя связано с существующим псевдонимом." @@ -2710,6 +2733,7 @@ msgstr "" " Возвращает 0, если N не больше или равно 1." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2720,7 +2744,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Выполнение встроенных команд.\n" " \n" @@ -2978,11 +3002,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3109,6 +3133,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3149,7 +3179,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если не произошла ошибка записи." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3172,7 +3202,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если не произошла ошибка записи." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3226,7 +3256,7 @@ msgstr "" " Возвращает успех, если указанное имя не является встроенной командой или " "не произошла ошибка." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3245,7 +3275,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние выхода команды или успех, если команда пустая." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3329,7 +3359,7 @@ msgstr "" "достигнут\n" " конец параметров или возникла ошибка." -#: builtins.c:688 +#: builtins.c:692 #, fuzzy msgid "" "Replace the shell with the given command.\n" @@ -3372,7 +3402,7 @@ msgstr "" " Возвращает успех, если команда не была найдена или не возникла ошибка " "перенаправления." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3384,7 +3414,7 @@ msgstr "" " Закрывает командный процессор с состоянием N. Если N не указан,\n" " состоянием выхода будет состояние последней выполненной команды." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3397,7 +3427,7 @@ msgstr "" " Закрывает командный процессор login с состоянием выхода N. Возвращает\n" " ошибку, если выполняется не в командном процессоре login." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3454,7 +3484,7 @@ msgstr "" " Возвращает успех или состояние выполненной команды. В случае ошибки " "возвращает ненулевое состояние." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3475,7 +3505,7 @@ msgstr "" " Возвращает состояние команды, переведённой в интерактивный режим, или " "ошибку, если возникла ошибка." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3498,7 +3528,7 @@ msgstr "" " Возвращает успех, если не включено управление заданиями или не произошла " "ошибка." -#: builtins.c:787 +#: builtins.c:791 #, fuzzy msgid "" "Remember or display program locations.\n" @@ -3543,7 +3573,7 @@ msgstr "" " Возвращает успех, если команда была найдена или был указан допустимый " "параметр." -#: builtins.c:812 +#: builtins.c:816 #, fuzzy msgid "" "Display information about builtin commands.\n" @@ -3559,7 +3589,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3585,7 +3615,7 @@ msgstr "" " Возвращает успех, если был найден шаблон или был указан допустимый " "параметр." -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3595,7 +3625,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3655,7 +3686,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или не возникла " "ошибка." -#: builtins.c:872 +#: builtins.c:877 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3704,7 +3735,7 @@ msgstr "" "ошибка.\n" " Если указан параметр -x, возвращает состояние выхода команды." -#: builtins.c:899 +#: builtins.c:904 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3735,7 +3766,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр или задание." -#: builtins.c:918 +#: builtins.c:923 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3781,7 +3812,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или не возникла " "ошибка." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3871,7 +3902,7 @@ msgstr "" " Если последний АРГУМЕНТ имеет значение 0, let возвращает 1. В противном " "случае let возвращает 0." -#: builtins.c:987 +#: builtins.c:992 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3893,7 +3924,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3978,7 +4009,7 @@ msgstr "" "присвоения переменной\n" " или не был указан недопустимый файловый дескриптор как аргумент для -u." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3999,7 +4030,7 @@ msgstr "" " Возвращает N или ошибку, если командный процессор не выполняет функцию " "или скрипт." -#: builtins.c:1047 +#: builtins.c:1052 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4184,7 +4215,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр." -#: builtins.c:1132 +#: builtins.c:1137 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4227,7 +4258,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или указанное имя " "доступно для записи." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4261,7 +4292,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр или имя." -#: builtins.c:1173 +#: builtins.c:1178 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4302,7 +4333,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр или имя." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4320,7 +4351,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если N положительный или меньше $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4346,7 +4377,7 @@ msgstr "" "ошибку,\n" " если файл не удаётся прочитать." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4374,7 +4405,7 @@ msgstr "" " Возвращает успех, если не включено управление заданиями или не произошла " "ошибка." -#: builtins.c:1254 +#: builtins.c:1259 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4547,7 +4578,7 @@ msgstr "" "ложно\n" " или указан недопустимый аргумент." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4559,7 +4590,7 @@ msgstr "" " Это синоним встроенной команды test, но последним аргументом должна\n" " быть скобка «]», соответствующая открывающей «[»." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4579,7 +4610,7 @@ msgstr "" " Состояние выхода:\n" " Всегда возвращает успех." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4662,7 +4693,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый сигнал или параметр." -#: builtins.c:1393 +#: builtins.c:1398 #, fuzzy msgid "" "Display information about command type.\n" @@ -4723,7 +4754,7 @@ msgstr "" " Возвращает успех, если все указанные имена были найдены, или ошибку в " "противном случае." -#: builtins.c:1424 +#: builtins.c:1429 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4821,7 +4852,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или не возникла " "ошибка." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4858,7 +4889,8 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый РЕЖИМ или параметр." -#: builtins.c:1494 +#: builtins.c:1499 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4866,13 +4898,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4894,7 +4928,7 @@ msgstr "" " Возвращает состояние последнего идентификатора. Возвращает ошибку, если\n" " указан недопустимый идентификатор или параметр." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4920,7 +4954,7 @@ msgstr "" " Возвращает состояние последнего идентификатора. Возвращает ошибку, если\n" " указан недопустимый идентификатор или параметр." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4943,7 +4977,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4974,7 +5008,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5016,7 +5050,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5046,7 +5080,7 @@ msgstr "" " Состояние выхода:\n" " Возвращаемое состояние соответствует состоянию выхода конвейера." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5064,7 +5098,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5100,7 +5134,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5118,7 +5152,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5136,7 +5170,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1653 +#: builtins.c:1661 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5161,7 +5195,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние выхода команды." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5186,7 +5220,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если переменная ИМЯ доступно для записи." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5205,7 +5239,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5231,7 +5265,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние возобновлённого задания." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5249,7 +5283,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает 1, если выражение равно 0, в противном случае возвращает 0." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5304,7 +5338,7 @@ msgstr "" " Состояние выхода:\n" " 0 или 1 в зависимости от значения выражения." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5416,7 +5450,7 @@ msgstr "" "команды,\n" " \t\tкоторые должны быть сохранены в журнале.\n" -#: builtins.c:1803 +#: builtins.c:1811 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5476,7 +5510,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или удалось\n" " перейти в каталог." -#: builtins.c:1837 +#: builtins.c:1845 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5527,7 +5561,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или удалось\n" " перейти в каталог." -#: builtins.c:1867 +#: builtins.c:1875 #, fuzzy msgid "" "Display directory stack.\n" @@ -5581,14 +5615,14 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или не возникла " "ошибка." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5620,7 +5654,7 @@ msgstr "" " Возвращает успех, если указанный параметр включён. Возвращает ошибку,\n" " если был указан недопустимый параметр или параметр отключён." -#: builtins.c:1919 +#: builtins.c:1927 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5695,7 +5729,7 @@ msgstr "" "ошибка\n" " записи или присвоения." -#: builtins.c:1953 +#: builtins.c:1961 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5714,10 +5748,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5747,7 +5785,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или не возникла " "ошибка." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5770,7 +5808,8 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или не возникла " "ошибка." -#: builtins.c:1996 +#: builtins.c:2006 +#, fuzzy msgid "" "Modify or display completion options.\n" " \n" @@ -5785,6 +5824,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5829,7 +5869,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или для имени\n" " определена спецификация завершения." -#: builtins.c:2026 +#: builtins.c:2037 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5908,7 +5948,7 @@ msgstr "" "доступен для записи\n" " и является индексированным." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5918,9 +5958,8 @@ msgstr "" " \n" " Синоним команды «mapfile»." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "© Free Software Foundation, Inc, 2013." +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "© Free Software Foundation, Inc, 2012." #~ msgid ":" #~ msgstr ":" @@ -5934,9 +5973,6 @@ msgstr "" #~ msgid "times" #~ msgstr "times" -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "© Free Software Foundation, Inc, 2012." - #~ msgid "Missing `}'" #~ msgstr "Пропущен символ `}'" diff --git a/po/sk.gmo b/po/sk.gmo index 366d2179b..f33d34c0a 100644 Binary files a/po/sk.gmo and b/po/sk.gmo differ diff --git a/po/sk.po b/po/sk.po index 702e7a5f2..1a50dd262 100644 --- a/po/sk.po +++ b/po/sk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" "PO-Revision-Date: 2011-03-16 21:22+0100\n" "Last-Translator: Ivan Masár \n" "Language-Team: Slovak \n" @@ -15,122 +15,123 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "chybný index poľa" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: nie je možné previesÅ¥ indexované pole na asociatívne" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: neplatný kľúč asociatívneho poľa" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nie je možné priradiÅ¥ nenumerickému indexu" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: pri priraďovaní asociatívnemu poľu je potrebné použiÅ¥ index" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nie je možné vytvoriÅ¥: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: nie je možné nájsÅ¥ klávesovú mapu pre príkaz" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: prvý znak (okrem bielych znakov) nie je „\"“" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "chýba zatvárajúca „%c“ v %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: chýba oddeľovač dvojbodka" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: neplatný názov aliasu" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "úpravy riadka nie sú zapnuté" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s“: neplatný názov klávesovej mapy" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: nie je možné prečítaÅ¥: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "„%s“: nie je možné zruÅ¡iÅ¥ väzbu (unbind)" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "„%s“: neznámy názov funkcie" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s nie je zviazaný (bind) s žiadnymi klávesmi.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s je možné vyvolaÅ¥ ako " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: nie je možné zruÅ¡iÅ¥ väzbu (unbind)" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "počet cyklov" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "dáva zmysel iba v cykle „for“, „while“ alebo „until“" @@ -144,234 +145,234 @@ msgstr "" " \n" " Bez EXPR, vracia " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME nebola nastavená" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "príliÅ¡ veľa argumentov" -#: builtins/cd.def:336 +#: builtins/cd.def:341 #, fuzzy msgid "null directory" msgstr "na nový vrchol zásobníka." -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD nebola nastavená" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "riadok %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "upozornenie: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: použitie " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: voľba vyžaduje argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: vyžaduje sa numerický argument" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: nenájdené" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: neplatná voľba" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: neplatný názov voľby" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: nie je platný identifikátor" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "neplatné osmičkové číslo" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "neplatné Å¡estnástkové číslo" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "neplatné číslo" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: neplatné určenie signálu" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s“: nie je pid ani platný Å¡pecifikátor úlohy" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: premenná len na čítanie" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s je mimo rozsahu" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s mimo rozsahu" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: taká úloha neexistuje" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: riadenie úloh nedostupné" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "riadenie úloh nedostupné" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: obmedzené" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "obmedzené" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: nie je vstavaný príkaz (builtin) shellu" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "chyba zapisovania: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "chyba pri nastavovaní atribútov terminálu: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "chyba pri zisÅ¥ovaní atribútov terminálu: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: chyba pri zisÅ¥ovaní aktuálneho adresára: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: nejednoznačné určenie úlohy" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: neplatný názov akcie" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: chýba Å¡pecifikácia dokončovania" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "upozornenie: voľba -F nemusí fungovaÅ¥ tak ako očakávate" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "upozornenie: voľba -C nemusí fungovaÅ¥ tak ako očakávate" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "momentálne sa nevykonáva funkcia doplňovania" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "je možné použiÅ¥ iba vo funkcii" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 -#, fuzzy, c-format +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 +#, c-format msgid "%s: circular name reference" -msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru" +msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru" +msgstr "„%s“: neplatný názov aliasu" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "nie je možné použiÅ¥ „-f“ pre tvorbu funkcií" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: funkcia iba na čítanie" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: nie je možné takto robiÅ¥ deÅ¡trukciu premenných polí" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: nie je možné previesÅ¥ asociatívne pole na indexované" @@ -405,68 +406,68 @@ msgstr "%s: nie je dynamicky načítané" msgid "%s: cannot delete: %s" msgstr "%s: nie je možné zmazaÅ¥: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: je adresár" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: nie je obyčajný súbor" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: súbor je príliÅ¡ veľký" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: nie je možné vykonaÅ¥ binárny súbor" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: nie je možné spustiÅ¥: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "odhlásenie\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "toto nie je login shell: použite „exit“" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Existujú zastavené úlohy.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Existujú bežiace úlohy.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "prákaz nenájdený" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "Å¡pecifikácia histórie" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: nie je možné otvoriÅ¥ odkladací súbor: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "aktuálny" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "úloha %d začala bez riadenia úloh" @@ -481,29 +482,28 @@ msgstr "%s: neplatná voľba -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: voľba vyžaduje argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "haÅ¡ovanie vypnuté" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: haÅ¡ovacia tabuľka je prázdna\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "použití\tpríkaz\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Príkazy shellu zodpovedajúce kľúčovému slovu „" msgstr[1] "Príkazy shellu zodpovedajúce kľúčovým slovám „" msgstr[2] "Príkazy shellu zodpovedajúce kľúčovým slovám „" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -511,12 +511,12 @@ msgstr "" "pre „%s“ neboli nájdené zodpovedajúce témy pomocníka.\n" "Skúste „help help“ alebo „man -k %s“ alebo „info %s“." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nie je možné otvoriÅ¥: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -537,20 +537,21 @@ msgstr "" "Hviezdička (*) vedľa názvu znamená, že príkaz je vypnutý.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "nie je možné použiÅ¥ viac ako jednu z volieb -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "poloha histórie" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: neplatný argument limitu" +msgstr "%s: neplatný názov voľby" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: rozšírenie histórie zlyhalo" @@ -564,16 +565,16 @@ msgstr "%s: inlib zlyhalo" msgid "no other options allowed with `-x'" msgstr "iné voľby prípustné s „-x“" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenty musia byÅ¥ ID procesov alebo úloh" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Neznáma chyba" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "očakával sa výraz" @@ -582,69 +583,69 @@ msgstr "očakával sa výraz" msgid "%s: not an indexed array" msgstr "%s: nie je indexované pole" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: neplatná Å¡pecifikácia popisovača súboru" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neplatný popisovač súboru: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: neplatný počet riadkov" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: neplatný začiatok poľa" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neplatné kvantum spätného volania" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "názov prázdnej premennej poľa" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "vyžaduje sa podpora premennej poľa" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "„%s“: chýba formátovací znak" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: neplatná Å¡pecifikácia formátu času" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: neplatný formátovací znak" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "upozornenie: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "chýba hexadecimálna číslica v \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "chýba číslica Unicode pre \\%c" @@ -658,19 +659,19 @@ msgstr "žiadny iný adresár" msgid "%s: invalid argument" msgstr "%s: neplatný argument limitu" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<žiadny aktuálny adresár>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "zásobník adresárov je prázdny" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "index zásobníka adresárov" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -712,7 +713,7 @@ msgstr "" " -N\tzobrazuje N-tú položku počítajúc sprava zoznamu, ktorý zobrazuje\n" " \tdirs vyvolaný bez volieb, počínajúc nulou." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -756,7 +757,7 @@ msgstr "" " \n" " Zásobník adresárov môžete zobraziÅ¥ vstavaným príkazom „dirs“." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -800,42 +801,42 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: neplatná Å¡pecifikácia expirácie (timeout)" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "chyba pri čítaní: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "návrat („return“) je možné vykonaÅ¥ iba z funkcie alebo skriptu vyvolaného " "pomocou „source“" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "nie je možné zároveň zruÅ¡iÅ¥ funkciu a premennú" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: nie je možné zruÅ¡iÅ¥" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nie je možné zruÅ¡iÅ¥: len na čítanie %s" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: nie je premenná poľa" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: nie je funkcia" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: nie je možné zruÅ¡iÅ¥" @@ -844,20 +845,20 @@ msgstr "%s: nie je možné zruÅ¡iÅ¥" msgid "shift count" msgstr "posun o" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "nie je možné zároveň nastaviÅ¥ aj zruÅ¡iÅ¥ voľby shellu" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: neplatný názov voľby shellu" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "vyžaduje sa argument názov súboru" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: súbor sa nepodarilo nájsÅ¥" @@ -870,61 +871,61 @@ msgstr "nie je možné suspendovaÅ¥" msgid "cannot suspend a login shell" msgstr "nie je možné suspendovaÅ¥ login shell" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s má alias „%s“\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s je kľúčové slovo shellu\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s je funkcia\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s je vstavaný príkaz (builtin) shellu\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s je vstavaný príkaz (builtin) shellu\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s je %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s je haÅ¡ovaný (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: neplatný argument limitu" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "„%c“: chybný príkaz" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nie je možné zistiÅ¥ limit: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "obmedzenie" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nie je možné zmeniÅ¥ limit: %s" @@ -943,357 +944,367 @@ msgstr "„%c“: neplatný operátor symbolického režimu" msgid "`%c': invalid symbolic mode character" msgstr "„%c“: neplatný znak symbolického režimu" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " riadok " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "posledný príkaz: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Ruší sa..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "chyba neznámeho príkazu" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "chybný typ príkazu" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "chybný konektor" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "chybný skok" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: neviazaná premenná" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\ačas vyprÅ¡al pri čakaní na vstup: automatické odhlásenie\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "nie je možné presmerovaÅ¥ Å¡tandardný vstup z /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c“: neplatný formátovácí znak" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "chyba rúry" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: obmedzené: nie jemožné uviesÅ¥ „/“ v názvoch príkazov" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: príkaz nenájdený" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: chybný interpreter" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: nie je možné vykonaÅ¥ binárny súbor" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s je vstavaný príkaz (builtin) shellu\n" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nie je možné duplikovaÅ¥ fd %d na fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "bola prekročená úroveň rekurzie výrazu" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "podtečenie zásobníka rekurzie" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "chyba syntaxe vo výraze" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "pokus o priradenie mimo premennej" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "chyba syntaxe vo výraze" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "delenie nulou" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "chyba: chybný expassign token" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "pre podmienený výraz sa očakáva „:“" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "exponent menší ako 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "po pre-inkrementácii alebo pre-dekrementácii sa očakáva identifikátor" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "chýba „)“" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "chyba syntaxe: očakáva sa operand" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "chyba syntaxe: neplatný aritmetický operátor" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (chybný token je „%s”)" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "neplatný aritmetický základ" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "hodnota je ako základ príliÅ¡ veľká" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: chyba výrazu\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: nie je možné pristupovaÅ¥ k rodičovským adresárom" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nie j emožné resetovaÅ¥ nodelay režim fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "nie je možné alokovaÅ¥ nový popisovač súboru pre vstup bashu z fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: bufer už existuje pre nový fd %d" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp rúra" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "pid %d získaný pomocou fork sa vyskytuje v bežiacej úlohe %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "mažem zastavenú úlohu %d so skupinou procesu %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) v the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) je stále označený ako živý" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: taký pid neexistuje" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Signál %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Hotovo" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Zastavené" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Zastavené(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Beží" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Hotovo(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Ukončenie %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Neznámy stav" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(bol uložený výpis pamäte) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid detského procesu (%ld to %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld nie je dieÅ¥a tohto shellu" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Neexistuje záznam o procese %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: úloha %d je zastavená" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: úloha skončila" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: úloha %d už je v pozadí" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: zapína sa WNOHANG aby sme sa vyhli neurčitému blokovaniu" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: riadok %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (bol uložený výpis pamäte)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(wd teraz: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: funkcia getpgrp zlyhala" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: riadkový systém" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: riadkový systém" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nie je možné nastaviÅ¥ skupinu procesu terminálu (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "v tomto shelli nie je riadenie úloh" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: zlyhal predpoklad: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1302,39 +1313,39 @@ msgstr "" "\r\n" "malloc: %s:%d: zbabraný predpoklad\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "neznámy" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: blok na zozname voľných zaprataný" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: zavolaný s argumentom už uvoľneného bloku" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: zavolaný s argumentom nealokovaného bloku" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: bolo detekované podtečenie; mh_nbytes mimo rozsahu" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: veľkosti začiatočného a konečného bloku (chunk) sa líšia" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: zavolaný s argumentom nealokovaného bloku" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: bolo detekované podtečenie; mh_nbytes mimo rozsahu" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: veľkosti začiatočného a konečného bloku (chunk) sa líšia" @@ -1376,22 +1387,22 @@ msgstr "%s: chybná Å¡pecifikácia sieÅ¥ovej cesty" msgid "network operations not supported" msgstr "sieÅ¥ové operácie nie sú podporované" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: nemožno zmeniÅ¥ locale (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: nemožno zmeniÅ¥ locale (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: nie je možné zmeniÅ¥ locale (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: nie je možné zmeniÅ¥ locale (%s): %s" @@ -1409,148 +1420,148 @@ msgstr "Máte novú poÅ¡tu v súbore $_" msgid "The mail in %s has been read\n" msgstr "PoÅ¡ta v súbore %s bola prečítaná\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "chyba syntaxe: vyžaduje sa aritmetický výraz" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "chyba syntaxe: neočakávaná „;“" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "chyba syntaxe: „((%s))“" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: chybný typ inÅ¡trukcie %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-document na riadku %d oddelený znakom konca riadku (očakávalo sa „%s”)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: inÅ¡trukcia presmerovania „%d“ mimo rozsahu" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "neočakávaný koniec súboru počas hľadania zodpovedajúceho „%c“" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "neočakávaný koniec súboru počas hľadania „]]“" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "chyba syntaxe v podmienečnom príkaze: neočakávaný token „%s“" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "chyba syntaxe v podmienečnom príkaze" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "neočakávaný token „%s“, očakávalo sa `)'" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "očakávalo sa `)'" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "neočakávaný argument „%s“ podmienečného unárneho operátora" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "neočakávaný argument podmienečného unárneho operátora" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "neočakávaný token „%s“, očakáva sa podmienečný binárny operátor" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "očakáva sa podmienečný binárny operátor" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "neočakávaný argument „%s“ v podmienečnom binárnom operátore" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "neočakávaný argument v podmienečnom binárnom operátore" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "neočakávaný token „%c“ v podmienečnom príkaze" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "neočakávaný token „%s“ v podmienečnom príkaze" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "neočakávaný token %d v podmienečnom príkaze" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "chyba syntaxe neďaleko neočakávaného tokenu „%s“" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "chyba syntaxe neďaleko „%s“" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "chyba syntaxe: neočakávaný koniec súboru" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "chyba syntaxe" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Na opustenie shellu použite „%s“.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "neočakávaný koniec súboru počas hľadania zodpovedajúceho „)“" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "dokončovanie: funkcia „%s“ nebola nájdená" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1579,90 +1590,94 @@ msgstr "xtrace_set: ukazovateľ súboru je NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: neplatný formátovací znak" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "popisovač súboru mimo rozsahu" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: nejednoznačné presmerovanie" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nie je možné prepísaÅ¥ existujúci súbor" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ombedzené: nie je možné presmerovaÅ¥ výstup" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "nie je možné vytvoriÅ¥ odkladací súbor pre here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nie je možné priradiÅ¥ popisovač súboru premennej" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nie je podporovaný bez podpory sietí" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "chyba presmerovania: nie je možné duplikovaÅ¥ fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "nenaÅ¡iel sa /tmp, vytvorte ho prosím!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp musí byÅ¥ platný názov adresára" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: neplatná voľba" -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "nie j emožné resetovaÅ¥ nodelay režim fd %d" -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "nie j emožné resetovaÅ¥ nodelay režim fd %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: je adresár" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Nemám meno!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, verzia %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1671,53 +1686,53 @@ msgstr "" "Použitie:\t%s [GNU dlhá voľba] [voľba] ...\n" "\t%s [GNU dlhá voľba] [voľba] súbor-skriptu ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU dlhé voľby:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Voľby shellu:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD alebo -c príkaz alebo -O krátka_voľba\t\t(iba vyvolanie)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s alebo -o voľba\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Napísaním „%s -c \"help set\"“ získate viac informácií o voľbách shellu.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Napísaním „%s -c help“ získate viac informácií o vstavaných príkazoch " "(builtins) shellu.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Na ohlasovanie chýb použite príkaz „bashbug“.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: neplatná operácia" @@ -1891,92 +1906,97 @@ msgstr "Neznáme číslo signálu" msgid "Unknown Signal #%d" msgstr "Neznámy signál #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "chybná substitúcia: chýba „%s“ v %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: nie je možné priradiÅ¥ zoznam položke poľa" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "nie je možné vytvoriÅ¥ rúru pre substitúciu procesov" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "nie je možné vytvoriÅ¥ potomka pre substitúciu procesov" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nie je možné otvoriÅ¥ pomenovanú rúru %s na čítanie" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "nie je možné otvoriÅ¥ pomenovanú rúru %s na zápis" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nie je možné duplikovaÅ¥ pomenovanú rúru %s ako fd %d" -#: subst.c:5959 +#: subst.c:6062 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "chybná substitúcia: : v reÅ¥azci %s chýba uzatvárajúci „`”" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "nie je možné vytvoriÅ¥ rúru pre substitúciu príkazov" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "nie je možné vytvoriÅ¥ potomka pre substitúciu príkazov" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: nie je možné duplikovaÅ¥ rúru ako fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: chybná substitúcia" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: neplatný počet riadkov" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "„%s“: neplatný názov aliasu" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter je null alebo nenastavený" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter je null alebo nenastavený" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: výraz podreÅ¥azca < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: chybná substitúcia" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nie je možné vykonaÅ¥ priradenie takýmto spôsobom" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1984,12 +2004,12 @@ msgstr "" "budúce verzie shellu budú vynucovaÅ¥ vyhodnocovanie ako aritmetickú " "substitúciu" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "chybná substitúcia: : v reÅ¥azci %s chýba uzatvárajúci „`”" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "bez zhody: %s" @@ -2012,114 +2032,119 @@ msgstr "očakávala sa „)“" msgid "`)' expected, found %s" msgstr "očakávala sa „)“, bolo nájdené %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: očakával sa unárny operátor" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: očakával sa binárny operátor" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "chýba „]“" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "neplatné číslo signálu" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: chybná hodnota v trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: obsluha signálu je SIG_DFL, znovu posielam %d (%s) sebe" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: chybný signál %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "chyba pri importe definície funkcie „%s“" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "úroveň shellu (%d) je príliÅ¡ vysoká, nastavujem späť na 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: v aktuálnom rozsahu sa nenachádza kontext funkcie" -#: variables.c:2432 +#: variables.c:2674 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: nie je možné priradiÅ¥ popisovač súboru premennej" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru" +msgstr "" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: v aktuálnom rozsahu sa nenachádza kontext funkcie" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s má null exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "neplatný znak %d v exportstr %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "žiadne „=“ v exportstr %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: hlavička shell_variables nie je kontext funkcie" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: chýba kontext global_variables" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: hlavička shell_variables nie je dočasný rozsah prostredia" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nemožno otvoriÅ¥ ako SÚBOR" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru" -#: variables.c:5669 +#: variables.c:6322 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s je mimo rozsahu" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." msgstr "Copyright (C) 2011 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2147,22 +2172,22 @@ msgstr "" "Nie sú poskytované ŽIADNE ZÁRUKY v rozsahu aký povoľuje\n" "aplikovateľné právo.\n" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: nie je možné alokovaÅ¥ %lu bajtov (%lu bajtov alokovaných)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: nie je možné alokovaÅ¥ %lu bajtov" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: nie je možné alokovaÅ¥ %lu bajtov (%lu bajtov alokovaných)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: nie je možné alokovaÅ¥ %lu bajtov" @@ -2382,13 +2407,13 @@ msgstr "umask [-p] [-S] [režim]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "wait [id]" #: builtins.c:181 #, fuzzy msgid "wait [pid ...]" -msgstr "wait [id]" +msgstr "wait [pid]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2476,8 +2501,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] formát [argumenty]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2496,7 +2522,8 @@ msgstr "" "prípona] [slovo]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o voľba] [-DE] [názov ...]" #: builtins.c:242 @@ -2509,9 +2536,10 @@ msgstr "" "[-c kvantum] [pole]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n počet] [-O začiatok] [-s počet] [-t] [-u fd] [-C " "spätné_volanie] [-c kvantum] [pole]" @@ -2688,6 +2716,7 @@ msgstr "" " Vráti 0 ak N nie je väčšie alebo rovné 1." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2698,7 +2727,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "VykonaÅ¥ vstavenú funkciu shellu.\n" " \n" @@ -2939,11 +2968,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3061,6 +3090,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3093,7 +3128,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nevyskytla sa chyba pri zápise." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3115,7 +3150,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nevyskytla sa chyba pri zápise." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3169,7 +3204,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak NÁZOV nie je vstavaná funkcia shellu a nevyskytla sa chyba." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3188,7 +3223,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu príkazu alebo 0 ak je príkaz prázdny." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3264,7 +3299,7 @@ msgstr "" " Vráti 0 ak je voľba nájdená; zlyhá po dosiahnutí konca reÅ¥azca volieb\n" " alebo ak sa vyskytne chyba." -#: builtins.c:688 +#: builtins.c:692 #, fuzzy msgid "" "Replace the shell with the given command.\n" @@ -3305,7 +3340,7 @@ msgstr "" " Vráti 0 ak sa nestane, že PRÍKAZ nebol nájdený a nevyskytne sa chyba\n" " presmerovania." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3317,7 +3352,7 @@ msgstr "" " Ukončí shell s návratovou hodnotou N. Ak sa N vynechá, návratová\n" " hodnota sa nastaví podľa stavu posledného vykonaného príkazu." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3330,7 +3365,7 @@ msgstr "" " Ukončí login shell s návratovou hodnotou N. Vráti chybu ak nie je\n" " spustený v login shelli." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3386,7 +3421,7 @@ msgstr "" " Vráti 0 alebo stav vykonaného príkazu; nenulovú hodnotu ak sa vyskytne\n" " chyba." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3406,7 +3441,7 @@ msgstr "" " Stav príkazu umiestneného do popredia; nenulovú hodnotu ak sa vyskytne\n" " chyba." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3427,7 +3462,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nie je riadenie úloh vypnuté a nevyskytne sa chyba." -#: builtins.c:787 +#: builtins.c:791 #, fuzzy msgid "" "Remember or display program locations.\n" @@ -3475,7 +3510,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že NÁZOV nebol nájdený a nebola zadaná\n" " neplatná voľba." -#: builtins.c:812 +#: builtins.c:816 #, fuzzy msgid "" "Display information about builtin commands.\n" @@ -3491,7 +3526,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3516,7 +3551,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že VZOR nebol nájdený a nebola zadaná\n" " neplatná voľba." -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3526,7 +3561,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3580,7 +3616,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:872 +#: builtins.c:877 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3624,7 +3660,7 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba.\n" " Ak je použitá voľba -x, vráti sa návratová hodnota PRÍKAZu." -#: builtins.c:899 +#: builtins.c:904 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3655,7 +3691,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná JOBSPEC." -#: builtins.c:918 +#: builtins.c:923 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3697,7 +3733,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3782,7 +3818,7 @@ msgstr "" " Návratová hodnota:\n" " Ak sa posledný ARG vyhodnotí na 0, let vráti 1; 0 inak sa vráti 0." -#: builtins.c:987 +#: builtins.c:992 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3804,7 +3840,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3877,7 +3913,7 @@ msgstr "" " Vráti 0 ak sa nenarazí pri čítaní nakoniec súboru, nevyprší čas na\n" " čítanie a ako argument -u nebol je zadaný neplatný popisovač." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3898,7 +3934,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti N alebo zlyhá ak shell nevykonáva funkciu či skript." -#: builtins.c:1047 +#: builtins.c:1052 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4070,7 +4106,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba." -#: builtins.c:1132 +#: builtins.c:1137 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4110,7 +4146,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je NÁZOV iba na čítanie a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4145,7 +4181,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je NÁZOV neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1173 +#: builtins.c:1178 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4185,7 +4221,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je NÁZOV neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4203,7 +4239,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nestalo, že je N záporné alebo väčšie ako $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4227,7 +4263,7 @@ msgstr "" " Vráti návratovú hodnotu posledného príkazu v SÚBORe; zlyhá ak nie je\n" " možné SÚBOR načítaÅ¥." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4251,7 +4287,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nestalo, že je vypnuté riadenie úloh a nevyskytla sa chyba." -#: builtins.c:1254 +#: builtins.c:1259 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4413,7 +4449,7 @@ msgstr "" " Vráti 0 ak VÝR vyhodnotí ako pravdivý; zlyhá ako sa VÝR vyhodnotí\n" " ako nepravdivý alebo je zadaný neplatný argument." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4425,7 +4461,7 @@ msgstr "" " Toto je synonymum vsatavanej funkcie „test“, ale posledný\n" " argument musí byÅ¥ literál „]“, ktorý uzatvára otvárajúcu „[“." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4444,7 +4480,7 @@ msgstr "" " Návratová hodnota:\n" " Vždy vráti 0." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4524,7 +4560,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je SIGSPEC neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1393 +#: builtins.c:1398 #, fuzzy msgid "" "Display information about command type.\n" @@ -4580,7 +4616,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak boli nájdené vÅ¡etky NÁZVY; zlyhá ak nie." -#: builtins.c:1424 +#: builtins.c:1429 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4670,7 +4706,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4704,7 +4740,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je REŽIM neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1494 +#: builtins.c:1499 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4713,13 +4749,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4736,7 +4774,7 @@ msgstr "" " Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná\n" " neplatná voľba." -#: builtins.c:1515 +#: builtins.c:1523 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4762,7 +4800,7 @@ msgstr "" " Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná neplatná\n" " voľba." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4784,7 +4822,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4814,7 +4852,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4849,7 +4887,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4877,7 +4915,7 @@ msgstr "" " Návratová hodnota:\n" " Návratová hodnota je návratová hodnota RÚRY." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4895,7 +4933,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4932,7 +4970,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4950,7 +4988,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4968,7 +5006,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1653 +#: builtins.c:1661 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -4991,7 +5029,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu PRÍKAZu." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5016,7 +5054,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nestalo, že je NÁZOV iba na čítanie." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5034,7 +5072,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5058,7 +5096,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu obnovenej úlohy." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5076,7 +5114,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 1 ak sa VÝRAZ vyhodnotí na 0; inak vráti 0." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5124,7 +5162,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 alebo 1 v závislosti na hodnote VÝRAZu." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5228,7 +5266,7 @@ msgstr "" " HISTIGNORE\tBodkočiarkami oddelený zoznam vzoriek, ktoré\n" " \t\tsa používajú na rozhodovanie, či sa príkaz uloží do histórie.\n" -#: builtins.c:1803 +#: builtins.c:1811 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5285,7 +5323,7 @@ msgstr "" " Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n" " chyba pri zmene adresára." -#: builtins.c:1837 +#: builtins.c:1845 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5336,7 +5374,7 @@ msgstr "" " Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n" " chyba pri zmene adresára." -#: builtins.c:1867 +#: builtins.c:1875 #, fuzzy msgid "" "Display directory stack.\n" @@ -5388,14 +5426,14 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa chyba." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5426,7 +5464,7 @@ msgstr "" " Vráti 0 ak je OPTNAME zapnuté; zlyhá ak bola zadaná\n" " neplatná voľba alebo OPTNAME je vypnuté." -#: builtins.c:1919 +#: builtins.c:1927 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5491,7 +5529,7 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba pri\n" " zápise či priradení." -#: builtins.c:1953 +#: builtins.c:1961 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5510,10 +5548,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5540,7 +5582,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5560,7 +5602,8 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:1996 +#: builtins.c:2006 +#, fuzzy msgid "" "Modify or display completion options.\n" " \n" @@ -5575,6 +5618,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5616,7 +5660,7 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba a NÁZOV nemá definovanú\n" " Å¡pecifikáciu dopĺňania." -#: builtins.c:2026 +#: builtins.c:2037 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5691,7 +5735,7 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba a POLE nie je len na čítanie a\n" " nie je to indexované pole." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5701,9 +5745,15 @@ msgstr "" " \n" " Synonymum k „mapfile“." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Licencia GPLv2+: GNU GPL verzie 2 alebo novÅ¡ia http://gnu.org/licenses/" +#~ "gpl.html\n" #~ msgid ":" #~ msgstr ":" @@ -5717,23 +5767,6 @@ msgstr "" #~ msgid "times" #~ msgstr "-krát" -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." - -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" - -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Licencia GPLv2+: GNU GPL verzie 2 alebo novÅ¡ia http://gnu.org/licenses/" -#~ "gpl.html\n" - -#~ msgid "wait [pid]" -#~ msgstr "wait [pid]" - #~ msgid "" #~ ". With EXPR, returns\n" #~ " " diff --git a/po/sl.gmo b/po/sl.gmo index 52935ec88..696a4c385 100644 Binary files a/po/sl.gmo and b/po/sl.gmo differ diff --git a/po/sl.po b/po/sl.po index 9c23fad4f..664485610 100644 --- a/po/sl.po +++ b/po/sl.po @@ -1,139 +1,140 @@ -# Slovenian translation for bash. -# Copyright (C) 2012 Free Software Foundation, Inc. +# Slovenian translation of bash. +# Copyright (C) 2012 - 2013 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Klemen KoÅ¡ir , 2012. -# Andrej ŽnidarÅ¡ič , 2012. -# Damir JerovÅ¡ek , 2012. +# +# Damir JerovÅ¡ek , 2012 - 2013. +# Klemen KoÅ¡ir , 2012 - 2013. # msgid "" msgstr "" -"Project-Id-Version: bash 4.2\n" +"Project-Id-Version: bash-4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2012-05-29 16:17+0100\n" -"Last-Translator: Klemen KoÅ¡ir \n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2013-03-09 20:21+0100\n" +"Last-Translator: Klemen KoÅ¡ir \n" "Language-Team: Slovenian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sl\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" "%100==4 ? 3 : 0);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "slab podpis polja" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: ni mogoče pretvoriti zabeleženega polja v povezano polje" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: neveljaven ključ povezanega polja" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ni mogoče dodeliti v ne-Å¡tevilčno kazalo" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: treba je uporabiti podpis pri dodeljevanju povezanega polja" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ni mogoče ustvariti: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: ni mogoče najti tipkovne razvrstitve za ukaz" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: prvi znak brez presledka ni `\"'" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "brez zaključka `%c' v %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: manjka ločilnik dvopičja" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': neveljaven vzdevek" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "urejanje vrstic ni omogočeno" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': neveljavno ime tipkovne razvrstitve" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ni mogoče brati: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': ni mogoče odvezati" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': neznano ime funkcije" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s ni vezan na nobeno tipko.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s se lahko pokliče s pomočjo " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': ni mogoče odvezati" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "Å¡tevec zanke" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "smiselno samo v `for', `while', ali `until' zanki" @@ -147,234 +148,234 @@ msgstr "" " \n" " Brez EXPR vrne " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME ni nastavljen" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "preveč argumentov" -#: builtins/cd.def:336 +#: builtins/cd.def:341 #, fuzzy msgid "null directory" msgstr "ni druge mape" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD ni nastavljen" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "vrstica %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "opozorilo: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: uporaba: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: možnost zahteva argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: zahtevan je Å¡tevni argument" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: ni mogoče najti" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: neveljavna možnost" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: neveljavno ime možnosti" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': neveljavno določilo" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "neveljavno osmiÅ¡ko Å¡tevilo" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "neveljavno Å¡estnajstiÅ¡ko Å¡tevilo" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "neveljavno Å¡tevilo" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: neveljavno določilo signala" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': ni določilo opravila ali neveljavno določilo posla" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: spremenljivka le za branje" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s izven dosega" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s izven dosega" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: ni takÅ¡nega posla" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: ni nadzora posla" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "ni nadzora posla" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: omejeno" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "omejeno" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ni vgrajena lupina" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "napaka med pisanjem: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "napaka med nastavljanjem atributov terminala: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "napaka med pridobivanjem atributov terminala: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: napaka med pridobivanjem trenutne mape: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: dvoumno določilo posla" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: neveljavno ime dejanja" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: ni določila dopolnjevanja" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "Opozorilo: možnost -F morda ne bo delovala po pričakovanjih" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "Opozorilo: možnost -C morda ne bo delovala po pričakovanjih" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "trenutno se ne izvaja funkcija dopolnjevanja" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "se lahko uporabi samo v funkciji" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 -#, fuzzy, c-format +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 +#, c-format msgid "%s: circular name reference" -msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" +msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" +msgstr "`%s': neveljaven vzdevek" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "ni mogoče uporabiti `-f' za ustvarjanje funkcij" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: funkcija samo za branje" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: na ta način ni mogoče uničiti spremenljivk polja" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: ni mogoče pretvoriti povezanega polja v zabeleženo polje" @@ -408,68 +409,68 @@ msgstr "%s: ni dinamično naloženo" msgid "%s: cannot delete: %s" msgstr "%s: ni mogoče izbrisati: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: je mapa" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: ni običajna datoteka" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: datoteka je prevelika" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ni mogoče izvesti binarne datoteke" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: ni mogoče izvesti: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "odjava\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "ni prijavna lupina: uporabite `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Obstajajo ustavljeni posli.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Obstajajo posli, ki se izvajajo.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "najdenega ni nobenega ukaza" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "določilo zgodovine" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: ni mogoče odpreti začasne datoteke: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "trenutno" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "posel %d se je pričel brez nadzora" @@ -484,22 +485,21 @@ msgstr "%s: neveljavna možnost -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: možnost zahteva argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "razprÅ¡itev je onemogočena" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: razprÅ¡itvena razpredelnica je prazna\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "zadetki\tukaz\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Ključnih besed, ki se ujemajo z ukazi lupine `" @@ -507,7 +507,7 @@ msgstr[1] "Ključna beseda, ki se ujema z ukazi lupine `" msgstr[2] "Ključni besedi, ki se ujemata z ukazi lupine `" msgstr[3] "Ključne besede, ki se ujemajo z ukazi lupine `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -515,12 +515,12 @@ msgstr "" "nobena tema pomoči se ne ujema s `%s'. Poskusite `help help' ali `man -k %" "s' ali `info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ni mogoče odpreti: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -541,20 +541,21 @@ msgstr "" "Zvezdica (*) poleg imena pomeni, da je ukaz onemogočen.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "ni mogoče uporabiti več kot eno od -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "položaj zgodovine" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: neveljaven argument omejitve" +msgstr "%s: neveljavno ime možnosti" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: razÅ¡iritev zgodovine je spodletela" @@ -568,16 +569,16 @@ msgstr "%s: inlib je spodletel" msgid "no other options allowed with `-x'" msgstr "druge možnosti niso dovoljene z `-x'" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenti morajo biti določila opravila ali posla" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Neznana napaka" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "izraz je bil pričakovan" @@ -586,69 +587,69 @@ msgstr "izraz je bil pričakovan" msgid "%s: not an indexed array" msgstr "%s: ni zabeleženo polje" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: neveljavno določilo opisnika datoteke" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neveljaven opisnik datoteke: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: neveljavno Å¡tetje vrstic" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: neveljaven izvor polja" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neveljaven del povratnega klica" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "prazno ime spremenljivke polja" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "potrebna podpora spremenljivke polja" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "`%s': manjka znak oblike" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': neveljavno določilo vrste časa" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "`%c': neveljaven znak oblike" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "opozorilo: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "manjka Å¡estnajstiÅ¡ka Å¡tevka za \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "manjka Å¡tevka s podporo unicode za \\%c" @@ -662,19 +663,19 @@ msgstr "ni druge mape" msgid "%s: invalid argument" msgstr "%s: neveljaven argument omejitve" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "sklad mape je prazen" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "kazalo sklada mape" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -715,7 +716,7 @@ msgstr "" " -N\tPrikaže Nti vnos s Å¡tetjem z desne strani seznama, prikazan s\n" "\tpomočjo map, ko kličemo brez možnosti, začenÅ¡i z nič." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -761,7 +762,7 @@ msgstr "" " \n" " Ukaz lupine `dirs' prikaže sklad map." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -804,40 +805,40 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: neveljavno določilo časovne omejitve" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "napaka med branjem: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "`return' lahko vrne samo iz funkcije ali skripte z izvorno kodo" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "ni mogoče ponastaviti funkcije in spremenljivke hkrati" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: ni mogoče ponastaviti" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ni mogoče ponastaviti: samo za branje %s" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: ni spremenljivka polja" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: ni funkcija" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: ni mogoče ponastaviti" @@ -846,20 +847,20 @@ msgstr "%s: ni mogoče ponastaviti" msgid "shift count" msgstr "Å¡tetje premika" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "ni mogoče nastaviti in ponastaviti možnosti lupine hkrati" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: neveljavno ime možnosti lupine" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "zahtevan je argument imena datoteke" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: datoteke ni mogoče najti" @@ -872,61 +873,61 @@ msgstr "ni mogoče dati v pripravljenost" msgid "cannot suspend a login shell" msgstr "prijavne lupine ni mogoče dati v pripravljenost" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s je drugo ime za `%s'\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s je ključna beseda lupine\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s je funkcija\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s je vgrajena lupina\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s je vgrajena lupina\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s je %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s je razprÅ¡eno (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: neveljaven argument omejitve" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': slab ukaz" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ni mogoče dobiti omejitve: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "omejitev" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ni mogoče spremeniti omejitve: %s" @@ -945,357 +946,367 @@ msgstr "`%c': neveljaven operator simbolnega načina" msgid "`%c': invalid symbolic mode character" msgstr "`%c': neveljaven znak simbolnega načina" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " vrstica " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "zadnji ukaz: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Prekinjanje ..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "neznana napaka ukaza" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "slaba vrsta ukaza" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "slab povezovalnik" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "slab skok" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: nedoločena spremenljivka" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\apotekla je časovna omejitev med čakanjem na vnos: samodejna odjava\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "ni mogoče preusmeriti običajnega vnosa iz /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': neveljaven znak oblike" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "napaka cevi" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: omejeno: ni mogoče določiti `/' v imenih ukaza" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: ukaza ni mogoče najti" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: slab tolmač" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: ni mogoče izvesti binarne datoteke" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s je vgrajena lupina\n" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "ni mogoče podvajati fd %d v fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "stopnja rekurzivnosti izraza presežena" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "prekoračitev spodnje meje sklada rekurzivnosti" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "skladenjska napaka v izrazu" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "poskus dodelitve ne-spremenljivki" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "skladenjska napaka v izrazu" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "delitev z 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "hrošč: slab žeton expassign" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "`:' pričakovano za pogojni izraz" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "eksponent je manjÅ¡i kot 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "po predhodnem večanju ali manjÅ¡anju je pričakovano določilo" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "manjka `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "skladenjska napaka: pričakovan operand" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "skladenjska napaka: neveljaven aritmetični operand" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (žeton napake je \"%s\")" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "neveljavna aritmetična zbirka" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "vrednost je prevelika za zbirko" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: napaka izraza\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: ni mogoče dostopati do nadrejenih map" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "ni mogoče ponastaviti načina brez zakasnitve za fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "ni mogoče dodeliti opisnika novih map za vnos bash iz fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: medpomnilnik že obstaja za nov fd %d" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: cev pgrp" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "razvejen id opravila %d se pojavi v izvajajočem se poslu %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "brisanje ustavljenega posla %d s skupino opravila %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: opravilo %5ld (%s) v the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: id opravila %5ld (%s) je označen kot Å¡e živ" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ni takÅ¡nega določila opravila" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Končano" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Zaustavljeno" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Zaustavljeno(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Se izvaja" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Končano(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Končaj %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Neznano stanje" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(izpis jedra) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "podrejeno opravilo setpgid (%ld v %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: opravilo z id %ld ni podrejeno opravilo te lupine" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: ni zapisov o opravilu %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: posel %d je zaustavljen" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: posel je uničen" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: posel %d se že izvaja v ozadju" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: vklop WNOHANG za preprečitev nedoločenosti bloka" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: vrstica %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (izpis jedra)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(wd zdaj: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp je spodletel" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: vrstična disciplina" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: vrstična disciplina" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ni mogoče nastaviti skupine opravil terminala (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "brez nadzora posla v tej lupini" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: spodletela trditev: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1304,41 +1315,41 @@ msgstr "" "\r\n" "malloc: %s:%d: trditev je bila slabo izpeljana\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "neznano" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: vsebina bloka na prostem seznamu je bila prepisana" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: poklican z že sproščenim argumentom bloka" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: klic z nedodeljenim argumentom bloka" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: zaznana prekoračitev spodnje meje; mh_nbytes je izven dosega" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "" "free: velikosti začetnih in končnih podatkovnih kosov \"chunk\" se " "razlikujejo" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: klic z nedodeljenim argumentom bloka" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: zaznana prekoračitev spodnje meje; mh_nbytes je izven dosega" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "" "realloc: velikosti začetnih in končnih podatkovnih kosov \"chunk\" se " @@ -1382,22 +1393,22 @@ msgstr "%s: slabo določilo omrežne poti" msgid "network operations not supported" msgstr "omrežno opravilo ni podprto" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: ni mogoče spremeniti jezikovne oznake (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: ni mogoče spremeniti jezikovne oznake (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ni mogoče spremeniti jezikovne oznake (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ni mogoče spremeniti jezikovne oznake (%s): %s" @@ -1415,147 +1426,147 @@ msgstr "Imate novo poÅ¡to v $_" msgid "The mail in %s has been read\n" msgstr "PoÅ¡ta v %s je bila prebrana\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "skladenjska napaka: potreben je aritmetični izraz" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "skladenjska napaka: `;' nepričakovano" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "skladenjska napaka: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: slaba vrsta navodila %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document v vrstici %d razmejen z end-of-file (želeno `%s')" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: navodilo preusmeritve `%d' je izven dosega" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "nepričakovan konec datoteke med iskanjem ujemanja z `%c'" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "nepričakovan konec datoteke med iskanjem ujemanja z `]]'" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "skladenjska napaka v pogojnem izrazu: nepričakovan žeton `%s'" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "skladenjska napaka v pogojnem izrazu" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "nepričakovan žeton `%s', pričakovan je bil `)'" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "pričakovan `)'" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "nepričakovan argument `%s' do pogojnega enoslovnega operatorja" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "nepričakovan argument do pogojnega enoslovnega operatorja" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "nepričakovan žeton `%s', pričakovan je binarni pogojni operator" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "pričakovan je binarni pogojni operator" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "nepričakovan argument `%s' do pogojnega binarnega operatorja" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "nepričakovan argument do pogojnega binarnega operatorja" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "nepričakovan žeton `%c' v pogojnem ukazu" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "nepričakovan žeton `%s' v pogojnem ukazu" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "nepričakovan žeton %d v pogojnem ukazu" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "skladenjska napaka blizu nepričakovanega žetona `%s'" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "skladenjska napaka blizu `%s'" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "skladenjska napaka: nepričakovan konec datoteke" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "skladenjska napaka" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Uporabite \"%s\", če želite zapustiti lupino.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "nepričakovan konec datoteke med iskanjem ujemanja z `)'" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "končano: funkcije `%s' ni mogoče najti" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1584,90 +1595,94 @@ msgstr "xtrace_set: prazen kazalec datoteke NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': neveljaven znak oblike" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "opisnik datoteke je izven dosega" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: dvoumna preusmeritev" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: ni mogoče prepisati obstoječe datoteke" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: omejitev: ni mogoče preusmeriti izhoda" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "ni mogoče ustvariti začasne datoteke za here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ni mogoče dodeliti fd spremenljivki" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port ni podprt brez omrežja" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "napaka preusmeritve: ni mogoče podvajati fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "ni mogoče najti /tmp, ustvarite ga!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp mora biti veljavno ime mape" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: neveljavna možnost" -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "ni mogoče ponastaviti načina brez zakasnitve za fd %d" -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "ni mogoče ponastaviti načina brez zakasnitve za fd %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: je mapa" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Ni imena!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, različica %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1676,50 +1691,50 @@ msgstr "" "Uporaba:\t%s [dolga možnost GNU] [možnost] ...\n" "\t%s [dolga možnost GNU] [možnost] skriptni dokument ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Dolge možnosti GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Možnosti lupine:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD ali ukaz -c ali -O shopt_option\t\t(samo sklicevanje)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ali možnost -o\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "VpiÅ¡ite `%s -c \"help set\"' za več podrobnosti o možnostih lupine.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "VpiÅ¡ite `%s -c help' za več podrobnosti o možnostih ukazov lupine.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Uporabite ukaz `bashbug' za poročanje hroščev.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: neveljavno opravilo" @@ -1893,104 +1908,109 @@ msgstr "Neznan signal #" msgid "Unknown Signal #%d" msgstr "Neznan signal #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "slaba zamenjava: ni zaključka `%s' v %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: ni mogoče dodeliti seznama članu polja" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" -msgstr "ni mogoče ustvariti pipe za zamenjavo opravila" +msgstr "ni mogoče ustvariti cevi za zamenjavo opravila" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "ni mogoče ustvariti podrejenega opravila za zamenjavo opravila" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "ni mogoče odpreti imenovane cevi %s za branje" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "ni mogoče odpreti imenovane cevi %s za pisanje" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "ni mogoče podvajati imenovane cevi %s kot fd %d" -#: subst.c:5959 +#: subst.c:6062 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "slaba zamenjava: ni zaključka \"`\" v %s" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "ni mogoče ustvariti cevi za zamenjavo ukaza" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "ni mogoče ustvariti podrejenega opravila za zamenjavo ukaza" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: ni mogoče podvajati cevi kot fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: slaba zamenjava" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: neveljavno Å¡tetje vrstic" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "`%s': neveljaven vzdevek" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter je prazen ali pa ni določen" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter je prazen ali pa ni določen" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: izraz podniza < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: slaba zamenjava" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ni mogoče dodeliti na tak način" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" "prihodnje različice lupine bodo prisilile ocenitev kot aritmetično zamenjavo" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "slaba zamenjava: ni zaključka \"`\" v %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "ni ujemanja: %s" @@ -2013,114 +2033,119 @@ msgstr "pričakovan je `)'" msgid "`)' expected, found %s" msgstr "pričakovan je `)', najden je %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: pričakuje se enosnoven operator" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: pričakuje se binarni operator" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "manjka `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "neveljavna Å¡tevka signala" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: slaba vrednost v trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: ročnik signala je SIG_DFL, ponovno poÅ¡iljanje %d (%s) sebi" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: slab signal %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "napaka med uvozom določila funkcije `%s'" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "raven lupine (%d) je previsoka, ponastavljanje na 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: v trenutnem dosegu ni vsebine funkcije" -#: variables.c:2432 +#: variables.c:2674 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: ni mogoče dodeliti fd spremenljivki" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" +msgstr "" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: v trenutnem dosegu ni vsebine funkcije" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s ima prazen exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "neveljaven znak %d v exportstr za %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "ni `=' v exportstr za %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: glava shell_variables ni vsebina funkcije" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ni vsebine global_variables" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: glava shell_variables ni trenuten obseg okolja" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ni mogoče odpreti kot DATOTEKO" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" -#: variables.c:5669 +#: variables.c:6322 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s izven dosega" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2146,22 +2171,22 @@ msgstr "To je prosta programska oprema; lahko jo spreminjate in razÅ¡irjate.\n" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Je BREZ KAKRÅ NEKOLI GARANCIJE, v obsegu, ki ga dovoljuje zakonodaja.\n" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: ni mogoče dodeliti %lu bajtov (%lu bajtov je dodeljenih)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: ni mogoče dodeliti %lu bajtov" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: ni mogoče dodeliti %lu bajtov (%lu bajtov dodeljenih)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: ni mogoče dodeliti %lu bajtov" @@ -2382,7 +2407,7 @@ msgstr "umask [-p] [-S] [način]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "wait [id]" #: builtins.c:181 @@ -2474,8 +2499,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v spremenljivka] oblika [argumenti]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2494,7 +2520,8 @@ msgstr "" "S pripona] [beseda]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o možnost] [-DE] [ime ...]" #: builtins.c:242 @@ -2507,9 +2534,10 @@ msgstr "" "c del] [polje]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n Å¡tevec] [-O izvor] [-s Å¡tevec] [-t] [-u fd] [-C povratni_klic] " "[-c del] [polje]" @@ -2686,6 +2714,7 @@ msgstr "" " Stanje končanja je 0, razen če N ni večji kot ali enak 1." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2696,7 +2725,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Izvede vgrajeno lupino.\n" " \n" @@ -2933,11 +2962,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3057,6 +3086,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3089,7 +3124,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če pride do napake pri pisanju." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3111,7 +3146,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če pride do napake pri pisanju." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3163,7 +3198,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če IME ni vgrajena lupina ali če pride do napake." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3182,7 +3217,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje končanja ali uspeÅ¡no, če je ukaz prazen." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3260,7 +3295,7 @@ msgstr "" " Vrne uspeÅ¡no, če je možnost najdena; neuspeÅ¡no, če pride\n" " do konca možnosti ali do napake." -#: builtins.c:688 +#: builtins.c:692 #, fuzzy msgid "" "Replace the shell with the given command.\n" @@ -3300,7 +3335,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če UKAZ ni najden ali pride do napake preusmeritve." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3312,7 +3347,7 @@ msgstr "" " Konča lupino s stanjem N. Če je N izpuščen, se uporabi stanje\n" " končanja zadnjega izvrÅ¡enega ukaza." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3325,7 +3360,7 @@ msgstr "" " Konča prijavno lupino s stanjem končanja N. Vrne napako, če se\n" " ne izvede v prijavni lupini." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3379,7 +3414,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no ali stanje izvedenega ukaza; ne-ničelno, če pride do napake." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3400,7 +3435,7 @@ msgstr "" " Stanje ukaza, postavljenega v ospredje, ali neuspeÅ¡no, če se\n" " pojavi napaka." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3423,7 +3458,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če nadzor posla ni omogočen ali če pride\n" " do napake." -#: builtins.c:787 +#: builtins.c:791 #, fuzzy msgid "" "Remember or display program locations.\n" @@ -3466,7 +3501,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če IME ni najdeno ali če je dana neveljavna možnost." -#: builtins.c:812 +#: builtins.c:816 #, fuzzy msgid "" "Display information about builtin commands.\n" @@ -3482,7 +3517,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3507,7 +3542,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če VZOREC ni najden ali pa je dana neveljavna\n" " možnost." -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3517,7 +3552,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3575,7 +3611,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je podana neveljavna možnost ali če pride\n" " do napake." -#: builtins.c:872 +#: builtins.c:877 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3620,7 +3656,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če pride do\n" " napake. Če se uporabi -x, vrne stanje končanja UKAZA." -#: builtins.c:899 +#: builtins.c:904 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3653,7 +3689,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če je dano\n" " DOLOČILO_POSLA." -#: builtins.c:918 +#: builtins.c:923 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3696,7 +3732,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če pride do\n" " napake." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3783,7 +3819,7 @@ msgstr "" " Stanje končanja\n" " Če zadnji ARG ovrednoti na 0, let vrne 1; sicer let vrne 0." -#: builtins.c:987 +#: builtins.c:992 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3805,7 +3841,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3876,7 +3912,7 @@ msgstr "" " omejitev prekoračena ali če je dan neveljaven opisnik datotek kot\n" " argument v -u." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3896,7 +3932,7 @@ msgstr "" " Stanje končanja\n" " Vrne N ali neuspeÅ¡no, če lupina ne izvede funkcije ali skripta." -#: builtins.c:1047 +#: builtins.c:1052 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4069,7 +4105,7 @@ msgstr "" " Stanje končanja\n" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost." -#: builtins.c:1132 +#: builtins.c:1137 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4108,7 +4144,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če je IME samo\n" " za branje." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4142,7 +4178,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če je\n" " neveljavno IME." -#: builtins.c:1173 +#: builtins.c:1178 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4182,7 +4218,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če je\n" " neveljavno IME." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4200,7 +4236,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če je N negativen ali večji kot $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4224,7 +4260,7 @@ msgstr "" " Vrne stanje zadnjega izvrÅ¡enega ukaza v IMENU_DATOTEKE; vrne\n" " neuspeÅ¡no, če IMENA_DATOTEKE ni mogoče brati." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4250,7 +4286,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če nadzor posla ni omogočen ali če pride do\n" " napake." -#: builtins.c:1254 +#: builtins.c:1259 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4412,7 +4448,7 @@ msgstr "" " Vrne uspeÅ¡no, če IZRAZ ovrednoti prav, neuspeÅ¡no vrne, če IZRAZ \n" " ovrednoti napak ali če je dan neveljaven argument." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4424,7 +4460,7 @@ msgstr "" " To je sopomenka za vgrajeno lupino \"test\", toda zadnji argument\n" " mora biti dobesedni `]' za ujemanje z uklepajem `['." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4443,7 +4479,7 @@ msgstr "" " Stanje končanja:\n" " Vedno uspeÅ¡no." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4523,7 +4559,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je SIGSPEC neveljaven ali je dana neveljavna " "možnost." -#: builtins.c:1393 +#: builtins.c:1398 #, fuzzy msgid "" "Display information about command type.\n" @@ -4581,7 +4617,7 @@ msgstr "" " Vrne uspeÅ¡no, če so vsa IMENA najdena; vrne neuspeÅ¡no, če katero\n" " ni najdeno." -#: builtins.c:1424 +#: builtins.c:1429 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4673,7 +4709,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če pride do\n" " napake." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4707,7 +4743,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je NAČIN neveljaven ali če je dana neveljavna\n" " možnost." -#: builtins.c:1494 +#: builtins.c:1499 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4716,13 +4752,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4740,7 +4778,7 @@ msgstr "" " Vrne stanje ID-ja; vrne neuspeÅ¡no, če je ID neveljaven ali če je dana\n" " neveljavna možnost." -#: builtins.c:1515 +#: builtins.c:1523 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4765,7 +4803,7 @@ msgstr "" " Vrne stanje ID-ja; neuspeÅ¡no, če je ID neveljaven ali če je dana\n" " neveljavna možnost." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4788,7 +4826,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4819,7 +4857,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4856,7 +4894,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4885,7 +4923,7 @@ msgstr "" " Stanje končanja:\n" " Stanje končanja je stanje končanja CEVOVODA." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4903,7 +4941,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4937,7 +4975,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4955,7 +4993,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4973,7 +5011,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1653 +#: builtins.c:1661 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -4996,7 +5034,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje končanja UKAZA." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5020,7 +5058,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če je IME samo za branje." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5038,7 +5076,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5062,7 +5100,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje obnovljenega posla." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5080,7 +5118,7 @@ msgstr "" " Stanje končanja:\n" " Vrne 1, če je IZRAZ enakovreden; sicer vrne 0." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5134,7 +5172,7 @@ msgstr "" " Stanje končanja:\n" " 0 ali 1, odvisno od vrednosti IZRAZA." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5238,7 +5276,7 @@ msgstr "" " HISTIGNORE\tZ dvopičjem ločen seznam vzorcev, ki so uporabljeni \n" " \t\tza odločanje, kateri ukazi naj se shranijo na seznam zgodovine.\n" -#: builtins.c:1803 +#: builtins.c:1811 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5295,7 +5333,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložen neveljaven argument ali če\n" " sprememba mape spodleti." -#: builtins.c:1837 +#: builtins.c:1845 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5346,7 +5384,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložen neveljaven argument ali če\n" " sprememba mape spodleti." -#: builtins.c:1867 +#: builtins.c:1875 #, fuzzy msgid "" "Display directory stack.\n" @@ -5398,14 +5436,14 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če pride do napake." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5435,7 +5473,7 @@ msgstr "" " Vrne uspeÅ¡no, če je IME_MOŽNOSTI omogočeno; neuspeÅ¡no, če je\n" " dana neveljavna možnost ali če je IME_MOŽNOSTI onemogočeno." -#: builtins.c:1919 +#: builtins.c:1927 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5501,7 +5539,7 @@ msgstr "" "napake\n" " branja ali dodelitve." -#: builtins.c:1953 +#: builtins.c:1961 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5520,10 +5558,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5553,7 +5595,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložena neveljavna možnost ali če pride\n" " do napake." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5575,7 +5617,8 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložena neveljavna možnost ali če pride\n" " do napake." -#: builtins.c:1996 +#: builtins.c:2006 +#, fuzzy msgid "" "Modify or display completion options.\n" " \n" @@ -5590,6 +5633,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5631,7 +5675,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložena neveljavna možnost ali pa IME\n" " nima določenega določila dopolnjevanja." -#: builtins.c:2026 +#: builtins.c:2037 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5709,7 +5753,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost oz. je POLJE samo\n" " za branje ali pa ni zabeleženo polje." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5719,9 +5763,15 @@ msgstr "" " \n" " Je sopomenka za `mapfile'." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Avtorske pravice (C) 2009 Free Software Foundation, Inc.\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Dovoljenje GPLv2+: GNU GPL različica 2 ali kasnejÅ¡e \n" #~ msgid ":" #~ msgstr ":" @@ -5734,17 +5784,3 @@ msgstr "" #~ msgid "times" #~ msgstr "krat" - -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc." - -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Avtorske pravice (C) 2009 Free Software Foundation, Inc.\n" - -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Dovoljenje GPLv2+: GNU GPL različica 2 ali kasnejÅ¡e \n" diff --git a/po/sr.gmo b/po/sr.gmo index c052db364..60fa85c5c 100644 Binary files a/po/sr.gmo and b/po/sr.gmo differ diff --git a/po/sr.po b/po/sr.po index f1af8c73b..624010a55 100644 --- a/po/sr.po +++ b/po/sr.po @@ -1,13 +1,13 @@ # Serbian translation for bash. # Copyright (C) 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Мирослав Николић , 2014—2015. +# Мирослав Николић , 2014—2016. msgid "" msgstr "" -"Project-Id-Version: bash-4.4-beta1\n" +"Project-Id-Version: bash-4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-12-23 11:31+0200\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2016-10-01 19:25+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "MIME-Version: 1.0\n" @@ -16,120 +16,121 @@ msgstr "" "Language: sr\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "лош индекс низа" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: уклањам атрибут упуте назива" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: не могу да претворим пописани низ у придружив" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: неисправан кључ придруживог низа" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: не могу да доделим у не-бројевни попис" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: мора користити индекс приликом додељивања придруживог низа" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: не могу да направим: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "баш_изврши_јуникс_наредбу: не могу да нађем мапу кључа за наредбу" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: први не-празан знак није \"" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "нема затварајућег „%c“ у %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: недостаје раздвојник двотачке" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "ширење заграде: не могу да доделим меморију за „%s“" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "ширење заграде: нисам успео да доделим меморију за %d елемента" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "ширење заграде: нисам успео да доделим меморију за „%s“" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: неисправан назив алијаса" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "уређивање реда није укључено" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s“: неисправан назив мапе кључа" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: не могу да читам: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "„%s“: не могу да развежем" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "„%s“: непознат назив функције" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "„%s“ није привезано ни за један кључ.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "„%s“ не може бити призвано путем" -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: не могу да развежем" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "број петљи" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "једино има смисла у петљи „for“, „while“, или „until“" @@ -143,234 +144,233 @@ msgstr "" "\n" " Без „EXPR“, исписује" -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "„HOME“ није подешено" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "превише аргумената" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "нема другог директоријума" +msgstr "ништаван директоријум" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "„OLDPWD“ није подешено" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "%d. ред:" -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "упозорење:" -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: употреба:" -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: опција захтева аргумент" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: потребан је бројевни аргумент" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: не постоји" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: неисправна опција" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: неисправан назив опције" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: није исправан одредник" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "неисправан октални број" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "неисправан хексадецимални број" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "неисправан број" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: неисправна одредба сигнала" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s“: није пиб или исправна одредба посла" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: променљива само за читање" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: „%s“ је ван опсега" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "аргумент" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "„%s“ је ван опсега" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: нема таквог посла" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: нема управљања послом" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "нема управљања послом" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: ограничено" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "ограничено" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: није уграђеност шкољке" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "грешка писања: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "грешка подешавања особина терминала: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "грешка добављања особина терминала: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: грешка довлачења текућег директоријума: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: нејасна одредба посла" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "помоћ није доступна у овом издању" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: неисправан назив радње" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: нема одредбе довршавања" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "упозорење: опција „-F“ можда неће радити како сте очекивали" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "упозорење: опција „-C“ можда неће радити како сте очекивали" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "тренутно не обавља функцију довршавања" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "може бити коришћено једино у функцији" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: променљива упуте не може бити низ" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: самоупућивање променљиве упуте назива није дозвољено" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: кружна упута назива" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" msgstr "%s: неисправан назив променљиве за упуту назива" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "не можете користити „-f“ да направите функције" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: функција само за читање" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: додела низа цитираног споја је застарела" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: не могу да уништим променљиве низа на овај начин" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: не могу да претворим придруживи низ у пописани" @@ -404,68 +404,68 @@ msgstr "%s: није динамички учитано" msgid "%s: cannot delete: %s" msgstr "%s: не могу да обришем: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: је директоријум" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: није обична датотека" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: датотека је превелика" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: не могу да извршим бинарну датотеку" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: не могу да извршим: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "одјави\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "није шкољка пријављивања: користите „exit“" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Има заустављених послова.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Има покренутих послова.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "нема такве наредбе" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "одредба историјата" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: не могу да отворим привремену датотеку: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "текуће" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "посао „%d“ је започет без управљања послом" @@ -480,29 +480,28 @@ msgstr "%s: неисправна опција -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: опција захтева аргумент -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "хеширање је искључено" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: хеш табела је празна\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "покреће\tнаредбу\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Наредбе шкољке које одговарају кључној речи `" msgstr[1] "Наредбе шкољке које одговарају кључним речима `" msgstr[2] "Наредбе шкољке које одговарају кључним речима `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -510,12 +509,12 @@ msgstr "" "нема тема помоћи које одговарају „%s“. Покушајте „help help“ или „man -k %" "s“ или „info %s“." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: не могу да отворим: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -534,20 +533,21 @@ msgstr "" "Звездица (*) поред назива значи да је наредба искључена.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "не могу користити више од једног „-anrw“" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "положај историјата" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: неисправан аргумент" +msgstr "%s: неисправна ознака времена" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: није успело ширење историјата" @@ -561,16 +561,16 @@ msgstr "%s: није успело „inlib“" msgid "no other options allowed with `-x'" msgstr "нису допуштене друге опције уз „-x“" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: аргументи морају бити процеси или ИБ-ови посла" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Непозната грешка" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "очекиван је израз" @@ -579,69 +579,69 @@ msgstr "очекиван је израз" msgid "%s: not an indexed array" msgstr "%s: није пописани низ" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: неисправна одредба описника датотеке" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: неисправан описник датотеке: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: неисправан број реда" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: неисправно порекло низа" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: неисправна количина опозива" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "празан назив променљиве низа" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "потребна је подршка променљиве низа" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "„%s“: недостаје знак записа" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: неисправна одредба записа времена" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: неисправан знак записа" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "упозорење: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "проблем обраде записа: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "недостаје хексадецимална цифра за \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "недостаје цифра уникода за \\%c" @@ -655,19 +655,19 @@ msgstr "нема другог директоријума" msgid "%s: invalid argument" msgstr "%s: неисправан аргумент" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<нема текућег директоријума>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "празан спремник директоријума" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "попис спремника директоријума" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -709,7 +709,7 @@ msgstr "" " -N\tПриказује н-ти унос почевши с десна на списку приказаном\n" "\t директоријумима када се призову без опција, почевши од нуле." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -755,7 +755,7 @@ msgstr "" " \n" " Уграђено „dirs“ приказује спремник директоријума." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -799,40 +799,40 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: неисправна одредба временског истека" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "грешка читања: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "могу једино да „испишем“ из функције или изворног списа" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "не могу истовремено да расподесим функцију и променљиву" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: не могу да расподесим" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не могу да расподесим: „%s“ је само за читање" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: није променљива низа" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: није функција" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: не могу да извезем" @@ -841,20 +841,20 @@ msgstr "%s: не могу да извезем" msgid "shift count" msgstr "број помака" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "не могу истовремено да подесим и да расподесим опције шкољке" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: неисправан назив опције шкољке" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "потребан је аргумент назива датотеке" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: нисам пронашао датотеку" @@ -867,61 +867,61 @@ msgstr "не могу да обуставим" msgid "cannot suspend a login shell" msgstr "не могу да обуставим шкољку пријављивања" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s је измењен у псеудоним „%s“\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "„%s“ је кључна реч шкољке\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s: је функција\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s: је нарочита уграђеност шкољке\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s: јесте уграђеност шкољке\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "„%s“ јесте „%s“\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "„%s“ је хеширано (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: неисправан аргумент ограничења" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "„%c“: лоша наредба" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: не могу да добавим ограничење: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "ограничење" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: не могу да изменим ограничење: %s" @@ -940,357 +940,367 @@ msgstr "„%c“: неисправан оператер симболичког msgid "`%c': invalid symbolic mode character" msgstr "„%c“: неисправан знак симболичког режима" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " ред " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "последња наредба: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Прекидам..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "ПОДАЦИ: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "непозната грешка наредбе" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "лоша врста наредбе" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "лош спајач" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "лош скок" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: несвезана променљива" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aистекло је време чекајући на улаз: сам се одјављујем\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "не могу да преусмерим стандардни улаз из „/dev/null:“: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "ЗАПИСВРЕМЕНА: „%c“: неисправан знак записа" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "изврши_копроц: копроцес [%d:%s] још увек постоји" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "грешка спојке" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "процена: премашен је највећи ниво угнежђивања процене (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: премашен је највећи ниво угнежђивања извора (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: премашен је највећи ниво угнежђивања функције (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ограничено: не могу да наведем / у називима наредби" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: нема такве наредбе" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: лош тумач" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: не могу да извршим бинарну датотеку: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "„%s“: јесте посебна уграђеност" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "не могу да удвостручим „fd %d“ у „fd %d“" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "премашен је ниво дубачења израза" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "недоток спремника дубачења" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "садржајна грешка у изразу" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "покушано је додељивање у не-променљиву" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "садржајна грешка у изразу" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "дељење 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "грешка: лош симбол доделе израза" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "„:“ је очекивано за условни израз" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "изложилац је мањи од 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "одредник је очекиван након пре-увећања или пре-умањења" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "недостаје )" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "садржајна грешка: очекиван је операнд" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "садржајна грешка: неисправан аритметички оператор" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (симбол грешке је „%s“)" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "неисправна аритметичка основа" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "вредност је превише велика за основу" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: грешка израза\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: не могу да приступим родитељском директоријуму" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не могу да поништим режим без-кашњења за фд „%d“" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "не могу да доделим нови описник датотеке за улаз баша из фд „%d“" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: већ постоји међумеморија за нови фд „%d“" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: „pgrp“ спојка" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "исцепљени пиб „%d“ се јавља у покренутом послу „%d“" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "бришем заустављени посао „%d“ са групом процеса %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: процес %5ld (%s) у спојном_реду" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: пиб %5ld (%s) је означен да је још жив" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: нема таквог пиб-а" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Урађен" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Заустављен" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Заустављен(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Покренут" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Урађен(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Изађи из „%d“" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Непознато стање" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(језгрени избачај)" -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "сетпгиб порода (%ld у %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: пиб %ld није пород ове шкољке" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Нема записа о процесу %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: посао „%d“ је заустављен" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: посао је завршио" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: посао „%dд је већ у позадини" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: укључујем „WNOHANG“ да избегнем неодређени блок" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: ред %d:" -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (језгрени избачај)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(„wd“ сада: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: није успело „getpgrp“" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: дисциплина реда" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: дисциплина реда" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "не могу да подесим групу процеса терминала (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "нема управљања послом у овој шкољци" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: тврдња није успела: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1299,39 +1309,39 @@ msgstr "" "\r\n" "malloc: %s:%d: тврдња је лоше изведена\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "непознато" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: блок на слободном списку је преписан" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: позвана са већ ослобођеним аргументом блока" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: позвана са недодељеним аргументом блока" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: откривена је недовољност тока; mh_n-бајтова је ван опсега" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: почетна и крајња величина дела се разликују" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: позвана са недодељеним аргументом блока" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: откривена је недовољност тока; mh_n-бајтова је ван опсега" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: почетна и крајња величина дела се разликују" @@ -1373,22 +1383,22 @@ msgstr "%s: лоша одредба путање мреже" msgid "network operations not supported" msgstr "радње мреже нису подржане" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: не могу да изменим језик (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: не могу да изменим језик (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: не могу да изменим језик (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: не могу да изменим језик (%s): %s" @@ -1406,150 +1416,152 @@ msgstr "Имате нову пошту у $_" msgid "The mail in %s has been read\n" msgstr "Пошта у „%s“ је прочитана\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "садржајна грешка: потребан је аритметички израз" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "садржајна грешка: није очекивано „;“" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "садржајна грешка: „((%s))“" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: лоша врста упутства „%d“" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "овде-документ у %d. реду је ограничен крајем-датотеке (тражи се „%s“)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: упутсво преусмерења „%d“ је ван опсега" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: величина_реда_улаза_шкољке (%zu) је премашила НАЈВЕЋУ_ВЕЛИЧИНУ (%" +"lu): ред је скраћен" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "премашен је највећи број „овде-документ“" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "неочекивани крај датотеке приликом тражења поклапања „%c“" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "неочекивани крај датотеке приликом тражења „]]“" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "садржајна грешка у условном изразу: неочекивани симбол „%s“" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "садржајна грешка у условном изразу" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неочекивани симбол „%s“, очекивана је )" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "очекивана је )" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неочекивани аргумент „%s“ условном једночланом оператору" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "неочекивани аргумент условном једночланом оператору" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неочекивани симбол „%s“, очекиван је условни двочлани оператор" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "очекиван је условни двочлани оператор" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неочекивани аргумент „%s“ условном двочланом оператору" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "неочекивани аргумент условном двочланом оператору" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неочекивани симбол „%c“ у условној наредби" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неочекивани симбол „%s“ у условној наредби" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "неочекивани симбол „%d“ у условној наредби" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "садржајна грешка близу неочекиваног симбола „%s“" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "садржајна грешка близу „%s“" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "садржајна грешка: неочекивани крај датотеке" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "садржајна грешка" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Користите „%s“ да напустите шкољку.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "неочекивани крај датотеке приликом тражења поклапајуће )" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "довршавање: нисам нашао функцију „%s“" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: могуће понављање покушаја" #: pcomplib.c:182 #, c-format @@ -1575,90 +1587,94 @@ msgstr "xtrace_set: НИШТАВАН указивач датотеке" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: неисправан знак записа" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "описник датотеке је ван опсега" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: нејасно преусмерење" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: не могу да препишем постојећу датотеку" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ограничено: не могу да преусмерим излаз" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не могу да направим привремену датотеку за документ-овде: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: не могу да доделим фд променљивој" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "„/dev/(tcp|udp)/домаћин/прикључник“ није подржано без умрежавања" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "грешка преусмерења: не могу да удвостручим фд" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "не могу да нађем „/tmp“, направите га!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "„/tmp“ мора бити исправан назив директоријума" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: неисправна опција" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "не могу да подесим јиб на %d: стварни јиб %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "не могу да подесим гиб на %d: стварни гиб %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "не могу да покренем прочишћавача; режим прочишћавања је искључен" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: је директоријум" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Немам назив!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "Гну баш, издање %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1667,49 +1683,49 @@ msgstr "" "Употреба:\t%s [Гнуова дуга опција] [опција] ...\n" " \t%s [Гнуова дуга опција] [опција] датотека-списа ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Гнуове дуге опције:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Опције шкољке:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t„-ilrsD“ или наредба „-c“ или -O шопц_опција\t\t(призивање само)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t„-%s“ или опција „-o“\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Укуцајте „%s -c \"help set\"“ за више података о опцијама шкољке.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Укуцајте „%s -c help“ за више података о уграђеним наредбама шкољке.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Користите наредбу „bashbug“ да известите о грешкама.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "Матична страница баша: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "Општа помоћ коришћења Гну софтвера: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: неисправна операција" @@ -1883,103 +1899,107 @@ msgstr "Непознат сигнал #" msgid "Unknown Signal #%d" msgstr "Непознат сигнал #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "лоша замена: нема затварајуће „%s“ у „%s“" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: не могу да доделим списак члану низа" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "не могу да начиним спојку за замену процеса" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "не могу да начиним пород за замену процеса" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "не могу да отворим именовану спојку „%s“ за читање" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "не могу да отворим именовану спојку „%s“ за писање" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "не могу да удвостручим именовану спојку „%s“ као фд %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "лоша замена: нема затварајућег „`“ у „%s“" +msgstr "замена наредбе: занемарих ништавни бајт у улазу" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "не могу да начиним спојку за замену наредбе" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "не могу да начиним пород за замену наредбе" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: не могу да удвостручим спојку као фд 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: неисправан назив променљиве за упуту назива" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: лоша замена" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: неисправно посредно ширење" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "%s: неисправан назив променљиве" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: параметар је ништаван или није подешен" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: параметар је ништаван или није подешен" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: израз подниске < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: лоша замена" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: не могу дадоделим на овај начин" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "будућа издања шкољке ће приморати процену као аритметичку замену" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "лоша замена: нема затварајућег „`“ у „%s“" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "нема поклапања: %s" @@ -2002,30 +2022,35 @@ msgstr "очекивана је )" msgid "`)' expected, found %s" msgstr "очекивана је ), а пронађена %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: очекиван је једночлани оператор" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: очекиван је двочлани оператор" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "недостаје ]" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "неисправан сигнални број" -#: trap.c:387 +#: trap.c:320 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "процена: премашен је највећи ниво угнежђивања процене (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: лоша вредност у „trap_list[%d]“: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2033,85 +2058,85 @@ msgstr "" "run_pending_traps: руковалац сигналом је „SIG_DFL“, поново шаљем %d (%s) " "мени самом" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: лош сигнал %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "грешка увоза одреднице функције за „%s“" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "ниво шкољке (%d) је превисок, поново постављам на 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: нема садржаја функције на текућем досегу" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: вредности не може бити додељена вредност" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: неисправан назив променљиве за упуту назива" +msgstr "%s: додељујем цео број упути назива" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variable: нема садржаја функције на текућем досегу" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s има ништавну ниску извоза" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "неисправан знак %d у нисци извоза за „%s“" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "нема = у нисци извоза за „%s“" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: глава променљивих шкољке није садржајност функције" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: нема садржаја општих променљивих" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: глава променљивих шкољке није привремени досег окружења" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: не могу да отворим као ДАТОТЕКУ" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: неисправна вредност за описник праћења датотеке" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: вреднсот сагласности је ван опсега" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Ауторска права (C) 2015 Задужбина слободног софтвера, Доо." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Ауторска права (C) 2016 Задужбина слободног софтвера, Доо." #: version.c:47 version2.c:47 msgid "" @@ -2135,22 +2160,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Нема НИКАКВЕ ГАРАНЦИЈЕ у оквирима дозвољеним законом." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: не могу да доделим %lu бајта (%lu бајта је додељено)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: не могу да доделим %lu бајта" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: не могу да доделим %lu бајта (%lu бајта је додељено)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: не могу да доделим %lu бајта" @@ -2277,9 +2302,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [одредба_посла ...] или jobs -x наредба [аргументи]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [одредба_посла ...]" +msgstr "disown [-h] [-ar] [одредба_посла ... | пид ...]" #: builtins.c:134 msgid "" @@ -2362,7 +2386,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [режим]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [иб ...]" #: builtins.c:181 @@ -2454,8 +2479,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v променљива] format [аргументи]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2473,7 +2499,8 @@ msgstr "" "суфикс] [реч]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o опција] [-DE] [назив ...]" #: builtins.c:242 @@ -2485,9 +2512,10 @@ msgstr "" "опозив] [-c количина] [низ]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n број] [-O порекло] [-s број] [-t] [-u фд] [-C опозив] [-c " "количина] [низ]" @@ -2673,6 +2701,7 @@ msgstr "" " Излазно стање је 0 осим ако N није веће или једнако 1." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2683,7 +2712,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Извршава уграђености шкољке.\n" " \n" @@ -2910,6 +2939,7 @@ msgstr "" " Даје излазно стање НАРЕДБЕ, или неуспех ако се НАРЕДБА не пронађе." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2928,11 +2958,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2986,7 +3016,6 @@ msgstr "" " не дође до грешке доделе променљиве." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2994,7 +3023,7 @@ msgid "" msgstr "" "Подешава вредности и атрибуте променљиве.\n" " \n" -" Застарело. Погледајте „help declare“." +" Синоним за „declare“. Погледајте „help declare“." #: builtins.c:538 msgid "" @@ -3024,6 +3053,7 @@ msgstr "" " до грешке додељивања променљиве, или ако шкољка не извршава функцију." #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3052,6 +3082,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3086,7 +3122,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако не дође до грешке писања." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3108,7 +3144,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако не дође до грешке писања." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3160,7 +3196,7 @@ msgstr "" " Даје позитиван резултат осим ако НАЗИВ није уграђеност шкољке или ако не " "дође до грешке." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3179,7 +3215,7 @@ msgstr "" " Излазно стање:\n" " Даје излазно стање наредбе или успех ако је наредба ништавна." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3263,7 +3299,7 @@ msgstr "" "на\n" " крај опције или ако не дође до грешке." -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3305,7 +3341,7 @@ msgstr "" " Даје позитиван резултат осим ако НАРЕДБА није нађена или ако не дође до " "грешке преусмеравања." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3317,7 +3353,7 @@ msgstr "" " Напушта шкољку са стањем N. Ако је N изостављено, излазно стање\n" " је оно последње извршене наредбе." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3331,7 +3367,7 @@ msgstr "" "извршено\n" " у шкољци пријављивања." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3388,7 +3424,7 @@ msgstr "" " Даје позитиван резултат или стање извршене наредбе; не-нулу ако дође до " "грешке." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3408,7 +3444,7 @@ msgstr "" " Излазно стање:\n" " Стање наредбе постављене у први план, или неуспех ако дође до грешке." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3432,7 +3468,7 @@ msgstr "" " Даје позитиван резултат осим ако није укључено управљање послом или ако " "не дође до грешке." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3476,7 +3512,8 @@ msgstr "" " Даје позитиван резултат осим ако се НАЗИВ не нађе или ако је дата " "неисправна опција." -#: builtins.c:812 +#: builtins.c:816 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3491,7 +3528,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3516,7 +3553,7 @@ msgstr "" " Даје позитиван резултат осим ако ШАБЛОН није пронађен или ако је дата " "неисправна опција." -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3526,7 +3563,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3562,9 +3600,9 @@ msgstr "" " -a\t додаје редове историјата из ове сесије у датотеку историјата\n" " -n\t чита све редове историјата који нису прочитани из датотеке " "историјата\n" +" \t\tи додаје их на списак историјата\n" " -r\t чита датотеку историјата и додаје садржај на списак историјата\n" " -w\t пише текући историјат у датотеку историјата\n" -" \t и додаје их на спсак историјата\n" " \n" " -p\t обавља ширење историјата на сваком АРГ-у и приказује резултат\n" " \t без смештања на списак историјата\n" @@ -3585,7 +3623,7 @@ msgstr "" " Даје позитиван резултат осим ако није дата неисправна опција или ако не " "дође до грешке." -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3631,7 +3669,7 @@ msgstr "" "дође до грешке.\n" " Ако се користи „-x“, даје излазно стање НАРЕДБЕ." -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3663,8 +3701,7 @@ msgstr "" " Даје позитиван резултат осим ако није дата неисправна опција или " "ОДРЕДБАПОСЛА." -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3698,6 +3735,7 @@ msgstr "" " -n сиг\tСИГ је број сигнала\n" " -l\tисписује називе сигнала; ако аргументи прате „-l“ подразумева\n" " \t се да су бројеви сигнала за које називи требају бити исписани\n" +" -L\tсиноним за „-l“\n" " \n" " „Kill“ је уграђеност шкољке из два разлога: омогућава да ИБ-ови послова " "буду\n" @@ -3709,7 +3747,7 @@ msgstr "" " Даје позитиван резултат осим ако није дата неисправна опција или ако не " "дође до грешке." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3793,7 +3831,8 @@ msgstr "" " Излазно стање:\n" " Ако се последњи АРГ процени на 0, исписује 1; у супротном даје 0." -#: builtins.c:987 +#: builtins.c:992 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3814,7 +3853,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3893,7 +3932,7 @@ msgstr "" " или ако се не достави неисправан описник датотеке као аргумент опције „-" "u“." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3913,8 +3952,7 @@ msgstr "" " Излазно стање:\n" " Даје N, или неуспех ако шкољка не извршава функцију или спис." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3999,7 +4037,7 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" -"Подешава или расподешava вредности опција шкољке и положајних параметара.\n" +"Подешава или расподешава вредности опција шкољке и положајних параметара.\n" " \n" " Мења вредност особина шкољке и положајних параметара, или\n" " приказује називе и вредности променљивих шкољке.\n" @@ -4069,8 +4107,8 @@ msgstr "" " по основи када је шкољка међудејствена.\n" " -P Ако је подешено, не решава симболичке везе приликом извршавања\n" " наредби као што је „cd“ која мења текући директоријум.\n" -" -T Ако је подешено, хватање ПРОЧИШЋАВАЊА се наслеђује функцијама " -"шкољке.\n" +" -T Ако је подешено, хватања ПРОЧИШЋАВАЊА и РЕЗУЛТАТА се наслеђују " +"функцијама шкољке.\n" " -- Додељује све преостале аргументе положајним параметрима.\n" " Ако нема преосталих аргумената, положајни параметри се\n" " расподешавају.\n" @@ -4086,7 +4124,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако није дата неисправна опција." -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4127,7 +4165,7 @@ msgstr "" " Даје позитиван резултат осим ако није дата неисправна опција или ако је " "НАЗИВ само за читање." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4161,7 +4199,7 @@ msgstr "" " Даје позитиван резултат осим ако је дата неисправна опција или је НАЗИВ " "неисправан." -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4203,7 +4241,7 @@ msgstr "" " Даје позитиван резултат осим ако није дата неисправна опција или ако је " "НАЗИВ неисправан." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4221,7 +4259,7 @@ msgstr "" " Излазно стање:\n" " Резултати су успешни осим ако N није негативно иливеће од $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4245,7 +4283,7 @@ msgstr "" " Даје стање последње извршене наредбе у ДАТОТЕЦИ; не успева\n" " ако назив ДАТОТЕКЕ не може бити прочитан." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4270,7 +4308,7 @@ msgstr "" " Даје позитиван резултат осим ако није укључено управљање послом или ако " "не дође до грешке." -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4434,7 +4472,7 @@ msgstr "" "ИЗРАЗ процени\n" " на нетачно или ако је дат неисправан аргумент." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4446,7 +4484,7 @@ msgstr "" " Ово је синоним за уграђеност „test“, али последњи аргумент мора\n" " бити дословна ], да поклопи отворену [." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4465,7 +4503,7 @@ msgstr "" " Излазно стање:\n" " Увек успешно." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4548,7 +4586,7 @@ msgstr "" " Даје позитиван резултат осим за неисправну ОДРЕДБА_СИГНАЛА или за " "неисправну опцију." -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4608,7 +4646,7 @@ msgstr "" " Даје позитиван резултат ако су пронађени сви НАЗИВИ; неуспех ако ниједан " "није пронађен." -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4703,7 +4741,7 @@ msgstr "" " Даје позитиван резултат осим ако се не достави неисправна опција или ако " "не дође до грешке." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4737,7 +4775,8 @@ msgstr "" " Даје позитиван резултат осим ако је РЕЖИМ неисправан или ако је дата " "неисправна опција." -#: builtins.c:1494 +#: builtins.c:1499 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4745,13 +4784,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4770,7 +4811,7 @@ msgstr "" " Исписује стање последњег ИБ-а; неуспех ако је ИБ неисправан или ако је\n" " дата неисправна опција." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4797,7 +4838,7 @@ msgstr "" "дата\n" " неисправна опција." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4819,7 +4860,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4850,7 +4891,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4886,7 +4927,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4915,7 +4956,7 @@ msgstr "" " Излазно стање:\n" " Стање резултата јесте стање резултата СПОЈНОГРЕДА." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4933,7 +4974,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4971,7 +5012,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4989,7 +5030,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5007,8 +5048,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5028,9 +5068,9 @@ msgstr "" " Основни НАЗИВ је „COPROC“.\n" " \n" " Излазно стање:\n" -" Даје излазно стање НАРЕДБЕ." +" Наредба копроцеса даје излазно стање 0." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5056,7 +5096,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако је НАЗИВ само за читање." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5074,7 +5114,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5098,7 +5138,7 @@ msgstr "" " Излазно стање:\n" " Даје стање настављеног посла." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5116,7 +5156,7 @@ msgstr "" " Излазно стање:\n" " Даје 1 ако се ИЗРАЗ процени на 0; у супротном даје 0." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5169,7 +5209,7 @@ msgstr "" " Излазно стање:\n" " 0 или 1 у зависности од вредност ИЗРАЗА." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5297,7 +5337,7 @@ msgstr "" " о наредбама које требају бити сачуване на списку " "историјата.\n" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5356,7 +5396,7 @@ msgstr "" "замена\n" " директоријума не успе." -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5409,7 +5449,7 @@ msgstr "" "измена\n" " директоријума не успе." -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5464,14 +5504,14 @@ msgstr "" " Даје позитиван резултат осим ако се не достави неисправна опција или ако " "не дође до грешке." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5503,7 +5543,7 @@ msgstr "" "дата\n" " неисправна опција или ако је НАЗИВ_ОПЦИЈЕ искључен." -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5570,7 +5610,8 @@ msgstr "" " Даје позитиван резултат осим ако није дата неисправна опција или ако не\n" " дође до грешке писања или доделе." -#: builtins.c:1953 +#: builtins.c:1961 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5588,10 +5629,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5619,7 +5664,7 @@ msgstr "" " Даје позитиван резултат осим ако се не достави неисправна опција или ако " "не дође до грешке." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5640,7 +5685,8 @@ msgstr "" " Даје позитиван резултат осим ако се не достави неисправна опција или ако " "не дође до грешке." -#: builtins.c:1996 +#: builtins.c:2006 +#, fuzzy msgid "" "Modify or display completion options.\n" " \n" @@ -5655,6 +5701,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5696,7 +5743,7 @@ msgstr "" "НАЗИВ\n" " нема одређену одредбу довршавања." -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5777,7 +5824,7 @@ msgstr "" "НИЗ само\n" " за читање или није индексирани низ." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/sv.gmo b/po/sv.gmo index ba977e8da..2875f6fe1 100644 Binary files a/po/sv.gmo and b/po/sv.gmo differ diff --git a/po/sv.po b/po/sv.po index 7ae3f0d6f..f90392179 100644 --- a/po/sv.po +++ b/po/sv.po @@ -1,138 +1,140 @@ # Swedish translation of bash -# Copyright © 2008, 2009, 2010, 2011, 2013, 2014, 2015 Free Software Foundation, Inc. +# Copyright © 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Göran Uddeborg , 2008, 2009, 2010, 2011, 2013, 2014, 2015. # -# $Revision: 1.20 $ +# Göran Uddeborg , 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018. +# +# $Revision: 1.24 $ msgid "" msgstr "" -"Project-Id-Version: bash 4.4-beta1\n" +"Project-Id-Version: bash 5.0-beta2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-11-01 10:54+0100\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2018-12-03 21:31+0100\n" "Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sv\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "felaktigt vektorindex" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: tar bort attributet namnreferens" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: det gÃ¥r inte att konvertera en indexerad vektor till associativ" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: ogiltig nyckel till associativ vektor" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: det gÃ¥r inte att tilldela till ickenumeriska index" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: mÃ¥ste använda index vid tilldelning av associativ vektor" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: det gÃ¥r inte att skapa: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: det gÃ¥r inte att hitta en tangentbindning för " "kommandot" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: första ickeblanka tecknet är inte '\"'" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "ingen avslutande ”%c” i %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: kolonseparator saknas" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "klammerexpansion: kan inte allokera minne för %s" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "klammerexpansion: misslyckades att allokera minne för %d element" +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "klammerexpansion: misslyckades att allokera minne för %u element" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "klammerexpansion: misslyckades att allokera minne för ”%s”" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "”%s”: ogiltigt aliasnamn" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "radredigering är inte aktiverat" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "”%s”: ogiltigt tangentbindningsnamn" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: det gÃ¥r inte att läsa: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "”%s”: det gÃ¥r inte att avbinda" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "”%s”: okänt funktionsnamn" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s är inte bundet till nÃ¥gra tangenter.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s kan anropas via " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "”%s”: det gÃ¥r inte att avbinda" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "slingräknare" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "endast meningsfullt i en ”for”-, ”while”- eller ”until”-slinga" @@ -146,234 +148,233 @@ msgstr "" " \n" " Utan UTTR, returnerar " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME är inte satt" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "för mÃ¥nga argument" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "ingen annan katalog" +msgstr "null-katalog" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD är inte satt" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "rad %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "varning: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: användning: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: flaggan kräver ett argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: numeriskt argument krävs" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: finns inte" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: ogiltig flagga" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: ogiltigt flaggnamn" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "”%s”: inte en giltig identifierare" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "ogiltigt oktalt tal" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "ogiltigt hexadecimalt tal" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "ogiltigt tal" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: ogiltig signalspecifikation" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "”%s”: inte en pid eller giltig jobbspecifikation" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: endast läsbar variabel" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s utanför giltigt intervall" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s utanför giltigt intervall" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: inget sÃ¥dant jobb" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: ingen jobbstyrning" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "ingen jobbstyrning" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: begränsat" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "begränsat" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: inte inbyggt i skalet" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "skrivfel: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "fel när terminalattribut ställdes in: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "fel när terminalattribut hämtades: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: fel när aktuell katalog hämtades: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: tvetydig jobbspecifikation" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "hjälp är inte tillgängligt i denna version" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: ogiltigt Ã¥tgärdsnamn" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: ingen kompletteringsspecifikation" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "varning: flaggan -F fungerar kanske inte som du väntar dig" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "varning: flaggan -C fungerar kanske inte som du väntar dig" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "kör inte en kompletteringsfunktion" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "kan endast användas i en funktion" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: en referensvariabel kan inte vara en vektor" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: att en namnreferensvariabel självrefererar är inte tillÃ¥tet" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: cirkulär namnreferens" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: ogiltigt variabelnamn för referens" +msgstr "”%s”: ogiltigt variabelnamn för referens" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "det gÃ¥r inte att använda ”-f” för att göra funktioner" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: endast läsbar funktion" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: citerad sammansatt tilldelning av vektorer undanbedes" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: det gÃ¥r inte att förstöra vektorvariabler pÃ¥ detta sätt" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: det gÃ¥r inte att konvertera en associativ vektor till indexerad" @@ -407,68 +408,68 @@ msgstr "%s: inte dynamiskt laddad" msgid "%s: cannot delete: %s" msgstr "%s: kan inte ta bort: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: är en katalog" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: inte en normal fil" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: filen är för stor" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: det gÃ¥r inte att köra binär fil" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: kan inte köra: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "utloggning\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "inte ett inloggningsskal: använd ”exit”" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Det finns stoppade jobb.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Det finns körande jobb.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "hittar inget kommando" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "historiespecifikation" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: det gÃ¥r inte att öppna temporärfil: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "aktuell" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "jobb %d startade utan jobbstyrning" @@ -483,28 +484,27 @@ msgstr "%s: ogiltig flagga -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: flaggan kräver ett argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashning avslaget" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: hashtabellen tom\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "träffar\tkommando\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Skalkommandon som matchar nyckelordet '" msgstr[1] "Skalkommandon som matchar nyckelorden '" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -512,12 +512,12 @@ msgstr "" "inget hjälpämne matchar ”%s”. Prova ”help help” eller ”man -k %s” eller " "”info %s”." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: det gÃ¥r inte att öppna: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -537,20 +537,21 @@ msgstr "" "En stjärna (*) bredvid ett namn betyder att det kommandot är avstängt.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "det gÃ¥r inte att använda mer än en av -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "historieposition" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: ogiltigt argument" +msgstr "%s: ogiltig tidsstämpel" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: historieexpansionen misslyckades" @@ -564,16 +565,16 @@ msgstr "%s: inlib misslyckades" msgid "no other options allowed with `-x'" msgstr "inga andra flaggor är tillÃ¥tna med ”-x”" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argument mÃ¥ste vara processer eller jobb-id:n" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Okänt fel" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "uttryck förväntades" @@ -582,69 +583,69 @@ msgstr "uttryck förväntades" msgid "%s: not an indexed array" msgstr "%s: inte en indexerad vektor" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ogiltig filbeskrivarspecifikation" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ogiltig filbeskrivare: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: ogiltigt radantal" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: ogiltig vektorstart" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ogiltigt kvantum för Ã¥teranrop" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "tomt vektorvariabelnamn" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "stöd för vektorvariabler krävs" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "”%s”: formateringstecken saknas" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "”%c”: ogiltig specifikation av tidsformat" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "”%c”: ogiltigt formateringstecken" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "varning: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "formattolkningsproblem: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "hexadecimal siffra saknas för \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "unicode-siffra saknas för \\%c" @@ -658,19 +659,19 @@ msgstr "ingen annan katalog" msgid "%s: invalid argument" msgstr "%s: ogiltigt argument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "katalogstacken är tom" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "katalogstackindex" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -712,7 +713,7 @@ msgstr "" " -N\tVisa den N:e posten räknat frÃ¥n höger i listan som visas\n" "\tav dirs när det anropas utan flaggor, räknat frÃ¥n noll." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -758,7 +759,7 @@ msgstr "" " \n" " Den inbyggda ”dirs” visar katalogstacken." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -801,41 +802,41 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: ogiltig tidsgränsspecifikation" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "läsfel: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "det gÃ¥r bara att göra ”return” frÃ¥n en funktion eller källinläst skript" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "det gÃ¥r inte att samtidigt ta bort en funktion och en variabel" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: det gÃ¥r inte att ta bort tilldelning" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: det gÃ¥r inte att ta bort tilldelning: endast läsbar %s" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: inte en vektorvariabel" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: inte en funktion" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: det gÃ¥r inte att exportera" @@ -844,20 +845,20 @@ msgstr "%s: det gÃ¥r inte att exportera" msgid "shift count" msgstr "skiftantal" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "det gÃ¥r inte att sätta och ta bort skalflaggor samtidigt" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ogiltigt skalflaggsnamn" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "filnamnsargument krävs" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: filen finns inte" @@ -870,61 +871,61 @@ msgstr "det gÃ¥r inte att suspendera" msgid "cannot suspend a login shell" msgstr "det gÃ¥r inte att suspendera ett inloggningsskal" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s är ett alias för ”%s”\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s är ett nyckelord i skalet\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s är en funktion\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s är en special inbyggd i skalet\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s är inbyggt i skalet\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s är %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s är hashad (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: ogiltigt gränsargument" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "”%c”: felaktigt kommando" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: kan inte avgöra gränsen: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "gräns" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: kan inte ändra gränsen: %s" @@ -943,358 +944,366 @@ msgstr "”%c”: ogiltig operator för symboliskt läge" msgid "`%c': invalid symbolic mode character" msgstr "”%c”: ogiltigt tecken för symboliskt läge" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " rad " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "senaste kommando: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Avbryter..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORMATION: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "okänt kommandofel" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "felaktig kommandotyp" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "felaktig anslutning" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "felaktigt hopp" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: obunden variabel" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atiden gick ut i väntan pÃ¥ indata: automatisk utloggning\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "det gÃ¥r inte att omdirigera standard in frÃ¥n /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: ”%c”: ogiltigt formateringstecken" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] finns fortfarande" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "rörfel" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: maximal nästning av eval överskriden (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximal nästning av source överskriden (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximal nästning av funktioner överskriden (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: begränsat: det gÃ¥r inte att ange ”/” i kommandonamn" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: kommandot finns inte" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: felaktig tolk" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: det gÃ¥r inte att köra binär fil: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "”%s”: är en speciell inbyggd" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "det gÃ¥r inte att duplicera fb %d till fb %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "rekursionsnivÃ¥ i uttryck överskriden" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "underspill i rekursionsstacken" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "syntaxfel i uttrycket" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "försök att tilldela till en icke-variabel" -#: expr.c:495 expr.c:858 +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "syntaxfel i variabeltilldelning" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "division med 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "fel: felaktig expassign-symbol" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "”:” förväntades i villkorligt uttryck" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "exponenten är mindre än 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "en identifierare förväntades efter pre-ökning eller pre-minskning" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "”)” saknas" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "syntaxfel: en operand förväntades" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "syntaxfel: ogiltig aritmetisk operator" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (felsymbol är ”%s”)" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "ogiltig aritmetisk bas" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "värdet är för stort för basen" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: uttrycksfel\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: det gÃ¥r inte att komma Ã¥t föräldrakatalogen" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "det gÃ¥r inte att Ã¥terställa fördröjningsfritt läge för fb %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "det gÃ¥r inte att allokera en ny filbeskrivare för bashindata frÃ¥n fb %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffert finns redan för ny fb %d" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp rör" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "avgrenad pid %d finns i körande jobb %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "tar bort stoppat jobb %d med processgrupp %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) i the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) markerad som fortfarande vid liv" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ingen sÃ¥dan pid" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Klart" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Stoppad" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Stoppad(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Kör" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Klart(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Avslut %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Okänd status" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(minnesutskrift skapad) " -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (ak: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "barns setpgid (%ld till %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld är inte ett barn till detta skal" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ingen uppgift om process %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: jobb %d är stoppat" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: jobbet har avslutat" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: jobb %d är redan i bakgrunden" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: slÃ¥r pÃ¥ WNOHANG för att undvika oändlig blockering" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: rad %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (minnesutskrift skapad)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(ak nu: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp misslyckades" -#: jobs.c:4104 +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: ingen jobbstyrning i bakgrunden" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: linjedisciplin" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "det gÃ¥r inte att sätta terminalprocessgrupp (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "ingen jobbstyrning i detta skal" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: försäkran misslyckades: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1303,39 +1312,39 @@ msgstr "" "\r\n" "malloc: %s:%d: försäkran gick fel\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "okänd" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: block pÃ¥ frilista överskrivet" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: anropad med redan frigjort block som argument" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: anropad med oallokerat block som argument" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underspill upptäckt: mh_nbytes utanför giltigt intervall" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: start- och slutstyckesstorlekar skiljer" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: anropat med oallokerat block som argument" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underspill upptäckt: mh_nbytes utanför giltigt intervall" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start- och slutstyckesstorlekar skiljer" @@ -1377,22 +1386,22 @@ msgstr "%s: felaktig specifikation av nätverkssökväg" msgid "network operations not supported" msgstr "nätverksoperationer stöds inte" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: det gÃ¥r inte att ändra lokal (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: det gÃ¥r inte att ändra lokal (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: det gÃ¥r inte att ändra lokal (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: det gÃ¥r inte att ändra lokal (%s): %s" @@ -1410,151 +1419,153 @@ msgstr "Du har ny post i $_" msgid "The mail in %s has been read\n" msgstr "Posten i %s har lästs\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "syntaxfel: aritmetiskt uttryck krävs" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "syntaxfel: oväntat ”;”" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "syntaxfel: ”((%s))”" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: felaktig instruktionstyp %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "här-dokument pÃ¥ rad %d avgränsas av filslut (ville ha ”%s”)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "make_redirection: omdirigeringsinstruktion ”%d” utanför giltigt intervall" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) överstiger SIZE_MAX (%lu): raden " +"avhuggen" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "maximalt antal av här-dokument överskridet" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "oväntat filslut vid sökning efter matchande ”%c”" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "oväntat filslut vid sökning efter ”]]”" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaxfel i villkorligt uttryck: oväntad symbol ”%s”" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "syntaxfel i villkorligt uttryck" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "oväntad symbol ”%s”, ”)” förväntades" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "”)” förväntades" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "oväntat argument ”%s” till villkorlig unär operator" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "oväntat argument till villkorlig unär operator" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "oväntad symbol ”%s”, villkorlig binär operator förväntades" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "villkorlig binär operator förväntades" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "oväntat argument ”%s” till villkorlig binär operator" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "oväntat argument till villkorlig binär operator" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "oväntad symbol ”%c” i villkorligt kommando" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "oväntad symbol ”%s” i villkorligt kommando" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "oväntad symbol %d i villkorligt kommando" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaxfel nära den oväntade symbolen ”%s”" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "syntaxfel nära ”%s”" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "syntaxfel: oväntat filslut" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "syntaxfel" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Använd ”%s” för att lämna skalet.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "oväntat filslut när matchande ”)” söktes" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "komplettering: funktion ”%s” finns inte" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: möjlig slinga av omförsök" #: pcomplib.c:182 #, c-format @@ -1580,90 +1591,94 @@ msgstr "xtrace_set: NULL-filpekare" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ”%c”: ogiltigt formateringstecken" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "filbeskrivare utanför giltigt intervall" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: tvetydig omdirigering" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: det gÃ¥r inte att skriva över en existerande fil" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: begränsat: det gÃ¥r inte att omdirigera utdata" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "det gÃ¥r inte att skapa temporärfil för här-dokument: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: det gÃ¥r inte att tilldela fb till variabel" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port stöds inte utan nätverksfunktion" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "omdirigeringsfel: det gÃ¥r inte att duplicera fb" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "hittade inte /tmp, var god skapa!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp mÃ¥ste vara ett giltigt katalognamn" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "läget för snygg utskrift ignoreras i interaktiva skal" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ogiltig flagga" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "det gÃ¥r sätta uid till %d: effektiv uid %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "det gÃ¥r inte att sätta gid till %d: effektiv gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "kan inte starta felsökaren, felsökningsläge avaktiverat" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: är en katalog" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Jag har inget namn!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1672,52 +1687,52 @@ msgstr "" "Användning:\t%s [GNU lÃ¥ng flagga] [flagga] ...\n" "\t\t%s [GNU lÃ¥ng flagga] [flagga] skriptfil ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU lÃ¥nga flaggor:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Skalflaggor:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD eller -c kommando eller -O shopt_flagga\t\t(bara uppstart)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s eller -o flagga\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Skriv ”%s -c 'help set'” för mer information om skalflaggor.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Skriv ”%s -c help” för mer information om inbyggda skalkommandon.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" "Använd kommandot ”bashbug” för att rapportera fel.\n" "Skicka synpunkter pÃ¥ översättningen till .\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "bash hemsida: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" "Allmän hjälp i att använda GNU-program: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: ogiltig operation" @@ -1891,92 +1906,96 @@ msgstr "Okänd signal nr " msgid "Unknown Signal #%d" msgstr "Okänd signal nr %d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "felaktig substitution: ingen avslutande ”%s” i %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: det gÃ¥r inte att tilldela listor till vektormedlemmar" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "det gÃ¥r inte att skapa rör för processubstitution" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "det gÃ¥r inte att skapa barn för processubstitution" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "det gÃ¥r inte att öppna namngivet rör %s för läsning" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "det gÃ¥r inte att öppna namngivet rör %s för skrivning" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "det gÃ¥r inte att duplicera namngivet rör %s som fb %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "felaktig ersättning: ingen avslutande ”`” i %s" +msgstr "kommandoersättning: ignorerade nollbyte i indata" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "det gÃ¥r inte att skapa rör för kommandosubstitution" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "det gÃ¥r inte att skapa barn för kommandosubstitution" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: det gÃ¥r inte att duplicera rör som fb 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: ogiltigt variabelnamn för referens" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: felaktig substitution" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: felaktig indirekt expansion" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "%s: felaktigt variabelnamn" -#: subst.c:6854 +#: subst.c:7056 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parametern är inte satt" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametern tom eller inte satt" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: delstränguttryck < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: felaktig substitution" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: det gÃ¥r inte att tilldela pÃ¥ detta sätt" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1984,12 +2003,12 @@ msgstr "" "framtida versioner av skalet kommer att framtvinga evaluering som en " "aritmetisk substitution" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "felaktig ersättning: ingen avslutande ”`” i %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "ingen matchning: %s" @@ -2012,30 +2031,35 @@ msgstr "”)” förväntades" msgid "`)' expected, found %s" msgstr "”)” förväntades, fann %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: unär operator förväntades" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: binär operator förväntades" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "”]” saknas" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "ogiltigt signalnummer" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "fällhanterare: maximal nivÃ¥ av fällhanterare överskriden (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: felaktigt värde i trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2043,87 +2067,86 @@ msgstr "" "run_pending_traps: signalhanterare är SIG_DFL, skickar om %d (%s) till mig " "själv" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: felaktig signal %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "fel vid import av funktionsdefinition för ”%s”" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "skalnivÃ¥ (%d) för hög, Ã¥terställer till 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ingen funktionskontext i aktuellt sammanhang" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variabeln fÃ¥r inte tilldelas ett värde" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: ogiltigt variabelnamn för referens" +msgstr "%s: tilldelar ett heltal till en namnreferens" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ingen funktionskontext i aktuellt sammanhang" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s har tom exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "ogiltigt tecken %d i exportstr för %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "inget ”=” i exportstr för %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: huvudet pÃ¥ shell_variables är inte en funktionskontext" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ingen kontext global_variables" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: huvudet pÃ¥ shell_variables är inte en temporär omgivningsräckvidd" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: gÃ¥r inte att öppna som FILE" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: ogiltigt värde för spÃ¥rningsfilbeskrivare" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: kompatibilitetsvärde utanför giltigt intervall" #: version.c:46 version2.c:46 -#, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright © 2015 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Copyright © 2018 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2147,22 +2170,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Det finns INGEN GARANTI, sÃ¥ lÃ¥ngt lagen tillÃ¥ter." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: det gÃ¥r inte att allokera %lu byte (%lu byte allokerade)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: det gÃ¥r inte att allokera %lu byte" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: det gÃ¥r inte att allokera %lu byte (%lu byte allokerade)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: det gÃ¥r inte att allokera %lu byte" @@ -2290,9 +2313,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobbspec ...] eller jobs -x kommando [arg]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [jobbspec ...]" +msgstr "disown [-h] [-ar] [jobbspec … | pid …]" #: builtins.c:134 msgid "" @@ -2375,8 +2397,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [rättigheter]" #: builtins.c:177 -msgid "wait [-n] [id ...]" -msgstr "wait [-n] [id …]" +msgid "wait [-fn] [id ...]" +msgstr "wait [-fn] [id …]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2468,13 +2490,13 @@ msgstr "printf [-v var] format [argument]" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o flagga] [-A Ã¥tgärd] [-G globmnst] [-" -"W ordlista] [-F funktion] [-C kommando] [-X filtermnst] [-P prefix] [-S " -"suffix] [namn ...]" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o flagga] [-A Ã¥tgärd] [-G globmnst] " +"[-W ordlista] [-F funktion] [-C kommando] [-X filtermnst] [-P prefix] [-S " +"suffix] [namn …]" #: builtins.c:235 msgid "" @@ -2486,8 +2508,8 @@ msgstr "" "suffix] [ord]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "compopt [-o|+o flagga] [-DE] [namn ...]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o flagga] [-DEI] [namn …]" #: builtins.c:242 msgid "" @@ -2499,11 +2521,11 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -"readarray [-n antal] [-O start] [-s antal] [-t] [-u fb] [-C Ã¥teranrop] [-c " -"kvanta] [vektor]" +"readarray [-d avgränsare] [-n antal] [-O start] [-s antal] [-t] [-u fb] [-C " +"Ã¥teranrop] [-c kvanta] [vektor]" #: builtins.c:256 msgid "" @@ -2693,7 +2715,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Exekvera en i skalet inbyggd funktion.\n" " \n" @@ -2937,11 +2959,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2974,11 +2996,13 @@ msgstr "" " -a\tför att göra NAMN till indexerade vektorer (om det stöds)\n" " -A\tför att göra NAMN till associativa vektorer (om det stöds)\n" " -i\tför att ge NAMN attributet ”heltal”\n" -" -l\tför att konvertera NAMN till gemena vid tilldelning\n" +" -l\tför att konvertera värdet av varje NAMN till gemena vid " +"tilldelning\n" " -n\tgör NAMN till en referens till variabeln som namnges som värde\n" " -r\tför att göra NAMN endast läsbart\n" " -t\tför att ge NAMN attributet ”spÃ¥ra”\n" -" -u\tför att konvertera NAMN till versaler vid tilldelning\n" +" -u\tför att konvertera värdet av varje NAMN till versaler vid " +"tilldelning\n" " -x\tför att exportera NAMN\n" " \n" " Användning av ”+” istället för ”-” slÃ¥r av det angivna attributet.\n" @@ -2995,7 +3019,6 @@ msgstr "" " variabeltilldelning inträffar." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3003,7 +3026,7 @@ msgid "" msgstr "" "Sätt variabelvärden och -attribut.\n" " \n" -" FörÃ¥ldrat. Se ”help declare”." +" En synonym för ”declare”. Se ”help declare”." #: builtins.c:538 msgid "" @@ -3033,6 +3056,7 @@ msgstr "" " variabeltilldelning inträffar eller skalet inte exekverar en funktion." #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3061,6 +3085,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3095,7 +3125,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte ett skrivfel inträffar." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3117,7 +3147,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte ett skrivfel inträffar." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3171,7 +3201,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte NAMN inte är inbyggd i skalet eller ett fel\n" " inträffar." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3191,7 +3221,7 @@ msgstr "" " Slutstatus:\n" " Returnerar slutstatus av kommandot eller framgÃ¥ng om kommandot är tomt." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3268,7 +3298,7 @@ msgstr "" " Returnerar framgÃ¥ng om en flagga hittas, misslyckas om slutet av\n" " flaggorna nÃ¥s eller ett fel inträffar." -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3309,7 +3339,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte KOMMANDO inte finns eller ett fel vid\n" " omdirigering inträffar." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3321,7 +3351,7 @@ msgstr "" " Avslutar skalet med statusen N. Om N utelämnas är slutstatusen den\n" " hos det sist körda kommandot." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3334,7 +3364,7 @@ msgstr "" " Avslutar ett inloggningsskal med slutstatus N. Returnerar ett fel om\n" " det inte körs i ett inloggningsskal." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3389,7 +3419,7 @@ msgstr "" " Returnerar framgÃ¥ng eller status pÃ¥ exekverat kommando, skilt frÃ¥n noll\n" " om ett fel inträffar." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3410,7 +3440,7 @@ msgstr "" " Status pÃ¥ kommandot som placerades i förgrunden, eller misslyckande om\n" " ett fel inträffar." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3435,7 +3465,7 @@ msgstr "" "fel\n" " inträffar." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3478,7 +3508,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte NAMN inte hittas eller en ogiltig flagga ges." -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3493,7 +3523,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3519,8 +3549,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte MÖNSTER inte finns eller en ogiltig flagga " "ges." -#: builtins.c:836 -#, fuzzy +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3529,7 +3558,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3560,13 +3590,14 @@ msgstr "" " \n" " Flaggor:\n" " -c\tnollställ historielistan genom att ta bort alla poster\n" -" -d avstÃ¥nd\tta bort historieposten pÃ¥ avstÃ¥nd AVSTÅND\n" +" -d avstÃ¥nd\tta bort historieposten pÃ¥ position AVSTÅND. Negativa\n" +" \t\tavstÃ¥nd räknar baklänges frÃ¥n slutet av historielistan \n" " \n" " -a\tlägg till historierader frÃ¥n denna session till historiefilen\n" " -n\tläs alla historierader som inte redan lästs frÃ¥n historiefilen\n" +" \t\toch lägg till dem till historielistan\n" " -r\tläs historiefilen och lägg till innehÃ¥llet till historielistan\n" -" -w\tskriv den aktuella historien till historiefilen och lägg till\n" -" \t\tdem till historielistan\n" +" -w\tskriv den aktuella historien till historiefilen\n" " \n" " -p\tutför historieexpansion pÃ¥ varje ARG och visa resultatet utan\n" " \t\tatt lagra det i historielistan\n" @@ -3584,7 +3615,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3628,7 +3659,7 @@ msgstr "" "inträffar.\n" " Om -x används returneras slutstatus frÃ¥n KOMMANDO." -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3658,8 +3689,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga eller JOBBSPEC ges." -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3693,6 +3723,7 @@ msgstr "" " -n sig\tSIG är ett signalnummer\n" " -l\tlista signalnamnen. Om argument följer ”-l” antas de vara\n" " \t\tsignalnummer som namn skall listas för\n" +" -L\tsynonym för -l\n" " \n" " Kill är inbyggt i skalet av tvÃ¥ skäl: det tillÃ¥ter att jobb-id:n " "används\n" @@ -3704,7 +3735,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga angivits eller ett fel\n" " inträffar." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3792,7 +3823,7 @@ msgstr "" " Om det sista ARG beräknas till 0, returnerar let 1; let returnerar 0 " "annars." -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3813,7 +3844,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3861,7 +3892,7 @@ msgstr "" " \t\tvariabeln VEKTOR, med start frÃ¥n noll\n" " -d avgr\tfortsätt tills det första tecknet i AVGR lästs, istället för\n" " \t\tnyrad\n" -" -e\tanvänd Readline för att fÃ¥ in raden i ett interaktivt skal\n" +" -e\tanvänd Readline för att fÃ¥ in raden\n" " -i text\tAnvänd TEXT som starttext för Readline\n" " -n ntkn\treturnera efter att ha läst NTKN tecken istället för att\n" " \t\tvänta pÃ¥ en nyrad, men ta hänsyn till en avgränsare om färre\n" @@ -3890,7 +3921,7 @@ msgstr "" "eller\n" " en ogiltig filbeskrivare ges som argument till -u." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3911,8 +3942,7 @@ msgstr "" " Returnerar N, eller misslyckande om skalet inte kör en funktion eller\n" " skript." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4067,7 +4097,7 @@ msgstr "" " standard när skalet är interaktivt.\n" " -P Om satt löses inte symboliska länkar upp när kommandon sÃ¥som cd\n" " körs som ändrar aktuell katalog.\n" -" -T Om satt ärvs DEBUG-fällan av skalfunktioner.\n" +" -T Om satt ärvs DEBUG och RETURN-fällorna av skalfunktioner.\n" " -- Tilldela eventuella Ã¥terstÃ¥ende argument till " "positionsparametrar.\n" " Om det inte finns nÃ¥gra Ã¥terstÃ¥ende argument nollställs\n" @@ -4086,7 +4116,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges." -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4126,7 +4156,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller NAMN endast är\n" " läsbart." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4159,7 +4189,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller NAMN är ogiltigt." -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4197,7 +4227,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller NAMN är ogiltigt." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4216,7 +4246,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte N är negativt eller större än $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4240,7 +4270,7 @@ msgstr "" " Returnerar status pÃ¥ det sista kommandot som körs i FILNAMN, misslyckas\n" " om FILNAMN inte kan läsas." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4266,7 +4296,7 @@ msgstr "" "fel\n" " inträffar." -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4426,7 +4456,7 @@ msgstr "" " Returnerar framgÃ¥ng om UTTR beräknas till sant. Misslyckas ifall UTTR\n" " beräknas till falskt eller ett ogiltigt argument ges." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4438,7 +4468,7 @@ msgstr "" " Detta är en synonym till det inbyggda ”test”, men det sista argumentet\n" " mÃ¥ste vara en bokstavlig ”]”, för att matcha den inledande ”[”." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4458,7 +4488,7 @@ msgstr "" " Slutstatus:\n" " Lyckas alltid." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4536,7 +4566,7 @@ msgstr "" "flagga\n" " ges." -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4591,7 +4621,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om alla NAMNen finns, misslyckas om nÃ¥got inte finns." -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4688,7 +4718,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga anges eller ett fel " "inträffar." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4724,7 +4754,7 @@ msgstr "" "flagga\n" " ges." -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4732,13 +4762,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4755,11 +4787,14 @@ msgstr "" " Om flaggan -n ges väntar pÃ¥ nästa jobb att avsluta och returnera dess\n" " slutstatus.\n" " \n" +" Om flaggan -f anges, och jobbstyrning är aktiverat, väntar pÃ¥ att det\n" +" angivna ID:t avslutas, istället för att vänta pÃ¥ att det ändrar status.\n" +" \n" " Slutstatus:\n" " Returnerar status pÃ¥ den sista ID, misslyckas ifall ID är ogiltig\n" " eller en ogiltig flagga ges." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4783,7 +4818,7 @@ msgstr "" " Returnerar status pÃ¥ den sista PID, misslyckas ifall PID är ogiltig\n" " eller en ogiltig flagga ges." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4805,7 +4840,7 @@ msgstr "" " Slutstatus:\n" " Returnerar status för det sist exekverade kommandot." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4835,7 +4870,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4870,7 +4905,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4899,7 +4934,7 @@ msgstr "" " Slutstatus:\n" " Returstatusen är returstatusen frÃ¥n RÖR." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4917,7 +4952,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4952,7 +4987,7 @@ msgstr "" " Slutstatus:\n" " Returnerar status frÃ¥n det sist exekverade kommandot." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4970,7 +5005,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4988,8 +5023,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5009,9 +5043,9 @@ msgstr "" " ”COPROC”.\n" " \n" " Slutstatus:\n" -" Returnerar statusen frÃ¥n KOMMANDO." +" Kommandot coproc returnerar slutstatusen 0." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5034,7 +5068,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte NAMN endast är läsbart." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5052,7 +5086,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5076,7 +5110,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen pÃ¥ det Ã¥terupptagna jobbet." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5094,7 +5128,7 @@ msgstr "" " Slutstatus:\n" " Returnerar 1 om UTTRYCK beräknas till 0, returnerar 0 annars." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5146,7 +5180,7 @@ msgstr "" " Slutstatus:\n" " 0 eller 1 beroende pÃ¥ värdet av UTTRYCK." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5251,7 +5285,7 @@ msgstr "" " HISTIGNORE\tEn kolonseparerad lista av mönster som används för att\n" " \t\tbestämma vilka kommandon som skall sparas i historielistan.\n" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5309,7 +5343,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte ett ogiltigt argument ges eller bytet av\n" " katalog misslyckas." -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5359,7 +5393,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte ett ogiltigt argument ges eller bytet av\n" " katalog misslyckas." -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5412,14 +5446,13 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5435,7 +5468,8 @@ msgstr "" "SlÃ¥ pÃ¥ och av skalflaggor.\n" " \n" " Ändra inställningen av varje flagga FLGNAMN. Utan nÃ¥gra flaggargument\n" -" listas alla skalflaggor med en indikation om var och en är satt.\n" +" lista varje angivet FLGNAMN, eller alla skalflaggor med om inga FLGNAMN\n" +" anges, en indikation av huruvida var och en är satt eller inte.\n" " \n" " Flaggor:\n" " -o\tbegränsa FLGNAMN till de som kan användas med ”set -o”\n" @@ -5448,7 +5482,7 @@ msgstr "" " Returnerar framgÃ¥ng om FLGNAMN är aktiverat, misslyckas om en ogiltig\n" " flagga ges eller FLGNAMN är avaktiverat." -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5516,7 +5550,8 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett skriv-\n" " eller tilldelningsfel inträffar." -#: builtins.c:1953 +#: builtins.c:1961 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5534,10 +5569,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5558,15 +5597,15 @@ msgstr "" " -E\tanvänd kompletteringarna och Ã¥tgärderna för ”tomma” kommandon\n" " — kompletteringar som försöks pÃ¥ en tom rad\n" " \n" -" När komplettering försöker göras försöks Ã¥tgärder i den ordning de\n" -" versala flaggorna är uppräknade ovan. Flaggan -D har företräde framför\n" -" -E.\n" +" När komplettering försöker göras används Ã¥tgärderna i den ordning de\n" +" versala flaggorna är uppräknade ovan. Om flera flaggor anges har\n" +" flaggan -D företräde framför -E, och bÃ¥da har företräde framför -I.\n" " \n" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5588,7 +5627,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -5603,6 +5642,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5630,6 +5670,7 @@ msgstr "" " \t-o flagga\tSätt kompletteringsflagga FLAGGA för varje NAMN\n" " \t-D\t\tÄndra flaggorna för ”standard” kommandokomplettering\n" " \t-E\t\tÄndra flaggorna för den ”tomma” kommandokompletteringen\n" +" \t-I\t\tÄndra flaggorna för komplettering av den första flaggan.\n" " \n" " Genom att använda ”+o” istället för ”-o” slÃ¥s den angivna flaggan av.\n" " \n" @@ -5646,7 +5687,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller NAMN inte har\n" " nÃ¥gon kompletteringsspecifikation definierad." -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5723,7 +5764,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller VEKTOR är\n" " oföränderlig eller inte en indexerad vektor." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5732,18 +5773,3 @@ msgstr "" "Läs rader frÃ¥n en fil till en vektorvariabel.\n" " \n" " En synonym till ”mapfile”." - -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright © 2014 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "true" - -#~ msgid "false" -#~ msgstr "false" - -#~ msgid "times" -#~ msgstr "times" diff --git a/po/tr.gmo b/po/tr.gmo index a4a89c6fe..81c67e714 100644 Binary files a/po/tr.gmo and b/po/tr.gmo differ diff --git a/po/tr.po b/po/tr.po index a144d8224..a90faa884 100644 --- a/po/tr.po +++ b/po/tr.po @@ -3,135 +3,136 @@ # This file is distributed under the same license as the bash package. # # Nilgün Belma Bugüner , 2006. -# Volkan Gezer , 2013, 2014. +# Volkan Gezer , 2013, 2014, 2017. msgid "" msgstr "" -"Project-Id-Version: bash 4.3-rc2\n" +"Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2014-10-24 16:11+0200\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2017-05-05 11:49+0100\n" "Last-Translator: Volkan Gezer \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tr\n" -"X-Generator: Lokalize 1.5\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Lokalize 2.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "hatalı dizi indisi" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: removing nameref niteliği kaldırılıyor" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: indisli dizi, ilişkisel diziye dönüştürülemez" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: geçersiz ilişkisel dizi anahtarı" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: sayısal olmayan indise atama yapılamaz" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: ilişkisel bir dizi ataması yapılırken indis kullanılmalıdır" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: oluşturulamıyor: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: komut için kısayol bulunamıyor" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: boşluk olmayan ilk karakter `\"' değil" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "%2$s içinde kapatan `%1$c' yok" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: ikinokta imi eksik" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "destek genişletme: %s için bellek ayrılamıyor" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "destek genişletme: %d öge için bellek ayrılamıyor" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "destek genişletme: `%s' için bellek ayrılamıyor" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': geçersiz takma isim" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "satır düzenleme etkin değil" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': kısayol ismi geçersiz" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: okunamıyor: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': kısayol değiştirilemiyor" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': işlev ismi bilinmiyor" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s için bir kısayol atanmamış.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s bunun üzerinden çağrılabilir: " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': kısayol değiştirilemiyor" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "döngü sayısı" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "sadece bir `for', `while' veya `until' döngüsünde anlamlı" @@ -145,234 +146,233 @@ msgstr "" " \n" " İFADE olmadan, şu döner " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME atanmamış" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "çok fazla argüman" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "yığıtın tepesinde kalan dizine geçer." +msgstr "boş dizini" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD boş" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "satır %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "uyarı: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: kullanım: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: seçenek bir argüman gerektirir" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: sayısal argüman gerekli" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s:yok" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: seçenek geçersiz" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: seçenek ismi geçersiz" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': geçerli bir belirteç değil" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "geçersiz sekizli sayı" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "geçersiz onaltılık sayı" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "geçersiz sayı" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: sinyal belirtimi geçersiz" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': geçerli bir iş belirtimi veya süreç numarası değil" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: salt okunur değişken" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s aralık dışı" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argüman" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s aralık dışı" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: böyle bir iş yok" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: iş denetimi yok" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "iş denetimi yok" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: kısıtlı" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "kısıtlı" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: bir kabuk yerleşiği değil" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "yazma hatası: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "uçbirim nitelikleri ayarlanırken hata: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "uçbirim nitelikleri alınırken hata: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: geçerli dizin alınırken hata: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: iş belirtimi belirsiz" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" -msgstr "" +msgstr "bu sürümde yardım kullanılamıyor" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: eylem adı geçersiz" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: tamamlama belirtimi yok" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "uyarı: -F seçeneği umduğunuz gibi çalışmayabilir" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "uyarı: -C seçeneği umduğunuz gibi çalışmayabilir" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "şuan tamamlama işlevi çalıştırılmıyor" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "sadece bir işlevde kullanılabilir" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: referans değeri bir dizi olamaz" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: nameref değişkeninin kendine yaptığı referanslara izin verilmiyor" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: çembersel isim referansı" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: dosya izleme tanımlayıcısı için geçersiz değer" +msgstr "`%s': dosya izleme tanımlayıcısı için geçersiz değer" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "işlev yapmak için `-f' kullanılamaz" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: salt okunur işlev" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "" +msgstr "%s: alıntılanmış bileşik dizi ataması artık kullanılmıyor" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: dizi değişkenleri bu yolla iptal edilemez" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: ilişkisel dizi, indisli diziye dönüştürülemez" @@ -394,7 +394,7 @@ msgstr "%2$s paylaşımlı nesnesinde %1$s bulunamıyor: %3$s" #: builtins/enable.def:387 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "" +msgstr "%s için yükleme ifadesi hata döndürdü (%d): yüklenmedi" #: builtins/enable.def:512 #, c-format @@ -406,68 +406,68 @@ msgstr "%s: özdevimli olarak yüklenmemiş" msgid "%s: cannot delete: %s" msgstr "%s: silinemiyor: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: bir dizin" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: bir dosya değil" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: dosya çok büyük" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ikili dosya çalıştırılamıyor" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: çalıştırılamıyor: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "çıkış\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "oturum açma kabuğu değil: `exit' kullanın" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Durmuş işler var.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Çalışan görevler mevcut.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "komut yok" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "geçmiş belirtimi" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: geçici dosya açılamıyor: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "şimdiki" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "%d. iş, iş denetimsiz başlamış" @@ -482,28 +482,27 @@ msgstr "%s: kuraldışı seçenek -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: seçenek bir argüman gerektirir -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "çitleme iptal edildi" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: çitleme tablosu boş\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "eşleşme\tkomut\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Bu anahtar sözcükle eşleşen komutlar: `" msgstr[1] "Bu anahtar sözcüklerle eşleşen komutlar: `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -511,12 +510,12 @@ msgstr "" "`%s' ile ilgili bir yardım metni yok. `help help' veya `man -k %s' ya da " "`info %s'.yazmayı deneyebilirsiniz." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: açılamıyor: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -536,20 +535,21 @@ msgstr "" "Bir ismin yanında bir yıldız imi (*) varsa komut iptal edilmiş demektir.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "tek bir -anrw kullanılabilir" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "geçmiş konumu" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: geçersiz argüman" +msgstr "%s: geçersiz zaman damgası" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: geçmiş yorumlaması başarısız" @@ -563,16 +563,16 @@ msgstr "%s: inlib başarısız" msgid "no other options allowed with `-x'" msgstr "`-x' ile başka seçenek kullanılamaz" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argümanlar süreç veya iş kimlikleri olmalı" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Bilinmeyen hata" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "ifade bekleniyordu" @@ -581,69 +581,69 @@ msgstr "ifade bekleniyordu" msgid "%s: not an indexed array" msgstr "%s: bir sıralı dizi değil" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: dosya tanıtıcı belirtimi geçersiz" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: dosya tanıtıcı geçersiz: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: geçersiz satır sayısı" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: geçersiz dizi kökeni" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: geçersiz geri çağırım niceliği" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "boş bir dizi değişken adı" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "dizi değişken desteği gerekli" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "`%s': biçim karakteri eksik" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': geçersiz zaman biçimi belirtimi" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "`%c': biçim karakteri geçersiz" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "uyarı: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "biçim ayıklama sorunu: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "\\x için onaltılık rakam eksik" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "evrensel kod rakamı eksik \\%c" @@ -657,19 +657,19 @@ msgstr "başka dizin yok" msgid "%s: invalid argument" msgstr "%s: geçersiz argüman" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "dizin yığını boş" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "dizin yığını indisi" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -711,7 +711,7 @@ msgstr "" " -N\tDizinler tarafından gösterilen listenin sağından başlayarak\n" "\tN'inci girdiyi gösterir. Seçenek kullanılmadığında sıfırdan başlar." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -756,7 +756,7 @@ msgstr "" " \n" " Dizin yığıtını `dirs' komutuyla görebilirsiniz." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -799,62 +799,62 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: zamanaşımı belirtimi geçersiz" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "okuma hatası: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "sadece bir işlev veya betikten kaynaklı olarak `return' yapılabilir" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "bir işlev ve bir değişken aynı anda unset yapılamaz" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: unset yapılamaz" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s:unset yapılamaz: %s salt okunur" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: bir dizi değişkeni değil" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: bir işlev değil" -#: builtins/setattr.def:196 -#, fuzzy, c-format +#: builtins/setattr.def:194 +#, c-format msgid "%s: cannot export" -msgstr "%s: unset yapılamaz" +msgstr "%s: export yapılamıyor" #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "shift sayısı" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "kabuk seçenekleri aynı anda hem atanıp hem de iptal edilemez" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: kabuk seçenek ismi geçersiz" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "dosya ismi argüman gerekir" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: dosya yok" @@ -867,61 +867,61 @@ msgstr "engellenemez" msgid "cannot suspend a login shell" msgstr "bir oturum açma kabuğu engellenemez" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s `%s' için takma addır\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s bir kabuk anahtar sözcüğüdür\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s bir işlevdir\n" -#: builtins/type.def:300 -#, fuzzy, c-format +#: builtins/type.def:299 +#, c-format msgid "%s is a special shell builtin\n" -msgstr "%s bir kabuk yerleşiğidir\n" +msgstr "%s özel bir kabuk yerleşiğidir\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s bir kabuk yerleşiğidir\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s %s'dir\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s çitilmiş (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: sınırlama argümanı geçersiz" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': hatalı komut" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: sınır alınamıyor: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "sınır" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: sınır değiştirilemiyor: %s" @@ -940,358 +940,368 @@ msgstr "`%c': simgesel kip işleci geçersiz" msgid "`%c': invalid symbolic mode character" msgstr "`%c': simgesel kip karakteri geçersiz" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " satır " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "son komut: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Çıkılıyor..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "BİLGİLENDİR:" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "bilinmeyen komut hatası" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "hatalı komut türü" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "hatalı bağlantı" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "hatalı sıçrama" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: bağlanmamış değişken" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\agirdi beklerken zamanaşımı: auto-logout\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "/dev/null'dan standart girdiye yönlendirme yapılamaz: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': biçim karakteri geçersiz" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] hala mevcut" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "iletişim tüneli hatası" -#: execute_cmd.c:4496 -#, fuzzy, c-format +#: execute_cmd.c:4671 +#, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "%s: azami fonksiyon yuvalama sınırı aşıldı (%d)" +msgstr "eval: azami eval yuvalama sınırı aşıldı (%d)" -#: execute_cmd.c:4508 -#, fuzzy, c-format +#: execute_cmd.c:4683 +#, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "%s: azami fonksiyon yuvalama sınırı aşıldı (%d)" +msgstr "%s: azami kaynak yuvalama sınırı aşıldı (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: azami fonksiyon yuvalama sınırı aşıldı (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: kısıtlı: komut adında `/' kullanamazsınız" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: komut yok" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: hatalı yorumlayıcı" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: ikili dosya çalıştırılamıyor: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "%s: bir kabuk yerleşiğidir" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "fd %d, fd %d olarak yinelenemiyor" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "ifade özyineleme düzeyi aşıldı" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "özyineleme yığıtı alttan taştı" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "ifadede sözdizimi hatası" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "değişken olmayana atama yapmaya çalışıldı" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "ifadede sözdizimi hatası" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "sıfırla bölme" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "yazılım hatası: bad expassign token" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "koşullu ifade için `:' bekleniyordu" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "üs sıfırdan küçük" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "belirteç ön-arttırım veya ön-eksiltim sonrası bekleniyordu" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "eksik `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "sözdizimi hatası: terim umuluyordu" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "sözdizimi hatası: geçersiz aritmetik işleci" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (hata belirtisi \"%s\")" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "geçersiz sayı tabanı" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "değer taban için fazla büyük" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: ifade hatası\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: üst dizinlere erişilemiyor" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "fd %d tanıtıcısındaki bash girdisi için yeni dosya tanıtıcısı ayrılamıyor" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: yeni fd %d için tampon zaten var" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp iletişim tüneli" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "çatallanan pid %d, çalışan iş %d içinde görünüyor" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "durdurulan %2$ld süreç gruplu iş %1$d siliniyor" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: %5ld (%s) süreci iletişim_tünelinde" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: %5ld (%s) program kimliği hala canlı olarak işaretli" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: böyle bir pid yok" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Sinyal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Bitti" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Durdu" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Durdu(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Çalışıyor" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Bitti(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Çıkış %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Bilinmeyen durum" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(çekirdek döküldü)" -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "alt setpgid (şuradan: %ld şuraya: %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld bu kabuğun bir alt sürecine ait değil" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: süreç %ld için kayıt yok" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: iş %d durdu" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: iş sonlanmış" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: iş %d zaten artalanda" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: belirsiz blok önlenmek için WNOHANG açılıyor" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: satır %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (çekirdek döküldü)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(wd artık: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp başarısız" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: satır düzeni" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: satır düzeni" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "uçbirim süreç grunu (%d) ayarlanamaz" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "bu kabukta iş denetimi yok" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: kanaat doğrulaması başarısız: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1300,39 +1310,39 @@ msgstr "" "\r\n" "malloc: %s:%d: kanaat doğrulaması battı\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "bilinmeyen" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: serbest bırakılmış liste üstünde blok üste yazdı" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: zaten serbest bırakılmış blok argümanı ile çağrıldı" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: ayrılmamış blok argümanı ile çağrıldı" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: alttan taşma saptandı; mh_nbytes aralık dışında" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: başlangıç ve son tomar boyutları farklı" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: ayrılmamış blok argümanı ile çağrıldı" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: alttan taşma saptandı; mh_nbytes aralık dışında" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: başlangıç ve son tomar boyutları farklı" @@ -1374,22 +1384,22 @@ msgstr "%s: hatalı ağ yolu belirtimi" msgid "network operations not supported" msgstr "desteklenmeyen ağ işlemleri" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: (%s) diline değiştirilemedi" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: şu dile (%s) değiştirilemedi: %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: yerel (%s) değiştirilemiyor" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: yerel (%s) değiştirilemiyor: %s" @@ -1407,150 +1417,152 @@ msgstr "$_'de yeni postanız var" msgid "The mail in %s has been read\n" msgstr "%s'deki posta okundu\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "sözdizimi hatası: aritmetik ifadesi gerekli" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "sözdizimi hatası: `;' beklenmiyordu" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "sözdizimi hatası: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: hatalı yönerge türü %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "bu belgede %d satırında dosya sonu sonlandırılmış (istenen `%s')" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: yönlendirme yönergesi `%d' aralık dışında" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) SIZE_MAX değerini aşıyor (%lu): " +"satır kırpıldı" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" -msgstr "" +msgstr "en fazla buraya belge sayısı aşıldı" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "`%c' için eşleşme aranırken beklenmedik dosya sonu" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "`]]' aranırken beklenmedik dosya sonu" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "koşullu ifadede sözdizimi hatası: beklenmedik dizgecik `%s'" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "koşullu ifadede sözdizimi hatası" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "beklenmedik dizgecik `%s', `)' umuluyordu" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "`)' umuluyordu" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "koşullu tek terimli işlece beklenmedik argüman `%s'" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "koşullu tek terimli işlece beklenmedik argüman" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "beklenmedik dizgecik `%s', koşullu iki terimli işleç umuluyordu" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "koşullu iki terimli işleç umuluyordu" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "koşullu iki terimli işlece beklenmedik argüman `%s'" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "koşullu iki terimli işlece beklenmedik argüman" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "koşullu komutta beklenmeyen dizgecik `%c'" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "koşullu komutta beklenmeyen dizgecik `%s'" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "koşullu komutta beklenmeyen dizgecik %d" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "beklenmeyen dizgecik `%s' yakınında sözdizimi hatası" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "`%s' yakınında sözdizimi hatası" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "sözdizimi hatası: beklenmeyen dosya sonu" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "sözdizimi hatası" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Kabuğu bırakmak için \"%s\" kullanın.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "`)' için eşleşme aranırken beklenmedik dosya sonu" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: `%s' işlevi yok" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: muhtemel yeniden deneme döngüsü" #: pcomplib.c:182 #, c-format @@ -1576,90 +1588,94 @@ msgstr "xtrace_set: BOŞ dosya işaretçisi" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': geçersiz biçim karakteri" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "dosya tanıtıcı aralık dışında" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: belirsiz yönlendirme" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: mevcut dosyanın üzerine yazılamıyor" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: kısıtlı: çıktı yönlendirilemiyor" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "belge için geçici dosya oluşturulamıyor: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: fd değişkene atanamıyor" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port ağ olmaksızın desteklenmiyor" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "yönlendirme hatası: fd yinelenemiyor" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "/tmp bulunamadı, lütfen oluşturun!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp geçerli bir dizinin adı olmalıdır" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: geçersiz seçenek" -#: shell.c:1282 -#, fuzzy, c-format +#: shell.c:1299 +#, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor" +msgstr "uid %d olarak ayarlanamıyor: etkin uid %d" -#: shell.c:1289 -#, fuzzy, c-format +#: shell.c:1306 +#, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor" +msgstr "gid %d olarak ayarlanamıyor: etkin gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "hata ayıklayıcı başlatılamadı, hata ayıklama devre dışı" -#: shell.c:1566 -#, fuzzy, c-format +#: shell.c:1608 +#, c-format msgid "%s: Is a directory" -msgstr "%s: bir dizin" +msgstr "%s: Bir dizin" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Hiç ismim yok!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, sürüm %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1668,54 +1684,55 @@ msgstr "" "Kullanım:\t%s [GNU uzun seçeneği] [seçenek] ...\n" "\t%s [GNU uzun seçeneği] [seçenek] betik-dosyası ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU uzun seçenekleri:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Kabuk seçenekleri:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD veya -c KOMUT veya -O shopt_seçeneği\t\t(sadece çağrı için)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ya da -o seçeneği\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Kabuk seçenekleriyle ilgili daha fazla bilgi için `%s -c \"help set\"' " "yazın.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Kabuk yerleşik komutlarıyla ilgili bilgi almak için `%s -c help' yazın.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" "Yazılım hatalarını raporlamak için `bashbug' komutunu kullanınız.\n" "Çeviri hatalarını ise adresine bildiriniz.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "bash ana sayfası: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" +"GNU yazılımı kullanımı hakkında genel yardım: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: geçersiz işlem" @@ -1889,92 +1906,96 @@ msgstr "Bilinmeyen Sinyal #" msgid "Unknown Signal #%d" msgstr "Bilinmeyen Sinyal #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "hatalı ikame: %2$s içinde kapatan `%1$s' yok" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: dizi üyesine liste atanamaz" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "süreç ikamesi için borulama yapılamıyor" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "süreç ikamesi için alt süreç yapılamıyor" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "isimli boru %s okumak için açılamıyor" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "isimli boru %s yazmak için açılamıyor" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "isimli boru %s fd %d olarak yinelenemiyor" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "hatalı ikame: %s içinde kapatan \"`\" yok" +msgstr "komut ikamesi: girdideki null bayt yoksayıldı" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "komut ikamesi için boru yapılamıyor" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "komut ikamesi için alt süreç yapılamıyor" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: boru fd 1 olarak yinelenemiyor" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: dosya izleme tanımlayıcısı için geçersiz değer" -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format -msgid "%s: bad substitution" -msgstr "%s: hatalı ikame" - -#: subst.c:6800 -#, fuzzy, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: geçersiz satır sayısı" +msgstr "%s: geçersiz dolaylı yayılım" -#: subst.c:6807 -#, fuzzy, c-format +#: subst.c:6840 subst.c:6987 +#, c-format msgid "%s: invalid variable name" -msgstr "`%s': geçersiz takma isim" +msgstr "%s: geçersiz değişken adı" + +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametre boş ya da değer atanmamış" -#: subst.c:6854 +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametre boş ya da değer atanmamış" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: altdizge ifadesi < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: hatalı ikame" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: bu yolla atama yapılmaz" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1982,12 +2003,12 @@ msgstr "" "kabuk gelecekteki sürümlerinde, bir aritmetik ikame olarak değerlendirmeye " "zorlayacak" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "hatalı ikame: %s içinde kapatan \"`\" yok" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "eşleşme yok: %s" @@ -2010,116 +2031,121 @@ msgstr "`)' bekleniyordu" msgid "`)' expected, found %s" msgstr "`)' bekleniyordu, %s bulundu" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: tek terimli işleci bekleniyordu" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: iki terimli işleci bekleniyordu" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "eksik `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "geçersiz sinyal numarası" -#: trap.c:387 +#: trap.c:320 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: azami eval yuvalama sınırı aşıldı (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps:trap_list[%d] içinde hatalı değer: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: sinyal yakalayıcı SIG_DFL'dir, kendime %d (%s) göndererek" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler:hatalı sinyal %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "`%s'nin işlev tanımının içeri aktarılmasında hata" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "kabuk düzeyi (%d) çok yüksek, 1 yapılıyor" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: geçerli etki alanında hiç işlev bağlamı yok" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: değişkene değer atanmamış olabilir" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: dosya izleme tanımlayıcısı için geçersiz değer" +msgstr "%s: isim referansına tamsayı ataması" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: geçerli etki alanında hiç işlev bağlamı yok" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s boş exportstr içeriyor" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%2$s için exportstr içinde geçersiz karakter %1$d" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s için exportstr içinde `=' yok" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: kabuk değişkenlerinin başı bir işlev bağlamı değil" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: genel değişkenler bağlamı yok" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: kabuk değişkenlerinin başı bir geçici ortam etki alanı değil" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: DOSYA olarak açılamaz" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: dosya izleme tanımlayıcısı için geçersiz değer" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: uyumlulukdeğeri aralık dışı" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Telif Hakkı (C) 2013 Özgür Yazılım Vakfı A.Ş." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "Telif Hakkı (C) 2016 Özgür Yazılım Vakfı A.Ş." #: version.c:47 version2.c:47 msgid "" @@ -2142,22 +2168,22 @@ msgstr "Bu ücretsiz bir yazılımdır; değiştirmekte ve dağıtmakta özgürs msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "İzin verilen yasalar kapsamında hiçbir GARANTİSİ BULUNMAMAKTADIR." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %lu bayt ayrılamıyor (%lu bayt ayrıldı)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: %lu bayt ayrılamıyor" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: %lu bayt ayrılamıyor (%lu bayt ayrıldı)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: %lu bayt ayrılamıyor" @@ -2212,9 +2238,8 @@ msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [isim[=değer] ...]" #: builtins.c:80 -#, fuzzy msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] isim[=değer] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] isim[=değer] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2285,9 +2310,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [görevtan ...] veya jobs -x komut [argü]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [görevtan ...]" +msgstr "disown [-h] [-ar] [görevtan ... | pid ...]" #: builtins.c:134 msgid "" @@ -2362,16 +2386,16 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] isim [isim ...]" #: builtins.c:171 -#, fuzzy msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [sınır]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [sınır]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [kip]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2463,8 +2487,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] biçim [argümanlar]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2473,38 +2498,37 @@ msgstr "" "[isim ...]" #: builtins.c:235 -#, fuzzy msgid "" "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -"compgen [-abcdefgjksuv] [-o seçenek] [-A işlem] [-G genelyol] [-W " +"compgen [-abcdefgjksuv] [-o seçenek] [-A işlem] [-G genelyol] [-W " "kelimelistesi] [-F işlev] [-C komut] [-X süzgeçyolu] [-P önek] [-S sonek] " "[kelime]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o seçenek] [-DE] [isim ...]" #: builtins.c:242 -#, fuzzy msgid "" "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" msgstr "" -"mapfile [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C geriçağırım] [-c " -"parçacık] [dizi]" +"mapfile [-d sonlandrc] [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C " +"geriçağırım] [-c parçacık] [dizi]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C geriçağırım] [-c " "parçacık] [dizi]" #: builtins.c:256 -#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2540,7 +2564,6 @@ msgstr "" " Hiçbir şeyin rumuzu olmayan bir İSİM verilmedikçe alias doğru döndürür." #: builtins.c:278 -#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" @@ -2552,13 +2575,12 @@ msgstr "" "Tanımlı rumuzlar listesinden her İSMİ kaldır.\n" " \n" " Seçenekler:\n" -" -a\ttüm rumuz tanımlamalarını kaldır.\n" +" -a\ttüm rumuz tanımlamalarını kaldır\n" " \n" " İSİM mevcut olmayan bir rumuz olmadığı takdirde doğru\n" " döndür." #: builtins.c:291 -#, fuzzy msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2631,8 +2653,8 @@ msgstr "" " -x TUŞDİZİSİ:KABUK-KOMUTU\tTUŞDİZİSİnin her girilişinde KABUK-" "KOMUTUnun\n" " \t\t\t\tçalıştırılmasını sağlar.\n" -" -X\t\t Tuş dizilerini -x ve ilişkili komutlarını tekrar bir girdi " -"olarak kullanılabilecek\n" +" -X Tuş dizilerini -x ve ilişkili komutlarını tekrar " +"bir girdi olarak kullanılabilecek\n" " biçimde listeler.\n" " \n" " Çıkış Durumu:\n" @@ -2677,6 +2699,7 @@ msgstr "" " N, 1 veya daha büyük olmadığında çıkış durumu 0'dır." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2687,7 +2710,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Kabuk dahillerini çalıştır.\n" " \n" @@ -2731,7 +2754,6 @@ msgstr "" "döndürür." #: builtins.c:387 -#, fuzzy msgid "" "Change the shell working directory.\n" " \n" @@ -2795,12 +2817,16 @@ msgstr "" " için kullanılır\n" " \n" " Seçenekler:\n" -" -L\tsembolik bağlantıların takip edilmesini zorla\n" -" -P\tsembolik bağlantıları takip etmeden fiziksel dizini kullan\n" +" -L\tsembolik bağlantıların takip edilmesini zorla: '..' " +"örneklerinin\n" +" \t\tişlenmesinden sonra DİZİN içindeki sembolik bağlantıları çöz\n" +" -P\tsembolik bağlantıları takip etmeden fiziksel dizini kullan: '..' " +"örneklerinin\n" +" \t\tişlenmesinden önce DİZİN içindeki sembolik bağlantıları çöz\n" " -e\teğer -P seçeneği belirtilmişse ve geçerli çalışma dizini " "başarılı şekilde\n" " \tbelirlenemiyorsa, sıfır olmayan bir durumla çık\n" -" -@ destekleyen sistemlerde, dosya niteliklerini içeren bir dizin " +" -@\tdestekleyen sistemlerde, dosya niteliklerini içeren bir dizin " "olarak uzatılmış\n" " niteliklere sahip bir dosya sun \n" " Öntanımlı olan `-L' tanımlanmış gibi sembolik bağlantıları takip " @@ -2812,7 +2838,6 @@ msgstr "" " sıfır olmayan bir değer döndürür." #: builtins.c:425 -#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" @@ -2880,7 +2905,6 @@ msgstr "" " Her zaman başarısızdır." #: builtins.c:471 -#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2907,11 +2931,11 @@ msgstr "" " diskte komutları çalıştırmak için kullanılabilir.\n" " \n" " Seçenekler:\n" -" -p\tYOL için, tüm standart yardımcıları bulabilmek için bir öntanımlı " -"değer\n" +" -p YOL için, tüm standart yardımcıları bulabilmek için bir " +"öntanımlı değer\n" " \tkullan\n" -" -v\t`type' dahilisine benzer bir KOMUT açıklaması göster\n" -" -V\ther KOMUTun fazla açıklamasını göster\n" +" -v `type' dahilisine benzer bir KOMUT açıklaması göster\n" +" -V her KOMUTun fazla açıklamasını göster\n" " \n" " Çıkış Durumu:\n" " KOMUTun çıkış durumunu döndürür. KOMUT bulunamazsa başarısız olur." @@ -2936,11 +2960,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2965,10 +2989,10 @@ msgstr "" " -f\teylemi veya işlev ismi ile tanımları gösterimini kısıtla\n" " -F\tsadece işlev isim gösterimlerini kısıtla (ek olarak satır sayısı " "ve hata ayıklarken\n" -" \tkaynak dosyayı)\n" +" \t\tkaynak dosyayı)\n" " -g\tbir kabuk fonksiyonunda kullanıldığında evrensel değişken " "oluştur,\n" -" \taksi takdirde yoksayılır\n" +" \t\taksi takdirde yoksayılır\n" " -p\ther İSİMin değeri ve niteliklerini görüntüle\n" " \n" " Nitelik ayarlayan seçenekler:\n" @@ -2998,7 +3022,6 @@ msgstr "" " başarılı döner." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3006,7 +3029,7 @@ msgid "" msgstr "" "Değişken isim ve niteliklerini ayarla.\n" " \n" -" Kullanılmıyor. Bkz. `help declare'." +" `declare' ile eş anlamlıdır. Bkz. `help declare'." #: builtins.c:538 msgid "" @@ -3066,6 +3089,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3094,14 +3123,14 @@ msgstr "" " \\\\\tters bölü\n" " \\0nnn\tASCII kodu NNN (sekizlik) olan karakter. NNN 0-3 arası " "sekizli\n" -" \trakamlardan oluşabilir.\n" +" \t\trakamlardan oluşabilir.\n" " \\xHH\tdeğeri HH (onaltılık) olan sekiz bit karakter. HH bir veya iki\n" -" \tonaltılık rakam olabilir\n" +" \t\tonaltılık rakam olabilir\n" " \n" " Çıkış Durumu:\n" " Yazma hatası oluşmadığı takdirde başarılı döner." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3123,7 +3152,7 @@ msgstr "" " Çıkış Durumu:\n" " Bir hata oluşmadığı sürece başarılı döner." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3174,7 +3203,7 @@ msgstr "" " Çıktı Durumu:\n" " İSİM bir kabuk yerleşiği değilse ve hata oluşmazsa başarılı döner." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3194,7 +3223,7 @@ msgstr "" " Çıkış Durumu:\n" " Komutun çıkış durumunu döndürür veya komut boşsa başarılı döner." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3291,8 +3320,7 @@ msgstr "" "bir hata oluştuğunda başarısız döner.\n" " encountered or an error occurs." -#: builtins.c:688 -#, fuzzy +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3322,8 +3350,8 @@ msgstr "" " \n" " Seçenekler:\n" " -a isim\tİSMİ, KOMUTun sıfırıncı argümanına ata\n" -" -c\t\tKOMUTu boş bir ortamla çalıştır\n" -" -l\t\tKOMUTun sıfırıncı argümanına bir çizgi koy\n" +" -c\tKOMUTu boş bir ortamla çalıştır\n" +" -l\tKOMUTun sıfırıncı argümanına bir çizgi koy\n" " \n" " Eğer komut çalıştırılamıyorsa, `execfail' ayarlanmadığı sürece " "etkileşimsiz kabuk\n" @@ -3332,7 +3360,7 @@ msgstr "" " Çıkış Durumu:\n" " KOMUT bulunduğu ve bir yönlendirme hatası olmadığı sürece başarılı döner." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3344,7 +3372,7 @@ msgstr "" " N durumu ile dönerek kabuk çıkar. N verilmezse son çalıştırılan komutun\n" " çıkış durumu döner." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3357,7 +3385,7 @@ msgstr "" " N durumuyla bir oturum kabuğundan çıkar. Eğer çalıştırılmamışsa oturum\n" " kabuğunda bir hata döndürür." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3414,7 +3442,7 @@ msgstr "" " Başarılı veya çalıştırılan komut durumu döndürülür; hata oluştuğunda " "sıfır harici değer döner." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3434,7 +3462,7 @@ msgstr "" " Çıktı Durumu:\n" " Ön plana yerleştirilmiş komutun durumu veya hata olduğunda başarısız." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3456,7 +3484,7 @@ msgstr "" " İş kontrolü etkin olmadığı veya bir hata oluşmadığı sürece başarılı " "döner." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3480,7 +3508,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:812 +#: builtins.c:816 #, fuzzy msgid "" "Display information about builtin commands.\n" @@ -3496,7 +3524,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3512,7 +3540,7 @@ msgstr "" " -d\ther konu için kısa açıklama yazdır\n" " -m\tkullanımı pseudo-man sayfası biçiminde yazdır\n" " -s\tsadece DESEN ile eşleşen konular için kısa kullanım\n" -" \tbilgisi yazdır\n" +" \t\tbilgisi yazdır\n" " \n" " Argümanlar:\n" " DESEN\tBir yardım konusunu belirten desen\n" @@ -3521,7 +3549,7 @@ msgstr "" " DESEN bulunmadığı veya geçersiz bir seçenek verilmediğinde başarılı " "döner." -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3531,7 +3559,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3563,12 +3592,12 @@ msgstr "" " \n" " Seçenekler:\n" " -c\tkomut geçmişi listesini tüm girdilerini silerek temizler.\n" -" -d\tile satır numarası KONUM olan geçmiş girdisi silinir.\n" +" -d\tile konumu KONUM olan geçmiş girdisi silinir.\n" " \n" " -a\tile oturumunun başlangıcından itibaren girilen geçmiş satırları\n" " \tgeçmiş dosyasına eklenir.\n" -" -n\tile geçmiş dosyasından henüz okunmamış olan geçmiş satırları,\n" -" \tgeçmiş listesine eklenir.\n" +" -n\tile geçmiş dosyasından henüz okunmamış olan geçmiş satırları okur\n" +" \t\tve geçmiş listesine ekler\n" " -r\tile dosya okunur ve içeriği geçmiş listesine eklenir.\n" " -w\tile geçmiş listesi çıktısı geçmiş dosyasına yazılır.\n" " \n" @@ -3576,10 +3605,10 @@ msgstr "" " \tdepolamadan görüntüle\n" " -s\tARGümanları geçmiş listesine tek bir girdi olarak ekle\n" " \n" -" DOSYAİSMİ verilmezse, $HISTFILE değişkenindeki değer, o da yoksa\n" +" DOSYAİSMİ verilmezse, HISTFILE değişkenindeki değer, o da yoksa\n" " ~/.bash_history dosyası kullanılır.\n" " \n" -" $HISTTIMEFORMAT kabuk değişkeni tanımlanmış ve anlamlı bir değere\n" +" HISTTIMEFORMAT kabuk değişkeni tanımlanmış ve anlamlı bir değere\n" " sahipse, değeri, gösterilen her geçmiş girdisi ile ilişkili zaman\n" " damgasını basacak olan strftime(3) işlevine biçim girdisi olur; aksi\n" " takdirde hiç zaman damgası basılmaz. \n" @@ -3587,8 +3616,7 @@ msgstr "" " Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde " "başarılı döner." -#: builtins.c:872 -#, fuzzy +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3617,10 +3645,10 @@ msgstr "" " Seçenekler olmadan, tüm etkin görev durumları görüntülenir.\n" " \n" " Seçenekler:\n" -" -l\tile normal bilgilere ek olarak süreç kimliklerini de (PID) " -"\tlisteler\n" +" -l\tile normal bilgilere ek olarak süreç kimliklerini de (PID) " +"listele\n" " -n\tile sadece kullanıcının durumları hakkında aldığı son uyarıdan\n" -" \tberi durumları değişen işler hakkında bilgi gösterir.\n" +" \t\tberi durumları değişen işler hakkında bilgi gösterir.\n" " -p\tile işlerin sadece süreç kimliklerini listeler\n" " -r\tile sadece çalışmakta olan,\n" " -s\tile ise sadece durmuş olan işler listelenir.\n" @@ -3634,8 +3662,7 @@ msgstr "" "başarılı döner.\n" " -x kullanılmışsa, KOMUTun çıkış durumu döndürülür." -#: builtins.c:899 -#, fuzzy +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3661,14 +3688,13 @@ msgstr "" " -a\tİŞTANIMı belirtilmemişse tüm görevleri kaldır\n" " -h\ther İŞTANIMını işaretle, böylece kabul bir SIGHUP aldığında göreve " "SIGHUP\n" -" \tgönderme\n" +" \t\tgönderme\n" " -r\tsadece çalışan görevleri kaldırremove \n" " \n" " Çıkış Durumu:\n" " Geçersiz bir seçenek veya İŞTANIMı girilmedikçe başarılı döner." -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3700,8 +3726,9 @@ msgstr "" " -s sig\tSİNYAL bir sinyal\n" " -n sig\tSİNYAL bir sinyal numarası\n" " -l\t-l seçeneği ile sinyal isimleri listelenir.\n" -" Argümanlı -l seçeneğinde argümanların listelenecek\n" +" \t\tArgümanlı -l seçeneğinde argümanların listelenecek\n" " sinyal isimlerinin numaraları olduğu varsayılır. \n" +" -L\t, -l anahtarının eş anlamlısıdır\n" " Kill iki sebepten dolayı bir kabuk yerleşiğidir: süreç kimlikleri yerine " "iş\n" " kimliklerinin kullanımını mümkün kılar ve eğer oluşturabileceğiniz " @@ -3714,7 +3741,7 @@ msgstr "" " Geçersiz bir seçenek belirtilmediği veya bir hata oluşmadığında başarılı " "döner." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3800,7 +3827,7 @@ msgstr "" " Çıktı Durumu:\n" " Son ifade'nin sonucu 0 ise dönüş durumu 1 dir, aksi takdirde 0 dır." -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3821,7 +3848,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3852,7 +3879,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3872,8 +3899,7 @@ msgstr "" " Çıkış Durumu:\n" " N veya kabul bir fonksiyon ya da betik çalıştırmıyorsa başarısız döner." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4042,7 +4068,7 @@ msgstr "" " kabuklarda öntanımlı olarak etkindir.\n" " -P Verildiğinde, örneğin çalışılan dizini değiştirmek için cd gibi bir\n" " komut sembolik bağları izlemez.\n" -" -T Etkinse DEBUG üstündeki bir tuzak kabuk işlevlerince\n" +" -T Etkinse DEBUG ve RETURN üstündeki tuzaklar kabuk işlevlerince\n" " miras alınır.\n" " -- Geri kalan argümanları konumsal parametrelere ata. Eğer kalan\n" " argüman yoksa, konumsal parametrelerin ataması kaldırılır.\n" @@ -4058,7 +4084,7 @@ msgstr "" " Çıktı Durumu:\n" " Geçersiz seçenek belirtilmediği sürece başarılı döner." -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4080,7 +4106,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4099,7 +4125,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4120,7 +4146,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4131,7 +4157,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4158,7 +4184,7 @@ msgstr "" " DOSYAİSMİnde çalıştırılan son komutun durumunu döndürür. DOSYAİSMİ\n" " okunamazsa başarısız döner." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4172,8 +4198,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 -#, fuzzy +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4316,6 +4341,8 @@ msgstr "" " Diğer işleçler:\n" " \n" " -o SEÇENEK Kabuk seçeneği SEÇENEK etkinse doğrudur.\n" +" -v DEĞŞ Kabuk DEĞŞ ayarlanmış ise true.\n" +" -R DEĞŞ Kabuk DEĞŞ ayarlanmış ve bir isim referansı ise true\n" " ! İFADE İFADE yanlışsa doğrudur.\n" " İFADE1 -a İFADE2 İFADE1 ve İFADE2 her ikisi de doğruysa doğrudur.\n" " İFADE1 -o İFADE2 İFADE1 veya İFADE2 doğruysa doğrudur.\n" @@ -4333,7 +4360,7 @@ msgstr "" "geçersiz\n" " argümanda başarısız döner." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4345,7 +4372,7 @@ msgstr "" " \"test\" yerleşiği ile aynıdır, fakat son argüman açan `[' ile eşleşen\n" " kapatan `]' olmak zorundadır." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4364,7 +4391,7 @@ msgstr "" " Çıktı Durumu:\n" " Her zaman başarılı döner." -#: builtins.c:1357 +#: builtins.c:1362 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4425,7 +4452,7 @@ msgstr "" " numaraları ile birlikte listelemesini sağlar. Kabuğa bir sinyal\n" " göndermek isterseniz \"kill -SİGNAL $$\" sözdizimini kullanabilirsiniz." -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4455,8 +4482,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 -#, fuzzy +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4518,6 +4544,7 @@ msgstr "" " -e\tAzami zamanlama önceliği (`nice')\n" " -f\tKabuk ve çocukları tarafından oluşturulan dosyaların azami boyu\n" " -i\tAskıdaki sinyallerin azami sayısı\n" +" -k\tBu süreç için ayrılmış kqueue'lerin azami sayısı\n" " -l\tBelleğe kilitlenebilen azami boyut\n" " -m\tAzami bellek boyu\n" " -n\tAçık dosya tanıtıcılarının azami sayısı\n" @@ -4546,7 +4573,7 @@ msgstr "" " Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde " "başarılı döner." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4564,7 +4591,8 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1499 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4572,13 +4600,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4599,7 +4629,7 @@ msgstr "" "verilmişse\n" " başarısız olur." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4626,7 +4656,7 @@ msgstr "" "verilmişse\n" " başarısız olur." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4650,7 +4680,7 @@ msgstr "" " Çıkış Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4681,7 +4711,7 @@ msgstr "" " Çıkış Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4724,7 +4754,7 @@ msgstr "" " Çıktı Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4753,7 +4783,7 @@ msgstr "" " Çıktı Durumu:\n" " VERİYOLU döndürme değerini döndürür." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4771,8 +4801,7 @@ msgstr "" " Çıkış Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1612 -#, fuzzy +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4792,11 +4821,8 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"\rif KOMUTlar; then KOMUTlar;\n" -"[ elif KOMUTlar; then KOMUTlar; ]...\n" -"[ else KOMUTlar; ]\n" -"fi\n" -"\n" +"Komutları şartlara göre çalıştırır.\n" +" \n" " `if KOMUTlar;' listesi çalıştırılır; çıkış durumu sıfırsa\n" " `then KOMUTlar;' listesi çalıştırılır, değilse `elif KOMUTlar;'\n" " listesi çalıştırılır; bunun çıkış durumu sıfırsa `then KOMUTlar;'\n" @@ -4804,9 +4830,10 @@ msgstr "" " `else KOMUTlar;' listesi çalıştırılır ve if komutu tamamlanır.\n" " Oluşumun tamamının dönüş durumu çalıştırılmış olan son komutun\n" " çıkış durumudur. Bir komut çalıştırılmamışsa ve hiçbir koşul\n" -" doğru sonuç vermemişse sıfır döner." +" doğru sonuç vermemişse sıfır döner. Çıkış Durumu:\n" +" Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4824,7 +4851,7 @@ msgstr "" " Çıktı Durumu:\n" " En son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4842,7 +4869,7 @@ msgstr "" " Çıktı Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1653 +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4855,7 +4882,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -4869,7 +4896,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -4887,7 +4914,7 @@ msgstr "" " Çıktı Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -4911,7 +4938,7 @@ msgstr "" " Çıktı Durumu:\n" " Devam edilen görevin durumunu döndürür." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4929,8 +4956,7 @@ msgstr "" " Çıktı Durumu:\n" " İFADE 0 olursa 1; aksi takdirde 0 döndürür." -#: builtins.c:1720 -#, fuzzy +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -4957,7 +4983,8 @@ msgid "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." msgstr "" -"\r[[ İFADE ]]\n" +"Koşullu komut çalıştır.\n" +" \n" " Koşullu İFADEnin değerine bağlı olarak 0 ya da 1 durumu ile döner.\n" " İfadeler test yerleşiği tarafından kullanılan aynı ilkelerle " "oluşturulur\n" @@ -4968,12 +4995,17 @@ msgstr "" " İFADE1 && İFADE2 İFADE1 ve İFADE2 her ikisi de doğruysa doğrudur\n" " İFADE1 || İFADE2 İFADE1 veya İFADE2 doğruysa doğrudur\n" "\n" -" == ve != işleçleri kullanıldığında, işlecin sağındaki dizge bir kalıp\n" -" olarak ele alınır ve kalıp eşleştirmesi uygulanır. && ve || işleçleri\n" -" eğer ilk ifade sonuç için belirleyici ise ikincisine bakmazlar." +" `==' ve `!=' işleçleri kullanıldığında, işlecin sağındaki dizge bir " +"kalıp\n" +" olarak ele alınır ve kalıp eşleştirmesi uygulanır. `=~' kullanıldığında\n" +" işlecin sağındaki dizge düzenli ifade olarak eşleştirilir. \n" +" İFADE1, ifadenin değeri için tek başına yeterli ise && ve || İFADE2'yi\n" +" çalıştırmaz.\n" +" \n" +" Çıkış Durumu:\n" +" İFADE değerine göre 0 veya 1." -#: builtins.c:1746 -#, fuzzy +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5026,75 +5058,67 @@ msgid "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" msgstr "" -"\rdeğişkenler: Bazı değişkenler ve anlamları:\n" -" BASH_VERSION Bu Bash'in sürüm bilgisi.\n" -" CDPATH ` cd'ye argüman olarak verilecek dizinlerin aranacağı\n" -" dizinlerin ikinokta imi ayraçlı listesi.\n" -" GLOBIGNORE Dosyayolu yorumlaması tarafından yoksayılacak dosya\n" -" isimlerini belirten kalıpların ikinokta imi ayraçlı\n" -" listesi.\n" -" HISTFILE Komut geçmişinizin saklanacağı dosyanın ismi.\n" -" HISTFILESIZE Bu dosyanın içerebileceği azami satır sayısı.\n" -" HISTSIZE Çalışan bir kabuğun erişebileceği geçmiş " -"satırlarının\n" -" azami sayısı.\n" -" HOME Kullanıcının ev dizininin tam yolu.\n" -" HOSTNAME Makinenizin ağdaki konak ismi.\n" -" HOSTTYPE Bash'in bu sürümünün altında çalıştığı işlemcinin " -"türü\n" -" IGNOREEOF Tek girdi olarak EOF karakteri alındığında kabuğun\n" -" eylemini kontrol eder. Atandığında değeri, kabuk\n" -" çıkmadan önce bir girdi satırındaki ilk karakter\n" -" olarak okunabilen ardışık EOF karakterlerinin " -"sayısını\n" -" gösterir (öntanımlı 10). Eğer değişken mevcut " -"değilse,\n" -" EOF girdi sonunu belirtir.\n" -" MACHTYPE Bash'in üzerinde çalıştığı sistemi açıklayan dizge.\n" -" MAILCHECK Bash'in yeni postaya kaç saniyede bir bakacağı.\n" -" MAILPATH Bash'in yeni posta var mı diye bakacağı dosya\n" -" isimlerinin ikinokta imi ayraçlı listesi.\n" -" OSTYPE Bash'in üzerinde çalıştığı çekirdeğin türü.\n" -" PATH Komutları ararken bakılacak dizinlerin ikinokta imi\n" -" ayraçlı listesi.\n" -" PROMPT_COMMAND Birincil komut istemi ($PS1) basılmadan önce\n" -" çalıştırılacak komut\n" -" PS1 Birincil komut istemi dizgesi.\n" -" PS2 İkincil komut istemi dizgesi.\n" -" PWD Çalışma dizininizin tam yolu.\n" -" SHELLOPTS Etkin kabuk seçeneklerinin ikinokta imi ayraçlı " -"listesi\n" -" TERM Geçerli uçbirim türünün ismi.\n" -" TIMEFORMAT time anahtar sözcüğü ile başlayan zamanlama " -"bilgisinin\n" -" nasıl belirtileceğini gösteren biçim dizgesi.\n" -" auto_resume Değerin boş olmaması durmuş işin isminin onu\n" -" başlatmakta kullanılan komut satırı olduğudur ve\n" -" oradaysa iş önalana alınır. `exact' değeri, komut\n" -" sözcüğünün durmuş işler listesindeki komutla tam\n" -" olarak eşleşmesi gerektiği anlamına gelir. " -"`substring'\n" -" değeri, komut sözcüğünün işin bir altdizgesi ile\n" -" eşleşmesi gerektiğini belirtir. Bunlar dışında bir\n" -" değer komutun durmuş bir işe önek olması gerektiği\n" -" anlamına gelir.\n" -" histchars Geçmiş yorumlaması, hızlı ikame ve sembolleştirmeyi\n" -" denetleyen en çok üç karakter. İlk karakter geçmiş\n" -" yorumlamasının başlatılmasını sağlayan geçmiş\n" -" yorumlama karakteridir ve normalde ! işaretidir.\n" -" İkinci karakter, bir satırdaki ilk karakter " -"olduğunda\n" -" `hızlı ikame'yi imleyen karakterdir ve normalde ^\n" -" imidir. İstemlik olan üçüncü karakter ise, bir\n" -" sözcüğün ilk karakteri olarak bulunduğunda satırın\n" -" kalanının açıklama olmasını sağlayan karakterdir ve\n" -" normalde # imidir.\n" -" HISTIGNORE Geçmiş listesine hangi satırların kaydedilmesi\n" -" gerektiğine karar vermek için kullanılan kalıpların\n" -" ikinokta imi ayraçlı listesi.\n" - -#: builtins.c:1803 -#, fuzzy +"Bazı değişkenler ve anlamları:\n" +" \n" +" BASH_VERSION\tBu Bash'in sürüm bilgisi.\n" +" CDPATH\t`cd'ye argüman olarak verilecek dizinlerin aranacağı\n" +" \t\tdizinlerin iki nokta imi ayraçlı listesi.\n" +" GLOBIGNORE\tDosyayolu yorumlaması tarafından yoksayılacak dosya\n" +" \t\tisimlerini belirten kalıpların ikinokta imi ayraçlı\n" +" \t\tlistesi.\n" +" HISTFILE\tKomut geçmişinizin saklanacağı dosyanın ismi.\n" +" HISTFILESIZE\tBu dosyanın içerebileceği azami satır sayısı.\n" +" HISTSIZE\tÇalışan bir kabuğun erişebileceği geçmiş satırlarının\n" +" \t\tazami sayısı.\n" +" HOME\tKullanıcının ev dizininin tam yolu.\n" +" HOSTNAME\tMakinenizin ağdaki konak ismi.\n" +" HOSTTYPE\tBash'in bu sürümünün altında çalıştığı işlemcinin türü\n" +" IGNOREEOF\tTek girdi olarak EOF karakteri alındığında kabuğun\n" +" \t\teylemini kontrol eder. Atandığında değeri, kabuk\n" +" \t\tçıkmadan önce bir girdi satırındaki ilk karakter\n" +" \t\tolarak okunabilen ardışık EOF karakterlerinin sayısını\n" +" \t\tgösterir (öntanımlı 10). Eğer değişken mevcut değilse,\n" +" \t\tEOF girdi sonunu belirtir.\n" +" MACHTYPE\tBash'in üzerinde çalıştığı sistemi açıklayan dizge.\n" +" MAILCHECK\tBash'in yeni postaya kaç saniyede bir bakacağı.\n" +" MAILPATH\tBash'in yeni posta var mı diye bakacağı dosya\n" +" \t\tisimlerinin ikinokta imi ayraçlı listesi.\n" +" OSTYPE\tBash'in üzerinde çalıştığı çekirdeğin türü.\n" +" PATH\tKomutları ararken bakılacak dizinlerin ikinokta imi\n" +" \t\tayraçlı listesi.\n" +" PROMPT_COMMAND\tBirincil komut istemi ($PS1) basılmadan önce\n" +" \t\tçalıştırılacak komut\n" +" PS1\tBirincil komut istemi dizgesi.\n" +" PS2\tİkincil komut istemi dizgesi.\n" +" PWD\tÇalışma dizininizin tam yolu.\n" +" SHELLOPTS\tEtkin kabuk seçeneklerinin ikinokta imi ayraçlı listesi\n" +" TERM\tGeçerli uçbirim türünün ismi.\n" +" TIMEFORMAT\ttime anahtar sözcüğü ile başlayan zamanlama bilgisinin\n" +" \t\tnasıl belirtileceğini gösteren biçim dizgesi.\n" +" auto_resume\tDeğerin boş olmaması durmuş işin isminin onu\n" +" \t\tbaşlatmakta kullanılan komut satırı olduğudur ve\n" +" \t\toradaysa iş önalana alınır. `exact' değeri, komut\n" +" \t\tsözcüğünün durmuş işler listesindeki komutla tam\n" +" \t\tolarak eşleşmesi gerektiği anlamına gelir. `substring'\n" +" \t\tdeğeri, komut sözcüğünün işin bir altdizgesi ile\n" +" \t\teşleşmesi gerektiğini belirtir. Bunlar dışında bir\n" +" \t\tdeğer komutun durmuş bir işe önek olması gerektiği\n" +" \t\tanlamına gelir.\n" +" histchars\tGeçmiş yorumlaması, hızlı ikame ve sembolleştirmeyi\n" +" \t\tdenetleyen en çok üç karakter. İlk karakter geçmiş\n" +" \t\tyorumlamasının başlatılmasını sağlayan geçmiş\n" +" \t\tyorumlama karakteridir ve normalde ! işaretidir.\n" +" \t\tİkinci karakter, bir satırdaki ilk karakter olduğunda\n" +" \t\t`hızlı ikame'yi imleyen karakterdir ve normalde ^\n" +" \t\timidir. İstemlik olan üçüncü karakter ise, bir\n" +" \t\tsözcüğün ilk karakteri olarak bulunduğunda satırın\n" +" \t\tkalanının açıklama olmasını sağlayan karakterdir ve\n" +" \t\tnormalde # imidir.\n" +" HISTIGNORE\tGeçmiş listesine hangi satırların kaydedilmesi\n" +" \t\tgerektiğine karar vermek için kullanılan kalıpların\n" +" \t\tikinokta imi ayraçlı listesi.\n" + +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5124,29 +5148,35 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" -"\rpushd [DZN | +N | -N] [-n]\n" +"Dizinleri yığına ekle.\n" +" \n" " Dizin yığıtının en üstüne bir dizin ekler, ya da geçerli çalışma\n" " dizini yığıtın tepesine gelecek şekilde yığıtı döndürür. Hiç\n" " argüman verilmemişse en üstteki iki dizini yer değiştirir.\n" -"\n" -" +N (`dirs' tarafından gösterilen listenin solundan saymaya\n" -" sıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n" -" yığıtı döndürür.\n" -"\n" -" -N (`dirs' tarafından gösterilen listenin sağından saymaya\n" -" sıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n" -" yığıtı döndürür.\n" -"\n" -" +n dizinleri yığıta eklerken normal dizin değişikliğini engeller,\n" -" böylece sadece yığıt değiştirilmiş olur.\n" -"\n" -" DZN DiZiNi yeni çalışma dizini yaparak dizin yığıtının\n" -" tepesine ekler.\n" -"\n" -" Dizin yığıtını `dirs' komutuyla görebilirsiniz." +" \n" +" Seçenekler:\n" +" -n\tdizinleri yığıta eklerken normal dizin değişikliğini engeller,\n" +" \t\tböylece sadece yığıt değiştirilmiş olur.\n" +" \n" +" Argümanlar:\n" +" +N\t(`dirs' tarafından gösterilen listenin solundan saymaya\n" +" \t\tsıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n" +" \t\tyığıtı döndürür.\n" +" \n" +" -N\t(`dirs' tarafından gösterilen listenin sağından saymaya\n" +" \t\tsıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n" +" \t\tyığıtı döndürür.\n" +" \n" +" dizin\tDİZİNi yeni çalışma dizini yaparak dizin yığıtının\n" +" \t\ttepesine ekler.\n" +" \n" +" Dizin yığıtını `dirs' komutuyla görebilirsiniz.\n" +" \n" +" Çıkış Durumu:\n" +" Geçersiz bir argüman belirtilmediği veya dizin değişikliği başarısız\n" +" olmadıkça başarılı döner." -#: builtins.c:1837 -#, fuzzy +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5172,22 +5202,31 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" -"\rpopd [+N | -N] [-n]\n" +"Dizin yığıtından girdileri sil.\n" +" \n" " Dizin yığıtından girdileri siler. Hiç argüman verilmemişse,\n" " yığıtın en üstündeki dizini yığıttan kaldırır ve yığıtın\n" " tepesinde kalan dizine geçer. \n" -" +N `dirs' tarafından gösterilen listenin solundan saymaya\n" -" sıfırla başlandığında N'inci girdiyi siler. Örneğin,\n" -" `popd +0' ilk dizini `popd +1' ikincisini siler. \n" -" -N `dirs' tarafından gösterilen listenin sağından saymaya\n" -" sıfırla başlandığında N'inci girdiyi siler. Örneğin,\n" -" `popd -0' son dizini `popd -1' sonuncudan öncekini siler. \n" -" -n dizinleri yığıttan silerken normal dizin değişikliğini\n" -" engeller, böylece sadece yığıt değiştirilmiş olur. \n" -" Dizin yığıtını `dirs' komutuyla görebilirsiniz." +" \n" +" Seçenekler:\n" +" -n\tdizinleri yığıttan silerken normal dizin değişikliğini\n" +" \t\tengeller, böylece sadece yığıt değiştirilmiş olur. \n" +" \n" +" Argümanlar:\n" +" +N\t\t`dirs' tarafından gösterilen listenin solundan saymaya\n" +" \t\tsıfırla başlandığında N'inci girdiyi siler. Örneğin,\n" +" \t\t`popd +0' ilk dizini `popd +1' ikincisini siler. \n" +" \n" +" -N\t\t`dirs' tarafından gösterilen listenin sağından saymaya\n" +" \t\tsıfırla başlandığında N'inci girdiyi siler. Örneğin,\n" +" \t\t`popd -0' son dizini `popd -1' sonuncudan öncekini siler. \n" +" \n" +" Dizin yığıtını `dirs' komutuyla görebilirsiniz. \n" +" Çıkış Durumu:\n" +" Geçersiz bir argüman belirtilmediği veya dizin değişikliği başarısız\n" +" olmadıkça başarılı döner." -#: builtins.c:1867 -#, fuzzy +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5215,31 +5254,39 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -"\rdirs [-clpv] [+N] [-N]\n" +"Dizin yığıtını görüntüle.\n" +" \n" " O an anımsanan dizinleri listeler. Dizinler listeye `pushd'\n" " komutuyla eklenir; listeden tek tek geri almak içinse `popd'\n" " komutu kullanılır.\n" -" -l seçeneği `dirs'in dizinleri ev dizininize göreli kısayollar\n" -" olarak göstermemesine yol açar. Yani `~/bin' yerine `/homes/bfox/bin'\n" -" gibi bir gösterimle karşılaşabilirsiniz. -v seçeneği `dirs'in\n" -" dizin yığıtını dizin adının önüne yığıt konumunu ekleyerek her\n" -" satırda bir girdi göstermesini sağlar. -p seçeneği yığıttaki\n" -" konumu göstermemesi dışında aynı çıktıyı verir. -c seçeneği tüm\n" -" girdileri silerek dizin yığıtını boşaltır. \n" -" +N dirs seçeneksiz çağrıldığında gösterdiği listenin solundan\n" -" sıfırla başlayarak sayılan N'inci girdiyi gösterir.\n" -"\n" -" -N dirs seçeneksiz çağrıldığında gösterdiği listenin sağından\n" -" sıfırla başlayarak sayılan N'inci girdiyi gösterir." +" \n" +" Seçenekler:\n" +" -c\ttüm girdileri silerek dizin yığıtını boşaltır.\n" +" -l\t`dirs'in dizinleri ev dizininize göreli kısayollar\n" +" \t\tolarak göstermemesine yol açar.\n" +" -p\tyığıttaki konumu göstermemesi dışında aynı çıktıyı verir.\n" +" -v\t`dirs'in dizin yığıtını dizin adının önüne yığıt konumunu\n" +" \t\tekleyerek her satırda bir girdi göstermesini sağlar.\n" +" \n" +" Argümanlar:\n" +" +N\tdirs seçeneksiz çağrıldığında gösterdiği listenin solundan\n" +" \t\tsıfırla başlayarak sayılan N'inci girdiyi gösterir.\n" +" \n" +" \n" +" -N\tdirs seçeneksiz çağrıldığında gösterdiği listenin sağından\n" +" \t\tsıfırla başlayarak sayılan N'inci girdiyi gösterir.\n" +" \n" +" Çıkış Durumu:\n" +" Geçersiz seçenek belirtilmediği veya bir hata oluşmadığı sürece başarılı " +"döner." -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5253,8 +5300,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1919 -#, fuzzy +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5292,19 +5338,43 @@ msgid "" "assignment\n" " error occurs." msgstr "" -"\rprintf [-v DEĞİŞKEN] BİÇİM [ARGümanlar]\n" -" BİÇİMin denetimi altında ARGümanları standart çıktıya biçimleyerek\n" -" yazar. BİÇİM üç tür nesne içeren bir dizgedir: salt karakterler\n" +"BİÇİMin denetimi altında ARGümanları standart çıktıya biçimleyerek " +"yazar\n" +" \n" +" Seçenekler:\n" +" -v değişken\tseçeneği çıktının standart çıktıya\n" +" \t\tbasılması yerine DEĞİŞKENe atanmasını sağlar.\n" +" \n" +" BİÇİM üç tür nesne içeren bir dizgedir: salt karakterler\n" " basitçe standart çıktıya kopyalanır, öncelenmiş karakterler\n" " dönüştürülüp standart çıktıya kopyalanır ve biçim belirtimleri;\n" " belirtimlerin her biri sırayla karşı düşen ARGümanların basılmasını\n" -" sağlar. Standart printf(1) biçimlerine ek olarak, %b printf'in tersbölü\n" -" öncelemeli karakterlerin karşı düşen ARGümanda yorumlanmasını sağlar ve\n" -" %q printf'in karşı düşen ARGümanı kabuk girdisi olarak kullanılabilecek\n" -" biçimde çıktılamasını sağlar. -v seçeneği çıktının standart çıktıya\n" -" basılması yerine DEĞİŞKENe atanmasını sağlar. " +" sağlar.\n" +" \n" +" Standart printf(1) biçimlerine ek olarak, printf aşağıdakileri de " +"yorumlar:\n" +" \n" +" %b\ttersbölü öncelemeli karakterlerin karşı düşen ARGümanda " +"yorumlanmasını sağlar\n" +" %q\tARGümanın kabuk girdisi olarak kullanılabilecek biçimde " +"kullanılabilmesi\n" +" \t\tiçin alıntılar.\n" +" %(fmt)T\tstrftime(3) için bir biçim dizgesi olarak FMT tarafından " +"kullanılmak üzere\n" +" \t\ttarih zaman dizgesi çıktısısı verir\n" +" \n" +" Biçim argümanların tümünün kullanılabilmesi için gerektiğinde yeniden " +"kullanılır.\n" +" Biçimin gerektirdiğinden daha az argüman varsa, ek biçim tanımlamaları " +"uygun olduğu\n" +" şekilde sıfır değeri veya BOŞ (null) dizge değeri olarak davranırlar.\n" +" \n" +" Çıkış Durumu:\n" +" Geçersiz bir seçenek belirtilmediği veya yazılmadığı takdirde ya da bir " +"atama\n" +" hatası oluşmadığı sürece başarılı döner." -#: builtins.c:1953 +#: builtins.c:1961 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5322,16 +5392,20 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5353,7 +5427,7 @@ msgstr "" " Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde " "başarılı döner." -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -5368,6 +5442,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5384,7 +5459,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5426,7 +5501,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5436,9 +5511,8 @@ msgstr "" " \n" " `mapfile' ile eşanlamlıdır." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Telif Hakkı (C) 2013 Özgür Yazılım Vakfı A.Ş." +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Telif Hakkı (C) 2012 Özgür Yazılım Vakfı A.Ş." #~ msgid ":" #~ msgstr ":" @@ -5452,9 +5526,6 @@ msgstr "" #~ msgid "times" #~ msgstr "times" -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Telif Hakkı (C) 2012 Özgür Yazılım Vakfı A.Ş." - #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Telif Hakkı (C) 2009 Free Software Foundation, Inc.\n" diff --git a/po/uk.gmo b/po/uk.gmo index 466af2cdc..448088dd5 100644 Binary files a/po/uk.gmo and b/po/uk.gmo differ diff --git a/po/uk.po b/po/uk.po index f49732bde..9614255d2 100644 --- a/po/uk.po +++ b/po/uk.po @@ -4,139 +4,140 @@ # # Myhailo Danylenko , 2009. # Maxim V. Dziumanenko , 2010. -# Yuri Chornoivan , 2011, 2013, 2014, 2015. +# Yuri Chornoivan , 2011, 2013, 2014, 2015, 2016. msgid "" msgstr "" -"Project-Id-Version: bash 4.4-beta1\n" +"Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-15 21:32+0300\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2016-09-16 17:46+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: uk\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Lokalize 1.5\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "неправильний індекс масиву" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: вилучаємо атрибут nameref" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: неможливо перетворити індексований масив на асоціативний" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: неправильний ключ асоціативного масиву" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: означення нечислових елементів неможливе" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: при означенні асоціативних масивів слід вказувати ключ" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: не вдалося створити: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: не вдалося знайти відповідне призначення для " "команди" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: перший непробільний символ не є «\"»" # c-format -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "нема заключної «%c» у %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: пропущено двокрапку-роздільник" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "розкриття дужок: не вдалося отримати пам’ять для %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "розкриття дужок: не вдалося отримати об’єм пам’яті для %d елементів" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "розкриття дужок: не вдалося отримати об’єм пам’яті для «%s»" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "«%s»: некоректна назва замінника" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "редагування рядку не ввімкнено" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "«%s»: неправильна назва набору призначень клавіш" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: не вдалося прочитати: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "«%s»: не вдалося зняти призначення" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "«%s»: невідома назва функції" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s не призначено жодної клавіші.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s можна запустити за допомогою " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: не вдалося зняти призначення" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "кількість циклів" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "має сенс лише усередині циклів `for', `while' та `until'" @@ -150,235 +151,234 @@ msgstr "" " \n" " Якщо EXPR не вказано, повертає " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "змінну HOME не встановлено" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "забагато аргументів" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "немає іншого каталогу" +msgstr "порожній каталог" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "змінну OLDPWD не встановлено" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "рядок %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "попередження: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: використовуйте: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: параметр потребує аргументу" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: потрібен числовий аргумент" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: не знайдено" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: неправильний параметр" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: некоректна назва параметра" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "«%s»: неправильний ідентифікатор" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "неправильне вісімкове число" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "неправильне шістнадцяткове число" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "неправильне число" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: сигнал вказано з помилками" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "«%s»: не є ідентифікатором процесу чи завдання" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: змінна призначена лише для читання" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s виходить за встановлені межі" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "аргумент" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s виходить за встановлені межі" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: нема такого завдання" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: керування завданнями не ввімкнене" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "керування завданнями не ввімкнене" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: заборонено обмеженнями" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "заборонено обмеженнями" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: не є вбудованою командою оболонки" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "помилка запису: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "помилка встановлення параметрів термінала: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "помилка отримання параметрів термінала: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: помилка отримання поточного каталогу: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: завдання вказано неоднозначно" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "у цій версії не можна скористатися довідкою" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: неправильна назва дії" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: не вказано специфікація завершення" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "попередження: можливо параметр -F працює не так, як ви очікуєте" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "попередження: можливо параметр -C працює не так, як ви очікуєте" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "наразі функція завершення рядку не виконується" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "може використовуватися лише усередині функції" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: еталонна змінна не може бути масивом" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: не можна використовувати циклічне посилання у змінній посилання" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: циклічне посилання за назвою" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: некоректна назва змінної для посилання за назвою" +msgstr "«%s»: некоректна назва змінної для посилання за назвою" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "`-f' не використовується для створення функцій" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: незмінна функція" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" "%s: встановлення значень для складеного масиву у лапках вважається застарілим" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: неможливо знищити масив таким чином" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: неможливо перетворити асоціативний масив на індексований" @@ -414,68 +414,68 @@ msgstr "%s: завантажений не динамічно" msgid "%s: cannot delete: %s" msgstr "%s: не вдалося вилучити: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: це каталог" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: не є звичайним файлом" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: файл завеликий" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: не вдалося виконати бінарний файл" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: не вдалося виконати: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "вихід\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "це не оболонка сеансу: використовуйте `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Залишилися призупинені завдання.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Фонові завдання все ще виконуються.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "команду не знайдено" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" -msgstr "параметри історії" +msgstr "параметри журналу" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: не вдалося відкрити тимчасовий файл: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "поточне" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "завдання %d запущене без контролю завдань" @@ -490,29 +490,28 @@ msgstr "%s: неправильний параметр — %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: параметр потребує аргументу — %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "кешування вимкнене" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: в кеші нічого немає\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "влучень\tкоманда\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Команди оболонки, що відповідають слову `" msgstr[1] "Команди оболонки, що відповідають словам `" msgstr[2] "Команди оболонки, що відповідають словам `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -520,12 +519,12 @@ msgstr "" "«%s» не відповідає жодний розділ довідки. Спробуйте `help help' чи `man -k %" "s' або `info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: не вдалося відкрити: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -548,23 +547,24 @@ msgstr "" "Зірочка (*) поряд з назвою команди означає, що команда заборонена.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "-anrw можуть зустрічатися лише один раз" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" -msgstr "позиція у історії команд" +msgstr "позиція у журналу команд" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: некоректний аргумент" +msgstr "%s: некоректна часова позначка" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" -msgstr "%s: невдалий пошук по історії команд" +msgstr "%s: невдалий пошук по журналу команд" #: builtins/inlib.def:71 #, c-format @@ -575,16 +575,16 @@ msgstr "%s: помилка inlib" msgid "no other options allowed with `-x'" msgstr "не можна використовувати інші параметри разом з `-x'" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: аргументи мають бути ідентифікаторами завдань чи процесів" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Невідома помилка" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "очікувався вираз" @@ -593,69 +593,69 @@ msgstr "очікувався вираз" msgid "%s: not an indexed array" msgstr "%s: не є індексованим масивом" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: неправильно вказаний дескриптор файла" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: неправильний дескриптор файла: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: неправильна кількість рядків" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: неправильний початковий індекс" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: неправильний крок виклику функції" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "порожня назва змінної-масиву" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "змінні-масиви не підтримуються" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "«%s»: пропущено символ у шаблоні" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "«%c»: помилкове визначення формату часу" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "«%c»: помилковий символ у шаблоні" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "попередження: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "проблема з обробкою форматування: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "пропущено шістнадцяткову цифру у \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "пропущено цифру Unicode у \\%c" @@ -669,19 +669,19 @@ msgstr "немає іншого каталогу" msgid "%s: invalid argument" msgstr "%s: некоректний аргумент" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<немає поточного каталогу>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "стек каталогів порожній" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "рівень стеку каталогів" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -723,7 +723,7 @@ msgstr "" " -N\tПоказує N-ний з кінця каталог у списку, що виводиться командою\n" "\tdirs без аргументів, відлік починається з нуля." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -769,7 +769,7 @@ msgstr "" " \n" " Вбудована команда `dirs' показує стек каталогів." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -815,41 +815,41 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: некоректне визначення часу очікування" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "помилка читання: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "`return' працює лише у функції чи скрипті, запущеному за допомогою `source'" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "не можна одночасно знищити і функцію і змінну" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: не вдалося знищити" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не вдалося знищити: %s лише для читання" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: не є масивом" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: не є функцією" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: не вдалося експортувати" @@ -858,20 +858,20 @@ msgstr "%s: не вдалося експортувати" msgid "shift count" msgstr "кількість зсувів" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "не можна одночасно встановлювати й скасовувати параметри оболонки" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: неправильна назва параметра оболонки" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "потрібна назва файла" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: файл не знайдено" @@ -884,63 +884,63 @@ msgstr "не вдалося призупинити" msgid "cannot suspend a login shell" msgstr "не можна призупинити оболонку сеансу" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s є псевдонімом до «%s»\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s — це ключове слово оболонки\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s є функцією\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s є спеціальною вбудованою командою оболонки\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s є вбудованою командою оболонки\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s — це %s\n" # I know the difference between hash and cache, but here, # I think, this is more suitable... -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s знаходиться в кеші (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: помилковий аргумент обмеження" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "«%c»: неправильна команда" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: не вдалося отримати значення обмеження: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "значення обмеження" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: не вдалося змінити обмеження: %s" @@ -959,361 +959,371 @@ msgstr "«%c»: помилковий оператор у символьному msgid "`%c': invalid symbolic mode character" msgstr "«%c»: помилковий символ у символьному режимі" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " рядок " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "остання команда: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Припинення..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "ІНФОРМАЦІЯ: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "невідома помилка команди" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "неправильний тип команди" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "неправильний з’єднувальний оператор" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "неправильний перехід" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: неозначена змінна" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aчас очікування вводу вичерпано: автоматичний вихід\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "не вдалося переспрямувати /dev/null на стандартний ввід: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: «%c»: помилковий символ шаблону" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] все ще існує" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "помилка каналу" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: перевищено максимальний рівень вкладеності eval (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: перевищено максимальний рівень вкладеності джерела (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: перевищено максимальний рівень вкладеності функцій (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: обмеження: не можна вказувати `/' у назві команди" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: команду не знайдено" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: неправильний інтерпретатор" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: не вдалося виконати бінарний файл: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "%s є спеціальною вбудованою командою оболонки" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "не вдалося створити копію файлового дескриптору %d у %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "рівень вкладення виразів перевищено" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "нестача стеку рекурсії" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "синтаксична помилка у виразі" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "спроба призначення не-змінної" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "синтаксична помилка у виразі" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "ділення на 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "вада: неправильна лексема у виразі" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "очікувалася `:' умовного виразу" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "експонента менша за 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "пре-інкремент чи пре-декремент потребують ідентифікатор" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "відсутня `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "синтаксична помилка: очікувався операнд" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "синтаксична помилка: помилковий арифметичний оператор" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (позначка помилки \"%s\")" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "некоректна арифметична основа" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "завелике значення основи" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: помилка у виразі\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: не вдалося отримати доступ до каталогів вищого рівня" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не вдалося перевстановити режим без затримки файлового дескриптору %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "не вдалося отримати новий файловий дескриптор для вводу bash з файлового " "дескриптору %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: для нового файлового дескриптору %d вже існує буфер" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" "ідентифікатор відгалуженого процесу %d знайдено у поточному завданні %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "вилучення зупиненого завдання %d, що має групу процесів %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: процес %5ld (%s) у the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" "add_process: ідентифікатор процесу %5ld (%s) вказує на його працездатність" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ідентифікатор процесу не існує" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Завершено" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Зупинено" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Зупинено(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Працює" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Зроблено(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Вихід %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Невідомий стан" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(збережено знімок оперативної пам’яті)" -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (РД: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "зміна групи дочірнього процесу (%ld на %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: процес %ld не є відгалуженим від цієї оболонки" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Нема запису для процесу %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: завдання %d зупинене" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: завдання завершилося" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: завдання %d вже працює в фоні" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: увімкнути WNOHANG, щоб уникнути нескінченного блокування" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: рядок %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (збережено знімок оперативної пам’яті)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(тепер РД: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: помилка getpgrp" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: алгоритм реалізації рядків" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: алгоритм реалізації рядків" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "не вдалося встановити групу процесу для термінала (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "ця оболонка не може керувати завданнями" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: умова не виконується: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1322,43 +1332,43 @@ msgstr "" "\r\n" "malloc: %s:%d: потрібна умова не виконується\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "невідомий" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: зайнятий блок у списку вільних" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: аргумент є вже звільненим блоком" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: блок ще не виділено" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" "free: виявлено перехід за нижню границю блоку; mh_nbytes не вкладається у " "рамки" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: розмір у записах на початку та в кінці блоку відрізняється" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: блок ще не виділено" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "realloc: виявлено перехід за нижню границю блоку; mh_nbytes не вкладається у " "рамки" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: розмір у записах на початку та в кінці блоку відрізняється" @@ -1400,22 +1410,22 @@ msgstr "%s: неправильно вказаний мережевий шлях" msgid "network operations not supported" msgstr "мережеві операції не підтримуються" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: не вдалося змінити локаль (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: не вдалося змінити локаль (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: не вдалося змінити локаль (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: не вдалося змінити локаль (%s): %s" @@ -1433,150 +1443,152 @@ msgstr "Нова пошта у $_" msgid "The mail in %s has been read\n" msgstr "Пошту у %s прочитано\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "синтаксична помилка: потрібен арифметичний вираз" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "синтаксична помилка: неочікувана `;'" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "синтаксична помилка: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: неправильний тип інструкції %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document з рядка %d закінчено кінцем файла (очікувалося «%s»)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: інструкція переспрямування `%d' поза межами" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) перевищує обмеження SIZE_MAX (%lu): " +"рядок обрізано" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "перевищено максимальну можливу кількість here-document" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "файл скінчився раніше, ніж було знайдено відповідний «%c»" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "файл скінчився раніше, ніж було знайдено `]]'" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "синтаксична помилка в умовному виразі: неочікувана лексема «%s»" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "синтаксична помилка в умовному виразі" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неочікувана лексема «%s», очікувалася `)'" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "очікувалася `)'" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неочікуваний аргумент унарного умовного оператора «%s»" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "неочікуваний аргумент унарного умовного оператора" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неочікувана лексема «%s», очікувався бінарний умовний оператор" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "очікувався бінарний умовний оператор" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неочікуваний аргумент бінарного умовного оператора «%s»" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "неочікуваний аргумент бінарного умовного оператора" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неочікувана лексема «%c» в умовній команді" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неочікувана лексема «%s» в умовній команді" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "неочікувана лексема %d в умовній команді" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "синтаксична помилка коло неочікуваної лексеми «%s»" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "синтаксична помилка коло «%s»" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "синтаксична помилка: раптово скінчився файл" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "синтаксична помилка" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Використовуйте \"%s\", щоб вийти з оболонки.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "файл скінчився, перш ніж було знайдено відповідну `)'" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "завершення: функцію «%s» не знайдено" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: можливий цикл повторних спроб" #: pcomplib.c:182 #, c-format @@ -1604,90 +1616,94 @@ msgstr "" "дескриптор файла xtrace (%d) не дорівнює номеру файла у вказівнику xtrace (%" "d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: «%c»: неправильний символ шаблону" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "дескриптор файла поза можливими межами" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: неоднозначне переспрямування" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" -msgstr "%s: заборонено перезаписувати існуючі файли" +msgstr "%s: заборонено перезаписувати наявні файли" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: обмеження: переспрямування виводу заборонене" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не вдалося створити тимчасовий файл для here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: не вдалося надати змінній значення дескриптора файла" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port не підтримується" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "помилка переспрямування: не вдалося створити копію дескриптора файла" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "не вдалося знайти /tmp, будь ласка створіть його!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp має бути чинною назвою каталогу" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: помилковий параметр" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "не вдалося встановити uid %d: ефективним є uid %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "не вдалося встановити gid %d: ефективним є gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "не вдалося запустити засіб діагностики: режим діагностування вимкнено" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: це каталог" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "У мене нема назви!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, версія %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1696,63 +1712,63 @@ msgstr "" "Використовуйте:\t%s [довгий параметр GNU] [параметр] ...\n" "\t%s [довгий параметр GNU] [параметр] файл_сценарію ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Довгі параметри GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Параметри оболонки:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD чи -c команда чи -O параметр_shopt\t\t(тільки на початку)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s чи -o параметр\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Введіть `%s -c \"help set\"', щоб отримати більше інформації про параметри " "оболонки.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Введіть `%s -c help', щоб отримати більше інформації про вбудовані команди " "оболонки.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" "Щоб повідомити про помилку в програмі, використовуйте команду `bashbug'.\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "Домашня сторінка bash: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" "Загальна довідкова інформація щодо використання програмного забезпечення " "GNU: \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: некоректна операція" #: siglist.c:48 msgid "Bogus signal" -msgstr "Неіснуючий сигнал" +msgstr "Ненаявний сигнал" #: siglist.c:51 msgid "Hangup" @@ -1919,94 +1935,98 @@ msgstr "Невідомий сигнал №" msgid "Unknown Signal #%d" msgstr "Невідомий сигнал №%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "неправильна заміна: немає заключної «%s» у %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: неможливо означити елемент масиву списком" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "не вдалося створити канал для підставляння процесу" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "не вдалося створити дочірній процес для підставляння процесу" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "не вдалося відкрити іменований канал %s для читання" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "не вдалося відкрити іменований канал %s для запису" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "не вдалося здублювати іменований канал %s як fd %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "неправильна заміна: немає заключної \"`\" у %s" +msgstr "заміна команди: проігноровано порожній байт у вхідних даних" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "не вдалося створити канал для підставляння команди" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "не вдалося створити дочірній процес для підставляння команди" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute: не вдалося створити копію каналу із файловим " "дескриптором 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: некоректна назва змінної для посилання за назвою" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: неправильна заміна" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: некоректне непряме розгортання" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "%s: некоректна назва змінної" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: параметр нульової довжини чи не вказаний" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: параметр нульової довжини чи не вказаний" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: підрядок коротший за 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: неправильна заміна" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: не можна призначити таким чином" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2014,12 +2034,12 @@ msgstr "" "у наступних версіях оболонки буде виконуватися обчислення для заміни " "арифметичних виразів" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "неправильна заміна: немає заключної \"`\" у %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "нема відповідника: %s" @@ -2042,30 +2062,35 @@ msgstr "очікувалася `)'" msgid "`)' expected, found %s" msgstr "очікувалася `)', отримано %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: очікувався унарний оператор" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: очікувався бінарний оператор" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "відсутня `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "неправильний номер сигналу" -#: trap.c:387 +#: trap.c:320 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: перевищено максимальний рівень вкладеності eval (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: неправильне значення у trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2073,87 +2098,87 @@ msgstr "" "run_pending_traps: обробник сигналу є SIG_DFL, %d (%s) повторно надсилається " "собі" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: неправильний сигнал %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "помилка імпортування означення функції «%s»" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "рівень оболонки (%d) занадто високий, перевстановлено у 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: немає контексту функції у поточній області" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: змінною не може бути значення, яке приймають інші змінні" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: некоректна назва змінної для посилання за назвою" +msgstr "%s: присвоєння цілого числа посиланню з назвою" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: немає контексту функції у поточній області" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s має нульове значення рядка експортування" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "Помилковий символ %d у рядку експорту для %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "немає `=' у рядку експорту для %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: перший елемент shell_variables не є контекстом функції" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: немає контексту global_variables" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: перший елемент shell_variables не є тимчасовим оточенням виконання" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: не вдалося відкрити ФАЙЛ" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: некоректне значення дескриптора файла трасування" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: значення сумісності не належить припустимому діапазону значень" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "© Free Software Foundation, Inc., 2015" +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "© Free Software Foundation, Inc., 2016" #: version.c:47 version2.c:47 msgid "" @@ -2178,22 +2203,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Не надається НІЯКИХ ГАРАНТІЙ у межах, передбачених законом." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: не вдалося виділити %lu байтів (виділено %lu байтів)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: не вдалося виділити %lu байтів" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: не вдалося виділити %lu байтів (виділено %lu байтів)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: не вдалося виділити %lu байтів" @@ -2322,9 +2347,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [завдання ...] чи jobs -x команда [аргументи]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [завдання ...]" +msgstr "disown [-h] [-ar] [специфікація завдання ... | pid ...]" #: builtins.c:134 msgid "" @@ -2408,7 +2432,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [режим-доступу]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [ідентифікатор]" #: builtins.c:181 @@ -2500,8 +2525,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v змінна] шаблон-форматування [аргументи]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2519,7 +2545,8 @@ msgstr "" "префікс] [-S суфікс] [слово]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o параметр] [назва ...]" #: builtins.c:242 @@ -2531,9 +2558,10 @@ msgstr "" "t] [-u дескриптор] [-C обробник] [-c крок] [масив]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n кількість] [-O початок-відліку] [-s кількість] [-t] [-u " "дескриптор] [-C обробник] [-c крок] [масив]" @@ -2716,6 +2744,7 @@ msgstr "" " Команда завершується невдало, якщо N менше 1." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2726,7 +2755,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Виконує вбудовану команду оболонки.\n" " \n" @@ -2954,6 +2983,7 @@ msgstr "" " знайдено." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2972,11 +3002,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3030,7 +3060,6 @@ msgstr "" " помилки під час виконання." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3038,7 +3067,7 @@ msgid "" msgstr "" "Встановлює значення та властивості змінних.\n" " \n" -" Команда вийшла з ужитку. Дивіться `help declare'." +" Синонім `declare'. Дивіться `help declare'." #: builtins.c:538 msgid "" @@ -3071,6 +3100,7 @@ msgstr "" "функцію." #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3099,6 +3129,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3135,7 +3171,7 @@ msgstr "" " Код завершення:\n" " Команда завершується невдало, якщо виникне помилка запису." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3157,7 +3193,7 @@ msgstr "" " Код завершення:\n" " Команда завершується невдало, якщо трапиться помилка запису." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3212,7 +3248,7 @@ msgstr "" " Команда завершується невдало, якщо НАЗВА не є вбудованою командою\n" " оболонки або якщо трапиться помилка під час виконання." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3234,7 +3270,7 @@ msgstr "" "команди\n" " є порожнім рядком, команда завершується успішно." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3320,7 +3356,7 @@ msgstr "" " Команда завершується успішно, якщо знайдено параметр; помилково, якщо\n" " параметри скінчилися або трапилася помилка." -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3361,7 +3397,7 @@ msgstr "" " Команда завершується невдало, якщо команду не буде знайдено або якщо\n" " трапиться помилка переспрямування." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3373,7 +3409,7 @@ msgstr "" " Виходить з оболонки, повертаючи статус N. Якщо N не вказано, береться\n" " статус останньої запущеної команди." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3387,7 +3423,7 @@ msgstr "" "команду\n" " запущено не у оболонці сеансу." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3419,14 +3455,14 @@ msgstr "" "Показує чи запускає команди зі списку попередньо запущених.\n" " \n" " Fc використовується для показу чи редагування та подальшого повторного\n" -" запуску команд з історії. ПЕРШИЙ та ОСТАННІЙ можуть вказувати діапазон\n" +" запуску команд з журналу. ПЕРШИЙ та ОСТАННІЙ можуть вказувати діапазон\n" " або ПЕРШИЙ може бути рядком, тоді він означатиме останню команду, що\n" " починалася з цього рядка.\n" " \n" " Параметри:\n" " -e РЕДАКТОР\tВказує редактор. Зазвичай це FCEDIT, EDITOR чи vi,\n" " \t\tщо перше буде знайдене.\n" -" -l\tПоказати рядки історії, замість редагування.\n" +" -l\tПоказати рядки журналу, замість редагування.\n" " -n\tНе виводити номери рядків у списку.\n" " -r\tПоказувати у зворотньому порядку (найновіші першими).\n" " \n" @@ -3442,7 +3478,7 @@ msgstr "" " Команда завершується зі статусом запущених команд, або помилкою, якщо\n" " трапиться помилка." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3464,7 +3500,7 @@ msgstr "" " Команда завершується зі статусом завершення завдання, що переведене\n" " у пріоритетний режим, або помилкою, якщо трапиться помилка." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3489,7 +3525,7 @@ msgstr "" "якщо\n" " трапиться помилка." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3533,7 +3569,8 @@ msgstr "" " Команда завершується невдало, якщо НАЗВУ не вдалося знайти або якщо\n" " вказано помилковий параметр." -#: builtins.c:812 +#: builtins.c:816 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3548,7 +3585,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3576,7 +3613,7 @@ msgstr "" " помилковий параметр." # WTF??? history list += history + history file ??? -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3586,7 +3623,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3612,7 +3650,7 @@ msgid "" msgstr "" "Показує чи змінює список попередніх команд.\n" " \n" -" Показує список історії команд з номерами рядків, вказуючи `*' перед " +" Показує список журналу команд з номерами рядків, вказуючи `*' перед " "кожним\n" " зміненим рядком. Якщо вказано аргумент N, показує лише N останніх " "рядків.\n" @@ -3621,17 +3659,17 @@ msgstr "" " -c\tВилучити зі списку усі збережені команди.\n" " -d позиція\tВилучити рядок у ПОЗИЦІЇ (відносній).\n" " \n" -" -a\tДодати записи з поточної сесії до файла історії.\n" -" -n\tДодати записи, яких ще немає в списку з файла історії.\n" -" -r\tПрочитати файл історії та додати його вміст до кінця списку.\n" -" -w\tЗаписати поточну історію команд до файла історії та додати\n" -" \tїх до кінця списку історії.\n" +" -a\tДодати записи з поточного сеансу до файла журналу.\n" +" -n\tДодати записи, яких ще немає у списку з файла журналу, і\n" +" \t\tдописати їх до файла журналу.\n" +" -r\tПрочитати файл журналу та додати його вміст до кінця списку.\n" +" -w\tЗаписати поточний журнал команд до файла журналу.\n" " \n" -" -p\tЗробити розкриття історії команд на кожному з АРГУМЕНТІВ та\n" -" \tпоказати результат (без збереження у списку історії команд).\n" -" -s\tДодати АРГУМЕНТИ до списку історії як один запис.\n" +" -p\tЗробити розкриття журналу команд на кожному з АРГУМЕНТІВ та\n" +" \tпоказати результат (без збереження у списку журналу команд).\n" +" -s\tДодати АРГУМЕНТИ до списку журналу як один запис.\n" " \n" -" Якщо вказаний ФАЙЛ, його буде використано як файл історії команд. " +" Якщо вказаний ФАЙЛ, його буде використано як файл журналу команд. " "Інакше,\n" " якщо визначено $HISTFILE, береться її значення, якщо ні — ~/." "bash_history.\n" @@ -3646,7 +3684,7 @@ msgstr "" "виникло\n" " помилки під час виконання." -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3691,7 +3729,7 @@ msgstr "" " виникло помилки під час виконання. При використанні -x команда\n" " завершується зі статусом завершення КОМАНДИ." -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3723,8 +3761,7 @@ msgstr "" " Команда завершується невдало, якщо вказано неправильний параметр чи\n" " ЗАВДАННЯ." -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3758,6 +3795,7 @@ msgstr "" " -n сигнал\tСИГНАЛ є номером сигналу.\n" " -l\tПерелічити назви сигналів; якщо за -l ідуть іще аргументи, вони\n" " \t\tвважаються номерами сигналів, які треба показати.\n" +" -L\tсинонім до -l\n" " \n" " Kill є вбудованою командою з двох причин: це дозволяє вказувати\n" " ідентифікатори завдань замість ідентифікаторів процесів та дозволяє\n" @@ -3767,7 +3805,7 @@ msgstr "" " Команда завершується успішно, якщо вказані правильні аргументи та не\n" " трапилося помилки під час виконання." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3853,7 +3891,8 @@ msgstr "" " Якщо результатом обчислення останнього АРГУМЕНТУ є 0, let повертає 1,\n" " інакше — 0." -#: builtins.c:987 +#: builtins.c:992 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3874,7 +3913,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3951,7 +3990,7 @@ msgstr "" " встановлення значення змінної, або якщо із -u вказано неправильний " "файловий дескриптор." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3972,8 +4011,7 @@ msgstr "" " Код завершення:\n" " Команда повертає N, або помилку, якщо викликана не у функції чи сценарії." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4086,7 +4124,7 @@ msgstr "" " functrace те саме, що й -T\n" " hashall те саме, що й -h\n" " histexpand те саме, що й -H\n" -" history ввімкнути збереження історії команд\n" +" history ввімкнути збереження журналу команд\n" " ignoreeof не виходити з оболонки після зчитування кінця " "файла\n" " interactive-comments\n" @@ -4125,15 +4163,16 @@ msgstr "" " -v Друкувати рядки вводу по мірі їх читання.\n" " -x Друкувати команди та їх аргументи при їх виконанні.\n" " -B Виконувати розкриття дужок.\n" -" -C Вмикання параметра забороняє перезапис існуючих звичайних файлів\n" +" -C Вмикання параметра забороняє перезапис наявних звичайних файлів\n" " переспрямуванням виводу.\n" " -E Якщо ввімкнений, пастка ERR успадковується функціями оболонки.\n" -" -H Ввімкнути підставляння історії за допомогою !. Цей параметр " +" -H Ввімкнути підставляння журналу за допомогою !. Цей параметр " "зазвичай\n" " ввімкнено у інтерактивних оболонках.\n" " -P Не переходити за символічними посиланнями при запуску команд,\n" " таких як cd, яка змінює поточний каталог.\n" -" -T Якщо ввімкнений, пастка DEBUG буде успадковуватися функціями\n" +" -T Якщо ввімкнений, пастки DEBUG і RETURN будуть успадковуватися " +"функціями\n" " оболонки.\n" " -- Призначити всі аргументи, які ще не призначено до позиційних " "параметрів.\n" @@ -4153,7 +4192,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказані правильні параметри." -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4194,7 +4233,7 @@ msgstr "" "НАЗВА\n" " доступна лише для читання." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4228,7 +4267,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказано правильні параметри та НАЗВИ." -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4267,7 +4306,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказано правильні параметри та НАЗВИ." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4285,7 +4324,7 @@ msgstr "" " Код завершення:\n" " Команда завершується невдало, якщо N менше за нуль чи більше за $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4309,7 +4348,7 @@ msgstr "" "або\n" " помилку, якщо ФАЙЛ не вдалося прочитати." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4334,7 +4373,7 @@ msgstr "" " Команда завершується невдало, якщо не ввімкнене керування завданнями чи\n" " якщо трапиться помилка." -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4499,7 +4538,7 @@ msgstr "" "вказано\n" " помилковий аргумент чи ВИРАЗ хибний." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4512,7 +4551,7 @@ msgstr "" "останнім\n" " аргументом має бути `]'." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4531,7 +4570,7 @@ msgstr "" " Код завершення:\n" " Команда завжди успішна." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4607,7 +4646,7 @@ msgstr "" " Команда завершується успішно, якщо вказані правильні параметри та " "СИГНАЛИ." -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4659,7 +4698,7 @@ msgstr "" "якщо\n" " хоч одне з них не вдасться знайти." -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4755,7 +4794,7 @@ msgstr "" " Команда завершується невдало, якщо вказано неправильний параметр чи\n" " трапилася помилка під час виконання." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4789,7 +4828,8 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказано правильну МАСКУ та параметри." -#: builtins.c:1494 +#: builtins.c:1499 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4797,13 +4837,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4825,7 +4867,7 @@ msgstr "" "вказано\n" " неправильні параметри чи ІДЕНТИФІКАТОР." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4854,7 +4896,7 @@ msgstr "" " Повертає код помилки, якщо вказано неправильний ІДЕНТИФІКАТОР чи " "параметр." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4875,7 +4917,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4905,7 +4947,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4944,7 +4986,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4972,7 +5014,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення ЛАНЦЮЖКА-КОМАНД." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4990,7 +5032,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5023,7 +5065,7 @@ msgstr "" " Команда повертає код завершення останньої виконаної команди або нуль,\n" " якщо жодна з перевірених умов не була істинною." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5041,7 +5083,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5060,8 +5102,7 @@ msgstr "" " Команда повертає код завершення останньої виконаної команди." # WTF? How can it return exit code of _asynchronous_ process... -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5083,9 +5124,9 @@ msgstr "" " Стандартна назва змінної — \"COPROC\".\n" " \n" " Код завершення:\n" -" Команда повертає код завершення КОМАНДИ." +" Команда coproc повертає стан виходу 0." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -5111,7 +5152,7 @@ msgstr "" " Код завершення:\n" " Команда завершується невдало, якщо НАЗВА є незмінною." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -5130,7 +5171,7 @@ msgstr "" " Код завершення:\n" " Конструкція повертає код завершення останньої виконаної команди." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5155,7 +5196,7 @@ msgstr "" " Код завершення:\n" " Команда повертає статус продовженого завдання." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5173,7 +5214,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо результат обчислення ненульовий." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5222,7 +5263,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо ВИРАЗ істинний." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5284,7 +5325,7 @@ msgstr "" "будуть\n" " \t\tігноруватися під час розкриття шляхів.\n" " HISTFILE\tНазва файла, де зберігається історія команд.\n" -" HISTFILESIZE\tНайбільша дозволена кількість записів у файлі історії.\n" +" HISTFILESIZE\tНайбільша дозволена кількість записів у файлі журналу.\n" " HISTSIZE\tНайбільша кількість записів, які може використовувати\n" " \t\tпоточна оболонка.\n" " HOME\tПовний шлях до вашої домівки.\n" @@ -5318,14 +5359,14 @@ msgstr "" " \t\t`substring' означає, що слово має міститися у команді завдання.\n" " \t\tБудь-яке інше значення означає, що команда завдання має\n" " \t\tпочинатися з вказаного слова.\n" -" histchars\tСимволи, що використовуються для розкриття історії та\n" -" \t\tшвидкої заміни. Перший символ є символом підставляння історії,\n" +" histchars\tСимволи, що використовуються для розкриття журналу та\n" +" \t\tшвидкої заміни. Перший символ є символом підставляння журналу,\n" " \t\tзазвичай це `!'. Другий — символ «швидкої заміни», зазичай `^'.\n" " \t\tТретій — символ «коментаря журналу», зазвичай це `#'.\n" " HISTIGNORE\tРозділений двокрапкою список шаблонів, що використовуються\n" -" \t\tпри визначенні, чи зберігати команду у списку історії.\n" +" \t\tпри визначенні, чи зберігати команду у списку журналу.\n" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5383,7 +5424,7 @@ msgstr "" " Команда завершується невдало, якщо вказаний неправильний аргумент чи\n" " якщо не вдалося змінити поточну каталог." -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5435,7 +5476,7 @@ msgstr "" " Команда завершується невдало, якщо вказано помилковий аргумент чи якщо\n" " не вдалося змінити поточний каталог." -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5489,14 +5530,14 @@ msgstr "" "якщо\n" " трапиться помилка." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5525,7 +5566,7 @@ msgstr "" " Команда завершується успішно, якщо ПАРАМЕТР ввімкнено; невдало, якщо\n" " вказано неправильні параметри чи ПАРАМЕТР вимкнено." -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5597,7 +5638,8 @@ msgstr "" "або\n" " якщо трапиться помилка запису чи присвоєння." -#: builtins.c:1953 +#: builtins.c:1961 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5615,10 +5657,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5646,7 +5692,7 @@ msgstr "" " Команда завершується успішно, якщо вказано правильні параметри та не\n" " трапиться помилки під час виконання." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5668,7 +5714,8 @@ msgstr "" " Команда завершується успішно, якщо вказано правильні параметри і не\n" " трапиться помилки під час виконання." -#: builtins.c:1996 +#: builtins.c:2006 +#, fuzzy msgid "" "Modify or display completion options.\n" " \n" @@ -5683,6 +5730,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5722,7 +5770,7 @@ msgstr "" " Команда завершується успішно, якщо вказано правильні параметри та\n" " вказівки завершень для НАЗВ існують." -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5805,7 +5853,7 @@ msgstr "" "або\n" " якщо МАСИВ є незмінним." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/vi.gmo b/po/vi.gmo index 9d187c416..25d892ccb 100644 Binary files a/po/vi.gmo and b/po/vi.gmo differ diff --git a/po/vi.po b/po/vi.po index b7f1bbf49..e04bace55 100644 --- a/po/vi.po +++ b/po/vi.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" "PO-Revision-Date: 2015-10-18 07:47+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" @@ -18,123 +18,124 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: vi\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Gtranslator 2.91.7\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "sai chỉ số mảng" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: không thể chuyển đổi mảng kiểu chỉ số sang mảng kết hợp" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: khóa mảng liên kết không hợp lệ" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: không thể gán cho chỉ số không thuộc kiểu số" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: phải sá»­ dụng chỉ số phụ khi gán mảng kết hợp" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: không thể tạo: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: không tìm thấy ánh xạ phím (keymap) cho câu lệnh" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: ký tá»± khác khoảng trắng đầu tiên không phải là “\"”" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "thiếu dấu đóng “%c” trong %s" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: thiếu dấu hai chấm phân cách" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "khai triển ngoặc ôm: không thể phân bổ bộ nhớ cho %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "khai triển ngoặc ôm: gặp lỗi khi phân bổ bộ nhớ cho “%d” phần tá»­" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "khai triển ngoặc ôm: gặp lỗi khi phân bổ bộ nhớ cho “%s”" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "“%s”: tên bí danh không hợp lệ" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "chưa bật sá»­a đổi dòng" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "“%s”: tên sÆ¡ đồ phím không hợp lệ" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: không thể đọc: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "“%s”: không thể tháo" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "“%s”: không hiểu tên hàm" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s không được ràng buộc với bất kỳ phím nào.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s có thể được gọi thông qua " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "“%s”: không thể tháo" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "đếm vòng" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "chỉ có nghÄ©a trong vòng lặp “for”, “while” hay “until”" @@ -148,234 +149,234 @@ msgstr "" "\n" " Nếu không có BTHỨC thì trả về " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "Chưa đặt biến môi trường HOME" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "quá nhiều đối số" -#: builtins/cd.def:336 +#: builtins/cd.def:341 #, fuzzy msgid "null directory" msgstr "không có thư mục khác" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "Chưa đặt biến môi trường OLDPWD" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "dòng %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "cảnh báo: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: cách dùng: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: tùy chọn cần một đối số" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: cần đối số thuộc kiểu số" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: không tìm thấy" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: tùy chọn không hợp lệ" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: tên tùy chọn không hợp lệ" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "“%s”: không phải là định danh hợp lệ" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "số bát phân không hợp lệ" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "số thập lục không hợp lệ" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "số không hợp lệ" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: sai đặc tả tín hiệu" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "“%s”: không phải một pid hoặc đặc tả công việc hợp lệ" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: biến chỉ đọc" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s nằm ngoài phạm vi" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "đối số" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s nằm ngoài phạm vi" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: không có công việc như vậy" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: không có điều khiển công việc" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "không có điều khiển công việc" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: bị hạn chế" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "bị hạn chế" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: không phải là lệnh tích hợp trong hệ vỏ" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "lỗi ghi: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "lỗi đặt các thuộc tính thiết bị cuối: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "lỗi lấy các thuộc tính thiết bị cuối: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: lỗi lấy thư mục hiện thời: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: đặc tả công việc chưa rõ ràng" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "trợ giúp không sẵn có ở phiên bản này" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s: tên hành động không hợp lệ" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s: không có đặc tả tá»± hoàn thiện" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "cảnh báo: tùy chọn “-F” có thể không hoạt động như mong đợi" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "cảnh báo: tùy chọn “-C” có thể không hoạt động như bạn mong đợi" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "hiện thời không thá»±c thi chức năng tá»± hoàn thiện" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "chỉ có thể dùng trong một hàm" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: biến tham chiếu không thể là một mảng" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: biến nameref tá»± tham chiếu là không được phép" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: tên tham chiếu quẩn tròn" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" msgstr "%s: tên biến không hợp lệ cho một tham chiếu tên" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "không thể dùng “-f” để tạo hàm" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s: hàm chỉ đọc" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: gán mảng phức hợp được trích dẫn đã lạc hậu" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: không thể há»§y biến mảng bằng cách này" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: không thể chuyển đổi mảng kết hợp sang mảng chỉ số" @@ -409,68 +410,68 @@ msgstr "%s không được tải động" msgid "%s: cannot delete: %s" msgstr "%s: không thể xóa: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: là thư mục" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: không phải là tập tin thường" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: tập tin quá lớn" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: không thể thá»±c hiện tập tin nhị phân" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: không thể thá»±c thi: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "đăng xuất\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "không phải hệ vỏ đăng nhập: hãy dùng lệnh “exit”" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Có công việc bị dừng.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Có công việc đang chạy.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "không tìm thấy lệnh" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "đặc tả lịch sá»­" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: không thể mở tập tin tạm: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "hiện tại" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "công việc %d đã khởi chạy mà không có điều khiển công việc" @@ -485,27 +486,26 @@ msgstr "%s: tùy chọn không được phép -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: tùy chọn cần đối số -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "tắt băm" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: bảng băm rỗng\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "gợi ý\tlệnh\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Câu lệnh hệ vỏ tương ứng với từ khóa “" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -513,12 +513,12 @@ msgstr "" "không có trợ giúp cho “%s”. Hãy chạy lệnh “help help” hoặc “man -k %s” hay " "“info %s”." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: không thể mở: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -538,20 +538,21 @@ msgstr "" "Dấu sao (*) bên cạnh tên nghÄ©a là lệnh bị tắt.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "chỉ có thể dùng một cá»§a những tùy chọn -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "vị trí lịch sá»­" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" msgstr "%s: đối số không hợp lệ" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: gặp lỗi khi khai triển lịch sá»­" @@ -565,16 +566,16 @@ msgstr "%s: inlib bị lỗi" msgid "no other options allowed with `-x'" msgstr "không cho phép dùng tùy chọn thêm với “-x”" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: đối số phải là ID tiến trình hoặc công việc" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "Lỗi không rõ" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "cần biểu thức" @@ -583,69 +584,69 @@ msgstr "cần biểu thức" msgid "%s: not an indexed array" msgstr "%s: không phải là mảng chỉ số" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: đặc tả bộ mô tả tập tin không hợp lệ" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: bộ mô tả tập tin không hợp lệ: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: sai số lượng dòng" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: gốc mảng không hợp lệ" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: lượng gọi ngược không hợp lệ" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "tên biến mảng vẫn trống" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "cần hỗ trợ biến mảng" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "“%s”: thiếu ký tá»± định dạng" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "“%c”: đặc tả định dạng thời gian không đúng" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "“%c”: ký tá»± định dạng không hợp lệ" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "cảnh báo: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "vấn đề phân tích cú pháp định dạng: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "thiếu chữ số thập lục phân cho \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "thiếu chữ số unicode cho \\%c" @@ -659,19 +660,19 @@ msgstr "không có thư mục khác" msgid "%s: invalid argument" msgstr "%s: đối số không hợp lệ" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "ngăn xếp thư mục trống" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "chỉ số ngăn xếp thư mục" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -711,7 +712,7 @@ msgstr "" " -N\thiển thị mục thứ N đếm từ bên phải khi gọi không tùy chọn,\n" " bắt đầu từ số không." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -755,7 +756,7 @@ msgstr "" "\n" " Lệnh “dirs” hiển thị ngăn xếp thư mục." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -798,40 +799,40 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: sai đặc tả thời gian chờ tối đa" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "lỗi đọc: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "chỉ có thể “return” từ một hàm hoặc văn lệnh được “source”" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "không thể há»§y đặt đồng thời một hàm VÀ một biến" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: không thể há»§y đặt" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: không thể há»§y đặt: %s chỉ đọc" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: không phải biến mảng" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: không phải hàm" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: không thể xuất" @@ -840,20 +841,20 @@ msgstr "%s: không thể xuất" msgid "shift count" msgstr "số lượng dịch" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "không thể đồng thời đặt và há»§y đặt các tùy chọn hệ vỏ" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: tên tùy chọn hệ vỏ không hợp lệ" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "cần đối số tên tập tin" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: không tìm thấy tập tin" @@ -866,61 +867,61 @@ msgstr "không thể ngưng" msgid "cannot suspend a login shell" msgstr "không thể ngưng hệ vỏ đăng nhập" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s là bí danh cá»§a “%s”\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s là từ khóa cá»§a hệ vỏ\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s là một hàm\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s là lệnh tích hợp đặc biệt cá»§a hệ vỏ\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s là lệnh tích hợp hệ vỏ\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s là %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s được băm (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: đối số giới hạn không hợp lệ" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "“%c”: câu lệnh sai" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: không thể lấy giới hạn: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "giới hạn" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: không thể sá»­a đổi giới hạn: %s" @@ -939,359 +940,369 @@ msgstr "“%c”: toán tá»­ chế độ ký hiệu không hợp lệ" msgid "`%c': invalid symbolic mode character" msgstr "“%c”: ký tá»± chế độ ký hiệu không hợp lệ" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " dòng " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "lệnh cuối: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Há»§y bỏ…" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "THBÁO:" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "lỗi lệnh không rõ" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "kiểu lệnh sai" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "bộ kết nối sai" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "nhảy sai" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: biến chưa liên kết" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aquá thời hạn đợi dữ liệu nhập: tá»± động đăng xuất\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "không thể chuyển hướng đầu vào chuẩn từ /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "ĐỊNH DẠNG THỜI GIAN: “%c”: ký tá»± định dạng không hợp lệ" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "lỗi ống dẫn" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: vượt quá mức độ eval lồng nhau tối đa (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: vượt quá mức độ nguồn lồng nhau tối đa (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: vượt quá mức độ các hàm lồng nhau tối đa (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: bị hạn chế: không thể dùng “/” trong tên lệnh" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s: không tìm thấy lệnh" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: bộ thông dịch sai" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: không thể thá»±c hiện tập tin nhị phân: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "“%s”: là lệnh tích hợp đặc biệt" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "không thể nhân đôi fd %d thành fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "vượt quá ngưỡng đệ quy cá»§a biểu thức" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "tràn ngược ngăn xếp đệ quy" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "lỗi cú pháp trong biểu thức" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "thá»­ gán cho thứ không phải biến" -#: expr.c:495 expr.c:858 +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "lỗi cú pháp trong biểu thức" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "chia cho không" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "lỗi: “token expassign” sai" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "cần “:” cho biểu thức điều kiện" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "số mÅ© nhỏ hÆ¡n 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "cần định danh sau tăng/giảm dần trước" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "thiếu “)”" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "lỗi cú pháp: cần toán hạng" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "lỗi cú pháp: toán tá»­ số học không hợp lệ" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (thẻ bài lỗi là \"%s\")" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "cÆ¡ số (toán học) không hợp lệ" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "cÆ¡ số có giá trị quá lớn" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: lỗi biểu thức\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: không thể truy cập thư mục cấp trên" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "không thể đặt lại chế độ “nodelay” cho fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "không thể cấp phát bộ mô tả tập tin mới cho dữ liệu nhập bash từ fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: đã có bộ đệm cho fd mới %d" # NghÄ©a chữ ? -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "pid được tánh nhánh %d có vẻ đang chạy trong công việc %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "đang xóa công việc bị dừng chạy %d với nhóm tiến trình %ld" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: tiến trình %5ld (%s) trong the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) được đánh dấu vẫn hoạt động" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: không có pid như vậy" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "Tín hiệu %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "Xong" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "Bị dừng" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "Bị dừng(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "Đang chạy" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "Xong(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "Thoát %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "Không rõ trạng thái" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(xuất ra core)" -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid tiến trình con (%ld thành %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld không phải là tiến trình con cá»§a hệ vỏ này" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Không có mục ghi về tiến trình %ld" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: công việc %d bị dừng chạy" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: công việc bị chấm dứt" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: công việc %d đã đang chạy nền" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: đang bật WNOHANG để tránh bị chặn vô hạn" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: dòng %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (xuất ra core)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(wd ngay: %s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp bị lỗi" -#: jobs.c:4104 +#: jobs.c:4247 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: ká»· luật dòng" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: ká»· luật dòng" # NghÄ©a chữ : dừng dịch -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "không thể đặt nhóm tiến trình cuối cùng (%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "không có điều khiển công việc trong hệ vỏ này" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: khẳng định gặp lỗi: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1300,41 +1311,41 @@ msgstr "" "\r\n" "malloc: %s:%d: khẳng định bị sai\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "không rõ" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "" "malloc (cấp phát bộ nhớ): khối bộ nhớ dành riêng trên danh sách các khối còn " "trống bị ghi vào" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: đã được gọi với đối số khối đã được giải phóng" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: đã được gọi với đối số khối chưa cấp phát" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: phát hiện sá»± tràn ngược; mh_nbytes ở ngoại phạm vi" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: kích cỡ đoạn đầu và cuối không trùng" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: đã được gọi với đối số khối chưa cấp phát" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: phát hiện sá»± tràn ngược; mh_nbytes nằm ngoài phạm vi cho phép" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: kích cỡ đoạn đầu và cuối không trùng" @@ -1376,22 +1387,22 @@ msgstr "%s: đặc tả đường dẫn mạng sai" msgid "network operations not supported" msgstr "không hỗ trợ thao tác mạng" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: không thể chuyển đổi miền địa phương (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: không thể chuyển đổi miền địa phương (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: không thể chuyển đổi miền địa phương (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: không thể chuyển đổi miền địa phương (%s): %s" @@ -1409,147 +1420,147 @@ msgstr "Bạn có thư mới trong $_" msgid "The mail in %s has been read\n" msgstr "Đã đọc thư trong %s\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "lỗi cú pháp: cần biểu thức số học" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "lỗi cú pháp: gặp dấu chấm phẩy “;” bất thường" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "lỗi cú pháp: “((%s))”" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: kiểu chỉ lệnh sai %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "tài liệu này ở dòng %d định giới bằng kết thúc tập tin (muốn “%s”)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: chỉ dẫn chuyển hướng “%d” nằm ngoài phạm vi" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "vượt quá số lượng tài-liệu-đây tối đa" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "gặp kết thúc tập tin bất thường trong khi tìm “%c” tương ứng" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "gặp kết thúc tập tin bất thường trong khi tìm “]]”" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "gặp lỗi cú pháp trong biểu thức điều kiện: thẻ bài bất thường “%s”" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "gặp lỗi cú pháp trong biểu thức điều kiện" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "gặp thẻ bài bất thường “%s”, cần “)”" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "cần “)”" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "đối số bất thường “%s” cho toán tá»­ một ngôi điều kiện" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "đối số bất thường cho toán tá»­ một ngôi điều kiện" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "thẻ bài bất thường “%s”, cần toán tá»­ hai ngôi điều kiện" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "cần toán tá»­ hai ngôi điều kiện" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "đối số bất thường “%s” cho toán tá»­ hai ngôi điều kiện" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "đối số bất thường cho toán tá»­ hai ngôi điều kiện" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "gặp thẻ bài bất thường “%c” trong câu lệnh điều kiện" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "gặp thẻ bài bất thường “%s” trong câu lệnh điều kiện" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "gặp thẻ bài bất thường “%d” trong câu lệnh điều kiện" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "có lỗi cú pháp ở gần thẻ bài bất thường “%s”" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "lỗi cú pháp ở gần “%s”" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "lỗi cú pháp: kết thúc tập tin bất thường" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "lỗi cú pháp" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Dùng \"%s\" để rời hệ vỏ.\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "gặp kết thúc tập tin bất thường trong khi tìm “)” tương ứng" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "tá»± hoàn thiện: không tìm thấy hàm “%s”" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1579,90 +1590,94 @@ msgstr "xtrace_set: con trỏ tập tin NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: “%c”: ký tá»± định dạng không hợp lệ" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "bộ mô tả tập tin ở ngoại phạm vi" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: chuyển hướng chưa rõ ràng" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: không thể ghi đè lên tập tin đã có" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: bị hạn chế: không thể chuyển hướng kết xuất" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "không thể tạo tập tin tạm thời cho tài liệu này: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: không thể gán fd vào biến" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port không được hỗ trợ nếu không có mạng" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "lỗi chuyển hướng: không thể nhân đôi fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "không tìm thấy /tmp, hãy tạo mới!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "“/tmp” phải là tên thư mục hợp lệ" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: tùy chọn không hợp lệ" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "không thể đặt uid thành %d: uid chịu tác động %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "không thể đặt gid thành %d: gid chịu tác động %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: Là một thư mục" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Không có tên!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, phiên bản %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1671,52 +1686,52 @@ msgstr "" "Cách dùng:\t%s [tùy chọn GNU dài] [tùy chọn] …\n" "\t\t%s [tùy chọn GNU dài] [tùy chọn] tập-tin-văn-lệnh …\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Tùy chọn dài:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Tùy chọn:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD hoặc -c lệnh hay -O tùy-chọn-ngắn\t\t(chỉ gọi)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s hoặc -o tùy-chọn\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Gõ “%s -c \"help set\"” để xem thông tin về các tùy chọn hệ vỏ.\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Gõ “%s -c help” để xem thông tin về các lệnh hệ vỏ tích hợp.\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" "Dùng lệnh “bashbug” để thông báo lỗi.\n" "Báo cáo các lỗi dịch cho: .\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "Trang chá»§ bash: \n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "" "Trợ giúp chung về cách sá»­ dụng phần mềm GNU : \n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: thao tác không hợp lệ" @@ -1890,104 +1905,109 @@ msgstr "Tín hiệu lạ #" msgid "Unknown Signal #%d" msgstr "Tín hiệu lạ #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "sai chỉ số phụ: không có đóng “%s” trong %s" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: không thể gán danh sách cho bộ phận cá»§a mảng" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "không thể tạo ống dẫn để thay thế tiến trình" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "không thể tạo tiến trình con để thay thế tiến trình" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "không thể mở ống dẫn đặt tên %s để đọc" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "không thể mở ống dẫn có tên %s để ghi" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "không thể nhân đôi ống dẫn đặt tên %s thành fd %d" -#: subst.c:5959 +#: subst.c:6062 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "sai thay thế: không có \"“\" đóng trong %s" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "không thể tạo ống dẫn để thay thế lệnh" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "không thể tạo tiến trình con để thay thế lệnh" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: không thể nhân đôi ống dẫn thành fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: tên biến không hợp lệ cho một tham chiếu tên" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: thay thế sai" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: triển khai gián tiếp không hợp lệ" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" msgstr "“%s”: tên biến không hợp lệ" -#: subst.c:6854 +#: subst.c:7056 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: tham số null hoặc chưa được đặt" + +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: tham số null hoặc chưa được đặt" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: biểu thức chuỗi con < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: thay thế sai" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: không thể gán bằng cách này" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" "phiên bản hệ vỏ mới sẽ ép buộc ước lượng dưới dạng một hàm thay thế số học" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sai thay thế: không có \"“\" đóng trong %s" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "không khớp: %s" @@ -2010,30 +2030,35 @@ msgstr "cần “)”" msgid "`)' expected, found %s" msgstr "cần “)” nhưng lại nhận được %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: cần toán tá»­ một ngôi" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: cần toán tá»­ hai ngôi" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "thiếu “]”" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "số thứ tá»± tín hiệu không hợp lệ" -#: trap.c:387 +#: trap.c:320 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: vượt quá mức độ eval lồng nhau tối đa (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: giá trị sai trong danh sách trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2041,89 +2066,89 @@ msgstr "" "run_pending_traps: bộ xá»­ lý tín hiệu là SIG_DFL, đang gá»­i lại %d (%s) cho " "chính mình" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: tín hiệu sai %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "gặp lỗi khi nhập vào định nghÄ©a hàm cho “%s”" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "cấp hệ vỏ (%d) quá cao nên đặt lại thành 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: không có ngữ cảnh hàm ở phạm vi hiện thời" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: không thể gán giá trị cho biến" -#: variables.c:3043 +#: variables.c:3453 #, fuzzy, c-format msgid "%s: assigning integer to name reference" msgstr "%s: tên biến không hợp lệ cho một tham chiếu tên" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: không có ngữ cảnh hàm ở phạm vi hiện thời" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s có exportstr null" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "sai ký tá»± %d trong exportstr cho %s" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "không có “=” trong exportstr cho %s" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: đầu cá»§a shell_variables (các biến hệ vỏ) không phải là ngữ " "cảnh hàm" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "" "pop_var_context: không có ngữ cảnh global_variables (các biến toàn cục)" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: đầu cá»§a shell_variables (các biến hệ vỏ) không phải là phạm vi " "môi trường tạm thời" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: không thể mở như là TẬP-TIN" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: sai đặt giá trị cho bộ mô tả tập tin vết" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: giá trị so sánh nằm ngoài phạm vi" #: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." msgstr "Tác quyền (C) năm 2015 cá»§a Tổ chức Quỹ Phần mềm Tá»± do, Inc." #: version.c:47 version2.c:47 @@ -2147,22 +2172,22 @@ msgstr "Đây là phần mềm tá»± do; bạn có quyền sá»­a đổi và phát msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Ở đây KHÔNG BẢO HÀNH GÌ CẢ, với điều kiện được pháp luật cho phép." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: không thể cấp phát %lu byte (%lu byte được cấp phát)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: không thể cấp phát %lu byte" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: không thể cấp phát %lu byte (%lu byte được cấp phát)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: không thể cấp phát %lu byte" @@ -2373,7 +2398,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [CHẾ-ĐỘ]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id …]" #: builtins.c:181 @@ -2465,8 +2491,9 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v BIẾN] ĐỊNH-DẠNG [CÁC-ĐỐI-SỐ]" #: builtins.c:231 +#, fuzzy msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" @@ -2483,7 +2510,8 @@ msgstr "" "SÁCH-TỪ] [-F HÀM] [-C LỆNH] [-X MẪU-LỌC] [-P TIỀN-TỐ] [-S HẬU-TỐ] [TỪ]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "compopt [-o|+o TÙY-CHỌN] [-DE] [TÊN …]" #: builtins.c:242 @@ -2495,9 +2523,10 @@ msgstr "" "GỌI-NGƯỢC] [-c LƯỢNG] [MẢNG]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n ĐẾM] [-O GỐC] [-s SỐ-LƯỢNG] [-t] [-u FD] [-C GỌI-NGƯỢC] [-c " "LƯỢNG] [MẢNG]" @@ -2668,6 +2697,7 @@ msgstr "" " Trạng thái thoát là 0 trừ khi N nhỏ hÆ¡n 1." #: builtins.c:354 +#, fuzzy msgid "" "Execute shell builtins.\n" " \n" @@ -2678,7 +2708,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "Chạy lệnh tích hợp hệ vỏ.\n" "\n" @@ -2897,6 +2927,7 @@ msgstr "" " thấy LỆNH." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2915,11 +2946,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3008,6 +3039,7 @@ msgstr "" " hoặc nếu hệ vỏ không chạy hàm." #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3036,6 +3068,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3068,7 +3106,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không gặp lỗi khi ghi." -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3090,7 +3128,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không gặp lỗi ghi." -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3140,7 +3178,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công trừ khi TÊN không phải lệnh tích hợp hoặc gặp lỗi." -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3159,7 +3197,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái thoát cá»§a câu lệnh hay thành công nếu lệnh rỗng." -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3235,7 +3273,7 @@ msgstr "" " Trả lại thành công nếu tìm thấy một tùy chọn; không thành công nếu\n" " gặp kết thúc các tùy chọn, hoặc nếu gặp lỗi." -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3275,7 +3313,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công trừ khi không tìm được LỆNH hoặc gặp lỗi chuyển hướng." -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3287,7 +3325,7 @@ msgstr "" " Thoát khỏi hệ vỏ với trạng thái N. Không xác định N thì trạng thái\n" " thoát là trạng thái cá»§a lệnh cuối cùng được chạy." -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3300,7 +3338,7 @@ msgstr "" " Thoát khỏi hệ vỏ đăng nhập với trạng thái N. Trả về lỗi nếu không\n" " phải hệ vỏ đăng nhập." -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3352,7 +3390,7 @@ msgstr "" " Trả lại thành công hay trạng thái cá»§a câu lệnh được thá»±c thi; gặp\n" " lỗi thì khác số không." -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3373,7 +3411,7 @@ msgstr "" " Trạng thái cá»§a câu lệnh được nâng lên trước; hoặc thất bại nếu xảy\n" " ra lỗi." -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3396,7 +3434,7 @@ msgstr "" " Trả lại thành công nếu chức năng điều khiển công việc được bật và\n" " không gặp lỗi." -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3440,7 +3478,8 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu tìm được TÊN và không đưa ra tùy chọn sai." -#: builtins.c:812 +#: builtins.c:816 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3455,7 +3494,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3479,7 +3518,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu tìm được MẪU và không đưa ra tùy chọn sai." -#: builtins.c:836 +#: builtins.c:840 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3489,7 +3528,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3545,7 +3585,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không gặp tùy chọn sai hay gặp lỗi." -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3588,7 +3628,7 @@ msgstr "" " Trả lại thành công nếu không gặp tùy chọn sai hay gặp lỗi.\n" " Đưa ra “-x” thì trả lại trạng thái thoát cá»§a LỆNH." -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3619,7 +3659,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn hay ĐTCV sai." -#: builtins.c:918 +#: builtins.c:923 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3661,7 +3701,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn sai hay gặp lỗi." -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3745,7 +3785,8 @@ msgstr "" " Nếu ĐỐI-SỐ cuối cùng được định giá thành 0 thì trả về 1; không thì\n" " trả về 0." -#: builtins.c:987 +#: builtins.c:992 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3766,7 +3807,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3839,7 +3880,7 @@ msgstr "" " Mã trả lại là số không, nếu không gặp kết thúc tập tin, hay chờ quá\n" " lâu, hoặc đưa ra bộ mô tả tập tin sai làm đối số cho “-u”." -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3860,7 +3901,7 @@ msgstr "" " Trả lại N, hoặc bị lỗi nếu hệ vỏ không đang chạy một hàm hay văn\n" " lệnh." -#: builtins.c:1047 +#: builtins.c:1052 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4033,7 +4074,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công trừ phi gặp tùy chọn sai." -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4072,7 +4113,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn sai hay TÊN chỉ-đọc." -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4105,7 +4146,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn hay TÊN sai," -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4143,7 +4184,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn sai hay TÊN không hợp lệ." -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4161,7 +4202,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công trừ khi N âm hay lớn hÆ¡n $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4184,7 +4225,7 @@ msgstr "" " Trả lại trạng thái cá»§a câu lệnh cuối cùng được thá»±c thi trong\n" " TẬP-TIN; không thành công nếu không thể đọc TẬP-TIN." -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4209,7 +4250,7 @@ msgstr "" " Trả lại thành công trừ khi chức năng điều khiển công việc không\n" " được bật hoặc gặp lỗi." -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4368,7 +4409,7 @@ msgstr "" " Trả lại thành công nếu BTHỨC định giá là Đúng; không thành công\n" " nếu BTHỨC định giá thành Sai hay đối số được chỉ ra sai." -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4380,7 +4421,7 @@ msgstr "" " Lệnh này cùng chức năng lệnh tích hợp \"test\", nhưng đối số cuối\n" " cùng phải là ký tá»± “]” để khớp với “[” ở đầu." -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4399,7 +4440,7 @@ msgstr "" " Trạng thái thoát:\n" " Lúc nào cÅ©ng thành công." -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4476,7 +4517,7 @@ msgstr "" " Trả lại thành công trừ phi đưa ra ĐTTH sai hay tùy chọn\n" " sai." -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4533,7 +4574,7 @@ msgstr "" " Trả lại thành công nếu tìm thấy tất cả các TÊN; bị lỗi nếu không tìm " "thấy." -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4625,7 +4666,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn sai hay có lỗi phát sinh." -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4658,7 +4699,8 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không có CHẾ_ĐỘ sai hay tùy chọn sai." -#: builtins.c:1494 +#: builtins.c:1499 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4666,13 +4708,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4693,7 +4737,7 @@ msgstr "" " Trả về trạng thái cá»§a ID cuối; không thành công nếu ID sai hoặc đưa\n" " ra tùy chọn sai." -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4717,7 +4761,7 @@ msgstr "" " Trả lại trạng thái cá»§a PID; không thành công nếu PID sai, hoặc nếu\n" " đưa ra tùy chọn sai." -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4740,7 +4784,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái cá»§a câu lệnh cuối cùng được chạy." -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4770,7 +4814,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái cá»§a câu lệnh cuối cùng được chạy." -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4804,7 +4848,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái cá»§a câu lệnh cuối cùng được chạy." -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4833,7 +4877,7 @@ msgstr "" " Trạng thái thoát:\n" " Trạng thái trả về là trạng thái trả về cá»§a ỐNG-DẪN." -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4851,7 +4895,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái cá»§a câu lệnh cuối cùng được chạy." -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4886,7 +4930,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái cá»§a câu lệnh cuối cùng được chạy." -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4905,7 +4949,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái cá»§a câu lệnh cuối cùng được chạy." -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4924,7 +4968,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái cá»§a câu lệnh cuối cùng được chạy." -#: builtins.c:1653 +#: builtins.c:1661 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -4946,7 +4990,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái thoát cá»§a câu LỆNH." -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -4969,7 +5013,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu TÊN không phải chỉ đọc." -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -4987,7 +5031,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của câu lệnh cuối cùng được chạy." -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -5010,7 +5054,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của công việc đã tiếp tục lại." -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5028,7 +5072,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại 1 nếu BTHỨC tính là 0; không thì trả lại 0." -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5077,7 +5121,7 @@ msgstr "" " Trạng thái thoát:\n" " 0 hay 1 phụ thuộc vào giá trị của BTHỨC." -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5181,7 +5225,7 @@ msgstr "" " HISTIGNORE\tDanh sách mẫu cách bằng dấu hai chấm dùng để quyết định\n" " \tnhững câu lệnh nào nên được lưu vào danh sách lịch sử.\n" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5235,7 +5279,7 @@ msgstr "" " Trả lại thành công nếu không đưa ra đối số sai, cũng không sai\n" " chuyển đổi thư mục." -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5283,7 +5327,7 @@ msgstr "" " Trả lại thành công nếu không đưa ra đối số sai, cũng không sai\n" " chuyển đổi thư mục." -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5336,14 +5380,14 @@ msgstr "" " Trạng thái thoát:\n" " Trả về thành công nếu không đưa ra tùy chọn sai hay gặp lỗi." -#: builtins.c:1898 +#: builtins.c:1906 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5373,7 +5417,7 @@ msgstr "" " Trả lại thành công nếu TÊN_TÙY_CHỌN được bật; không thành công nếu\n" " đưa ra tùy chọn sai hay TÊN_TÙY_CHỌN bị tắt." -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5439,7 +5483,8 @@ msgstr "" " Trả lại thành công trừ phi đưa ra tùy chọn sai hay gặp lỗi khi ghi\n" " hay gán." -#: builtins.c:1953 +#: builtins.c:1961 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5457,10 +5502,14 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5486,7 +5535,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn sai hay gặp lỗi." -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5507,7 +5556,8 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn sai hay gặp lỗi." -#: builtins.c:1996 +#: builtins.c:2006 +#, fuzzy msgid "" "Modify or display completion options.\n" " \n" @@ -5522,6 +5572,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5564,7 +5615,7 @@ msgstr "" " Trả lại thành công trừ phi đưa ra tùy chọn sai, hoặc TÊN có một\n" " đặc tả tự hoàn thiện được xác định." -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5637,7 +5688,7 @@ msgstr "" " Trả lại thành công trừ phi đưa ra tùy chọn sai và MẢNG không phải\n" " chỉ đọc hay không là một mảng chỉ số." -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo index 5eda361f2..322296c28 100644 Binary files a/po/zh_CN.gmo and b/po/zh_CN.gmo differ diff --git a/po/zh_CN.po b/po/zh_CN.po index 8b6bb9d11..716fae5c3 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -5,136 +5,166 @@ # Aron Xu , 2011. # Anthony Fok , 2013. # Wylmer Wang , 2014. -# Mingye Wang , 2015. +# Mingcong Bai , 2015. +# liushuyu , 2016. +# Mingye Wang , 2015, 2016. +# Boyuan Yang <073plan@gmail.com>, 2018. +# +# KNOWN DEFECTS (easy fixes, tedious work; sorted by priority): +# 0. Translation coverage when upstream sends new strings. +# +# 1. Argument lists in `help` are translated, but the `help blah` text still +# refers to the original name like WORDS. +# +# These long helps should be changed to follow their `help` synopsis. Use +# <参数> to refer to `参数' in the one-line synopsis. +# +# 2. Passive voice. When used inappropriately, they sound even worse in +# Chinese than in English. In fact huge amounts of `被' is what you use to +# spot translated text. (You don't always need `被' for passive voice +# either.) +# +# 3. Typography. +# a. Capitalization. English convensions mangle command names in help text +# if it's the first word of the sentense (e.g. `Getopts blah blah...'). +# Do yourself a favor and change the names back into lowercase. +# b. Quotes. Chinese has no `typewriter quote' convension, and standard +# “curly quotes” should be used. +# c. Colons. We don't use `: ` in Chinese; use `:`. Sometimes `:` is seen +# w/o a space (worse). +# d. Other stuff like parentheses and whitespace. Alignment can be quite +# important for Feeling Good(TM). # msgid "" msgstr "" -"Project-Id-Version: bash 4.4-beta1\n" +"Project-Id-Version: bash 5.0-beta2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-26 00:32-0400\n" -"Last-Translator: Mingye Wang (Arthur2e5) \n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2018-12-13 13:27-0500\n" +"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" "Language-Team: Chinese (simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_CN\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 1.8.5\n" +"X-Generator: Poedit 2.2\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "数组下标不正确" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s:正在移除名称引用属性" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "%s: 无法将索引数组转化为关联数组" +msgstr "%s:无法将索引数组转化为关联数组" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" -msgstr "%s: 无效的关联数组键" +msgstr "%s:无效的关联数组键" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" -msgstr "%s: 无法为非数字的索引赋值" +msgstr "%s:无法为非数字的索引赋值" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" -msgstr "%s: %s: 为关联数组赋值时必须使用下标" +msgstr "%s:%s:为关联数组赋值时必须使用下标" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" -msgstr "%s: 无法创建: %s" +msgstr "%s:无法创建: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: 无法为命令找到键映射" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "%s: 第一个非空字符不是 `\"'" +msgstr "%s:第一个非空字符不是“\"”" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" -msgstr "%2$s 中没有闭合的 `%1$c'" +msgstr "%2$s 中没有闭合的“%1$c”" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" -msgstr "%s: 缺少冒号分隔符" +msgstr "%s:缺少冒号分隔符" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "大括号展开: 无法为 %s 分配内存" +msgstr "大括号展开:无法为 %s 分配内存" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "大括号展开: 为 %d 个元素分配内存失败" +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "大括号展开:为 %u 个元素分配内存失败" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "大括号展开: 为 `%s' 分配内存失败" +msgstr "大括号展开:为“%s”分配内存失败" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" -msgstr "`%s': 无效的别名" +msgstr "“%s”: 无效的别名" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "未启用行编辑" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" -msgstr "`%s': 无效的键映射名" +msgstr "“%s”: 无效的键映射名" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" -msgstr "%s: 无法读取: %s" +msgstr "%s:无法读取: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': 无法解除绑定" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" -msgstr "`%s': 未知函数名" +msgstr "“%s”: 未知函数名" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s 未与任何键绑定。\n" -#: builtins/bind.def:320 +# Blame the source string. +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " -msgstr "%s 可以被调用,通过" +msgstr "%s 可以被调用,通过 " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "“%s”: 无法解除绑定" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "循环计数" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "仅在 `for', `while', 或者`until' 循环中有意义" @@ -146,239 +176,238 @@ msgid "" msgstr "" "返回当前子例程调用的上下文\n" " \n" -" 不带 EXPR 时,返回" +" 不带 EXPR 时,返回 " -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME 未设定" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "参数太多" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "无其他目录" +msgstr "空目录" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD 未设定" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " -msgstr "第 %d 行:" +msgstr "第 %d 行:" -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " -msgstr "警告:" +msgstr "警告:" -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " -msgstr "%s: 用法:" +msgstr "%s:用法:" -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" -msgstr "%s: 选项需要一个参数" +msgstr "%s:选项需要一个参数" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" -msgstr "%s: 需要数字参数" +msgstr "%s:需要数字参数" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" -msgstr "%s: 未找到" +msgstr "%s:未找到" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" -msgstr "%s: 无效选项" +msgstr "%s:无效选项" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" -msgstr "%s: 无效的选项名" +msgstr "%s:无效的选项名" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" -msgstr "`%s': 不是有效的标识符" +msgstr "“%s”: 不是有效的标识符" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "无效的八进制数" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "无效的十六进制数" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "无效数字" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" -msgstr "%s: 无效的信号声明" +msgstr "%s:无效的信号声明" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "`%s': 不是有效的进程号或者任务声明" +msgstr "“%s”: 不是有效的进程号或者任务声明" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" -msgstr "%s: 只读变量" +msgstr "%s:只读变量" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" -msgstr "%s: %s 越界" +msgstr "%s:%s 越界" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "参数" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s 越界" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" -msgstr "%s: 无此任务" +msgstr "%s:无此任务" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" -msgstr "%s: 无任务控制" +msgstr "%s:无任务控制" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "无任务控制" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" -msgstr "%s: 受限的" +msgstr "%s:受限的" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "受限的" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" -msgstr "%s: 不是 shell 内建" +msgstr "%s:不是 shell 内建" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "写错误: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "设定终端属性时出错: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "获取终端属性时出错: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" -msgstr "%s: 获取当前目录时出错: %s: %s\n" +msgstr "%s:获取当前目录时出错: %s:%s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" -msgstr "%s: 模糊的任务声明" +msgstr "%s:模糊的任务声明" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "此版本内帮助不可用" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" -msgstr "%s: 无效的动作名" +msgstr "%s:无效的动作名" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" -msgstr "%s: 没有补全声明" +msgstr "%s:没有补全声明" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "警告: -F 选项可能不像您预期的那样工作" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "警告: -C 选项可能不像您预期的那样工作" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "当前未执行补全功能" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "只能在函数中使用" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "%s: 引用变量不能为数组" +msgstr "%s:引用变量不能为数组" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "%s: 不允许名称引用变量引用自身" +msgstr "%s:不允许名称引用变量引用自身" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" -msgstr "%s: 循环变量名引用" +msgstr "%s:循环变量名引用" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: 无效的引用变量名" +msgstr "“%s”: 无效的名称引用变量名" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "无法用 `-f' 生成函数" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" -msgstr "%s: 只读函数" +msgstr "%s:只读函数" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: 引号内的复合数组赋值已被弃用" +msgstr "%s:引号内的复合数组赋值已被弃用" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" -msgstr "%s: 无法以这种方式销毁数组变量" +msgstr "%s:无法以这种方式销毁数组变量" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "%s: 无法将关联数组转化为索引数组" +msgstr "%s:无法将关联数组转化为索引数组" #: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" @@ -387,7 +416,7 @@ msgstr "动态加载不可用" #: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" -msgstr "无法打开共享对象 %s: %s" +msgstr "无法打开共享对象 %s:%s" #: builtins/enable.def:369 #, c-format @@ -402,75 +431,75 @@ msgstr "为 %s 载入函数失败 (%d): 未载入" #: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" -msgstr "%s: 未以动态方式加载" +msgstr "%s:未以动态方式加载" #: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" -msgstr "%s: 无法删除: %s" +msgstr "%s:无法删除: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" -msgstr "%s: 是一个目录" +msgstr "%s:是一个目录" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" -msgstr "%s: 不是常规文件" +msgstr "%s:不是常规文件" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" -msgstr "%s: 文件太大" +msgstr "%s:文件太大" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" -msgstr "%s: 无法执行二进制文件" +msgstr "%s:无法执行二进制文件" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" -msgstr "%s: 无法执行: %s" +msgstr "%s:无法执行: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "注销\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "不是登录 shell: 使用 `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "有停止的任务。\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "有运行中的任务。\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "未找到命令" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "历史声明" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" -msgstr "%s: 无法打开临时文件: %s" +msgstr "%s:无法打开临时文件: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "当前" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "在不带任务控制的情况下启动了任务 %d" @@ -478,46 +507,45 @@ msgstr "在不带任务控制的情况下启动了任务 %d" #: builtins/getopt.c:110 #, c-format msgid "%s: illegal option -- %c\n" -msgstr "%s: 非法选项 -- %c\n" +msgstr "%s:非法选项 -- %c\n" #: builtins/getopt.c:111 #, c-format msgid "%s: option requires an argument -- %c\n" -msgstr "%s: 选项需要一个参数 -- %c\n" +msgstr "%s:选项需要一个参数 -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "已禁用哈希" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" -msgstr "%s: 哈希表为空\n" +msgstr "%s:哈希表为空\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "命中\t命令\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "Shell 命令匹配关键字 `" +msgstr[0] "Shell 命令匹配关键字“" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -"没有与 `%s' 匹配的帮助主题。尝试 `help help' 或 `man -k %s' 或 `info %s'。" +"没有与“%s”匹配的帮助主题。尝试使用“help help”、“man -k %s”或“info %s”。" -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" -msgstr "%s: 无法打开: %s" +msgstr "%s:无法打开: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -536,114 +564,115 @@ msgstr "" "名称旁边的星号(*)表示该命令被禁用。\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "最多只能使用 -anrw 选项中的一个" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "历史位置" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: 无效参数" +msgstr "%s:无效时间戳" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" -msgstr "%s: 历史扩展失败" +msgstr "%s:历史扩展失败" #: builtins/inlib.def:71 #, c-format msgid "%s: inlib failed" -msgstr "%s: inlib 失败" +msgstr "%s:inlib 失败" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" msgstr "其他选项不能与 `-x' 同时使用" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "%s: 参数必须是进程或任务 ID" +msgstr "%s:参数必须是进程或任务 ID" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "未知错误" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "需要表达式" #: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" -msgstr "%s: 不是一个索引数组" +msgstr "%s:不是一个索引数组" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" -msgstr "%s: 无效的文件描述符声明" +msgstr "%s:无效的文件描述符声明" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: 无效的文件描述符: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" -msgstr "%s: 无效的行数" +msgstr "%s:无效的行数" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" -msgstr "%s: 无效的数组基数" +msgstr "%s:无效的数组基数" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" -msgstr "%s: 无效的回调量子" +msgstr "%s:无效的回调量子" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "空数组变量名" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "需要数组变量支持" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" -msgstr "`%s': 缺少格式字符" +msgstr "“%s”: 缺少格式字符" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" -msgstr "`%c': 无效的时间格式声明" +msgstr "“%c”:无效的时间格式声明" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" -msgstr "`%c': 无效格式字符" +msgstr "“%c”:无效格式字符" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" -msgstr "警告: %s: %s" +msgstr "警告: %s:%s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "格式解析问题: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "使用了 \\x 但缺少十六进制位" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "使用了 \\%c 但缺少 unicode 数" @@ -655,21 +684,21 @@ msgstr "无其他目录" #: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" -msgstr "%s: 无效参数" +msgstr "%s:无效参数" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<无当前目录>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "目录栈为空" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "目录栈索引" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -711,7 +740,7 @@ msgstr "" " -N\t以 dirs 不带选项输出的顺序显示列表从右起第N个项目,\n" "\t从 0 开始。" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -741,7 +770,7 @@ msgstr "" " \n" " 选项:\n" " -n\t抑制增加栈中目录时通常的改变目录的操作,\n" -" \t从而只有栈被操作。\n" +" \t从而只进行栈操作。\n" " \n" " 参数:\n" " +N\t轮转栈使得第N个目录(`dirs' 的\n" @@ -757,7 +786,7 @@ msgstr "" " \n" " `dirs' 内建命令显示目录栈." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -782,7 +811,7 @@ msgstr "" " \n" " 选项:\n" " -n\t抑制从栈中删除目录时通常的改变目录操作,\n" -" \t从而只有栈被操作。\n" +" \t从而只进行栈操作。\n" " \n" " 参数:\n" " +N\t从 `dirs' 输出的列表中,\n" @@ -798,67 +827,67 @@ msgstr "" #: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" -msgstr "%s: 无效的超时声明" +msgstr "%s:无效的超时声明" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "读错误: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "只能从函数或者源脚本返回(`return')" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "无法同时取消设定一个函数和一个变量" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" -msgstr "%s: 无法取消设定" +msgstr "%s:无法取消设定" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" -msgstr "%s: 无法取消设定: 只读 %s" +msgstr "%s:无法取消设定: 只读 %s" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" -msgstr "%s: 不是数组变量" +msgstr "%s:不是数组变量" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" -msgstr "%s: 不是函数" +msgstr "%s:不是函数" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" -msgstr "%s: 无法导出" +msgstr "%s:无法导出" #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "位移计数" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "无法同时设定和取消设定 shell 选项" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" -msgstr "%s: 无效的 shell 选项名" +msgstr "%s:无效的 shell 选项名" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "需要文件名参数" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" -msgstr "%s: 文件未找到" +msgstr "%s:文件未找到" #: builtins/suspend.def:102 msgid "cannot suspend" @@ -868,64 +897,64 @@ msgstr "无法挂起" msgid "cannot suspend a login shell" msgstr "无法挂起一个登录 shell" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" -msgstr "%s 是 `%s' 的别名\n" +msgstr "%s 是“%s”的别名\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s 是 shell 关键字\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s 是函数\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s 是特殊 shell 内建\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s 是 shell 内建\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s 是 %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s 已被录入哈希表 (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" -msgstr "%s: 无效的 limit 参数" +msgstr "%s:无效的 limit 参数" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" -msgstr "`%c': 命令错误" +msgstr "“%c”:命令错误" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" -msgstr "%s: 无法获取 limit 值: %s" +msgstr "%s:无法获取 limit 值: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" -msgstr "%s: 无法修改 limit 值: %s" +msgstr "%s:无法修改 limit 值: %s" #: builtins/umask.def:115 msgid "octal number" @@ -934,405 +963,413 @@ msgstr "八进制数" #: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "`%c': 无效的符号状态运算符" +msgstr "“%c”:无效的符号状态运算符" #: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "`%c': 无效的符号状态字符" +msgstr "“%c”:无效的符号状态字符" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr "行" -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "上一个命令: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "中止..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "报告:" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "未知的命令错误" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "错误的命令类型" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "错误的条件连接符" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "错误的跳转" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" -msgstr "%s: 未绑定的变量" +msgstr "%s:未绑定的变量" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\a 等待输入超时:自动注销\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "无法从 /dev/null 重定向标准输入: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "时间格式: `%c': 无效的格式字符" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: 副进程 [%d:%s] 仍然存在" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "管道错误" -#: execute_cmd.c:4496 +#: execute_cmd.c:4671 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: 超出最大 eval 嵌套层数 (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4683 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "%s: 超出最大 source 嵌套层数 (%d)" +msgstr "%s:超出最大 source 嵌套层数 (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "%s: 超出最大函数嵌套层数 (%d)" +msgstr "%s:超出最大函数嵌套层数 (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "%s: 受限的: 无法在命令名中使用 `/'" +msgstr "%s:受限的: 无法在命令名中使用 `/'" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" -msgstr "%s: 未找到命令" +msgstr "%s:未找到命令" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" -msgstr "%s: %s" +msgstr "%s:%s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" -msgstr "%s: %s: 解释器错误" +msgstr "%s:%s:解释器错误" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s: 无法执行二进制文件: %s" +msgstr "%s:无法执行二进制文件: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" -msgstr "`%s': 特殊内建" +msgstr "“%s”: 特殊内建" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "无法复制文件描述符 %d 到文件描述符 %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "表达式递归层次越界" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "递归栈下溢" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "表达式中有语法错误" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "尝试给非变量赋值" -#: expr.c:495 expr.c:858 +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "变量赋值中有语法错误" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "除以 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "错误:表达式赋值符号错误" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "条件表达式需要 `:'" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "指数小于 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "预增符或预减符后应跟有标识符" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" -msgstr "缺少 `)'" +msgstr "缺少“)”" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "语法错误: 需要操作数" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "语法错误: 无效的算术运算符" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" -msgstr "%s%s%s: %s (错误符号是 \"%s\")" +msgstr "%s%s%s:%s (错误符号是 \"%s\")" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "无效的算术进制" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "数值太大不可为算术进制的基" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" -msgstr "%s: 表达式错误\n" +msgstr "%s:表达式错误\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: 无法访问父目录" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "无法为文件描述符 %d 重置nodelay模式" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "无法从文件描述符 %d 为 bash 的输入获取一个新的文件描述符" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: 已经存在新的文件描述符 %d 的缓冲区" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: 进程组管道" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "叉分 (fork) 出的的进程号 %d 出现在运行中的任务 %d 中" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "删除进程组 %2$ld 中已停止的任务 %1$d" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: 进程 %5ld(%s) 进入 the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: 进程号 %5ld(%s) 标注为仍活着" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: 无此进程号" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "信号 %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "已完成" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "已停止" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "已停止(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "运行中" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "已完成(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "退出 %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "未知状态" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " -msgstr "(核心已转储)" +msgstr "(核心已转储)" -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (工作目录: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "子进程 setpgid (%ld 到 %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: 进程号 %ld 不是当前 shell 的子进程" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wiat_for: 没有进程 %ld 的记录" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: 任务 %d 已停止" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" -msgstr "%s: 任务已经终止" +msgstr "%s:任务已经终止" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" -msgstr "%s: 任务 %d 已在后台" +msgstr "%s:任务 %d 已在后台" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: 打开 WNOHANG 以避免无限阻塞" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " -msgstr "%s: 行 %d: " +msgstr "%s:行 %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (核心已转储)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(当前工作目录:%s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp 失败" -#: jobs.c:4104 +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: 后台无任务控制" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: 行规则" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "无法设定终端进程组(%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "此 shell 中无任务控制" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: 断言失败: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" "\r\n" -"malloc: %s:%d: 断言已修补\r\n" +"malloc: %s:%d:断言已修补\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "未知" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: 空闲链表中的块损坏" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" -msgstr "free: 用已经释放的块作为参数被调用" +msgstr "free:调用时用了已经释放的块作为参数" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" -msgstr "free: 用未分配的块作为参数被调用" +msgstr "free: 调用时用了未分配的块作为参数" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: 检测到下溢;mh_nbytes 越界" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: 其实和末尾块大小不一致" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" -msgstr "realloc: 用未分配的块作为参数被调用" +msgstr "realloc:调用时用了未分配的块作为参数" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: 检测到下溢;mh_nbytes 越界" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: 其实和末尾块大小不一致" @@ -1358,41 +1395,41 @@ msgstr "无效的基" #: lib/sh/netopen.c:168 #, c-format msgid "%s: host unknown" -msgstr "%s: 未知主机" +msgstr "%s:未知主机" #: lib/sh/netopen.c:175 #, c-format msgid "%s: invalid service" -msgstr "%s: 无效的服务" +msgstr "%s:无效的服务" #: lib/sh/netopen.c:306 #, c-format msgid "%s: bad network path specification" -msgstr "%s: 错误的网络路径声明" +msgstr "%s:错误的网络路径声明" #: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "不支持网络操作" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" -msgstr "setlocale: LC_ALL: 无法改变区域选项 (%s)" +msgstr "setlocale:LC_ALL:无法改变区域选项 (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" -msgstr "setlocale: LC_ALL: 无法改变区域选项 (%s): %s" +msgstr "setlocale:LC_ALL:无法改变区域选项 (%s):%s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" -msgstr "setlocale: %s: 无法改变区域选项 (%s)" +msgstr "setlocale:%s:无法改变区域选项 (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" -msgstr "setlocale: %s: 无法改变区域选项 (%s): %s" +msgstr "setlocale:%s:无法改变区域选项 (%s):%s" #: mailcheck.c:439 msgid "You have mail in $_" @@ -1405,157 +1442,157 @@ msgstr "您在 $_ 中有新邮件" #: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" -msgstr "%s 中的邮件已被阅读\n" +msgstr "%s 中的邮件已被读过\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" -msgstr "语法错误: 需要算术表达式" +msgstr "语法错误:需要算术表达式" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" -msgstr "语法错误: 需要 `;'" +msgstr "语法错误:需要 `;'" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" -msgstr "语法错误: `((%s))'" +msgstr "语法错误:`((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" -msgstr "make_here_document: 错误的指令类型 %d" +msgstr "make_here_document:错误的指令类型 %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "立即文档在第 %d 行被文件结束符分隔 (需要 `%s')" +msgstr "立即文档在第 %d 行被文件结束符分隔 (需要“%s”)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" -msgstr "make_redirection: 重定向指令 `%d' 越界" +msgstr "make_redirection:重定向指令“%d”越界" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" -msgstr "" +msgstr "shell_getc:shell_input_line_size (%zu) 超过 SIZE_MAX (%lu):行被截断" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" msgstr "超出最大立即文档数量" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "寻找匹配的 `%c' 是遇到了未预期的文件结束符" +msgstr "寻找匹配的“%c”时遇到了未预期的文件结束符" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" -msgstr "寻找 `]]' 是遇到了未预期的文件结束符" +msgstr "寻找“]]”时遇到了未预期的文件结束符" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" -msgstr "条件表达式中有语法错误: 未预期的符号 `%s'" +msgstr "条件表达式中有语法错误:未预期的符号“%s”" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "条件表达式中有语法错误" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "未预期的符号 `%s' ,需要 `)'" +msgstr "未预期的符号“%s” ,需要“)”" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" -msgstr "需要 `)'" +msgstr "需要“)”" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "一元条件运算符使用了未预期的参数 `%s'" +msgstr "一元条件运算符使用了未预期的参数“%s”" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "一元条件运算符使用了未预期的参数" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "未预期的符号 `%s',需要二元条件运算符" +msgstr "未预期的符号“%s”,需要二元条件运算符" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "需要二元条件运算符" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "二元条件运算符使用了未预期的参数 `%s'" +msgstr "二元条件运算符使用了未预期的参数“%s”" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "二元条件运算符使用了未预期的参数" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "条件命令中有未预期的符号 `%c'" +msgstr "条件命令中有未预期的符号“%c”" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "条件命令中有未预期的符号 `%s'" +msgstr "条件命令中有未预期的符号“%s”" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "条件命令中有未预期的符号 %d" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "未预期的符号 `%s' 附近有语法错误" +msgstr "未预期的符号“%s”附近有语法错误" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" -msgstr "`%s' 附近有语法错误" +msgstr "“%s”附近有语法错误" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "语法错误: 未预期的文件结尾" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "语法错误" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "使用 \"%s\" 退出 shell 。\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" -msgstr "寻找匹配的 `)' 时遇到了未预期的文件结束符" +msgstr "寻找匹配的“)”时遇到了未预期的文件结束符" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" -msgstr "补全: 未找到函数 `%s'" +msgstr "补全:未找到函数 “%s”" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s:疑似重试循环" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" -msgstr "progcomp_insert: %s: 空的补全声明" +msgstr "progcomp_insert: %s:空的补全声明" #: print_cmd.c:302 #, c-format @@ -1576,90 +1613,95 @@ msgstr "xtrace_set: 空的文件指针" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': 无效的格式字符" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "文件描述符超出范围" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" -msgstr "%s: 模糊的重定向" +msgstr "%s:模糊的重定向" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" -msgstr "%s: 无法覆盖已存在的文件" +msgstr "%s:无法覆盖已存在的文件" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" -msgstr "%s: 受限的: 无法重定向输出" +msgstr "%s:受限的: 无法重定向输出" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "无法为立即文档创建临时文件: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" -msgstr "%s: 无法将文件描述符赋值给变量" +msgstr "%s:无法将文件描述符赋值给变量" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "没有网络时不支持 /dev/(tcp|udp)/host/port" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "重定向错误: 无法复制文件描述符" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" -msgstr "无法找到 /tmp ,请创建" +msgstr "无法找到 /tmp ,请创建!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp 必须为有效的目录名" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "在交互式 shell 中将忽略美化输出模式" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: 无效的选项" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "无法将 uid 设为 %d: 有效 uid %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "无法将 gid 设为 %d: 有效 gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "无法启动调试器;调试模式已禁用" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" -msgstr "%s: 是一个目录" +msgstr "%s:是一个目录" -#: shell.c:1777 +# 这个是查看用户的 /etc/passwd 信息得到的名字。既然是用户的名字,就叫做无名氏吧。(有点想写“红领巾”来着。) +#: shell.c:1826 msgid "I have no name!" -msgstr "没有名字!" +msgstr "无名氏!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash,版本 %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1668,49 +1710,52 @@ msgstr "" "用法:\t%s [GNU 长选项] [选项] ...\n" "\t%s [GNU 长选项] [选项] 脚本文件 ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU 长选项:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Shell 选项:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD 或 -c <命令> 或 -O \t\t(仅适合调用)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s 或 -o <选项>\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "请输入`%s -c \"help set\"' 以获得关于 shell 选项的更多信息\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "请输入 `%s -c help' 以获得关于 shell 内建命令的更多信息.\n" -#: shell.c:1961 +# 写如何报告程序错误的地方应该提到如何报告翻译问题。 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" -msgstr "请使用`bashbug' 命令来报告错误.\n" +msgstr "" +"请使用“bashbug”命令来报告程序错误。\n" +"请将翻译错误报告到 。\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" msgstr "bash 首页:\n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" msgstr "使用 GNU 软件的通用帮助:\n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: 无效的操作" @@ -1885,103 +1930,107 @@ msgstr "未知信号 #" msgid "Unknown Signal #%d" msgstr "未知信号 #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "错误的替换: 在 %2$s 中没有闭合的 `%1$s'" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" -msgstr "%s: 无法将链表赋值给数组成员" +msgstr "%s:无法将链表赋值给数组成员" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "无法为进程替换创建管道" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "无法为进程替换创建子进程" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" -msgstr "无法打开命名管道 %s 进readline-" +msgstr "无法打开命名管道 %s 以读取" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "无法打开命名管道 %s 进行写入" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "无法将命名管道 %s 作为文件描述符 %d 复制" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "错误的替换: 在 %s 中没有闭合的 \"`\"" +msgstr "命令替换:忽略输入中的 null 字节" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "无法为命令替换创建管道" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "无法为命令替换创建子进程" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: 无法将管道复制为文件描述符 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" -msgstr "%s: 无效的引用变量名" +msgstr "%s:无效的引用变量名" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: 错误的替换" - -#: subst.c:6800 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: 无效的间接展开" +msgstr "%s:无效的间接展开" -#: subst.c:6807 +#: subst.c:6840 subst.c:6987 #, c-format msgid "%s: invalid variable name" -msgstr "%s: 无效的变量名" +msgstr "%s:无效的变量名" + +#: subst.c:7056 +#, c-format +msgid "%s: parameter not set" +msgstr "%s:参数未设置" -#: subst.c:6854 +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" -msgstr "%s: 参数为空或未设置" +msgstr "%s:参数为空或未设置" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" -msgstr "%s: 子串表达式 < 0" +msgstr "%s:子串表达式 < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s:错误的替换" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" -msgstr "$%s: 无法这样赋值" +msgstr "$%s:无法这样赋值" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "未来版本的 shell 会强制估值为算术替换" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "错误的替换: 在 %s 中没有闭合的 \"`\"" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "无匹配: %s" @@ -1993,125 +2042,130 @@ msgstr "需要参数" #: test.c:156 #, c-format msgid "%s: integer expression expected" -msgstr "%s: 需要整数表达式" +msgstr "%s:需要整数表达式" #: test.c:265 msgid "`)' expected" -msgstr "需要 `)'" +msgstr "需要“)”" #: test.c:267 #, c-format msgid "`)' expected, found %s" -msgstr "需要`)',得到 %s" +msgstr "需要“)”,却找到 %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" -msgstr "%s: 需要一元表达式" +msgstr "%s:需要一元表达式" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" -msgstr "%s: 需要二元表达式" +msgstr "%s:需要二元表达式" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "缺少 `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "无效的信号数" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "trap handler: 超出最大的 trap handler 层次 (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: trap_list[%d] 中的错误值: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: 信号处理器是 SIG_DFL,重新发送 %d (%s) 给自己" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: 错误的信号 %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" -msgstr "`%s' 函数定义导入错误" +msgstr "“%s”函数定义导入错误" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell 层次 (%d) 太高,重置为 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: 当前作用域中没有函数上下文" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: 变量不可赋值" +msgstr "%s:变量不可赋值" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: 无效的引用变量名" +msgstr "%s:将整数赋值给名称引用" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: 当前作用域中没有函数上下文" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" -msgstr "%s 有空的 exportstr" +msgstr "%s 的 exportstr 为空" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%2$s 的 exportstr 中有无效的字符 %1$d" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" -msgstr "%s 的 exportstr 中没有 `='" +msgstr "%s 的 exportstr 中没有“=”" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variables 的头部不是函数上下文" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: 没有 global_variables 上下文" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables 的头部不是临时环境作用域" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" -msgstr "%s: %s: 无法作为文件打开" +msgstr "%s:%s:无法作为文件打开" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "%s: %s: 追踪文件描述符的值无效" +msgstr "%s:%s:追踪文件描述符的值无效" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s: %s: 兼容版本数值越界" +msgstr "%s:%s:兼容版本数值越界" +# Inc. 的 . 是个缩写 #: version.c:46 version2.c:46 -#, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "版权所有 (C) 2015 自由软件基金会." +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "版权所有 (C) 2018 自由软件基金会" #: version.c:47 version2.c:47 msgid "" @@ -2134,25 +2188,25 @@ msgstr "本软件是自由软件,您可以自由地更改和重新发布。" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "在法律许可的情况下特此明示,本软件不提供任何担保。" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "%s: 无法分配 %lu 字节 (已分配 %lu 字节)" +msgstr "%s:无法分配 %lu 字节 (已分配 %lu 字节)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" -msgstr "%s: 无法分配 %lu 字节" +msgstr "%s:无法分配 %lu 字节" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "%s: %s:%d: 无法分配 %lu 字节 (已分配 %lu 字节)" +msgstr "%s:%s:%d:无法分配 %lu 字节 (已分配 %lu 字节)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" -msgstr "%s: %s:%d: 无法分配 %lu 字节" +msgstr "%s:%s:%d:无法分配 %lu 字节" #: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" @@ -2275,9 +2329,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [任务声明 ...] 或 jobs -x 命令 [参数]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [任务声明 ...]" +msgstr "disown [-h] [-ar] [任务声明 ... | pid ...]" #: builtins.c:134 msgid "" @@ -2360,8 +2413,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [模式]" #: builtins.c:177 -msgid "wait [-n] [id ...]" -msgstr "wait [-n] [编号 ...]" +msgid "wait [-fn] [id ...]" +msgstr "wait [-fn] [编号 ...]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2451,12 +2504,12 @@ msgstr "printf [-v var] 格式 [参数]" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o 选项] [-A 动作] [-G 全局模式] [-W 词" -"语列表] [-F 函数] [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [名称 ...]" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o 选项] [-A 动作] [-G 全局模式] [-W " +"词语列表] [-F 函数] [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [名称 ...]" #: builtins.c:235 msgid "" @@ -2467,8 +2520,8 @@ msgstr "" "F 函数] [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [词语]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "compopt [-o|+o 选项] [-DE] [名称 ...]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o 选项] [-DEI] [名称 ...]" #: builtins.c:242 msgid "" @@ -2480,11 +2533,11 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -"readarray [-n 计数] [-O 起始序号] [-s 计数] [-t] [-u fd] [-C 回调] [-c 量子] " -"[数组]" +"readarray [-d 定界符] [-n 计数] [-O 起始序号] [-s 计数] [-t] [-u fd] [-C 回" +"调] [-c 量子] [数组]" #: builtins.c:256 msgid "" @@ -2532,9 +2585,9 @@ msgstr "" "从别名定义列表中删除每一个“名字”。\n" " \n" " 选项:\n" -" -a\t删除所有的别名定义。\n" +" -a\t删除所有的别名定义\n" " \n" -" 返回成功,除非“名字“不是一个已存在的别名。" +" 返回成功,除非“名字”不是一个已存在的别名。" #: builtins.c:291 msgid "" @@ -2654,7 +2707,7 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "执行 shell 内建。\n" " \n" @@ -2663,9 +2716,8 @@ msgstr "" " 并且希望在函数之内执行该 shell 内建的情况下有用处。\n" " \n" " 退出状态:\n" -" 以 SHELL-BUILTIN 内建的退出状态为准,或者如果 SHELL-BUILTIN不是一个 " -"shell 内建时\n" -" 为假。." +" 以 SHELL-BUILTIN 内建的退出状态为准,或者如果 SHELL-BUILTIN 不是一个\n" +" shell 内建时为假。" #: builtins.c:369 msgid "" @@ -2748,7 +2800,7 @@ msgstr "" "分隔。\n" " 一个空的目录名称表示当前目录。如果要切换到的 DIR 由斜杠 (/) 开头,则 " "CDPATH\n" -" 变量不会被使用。\n" +" 不会用上变量。\n" " \n" " 如果路径找不到,并且 shell 选项 `cdable_vars' 被设定,则参数词被假定为一" "个\n" @@ -2821,7 +2873,7 @@ msgstr "" "返回一个成功结果。\n" " \n" " 退出状态:\n" -" 总是成功" +" 总是成功。" #: builtins.c:462 msgid "" @@ -2857,7 +2909,7 @@ msgstr "" " \n" " 带 ARGS 参数运行 COMMAND 命令且抑制 shell 函数查询,或显示\n" " 指定的 COMMAND 命令的信息。可以在存在相同名称的函数定义的\n" -" 情况下被用于启动磁盘上的命令。\n" +" 情况下用于启动磁盘上的命令。\n" " \n" " 选项:\n" " -p\t使用 PATH 变量的一个默认值以确保所有的标准工具都能被找到。\n" @@ -2886,11 +2938,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2908,12 +2960,12 @@ msgid "" msgstr "" "设定变量值和属性。\n" " \n" -" 声明变量并且赋予它们属性。如果没用给定名称,\n" +" 声明变量并且赋予它们属性。如果没有给定名称,\n" " 则显示所有变量的属性和值。\n" " \n" " 选项:\n" -" -f\t限制动作或显示为只函数名称和定义\n" -" -F\t限制仅显示函数名称 (以及行号和源文件名,当调试时)\n" +" -f\t限制动作或显示为仅函数名称和定义\n" +" -F\t限制仅显示函数名称 (以及调试时显示行号和源文件名)\n" " -g\t当用于 shell 函数内时创建全局变量; 否则忽略\n" " -p\t显示每个 NAME 变量的属性和值\n" " \n" @@ -2925,7 +2977,7 @@ msgstr "" " -n\t使 NAME 成为指向一个以其值为名称的变量的引用\n" " -r\t将 NAME 变为只读\n" " -t\t使 NAME 带有 `trace' (追踪)属性\n" -" -u\t将 NAME 在赋值时转为大写\n" +" -u\t将每个 NAME 在赋值时转为大写\n" " -x\t将 NAME 导出\n" " \n" " 用 `+' 代替 `-' 会关闭指定选项。\n" @@ -2937,10 +2989,9 @@ msgstr "" " 命令一致。`-g' 选项抑制此行为。\n" " \n" " 退出状态:\n" -" 返回成功除非使用了无效选项或者发生错误。" +" 返回成功,除非提供了无效选项或者发生变量赋值错误。" #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2948,7 +2999,7 @@ msgid "" msgstr "" "设置变量的值和属性。\n" " \n" -" 废弃。参见 `help declare'。" +" `declare' 的等价形式。参见 `help declare'。" #: builtins.c:538 msgid "" @@ -2977,6 +3028,7 @@ msgstr "" "数。" #: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3005,6 +3057,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3036,7 +3094,7 @@ msgstr "" " 退出状态:\n" " 返回成功除非有写错误发生。" -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3058,7 +3116,7 @@ msgstr "" " 退出状态:\n" " 除非写错误发生,否则返回成功。" -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3108,7 +3166,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非 NAME 不是一个 shell 内建或者有错误发生。" -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3127,7 +3185,7 @@ msgstr "" " 退出状态:\n" " 以命令的状态退出,或者在命令为空的情况下返回成功。" -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3169,7 +3227,7 @@ msgid "" msgstr "" "解析选项参数。\n" " \n" -" Getopts 被 shell 过程用于解析可定位的参数作为选项。\n" +" getopts 被 shell 过程用于解析可定位的参数作为选项。\n" " \n" " \n" " OPTSTRING 字符串包含待识别的选项字母;如果一个字母后面跟\n" @@ -3198,14 +3256,14 @@ msgstr "" " 错误信息的打印,即使 OPTSTRING 变量的第一个字符不是一\n" " 个冒号。OPTERR 的默认值为1.\n" " \n" -" Getopts 通常解析可定位的参数($0 - $9),不过如果提供了\n" +" getopts 通常解析可定位的参数($0 - $9),不过如果提供了\n" " 更多的参数,它们反而会被解析。\n" " \n" " 退出状态:\n" " 如果一个选项被找到则返回成功;如果遇到了选项的结尾或者\n" " 有错误发生则返回失败。" -#: builtins.c:688 +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3244,7 +3302,7 @@ msgstr "" " 退出状态:\n" " 返回成功除非 COMMAND 命令没有找到或者出现一个重定向错误。" -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3256,7 +3314,7 @@ msgstr "" " 以状态 N 退出 shell。 如果 N 被省略,则退出状态\n" " 为最后一个执行的命令的退出状态。" -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3269,7 +3327,7 @@ msgstr "" " 以状态 N 退出一个登录 shell。如果不在登录 shell 中执行,则\n" " 返回一个错误。" -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3322,7 +3380,7 @@ msgstr "" " 退出状态:\n" " 返回成功,或者执行的命令的状态;如果错误发生则返回非零。" -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3342,7 +3400,7 @@ msgstr "" " 退出状态:\n" " 放至前台的命令状态,或者当错误发生时为失败。" -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3364,7 +3422,7 @@ msgstr "" " 退出状态:\n" " 返回成功除非任务管理没有启用或者错误发生。" -#: builtins.c:787 +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3408,7 +3466,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非 NAME 命令没有找到或者使用了无效的选项。" -#: builtins.c:812 +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3423,7 +3481,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3442,13 +3500,12 @@ msgstr "" " \t简介\n" " \n" " 参数:\n" -" PATTERN\tPattern 模式指定一个帮助主题\n" +" PATTERN\t指定帮助主题的模式\n" " \n" " 退出状态:\n" -" 返回成功,除非 PATTERN 模式没有找到或者使用了无效选项。" +" 返回成功,除非未找到 PATTERN 模式没有找到或者使用了无效选项。" -#: builtins.c:836 -#, fuzzy +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3457,7 +3514,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3483,17 +3541,19 @@ msgid "" msgstr "" "显示或操纵历史列表。\n" " \n" -" 带行号显示历史列表,将每个被修改的条目加上前缀 `*'。\n" +" 带行号显示历史列表,将每个被修改的条目加上 `*' 前缀。\n" " 参数 N 会仅列出最后的 N 个条目。\n" " \n" " 选项:\n" " -c\t删除所有条目从而清空历史列表。\n" -" -d 偏移量\t从指定位置删除历史列表。\n" +" -d 偏移量\t从指定位置删除历史列表。负偏移量将从历史条目末尾\n" +" \t\t开始计数\n" " \n" " -a\t将当前会话的历史行追加到历史文件中\n" " -n\t从历史文件中读取所有未被读取的行\n" +" \t\t并且将它们附加到历史列表\n" " -r\t读取历史文件并将内容追加到历史列表中\n" -" -w\t将当前历史写入到历史文件中,并追加到历史列表中\n" +" -w\t将当前历史写入到历史文件中\n" " \n" " -p\t对每一个 ARG 参数展开历史并显示结果,而不存储到历史列表中\n" " -s\t以单条记录追加 ARG 到历史列表中\n" @@ -3502,13 +3562,13 @@ msgstr "" " 如果 $HISTFILE 变量有值的话使用之,不然使用 ~/.bash_history 文件。\n" " \n" " 如果 $HISTTIMEFORMAT 变量被设定并且不为空,它的值会被用于\n" -" strftime(3) 的格式字符串来打印与每一个显示的历史条目想关联的时\n" -" 间戳,否则不打印时间戳。\n" +" strftime(3) 的格式字符串来打印与每一个显示的历史条目想关联的\n" +" 时间戳,否则不打印时间戳。\n" " \n" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者发生错误。" -#: builtins.c:872 +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3550,7 +3610,7 @@ msgstr "" " 返回成功,除非使用了无效的选项或者有错误发生。\n" " 如果使用 -x 选项,则返回 COMMAND 命令的退出状态。" -#: builtins.c:899 +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3580,8 +3640,7 @@ msgstr "" " 退出状态:\n" " 返回成功除非使用了无效的选项或者 JOBSPEC 声明。" -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3621,7 +3680,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者有错误发生。" -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3703,7 +3762,7 @@ msgstr "" " 退出状态:\n" " 如果最后一个 ARG 参数估值为 0,则 let 返回 1; 否则 let 返回 0。" -#: builtins.c:987 +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3724,7 +3783,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3767,9 +3826,9 @@ msgstr "" " 如果没有提供 NAME 变量,则读取的行被存放在 REPLY 变量中。\n" " \n" " 选项:\n" -" -a array\t将词语赋值给 ARRAY 数组变量的序列下标成员,从零开始。\n" +" -a array\t将词语赋值给 ARRAY 数组变量的序列下标成员,从零开始\n" " -d delim\t持续读取直到读入 DELIM 变量中的第一个字符,而不是换行符\n" -" -e\t在一个交互式 shell 中使用 Readline 获取行\n" +" -e\t使用 Readline 获取行\n" " -i text\t使用 TEXT 文本作为 Readline 的初始文字\n" " -n nchars\t读取 nchars 个字符之后返回,而不是等到读取换行符。\n" " \t\t但是分隔符仍然有效,如果遇到分隔符之前读取了不足 nchars 个字符。\n" @@ -3779,20 +3838,20 @@ msgstr "" " -p prompt\t在尝试读取之前输出 PROMPT 提示符并且不带\n" " \t\t换行符\n" " -r\t不允许反斜杠转义任何字符\n" -" -s\t不显示终端的任何输入\n" +" -s\t不回显终端的任何输入\n" " -t timeout\t如果在 TIMEOUT 秒内没有读取一个完整的行则超时并且返回失" "败。\n" -" \t\tTMOUT 变量的值是默认的超时时间。\n" -" \t\tTIMEOUT 可以是小数。如果 TIMEOUT 是 0,那么仅当在指定的文件描述符上\n" -" \t\t输入有效的时候,read 才返回成功。\n" +" \t\tTMOUT 变量的值是默认的超时时间。TIMEOUT 可以是小数。\n" +" \t\t如果 TIMEOUT 是 0,那么仅当在指定的文件描述符上输入有效的时候,\n" +" \t\tread 才返回成功;否则它将立刻返回而不尝试读取任何数据。\n" " \t\t如果超过了超时时间,则返回状态码大于 128\n" " -u fd\t从文件描述符 FD 中读取,而不是标准输入\n" " \n" " 退出状态:\n" -" 返回码为零,除非遇到了文件结束符,读超时,或者无效的文\n" -" 件描述符作为参数传递给了 -u 选项。" +" 返回码为零,除非遇到了文件结束符、读超时(且返回码不大于128)、\n" +" 出现了变量赋值错误或者无效的文件描述符作为参数传递给了 -u 选项。" -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3812,8 +3871,7 @@ msgstr "" " 退出状态:\n" " 返回 N,或者如果 shell 不在执行一个函数或引用脚本时,失败。" -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3963,6 +4021,8 @@ msgstr "" " -P 设定之后类似 cd 的会改变当前目录的命令不\n" " 追踪符号链接。\n" " -T 设定之后 DEBUG 陷阱会被 shell 函数继承。\n" +" -- 任何剩余的参数会被赋值给位置参数。如果没\n" +" 有剩余的参数,位置参数不会被设置。\n" " - 任何剩余的参数会被赋值给位置参数。\n" " -x 和 -v 选项已关闭。\n" " \n" @@ -3975,7 +4035,7 @@ msgstr "" " 退出状态:\n" " 返回成功除非使用了无效的参数。" -#: builtins.c:1132 +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4013,7 +4073,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者 NAME 名称为只读。" -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4046,7 +4106,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者 NAME 名称。" -#: builtins.c:1173 +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4082,7 +4142,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者 NAME 名称。" -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4100,7 +4160,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非 N 为负或者大于 $#。" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4122,7 +4182,7 @@ msgstr "" " 退出状态:\n" " 返回 FILENAME 文件中最后一个命令的状态;如果 FILENAME 文件不可读则失败。" -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4146,7 +4206,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非没有启用任务控制或者有错误发生。" -#: builtins.c:1254 +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4300,7 +4360,7 @@ msgstr "" " 如果 EXPR 表达式估值为真则返回成功;如果 EXPR 表达式估值\n" " 为假或者使用了无效的参数则返回失败。" -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4312,7 +4372,7 @@ msgstr "" " 是内建命令 \"test\" 的同义词,但是最后一个参数必须是\n" " 字符 `]',以匹配起始的 `['。" -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4333,7 +4393,7 @@ msgstr "" # EXIT and DEBUG should be as-is. Use before you translate, please. # The -signal is only an example; Read carefully. -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4404,7 +4464,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者 SIGSPEC。" -#: builtins.c:1393 +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4456,7 +4516,7 @@ msgstr "" " 退出状态:\n" " 如果所有的 NAME 命令都找到则返回成功;任何一个找不到则失败。" -#: builtins.c:1424 +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4546,7 +4606,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者错误发生。" -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4578,7 +4638,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的 MODE 模式或者选项。" -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4586,30 +4646,34 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" "等待任务完成并返回退出状态。\n" " \n" -" 等待以 ID 编号识别的进程,其中ID 可以是进程编号或者任务声明,\n" +" 等待以 ID 编号识别的进程,其中 ID 可以是进程编号或者任务声明,\n" " 并报告它的终止状态。如果 ID 没有给出,则等待所有的当前活跃子\n" " 进程,并且返回状态为零。如果 ID 是任务声明,等待任务管道中的\n" " 所有进程。\n" " \n" " 若给定了 -n 选项,等待下一个任务完成并返回其状态。\n" " \n" +" 若给定了 -f 选项,且已启用了任务控制,则等待指定的 ID 终止\n" +" 而非等待它改变状态。\n" " 退出状态:\n" " 返回最后一个 ID 进程的状态;如果使用了无效的 ID 或者选项则失败。" -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4631,7 +4695,7 @@ msgstr "" " 退出状态:\n" " 返回进程 ID 的状态;如果 PID 是无效的进程号或者指定了无效的选项则失败。" -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4645,14 +4709,14 @@ msgid "" msgstr "" "为列表中的每个成员执行命令。\n" " \n" -" `for' 循环为列表中的每个成员执行一系列的命令。如果没有\n" -" `in WORDS ...;'则假定使用 `in \"$@\"'。对于 WORDS 中的每\n" -" 个元素,NAME 被设定为该元素,并且执行 COMMANDS 命令。\n" +" “for”循环为列表中的每个成员执行一系列的命令。如果没有\n" +" “in <词语> ...;”则假定使用“in \"$@\"”。对于 <词语> 中的每\n" +" 个元素,<名称> 变量被设定为该元素后执行 <命令>。\n" " \n" " 退出状态:\n" " 返回最后执行的命令的状态。" -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4673,16 +4737,16 @@ msgstr "" " 等价于\n" " \t(( EXP1 ))\n" " \twhile (( EXP2 )); do\n" -" \t\tCOMMANDS\n" +" \t\t命令们\n" " \t\t(( EXP3 ))\n" " \tdone\n" -" EXP1、EXP2 和 EXP3都是算术表达式。如果省略任何表达式,\n" +" EXP1、EXP2 和 EXP3 都是算术表达式。如果省略任何表达式,\n" " 则等同于使用了估值为1的表达式。\n" " \n" " 退出状态:\n" " 返回最后执行的命令的状态。" -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4703,7 +4767,7 @@ msgid "" msgstr "" "从列表中选取词并且执行命令。\n" " \n" -" WORDS 变量被展开,生成一个词的列表。展开的词集合被打印\n" +" <词语...> 被展开,生成一个词的列表。展开的词集合被打印\n" " 在标准错误输出设备上,每个以一个数字做前缀。如果没有 `in WORDS'\n" " 则假定使用`in \"$@\"'。PS3提示符会被显示并且从标准输入读入一行\n" " 如果该行由被显示的词对应的数字组成,则 NAME 变量被设定为相应\n" @@ -4715,7 +4779,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4743,7 +4807,7 @@ msgstr "" " 退出状态:\n" " 返回状态即PIPELINE 的返回状态。" -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4761,7 +4825,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4792,7 +4856,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4810,7 +4874,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4828,8 +4892,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4849,9 +4912,9 @@ msgstr "" " 默认的 NAME 是 \"COPROC\"。\n" " \n" " 退出状态:\n" -" 返回 COMMAND 命令的退出状态。" +" 副进程会返回退出状态 0。" -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -4874,7 +4937,7 @@ msgstr "" " 退出状态:\n" " 返回成功除非 NAME 为只读。" -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -4892,7 +4955,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -4916,7 +4979,7 @@ msgstr "" " 退出状态:\n" " 返回被继续的任务的状态。" -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4934,7 +4997,7 @@ msgstr "" " 退出状态\n" " 如果表达式估值为0则返回 1;否则返回0。" -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -4982,7 +5045,7 @@ msgstr "" " 退出状态:\n" " 根据 EXPRESSION 的值为0或1。" -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5077,7 +5140,7 @@ msgstr "" " HISTIGNORE\t用于决定哪些命令被存入历史文件的模式\n" " \t\t列表,以冒号分隔。\n" -#: builtins.c:1803 +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5130,7 +5193,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的参数或者目录转换失败。" -#: builtins.c:1837 +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5167,17 +5230,17 @@ msgstr "" " \n" " 参数:\n" " +N\t删除第 N 个目录 (`dirs' 显示的目录列表中左起,从零开始)。\n" -" \t例如: `popd +0' 删除第一个目录,`popd +1' 删除第二个。\n" +" \t例如:`popd +0' 删除第一个目录,`popd +1' 删除第二个。\n" " \n" " -N\t删除第 N 个目录 (`dirs' 显示的目录列表中右起,从零开始)。\n" -" \t例如: `popd -0' 删除最后一个目录,,`popd -1' 删除倒数第二个。\n" +" \t例如:`popd -0' 删除最后一个目录,,`popd -1' 删除倒数第二个。\n" " \n" " `dirs' 内建显示目录栈。\n" " \n" " 退出状态:\n" " 返回成功,除非使用了无效的参数或者目录变换失败。" -#: builtins.c:1867 +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5226,14 +5289,13 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者发生错误。" -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5248,9 +5310,9 @@ msgid "" msgstr "" "设定和取消设定 shell 选项。\n" " \n" -" 改变每个 shell 选项 OPTNAME的设定。不带参数\n" -" 时,列出所有 shell 选项并标注每一个选项是否被\n" -" 设定。\n" +" 改变每个 shell 选项 OPTNAME 的设定。不带参数时,\n" +" 列出每个提供的 OPTNAME,否则列出所有 shell 选项;\n" +" 同时标注每一个选项是否被设定。\n" " \n" " 选项:\n" " -o\t限制 OPTNAME 为定义用于`set -o' 的选项\n" @@ -5261,9 +5323,9 @@ msgstr "" " \n" " 退出状态:\n" " 如果 OPTNAME 选项被启用则返回成功;如果是\n" -" 无效的选项或OPTNAME 被禁用则失败。" +" 无效的选项或 OPTNAME 被禁用则失败。" -#: builtins.c:1919 +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5319,7 +5381,8 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者写或赋值错误发生。" -#: builtins.c:1953 +#: builtins.c:1961 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5337,17 +5400,21 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -"声明 readline 如何完成读取参数。\n" +"指定 Readline 如何补全参数。\n" " \n" -" 声明对于每一个 NAME 名称如何完成读取参数。如果不带选项,\n" +" 声明对于每一个 NAME 名称如何补全参数。如果不带选项,\n" " 现有的补全声明会以可以重用为输入的格式打印出来。\n" " \n" " 选项:\n" @@ -5356,14 +5423,16 @@ msgstr "" " \t名称,删除所有的补全声明。\n" " -D\t对于没有补全声明定义的命令,设定默认的补全动作\n" " -E\t对于 \"empty\" 命令设定补全动作,—— 对于空行的补全。\n" +" -I\t将补全和动作应用在首单词(通常是所给命令)上\n" " \n" -" 尝试补全时,按照上述大写字母选项的顺序进行动作。-D 选项优先\n" -" 级高于 -E 选项。\n" +" 尝试补全时,按照上述大写字母选项的顺序进行动作。\n" +" 如果给出了多个选项,-D 选项优先级高于 -E 选项,且\n" +" 这两个选项优先级均高于 -I。\n" " \n" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者错误发生。" -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5384,7 +5453,7 @@ msgstr "" " 退出状态:\n" " 除非使用了无效选项或者错误发生,否则返回成功。" -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -5399,6 +5468,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5424,6 +5494,7 @@ msgstr "" " \t-o option\t为每个 NAME 名称设定补全选项 option\n" " \t-D\t\t为 \"default\" 命令补全改变选项\n" " \t-E\t\t为 \"empty\" 命令补全改变选项\n" +" \t-I\t\t为首单词的补全改变选项\n" " \n" " 使用 `+o' 而不是 `-o' 可以关闭指定的选项。\n" " \n" @@ -5436,7 +5507,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者 NAME 名称没有定义补全声明。" -#: builtins.c:2026 +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5503,31 +5574,19 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项,或者 ARRAY 变量只读或不是下标数组。" -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" -"从一个文件中读取行到数组变量中\n" +"从一个文件中读取行到数组变量中。\n" " \n" " 一个 `mapfile'的同义词。" #~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." #~ msgstr "版权所有 (C) 2014 自由软件基金会." -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "true" - -#~ msgid "false" -#~ msgstr "false" - -#~ msgid "times" -#~ msgstr "times" - #~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." #~ msgstr "版权所有 (C) 2013 自由软件基金会." diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo index 6e07b8db6..79a6a4aad 100644 Binary files a/po/zh_TW.gmo and b/po/zh_TW.gmo differ diff --git a/po/zh_TW.po b/po/zh_TW.po index b276ceb87..e83e8735a 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -1,137 +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 5.0-beta2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-08-27 13:36+0800\n" -"Last-Translator: Wei-Lun Chao \n" +"POT-Creation-Date: 2018-12-19 15:52-0500\n" +"PO-Revision-Date: 2018-11-29 20:02+0800\n" +"Last-Translator: pan93412 \n" "Language-Team: Chinese (traditional) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_TW\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Manual Edit && Poedit 2.0.2\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "陣列下標不正確" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280 +#: variables.c:3108 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s:正在移除 nameref 屬性" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:402 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: 無法將索引陣列轉化為關聯陣列" -#: arrayfunc.c:578 +#: arrayfunc.c:586 #, c-format msgid "%s: invalid associative array key" msgstr "%s: 無效的關聯陣列鍵值" -#: arrayfunc.c:580 +#: arrayfunc.c:588 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: 無法指派為非數字的索引" -#: arrayfunc.c:625 +#: arrayfunc.c:633 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: 指派為關聯陣列時必須使用下標" -#: bashhist.c:421 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "%s: 無法建立: %s" -#: bashline.c:4091 +#: bashline.c:4144 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: 無法為命令找到鍵對映" -#: bashline.c:4189 +#: bashline.c:4254 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: 第一個非空字元不是「\"」" -#: bashline.c:4218 +#: bashline.c:4283 #, c-format msgid "no closing `%c' in %s" msgstr "%2$s 中沒有閉合的「%1$c」" -#: bashline.c:4252 +#: bashline.c:4317 #, c-format msgid "%s: missing colon separator" msgstr "%s: 缺少冒號分隔符" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "大括號展開: 無法為 %s 分配記憶體" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "大括號展開: 為 %d 個元素分配記憶體失敗" +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "大括號展開: 為 %u 個元素分配記憶體失敗" -#: braces.c:471 +#: braces.c:474 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "大括號展開: 為「%s」分配記憶體失敗" -#: builtins/alias.def:133 +#: builtins/alias.def:131 variables.c:1842 #, c-format msgid "`%s': invalid alias name" msgstr "「%s」: 無效的別名" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "未啟用列編輯" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "「%s」: 無效的鍵對映名" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s:不能讀取: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "「%s」: 無法解除繫結" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "「%s」:不明函數名稱" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s 未與任何鍵繫結。\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s 可以被呼叫,藉由" -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "「%s」: 無法解除繫結" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "迴圈計數" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "僅在「for」,「while」, 或者「until」迴圈中有意義" @@ -145,234 +148,233 @@ msgstr "" " \n" " 不帶 EXPR 時,回傳" -#: builtins/cd.def:321 +#: builtins/cd.def:326 msgid "HOME not set" msgstr "HOME 沒有設置" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:334 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "太多引數" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:341 msgid "null directory" -msgstr "無其他目錄" +msgstr "空的目錄" -#: builtins/cd.def:347 +#: builtins/cd.def:352 msgid "OLDPWD not set" msgstr "OLDPWD 沒有設置" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "第 %d 列:" -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "警告:" -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: 用法:" -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s:選項需要一個引數" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s:需要數字引數" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s:沒有找到" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s:無效選項" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s:無效選項名稱" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357 #, c-format msgid "`%s': not a valid identifier" msgstr "「%s」:不是一個有效的識別符" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "無效的八進位數字" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "無效的十六進位數字" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1564 msgid "invalid number" msgstr "無效數字" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s:無效的信號規格" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "「%s」:不是一個 pid 或有效的工作規格" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s:唯讀的變數" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s:%s 超出範圍" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "引數" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s 超出範圍" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s:沒有此類工作" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s:沒有工作控制" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "沒有工作控制" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s:受限的" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "受限的" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s:不是一個內建 shell" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "寫入錯誤: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "設定終端屬性時出錯: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "獲取終端屬性時出錯: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s:錯誤檢索當前目錄: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s:模稜兩可的工作規格" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" -msgstr "" +msgstr "這個版本沒有可用的說明" -#: builtins/complete.def:278 +#: builtins/complete.def:281 #, c-format msgid "%s: invalid action name" msgstr "%s:無效的功能名稱" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "%s:沒有完成的規格" -#: builtins/complete.def:699 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "警告: -F 選項可能無法按預期工作" -#: builtins/complete.def:701 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "警告: -C 選項可能無法按預期工作" -#: builtins/complete.def:831 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "當前未執行補完功能" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "只能用在函數中" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: 引用變數不能為陣列" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3363 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: 不允許名稱引用變數引用自身" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285 +#: variables.c:3360 #, c-format msgid "%s: circular name reference" msgstr "%s: 迴圈變數名引用" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: 無效的引用變數名" +msgstr "「%s」:無效的引用變數名" -#: builtins/declare.def:463 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "無法用「-f」生成函數" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:532 execute_cmd.c:5852 #, c-format msgid "%s: readonly function" msgstr "%s:唯讀函數" -#: builtins/declare.def:753 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "" +msgstr "%s:不建議使用引用的複合陣列指定" -#: builtins/declare.def:767 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: 無法以這種方式銷毀陣列變數" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:845 builtins/read.def:788 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: 無法將關聯陣列轉化為索引陣列" @@ -394,7 +396,7 @@ msgstr "無法在共享物件 %2$s 中找到 %1$s: %3$s" #: builtins/enable.def:387 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "" +msgstr "為 %s 載入函式時回傳錯誤 (%d):尚未載入" #: builtins/enable.def:512 #, c-format @@ -406,68 +408,68 @@ msgstr "%s: 未以動態方式載入" msgid "%s: cannot delete: %s" msgstr "%s: 無法刪除: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684 #, c-format msgid "%s: is a directory" msgstr "%s: 是一個目錄" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: 不是常規檔案" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: 檔案太大" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: 無法執行二進位檔案" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: 無法執行: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "登出\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "不是登入 shell: 使用「exit」" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "有停止的工作。\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "有執行中的工作。\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "未找到命令" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "歷史記錄規格" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: 無法開啟臨時檔案: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "當前" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "在不帶工作控制的情況下啟動了工作 %d" @@ -482,39 +484,38 @@ msgstr "%s: 非法選項 -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: 選項需要一個引數 -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "已停用雜湊" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: 雜湊表為空\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "命中\t命令\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Shell 命令,匹配關鍵詞 `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" "沒有與「%s」匹配的說明主題。嘗試「help help」或「man -k %s」或「info %s」。" -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: 無法開啟: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -533,20 +534,21 @@ msgstr "" "名稱旁邊的星號(*)表示該命令被停用。\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "最多能使用 -anrw 選項之一" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "歷史記錄位置" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: 無效引數" +msgstr "%s:無效時間戳" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: 歷史記錄擴充套件失敗" @@ -560,16 +562,16 @@ msgstr "%s: inlib 失敗" msgid "no other options allowed with `-x'" msgstr "其他選項不能與「-x」同時使用" -#: builtins/kill.def:202 +#: builtins/kill.def:211 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: 引數必須是行程或工作 ID" -#: builtins/kill.def:265 +#: builtins/kill.def:274 msgid "Unknown error" msgstr "不明錯誤" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656 msgid "expression expected" msgstr "需要表示式" @@ -578,69 +580,69 @@ msgstr "需要表示式" msgid "%s: not an indexed array" msgstr "%s: 不是一個索引陣列" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:307 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: 無效的檔案描述符規格" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:314 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: 無效的檔案描述符: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: 無效的列數" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: 無效的陣列原點" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: 無效的回呼定量" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "空陣列變數名" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "需要陣列變數支援" -#: builtins/printf.def:412 +#: builtins/printf.def:420 #, c-format msgid "`%s': missing format character" msgstr "「%s」: 缺少格式字元" -#: builtins/printf.def:467 +#: builtins/printf.def:475 #, c-format msgid "`%c': invalid time format specification" msgstr "「%c」: 無效的時間格式規格" -#: builtins/printf.def:669 +#: builtins/printf.def:677 #, c-format msgid "`%c': invalid format character" msgstr "「%c」: 無效格式字元" -#: builtins/printf.def:695 +#: builtins/printf.def:703 #, c-format msgid "warning: %s: %s" msgstr "警告: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:789 #, c-format msgid "format parsing problem: %s" msgstr "格式解析問題: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:886 msgid "missing hex digit for \\x" msgstr "使用了 \\x 但缺少十六進位數字" -#: builtins/printf.def:893 +#: builtins/printf.def:901 #, c-format msgid "missing unicode digit for \\%c" msgstr "使用了 \\%c 但缺少萬國碼數字" @@ -654,19 +656,19 @@ msgstr "無其他目錄" msgid "%s: invalid argument" msgstr "%s: 無效引數" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<無當前目錄>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "目錄堆疊為空" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "目錄堆疊索引" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -708,7 +710,7 @@ msgstr "" " -N\t以 dirs 不帶選項輸出的順序,從右起第 N 個項目顯示列表,\n" "\t從 0 開始。" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -754,7 +756,7 @@ msgstr "" " \n" " 「dirs」內建命令顯示目錄堆疊。" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -797,62 +799,62 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "%s: 無效的逾時規格" -#: builtins/read.def:696 +#: builtins/read.def:733 #, c-format msgid "read error: %d: %s" msgstr "讀取錯誤: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "只能從函數或者原始指令稿「return」" -#: builtins/set.def:841 +#: builtins/set.def:852 msgid "cannot simultaneously unset a function and a variable" msgstr "無法同時取消設定一個函數和一個變數" -#: builtins/set.def:888 +#: builtins/set.def:904 #, c-format msgid "%s: cannot unset" msgstr "%s: 無法取消設定" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:925 variables.c:3813 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: 無法取消設定: 唯讀 %s" -#: builtins/set.def:922 +#: builtins/set.def:938 #, c-format msgid "%s: not an array variable" msgstr "%s: 不是陣列變數" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: 不是函數" -#: builtins/setattr.def:196 -#, fuzzy, c-format +#: builtins/setattr.def:194 +#, c-format msgid "%s: cannot export" -msgstr "%s: 無法取消設定" +msgstr "%s:無法會出" #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "位移計數" -#: builtins/shopt.def:289 +#: builtins/shopt.def:310 msgid "cannot set and unset shell options simultaneously" msgstr "無法同時設定和取消設定 shell 選項" -#: builtins/shopt.def:391 +#: builtins/shopt.def:420 #, c-format msgid "%s: invalid shell option name" msgstr "%s: 無效的 shell 選項名稱" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "需要檔名引數" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: 檔案未找到" @@ -865,61 +867,61 @@ msgstr "無法懸置" msgid "cannot suspend a login shell" msgstr "無法將登入 shell 懸置" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s 是「%s」的別名\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s 是 shell 關鍵字\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s 是一個函數\n" -#: builtins/type.def:300 -#, fuzzy, c-format +#: builtins/type.def:299 +#, c-format msgid "%s is a special shell builtin\n" -msgstr "%s 是 shell 內建\n" +msgstr "%s 是特別的 shell 內建\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s 是 shell 內建\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s 是 %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s 已進行雜湊操作(%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: 無效的 limit 引數" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "「%c」:不當的命令" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s:不能得到 limit: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s:不能修改 limit: %s" @@ -938,357 +940,365 @@ msgstr "「%c」: 無效的符號狀態運算子" msgid "`%c': invalid symbolic mode character" msgstr "「%c」: 無效的符號狀態字元" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " 列 " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "最後的命令: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "中止…" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "通知:" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "不明命令錯誤" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "不當的命令類型" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "不當的連接器" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "錯誤的跳轉" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: 未繫結的變數" -#: eval.c:209 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\a 等待輸入逾時:自動登出\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "無法從 /dev/null 重定向標準輸入: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1306 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "時間格式:「%c」: 無效的格式字元" -#: execute_cmd.c:2273 +#: execute_cmd.c:2361 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc:coproc [%d:%s] 仍然存在" -#: execute_cmd.c:2377 +#: execute_cmd.c:2485 msgid "pipe error" msgstr "管道錯誤" -#: execute_cmd.c:4496 -#, fuzzy, c-format +#: execute_cmd.c:4671 +#, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "%s: 超出最大函數巢狀層數 (%d)" +msgstr "eval:超出最大 eval 巢狀層數 (%d)" -#: execute_cmd.c:4508 -#, fuzzy, c-format +#: execute_cmd.c:4683 +#, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "%s: 超出最大函數巢狀層數 (%d)" +msgstr "%s: 超出最大來源巢狀層數 (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4791 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: 超出最大函數巢狀層數 (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5340 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: 受限的: 無法在命令名稱中使用「/」" -#: execute_cmd.c:5232 +#: execute_cmd.c:5438 #, c-format msgid "%s: command not found" msgstr "%s:命令找不到" -#: execute_cmd.c:5470 +#: execute_cmd.c:5682 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5720 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: 不當的直譯器" -#: execute_cmd.c:5545 +#: execute_cmd.c:5757 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: 無法執行二進位檔案: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5843 #, c-format msgid "`%s': is a special builtin" msgstr "「%s」: 特殊內建" -#: execute_cmd.c:5675 +#: execute_cmd.c:5895 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "無法複製檔案描述符 %d 到檔案描述符 %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "表示式遞迴層次超出範圍" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "遞迴堆疊下限溢位" -#: expr.c:431 +#: expr.c:477 msgid "syntax error in expression" msgstr "表示式語法錯誤" -#: expr.c:475 +#: expr.c:521 msgid "attempted assignment to non-variable" msgstr "嘗試指派給非變數" -#: expr.c:495 expr.c:858 +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "變數定義語法錯誤" + +#: expr.c:544 expr.c:910 msgid "division by 0" msgstr "除 0" -#: expr.c:542 +#: expr.c:591 msgid "bug: bad expassign token" msgstr "錯誤:不當的表示式字組" -#: expr.c:595 +#: expr.c:645 msgid "`:' expected for conditional expression" msgstr "條件表示式需要「:」" -#: expr.c:919 +#: expr.c:971 msgid "exponent less than 0" msgstr "指數小於 0" -#: expr.c:976 +#: expr.c:1028 msgid "identifier expected after pre-increment or pre-decrement" msgstr "預增符或預減符後應跟有標識符" -#: expr.c:1002 +#: expr.c:1055 msgid "missing `)'" msgstr "缺少「)」" -#: expr.c:1053 expr.c:1393 +#: expr.c:1106 expr.c:1484 msgid "syntax error: operand expected" msgstr "語法錯誤: 需要運算元" -#: expr.c:1395 +#: expr.c:1486 msgid "syntax error: invalid arithmetic operator" msgstr "語法錯誤: 無效的算術運算子" -#: expr.c:1419 +#: expr.c:1510 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (錯誤字組是「%s」)" -#: expr.c:1477 +#: expr.c:1568 msgid "invalid arithmetic base" msgstr "無效的算術進位" -#: expr.c:1497 +#: expr.c:1588 msgid "value too great for base" msgstr "數值太大不可為算術進位的基底" -#: expr.c:1546 +#: expr.c:1637 #, c-format msgid "%s: expression error\n" msgstr "%s: 表示式錯誤\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: 無法訪問上層目錄" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5930 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "無法為檔案描述符 %d 重置無延遲模式" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "無法從檔案描述符 %d 為 bash 的輸入獲取一個新的檔案描述符" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: 已經存在新的檔案描述符 %d 的緩衝區" -#: jobs.c:527 +#: jobs.c:529 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: 行程群組管道" -#: jobs.c:1035 +#: jobs.c:1084 #, c-format msgid "forked pid %d appears in running job %d" msgstr "生成的行程識別號 %d 顯示為執行中的工作 %d" -#: jobs.c:1154 +#: jobs.c:1203 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "刪除行程群組 %2$ld 中已停止的工作 %1$d" -#: jobs.c:1258 +#: jobs.c:1307 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: 行程 %5ld(%s) 進入 the_pipeline" -#: jobs.c:1261 +#: jobs.c:1310 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: 行程識別號 %5ld(%s) 標註為仍活著" -#: jobs.c:1590 +#: jobs.c:1639 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: 無此行程識別號" -#: jobs.c:1605 +#: jobs.c:1654 #, c-format msgid "Signal %d" msgstr "訊號 %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1668 jobs.c:1694 msgid "Done" msgstr "已完成" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1673 siglist.c:123 msgid "Stopped" msgstr "已停止" -#: jobs.c:1628 +#: jobs.c:1677 #, c-format msgid "Stopped(%s)" msgstr "已停止(%s)" -#: jobs.c:1632 +#: jobs.c:1681 msgid "Running" msgstr "執行中" -#: jobs.c:1649 +#: jobs.c:1698 #, c-format msgid "Done(%d)" msgstr "已完成(%d)" -#: jobs.c:1651 +#: jobs.c:1700 #, c-format msgid "Exit %d" msgstr "退出 %d" -#: jobs.c:1654 +#: jobs.c:1703 msgid "Unknown status" msgstr "不明狀態" -#: jobs.c:1741 +#: jobs.c:1790 #, c-format msgid "(core dumped) " msgstr "(核心已傾印)" -#: jobs.c:1760 +#: jobs.c:1809 #, c-format msgid " (wd: %s)" msgstr " (工作目錄: %s)" -#: jobs.c:1985 +#: jobs.c:2037 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "子行程 setpgid (%ld 到 %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2399 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: 行程識別號 %ld 不是當前 shell 的子行程" -#: jobs.c:2602 +#: jobs.c:2695 #, c-format msgid "wait_for: No record of process %ld" msgstr "wiat_for: 沒有行程 %ld 的記錄" -#: jobs.c:2929 +#: jobs.c:3055 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: 工作 %d 已停止" -#: jobs.c:3221 +#: jobs.c:3362 #, c-format msgid "%s: job has terminated" msgstr "%s: 工作已經終止" -#: jobs.c:3230 +#: jobs.c:3371 #, c-format msgid "%s: job %d already in background" msgstr "%s: 工作 %d 已在背景執行" -#: jobs.c:3455 +#: jobs.c:3597 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: 開啟 WNOHANG 以避免無限阻塞" -#: jobs.c:3970 +#: jobs.c:4120 #, c-format msgid "%s: line %d: " msgstr "%s: 第 %d 列:" -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4134 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (核心已傾印)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4146 jobs.c:4159 #, c-format msgid "(wd now: %s)\n" msgstr "(當前工作目錄:%s)\n" -#: jobs.c:4041 +#: jobs.c:4191 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp 失敗" -#: jobs.c:4104 +#: jobs.c:4247 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control:背景中沒有工作控制" + +#: jobs.c:4263 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: 列規律" -#: jobs.c:4114 +#: jobs.c:4273 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4294 jobs.c:4303 #, c-format msgid "cannot set terminal process group (%d)" msgstr "無法設定終端行程群組(%d)" -#: jobs.c:4149 +#: jobs.c:4308 msgid "no job control in this shell" msgstr "此 shell 中無工作控制" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: 主張失敗: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" @@ -1297,39 +1307,39 @@ msgstr "" "\r\n" "malloc: %s:%d: 主張已修補\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "不明" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "malloc: 空閒串列中的區塊損壞" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "free: 用已經釋放的區塊做為呼叫引數" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "free: 用未分配的區塊做為呼叫引數" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: 檢測到下限溢位;mh_nbytes 超出範圍" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "free: 啟始和末尾區塊大小不一致" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "realloc: 用未分配的區塊做為呼叫引數" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: 檢測到下限溢位;mh_nbytes 超出範圍" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: 啟始和末尾區塊大小不一致" @@ -1371,22 +1381,22 @@ msgstr "%s:不當的網路路徑規格" msgid "network operations not supported" msgstr "不支持網路操作" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: 無法變更語區選項 (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: 無法變更語區選項 (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: 無法變更語區選項 (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: 無法變更語區選項 (%s): %s" @@ -1404,150 +1414,150 @@ msgstr "您有新郵件在 $_" msgid "The mail in %s has been read\n" msgstr "郵件在 %s 已閱讀\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "語法錯誤:需要算式" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "語法錯誤:「;」意外" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "語法錯誤:「((%s))」" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document:不當的指示類型 %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "立即文件在第 %d 列被檔案結束符分隔 (需要「%s」)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection:重新導向指示「%d」超出範圍" -#: parse.y:2324 +#: parse.y:2380 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" -msgstr "" +msgstr "shell_getc: shell_input_line_size (%zu) 超過 SIZE_MAX (%lu):列被截斷" -#: parse.y:2700 +#: parse.y:2786 msgid "maximum here-document count exceeded" -msgstr "" +msgstr "超過此處檔案上限最大值" -#: parse.y:3390 parse.y:3748 +#: parse.y:3536 parse.y:3906 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "尋找匹配的「%c」時遇到了未預期的檔案結束符" -#: parse.y:4410 +#: parse.y:4606 msgid "unexpected EOF while looking for `]]'" msgstr "尋找「]]」時遇到了未預期的檔案結束符" -#: parse.y:4415 +#: parse.y:4611 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "條件表示式中有語法錯誤: 未預期的字組「%s」" -#: parse.y:4419 +#: parse.y:4615 msgid "syntax error in conditional expression" msgstr "語法錯誤,在有條件的表示式" -#: parse.y:4497 +#: parse.y:4693 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "未預期的字組「%s」,需要「)」" -#: parse.y:4501 +#: parse.y:4697 msgid "expected `)'" msgstr "預期「)」" -#: parse.y:4529 +#: parse.y:4725 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "一元條件運算子使用了未預期的引數「%s」" -#: parse.y:4533 +#: parse.y:4729 msgid "unexpected argument to conditional unary operator" msgstr "一元條件運算子使用了未預期的引數" -#: parse.y:4579 +#: parse.y:4775 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "未預期的字組「%s」,需要二元條件運算子" -#: parse.y:4583 +#: parse.y:4779 msgid "conditional binary operator expected" msgstr "需要二元條件運算子" -#: parse.y:4605 +#: parse.y:4801 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "二元條件運算子使用了未預期的引數「%s」" -#: parse.y:4609 +#: parse.y:4805 msgid "unexpected argument to conditional binary operator" msgstr "二元條件運算子使用了未預期的引數" -#: parse.y:4620 +#: parse.y:4816 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "條件命令中有未預期的字組「%c」" -#: parse.y:4623 +#: parse.y:4819 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "條件命令中有未預期的字組「%s」" -#: parse.y:4627 +#: parse.y:4823 #, c-format msgid "unexpected token %d in conditional command" msgstr "條件命令中有未預期的字組 %d" -#: parse.y:5996 +#: parse.y:6245 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "未預期的字組「%s」附近有語法錯誤" -#: parse.y:6014 +#: parse.y:6263 #, c-format msgid "syntax error near `%s'" msgstr "「%s」附近有語法錯誤" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error: unexpected end of file" msgstr "語法錯誤: 未預期的檔案結尾" -#: parse.y:6024 +#: parse.y:6273 msgid "syntax error" msgstr "語法錯誤" -#: parse.y:6086 +#: parse.y:6335 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "使用「%s」退出 shell 。\n" -#: parse.y:6248 +#: parse.y:6497 msgid "unexpected EOF while looking for matching `)'" msgstr "尋找匹配的「)」時遇到了未預期的檔案結束符" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "補完: 未找到函數「%s」" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion:%s:可能重試迴圈" #: pcomplib.c:182 #, c-format @@ -1573,90 +1583,94 @@ msgstr "xtrace_set: 空的檔案指標" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1540 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf:「%c」: 無效的格式字元" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "檔案描述符超出範圍" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: 模稜兩可的重定向" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: 無法覆寫已存在的檔案" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: 受限的: 無法重定向輸出" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "無法為立即文件建立臨時檔案: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: 無法將檔案描述符指派給變數" -#: redir.c:586 +#: redir.c:591 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "沒有網路時不支援 /dev/(tcp|udp)/host/port" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221 msgid "redirection error: cannot duplicate fd" msgstr "重定向錯誤: 無法複製檔案描述符" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "無法找到 /tmp ,請建立" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp 必須為有效的目錄名稱" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "已在互動式 shell 中忽略美化輸出模式" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c:無效選項" -#: shell.c:1282 -#, fuzzy, c-format +#: shell.c:1299 +#, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "無法為檔案描述符 %d 重置無延遲模式" +msgstr "無法設定 UID 至 %d:有效的 UID %d" -#: shell.c:1289 -#, fuzzy, c-format +#: shell.c:1306 +#, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "無法為檔案描述符 %d 重置無延遲模式" +msgstr "無法設定 GID 至 %d:有效的 GID %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "無法開啟偵錯器;偵錯模式已停用" -#: shell.c:1566 -#, fuzzy, c-format +#: shell.c:1608 +#, c-format msgid "%s: Is a directory" msgstr "%s: 是一個目錄" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "我沒有名字!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash,版本 %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1665,49 +1679,49 @@ msgstr "" "用法:\t%s [GNU 長選項] [選項] …\n" "\t%s [GNU 長選項] [選項] 指令稿檔案 …\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU 長選項:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Shell 選項:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD 或 -c <命令> 或 -O \t\t(僅適合呼叫)\n" -#: shell.c:1953 +#: shell.c:2007 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s or -o 選項\n" -#: shell.c:1959 +#: shell.c:2013 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "輸入「%s -c \"help set\"」更多關於 shell 選項的訊息。\n" -#: shell.c:1960 +#: shell.c:2014 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "輸入「%s -c help」更多關於內建 shell 命令的訊息。\n" -#: shell.c:1961 +#: shell.c:2015 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "使用「bashbug」命令通報程式錯誤。\n" -#: shell.c:1963 +#: shell.c:2017 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "bash 官網:\n" -#: shell.c:1964 +#: shell.c:2018 #, c-format msgid "General help using GNU software: \n" -msgstr "" +msgstr "GNU 軟體的常見使用說明:\n" -#: sig.c:707 +#: sig.c:730 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d:無效操作" @@ -1881,103 +1895,107 @@ msgstr "不明訊號 #" msgid "Unknown Signal #%d" msgstr "不明訊號 #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1454 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "錯誤的替換: 在 %2$s 中沒有閉合的「%1$s」" -#: subst.c:3154 +#: subst.c:3231 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: 無法將串列指派給陣列成員" -#: subst.c:5740 subst.c:5756 +#: subst.c:5789 subst.c:5805 msgid "cannot make pipe for process substitution" msgstr "無法為行程替換建立管道" -#: subst.c:5798 +#: subst.c:5851 msgid "cannot make child for process substitution" msgstr "無法為行程替換建立子行程" -#: subst.c:5848 +#: subst.c:5920 #, c-format msgid "cannot open named pipe %s for reading" msgstr "無法開啟命名管道 %s 進 readline-" -#: subst.c:5850 +#: subst.c:5922 #, c-format msgid "cannot open named pipe %s for writing" msgstr "無法開啟命名管道 %s 進行寫入" -#: subst.c:5873 +#: subst.c:5945 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "無法將命名管道 %s 做為檔案描述符 %d 複製" -#: subst.c:5959 -#, fuzzy +#: subst.c:6062 msgid "command substitution: ignored null byte in input" -msgstr "錯誤的替換: 在 %s 中沒有閉合的「`」" +msgstr "指令替換:在輸入中忽略了空位元組" -#: subst.c:6083 +#: subst.c:6190 msgid "cannot make pipe for command substitution" msgstr "無法為命令替換建立管道" -#: subst.c:6127 +#: subst.c:6233 msgid "cannot make child for command substitution" msgstr "無法為命令替換建立子行程" -#: subst.c:6153 +#: subst.c:6259 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: 無法將管道複製為檔案描述符 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6710 subst.c:9623 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: 無效的引用變數名" -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6806 subst.c:6824 subst.c:6979 #, c-format -msgid "%s: bad substitution" -msgstr "%s: 錯誤的替換" - -#: subst.c:6800 -#, fuzzy, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: 無效的列數" +msgstr "%s: 無效的間接擴展" -#: subst.c:6807 -#, fuzzy, c-format +#: subst.c:6840 subst.c:6987 +#, c-format msgid "%s: invalid variable name" -msgstr "「%s」: 無效的別名" +msgstr "%s:無效的變數名稱" + +#: subst.c:7056 +#, c-format +msgid "%s: parameter not set" +msgstr "%s:參數未設定" -#: subst.c:6854 +#: subst.c:7058 #, c-format msgid "%s: parameter null or not set" msgstr "%s: 參數為空或未設定" -#: subst.c:7089 subst.c:7104 +#: subst.c:7295 subst.c:7310 #, c-format msgid "%s: substring expression < 0" msgstr "%s: 子串表示式 < 0" -#: subst.c:8450 +#: subst.c:8973 subst.c:8994 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: 錯誤的替換" + +#: subst.c:9082 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: 無法如此指派" -#: subst.c:8802 +#: subst.c:9485 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "未來版本的 shell 會強制以算術替換求值" -#: subst.c:9349 +#: subst.c:10043 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "錯誤的替換: 在 %s 中沒有閉合的「`」" -#: subst.c:10298 +#: subst.c:11070 #, c-format msgid "no match: %s" msgstr "無匹配: %s" @@ -2000,114 +2018,118 @@ msgstr "需要「)」" msgid "`)' expected, found %s" msgstr "需要「)」,得到 %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "%s: 需要一元表示式" -#: test.c:469 test.c:787 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "%s: 需要二元表示式" -#: test.c:869 +#: test.c:875 msgid "missing `]'" msgstr "缺少「]」" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "無效信號數字" -#: trap.c:387 +#: trap.c:320 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "捕捉處理函式:達到最大捕捉處理函式等級 (%d)" + +#: trap.c:408 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: trap_list[%d] 中的錯誤值: %p" -#: trap.c:391 +#: trap.c:412 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: 信號處理是 SIG_DFL,resending %d (%s) to myself" -#: trap.c:447 +#: trap.c:470 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler:不當的信號 %d" -#: variables.c:409 +#: variables.c:412 #, c-format msgid "error importing function definition for `%s'" msgstr "錯誤,輸入的函數定義為「%s」" -#: variables.c:814 +#: variables.c:821 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell 層次 (%d) 太高,重置為 1" -#: variables.c:2413 +#: variables.c:2655 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: 當前作用域中沒有函數語境" -#: variables.c:2432 +#: variables.c:2674 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: 變數不可指派值" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3453 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: 無效的引用變數名" +msgstr "%s:指定數字至名稱參考" -#: variables.c:3940 +#: variables.c:4365 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: 當前作用域中沒有函數語境" -#: variables.c:4218 +#: variables.c:4698 #, c-format msgid "%s has null exportstr" msgstr "%s 有空的 exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4703 variables.c:4712 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%2$s 的 exportstr 中有無效的字元 %1$d" -#: variables.c:4238 +#: variables.c:4718 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s 的 exportstr 中沒有「=」" -#: variables.c:4684 +#: variables.c:5243 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variables 的前端不是函數語境" -#: variables.c:4697 +#: variables.c:5256 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: 沒有 global_variables 語境" -#: variables.c:4772 +#: variables.c:5336 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables 的前端不是臨時環境作用域" -#: variables.c:5619 +#: variables.c:6272 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: 無法做為檔案開啟" -#: variables.c:5624 +#: variables.c:6277 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: 追蹤檔案描述符的值無效" -#: variables.c:5669 +#: variables.c:6322 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: 相容版本數值超出範圍" #: version.c:46 version2.c:46 -#, fuzzy -msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "著作權所有 (C) 2013 自由軟體基金會" +msgid "Copyright (C) 2018 Free Software Foundation, Inc." +msgstr "著作權所有 (C) 2018 自由軟體基金會" #: version.c:47 version2.c:47 msgid "" @@ -2130,22 +2152,22 @@ msgstr "本軟體是自由軟體,您可以自由地更改和重新發布。" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "在法律許可的情況下特此明示,本軟體不提供任何擔保。" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: 無法分配 %lu 位元組 (已分配 %lu 位元組)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: 無法分配 %lu 位元組" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: 無法分配 %lu 位元組 (已分配 %lu 位元組)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: 無法分配 %lu 位元組" @@ -2199,9 +2221,8 @@ msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [名稱[=值] …]" #: builtins.c:80 -#, fuzzy msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] 名稱[=值] …" +msgstr "typeset [-aAfFgilnrtux] [-p] 名稱[=值] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2272,9 +2293,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [工作規格 …] 或 jobs -x 命令 [引數]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [工作規格 …]" +msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" #: builtins.c:134 msgid "" @@ -2349,17 +2369,16 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] 名稱 [名稱 …]" #: builtins.c:171 -#, fuzzy msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [限制]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [模式]" #: builtins.c:177 -msgid "wait [-n] [id ...]" -msgstr "wait [-n] [編號 …]" +msgid "wait [-fn] [id ...]" +msgstr "wait [-fn] [編號 …]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2449,45 +2468,42 @@ msgstr "printf [-v var] 格式 [引數]" #: builtins.c:231 msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-o 選項] [-A 動作] [-G 全域模式] [-W 詞" -"語列表] [-F 函數] [-C 命令] [-X 過濾模式] [-P 字首] [-S 字尾] [名稱 …]" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o 選項] [-A 動作] [-G 全域模式] [-W " +"詞語列表] [-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 字尾] [字詞]" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "compopt [-o|+o 選項] [-DE] [名稱 …]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o 選項] [-DEI] [名稱 …]" #: builtins.c:242 -#, fuzzy msgid "" "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" msgstr "" -"mapfile [-n 計數] [-O 起始序號] [-s 計數] [-t] [-u fd] [-C 回呼] [-c 定量] " -"[陣列]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -"readarray [-n 計數] [-O 起始序號] [-s 計數] [-t] [-u fd] [-C 回呼] [-c 定量] " -"[陣列]" +"readarray [-d 分割符號] [-n 計數] [-O 起始序號] [-s 計數] [-t] [-u fd] [-C 回" +"呼] [-c 定量] [陣列]" #: builtins.c:256 -#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2523,7 +2539,6 @@ msgstr "" " 回傳值為真。" #: builtins.c:278 -#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" @@ -2535,12 +2550,11 @@ msgstr "" "從別名定義列表中刪除每一個 NAME。\n" " \n" " 選項:\n" -" -a\t刪除所有的別名定義。\n" +" -a\t刪除所有的別名定義\n" " \n" " 回傳成功,除非 NAME 不是一個已存在的別名。" #: builtins.c:291 -#, fuzzy msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2659,18 +2673,18 @@ msgid "" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" -" not a shell builtin.." +" not a shell builtin." msgstr "" "執行 shell 內建。\n" " \n" -" 帶引數 ARGs 執行 SHELL-BUILTIN 內建,並且不做命令查詢\n" +" 帶 <參數> 執行 而不做命令查詢\n" " 在希望以 shell 函數的形式來重新實現 shell 內建,\n" -" 並且希望在函數之內執行該 shell 內建的情況下有用處。\n" +" 但需要在函數之內執行該 shell 內建的情況下有用處。\n" " \n" " 退出狀態:\n" -" 以 SHELL-BUILTIN 內建的退出狀態為準,或者如果 SHELL-BUILTIN 不是一個 " -"shell 內建時\n" -" 為假。。" +" 以 的退出狀態為準,或者如果 不是一個 shell 內建" +"時\n" +" 回傳 false。" #: builtins.c:369 msgid "" @@ -2701,7 +2715,6 @@ msgstr "" " 果為 0。" #: builtins.c:387 -#, fuzzy msgid "" "Change the shell working directory.\n" " \n" @@ -2776,7 +2789,6 @@ msgstr "" " 如果目錄變更,或在使用 -P 選項時 $PWD 修改成功時回傳 0,否則非零。" #: builtins.c:425 -#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" @@ -2843,7 +2855,6 @@ msgstr "" " 一律失敗。" #: builtins.c:471 -#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2876,7 +2887,6 @@ msgstr "" " 回傳 COMMAND 命令的回傳狀態,或者當找不到 COMMAND 命令時失敗。" #: builtins.c:490 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2895,11 +2905,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2917,39 +2927,38 @@ msgid "" msgstr "" "設定變數值和屬性。\n" " \n" -" 規格變數並且賦予它們屬性。如果沒用給定名稱,\n" +" 規範變數並且賦予它們屬性。如果沒用給定名稱,\n" " 則顯示所有變數的屬性和值。\n" " \n" " 選項:\n" " -f\t限制動作或顯示為只有函數名稱和定義\n" " -F\t限制僅顯示函數名稱 (以及列號和原始檔名於偵錯時)\n" " -g\t當用於 shell 函數內時建立全域變數 ; 否則忽略\n" -" -p\t顯示每個 NAME 變數的屬性和值\n" +" -p\t顯示每個 <名稱> 變數的屬性和值\n" " \n" " 設定屬性的選項:\n" -" -a\t使 NAME 成為索引陣列 (如果支援)\n" -" -A\t使 NAME 成為關聯陣列 (如果支援)\n" -" -i\t使 NAME 帶有「integer」(整數)屬性\n" -" -l\t將 NAME 在指派時轉為小寫\n" -" -n\t使 NAME 成為指向一個以其值為名稱的變數引用\n" -" -r\t將 NAME 變為唯讀\n" -" -t\t使 NAME 帶有「trace」(追蹤)屬性\n" -" -u\t將 NAME 在指派時轉為大寫\n" -" -x\t將 NAME 匯出\n" +" -a\t使 <名稱> 成為索引陣列 (如果支援)\n" +" -A\t使 <名稱> 成為關聯陣列 (如果支援)\n" +" -i\t使 <名稱> 帶有「integer」(整數)屬性\n" +" -l\t將每個 <名稱> 的值在指派時轉為小寫\n" +" -n\t使 <名稱> 成為指向一個以其值為名稱的變數引用\n" +" -r\t將 <名稱> 變為唯讀\n" +" -t\t使 <名稱> 帶有「trace」(追蹤)屬性\n" +" -u\t將每個 <名稱> 的值在指派時轉為大寫\n" +" -x\t將 <名稱> 匯出\n" " \n" " 用「+」代替「-」會關閉指定選項。\n" " \n" " 帶有整數屬性的變數在指派時將使用算術求值(見\n" " 「let」命令)\n" " \n" -" 在函數中使用時,「declare」使 NAME 成為本地變數,和「local」\n" -" 命令一致。\n" +" 在函數中使用時,「declare」使 <名稱> 成為本地變數,和「local」\n" +" 命令一致。「-g」選項壓制這個行為\n" " \n" " 退出狀態:\n" " 回傳成功除非使用了無效選項或者發生錯誤。" #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2957,7 +2966,7 @@ msgid "" msgstr "" "設定變數的值和屬性。\n" " \n" -" 廢棄。參見「help declare」。" +" 功能相同於「declare」。參見「help declare」。" #: builtins.c:538 msgid "" @@ -3015,6 +3024,12 @@ msgid "" " \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" " \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3047,7 +3062,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功除非有寫入錯誤發生。" -#: builtins.c:591 +#: builtins.c:595 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3069,7 +3084,7 @@ msgstr "" " 退出狀態:\n" " 除非寫錯誤發生,否則回傳成功。" -#: builtins.c:606 +#: builtins.c:610 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3119,7 +3134,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非 NAME 不是一個 shell 內建或者有錯誤發生。" -#: builtins.c:634 +#: builtins.c:638 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3138,7 +3153,7 @@ msgstr "" " 退出狀態:\n" " 以命令的狀態退出,或者在命令為空的情況下回傳成功。" -#: builtins.c:646 +#: builtins.c:650 msgid "" "Parse option arguments.\n" " \n" @@ -3216,8 +3231,7 @@ msgstr "" " 如果一個選項被找到則回傳成功;如果遇到了選項的結尾或者\n" " 有錯誤發生則回傳失敗。" -#: builtins.c:688 -#, fuzzy +#: builtins.c:692 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3256,7 +3270,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功除非 COMMAND 命令沒有找到或者出現一個重定向錯誤。" -#: builtins.c:709 +#: builtins.c:713 msgid "" "Exit the shell.\n" " \n" @@ -3268,7 +3282,7 @@ msgstr "" " 以狀態 N 退出 shell。 如果 N 被省略,則退出狀態\n" " 為最後一個執行命令的退出狀態。" -#: builtins.c:718 +#: builtins.c:722 msgid "" "Exit a login shell.\n" " \n" @@ -3281,7 +3295,7 @@ msgstr "" " 以狀態 N 退出一個登入 shell。如果不在登入 shell 中執行,則\n" " 回傳一個錯誤。" -#: builtins.c:728 +#: builtins.c:732 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3334,7 +3348,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,或者執行命令的狀態;如果錯誤發生則回傳非零。" -#: builtins.c:758 +#: builtins.c:762 msgid "" "Move job to the foreground.\n" " \n" @@ -3354,7 +3368,7 @@ msgstr "" " 退出狀態:\n" " 放至前臺的命令狀態,或者當錯誤發生時為失敗。" -#: builtins.c:773 +#: builtins.c:777 msgid "" "Move jobs to the background.\n" " \n" @@ -3376,8 +3390,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功除非工作管理沒有啟用或者錯誤發生。" -#: builtins.c:787 -#, fuzzy +#: builtins.c:791 msgid "" "Remember or display program locations.\n" " \n" @@ -3421,8 +3434,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非 NAME 命令沒有找到或者使用了無效的選項。" -#: builtins.c:812 -#, fuzzy +#: builtins.c:816 msgid "" "Display information about builtin commands.\n" " \n" @@ -3437,7 +3449,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3461,8 +3473,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非 PATTERN 模式沒有找到或者使用了無效選項。" -#: builtins.c:836 -#, fuzzy +#: builtins.c:840 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3471,7 +3482,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3502,11 +3514,13 @@ msgstr "" " \n" " 選項:\n" " -c\t刪除所有條目從而清空歷史記錄列表。\n" -" -d 偏移量\t從指定位置刪除歷史記錄列表。\n" +" -d 偏移量\t從指定位置刪除歷史記錄列表。負數偏移量會從歷史記錄列表\n" +" \t\t的尾端數回來。\n" " \n" " -a\t將當前會話的歷史記錄列追加到歷史記錄檔案中\n" " -n\t從歷史記錄檔案中讀取所有未被讀取的列\n" -" -r\t讀取歷史記錄檔案並將內容追加到歷史記錄列表中\n" +"\t\t並且將它們追加到歷史列表 -r\t讀取歷史記錄檔案並將內容追加到歷史記錄" +"列表中\n" " -w\t將當前歷史記錄寫入到歷史記錄檔案中,並追加到歷史記錄列表中\n" " \n" " -p\t對每一個 ARG 引數展開歷史記錄並顯示結果,而不儲存到歷史記錄列表中\n" @@ -3522,8 +3536,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者發生錯誤。" -#: builtins.c:872 -#, fuzzy +#: builtins.c:877 msgid "" "Display status of jobs.\n" " \n" @@ -3565,8 +3578,7 @@ msgstr "" " 回傳成功,除非使用了無效的選項或者有錯誤發生。\n" " 如果使用 -x 選項,則回傳 COMMAND 命令的退出狀態。" -#: builtins.c:899 -#, fuzzy +#: builtins.c:904 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3596,8 +3608,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功除非使用了無效的選項或者 JOBSPEC 規格。" -#: builtins.c:918 -#, fuzzy +#: builtins.c:923 msgid "" "Send a signal to a job.\n" " \n" @@ -3637,7 +3648,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者有錯誤發生。" -#: builtins.c:942 +#: builtins.c:947 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3719,8 +3730,7 @@ msgstr "" " 退出狀態:\n" " 如果最後一個 ARG 引數求值為 0,則 let 回傳 1; 否則 let 回傳 0。" -#: builtins.c:987 -#, fuzzy +#: builtins.c:992 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3741,7 +3751,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3786,7 +3796,7 @@ msgstr "" " 選項:\n" " -a array\t將字詞指派給 ARRAY 陣列變數的序列索引成員,從零開始。\n" " -d delim\t持續讀取直到讀入 DELIM 變數中的第一個字元,而不是換列符\n" -" -e\t在互動式 shell 中使用 Readline 獲取列\n" +" -e\t使用 Readline 獲取列\n" " -i text\t使用 TEXT 文字做為 Readline 的初始文字\n" " -n nchars\t讀取 nchars 個字元之後回傳,而不是等到讀取換列符。\n" " \t\t但是分隔符仍然有效,如果遇到分隔符之前讀取了不足 nchars 個字元。\n" @@ -3809,7 +3819,7 @@ msgstr "" " 回傳碼為零,除非遇到了檔案結束符,讀取逾時,或者無效的文\n" " 件描述符做為引數傳遞給了 -u 選項。" -#: builtins.c:1034 +#: builtins.c:1039 msgid "" "Return from a shell function.\n" " \n" @@ -3829,8 +3839,7 @@ msgstr "" " 退出狀態:\n" " 回傳 N,或者如果 shell 不在執行一個函數或引用指令稿時,失敗。" -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1052 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3978,7 +3987,7 @@ msgstr "" " 時候這個標識位預設開啟。\n" " -P 設定之後類似 cd 的會變更當前目錄的命令不\n" " 追蹤符號鏈結。\n" -" -T 設定之後 DEBUG 陷阱會被 shell 函數繼承。\n" +" -T 設定之後 DEBUG 和 RETURN 陷阱會被 shell 函數繼承。\n" " - 任何剩餘的引數會被指派給位置引數。\n" " -x 和 -v 選項已關閉。\n" " \n" @@ -3991,8 +4000,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功除非使用了無效的引數。" -#: builtins.c:1132 -#, fuzzy +#: builtins.c:1137 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4030,7 +4038,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者 NAME 名稱為唯讀。" -#: builtins.c:1154 +#: builtins.c:1159 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4063,8 +4071,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者 NAME 名稱。" -#: builtins.c:1173 -#, fuzzy +#: builtins.c:1178 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4100,7 +4107,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者 NAME 名稱。" -#: builtins.c:1195 +#: builtins.c:1200 msgid "" "Shift positional parameters.\n" " \n" @@ -4118,7 +4125,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非 N 為負或者大於 $#。" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1212 builtins.c:1227 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4140,7 +4147,7 @@ msgstr "" " 退出狀態:\n" " 回傳 FILENAME 檔案中最後一個命令的狀態;如果 FILENAME 檔案不可讀則失敗。" -#: builtins.c:1238 +#: builtins.c:1243 msgid "" "Suspend shell execution.\n" " \n" @@ -4164,8 +4171,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非沒有啟用工作控制或者有錯誤發生。" -#: builtins.c:1254 -#, fuzzy +#: builtins.c:1259 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4319,7 +4325,7 @@ msgstr "" " 如果 EXPR 表示式求值為真則回傳成功;如果 EXPR 表示式求值\n" " 為假或者使用了無效的引數則回傳失敗。" -#: builtins.c:1336 +#: builtins.c:1341 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4331,7 +4337,7 @@ msgstr "" " 是內建命令「test」的同義詞,但是最後一個引數必須是\n" " 字元「]」,以匹配起始的「[」。" -#: builtins.c:1345 +#: builtins.c:1350 msgid "" "Display process times.\n" " \n" @@ -4350,7 +4356,7 @@ msgstr "" " 退出狀態:\n" " 一律成功。" -#: builtins.c:1357 +#: builtins.c:1362 msgid "" "Trap signals and other events.\n" " \n" @@ -4421,8 +4427,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者 SIGSPEC。" -#: builtins.c:1393 -#, fuzzy +#: builtins.c:1398 msgid "" "Display information about command type.\n" " \n" @@ -4474,8 +4479,7 @@ msgstr "" " 退出狀態:\n" " 如果所有的 NAME 命令都找到則回傳成功;任何找不到則失敗。" -#: builtins.c:1424 -#, fuzzy +#: builtins.c:1429 msgid "" "Modify shell resource limits.\n" " \n" @@ -4538,6 +4542,7 @@ msgstr "" " -e\t最高的排程優先順序 (「nice」)\n" " -f\t有 shell 及其子行程可以寫入的最大檔案尺寸\n" " -i\t最多可以懸置的訊號數\n" +" -k\t為這個進程所分配的最大 kqueues 數量\n" " -l\t一個行程可以鎖定的最大記憶體尺寸\n" " -m\t最大的記憶體進駐尺寸\n" " -n\t最多開啟的檔案描述符個數\n" @@ -4545,6 +4550,7 @@ msgstr "" " -q\tPOSIX 資訊佇列的最大位元組數\n" " -r\t實時排程的最大優先順序\n" " -s\t最大堆疊尺寸\n" +" -P\t偽終端的最大數量\n" " -t\t最大的 CPU 時間,以秒為單位\n" " -u\t最大使用者行程數\n" " -v\t虛擬記憶體尺寸\n" @@ -4564,7 +4570,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者錯誤發生。" -#: builtins.c:1474 +#: builtins.c:1479 msgid "" "Display or set file mode mask.\n" " \n" @@ -4596,7 +4602,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的 MODE 模式或者選項。" -#: builtins.c:1494 +#: builtins.c:1499 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4604,13 +4610,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4624,10 +4632,13 @@ msgstr "" " \n" " 若給定了 -n 選項,等待下一個工作完成並回傳其狀態。\n" " \n" +" 如果給定了 -f 選項且啟用工作管理,則等待指定 ID 終止,而非\n" +" 等到其變更狀態。\n" +" \n" " 退出狀態:\n" " 回傳最後一個 ID 行程的狀態;如果使用了無效的 ID 或者選項則失敗。" -#: builtins.c:1515 +#: builtins.c:1523 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4650,7 +4661,7 @@ msgstr "" " 回傳行程 ID 的狀態;如果 PID 是無效的行程識別號或者指定了無效的選項則失" "敗。" -#: builtins.c:1530 +#: builtins.c:1538 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4671,7 +4682,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後執行命令的狀態。" -#: builtins.c:1544 +#: builtins.c:1552 msgid "" "Arithmetic for loop.\n" " \n" @@ -4701,7 +4712,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後執行命令的狀態。" -#: builtins.c:1562 +#: builtins.c:1570 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4734,7 +4745,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1583 +#: builtins.c:1591 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4762,7 +4773,7 @@ msgstr "" " 退出狀態:\n" " 回傳狀態即 PIPELINE 的回傳狀態。" -#: builtins.c:1600 +#: builtins.c:1608 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4780,7 +4791,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1612 +#: builtins.c:1620 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4811,7 +4822,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1629 +#: builtins.c:1637 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4829,7 +4840,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1641 +#: builtins.c:1649 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4847,8 +4858,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1661 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4868,9 +4878,9 @@ msgstr "" " 預設的 NAME 是「COPROC」。\n" " \n" " 退出狀態:\n" -" 回傳 COMMAND 命令的退出狀態。" +" coprc 指令回傳離開代碼 0。" -#: builtins.c:1667 +#: builtins.c:1675 msgid "" "Define shell function.\n" " \n" @@ -4893,7 +4903,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功除非 NAME 為唯讀。" -#: builtins.c:1681 +#: builtins.c:1689 msgid "" "Group commands as a unit.\n" " \n" @@ -4911,7 +4921,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1693 +#: builtins.c:1701 msgid "" "Resume job in foreground.\n" " \n" @@ -4935,7 +4945,7 @@ msgstr "" " 退出狀態:\n" " 回傳被繼續的工作狀態。" -#: builtins.c:1708 +#: builtins.c:1716 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4953,7 +4963,7 @@ msgstr "" " 退出狀態:\n" " 如果表示式求值為 0 則回傳 1;否則回傳 0。" -#: builtins.c:1720 +#: builtins.c:1728 msgid "" "Execute conditional command.\n" " \n" @@ -5001,7 +5011,7 @@ msgstr "" " 退出狀態:\n" " 根據 EXPRESSION 的值為 0 或 1。" -#: builtins.c:1746 +#: builtins.c:1754 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5096,8 +5106,7 @@ msgstr "" " HISTIGNORE\t用於決定哪些命令被存入歷史記錄檔案的模式\n" " \t\t列表,以冒號分隔。\n" -#: builtins.c:1803 -#, fuzzy +#: builtins.c:1811 msgid "" "Add directories to stack.\n" " \n" @@ -5127,9 +5136,9 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" -"從堆疊中刪除目錄。\n" +"從堆疊中建立目錄。\n" " \n" -" 從目錄堆疊中刪除條目。不帶引數時,刪除堆疊頂端目錄,並變更至新的堆疊\n" +" 從目錄堆疊中建立條目。不帶引數時,建立堆疊頂端目錄,並變更至新的堆疊\n" " 頂端目錄。\n" " \n" " 選項:\n" @@ -5148,8 +5157,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的引數或者目錄變換失敗。" -#: builtins.c:1837 -#, fuzzy +#: builtins.c:1845 msgid "" "Remove directories from stack.\n" " \n" @@ -5196,8 +5204,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的引數或者目錄變換失敗。" -#: builtins.c:1867 -#, fuzzy +#: builtins.c:1875 msgid "" "Display directory stack.\n" " \n" @@ -5246,14 +5253,13 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者發生錯誤。" -#: builtins.c:1898 +#: builtins.c:1906 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5268,9 +5274,9 @@ msgid "" msgstr "" "設定和取消設定 shell 選項。\n" " \n" -" 變更每個 shell 選項 OPTNAME 的設定。不帶引數\n" -" 時,列出所有 shell 選項並標註每一個選項是否被\n" -" 設定。\n" +" 變更每個 shell <選項名稱> 的設定。不帶選項引數時,\n" +" 顯示每個提供的 <選項名稱> 或所有 shell 選項 (如果沒有\n" +" 傳入任何 <選項名稱>) 和是否每個都有設定到的指示。\n" " \n" " 選項:\n" " -o\t限制 OPTNAME 為定義用於「set -o」的選項\n" @@ -5283,8 +5289,7 @@ msgstr "" " 如果 OPTNAME 選項被啟用則回傳成功;如果是\n" " 無效的選項或 OPTNAME 被停用則失敗。" -#: builtins.c:1919 -#, fuzzy +#: builtins.c:1927 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5335,11 +5340,11 @@ msgstr "" "、 \n" " %b\t擴充套件對應引數中的反斜線逸出序列\n" " %q\t以可做為 shell 輸入的格式引用引數\n" -" \n" +" %(fmt)T\t以 FMT 為提供 strftime(3) 的格式輸出日期與時間字串 \n" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者發生寫入或指派錯誤。" -#: builtins.c:1953 +#: builtins.c:1961 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5358,33 +5363,38 @@ msgid "" " \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" " \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" " \n" " When completion is attempted, the actions are applied in the order the\n" -" uppercase-letter options are listed above. The -D option takes\n" -" precedence over -E.\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -"規格 readline 如何完成讀取引數。\n" +"規範 readline 如何完成讀取引數。\n" " \n" -" 規格對於每一個 NAME 名稱如何完成讀取引數。如果不帶選項,\n" +" 規格對於每一個<名稱>如何完成讀取引數。如果不帶選項,\n" " 現有的補完規格會以可以重用為輸入的格式印出。\n" " \n" " 選項:\n" " -p\t以可重用的格式印出現有的補完規格。\n" -" -r\t對於每個 NAME 名稱刪除補完規格,或者如果沒有提供 NAME\n" +" -r\t對於每個<名稱>刪除補完規格,或者如果沒有提供<名稱>\n" " \t名稱,刪除所有的補完規格。\n" " -D\t對於沒有補完規格定義的命令,設定預設的補完動作\n" " -E\t對於「empty」命令設定補完動作,—— 對於空列的補完。\n" +" -I\t套用補完和動作到首個 (通常是指令) 單詞\n" " \n" -" 嘗試補完時,按照上述大寫字母選項的順序進行動作。-D 選項優先\n" -" 級高於 -E 選項。\n" +" 嘗試補完時,按照上述大寫字母選項的順序進行動作。 如果傳入了多個選項,\n" +" -D 選項優先於 -E 選項,而兩者優先於 -I 選項。\n" " \n" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者錯誤發生。" -#: builtins.c:1981 +#: builtins.c:1991 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5405,7 +5415,7 @@ msgstr "" " 退出狀態:\n" " 除非使用了無效選項或者錯誤發生,否則回傳成功。" -#: builtins.c:1996 +#: builtins.c:2006 msgid "" "Modify or display completion options.\n" " \n" @@ -5420,6 +5430,7 @@ msgid "" " \t-o option\tSet completion option OPTION for each NAME\n" " \t-D\t\tChange options for the \"default\" command completion\n" " \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" " \n" " Using `+o' instead of `-o' turns off the specified option.\n" " \n" @@ -5445,6 +5456,7 @@ msgstr "" " \t-o option\t為每個 NAME 名稱設定補完選項 option\n" " \t-D\t\t為「default」命令補完變更選項\n" " \t-E\t\t為「empty」命令補完變更選項\n" +" \t-I\t\t為首單詞上的補完變更選項\n" " \n" " 使用「+o」而不是「-o」可以關閉指定的選項。\n" " \n" @@ -5457,8 +5469,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者 NAME 名稱沒有定義補完規格。" -#: builtins.c:2026 -#, fuzzy +#: builtins.c:2037 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5505,6 +5516,7 @@ msgstr "" " 從檔案描述符 FD 中讀取。MAPFILE 變數是預設的 ARRAY 變數。\n" " \n" " 選項:\n" +" -d delim\t使用 DELIM 取代換行符號來斷行\n" " -n count\t最多複製 COUNT 列,如果 COUNT 為 0,則複製所有列。\n" " -O origin\t從索引 ORIGIN 開始 指派給 ARRAY 變數。預設索引是 0。\n" " -s count \t丟棄最先讀取的 COUNT 列。\n" @@ -5524,7 +5536,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項,或者 ARRAY 變數唯讀或不是索引陣列。" -#: builtins.c:2062 +#: builtins.c:2073 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5534,9 +5546,8 @@ msgstr "" " \n" " 一個「mapfile」的同義詞。" -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "著作權所有 (C) 2013 自由軟體基金會" +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "著作權所有 (C) 2013 自由軟體基金會。" #~ msgid ":" #~ msgstr ":" @@ -5550,9 +5561,6 @@ msgstr "" #~ msgid "times" #~ msgstr "times" -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "著作權所有 (C) 2013 自由軟體基金會。" - #~ msgid "requesting resize" #~ msgstr "要求調整" diff --git a/print_cmd.c b/print_cmd.c index 5a1ec5f17..9aa6557dd 100644 --- a/print_cmd.c +++ b/print_cmd.c @@ -1,6 +1,6 @@ /* print_command -- A way to make readable commands from a command tree. */ -/* Copyright (C) 1989-2016 Free Software Foundation, Inc. +/* Copyright (C) 1989-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -38,6 +38,8 @@ #include "bashansi.h" #include "bashintl.h" +#define NEED_XTRACE_SET_DECL + #include "shell.h" #include "flags.h" #include /* use <...> so we pick it up from the build directory */ @@ -51,9 +53,6 @@ extern int printf __P((const char *, ...)); /* Yuck. Double yuck. */ #endif -extern int indirection_level; -extern int posixly_correct; - static int indentation; static int indentation_amount = 4; @@ -83,6 +82,7 @@ static void print_redirection __P((REDIRECT *)); static void print_heredoc_header __P((REDIRECT *)); static void print_heredoc_body __P((REDIRECT *)); static void print_heredocs __P((REDIRECT *)); +static void print_heredoc_bodies __P((REDIRECT *)); static void print_deferred_heredocs __P((const char *)); static void print_for_command __P((FOR_COM *)); @@ -515,11 +515,10 @@ xtrace_print_assignment (name, value, assign_list, xflags) fflush (xtrace_fp); } -/* A function to print the words of a simple command when set -x is on. Also - used to print the word list in a for or select command header; in that case, - we suppress quoting the words because they haven't been expanded yet. - XTFLAGS&1 means to print $PS4; XTFLAGS&2 means to suppress quoting the - words in LIST. */ +/* A function to print the words of a simple command when set -x is on. Also used to + print the word list in a for or select command header; in that case, we suppress + quoting the words because they haven't been expanded yet. XTFLAGS&1 means to + print $PS4; XTFLAGS&2 means to suppress quoting the words in LIST. */ void xtrace_print_word_list (list, xtflags) WORD_LIST *list; @@ -981,34 +980,38 @@ print_heredocs (heredocs) was_heredoc = 1; } +static void +print_heredoc_bodies (heredocs) + REDIRECT *heredocs; +{ + REDIRECT *hdtail; + + cprintf ("\n"); + for (hdtail = heredocs; hdtail; hdtail = hdtail->next) + { + print_heredoc_body (hdtail); + cprintf ("\n"); + } + was_heredoc = 1; +} + /* Print heredocs that are attached to the command before the connector represented by CSTRING. The parsing semantics require us to print the here-doc delimiters, then the connector (CSTRING), then the here-doc - bodies. We don't print the connector if it's a `;', but we use it to - note not to print an extra space after the last heredoc body and - newline. */ + bodies. We print the here-doc delimiters in print_redirection_list + and print the connector and the bodies here. We don't print the connector + if it's a `;', but we use it to note not to print an extra space after the + last heredoc body and newline. */ static void print_deferred_heredocs (cstring) const char *cstring; { - REDIRECT *hdtail; - - for (hdtail = deferred_heredocs; hdtail; hdtail = hdtail->next) - { - cprintf (" "); - print_heredoc_header (hdtail); - } + /* We now print the heredoc headers in print_redirection_list */ if (cstring && cstring[0] && (cstring[0] != ';' || cstring[1])) cprintf ("%s", cstring); - if (deferred_heredocs) - cprintf ("\n"); - for (hdtail = deferred_heredocs; hdtail; hdtail = hdtail->next) - { - print_heredoc_body (hdtail); - cprintf ("\n"); - } if (deferred_heredocs) { + print_heredoc_bodies (deferred_heredocs); if (cstring && cstring[0] && (cstring[0] != ';' || cstring[1])) cprintf (" "); /* make sure there's at least one space */ dispose_redirects (deferred_heredocs); @@ -1030,12 +1033,15 @@ print_redirection_list (redirects) was_heredoc = 0; while (redirects) { - /* Defer printing the here documents until we've printed the - rest of the redirections. */ + /* Defer printing the here document bodiess until we've printed the rest of the + redirections, but print the headers in the order they're given. */ if (redirects->instruction == r_reading_until || redirects->instruction == r_deblank_reading_until) { newredir = copy_redirect (redirects); newredir->next = (REDIRECT *)NULL; + + print_heredoc_header (newredir); + if (heredocs) { hdtail->next = newredir; @@ -1062,12 +1068,13 @@ print_redirection_list (redirects) } /* Now that we've printed all the other redirections (on one line), - print the here documents. */ + print the here documents. If we're printing a connection, we wait until + we print the connector symbol, then we print the here document bodies */ if (heredocs && printing_connection) deferred_heredocs = heredocs; else if (heredocs) { - print_heredocs (heredocs); + print_heredoc_bodies (heredocs); dispose_redirects (heredocs); } } @@ -1410,8 +1417,7 @@ named_function_string (name, command, flags) } #else if (result[2] == '\n') /* XXX -- experimental */ - memmove (result + 2, result + 3, strlen (result) - 2); - + memmove (result + 2, result + 3, strlen (result) - 2); #endif } @@ -1471,7 +1477,7 @@ cprintf (control, va_alist) #endif { register const char *s; - char char_arg[2], *argp, intbuf[INT_STRLEN_BOUND (int) + 1]; + char char_arg[2], *argp, intbuf[INT_STRLEN_BOUND (unsigned int) + 1]; int digit_arg, arg_len, c; va_list args; @@ -1516,7 +1522,7 @@ cprintf (control, va_alist) digit_arg = va_arg (args, int); if (digit_arg < 0) { - sprintf (intbuf, "%u", (unsigned)-1); + sprintf (intbuf, "%u", (unsigned int)-1); argp = intbuf; } else diff --git a/redir.c b/redir.c index 1858b0b08..0c0c9f2ba 100644 --- a/redir.c +++ b/redir.c @@ -1,6 +1,6 @@ /* redir.c -- Functions to perform input and output redirection. */ -/* Copyright (C) 1997-2015 Free Software Foundation, Inc. +/* Copyright (C) 1997-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -62,9 +62,6 @@ extern int errno; int expanding_redir; -extern int posixly_correct; -extern int last_command_exit_value; -extern int executing_builtin; extern REDIRECT *redirection_undo_list; extern REDIRECT *exec_redirection_undo_list; @@ -157,7 +154,6 @@ redirection_error (temp, error) #endif else if (expandable_redirection_filename (temp)) { -expandable_filename: oflags = temp->redirectee.filename->flags; if (posixly_correct && interactive_shell == 0) temp->redirectee.filename->flags |= W_NOGLOB; @@ -469,6 +465,7 @@ here_document_to_fd (redirectee, ri) return (fd); } + fchmod (fd, S_IRUSR | S_IWUSR); SET_CLOSE_ON_EXEC (fd); errno = r = 0; /* XXX */ @@ -512,6 +509,8 @@ here_document_to_fd (redirectee, ri) } free (filename); + + fchmod (fd2, S_IRUSR); return (fd2); } @@ -582,6 +581,10 @@ redir_special_open (spec, filename, flags, mode, ri) #if defined (NETWORK_REDIRECTIONS) case RF_DEVTCP: case RF_DEVUDP: +#if defined (RESTRICTED_SHELL) + if (restricted) + return (RESTRICTED_REDIRECT); +#endif #if defined (HAVE_NETWORK) fd = netopen (filename); #else @@ -775,6 +778,8 @@ do_redirection_internal (redirect, flags) case r_move_output_word: new_redirect = make_redirection (sd, r_move_output, rd, 0); break; + default: + break; /* shut up gcc */ } } else if (ri == r_duplicating_output_word && (redirect->rflags & REDIR_VARASSIGN) == 0 && redirector == 1) @@ -854,7 +859,7 @@ do_redirection_internal (redirect, flags) fd = redir_open (redirectee_word, redirect->flags, 0666, ri); free (redirectee_word); - if (fd == NOCLOBBER_REDIRECT) + if (fd == NOCLOBBER_REDIRECT || fd == RESTRICTED_REDIRECT) return (fd); if (fd < 0) @@ -1142,9 +1147,12 @@ do_redirection_internal (redirect, flags) r = 0; /* XXX - only if REDIR_VARASSIGN not set? */ - if ((flags & RX_UNDOABLE) && (fcntl (redirector, F_GETFD, 0) != -1)) + if (flags & RX_UNDOABLE) { - r = add_undo_redirect (redirector, ri, -1); + if (fcntl (redirector, F_GETFD, 0) != -1) + r = add_undo_redirect (redirector, ri, -1); + else + r = add_undo_close_redirect (redirector); REDIRECTION_ERROR (r, errno, redirector); } @@ -1169,6 +1177,8 @@ do_redirection_internal (redirect, flags) case r_duplicating_input_word: case r_duplicating_output_word: + case r_move_input_word: + case r_move_output_word: break; } return (0); @@ -1328,6 +1338,10 @@ stdin_redirection (ri, redirector) case r_append_err_and_out: case r_output_force: case r_duplicating_output_word: + case r_move_input: + case r_move_output: + case r_move_input_word: + case r_move_output_word: return (0); } return (0); @@ -1384,7 +1398,7 @@ redir_varvalue (redir) #if defined (ARRAY_VARS) if (vr = valid_array_reference (w, 0)) { - v = array_variable_part (w, &sub, &len); + v = array_variable_part (w, 0, &sub, &len); } else #endif @@ -1398,7 +1412,7 @@ redir_varvalue (redir) { w = nameref_cell (v); if (vr = valid_array_reference (w, 0)) - v = array_variable_part (w, &sub, &len); + v = array_variable_part (w, 0, &sub, &len); else v = find_variable (w); } diff --git a/shell.c b/shell.c index 45b77f9ea..a2b2a55e0 100644 --- a/shell.c +++ b/shell.c @@ -1,6 +1,6 @@ /* shell.c -- GNU's idea of the POSIX shell specification. */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -51,6 +51,7 @@ #define NEED_SH_SETLINEBUF_DECL /* used in externs.h */ #include "shell.h" +#include "parser.h" #include "flags.h" #include "trap.h" #include "mailcheck.h" @@ -60,6 +61,7 @@ #if defined (JOB_CONTROL) #include "jobs.h" #else +extern int running_in_background; extern int initialize_job_control __P((int)); extern int get_tty_state __P((void)); #endif /* JOB_CONTROL */ @@ -101,22 +103,12 @@ extern int errno; extern char **environ; /* used if no third argument to main() */ #endif -extern char *dist_version, *release_status; -extern int patch_level, build_version; -extern int shell_level; -extern int subshell_environment; -extern int running_in_background; -extern int last_command_exit_value; -extern int line_number; -extern int expand_aliases; -extern int array_needs_making; extern int gnu_error_format; -extern char *primary_prompt, *secondary_prompt; -extern char *this_command_name; /* Non-zero means that this shell has already been run; i.e. you should call shell_reinitialize () if you need to start afresh. */ int shell_initialized = 0; +int bash_argv_initialized = 0; COMMAND *global_command = (COMMAND *)NULL; @@ -232,6 +224,8 @@ int dump_po_strings; /* Dump strings in $"..." in po format */ int wordexp_only = 0; /* Do word expansion only */ int protected_mode = 0; /* No command substitution with --wordexp */ +int pretty_print_mode = 0; /* pretty-print a shell script */ + #if defined (STRICT_POSIX) int posixly_correct = 1; /* Non-zero means posix.2 superset. */ #else @@ -260,6 +254,7 @@ static const struct { { "noprofile", Int, &no_profile, (char **)0x0 }, { "norc", Int, &no_rc, (char **)0x0 }, { "posix", Int, &posixly_correct, (char **)0x0 }, + { "pretty-print", Int, &pretty_print_mode, (char **)0x0 }, #if defined (WORDEXP_OPTION) { "protected", Int, &protected_mode, (char **)0x0 }, #endif @@ -297,6 +292,7 @@ int want_pending_command; /* -c flag supplied */ /* This variable is not static so it can be bound to $BASH_EXECUTION_STRING */ char *command_execution_string; /* argument to -c option */ +char *shell_script_filename; /* shell script */ int malloc_trace_at_exit = 0; @@ -433,7 +429,7 @@ main (argc, argv, env) arg_index = 1; if (arg_index > argc) arg_index = argc; - command_execution_string = (char *)NULL; + command_execution_string = shell_script_filename = (char *)NULL; want_pending_command = locally_skip_execution = read_from_stdin = 0; default_input = stdin; #if defined (BUFFERED_INPUT) @@ -584,7 +580,7 @@ main (argc, argv, env) */ if (interactive_shell) { - char *term, *emacs, *inside_emacs;; + char *term, *emacs, *inside_emacs; int emacs_term, in_emacs; term = get_string_value ("TERM"); @@ -673,6 +669,22 @@ main (argc, argv, env) restricted = 0; #endif + /* Set positional parameters before running startup files. top_level_arg_index + holds the index of the current argument before setting the positional + parameters, so any changes performed in the startup files won't affect + later option processing. */ + if (wordexp_only) + ; /* nothing yet */ + else if (command_execution_string) + arg_index = bind_args (argv, arg_index, argc, 0); /* $0 ... $n */ + else if (arg_index != argc && read_from_stdin == 0) + { + shell_script_filename = argv[arg_index++]; + arg_index = bind_args (argv, arg_index, argc, 1); /* $1 ... $n */ + } + else + arg_index = bind_args (argv, arg_index, argc, 1); /* $1 ... $n */ + /* The startup files are run with `set -e' temporarily disabled. */ if (locally_skip_execution == 0 && running_setuid == 0) { @@ -703,7 +715,7 @@ main (argc, argv, env) if (wordexp_only) { startup_state = 3; - last_command_exit_value = run_wordexp (argv[arg_index]); + last_command_exit_value = run_wordexp (argv[top_level_arg_index]); exit_shell (last_command_exit_value); } #endif @@ -713,7 +725,6 @@ main (argc, argv, env) if (command_execution_string) { - arg_index = bind_args (argv, arg_index, argc, 0); startup_state = 2; if (debugging_mode) @@ -731,11 +742,8 @@ main (argc, argv, env) /* Get possible input filename and set up default_buffered_input or default_input as appropriate. */ - if (arg_index != argc && read_from_stdin == 0) - { - open_shell_script (argv[arg_index]); - arg_index++; - } + if (shell_script_filename) + open_shell_script (shell_script_filename); else if (interactive == 0) { /* In this mode, bash is reading a script from stdin, which is a @@ -747,16 +755,13 @@ main (argc, argv, env) #endif /* !BUFFERED_INPUT */ read_from_stdin = 1; } - else if (arg_index == argc) + else if (top_level_arg_index == argc) /* arg index before startup files */ /* "If there are no operands and the -c option is not specified, the -s option shall be assumed." */ read_from_stdin = 1; set_bash_input (); - /* Bind remaining args to $1 ... $n */ - arg_index = bind_args (argv, arg_index, argc, 1); - if (debugging_mode && locally_skip_execution == 0 && running_setuid == 0 && (reading_shell_script || interactive_shell == 0)) start_debugger (); @@ -788,6 +793,14 @@ main (argc, argv, env) shell_initialized = 1; + if (pretty_print_mode && interactive_shell) + { + internal_warning (_("pretty-printing mode ignored in interactive shells")); + pretty_print_mode = 0; + } + if (pretty_print_mode) + exit_shell (pretty_print_loop ()); + /* Read commands until exit condition. */ reader_loop (); exit_shell (last_command_exit_value); @@ -999,7 +1012,7 @@ sh_exit (s) int s; { #if defined (MALLOC_DEBUG) && defined (USING_BASH_MALLOC) - if (malloc_trace_at_exit) + if (malloc_trace_at_exit && (subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)) == 0) trace_malloc_stats (get_name_for_error (), (char *)NULL); /* mlocation_write_table (); */ #endif @@ -1236,6 +1249,10 @@ maybe_make_restricted (name) temp++; if (restricted || (STREQ (temp, RESTRICTED_SHELL_NAME))) { +#if defined (RBASH_STATIC_PATH_VALUE) + bind_variable ("PATH", RBASH_STATIC_PATH_VALUE, 0); + stupidly_hack_special_variables ("PATH"); /* clear hash table */ +#endif set_var_read_only ("PATH"); set_var_read_only ("SHELL"); set_var_read_only ("ENV"); @@ -1406,13 +1423,21 @@ bind_args (argv, arg_start, arg_end, start_index) int arg_start, arg_end, start_index; { register int i; - WORD_LIST *args; + WORD_LIST *args, *tl; + + for (i = arg_start, args = tl = (WORD_LIST *)NULL; i < arg_end; i++) + { + if (args == 0) + args = tl = make_word_list (make_word (argv[i]), args); + else + { + tl->next = make_word_list (make_word (argv[i]), (WORD_LIST *)NULL); + tl = tl->next; + } + } - for (i = arg_start, args = (WORD_LIST *)NULL; i < arg_end; i++) - args = make_word_list (make_word (argv[i]), args); if (args) { - args = REVERSE_LIST (args, WORD_LIST *); if (start_index == 0) /* bind to $0...$n for sh -c command */ { /* Posix.2 4.56.3 says that the first argument after sh -c command @@ -1421,12 +1446,23 @@ bind_args (argv, arg_start, arg_end, start_index) FREE (dollar_vars[0]); dollar_vars[0] = savestring (args->word->word); remember_args (args->next, 1); - push_args (args->next); /* BASH_ARGV and BASH_ARGC */ + if (debugging_mode) + { + push_args (args->next); /* BASH_ARGV and BASH_ARGC */ + bash_argv_initialized = 1; + } } else /* bind to $1...$n for shell script */ { remember_args (args, 1); - push_args (args); /* BASH_ARGV and BASH_ARGC */ + /* We do this unconditionally so something like -O extdebug doesn't + do it first. We're setting the definitive positional params + here. */ + if (debugging_mode) + { + push_args (args); /* BASH_ARGV and BASH_ARGC */ + bash_argv_initialized = 1; + } } dispose_words (args); @@ -1504,6 +1540,9 @@ open_shell_script (script_name) { e = errno; file_error (filename); +#if defined (JOB_CONTROL) + end_job_control (); /* just in case we were run as bash -i script */ +#endif sh_exit ((e == ENOENT) ? EX_NOTFOUND : EX_NOINPUT); } @@ -1523,6 +1562,9 @@ open_shell_script (script_name) errno = EINVAL; #endif file_error (filename); +#if defined (JOB_CONTROL) + end_job_control (); /* just in case we were run as bash -i script */ +#endif sh_exit (EX_NOINPUT); } @@ -1571,11 +1613,17 @@ open_shell_script (script_name) errno = e; file_error (filename); } +#if defined (JOB_CONTROL) + end_job_control (); /* just in case we were run as bash -i script */ +#endif exit (EX_NOEXEC); } else if (sample_len > 0 && (check_binary_file (sample, sample_len))) { internal_error (_("%s: cannot execute binary file"), filename); +#if defined (JOB_CONTROL) + end_job_control (); /* just in case we were run as bash -i script */ +#endif exit (EX_BINARY_FILE); } /* Now rewind the file back to the beginning. */ @@ -1722,6 +1770,7 @@ init_interactive () interactive = 1; #if defined (HISTORY) remember_on_history = enable_history_list = 1; /* XXX */ + histexp_flag = history_expansion; /* XXX */ #endif } @@ -1889,6 +1938,7 @@ shell_reinitialize () forced_interactive = interactive_shell = 0; subshell_environment = running_in_background = 0; expand_aliases = 0; + bash_argv_initialized = 0; /* XXX - should we set jobs_m_flag to 0 here? */ @@ -1939,7 +1989,11 @@ show_shell_usage (fp, extra) for (i = 0, set_opts = 0; shell_builtins[i].name; i++) if (STREQ (shell_builtins[i].name, "set")) - set_opts = savestring (shell_builtins[i].short_doc); + { + set_opts = savestring (shell_builtins[i].short_doc); + break; + } + if (set_opts) { s = strchr (set_opts, '['); diff --git a/shell.h b/shell.h index ce0887910..807260523 100644 --- a/shell.h +++ b/shell.h @@ -72,6 +72,7 @@ extern int EOF_Reached; #define EX_REDIRFAIL 259 /* redirection failed */ #define EX_BADASSIGN 260 /* variable assignment error */ #define EX_EXPFAIL 261 /* word expansion failed */ +#define EX_DISKFALLBACK 262 /* fall back to disk command from builtin */ /* Flag values that control parameter pattern substitution. */ #define MATCH_ANY 0x000 @@ -90,14 +91,43 @@ extern char **shell_environment; extern WORD_LIST *rest_of_args; /* Generalized global variables. */ +extern char *command_execution_string; + extern int debugging_mode; extern int executing, login_shell; extern int interactive, interactive_shell; extern int startup_state; +extern int reading_shell_script; +extern int shell_initialized; +extern int bash_argv_initialized; extern int subshell_environment; +extern int current_command_number; +extern int indirection_level; extern int shell_compatibility_level; +extern int running_under_emacs; + +extern int posixly_correct; +extern int no_line_editing; + +extern char *shell_name; +extern char *current_host_name; + +extern int subshell_argc; +extern char **subshell_argv; +extern char **subshell_envp; + +/* variables managed using shopt */ +extern int hup_on_exit; +extern int check_jobs_at_exit; +extern int autocd; +extern int check_window_size; + +/* from version.c */ +extern int build_version, patch_level; +extern char *dist_version, *release_status; extern int locale_mb_cur_max; +extern int locale_utf8locale; /* Structure to pass around that holds a bitmap of file descriptors to close, and the size of that structure. Used in execute_cmd.c. */ diff --git a/sig.c b/sig.c index e5bb73997..f8a0e0f70 100644 --- a/sig.c +++ b/sig.c @@ -1,6 +1,6 @@ /* sig.c - interface for shell signal handlers and signal initialization. */ -/* Copyright (C) 1994-2015 Free Software Foundation, Inc. +/* Copyright (C) 1994-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -35,6 +35,7 @@ #include "bashintl.h" #include "shell.h" +#include "execute_cmd.h" #if defined (JOB_CONTROL) #include "jobs.h" #endif /* JOB_CONTROL */ @@ -54,22 +55,6 @@ # include "bashhist.h" #endif -extern int last_command_exit_value; -extern int last_command_exit_signal; -extern int return_catch_flag; -extern int running_trap; -extern int loop_level, continuing, breaking, funcnest; -extern int executing_list; -extern int comsub_ignore_return; -extern int parse_and_execute_level, shell_initialized; -#if defined (HISTORY) -extern int history_lines_this_session; -#endif -extern int no_line_editing; -extern int wait_signal_received; -extern int wait_intr_flag; -extern sh_builtin_func_t *this_shell_builtin; - extern void initialize_siglist (); #if !defined (JOB_CONTROL) @@ -128,6 +113,7 @@ struct termsig { int signum; SigHandler *orig_handler; int orig_flags; + int core_dump; }; #define NULL_HANDLER (SigHandler *)SIG_DFL @@ -145,15 +131,15 @@ static struct termsig terminating_signals[] = { #endif #ifdef SIGILL -{ SIGILL, NULL_HANDLER, 0 }, +{ SIGILL, NULL_HANDLER, 0, 1}, #endif #ifdef SIGTRAP -{ SIGTRAP, NULL_HANDLER, 0 }, +{ SIGTRAP, NULL_HANDLER, 0, 1 }, #endif #ifdef SIGIOT -{ SIGIOT, NULL_HANDLER, 0 }, +{ SIGIOT, NULL_HANDLER, 0, 1 }, #endif #ifdef SIGDANGER @@ -165,19 +151,19 @@ static struct termsig terminating_signals[] = { #endif #ifdef SIGFPE -{ SIGFPE, NULL_HANDLER, 0 }, +{ SIGFPE, NULL_HANDLER, 0, 1 }, #endif #ifdef SIGBUS -{ SIGBUS, NULL_HANDLER, 0 }, +{ SIGBUS, NULL_HANDLER, 0, 1 }, #endif #ifdef SIGSEGV -{ SIGSEGV, NULL_HANDLER, 0 }, +{ SIGSEGV, NULL_HANDLER, 0, 1 }, #endif #ifdef SIGSYS -{ SIGSYS, NULL_HANDLER, 0 }, +{ SIGSYS, NULL_HANDLER, 0, 1 }, #endif #ifdef SIGPIPE @@ -192,12 +178,14 @@ static struct termsig terminating_signals[] = { { SIGTERM, NULL_HANDLER, 0 }, #endif +/* These don't generate core dumps on anything but Linux, but we're doing + this just for Linux anyway. */ #ifdef SIGXCPU -{ SIGXCPU, NULL_HANDLER, 0 }, +{ SIGXCPU, NULL_HANDLER, 0, 1 }, #endif #ifdef SIGXFSZ -{ SIGXFSZ, NULL_HANDLER, 0 }, +{ SIGXFSZ, NULL_HANDLER, 0, 1 }, #endif #ifdef SIGVTALRM @@ -228,6 +216,7 @@ static struct termsig terminating_signals[] = { #define XSIG(x) (terminating_signals[x].signum) #define XHANDLER(x) (terminating_signals[x].orig_handler) #define XSAFLAGS(x) (terminating_signals[x].orig_flags) +#define XCOREDUMP(x) (terminating_signals[x].core_dump) static int termsigs_initialized = 0; @@ -279,7 +268,6 @@ initialize_terminating_signals () sigaction (XSIG (i), &oact, (struct sigaction *)NULL); #endif /* SIGPROF && !_MINIX */ } - #else /* !HAVE_POSIX_SIGNALS */ for (i = 0; i < TERMSIGS_LENGTH; i++) @@ -375,7 +363,6 @@ reset_terminating_signals () termsigs_initialized = 0; } -#undef XSIG #undef XHANDLER /* Run some of the cleanups that should be performed when we run @@ -386,7 +373,7 @@ top_level_cleanup () { /* Clean up string parser environment. */ while (parse_and_execute_level) - parse_and_execute_cleanup (); + parse_and_execute_cleanup (-1); #if defined (PROCESS_SUBSTITUTION) unlink_fifo_list (); @@ -424,7 +411,7 @@ throw_to_top_level () /* Clean up string parser environment. */ while (parse_and_execute_level) - parse_and_execute_cleanup (); + parse_and_execute_cleanup (-1); if (running_trap > 0) run_trap_cleanup (running_trap - 1); @@ -557,6 +544,8 @@ termsig_handler (sig) int sig; { static int handling_termsig = 0; + int i, core; + sigset_t mask; /* Simple semaphore to keep this function from being executed multiple times. Since we no longer are running as a signal handler, we don't @@ -585,6 +574,7 @@ termsig_handler (sig) #if defined (JOB_CONTROL) if (sig == SIGHUP && (interactive || (subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)))) hangup_all_jobs (); + if ((subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)) == 0) end_job_control (); #endif /* JOB_CONTROL */ @@ -598,9 +588,41 @@ termsig_handler (sig) executing_list = comsub_ignore_return = return_catch_flag = wait_intr_flag = 0; run_exit_trap (); /* XXX - run exit trap possibly in signal context? */ + + /* We don't change the set of blocked signals. If a user starts the shell + with a terminating signal blocked, we won't get here (and if by some + magic chance we do, we'll exit below). */ set_signal_handler (sig, SIG_DFL); + kill (getpid (), sig); + + if (dollar_dollar_pid != 1) + exit (128+sig); /* just in case the kill fails? */ + + /* We get here only under extraordinary circumstances. */ + + /* We are PID 1, and the kill above failed to kill the process. We assume + this means that we are running as an init process in a pid namespace + on Linux. In this case, we can't send ourselves a fatal signal, so we + determine whether or not we should have generated a core dump with the + kill call and attempt to trick the kernel into generating one if + necessary. */ + sigprocmask (SIG_SETMASK, (sigset_t *)NULL, &mask); + for (i = core = 0; i < TERMSIGS_LENGTH; i++) + { + set_signal_handler (XSIG (i), SIG_DFL); + sigdelset (&mask, XSIG (i)); + if (sig == XSIG (i)) + core = XCOREDUMP (i); + } + sigprocmask (SIG_SETMASK, &mask, (sigset_t *)NULL); + + if (core) + *((volatile unsigned long *) NULL) = 0xdead0000 + sig; /* SIGSEGV */ + + exit (128+sig); } +#undef XSIG /* What we really do when SIGINT occurs. */ sighandler @@ -738,6 +760,12 @@ set_signal_handler (sig, handler) #if defined (SIGCHLD) if (sig == SIGCHLD) act.sa_flags |= SA_RESTART; /* XXX */ +#endif + /* Let's see if we can keep SIGWINCH from interrupting interruptible system + calls, like open(2)/read(2)/write(2) */ +#if defined (SIGWINCH) + if (sig == SIGWINCH) + act.sa_flags |= SA_RESTART; /* XXX */ #endif /* If we're installing a SIGTERM handler for interactive shells, we want it to be as close to SIG_IGN as possible. */ diff --git a/subst.c b/subst.c index fc00cab08..95591878c 100644 --- a/subst.c +++ b/subst.c @@ -4,7 +4,7 @@ /* ``Have a little faith, there's magic in the night. You ain't a beauty, but, hey, you're alright.'' */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -131,7 +131,6 @@ extern int errno; the embedded `break'. The dangling else accommodates a trailing semicolon; we could also put in a do ; while (0) */ - #define CHECK_STRING_OVERRUN(oind, ind, len, ch) \ if (ind >= len) \ { \ @@ -180,20 +179,16 @@ WORD_LIST *subst_assign_varlist = (WORD_LIST *)NULL; errors. Enabled when doing completion and prompt string expansion. */ int no_longjmp_on_fatal_error = 0; +/* Non-zero means to allow unmatched globbed filenames to expand to + a null file. */ +int allow_null_glob_expansion; + +/* Non-zero means to throw an error when globbing fails to match anything. */ +int fail_glob_expansion; + /* Extern functions and variables from different files. */ -extern int last_command_exit_value, last_command_exit_signal; -extern int subshell_environment, running_in_background; -extern int subshell_level, parse_and_execute_level, sourcelevel; -extern int eof_encountered, line_number; -extern int return_catch_flag, return_catch_value; -extern pid_t dollar_dollar_pid; -extern int posixly_correct; -extern char *this_command_name; extern struct fd_bitmap *current_fds_to_close; extern int wordexp_only; -extern int expanding_redir; -extern int tempenv_assign_error; -extern int builtin_ignoring_errexit; #if defined (JOB_CONTROL) && defined (PROCESS_SUBSTITUTION) extern PROCESS *last_procsub_child; @@ -203,13 +198,6 @@ extern PROCESS *last_procsub_child; extern wchar_t *wcsdup __P((const wchar_t *)); #endif -/* Non-zero means to allow unmatched globbed filenames to expand to - a null file. */ -int allow_null_glob_expansion; - -/* Non-zero means to throw an error when globbing fails to match anything. */ -int fail_glob_expansion; - #if 0 /* Variables to keep track of which words in an expanded word list (the output of expand_word_list_internal) are the result of globbing @@ -221,13 +209,17 @@ static int glob_argv_flags_size; static WORD_LIST *cached_quoted_dollar_at = 0; +/* Distinguished error values to return from expansion functions */ static WORD_LIST expand_word_error, expand_word_fatal; static WORD_DESC expand_wdesc_error, expand_wdesc_fatal; -static char expand_param_error, expand_param_fatal; +static char expand_param_error, expand_param_fatal, expand_param_unset; static char extract_string_error, extract_string_fatal; -/* Set by expand_word_unsplit; used to inhibit splitting and re-joining - $* on $IFS, primarily when doing assignment statements. */ +/* Set by expand_word_unsplit and several of the expand_string_XXX functions; + used to inhibit splitting and re-joining $* on $IFS, primarily when doing + assignment statements. The idea is that if we're in a context where this + is set, we're not going to be performing word splitting, so we use the same + rules to expand $* as we would if it appeared within double quotes. */ static int expand_no_split_dollar_star = 0; /* A WORD_LIST of words to be expanded by expand_word_list_internal, @@ -243,7 +235,10 @@ static inline char *expand_string_to_string_internal __P((char *, int, EXPFUNC * static WORD_LIST *call_expand_word_internal __P((WORD_DESC *, int, int, int *, int *)); static WORD_LIST *expand_string_internal __P((char *, int)); static WORD_LIST *expand_string_leave_quoted __P((char *, int)); -static WORD_LIST *expand_string_for_rhs __P((char *, int, int *, int *)); +static WORD_LIST *expand_string_for_rhs __P((char *, int, int, int, int *, int *)); +static WORD_LIST *expand_string_for_pat __P((char *, int, int *, int *)); + +static char *quote_escapes_internal __P((const char *, int)); static WORD_LIST *list_quote_escapes __P((WORD_LIST *)); static WORD_LIST *list_dequote_escapes __P((WORD_LIST *)); @@ -305,11 +300,11 @@ static char *parameter_list_transform __P((int, int, int)); #if defined ARRAY_VARS static char *array_transform __P((int, SHELL_VAR *, char *, int)); #endif -static char *parameter_brace_transform __P((char *, char *, int, char *, int, int, int)); +static char *parameter_brace_transform __P((char *, char *, int, char *, int, int, int, int)); static char *process_substitute __P((char *, int)); -static char *read_comsub __P((int, int, int *)); +static char *read_comsub __P((int, int, int, int *)); #ifdef ARRAY_VARS static arrayind_t array_length_reference __P((char *)); @@ -323,7 +318,7 @@ static WORD_DESC *parameter_brace_expand_word __P((char *, int, int, int, arrayi static char *parameter_brace_find_indir __P((char *, int, int, int)); static WORD_DESC *parameter_brace_expand_indir __P((char *, int, int, int *, int *)); static WORD_DESC *parameter_brace_expand_rhs __P((char *, char *, int, int, int, int *, int *)); -static void parameter_brace_expand_error __P((char *, char *)); +static void parameter_brace_expand_error __P((char *, char *, int)); static int valid_length_expression __P((char *)); static intmax_t parameter_brace_expand_length __P((char *)); @@ -332,7 +327,7 @@ static char *skiparith __P((char *, int)); static int verify_substring_values __P((SHELL_VAR *, char *, char *, int, intmax_t *, intmax_t *)); static int get_var_and_type __P((char *, char *, arrayind_t, int, int, SHELL_VAR **, char **)); static char *mb_substring __P((char *, int, int)); -static char *parameter_brace_substring __P((char *, char *, int, char *, int, int)); +static char *parameter_brace_substring __P((char *, char *, int, char *, int, int, int)); static int shouldexp_replacement __P((char *)); @@ -341,7 +336,7 @@ static char *pos_params_pat_subst __P((char *, char *, char *, int)); static char *parameter_brace_patsub __P((char *, char *, int, char *, int, int, int)); static char *pos_params_casemod __P((char *, char *, int, int)); -static char *parameter_brace_casemod __P((char *, char *, int, int, char *, int, int)); +static char *parameter_brace_casemod __P((char *, char *, int, int, char *, int, int, int)); static WORD_DESC *parameter_brace_expand __P((char *, int *, int, int, int *, int *)); static WORD_DESC *param_expand __P((char *, int *, int, int *, int *, int *, int *, int)); @@ -393,10 +388,10 @@ dump_word_flags (flags) f &= ~W_ASSIGNARRAY; fprintf (stderr, "W_ASSIGNARRAY%s", f ? "|" : ""); } - if (f & W_HASCTLESC) + if (f & W_SAWQUOTEDNULL) { - f &= ~W_HASCTLESC; - fprintf (stderr, "W_HASCTLESC%s", f ? "|" : ""); + f &= ~W_SAWQUOTEDNULL; + fprintf (stderr, "W_SAWQUOTEDNULL%s", f ? "|" : ""); } if (f & W_NOPROCSUB) { @@ -453,6 +448,11 @@ dump_word_flags (flags) f &= ~W_ASSIGNRHS; fprintf (stderr, "W_ASSIGNRHS%s", f ? "|" : ""); } + if (f & W_NOASSNTILDE) + { + f &= ~W_NOASSNTILDE; + fprintf (stderr, "W_NOASSNTILDE%s", f ? "|" : ""); + } if (f & W_NOCOMSUB) { f &= ~W_NOCOMSUB; @@ -518,6 +518,11 @@ dump_word_flags (flags) f &= ~W_COMPLETE; fprintf (stderr, "W_COMPLETE%s", f ? "|" : ""); } + if (f & W_CHKLOCAL) + { + f &= ~W_CHKLOCAL; + fprintf (stderr, "W_CHKLOCAL%s", f ? "|" : ""); + } fprintf (stderr, "\n"); fflush (stderr); @@ -591,6 +596,7 @@ quoted_strlen (s) } #endif +#ifdef INCLUDE_UNUSED /* Find the first occurrence of character C in string S, obeying shell quoting rules. If (FLAGS & ST_BACKSL) is non-zero, backslash-escaped characters are skipped. If (FLAGS & ST_CTLESC) is non-zero, characters @@ -618,7 +624,6 @@ quoted_strchr (s, c, flags) return ((char *)NULL); } -#if defined (INCLUDE_UNUSED) /* Return 1 if CHARACTER appears in an unquoted portion of STRING. Return 0 otherwise. CHARACTER must be a single-byte character. */ static int @@ -798,12 +803,12 @@ string_extract (string, sindex, charlist, flags) break; } #if defined (ARRAY_VARS) - else if ((flags & SX_VARNAME) && c == '[') + else if ((flags & SX_VARNAME) && c == LBRACK) { int ni; /* If this is an array subscript, skip over it and continue. */ ni = skipsubscript (string, i, 0); - if (string[ni] == ']') + if (string[ni] == RBRACK) i = ni; } #endif @@ -880,16 +885,16 @@ string_extract_double_quoted (string, sindex, flags) and want to strip these backslashes only if DQUOTE is non-zero, indicating that we are inside an embedded double-quoted string. */ - /* If we are in an embedded quoted string, then don't strip - backslashes before characters for which the backslash - retains its special meaning, but remove backslashes in - front of other characters. If we are not in an - embedded quoted string, don't strip backslashes at all. - This mess is necessary because the string was already - surrounded by double quotes (and sh has some really weird - quoting rules). - The returned string will be run through expansion as if - it were double-quoted. */ + /* If we are in an embedded quoted string, then don't strip + backslashes before characters for which the backslash + retains its special meaning, but remove backslashes in + front of other characters. If we are not in an + embedded quoted string, don't strip backslashes at all. + This mess is necessary because the string was already + surrounded by double quotes (and sh has some really weird + quoting rules). + The returned string will be run through expansion as if + it were double-quoted. */ if ((stripdq == 0 && c != '"') || (stripdq && ((dquote && (sh_syntaxtab[c] & CBSDQUOTE)) || dquote == 0))) temp[j++] = '\\'; @@ -918,7 +923,7 @@ add_one_character: { if (c == '`') backquote = 0; - temp[j++] = c; + temp[j++] = c; /* COPY_CHAR_I? */ i++; continue; } @@ -954,6 +959,7 @@ add_one_character: ret = string + i + 2; } + /* XXX - CHECK_STRING_OVERRUN here? */ for (t = 0; ret[t]; t++, j++) temp[j] = ret[t]; temp[j] = string[si]; @@ -1134,7 +1140,6 @@ string_extract_verbatim (string, slen, sindex, charlist, flags) { register int i; #if defined (HANDLE_MULTIBYTE) - size_t clen; wchar_t *wcharlist; #endif int c; @@ -1149,13 +1154,7 @@ string_extract_verbatim (string, slen, sindex, charlist, flags) } i = *sindex; -#if 0 - /* See how the MBLEN and ADVANCE_CHAR macros work to understand why we need - this only if MB_CUR_MAX > 1. */ - slen = (MB_CUR_MAX > 1) ? strlen (string + *sindex) + *sindex : 1; -#endif #if defined (HANDLE_MULTIBYTE) - clen = strlen (charlist); wcharlist = 0; #endif while (c = string[i]) @@ -1166,6 +1165,7 @@ string_extract_verbatim (string, slen, sindex, charlist, flags) if ((flags & SX_NOCTLESC) == 0 && c == CTLESC) { i += 2; + CHECK_STRING_OVERRUN (i, i, slen, c); continue; } /* Even if flags contains SX_NOCTLESC, we let CTLESC quoting CTLNUL @@ -1174,11 +1174,15 @@ string_extract_verbatim (string, slen, sindex, charlist, flags) else if ((flags & SX_NOESCCTLNUL) == 0 && c == CTLESC && string[i+1] == CTLNUL) { i += 2; + CHECK_STRING_OVERRUN (i, i, slen, c); continue; } #if defined (HANDLE_MULTIBYTE) - mblength = MBLEN (string + i, slen - i); + if (locale_utf8locale && slen > i && UTF8_SINGLEBYTE (string[i])) + mblength = (string[i] != 0) ? 1 : 0; + else + mblength = MBLEN (string + i, slen - i); if (mblength > 1) { wchar_t wc; @@ -1267,6 +1271,7 @@ extract_process_subst (string, starter, sindex, xflags) int xflags; { #if 0 + /* XXX - check xflags&SX_COMPLETE here? */ return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND)); #else xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0); @@ -1287,8 +1292,8 @@ extract_array_assignment_list (string, sindex) int slen; char *ret; - slen = strlen (string); /* ( */ - if (string[slen - 1] == ')') + slen = strlen (string); + if (string[slen - 1] == RPAREN) { ret = substring (string, *sindex, slen - 1); *sindex = slen - 1; @@ -1383,6 +1388,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) { si = i + 2; t = extract_command_subst (string, &si, flags|SX_NOALLOC); + CHECK_STRING_OVERRUN (i, si, slen, c); i = si + 1; continue; } @@ -1392,6 +1398,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) { si = i + len_opener; t = extract_delimited_string (string, &si, opener, alt_opener, closer, flags|SX_NOALLOC); + CHECK_STRING_OVERRUN (i, si, slen, c); i = si + 1; continue; } @@ -1401,6 +1408,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) { si = i + len_alt_opener; t = extract_delimited_string (string, &si, alt_opener, alt_opener, closer, flags|SX_NOALLOC); + CHECK_STRING_OVERRUN (i, si, slen, c); i = si + 1; continue; } @@ -1420,6 +1428,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) { si = i + 1; t = string_extract (string, &si, "`", flags|SX_NOALLOC); + CHECK_STRING_OVERRUN (i, si, slen, c); i = si + 1; continue; } @@ -1539,7 +1548,7 @@ extract_dollar_brace_string (string, sindex, quoted, flags) t = string_extract (string, &si, "`", flags|SX_NOALLOC); CHECK_STRING_OVERRUN (i, si, slen, c); - + i = si + 1; continue; } @@ -1550,9 +1559,26 @@ extract_dollar_brace_string (string, sindex, quoted, flags) { si = i + 2; t = extract_command_subst (string, &si, flags|SX_NOALLOC); + + CHECK_STRING_OVERRUN (i, si, slen, c); + + i = si + 1; + continue; + } + +#if defined (PROCESS_SUBSTITUTION) + /* Technically this should only work at the start of a word */ + if ((string[i] == '<' || string[i] == '>') && string[i+1] == LPAREN) + { + si = i + 2; + t = extract_process_subst (string, (string[i] == '<' ? "<(" : ">)"), &si, flags|SX_NOALLOC); + + CHECK_STRING_OVERRUN (i, si, slen, c); + i = si + 1; continue; } +#endif /* Pass the contents of double-quoted strings through verbatim. */ if (c == '"') @@ -1577,6 +1603,16 @@ extract_dollar_brace_string (string, sindex, quoted, flags) continue; } +#if defined (ARRAY_VARS) + if (c == LBRACK && dolbrace_state == DOLBRACE_PARAM) + { + si = skipsubscript (string, i, 0); + CHECK_STRING_OVERRUN (i, si, slen, c); + if (string[si] == RBRACK) + c = string[i = si]; + } +#endif + /* move past this character, which was not special. */ ADVANCE_CHAR (string, slen, i); @@ -1683,7 +1719,8 @@ unquote_bang (string) parse array subscripts. FLAGS & 1 means to not attempt to skip over matched pairs of quotes or backquotes, or skip word expansions; it is intended to be used after expansion has been performed and during final - assignment parsing (see arrayfunc.c:assign_compound_array_list()). */ + assignment parsing (see arrayfunc.c:assign_compound_array_list()) or + during execution by a builtin which has already undergone word expansion. */ static int skip_matched_pair (string, start, open, close, flags) const char *string; @@ -1712,7 +1749,7 @@ skip_matched_pair (string, start, open, close, flags) ADVANCE_CHAR (string, slen, i); continue; } - else if (c == '\\') + else if ((flags & 1) == 0 && c == '\\') { pass_next = 1; i++; @@ -1757,6 +1794,7 @@ skip_matched_pair (string, start, open, close, flags) if (string[si] == '\0') CQ_RETURN(si); + /* XXX - extract_command_subst here? */ if (string[i+1] == LPAREN) temp = extract_delimited_string (ss, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND); /* ) */ else @@ -1778,6 +1816,9 @@ skip_matched_pair (string, start, open, close, flags) } #if defined (ARRAY_VARS) +/* Flags has 1 as a reserved value, since skip_matched_pair uses it for + skipping over quoted strings and taking the first instance of the + closing character. */ int skipsubscript (string, start, flags) const char *string; @@ -1904,6 +1945,7 @@ skip_to_delim (string, start, delims, flags) temp = extract_delimited_string (string, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND); /* ) */ else temp = extract_dollar_brace_string (string, &si, 0, SX_NOALLOC); + CHECK_STRING_OVERRUN (i, si, slen, c); i = si; if (string[i] == '\0') /* don't increment i past EOS in loop */ break; @@ -1916,12 +1958,9 @@ skip_to_delim (string, start, delims, flags) si = i + 2; if (string[si] == '\0') CQ_RETURN(si); -#if 1 + temp = extract_delimited_string (string, &si, (c == '<') ? "<(" : ">(", "(", ")", SX_COMMAND|SX_NOALLOC); /* )) */ -#else - temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si, 0); - free (temp); /* XXX - not using SX_NOALLOC here yet */ -#endif + CHECK_STRING_OVERRUN (i, si, slen, c); i = si; if (string[i] == '\0') break; @@ -1941,6 +1980,7 @@ skip_to_delim (string, start, delims, flags) open[2] = '\0'; temp = extract_delimited_string (string, &si, open, "(", ")", SX_NOALLOC); /* ) */ + CHECK_STRING_OVERRUN (i, si, slen, c); i = si; if (string[i] == '\0') /* don't increment i past EOS in loop */ break; @@ -1983,10 +2023,9 @@ skip_to_histexp (string, start, delims, flags) char *delims; int flags; { - int i, pass_next, backq, dquote, si, c, oldjmp; + int i, pass_next, backq, dquote, c, oldjmp; int histexp_comsub, histexp_backq, old_dquote; size_t slen; - char *temp, open[3]; DECLARE_MBSTATE; slen = strlen (string + start) + start; @@ -2209,7 +2248,7 @@ unclosed_pair (string, eindex, openstr) rules. SENTINEL is an index to look for. NWP, if non-NULL, gets the number of words in the returned list. CWP, if non-NULL, gets the index of the word containing SENTINEL. Non-whitespace chars in - DELIMS delimit separate fields. */ + DELIMS delimit separate fields. This is used by programmable completion. */ WORD_LIST * split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp) char *string; @@ -2302,10 +2341,10 @@ split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp) /* If we're using IFS splitting, the non-whitespace delimiter char and any additional IFS whitespace delimits a field. */ if (ifs_split) - while (member (string[te], d) && spctabnl (string[te])) + while (member (string[te], d) && spctabnl (string[te]) && ((flags&SD_NOQUOTEDELIM) == 0 || (string[te] != '\'' && string[te] != '"'))) te++; else - while (member (string[te], d2)) + while (member (string[te], d2) && ((flags&SD_NOQUOTEDELIM) == 0 || (string[te] != '\'' && string[te] != '"'))) te++; } @@ -2338,7 +2377,8 @@ split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp) break; i = te; - while (member (string[i], d) && (ifs_split || spctabnl(string[i]))) + /* XXX - honor SD_NOQUOTEDELIM here */ + while (member (string[i], d) && (ifs_split || spctabnl(string[i])) && ((flags&SD_NOQUOTEDELIM) == 0 || (string[te] != '\'' && string[te] != '"'))) i++; if (string[i]) @@ -2501,9 +2541,12 @@ ifs_firstchar (lenp) expansion [of $*] appears within a double quoted string, it expands to a single field with the value of each parameter separated by the first character of the IFS variable, or by a if IFS is unset." */ +/* Posix interpretation 888 changes this when IFS is null by specifying + that when unquoted, this expands to separate arguments */ char * -string_list_dollar_star (list) +string_list_dollar_star (list, quoted, flags) WORD_LIST *list; + int quoted, flags; { char *ret; #if defined (HANDLE_MULTIBYTE) @@ -2582,7 +2625,8 @@ string_list_dollar_at (list, quoted, flags) # if !defined (__GNUC__) sep = (char *)xmalloc (MB_CUR_MAX + 1); # endif /* !__GNUC__ */ - /* XXX - bash-4.4/bash-5.0 testing PF_ASSIGNRHS */ + /* XXX - testing PF_ASSIGNRHS to make sure positional parameters are + separated with a space even when word splitting will not occur. */ if (flags & PF_ASSIGNRHS) { sep[0] = ' '; @@ -2606,11 +2650,12 @@ string_list_dollar_at (list, quoted, flags) sep[0] = ' '; sep[1] = '\0'; } -#else - /* XXX - bash-4.4/bash-5.0 test PF_ASSIGNRHS */ +#else /* !HANDLE_MULTIBYTE */ + /* XXX - PF_ASSIGNRHS means no word splitting, so we want positional + parameters separated by a space. */ sep[0] = ((flags & PF_ASSIGNRHS) || ifs == 0 || *ifs == 0) ? ' ' : *ifs; sep[1] = '\0'; -#endif +#endif /* !HANDLE_MULTIBYTE */ /* XXX -- why call quote_list if ifs == 0? we can get away without doing it now that quote_escapes quotes spaces */ @@ -2642,7 +2687,7 @@ string_list_pos_params (pchar, list, quoted) { tlist = quote_list (list); word_list_remove_quoted_nulls (tlist); - ret = string_list_dollar_star (tlist); + ret = string_list_dollar_star (tlist, 0, 0); } else if (pchar == '*' && (quoted & Q_HERE_DOCUMENT)) { @@ -2650,12 +2695,14 @@ string_list_pos_params (pchar, list, quoted) word_list_remove_quoted_nulls (tlist); ret = string_list (tlist); } + else if (pchar == '*' && quoted == 0 && ifs_is_null) /* XXX */ + ret = expand_no_split_dollar_star ? string_list_dollar_star (list, quoted, 0) : string_list_dollar_at (list, quoted, 0); /* Posix interp 888 */ else if (pchar == '*') { /* Even when unquoted, string_list_dollar_star does the right thing making sure that the first character of $IFS is used as the separator. */ - ret = string_list_dollar_star (list); + ret = string_list_dollar_star (list, quoted, 0); } else if (pchar == '@' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) /* We use string_list_dollar_at, but only if the string is quoted, since @@ -2666,8 +2713,10 @@ string_list_pos_params (pchar, list, quoted) the elements of $@ are separated by the first character of $IFS for later splitting. */ ret = string_list_dollar_at (list, quoted, 0); + else if (pchar == '@' && quoted == 0 && ifs_is_null) /* XXX */ + ret = string_list_dollar_at (list, quoted, 0); /* Posix interp 888 */ else if (pchar == '@') - ret = string_list_dollar_star (list); + ret = string_list_dollar_star (list, quoted, 0); else ret = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (list) : list); @@ -2706,6 +2755,13 @@ string_list_pos_params (pchar, list, quoted) : (c) == (separators)[0]) \ : 0) +/* member of the space character class in the current locale */ +#define ifs_whitespace(c) ISSPACE(c) + +/* "adjacent IFS white space" */ +#define ifs_whitesep(c) ((sh_style_split || separators == 0) ? spctabnl (c) \ + : ifs_whitespace (c)) + WORD_LIST * list_string (string, separators, quoted) register char *string, *separators; @@ -2733,10 +2789,12 @@ list_string (string, separators, quoted) slen = 0; /* Remove sequences of whitespace at the beginning of STRING, as long as those characters appear in IFS. Do not do this if - STRING is quoted or if there are no separator characters. */ + STRING is quoted or if there are no separator characters. We use the + Posix definition of whitespace as a member of the space character + class in the current locale. */ if (!quoted || !separators || !*separators) { - for (s = string; *s && spctabnl (*s) && issep (*s); s++); + for (s = string; *s && issep (*s) && ifs_whitespace (*s); s++); if (!*s) return ((WORD_LIST *)NULL); @@ -2747,13 +2805,13 @@ list_string (string, separators, quoted) /* OK, now STRING points to a word that does not begin with white space. The splitting algorithm is: extract a word, stopping at a separator - skip sequences of spc, tab, or nl as long as they are separators + skip sequences of whitespace characters as long as they are separators This obeys the field splitting rules in Posix.2. */ - slen = (MB_CUR_MAX > 1) ? STRLEN (string) : 1; + slen = STRLEN (string); for (result = (WORD_LIST *)NULL, sindex = 0; string[sindex]; ) { - /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim - unless multibyte chars are possible. */ + /* Don't need string length in ADVANCE_CHAR unless multibyte chars are + possible, but need it in string_extract_verbatim for bounds checking */ current_word = string_extract_verbatim (string, slen, &sindex, separators, xflags); if (current_word == 0) break; @@ -2782,7 +2840,7 @@ list_string (string, separators, quoted) /* If we're not doing sequences of separators in the traditional Bourne shell style, then add a quoted null argument. */ - else if (!sh_style_split && !spctabnl (string[sindex])) + else if (!sh_style_split && !ifs_whitespace (string[sindex])) { t = alloc_word_desc (); t->word = make_quoted_char ('\0'); @@ -2793,7 +2851,7 @@ list_string (string, separators, quoted) free (current_word); /* Note whether or not the separator is IFS whitespace, used later. */ - whitesep = string[sindex] && spctabnl (string[sindex]); + whitesep = string[sindex] && ifs_whitesep (string[sindex]); /* Move past the current separator character. */ if (string[sindex]) @@ -2802,21 +2860,21 @@ list_string (string, separators, quoted) ADVANCE_CHAR (string, slen, sindex); } - /* Now skip sequences of space, tab, or newline characters if they are + /* Now skip sequences of whitespace characters if they are in the list of separators. */ - while (string[sindex] && spctabnl (string[sindex]) && issep (string[sindex])) + while (string[sindex] && ifs_whitesep (string[sindex]) && issep (string[sindex])) sindex++; /* If the first separator was IFS whitespace and the current character is a non-whitespace IFS character, it should be part of the current field delimiter, not a separate delimiter that would result in an empty field. Look at POSIX.2, 3.6.5, (3)(b). */ - if (string[sindex] && whitesep && issep (string[sindex]) && !spctabnl (string[sindex])) + if (string[sindex] && whitesep && issep (string[sindex]) && !ifs_whitesep (string[sindex])) { sindex++; /* An IFS character that is not IFS white space, along with any adjacent IFS white space, shall delimit a field. (SUSv3) */ - while (string[sindex] && spctabnl (string[sindex]) && isifs (string[sindex])) + while (string[sindex] && ifs_whitesep (string[sindex]) && isifs (string[sindex])) sindex++; } } @@ -2832,6 +2890,7 @@ list_string (string, separators, quoted) XXX - this function is very similar to list_string; they should be combined - XXX */ +/* character is in $IFS */ #define islocalsep(c) (local_cmap[(unsigned char)(c)] != 0) char * @@ -2866,17 +2925,17 @@ get_word_from_string (stringp, separators, endptr) long as those characters appear in SEPARATORS. This happens if SEPARATORS == $' \t\n' or if IFS is unset. */ if (sh_style_split || separators == 0) - { - for (; *s && spctabnl (*s) && islocalsep (*s); s++); + for (; *s && spctabnl (*s) && islocalsep (*s); s++); + else + for (; *s && ifs_whitespace (*s) && islocalsep (*s); s++); - /* If the string is nothing but whitespace, update it and return. */ - if (!*s) - { - *stringp = s; - if (endptr) - *endptr = s; - return ((char *)NULL); - } + /* If the string is nothing but whitespace, update it and return. */ + if (!*s) + { + *stringp = s; + if (endptr) + *endptr = s; + return ((char *)NULL); } /* OK, S points to a word that does not begin with white space. @@ -2896,7 +2955,7 @@ get_word_from_string (stringp, separators, endptr) *endptr = s + sindex; /* Note whether or not the separator is IFS whitespace, used later. */ - whitesep = s[sindex] && spctabnl (s[sindex]); + whitesep = s[sindex] && ifs_whitesep (s[sindex]); /* Move past the current separator character. */ if (s[sindex]) @@ -2914,12 +2973,12 @@ get_word_from_string (stringp, separators, endptr) a non-whitespace IFS character, it should be part of the current field delimiter, not a separate delimiter that would result in an empty field. Look at POSIX.2, 3.6.5, (3)(b). */ - if (s[sindex] && whitesep && islocalsep (s[sindex]) && !spctabnl (s[sindex])) + if (s[sindex] && whitesep && islocalsep (s[sindex]) && !ifs_whitesep (s[sindex])) { sindex++; /* An IFS character that is not IFS white space, along with any adjacent IFS white space, shall delimit a field. */ - while (s[sindex] && spctabnl (s[sindex]) && islocalsep(s[sindex])) + while (s[sindex] && ifs_whitesep (s[sindex]) && islocalsep(s[sindex])) sindex++; } @@ -3016,49 +3075,59 @@ do_compound_assignment (name, value, flags) int flags; { SHELL_VAR *v; - int mklocal, mkassoc, mkglobal; + int mklocal, mkassoc, mkglobal, chklocal; WORD_LIST *list; + char *newname; /* used for local nameref references */ mklocal = flags & ASS_MKLOCAL; mkassoc = flags & ASS_MKASSOC; mkglobal = flags & ASS_MKGLOBAL; + chklocal = flags & ASS_CHKLOCAL; if (mklocal && variable_context) { - v = find_variable (name); + v = find_variable (name); /* follows namerefs */ + newname = (v == 0) ? nameref_transform_name (name, flags) : v->name; if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v))) { - if (v && readonly_p (v)) + if (readonly_p (v)) err_readonly (name); return (v); /* XXX */ } list = expand_compound_array_assignment (v, value, flags); if (mkassoc) - v = make_local_assoc_variable (name); + v = make_local_assoc_variable (newname, 0); else if (v == 0 || (array_p (v) == 0 && assoc_p (v) == 0) || v->context != variable_context) - v = make_local_array_variable (name, 0); + v = make_local_array_variable (newname, 0); if (v) assign_compound_array_list (v, list, flags); if (list) dispose_words (list); } - /* In a function but forcing assignment in global context */ + /* In a function but forcing assignment in global context. CHKLOCAL means to + check for an existing local variable first. */ else if (mkglobal && variable_context) { - v = find_global_variable (name); + v = chklocal ? find_variable (name) : 0; + if (v && (local_p (v) == 0 || v->context != variable_context)) + v = 0; + if (v == 0) + v = find_global_variable (name); if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v))) { - if (v && readonly_p (v)) + if (readonly_p (v)) err_readonly (name); return (v); /* XXX */ } + /* sanity check */ + newname = (v == 0) ? nameref_transform_name (name, flags) : name; list = expand_compound_array_assignment (v, value, flags); if (v == 0 && mkassoc) - v = make_new_assoc_variable (name); + v = make_new_assoc_variable (newname); else if (v && mkassoc && assoc_p (v) == 0) v = convert_var_to_assoc (v); else if (v == 0) - v = make_new_array_variable (name); + v = make_new_array_variable (newname); else if (v && mkassoc == 0 && array_p (v) == 0) v = convert_var_to_array (v); if (v) @@ -3071,7 +3140,7 @@ do_compound_assignment (name, value, flags) v = assign_array_from_string (name, value, flags); if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v))) { - if (v && readonly_p (v)) + if (readonly_p (v)) err_readonly (name); return (v); /* XXX */ } @@ -3155,7 +3224,7 @@ do_assignment_internal (word, expand) aflags |= ASS_APPEND; #if defined (ARRAY_VARS) - if (t = mbschr (name, '[')) /*]*/ + if (t = mbschr (name, LBRACK)) { if (assign_list) { @@ -3168,6 +3237,8 @@ do_assignment_internal (word, expand) } else if (assign_list) { + if ((word->flags & W_ASSIGNARG) && (word->flags & W_CHKLOCAL)) + aflags |= ASS_CHKLOCAL; if ((word->flags & W_ASSIGNARG) && (word->flags & W_ASSNGLOBAL) == 0) aflags |= ASS_MKLOCAL; if ((word->flags & W_ASSIGNARG) && (word->flags & W_ASSNGLOBAL)) @@ -3303,7 +3374,7 @@ string_rest_of_args (dollar_star) char *string; list = list_rest_of_args (); - string = dollar_star ? string_list_dollar_star (list) : string_list (list); + string = dollar_star ? string_list_dollar_star (list, 0, 0) : string_list (list); dispose_words (list); return (string); } @@ -3348,7 +3419,6 @@ pos_params (string, start, end, quoted) t = params; params = params->next; } - t->next = (WORD_LIST *)NULL; ret = string_list_pos_params (string[0], h, quoted); @@ -3494,7 +3564,7 @@ expand_arith_string (string, quoted) { /* This is expanded version of expand_string_internal as it's called by expand_string_leave_quoted */ - td.flags = W_NOPROCSUB; /* don't want process substitution */ + td.flags = W_NOPROCSUB|W_NOTILDE; /* don't want process substitution or tilde expansion */ td.word = savestring (string); list = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL); /* This takes care of the calls from expand_string_leave_quoted and @@ -3584,7 +3654,7 @@ cond_expand_word (w, special) /* Need to figure out whether or not we should call dequote_escapes or a new dequote_ctlnul function here, and under what circumstances. */ - qflags = QGLOB_CVTNULL; + qflags = QGLOB_CVTNULL|QGLOB_CTLESC; if (special == 2) qflags |= QGLOB_REGEXP; word_list_remove_quoted_nulls (l); @@ -3697,7 +3767,16 @@ expand_string_assignment (string, quoted) expand_no_split_dollar_star = 1; +#if 0 + /* Other shells (ksh93) do it this way, which affects how $@ is expanded + in constructs like bar=${@#0} (preserves the spaces resulting from the + expansion of $@ in a context where you don't do word splitting); Posix + interp 888 makes the expansion of $@ in contexts where word splitting + is not performed unspecified. */ + td.flags = W_ASSIGNRHS|W_NOSPLIT2; /* Posix interp 888 */ +#else td.flags = W_ASSIGNRHS; +#endif td.word = savestring (string); value = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL); FREE (td.word); @@ -3788,21 +3867,68 @@ expand_string_leave_quoted (string, quoted) /* This does not perform word splitting or dequote the WORD_LIST it returns. */ static WORD_LIST * -expand_string_for_rhs (string, quoted, dollar_at_p, expanded_p) +expand_string_for_rhs (string, quoted, op, pflags, dollar_at_p, expanded_p) + char *string; + int quoted, op, pflags; + int *dollar_at_p, *expanded_p; +{ + WORD_DESC td; + WORD_LIST *tresult; + int old_nosplit; + + if (string == 0 || *string == '\0') + return (WORD_LIST *)NULL; + + /* We want field splitting to be determined by what is going to be done with + the entire ${parameterOPword} expansion, so we don't want to split the RHS + we expand here. However, the expansion of $* is determined by whether we + are going to eventually perform word splitting, so we want to set this + depending on whether or not are are going to be splitting: if the expansion + is quoted, if the OP is `=', or if IFS is set to the empty string, we + are not going to be splitting, so we set expand_no_split_dollar_star to + We pass through PF_ASSIGNRHS as W_ASSIGNRHS if this is on the RHS of an + assignment statement. */ + /* The updated treatment of $* is the result of Posix interp 888 */ + /* This was further clarified on the austin-group list in March, 2017 and + in Posix bug 1129 */ + old_nosplit = expand_no_split_dollar_star; + expand_no_split_dollar_star = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || op == '=' || ifs_is_null == 0; /* XXX - was 1 */ + td.flags = W_NOSPLIT2; /* no splitting, remove "" and '' */ + if (pflags & PF_ASSIGNRHS) /* pass through */ + td.flags |= W_ASSIGNRHS; + if (op == '=') +#if 0 + td.flags |= W_ASSIGNRHS; /* expand b in ${a=b} like assignment */ +#else + td.flags |= W_ASSIGNRHS|W_NOASSNTILDE; /* expand b in ${a=b} like assignment */ +#endif + td.word = string; + tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p); + expand_no_split_dollar_star = old_nosplit; + + return (tresult); +} + +/* This does not perform word splitting or dequote the WORD_LIST + it returns and it treats $* as if it were quoted. */ +static WORD_LIST * +expand_string_for_pat (string, quoted, dollar_at_p, expanded_p) char *string; int quoted, *dollar_at_p, *expanded_p; { WORD_DESC td; WORD_LIST *tresult; + int oexp; if (string == 0 || *string == '\0') return (WORD_LIST *)NULL; + oexp = expand_no_split_dollar_star; expand_no_split_dollar_star = 1; td.flags = W_NOSPLIT2; /* no splitting, remove "" and '' */ td.word = string; tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p); - expand_no_split_dollar_star = 0; + expand_no_split_dollar_star = oexp; return (tresult); } @@ -3826,6 +3952,63 @@ expand_string (string, quoted) return (result ? dequote_list (result) : result); } +/******************************************* + * * + * Functions to expand WORD_DESCs * + * * + *******************************************/ + +/* Expand WORD, performing word splitting on the result. This does + parameter expansion, command substitution, arithmetic expansion, + word splitting, and quote removal. */ + +WORD_LIST * +expand_word (word, quoted) + WORD_DESC *word; + int quoted; +{ + WORD_LIST *result, *tresult; + + tresult = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL); + result = word_list_split (tresult); + dispose_words (tresult); + return (result ? dequote_list (result) : result); +} + +/* Expand WORD, but do not perform word splitting on the result. This + does parameter expansion, command substitution, arithmetic expansion, + and quote removal. */ +WORD_LIST * +expand_word_unsplit (word, quoted) + WORD_DESC *word; + int quoted; +{ + WORD_LIST *result; + + result = expand_word_leave_quoted (word, quoted); + return (result ? dequote_list (result) : result); +} + +/* Perform shell expansions on WORD, but do not perform word splitting or + quote removal on the result. Virtually identical to expand_word_unsplit; + could be combined if implementations don't diverge. */ +WORD_LIST * +expand_word_leave_quoted (word, quoted) + WORD_DESC *word; + int quoted; +{ + WORD_LIST *result; + + expand_no_split_dollar_star = 1; + if (ifs_is_null) + word->flags |= W_NOSPLIT; + word->flags |= W_NOSPLIT2; + result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL); + expand_no_split_dollar_star = 0; + + return result; +} + /*************************************************** * * * Functions to handle quoting chars * @@ -3846,24 +4029,32 @@ expand_string (string, quoted) code exists in dequote_escapes. Even if we don't end up splitting on spaces, quoting spaces is not a problem. This should never be called on a string that is quoted with single or double quotes or part of a here - document (effectively double-quoted). */ -char * -quote_escapes (string) - char *string; + document (effectively double-quoted). + FLAGS says whether or not we are going to split the result. If we are not, + and there is a CTLESC or CTLNUL in IFS, we need to quote CTLESC and CTLNUL, + respectively, to prevent them from being removed as part of dequoting. */ +static char * +quote_escapes_internal (string, flags) + const char *string; + int flags; { - register char *s, *t; + const char *s, *send; + char *t, *result; size_t slen; - char *result, *send; - int quote_spaces, skip_ctlesc, skip_ctlnul; + int quote_spaces, skip_ctlesc, skip_ctlnul, nosplit; DECLARE_MBSTATE; slen = strlen (string); send = string + slen; quote_spaces = (ifs_value && *ifs_value == 0); + nosplit = (flags & PF_NOSPLIT2); for (skip_ctlesc = skip_ctlnul = 0, s = ifs_value; s && *s; s++) - skip_ctlesc |= *s == CTLESC, skip_ctlnul |= *s == CTLNUL; + { + skip_ctlesc |= (nosplit == 0 && *s == CTLESC); + skip_ctlnul |= (nosplit == 0 && *s == CTLNUL); + } t = result = (char *)xmalloc ((slen * 2) + 1); s = string; @@ -3879,6 +4070,20 @@ quote_escapes (string) return (result); } +char * +quote_escapes (string) + const char *string; +{ + return (quote_escapes_internal (string, 0)); +} + +char * +quote_rhs (string) + const char *string; +{ + return (quote_escapes_internal (string, PF_NOSPLIT2)); +} + static WORD_LIST * list_quote_escapes (list) WORD_LIST *list; @@ -3908,16 +4113,16 @@ list_quote_escapes (list) Also used by parts of the pattern substitution code. */ char * dequote_escapes (string) - char *string; + const char *string; { - register char *s, *t, *s1; + const char *s, *send; + char *t, *result; size_t slen; - char *result, *send; int quote_spaces; DECLARE_MBSTATE; if (string == 0) - return string; + return (char *)0; slen = strlen (string); send = string + slen; @@ -3945,6 +4150,7 @@ dequote_escapes (string) return result; } +#if defined (INCLUDE_UNUSED) static WORD_LIST * list_dequote_escapes (list) WORD_LIST *list; @@ -3960,6 +4166,7 @@ list_dequote_escapes (list) } return list; } +#endif /* Return a new string with the quoted representation of character C. This turns "" into QUOTED_NULL, so the W_HASQUOTEDNULL flag needs to be @@ -4036,7 +4243,7 @@ dequote_string (string) internal_inform ("dequote_string: string with bare CTLESC"); #endif - slen = strlen (string); + slen = STRLEN (string); t = result = (char *)xmalloc (slen + 1); @@ -4096,6 +4303,21 @@ quote_list (list) return list; } +WORD_DESC * +dequote_word (word) + WORD_DESC *word; +{ + register char *s; + + s = dequote_string (word->word); + if (QUOTED_NULL (word->word)) + word->flags &= ~W_HASQUOTEDNULL; + free (word->word); + word->word = s; + + return word; +} + /* De-quote quoted characters in each word in LIST. */ WORD_LIST * dequote_list (list) @@ -4133,11 +4355,43 @@ remove_quoted_escapes (string) return (string); } -/* Perform quoted null character removal on STRING. We don't allow any - quoted null characters in the middle or at the ends of strings because - of how expand_word_internal works. remove_quoted_nulls () turns - STRING into an empty string iff it only consists of a quoted null, - and removes all unquoted CTLNUL characters. */ +/* Remove quoted $IFS characters from STRING. Quoted IFS characters are + added to protect them from word splitting, but we need to remove them + if no word splitting takes place. This returns newly-allocated memory, + so callers can use it to replace savestring(). */ +char * +remove_quoted_ifs (string) + char *string; +{ + register size_t slen; + register int i, j; + char *ret, *send; + DECLARE_MBSTATE; + + slen = strlen (string); + send = string + slen; + + i = j = 0; + ret = (char *)xmalloc (slen + 1); + + while (i < slen) + { + if (string[i] == CTLESC) + { + i++; + if (string[i] == 0 || isifs (string[i]) == 0) + ret[j++] = CTLESC; + if (i == slen) + break; + } + + COPY_CHAR_I (ret, j, string, send, i); + } + ret[j] = '\0'; + + return (ret); +} + char * remove_quoted_nulls (string) char *string; @@ -4160,7 +4414,8 @@ remove_quoted_nulls (string) point -- what if a CTLNUL has already been removed from the string? We don't want to drop the CTLESC or recopy characters that we've already copied down. */ - i++; string[j++] = CTLESC; + i++; + string[j++] = CTLESC; if (i == slen) break; } @@ -4171,7 +4426,7 @@ remove_quoted_nulls (string) } prev_i = i; - ADVANCE_CHAR (string, slen, i); + ADVANCE_CHAR (string, slen, i); /* COPY_CHAR_I? */ if (j < prev_i) { do string[j++] = string[prev_i++]; while (prev_i < i); @@ -4206,7 +4461,7 @@ word_list_remove_quoted_nulls (list) /* **************************************************************** */ #if defined (HANDLE_MULTIBYTE) -#if 0 /* Currently unused */ +# ifdef INCLUDE_UNUSED static unsigned char * mb_getcharlens (string, len) char *string; @@ -4229,7 +4484,7 @@ mb_getcharlens (string, len) } return ret; } -#endif +# endif #endif /* Remove the portion of PARAM matched by PATTERN according to OP, where OP @@ -4408,6 +4663,9 @@ remove_pattern (param, pattern, op) wchar_t *wparam, *wpattern; mbstate_t ps; + /* XXX - could optimize here by checking param and pattern for multibyte + chars with mbsmbchar and calling remove_upattern. */ + n = xdupmbstowcs (&wpattern, NULL, pattern); if (n == (size_t)-1) { @@ -4467,7 +4725,6 @@ match_upattern (string, pat, mtype, sp, ep) size_t len; register char *p, *p1, *npat; char *end; - int n1; /* If the pattern doesn't match anywhere in the string, go ahead and short-circuit right away. A minor optimization, saves a bunch of @@ -4485,7 +4742,7 @@ match_upattern (string, pat, mtype, sp, ep) p = npat = (char *)xmalloc (len + 3); p1 = pat; - if (*p1 != '*' || (*p1 == '*' && p1[1] == LPAREN && extended_glob)) + if ((mtype != MATCH_BEG) && (*p1 != '*' || (*p1 == '*' && p1[1] == LPAREN && extended_glob))) *p++ = '*'; while (*p1) *p++ = *p1++; @@ -4496,7 +4753,7 @@ match_upattern (string, pat, mtype, sp, ep) /* If the pattern ends with a `*' we leave it alone if it's preceded by an even number of backslashes, but if it's escaped by a backslash we need to add another `*'. */ - if (p1[-1] == '*' && (unescaped_backslash = p1[-2] == '\\')) + if ((mtype != MATCH_END) && (p1[-1] == '*' && (unescaped_backslash = p1[-2] == '\\'))) { pp = p1 - 3; while (pp >= pat && *pp-- == '\\') @@ -4504,7 +4761,7 @@ match_upattern (string, pat, mtype, sp, ep) if (unescaped_backslash) *p++ = '*'; } - else if (p1[-1] != '*') + else if (mtype != MATCH_END && p1[-1] != '*') *p++ = '*'; #else if (p1[-1] != '*' || p1[-2] == '\\') @@ -4768,7 +5025,6 @@ match_pattern (string, pat, mtype, sp, ep) size_t n; wchar_t *wstring, *wpat; char **indices; - size_t slen, plen, mslen, mplen; #endif if (string == 0 || pat == 0 || *pat == 0) @@ -4846,9 +5102,9 @@ getpattern (value, quoted, expandpat) } #endif - /* expand_string_for_rhs () leaves WORD quoted and does not perform + /* expand_string_for_pat () leaves WORD quoted and does not perform word splitting. */ - l = *value ? expand_string_for_rhs (value, + l = *value ? expand_string_for_pat (value, (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? Q_PATQUOTE : quoted, (int *)NULL, (int *)NULL) : (WORD_LIST *)0; @@ -4938,7 +5194,7 @@ array_remove_pattern (var, pattern, patspec, varname, quoted) SHELL_VAR *v; /* compute itype from varname here */ - v = array_variable_part (varname, &ret, 0); + v = array_variable_part (varname, 0, &ret, 0); /* XXX */ if (v && invisible_p (v)) @@ -4967,17 +5223,21 @@ parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flag int rtype, quoted, flags; { int vtype, patspec, starsub; - char *temp1, *val, *pattern; + char *temp1, *val, *pattern, *oname; SHELL_VAR *v; if (value == 0) return ((char *)NULL); + oname = this_command_name; this_command_name = varname; vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); if (vtype == -1) - return ((char *)NULL); + { + this_command_name = oname; + return ((char *)NULL); + } starsub = vtype & VT_STARSUB; vtype &= ~VT_STARSUB; @@ -5022,7 +5282,11 @@ parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flag #endif case VT_POSPARMS: temp1 = parameter_list_remove_pattern (varname[0], pattern, patspec, quoted); - if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) + if (temp1 && quoted == 0 && ifs_is_null) + { + /* Posix interp 888 */ + } + else if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) { val = quote_escapes (temp1); free (temp1); @@ -5031,459 +5295,352 @@ parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flag break; } + this_command_name = oname; + FREE (pattern); return temp1; } -static char * -string_var_assignment (v, s) - SHELL_VAR *v; - char *s; -{ - char flags[MAX_ATTRIBUTES], *ret, *val; - int i; - - val = sh_quote_reusable (s, 0); - i = var_attribute_string (v, 0, flags); - ret = (char *)xmalloc (i + strlen (val) + strlen (v->name) + 16 + MAX_ATTRIBUTES); - if (i > 0) - sprintf (ret, "declare -%s %s=%s", flags, v->name, val); - else - sprintf (ret, "%s=%s", v->name, val); - free (val); - return ret; -} +#if defined (PROCESS_SUBSTITUTION) -#if defined (ARRAY_VARS) -static char * -array_var_assignment (v, itype, quoted) - SHELL_VAR *v; - int itype, quoted; +/*****************************************************************/ +/* */ +/* Hacking Process Substitution */ +/* */ +/*****************************************************************/ + +#if !defined (HAVE_DEV_FD) +/* Named pipes must be removed explicitly with `unlink'. This keeps a list + of FIFOs the shell has open. unlink_fifo_list will walk the list and + unlink all of them. add_fifo_list adds the name of an open FIFO to the + list. NFIFO is a count of the number of FIFOs in the list. */ +#define FIFO_INCR 20 + +/* PROC value of -1 means the process has been reaped and the FIFO needs to + be removed. PROC value of 0 means the slot is unused. */ +struct temp_fifo { + char *file; + pid_t proc; +}; + +static struct temp_fifo *fifo_list = (struct temp_fifo *)NULL; +static int nfifo; +static int fifo_list_size; + +void +clear_fifo_list () { - char *ret, *val, flags[MAX_ATTRIBUTES]; - int i; +} - if (v == 0) - return (char *)NULL; - val = array_p (v) ? array_to_assign (array_cell (v), 0) - : assoc_to_assign (assoc_cell (v), 0); - if (val == 0) - { - val = (char *)xmalloc (3); - val[0] = '('; - val[1] = ')'; - val[2] = 0; - } - else +char * +copy_fifo_list (sizep) + int *sizep; +{ + if (sizep) + *sizep = 0; + return (char *)NULL; +} + +static void +add_fifo_list (pathname) + char *pathname; +{ + int osize, i; + + if (nfifo >= fifo_list_size - 1) { - ret = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ? quote_string (val) : quote_escapes (val); - free (val); - val = ret; + osize = fifo_list_size; + fifo_list_size += FIFO_INCR; + fifo_list = (struct temp_fifo *)xrealloc (fifo_list, + fifo_list_size * sizeof (struct temp_fifo)); + for (i = osize; i < fifo_list_size; i++) + { + fifo_list[i].file = (char *)NULL; + fifo_list[i].proc = 0; /* unused */ + } } - i = var_attribute_string (v, 0, flags); - ret = (char *)xmalloc (i + strlen (val) + strlen (v->name) + 16); - sprintf (ret, "declare -%s %s=%s", flags, v->name, val); - free (val); - return ret; + + fifo_list[nfifo].file = savestring (pathname); + nfifo++; } -#endif -static char * -pos_params_assignment (list, itype, quoted) - WORD_LIST *list; - int itype; - int quoted; +void +unlink_fifo (i) + int i; { - char *temp, *ret; - - /* first, we transform the list to quote each word. */ - temp = list_transform ('Q', (SHELL_VAR *)0, list, itype, quoted); - ret = (char *)xmalloc (strlen (temp) + 8); - strcpy (ret, "set -- "); - strcpy (ret + 7, temp); - free (temp); - return ret; + if ((fifo_list[i].proc == (pid_t)-1) || (fifo_list[i].proc > 0 && (kill(fifo_list[i].proc, 0) == -1))) + { + unlink (fifo_list[i].file); + free (fifo_list[i].file); + fifo_list[i].file = (char *)NULL; + fifo_list[i].proc = 0; + } } -static char * -string_transform (xc, v, s) - int xc; - SHELL_VAR *v; - char *s; +void +unlink_fifo_list () { - char *ret, flags[MAX_ATTRIBUTES]; - int i; + int saved, i, j; - if (((xc == 'A' || xc == 'a') && v == 0) || (xc != 'a' && s == 0)) - return (char *)NULL; + if (nfifo == 0) + return; - switch (xc) + for (i = saved = 0; i < nfifo; i++) { - /* Transformations that interrogate the variable */ - case 'a': - i = var_attribute_string (v, 0, flags); - ret = (i > 0) ? savestring (flags) : (char *)NULL; - break; - case 'A': - ret = string_var_assignment (v, s); - break; - /* Transformations that modify the variable's value */ - case 'E': - ret = ansiexpand (s, 0, strlen (s), (int *)0); - break; - case 'P': - ret = decode_prompt_string (s); - break; - case 'Q': - ret = sh_quote_reusable (s, 0); - break; - default: - ret = (char *)NULL; - break; + if ((fifo_list[i].proc == (pid_t)-1) || (fifo_list[i].proc > 0 && (kill(fifo_list[i].proc, 0) == -1))) + { + unlink (fifo_list[i].file); + free (fifo_list[i].file); + fifo_list[i].file = (char *)NULL; + fifo_list[i].proc = 0; + } + else + saved++; } - return ret; + + /* If we didn't remove some of the FIFOs, compact the list. */ + if (saved) + { + for (i = j = 0; i < nfifo; i++) + if (fifo_list[i].file) + { + fifo_list[j].file = fifo_list[i].file; + fifo_list[j].proc = fifo_list[i].proc; + j++; + } + nfifo = j; + } + else + nfifo = 0; } -static char * -list_transform (xc, v, list, itype, quoted) - int xc; - SHELL_VAR *v; - WORD_LIST *list; - int itype, quoted; +/* Take LIST, which is a bitmap denoting active FIFOs in fifo_list + from some point in the past, and close all open FIFOs in fifo_list + that are not marked as active in LIST. If LIST is NULL, close + everything in fifo_list. LSIZE is the number of elements in LIST, in + case it's larger than fifo_list_size (size of fifo_list). */ +void +close_new_fifos (list, lsize) + char *list; + int lsize; { - WORD_LIST *new, *l; - WORD_DESC *w; - char *tword; + int i; - for (new = (WORD_LIST *)NULL, l = list; l; l = l->next) + if (list == 0) { - tword = string_transform (xc, v, l->word->word); - w = alloc_word_desc (); - w->word = tword ? tword : savestring (""); /* XXX */ - new = make_word_list (w, new); + unlink_fifo_list (); + return; } - l = REVERSE_LIST (new, WORD_LIST *); - tword = string_list_pos_params (itype, l, quoted); - dispose_words (l); + for (i = 0; i < lsize; i++) + if (list[i] == 0 && i < fifo_list_size && fifo_list[i].proc != -1) + unlink_fifo (i); - return (tword); + for (i = lsize; i < fifo_list_size; i++) + unlink_fifo (i); } -static char * -parameter_list_transform (xc, itype, quoted) - int xc; - int itype; - int quoted; +int +find_procsub_child (pid) + pid_t pid; { - char *ret; - WORD_LIST *list; + int i; - list = list_rest_of_args (); - if (list == 0) - return ((char *)NULL); - if (xc == 'A') - return (pos_params_assignment (list, itype, quoted)); - ret = list_transform (xc, (SHELL_VAR *)0, list, itype, quoted); - dispose_words (list); - return (ret); + for (i = 0; i < nfifo; i++) + if (fifo_list[i].proc == pid) + return i; + return -1; } -#if defined (ARRAY_VARS) -static char * -array_transform (xc, var, varname, quoted) - int xc; - SHELL_VAR *var; - char *varname; /* so we can figure out how it's indexed */ - int quoted; +void +set_procsub_status (ind, pid, status) + int ind; + pid_t pid; + int status; { - ARRAY *a; - HASH_TABLE *h; - int itype; - char *ret; - WORD_LIST *list; - SHELL_VAR *v; - - /* compute itype from varname here */ - v = array_variable_part (varname, &ret, 0); - - /* XXX */ - if (v && invisible_p (v)) - return ((char *)NULL); + if (ind >= 0 && ind < nfifo) + fifo_list[ind].proc = (pid_t)-1; /* sentinel */ +} - itype = ret[0]; +/* If we've marked the process for this procsub as dead, close the + associated file descriptor and delete the FIFO. */ +void +reap_procsubs () +{ + int i; - if (xc == 'A') - return (array_var_assignment (v, itype, quoted)); + for (i = 0; i < nfifo; i++) + if (fifo_list[i].proc == (pid_t)-1) /* reaped */ + unlink_fifo (i); +} - a = (v && array_p (v)) ? array_cell (v) : 0; - h = (v && assoc_p (v)) ? assoc_cell (v) : 0; - - list = a ? array_to_word_list (a) : (h ? assoc_to_word_list (h) : 0); - if (list == 0) - return ((char *)NULL); - ret = list_transform (xc, v, list, itype, quoted); - dispose_words (list); +void +wait_procsubs () +{ + int i, r; - return ret; + for (i = 0; i < nfifo; i++) + { + if (fifo_list[i].proc != (pid_t)-1 && fifo_list[i].proc > 0) + { + r = wait_for (fifo_list[i].proc); + fifo_list[i].proc = (pid_t)-1; + } + } } -#endif /* ARRAY_VARS */ -static char * -parameter_brace_transform (varname, value, ind, xform, rtype, quoted, flags) - char *varname, *value; - int ind; - char *xform; - int rtype, quoted, flags; +int +fifos_pending () { - int vtype, xc; - char *temp1, *val; - SHELL_VAR *v; - - xc = xform[0]; - if (value == 0 && xc != 'A' && xc != 'a') - return ((char *)NULL); - - this_command_name = varname; + return nfifo; +} - vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); - if (vtype == -1) - return ((char *)NULL); +int +num_fifos () +{ + return nfifo; +} - /* check for valid values of xc */ - switch (xc) - { - case 'a': /* expand to a string with just attributes */ - case 'A': /* expand as an assignment statement with attributes */ - case 'E': /* expand like $'...' */ - case 'P': /* expand like prompt string */ - case 'Q': /* quote reusably */ - break; - default: - return &expand_param_error; - } +static char * +make_named_pipe () +{ + char *tname; - temp1 = (char *)NULL; /* shut up gcc */ - switch (vtype & ~VT_STARSUB) + tname = sh_mktmpname ("sh-np", MT_USERANDOM|MT_USETMPDIR); + if (mkfifo (tname, 0600) < 0) { - case VT_VARIABLE: - case VT_ARRAYMEMBER: - temp1 = string_transform (xc, v, val); - if (vtype == VT_VARIABLE) - FREE (val); - if (temp1) - { - val = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) - ? quote_string (temp1) - : quote_escapes (temp1); - free (temp1); - temp1 = val; - } - break; -#if defined (ARRAY_VARS) - case VT_ARRAYVAR: - temp1 = array_transform (xc, v, varname, quoted); - if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) - { - val = quote_escapes (temp1); - free (temp1); - temp1 = val; - } - break; -#endif - case VT_POSPARMS: - temp1 = parameter_list_transform (xc, varname[0], quoted); - if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) - { - val = quote_escapes (temp1); - free (temp1); - temp1 = val; - } - break; + free (tname); + return ((char *)NULL); } - return temp1; + add_fifo_list (tname); + return (tname); } -/******************************************* - * * - * Functions to expand WORD_DESCs * - * * - *******************************************/ - -/* Expand WORD, performing word splitting on the result. This does - parameter expansion, command substitution, arithmetic expansion, - word splitting, and quote removal. */ +#else /* HAVE_DEV_FD */ -WORD_LIST * -expand_word (word, quoted) - WORD_DESC *word; - int quoted; -{ - WORD_LIST *result, *tresult; +/* DEV_FD_LIST is a bitmap of file descriptors attached to pipes the shell + has open to children. NFDS is a count of the number of bits currently + set in DEV_FD_LIST. TOTFDS is a count of the highest possible number + of open files. */ +/* dev_fd_list[I] value of -1 means the process has been reaped and file + descriptor I needs to be closed. Value of 0 means the slot is unused. */ - tresult = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL); - result = word_list_split (tresult); - dispose_words (tresult); - return (result ? dequote_list (result) : result); -} +static pid_t *dev_fd_list = (pid_t *)NULL; +static int nfds; +static int totfds; /* The highest possible number of open files. */ -/* Expand WORD, but do not perform word splitting on the result. This - does parameter expansion, command substitution, arithmetic expansion, - and quote removal. */ -WORD_LIST * -expand_word_unsplit (word, quoted) - WORD_DESC *word; - int quoted; +void +clear_fifo (i) + int i; { - WORD_LIST *result; - - expand_no_split_dollar_star = 1; -#if defined (HANDLE_MULTIBYTE) - if (ifs_firstc[0] == 0) -#else - if (ifs_firstc == 0) -#endif - word->flags |= W_NOSPLIT; - word->flags |= W_NOSPLIT2; - result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL); - expand_no_split_dollar_star = 0; - - return (result ? dequote_list (result) : result); + if (dev_fd_list[i]) + { + dev_fd_list[i] = 0; + nfds--; + } } -/* Perform shell expansions on WORD, but do not perform word splitting or - quote removal on the result. Virtually identical to expand_word_unsplit; - could be combined if implementations don't diverge. */ -WORD_LIST * -expand_word_leave_quoted (word, quoted) - WORD_DESC *word; - int quoted; +void +clear_fifo_list () { - WORD_LIST *result; - - expand_no_split_dollar_star = 1; -#if defined (HANDLE_MULTIBYTE) - if (ifs_firstc[0] == 0) -#else - if (ifs_firstc == 0) -#endif - word->flags |= W_NOSPLIT; - word->flags |= W_NOSPLIT2; - result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL); - expand_no_split_dollar_star = 0; - - return result; -} - -#if defined (PROCESS_SUBSTITUTION) - -/*****************************************************************/ -/* */ -/* Hacking Process Substitution */ -/* */ -/*****************************************************************/ - -#if !defined (HAVE_DEV_FD) -/* Named pipes must be removed explicitly with `unlink'. This keeps a list - of FIFOs the shell has open. unlink_fifo_list will walk the list and - unlink all of them. add_fifo_list adds the name of an open FIFO to the - list. NFIFO is a count of the number of FIFOs in the list. */ -#define FIFO_INCR 20 + register int i; -struct temp_fifo { - char *file; - pid_t proc; -}; + if (nfds == 0) + return; -static struct temp_fifo *fifo_list = (struct temp_fifo *)NULL; -static int nfifo; -static int fifo_list_size; + for (i = 0; nfds && i < totfds; i++) + clear_fifo (i); -void -clear_fifo_list () -{ + nfds = 0; } char * copy_fifo_list (sizep) int *sizep; { + char *ret; + + if (nfds == 0 || totfds == 0) + { + if (sizep) + *sizep = 0; + return (char *)NULL; + } + if (sizep) - *sizep = 0; - return (char *)NULL; + *sizep = totfds; + ret = (char *)xmalloc (totfds * sizeof (pid_t)); + return (memcpy (ret, dev_fd_list, totfds * sizeof (pid_t))); } static void -add_fifo_list (pathname) - char *pathname; +add_fifo_list (fd) + int fd; { - if (nfifo >= fifo_list_size - 1) + if (dev_fd_list == 0 || fd >= totfds) { - fifo_list_size += FIFO_INCR; - fifo_list = (struct temp_fifo *)xrealloc (fifo_list, - fifo_list_size * sizeof (struct temp_fifo)); + int ofds; + + ofds = totfds; + totfds = getdtablesize (); + if (totfds < 0 || totfds > 256) + totfds = 256; + if (fd >= totfds) + totfds = fd + 2; + + dev_fd_list = (pid_t *)xrealloc (dev_fd_list, totfds * sizeof (dev_fd_list[0])); + /* XXX - might need a loop for this */ + memset (dev_fd_list + ofds, '\0', (totfds - ofds) * sizeof (pid_t)); } - fifo_list[nfifo].file = savestring (pathname); - nfifo++; + dev_fd_list[fd] = 1; /* marker; updated later */ + nfds++; +} + +int +fifos_pending () +{ + return 0; /* used for cleanup; not needed with /dev/fd */ +} + +int +num_fifos () +{ + return nfds; } void -unlink_fifo (i) - int i; +unlink_fifo (fd) + int fd; { - if ((fifo_list[i].proc == -1) || (kill(fifo_list[i].proc, 0) == -1)) + if (dev_fd_list[fd]) { - unlink (fifo_list[i].file); - free (fifo_list[i].file); - fifo_list[i].file = (char *)NULL; - fifo_list[i].proc = -1; + close (fd); + dev_fd_list[fd] = 0; + nfds--; } } void unlink_fifo_list () { - int saved, i, j; + register int i; - if (nfifo == 0) + if (nfds == 0) return; - for (i = saved = 0; i < nfifo; i++) - { - if ((fifo_list[i].proc == -1) || (kill(fifo_list[i].proc, 0) == -1)) - { - unlink (fifo_list[i].file); - free (fifo_list[i].file); - fifo_list[i].file = (char *)NULL; - fifo_list[i].proc = -1; - } - else - saved++; - } + for (i = totfds-1; nfds && i >= 0; i--) + unlink_fifo (i); - /* If we didn't remove some of the FIFOs, compact the list. */ - if (saved) - { - for (i = j = 0; i < nfifo; i++) - if (fifo_list[i].file) - { - fifo_list[j].file = fifo_list[i].file; - fifo_list[j].proc = fifo_list[i].proc; - j++; - } - nfifo = j; - } - else - nfifo = 0; + nfds = 0; } -/* Take LIST, which is a bitmap denoting active FIFOs in fifo_list - from some point in the past, and close all open FIFOs in fifo_list - that are not marked as active in LIST. If LIST is NULL, close - everything in fifo_list. LSIZE is the number of elements in LIST, in - case it's larger than fifo_list_size (size of fifo_list). */ +/* Take LIST, which is a snapshot copy of dev_fd_list from some point in + the past, and close all open fds in dev_fd_list that are not marked + as open in LIST. If LIST is NULL, close everything in dev_fd_list. + LSIZE is the number of elements in LIST, in case it's larger than + totfds (size of dev_fd_list). */ void close_new_fifos (list, lsize) char *list; @@ -5498,180 +5655,64 @@ close_new_fifos (list, lsize) } for (i = 0; i < lsize; i++) - if (list[i] == 0 && i < fifo_list_size && fifo_list[i].proc != -1) + if (list[i] == 0 && i < totfds && dev_fd_list[i]) unlink_fifo (i); - for (i = lsize; i < fifo_list_size; i++) + for (i = lsize; i < totfds; i++) unlink_fifo (i); } int -fifos_pending () -{ - return nfifo; -} - -int -num_fifos () -{ - return nfifo; -} - -static char * -make_named_pipe () -{ - char *tname; - - tname = sh_mktmpname ("sh-np", MT_USERANDOM|MT_USETMPDIR); - if (mkfifo (tname, 0600) < 0) - { - free (tname); - return ((char *)NULL); - } - - add_fifo_list (tname); - return (tname); -} - -#else /* HAVE_DEV_FD */ - -/* DEV_FD_LIST is a bitmap of file descriptors attached to pipes the shell - has open to children. NFDS is a count of the number of bits currently - set in DEV_FD_LIST. TOTFDS is a count of the highest possible number - of open files. */ -static char *dev_fd_list = (char *)NULL; -static int nfds; -static int totfds; /* The highest possible number of open files. */ - -void -clear_fifo (i) - int i; -{ - if (dev_fd_list[i]) - { - dev_fd_list[i] = 0; - nfds--; - } -} - -void -clear_fifo_list () +find_procsub_child (pid) + pid_t pid; { - register int i; + int i; if (nfds == 0) - return; - - for (i = 0; nfds && i < totfds; i++) - clear_fifo (i); - - nfds = 0; -} - -char * -copy_fifo_list (sizep) - int *sizep; -{ - char *ret; - - if (nfds == 0 || totfds == 0) - { - if (sizep) - *sizep = 0; - return (char *)NULL; - } - - if (sizep) - *sizep = totfds; - ret = (char *)xmalloc (totfds); - return (memcpy (ret, dev_fd_list, totfds)); -} - -static void -add_fifo_list (fd) - int fd; -{ - if (dev_fd_list == 0 || fd >= totfds) - { - int ofds; - - ofds = totfds; - totfds = getdtablesize (); - if (totfds < 0 || totfds > 256) - totfds = 256; - if (fd >= totfds) - totfds = fd + 2; - - dev_fd_list = (char *)xrealloc (dev_fd_list, totfds); - memset (dev_fd_list + ofds, '\0', totfds - ofds); - } - - dev_fd_list[fd] = 1; - nfds++; -} + return -1; -int -fifos_pending () -{ - return 0; /* used for cleanup; not needed with /dev/fd */ -} + for (i = 0; i < totfds; i++) + if (dev_fd_list[i] == pid) + return i; -int -num_fifos () -{ - return nfds; + return -1; } void -unlink_fifo (fd) - int fd; +set_procsub_status (ind, pid, status) + int ind; + pid_t pid; + int status; { - if (dev_fd_list[fd]) - { - close (fd); - dev_fd_list[fd] = 0; - nfds--; - } + if (ind >= 0 && ind < totfds) + dev_fd_list[ind] = (pid_t)-1; /* sentinel */ } +/* If we've marked the process for this procsub as dead, close the + associated file descriptor. */ void -unlink_fifo_list () +reap_procsubs () { - register int i; - - if (nfds == 0) - return; - - for (i = 0; nfds && i < totfds; i++) - unlink_fifo (i); + int i; - nfds = 0; + for (i = 0; nfds > 0 && i < totfds; i++) + if (dev_fd_list[i] == (pid_t)-1) + unlink_fifo (i); } -/* Take LIST, which is a snapshot copy of dev_fd_list from some point in - the past, and close all open fds in dev_fd_list that are not marked - as open in LIST. If LIST is NULL, close everything in dev_fd_list. - LSIZE is the number of elements in LIST, in case it's larger than - totfds (size of dev_fd_list). */ void -close_new_fifos (list, lsize) - char *list; - int lsize; +wait_procsubs () { - int i; + int i, r; - if (list == 0) + for (i = 0; nfds > 0 && i < totfds; i++) { - unlink_fifo_list (); - return; + if (dev_fd_list[i] != (pid_t)-1 && dev_fd_list[i] > 0) + { + r = wait_for (dev_fd_list[i]); + dev_fd_list[i] = (pid_t)-1; + } } - - for (i = 0; i < lsize; i++) - if (list[i] == 0 && i < totfds && dev_fd_list[i]) - unlink_fifo (i); - - for (i = lsize; i < totfds; i++) - unlink_fifo (i); } #if defined (NOTDEF) @@ -5727,7 +5768,7 @@ process_substitute (string, open_for_read_in_child) int open_for_read_in_child; { char *pathname; - int fd, result; + int fd, result, rc, function_value; pid_t old_pid, pid; #if defined (HAVE_DEV_FD) int parent_pipe_fd, child_pipe_fd; @@ -5785,6 +5826,10 @@ process_substitute (string, open_for_read_in_child) setup_async_signals (); subshell_environment |= SUBSHELL_COMSUB|SUBSHELL_PROCSUB; + /* We don't inherit the verbose option for command substitutions now, so + let's try it for process substitutions. */ + change_flag ('v', FLAG_OFF); + /* if we're expanding a redirection, we shouldn't have access to the temporary environment, but commands in the subshell should have access to their own temporary environment. */ @@ -5809,6 +5854,9 @@ process_substitute (string, open_for_read_in_child) close (parent_pipe_fd); close (child_pipe_fd); #endif /* HAVE_DEV_FD */ +#if defined (JOB_CONTROL) + restore_pipeline (1); +#endif return ((char *)NULL); } @@ -5820,7 +5868,9 @@ process_substitute (string, open_for_read_in_child) last_procsub_child = restore_pipeline (0); #endif -#if !defined (HAVE_DEV_FD) +#if defined (HAVE_DEV_FD) + dev_fd_list[parent_pipe_fd] = pid; +#else fifo_list[nfifo-1].proc = pid; #endif @@ -5840,7 +5890,24 @@ process_substitute (string, open_for_read_in_child) set_sigint_handler (); #if defined (JOB_CONTROL) + /* make sure we don't have any job control */ set_job_control (0); + + /* The idea is that we want all the jobs we start from an async process + substitution to be in the same process group, but not the same pgrp + as our parent shell, since we don't want to affect our parent shell's + jobs if we get a SIGHUP and end up calling hangup_all_jobs, for example. + If pipeline_pgrp != shell_pgrp, we assume that there is a job control + shell somewhere in our parent process chain (since make_child initializes + pipeline_pgrp to shell_pgrp if job_control == 0). What we do in this + case is to set pipeline_pgrp to our PID, so all jobs started by this + process have that same pgrp and we are basically the process group leader. + This should not have negative effects on child processes surviving + after we exit, since we wait for the children we create, but that is + something to watch for. */ + + if (pipeline_pgrp != shell_pgrp) + pipeline_pgrp = getpid (); #endif /* JOB_CONTROL */ #if !defined (HAVE_DEV_FD) @@ -5908,18 +5975,41 @@ process_substitute (string, open_for_read_in_child) remove_quoted_escapes (string); - subshell_level++; - result = parse_and_execute (string, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST)); - subshell_level--; + /* Give process substitution a place to jump back to on failure, + so we don't go back up to main (). */ + result = setjmp_nosigs (top_level); + + /* If we're running a process substitution inside a shell function, + trap `return' so we don't return from the function in the subshell + and go off to never-never land. */ + if (result == 0 && return_catch_flag) + function_value = setjmp_nosigs (return_catch); + else + function_value = 0; + + if (result == ERREXIT) + rc = last_command_exit_value; + else if (result == EXITPROG) + rc = last_command_exit_value; + else if (result) + rc = EXECUTION_FAILURE; + else if (function_value) + rc = return_catch_value; + else + { + subshell_level++; + rc = parse_and_execute (string, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST)); + /* leave subshell level intact for any exit trap */ + } #if !defined (HAVE_DEV_FD) /* Make sure we close the named pipe in the child before we exit. */ close (open_for_read_in_child ? 0 : 1); #endif /* !HAVE_DEV_FD */ - last_command_exit_value = result; - result = run_exit_trap (); - exit (result); + last_command_exit_value = rc; + rc = run_exit_trap (); + exit (rc); /*NOTREACHED*/ } #endif /* PROCESS_SUBSTITUTION */ @@ -5931,20 +6021,21 @@ process_substitute (string, open_for_read_in_child) /***********************************/ static char * -read_comsub (fd, quoted, rflag) - int fd, quoted; +read_comsub (fd, quoted, flags, rflag) + int fd, quoted, flags; int *rflag; { - char *istring, buf[128], *bufp, *s; - int istring_index, istring_size, c, tflag, skip_ctlesc, skip_ctlnul; + char *istring, buf[128], *bufp; + int istring_index, c, tflag, skip_ctlesc, skip_ctlnul; + size_t istring_size; ssize_t bufn; int nullbyte; istring = (char *)NULL; istring_index = istring_size = bufn = tflag = 0; - for (skip_ctlesc = skip_ctlnul = 0, s = ifs_value; s && *s; s++) - skip_ctlesc |= *s == CTLESC, skip_ctlnul |= *s == CTLNUL; + skip_ctlesc = ifs_cmap[CTLESC]; + skip_ctlnul = ifs_cmap[CTLNUL]; nullbyte = 0; @@ -5981,14 +6072,13 @@ read_comsub (fd, quoted, rflag) /* This is essentially quote_string inline */ if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) /* || c == CTLESC || c == CTLNUL */) istring[istring_index++] = CTLESC; + else if ((flags & PF_ASSIGNRHS) && skip_ctlesc && c == CTLESC) + istring[istring_index++] = CTLESC; /* Escape CTLESC and CTLNUL in the output to protect those characters from the rest of the word expansions (word splitting and globbing.) This is essentially quote_escapes inline. */ else if (skip_ctlesc == 0 && c == CTLESC) - { - tflag |= W_HASCTLESC; - istring[istring_index++] = CTLESC; - } + istring[istring_index++] = CTLESC; else if ((skip_ctlnul == 0 && c == CTLNUL) || (c == ' ' && (ifs_value && *ifs_value == 0))) istring[istring_index++] = CTLESC; @@ -6047,9 +6137,10 @@ read_comsub (fd, quoted, rflag) /* Perform command substitution on STRING. This returns a WORD_DESC * with the contained string possibly quoted. */ WORD_DESC * -command_substitute (string, quoted) +command_substitute (string, quoted, flags) char *string; int quoted; + int flags; { pid_t pid, old_pid, old_pipeline_pgrp, old_async_pid; char *istring, *s; @@ -6091,6 +6182,8 @@ command_substitute (string, quoted) /* Flags to pass to parse_and_execute() */ pflags = (interactive && sourcelevel == 0) ? SEVAL_RESETLINE : 0; + old_pid = last_made_pid; + /* Pipe the output of executing STRING into the current shell. */ if (pipe (fildes) < 0) { @@ -6098,7 +6191,6 @@ command_substitute (string, quoted) goto error_exit; } - old_pid = last_made_pid; #if defined (JOB_CONTROL) old_pipeline_pgrp = pipeline_pgrp; /* Don't reset the pipeline pgrp if we're already a subshell in a pipeline. */ @@ -6221,6 +6313,8 @@ command_substitute (string, quoted) remove_quoted_escapes (string); startup_state = 2; /* see if we can avoid a fork */ + parse_and_execute_level = 0; + /* Give command substitution a place to jump back to on failure, so we don't go back up to main (). */ result = setjmp_nosigs (top_level); @@ -6245,7 +6339,7 @@ command_substitute (string, quoted) { subshell_level++; rc = parse_and_execute (string, "command substitution", pflags|SEVAL_NOHIST); - subshell_level--; + /* leave subshell level intact for any exit trap */ } last_command_exit_value = rc; @@ -6264,7 +6358,7 @@ command_substitute (string, quoted) close (fildes[1]); tflag = 0; - istring = read_comsub (fildes[0], quoted, &tflag); + istring = read_comsub (fildes[0], quoted, flags, &tflag); close (fildes[0]); @@ -6323,7 +6417,7 @@ array_length_reference (s) HASH_TABLE *h; SHELL_VAR *var; - var = array_variable_part (s, &t, &len); + var = array_variable_part (s, 0, &t, &len); /* If unbound variables should generate an error, report one and return failure. */ @@ -6346,7 +6440,7 @@ array_length_reference (s) array = array_p (var) ? array_cell (var) : (ARRAY *)NULL; h = assoc_p (var) ? assoc_cell (var) : (HASH_TABLE *)NULL; - if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']') + if (ALL_ELEMENT_SUB (t[0]) && t[1] == RBRACK) { if (assoc_p (var)) return (h ? assoc_num_elements (h) : 0); @@ -6360,7 +6454,7 @@ array_length_reference (s) { t[len - 1] = '\0'; akey = expand_assignment_string_to_string (t, 0); /* [ */ - t[len - 1] = ']'; + t[len - 1] = RBRACK; if (akey == 0 || *akey == 0) { err_badarraysub (t); @@ -6372,7 +6466,7 @@ array_length_reference (s) } else { - ind = array_expand_index (var, t, len); + ind = array_expand_index (var, t, len, 0); /* negative subscripts to indexed arrays count back from end */ if (var && array_p (var) && ind < 0) ind = array_max_index (array_cell (var)) + 1 + ind; @@ -6448,18 +6542,18 @@ chk_atstar (name, quoted, quoted_dollar_atp, contains_dollar_at) #if defined (ARRAY_VARS) else if (valid_array_reference (name, 0)) { - temp1 = mbschr (name, '['); - if (temp1 && temp1[1] == '@' && temp1[2] == ']') + temp1 = mbschr (name, LBRACK); + if (temp1 && temp1[1] == '@' && temp1[2] == RBRACK) { if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp) *quoted_dollar_atp = 1; if (contains_dollar_at) *contains_dollar_at = 1; return 1; - } /* [ */ + } /* ${array[*]}, when unquoted, should be treated like ${array[@]}, which should result in separate words even when IFS is unset. */ - if (temp1 && temp1[1] == '*' && temp1[2] == ']' && quoted == 0) + if (temp1 && temp1[1] == '*' && temp1[2] == RBRACK && quoted == 0) { if (contains_dollar_at) *contains_dollar_at = 1; @@ -6471,7 +6565,7 @@ chk_atstar (name, quoted, quoted_dollar_atp, contains_dollar_at) } /* Parameter expand NAME, and return a new string which is the expansion, - or NULL if there was no expansion. + or NULL if there was no expansion. NAME is as given in ${NAMEcWORD}. VAR_IS_SPECIAL is non-zero if NAME is one of the special variables in the shell, e.g., "@", "$", "*", etc. QUOTED, if non-zero, means that NAME was found inside of a double-quoted expression. */ @@ -6522,14 +6616,14 @@ parameter_brace_expand_word (name, var_is_special, quoted, pflags, indp) else if (valid_array_reference (name, 0)) { expand_arrayref: + var = array_variable_part (name, 0, &tt, (int *)0); + /* These are the cases where word splitting will not be performed */ if (pflags & PF_ASSIGNRHS) { - var = array_variable_part (name, &tt, (int *)0); - if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']') + if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == RBRACK) { /* Only treat as double quoted if array variable */ if (var && (array_p (var) || assoc_p (var))) - /* XXX - bash-4.4/bash-5.0 pass AV_ASSIGNRHS */ temp = array_value (name, quoted|Q_DOUBLE_QUOTES, AV_ASSIGNRHS, &atype, &ind); else temp = array_value (name, quoted, 0, &atype, &ind); @@ -6537,6 +6631,27 @@ expand_arrayref: else temp = array_value (name, quoted, 0, &atype, &ind); } + /* Posix interp 888 */ + else if (pflags & PF_NOSPLIT2) + { + /* Special cases, then general case, for each of A[@], A[*], A[n] */ +#if defined (HANDLE_MULTIBYTE) + if (tt[0] == '@' && tt[1] == RBRACK && var && quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc[0] != ' ') +#else + if (tt[0] == '@' && tt[1] == RBRACK && var && quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc != ' ') +#endif + temp = array_value (name, Q_DOUBLE_QUOTES, AV_ASSIGNRHS, &atype, &ind); + else if (tt[0] == '@' && tt[1] == RBRACK) + temp = array_value (name, quoted, 0, &atype, &ind); + else if (tt[0] == '*' && tt[1] == RBRACK && expand_no_split_dollar_star && ifs_is_null) + temp = array_value (name, Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT, 0, &atype, &ind); + else if (tt[0] == '*' && tt[1] == RBRACK) + temp = array_value (name, quoted, 0, &atype, &ind); + else + temp = array_value (name, quoted, 0, &atype, &ind); + } + else if (tt[0] == '*' && tt[1] == RBRACK && expand_no_split_dollar_star && ifs_is_null) + temp = array_value (name, Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT, 0, &atype, &ind); else temp = array_value (name, quoted, 0, &atype, &ind); if (atype == 0 && temp) @@ -6570,7 +6685,8 @@ expand_arrayref: if (temp) temp = (*temp && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) ? quote_string (temp) - : quote_escapes (temp); + : ((pflags & PF_ASSIGNRHS) ? quote_rhs (temp) + : quote_escapes (temp)); } else temp = (char *)NULL; @@ -6617,6 +6733,7 @@ parameter_brace_find_indir (name, var_is_special, quoted, find_nameref) char *temp, *t; WORD_DESC *w; SHELL_VAR *v; + int pflags, oldex; if (find_nameref && var_is_special == 0 && (v = find_variable_last_nameref (name, 0)) && nameref_p (v) && (t = nameref_cell (v)) && *t) @@ -6625,12 +6742,23 @@ parameter_brace_find_indir (name, var_is_special, quoted, find_nameref) /* If var_is_special == 0, and name is not an array reference, this does more expansion than necessary. It should really look up the variable's value and not try to expand it. */ - w = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND, 0); + pflags = PF_IGNUNBOUND; + /* Note that we're not going to be doing word splitting here */ + if (var_is_special) + { + pflags |= PF_ASSIGNRHS; /* suppresses word splitting */ + oldex = expand_no_split_dollar_star; + expand_no_split_dollar_star = 1; + } + w = parameter_brace_expand_word (name, var_is_special, quoted, pflags, 0); + if (var_is_special) + expand_no_split_dollar_star = oldex; + t = w->word; /* Have to dequote here if necessary */ if (t) { - temp = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + temp = ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || var_is_special) ? dequote_string (t) : dequote_escapes (t); free (t); @@ -6649,7 +6777,7 @@ parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, c int var_is_special, quoted; int *quoted_dollar_atp, *contains_dollar_at; { - char *temp, *t; + char *t; WORD_DESC *w; SHELL_VAR *v; @@ -6669,15 +6797,47 @@ parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, c } } + /* An indirect reference to a positional parameter or a special parameter + is ok. Indirect references to array references, as explained above, are + ok (currently). Only references to unset variables are errors at this + point. */ + if (legal_identifier (name) && v == 0) + { + report_error (_("%s: invalid indirect expansion"), name); + w = alloc_word_desc (); + w->word = &expand_param_error; + w->flags = 0; + return (w); + } + t = parameter_brace_find_indir (name, var_is_special, quoted, 0); chk_atstar (t, quoted, quoted_dollar_atp, contains_dollar_at); + +#if defined (ARRAY_VARS) + /* Array references to unset variables are also an error */ + if (t == 0 && valid_array_reference (name, 0)) + { + v = array_variable_part (name, 0, (char **)0, (int *)0); + if (v == 0) + { + report_error (_("%s: invalid indirect expansion"), name); + w = alloc_word_desc (); + w->word = &expand_param_error; + w->flags = 0; + return (w); + } + else + return (WORD_DESC *)NULL; + } +#endif + if (t == 0) return (WORD_DESC *)NULL; if (valid_brace_expansion_word (t, SPECIAL_VAR (t, 0)) == 0) { - report_error (_("%s: bad substitution"), t); + report_error (_("%s: invalid variable name"), t); free (t); w = alloc_word_desc (); w->word = &expand_param_error; @@ -6696,14 +6856,15 @@ parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, c "-", "+", or "=". QUOTED is true if the entire brace expression occurs between double quotes. */ static WORD_DESC * -parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdollarat) +parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdollarat) char *name, *value; - int c, quoted, pflags, *qdollaratp, *hasdollarat; + int op, quoted, pflags, *qdollaratp, *hasdollarat; { WORD_DESC *w; WORD_LIST *l; char *t, *t1, *temp, *vname; int l_hasdollat, sindex; + SHELL_VAR *v; /*itrace("parameter_brace_expand_rhs: %s:%s pflags = %d", name, value, pflags);*/ /* If the entire expression is between double quotes, we want to treat @@ -6719,8 +6880,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla w = alloc_word_desc (); l_hasdollat = 0; - /* XXX was 0 not quoted */ - l = *temp ? expand_string_for_rhs (temp, quoted, &l_hasdollat, (int *)NULL) + l = *temp ? expand_string_for_rhs (temp, quoted, op, pflags, &l_hasdollat, (int *)NULL) : (WORD_LIST *)0; if (hasdollarat) *hasdollarat = l_hasdollat || (l && l->next); @@ -6750,8 +6910,14 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla temp = string_list_internal (l, " "); w->flags |= W_SPLITSPACE; } + else if (l_hasdollat || l->next) + temp = string_list_dollar_star (l, quoted, 0); else - temp = (l_hasdollat || l->next) ? string_list_dollar_star (l) : string_list (l); + { + temp = string_list (l); + if (temp && (QUOTED_NULL (temp) == 0) && (l->word->flags & W_SAWQUOTEDNULL)) + w->flags |= W_SAWQUOTEDNULL; /* XXX */ + } /* If we have a quoted null result (QUOTED_NULL(temp)) and the word is a quoted null (l->next == 0 && QUOTED_NULL(l->word->word)), the @@ -6792,16 +6958,15 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla else temp = (char *)NULL; - if (c == '-' || c == '+') + if (op == '-' || op == '+') { w->word = temp; return w; } - /* c == '=' */ - t = temp ? savestring (temp) : savestring (""); - t1 = dequote_string (t); - free (t); + /* op == '=' */ + t1 = temp ? dequote_string (temp) : savestring (""); + free (temp); /* bash-4.4/5.0 */ vname = name; @@ -6813,6 +6978,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla { report_error (_("%s: invalid indirect expansion"), name); free (vname); + free (t1); dispose_word (w); return &expand_wdesc_error; } @@ -6820,6 +6986,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla { report_error (_("%s: invalid variable name"), vname); free (vname); + free (t1); dispose_word (w); return &expand_wdesc_error; } @@ -6827,10 +6994,26 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla #if defined (ARRAY_VARS) if (valid_array_reference (vname, 0)) - assign_array_element (vname, t1, 0); + v = assign_array_element (vname, t1, 0); else #endif /* ARRAY_VARS */ - bind_variable (vname, t1, 0); + v = bind_variable (vname, t1, 0); + + if (v == 0 || readonly_p (v) || noassign_p (v)) /* expansion error */ + { + if ((v == 0 || readonly_p (v)) && interactive_shell == 0 && posixly_correct) + { + last_command_exit_value = EXECUTION_FAILURE; + exp_jump_to_top_level (FORCE_EOF); + } + else + { + if (vname != name) + free (vname); + last_command_exit_value = EX_BADUSAGE; + exp_jump_to_top_level (DISCARD); + } + } stupidly_hack_special_variables (vname); @@ -6838,9 +7021,13 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla free (vname); /* From Posix group discussion Feb-March 2010. Issue 7 0000221 */ - free (temp); - w->word = t1; + /* If we are double-quoted or if we are not going to be performing word + splitting, we want to quote the value we return appropriately, like + the other expansions this function handles. */ + w->word = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ? quote_string (t1) : quote_escapes (t1); + free (t1); + return w; } @@ -6849,8 +7036,9 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla used as the error message to print, otherwise a standard message is printed. */ static void -parameter_brace_expand_error (name, value) +parameter_brace_expand_error (name, value, check_null) char *name, *value; + int check_null; { WORD_LIST *l; char *temp; @@ -6864,6 +7052,8 @@ parameter_brace_expand_error (name, value) FREE (temp); dispose_words (l); } + else if (check_null == 0) + report_error (_("%s: parameter not set"), name); else report_error (_("%s: parameter null or not set"), name); @@ -7030,7 +7220,7 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p) t = (char *)0; temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES); - *e1p = evalexp (temp1, &expok); + *e1p = evalexp (temp1, 0, &expok); /* XXX - EXP_EXPANDED? */ free (temp1); if (expok == 0) return (0); @@ -7088,15 +7278,17 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p) temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES); free (temp2); t[-1] = ':'; - *e2p = evalexp (temp1, &expok); + *e2p = evalexp (temp1, 0, &expok); /* XXX - EXP_EXPANDED? */ free (temp1); if (expok == 0) return (0); + + /* Should we allow positional parameter length < 0 to count backwards + from end of positional parameters? */ #if 1 if ((vtype == VT_ARRAYVAR || vtype == VT_POSPARMS) && *e2p < 0) #else - /* bash-4.3: allow positional parameter length < 0 to count backwards - from end of positional parameters */ + /* XXX - TAG: bash-5.1 */ if (vtype == VT_ARRAYVAR && *e2p < 0) #endif { @@ -7151,7 +7343,6 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp) { int vtype, want_indir; char *temp, *vname; - WORD_DESC *wd; SHELL_VAR *v; arrayind_t lind; @@ -7181,7 +7372,7 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp) #if defined (ARRAY_VARS) if (valid_array_reference (vname, 0)) { - v = array_variable_part (vname, &temp, (int *)0); + v = array_variable_part (vname, 0, &temp, (int *)0); /* If we want to signal array_value to use an already-computed index, set LIND to that index */ lind = (ind != INTMAX_MIN && (flags & AV_USEIND)) ? ind : 0; @@ -7192,8 +7383,8 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp) *valp = (char *)NULL; } if (v && (array_p (v) || assoc_p (v))) - { /* [ */ - if (ALL_ELEMENT_SUB (temp[0]) && temp[1] == ']') + { + if (ALL_ELEMENT_SUB (temp[0]) && temp[1] == RBRACK) { /* Callers have to differentiate between indexed and associative */ vtype = VT_ARRAYVAR; @@ -7208,47 +7399,352 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp) } *varp = v; } - else if (v && (ALL_ELEMENT_SUB (temp[0]) && temp[1] == ']')) + else if (v && (ALL_ELEMENT_SUB (temp[0]) && temp[1] == RBRACK)) + { + vtype = VT_VARIABLE; + *varp = v; + if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + *valp = value ? dequote_string (value) : savestring (""); + else + *valp = value ? dequote_escapes (value) : (char *)NULL; + } + else + { + vtype = VT_ARRAYMEMBER; + *varp = v; + *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, (int *)NULL, &lind); + } + } + else if ((v = find_variable (vname)) && (invisible_p (v) == 0) && (assoc_p (v) || array_p (v))) + { + vtype = VT_ARRAYMEMBER; + *varp = v; + *valp = assoc_p (v) ? assoc_reference (assoc_cell (v), "0") : array_reference (array_cell (v), 0); + } + else +#endif + { + if (value && vtype == VT_VARIABLE) + { + *varp = find_variable (vname); + if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + *valp = dequote_string (value); + else + *valp = dequote_escapes (value); + } + else + *valp = value; + } + + if (want_indir) + free (vname); + + return vtype; +} + +/***********************************************************/ +/* */ +/* Functions to perform transformations on variable values */ +/* */ +/***********************************************************/ + +static char * +string_var_assignment (v, s) + SHELL_VAR *v; + char *s; +{ + char flags[MAX_ATTRIBUTES], *ret, *val; + int i; + + val = sh_quote_reusable (s, 0); + i = var_attribute_string (v, 0, flags); + ret = (char *)xmalloc (i + strlen (val) + strlen (v->name) + 16 + MAX_ATTRIBUTES); + if (i > 0) + sprintf (ret, "declare -%s %s=%s", flags, v->name, val); + else + sprintf (ret, "%s=%s", v->name, val); + free (val); + return ret; +} + +#if defined (ARRAY_VARS) +static char * +array_var_assignment (v, itype, quoted) + SHELL_VAR *v; + int itype, quoted; +{ + char *ret, *val, flags[MAX_ATTRIBUTES]; + int i; + + if (v == 0) + return (char *)NULL; + val = array_p (v) ? array_to_assign (array_cell (v), 0) + : assoc_to_assign (assoc_cell (v), 0); + if (val == 0) + { + val = (char *)xmalloc (3); + val[0] = LPAREN; + val[1] = RPAREN; + val[2] = 0; + } + else + { + ret = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ? quote_string (val) : quote_escapes (val); + free (val); + val = ret; + } + i = var_attribute_string (v, 0, flags); + ret = (char *)xmalloc (i + strlen (val) + strlen (v->name) + 16); + sprintf (ret, "declare -%s %s=%s", flags, v->name, val); + free (val); + return ret; +} +#endif + +static char * +pos_params_assignment (list, itype, quoted) + WORD_LIST *list; + int itype; + int quoted; +{ + char *temp, *ret; + + /* first, we transform the list to quote each word. */ + temp = list_transform ('Q', (SHELL_VAR *)0, list, itype, quoted); + ret = (char *)xmalloc (strlen (temp) + 8); + strcpy (ret, "set -- "); + strcpy (ret + 7, temp); + free (temp); + return ret; +} + +static char * +string_transform (xc, v, s) + int xc; + SHELL_VAR *v; + char *s; +{ + char *ret, flags[MAX_ATTRIBUTES], *t; + int i; + + if (((xc == 'A' || xc == 'a') && v == 0) || (xc != 'a' && s == 0)) + return (char *)NULL; + + switch (xc) + { + /* Transformations that interrogate the variable */ + case 'a': + i = var_attribute_string (v, 0, flags); + ret = (i > 0) ? savestring (flags) : (char *)NULL; + break; + case 'A': + ret = string_var_assignment (v, s); + break; + /* Transformations that modify the variable's value */ + case 'E': + t = ansiexpand (s, 0, strlen (s), (int *)0); + ret = dequote_escapes (t); + free (t); + break; + case 'P': + ret = decode_prompt_string (s); + break; + case 'Q': + ret = sh_quote_reusable (s, 0); + break; + default: + ret = (char *)NULL; + break; + } + return ret; +} + +static char * +list_transform (xc, v, list, itype, quoted) + int xc; + SHELL_VAR *v; + WORD_LIST *list; + int itype, quoted; +{ + WORD_LIST *new, *l; + WORD_DESC *w; + char *tword; + int qflags; + + for (new = (WORD_LIST *)NULL, l = list; l; l = l->next) + { + tword = string_transform (xc, v, l->word->word); + w = alloc_word_desc (); + w->word = tword ? tword : savestring (""); /* XXX */ + new = make_word_list (w, new); + } + l = REVERSE_LIST (new, WORD_LIST *); + + qflags = quoted; + /* If we are expanding in a context where word splitting will not be + performed, treat as quoted. This changes how $* will be expanded. */ + if (itype == '*' && expand_no_split_dollar_star && ifs_is_null) + qflags |= Q_DOUBLE_QUOTES; /* Posix interp 888 */ + + tword = string_list_pos_params (itype, l, qflags); + dispose_words (l); + + return (tword); +} + +static char * +parameter_list_transform (xc, itype, quoted) + int xc; + int itype; + int quoted; +{ + char *ret; + WORD_LIST *list; + + list = list_rest_of_args (); + if (list == 0) + return ((char *)NULL); + if (xc == 'A') + ret = pos_params_assignment (list, itype, quoted); + else + ret = list_transform (xc, (SHELL_VAR *)0, list, itype, quoted); + dispose_words (list); + return (ret); +} + +#if defined (ARRAY_VARS) +static char * +array_transform (xc, var, varname, quoted) + int xc; + SHELL_VAR *var; + char *varname; /* so we can figure out how it's indexed */ + int quoted; +{ + ARRAY *a; + HASH_TABLE *h; + int itype; + char *ret; + WORD_LIST *list; + SHELL_VAR *v; + + /* compute itype from varname here */ + v = array_variable_part (varname, 0, &ret, 0); + + /* XXX */ + if (v && invisible_p (v)) + return ((char *)NULL); + + itype = ret[0]; + + if (xc == 'A') + return (array_var_assignment (v, itype, quoted)); + + a = (v && array_p (v)) ? array_cell (v) : 0; + h = (v && assoc_p (v)) ? assoc_cell (v) : 0; + + list = a ? array_to_word_list (a) : (h ? assoc_to_word_list (h) : 0); + if (list == 0) + return ((char *)NULL); + ret = list_transform (xc, v, list, itype, quoted); + dispose_words (list); + + return ret; +} +#endif /* ARRAY_VARS */ + +static char * +parameter_brace_transform (varname, value, ind, xform, rtype, quoted, pflags, flags) + char *varname, *value; + int ind; + char *xform; + int rtype, quoted, pflags, flags; +{ + int vtype, xc; + char *temp1, *val, *oname; + SHELL_VAR *v; + + xc = xform[0]; + if (value == 0 && xc != 'A' && xc != 'a') + return ((char *)NULL); + + oname = this_command_name; + this_command_name = varname; + + vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); + if (vtype == -1) + { + this_command_name = oname; + return ((char *)NULL); + } + + /* check for valid values of xc */ + switch (xc) + { + case 'a': /* expand to a string with just attributes */ + case 'A': /* expand as an assignment statement with attributes */ + case 'E': /* expand like $'...' */ + case 'P': /* expand like prompt string */ + case 'Q': /* quote reusably */ + break; + default: + this_command_name = oname; + return &expand_param_error; + } + + /* If we are asked to display the attributes of an unset variable, V will + be NULL after the call to get_var_and_type. Double-check here. */ + if (xc == 'a' && vtype == VT_VARIABLE && varname && v == 0) + v = find_variable (varname); + + temp1 = (char *)NULL; /* shut up gcc */ + switch (vtype & ~VT_STARSUB) + { + case VT_VARIABLE: + case VT_ARRAYMEMBER: + temp1 = string_transform (xc, v, val); + if (vtype == VT_VARIABLE) + FREE (val); + if (temp1) + { + val = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + ? quote_string (temp1) + : quote_escapes (temp1); + free (temp1); + temp1 = val; + } + break; +#if defined (ARRAY_VARS) + case VT_ARRAYVAR: + temp1 = array_transform (xc, v, varname, quoted); + if (temp1 && quoted == 0 && ifs_is_null) { - vtype = VT_VARIABLE; - *varp = v; - if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) - *valp = dequote_string (value); - else - *valp = dequote_escapes (value); + /* Posix interp 888 */ } - else + else if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) { - vtype = VT_ARRAYMEMBER; - *varp = v; - *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, (int *)NULL, &lind); + val = quote_escapes (temp1); + free (temp1); + temp1 = val; } - } - else if ((v = find_variable (vname)) && (invisible_p (v) == 0) && (assoc_p (v) || array_p (v))) - { - vtype = VT_ARRAYMEMBER; - *varp = v; - *valp = assoc_p (v) ? assoc_reference (assoc_cell (v), "0") : array_reference (array_cell (v), 0); - } - else + break; #endif - { - if (value && vtype == VT_VARIABLE) + case VT_POSPARMS: + temp1 = parameter_list_transform (xc, varname[0], quoted); + if (temp1 && quoted == 0 && ifs_is_null) { - *varp = find_variable (vname); - if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) - *valp = dequote_string (value); - else - *valp = dequote_escapes (value); + /* Posix interp 888 */ } - else - *valp = value; + else if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) + { + val = quote_escapes (temp1); + free (temp1); + temp1 = val; + } + break; } - if (want_indir) - free (vname); - - return vtype; + this_command_name = oname; + return temp1; } /******************************************************/ @@ -7293,11 +7789,11 @@ mb_substring (string, s, e) VARNAME. If VARNAME is an array variable, use the array elements. */ static char * -parameter_brace_substring (varname, value, ind, substr, quoted, flags) +parameter_brace_substring (varname, value, ind, substr, quoted, pflags, flags) char *varname, *value; int ind; char *substr; - int quoted, flags; + int quoted, pflags, flags; { intmax_t e1, e2; int vtype, r, starsub; @@ -7349,8 +7845,30 @@ parameter_brace_substring (varname, value, ind, substr, quoted, flags) FREE (tt); break; case VT_POSPARMS: - tt = pos_params (varname, e1, e2, quoted); - if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0) + case VT_ARRAYVAR: + if (vtype == VT_POSPARMS) + tt = pos_params (varname, e1, e2, quoted); +#if defined (ARRAY_VARS) + /* assoc_subrange and array_subrange both call string_list_pos_params, + so we can treat this case just like VT_POSPARAMS. */ + else if (assoc_p (v)) + /* we convert to list and take first e2 elements starting at e1th + element -- officially undefined for now */ + tt = assoc_subrange (assoc_cell (v), e1, e2, starsub, quoted); + else + /* We want E2 to be the number of elements desired (arrays can be + sparse, so verify_substring_values just returns the numbers + specified and we rely on array_subrange to understand how to + deal with them). */ + tt = array_subrange (array_cell (v), e1, e2, starsub, quoted); +#endif + /* We want to leave this alone in every case where pos_params/ + string_list_pos_params quotes the list members */ + if (tt && quoted == 0 && ifs_is_null) + { + temp = tt; /* Posix interp 888 */ + } + else if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0) { temp = tt ? quote_escapes (tt) : (char *)NULL; FREE (tt); @@ -7358,21 +7876,7 @@ parameter_brace_substring (varname, value, ind, substr, quoted, flags) else temp = tt; break; -#if defined (ARRAY_VARS) - case VT_ARRAYVAR: - if (assoc_p (v)) - /* we convert to list and take first e2 elements starting at e1th - element -- officially undefined for now */ - temp = assoc_subrange (assoc_cell (v), e1, e2, starsub, quoted); - else - /* We want E2 to be the number of elements desired (arrays can be sparse, - so verify_substring_values just returns the numbers specified and we - rely on array_subrange to understand how to deal with them). */ - temp = array_subrange (array_cell (v), e1, e2, starsub, quoted); - /* array_subrange now calls array_quote_escapes as appropriate, so the - caller no longer needs to. */ - break; -#endif + default: temp = (char *)NULL; } @@ -7386,7 +7890,7 @@ parameter_brace_substring (varname, value, ind, substr, quoted, flags) /* */ /****************************************************************/ -#if 0 /* Unused */ +#ifdef INCLUDE_UNUSED static int shouldexp_replacement (s) char *s; @@ -7413,7 +7917,7 @@ pat_subst (string, pat, rep, mflags) int rptr, mtype, rxpand, mlen; size_t rsize, l, replen, rslen; - if (string == 0) + if (string == 0) return (savestring ("")); mtype = mflags & MATCH_TYPEMASK; @@ -7563,8 +8067,12 @@ pos_params_pat_subst (string, pat, rep, mflags) pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; - ret = string_list_pos_params (pchar, save, qflags); + /* If we are expanding in a context where word splitting will not be + performed, treat as quoted. This changes how $* will be expanded. */ + if (pchar == '*' && (mflags & MATCH_ASSIGNRHS) && expand_no_split_dollar_star && ifs_is_null) + qflags |= Q_DOUBLE_QUOTES; /* Posix interp 888 */ + ret = string_list_pos_params (pchar, save, qflags); dispose_words (save); return (ret); @@ -7582,17 +8090,21 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags) int quoted, pflags, flags; { int vtype, mflags, starsub, delim; - char *val, *temp, *pat, *rep, *p, *lpatsub, *tt; + char *val, *temp, *pat, *rep, *p, *lpatsub, *tt, *oname; SHELL_VAR *v; if (value == 0) return ((char *)NULL); - this_command_name = varname; + oname = this_command_name; + this_command_name = varname; /* error messages */ vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); if (vtype == -1) - return ((char *)NULL); + { + this_command_name = oname; + return ((char *)NULL); + } starsub = vtype & VT_STARSUB; vtype &= ~VT_STARSUB; @@ -7697,8 +8209,18 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags) } break; case VT_POSPARMS: + /* This does the right thing for the case where we are not performing + word splitting. MATCH_STARSUB restricts it to ${* /foo/bar}, and + pos_params_pat_subst/string_list_pos_params will do the right thing + in turn for the case where ifs_is_null. Posix interp 888 */ + if ((pflags & PF_NOSPLIT2) && (mflags & MATCH_STARSUB)) + mflags |= MATCH_ASSIGNRHS; temp = pos_params_pat_subst (val, p, rep, mflags); - if (temp && (mflags & MATCH_QUOTED) == 0) + if (temp && quoted == 0 && ifs_is_null) + { + /* Posix interp 888 */ + } + else if (temp && (mflags & MATCH_QUOTED) == 0) { tt = quote_escapes (temp); free (temp); @@ -7707,11 +8229,28 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags) break; #if defined (ARRAY_VARS) case VT_ARRAYVAR: - temp = assoc_p (v) ? assoc_patsub (assoc_cell (v), p, rep, mflags) - : array_patsub (array_cell (v), p, rep, mflags); - /* Don't call quote_escapes anymore; array_patsub calls - array_quote_escapes as appropriate before adding the - space separators; ditto for assoc_patsub. */ + /* If we are expanding in a context where word splitting will not be + performed, treat as quoted. This changes how ${A[*]} will be + expanded to make it identical to $*. */ + if ((mflags & MATCH_STARSUB) && (mflags & MATCH_ASSIGNRHS) && ifs_is_null) + mflags |= MATCH_QUOTED; /* Posix interp 888 */ + + /* these eventually call string_list_pos_params */ + if (assoc_p (v)) + temp = assoc_patsub (assoc_cell (v), p, rep, mflags); + else + temp = array_patsub (array_cell (v), p, rep, mflags); + + if (temp && quoted == 0 && ifs_is_null) + { + /* Posix interp 888 */ + } + else if (temp && (mflags & MATCH_QUOTED) == 0) + { + tt = quote_escapes (temp); + free (temp); + temp = tt; + } break; #endif } @@ -7720,6 +8259,8 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags) FREE (rep); free (lpatsub); + this_command_name = oname; + return temp; } @@ -7758,6 +8299,11 @@ pos_params_modcase (string, pat, modop, mflags) pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + /* If we are expanding in a context where word splitting will not be + performed, treat as quoted. This changes how $* will be expanded. */ + if (pchar == '*' && (mflags & MATCH_ASSIGNRHS) && ifs_is_null) + qflags |= Q_DOUBLE_QUOTES; /* Posix interp 888 */ + ret = string_list_pos_params (pchar, save, qflags); dispose_words (save); @@ -7769,24 +8315,28 @@ pos_params_modcase (string, pat, modop, mflags) to perform. QUOTED is a flags word containing the type of quoting currently in effect. */ static char * -parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags) +parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, pflags, flags) char *varname, *value; int ind, modspec; char *patspec; - int quoted, flags; + int quoted, pflags, flags; { int vtype, starsub, modop, mflags, x; - char *val, *temp, *pat, *p, *lpat, *tt; + char *val, *temp, *pat, *p, *lpat, *tt, *oname; SHELL_VAR *v; if (value == 0) return ((char *)NULL); + oname = this_command_name; this_command_name = varname; vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); if (vtype == -1) - return ((char *)NULL); + { + this_command_name = oname; + return ((char *)NULL); + } starsub = vtype & VT_STARSUB; vtype &= ~VT_STARSUB; @@ -7797,6 +8347,8 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags) mflags |= MATCH_QUOTED; if (starsub) mflags |= MATCH_STARSUB; + if (pflags & PF_ASSIGNRHS) + mflags |= MATCH_ASSIGNRHS; p = patspec; if (modspec == '^') @@ -7820,7 +8372,7 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags) lpat = p ? savestring (p) : 0; /* Perform the same expansions on the pattern as performed by the - pattern removal expansions. FOR LATER */ + pattern removal expansions. */ pat = lpat ? getpattern (lpat, quoted, 1) : 0; /* OK, now we do the case modification. */ @@ -7841,7 +8393,11 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags) case VT_POSPARMS: temp = pos_params_modcase (val, pat, modop, mflags); - if (temp && (mflags & MATCH_QUOTED) == 0) + if (temp && quoted == 0 && ifs_is_null) + { + /* Posix interp 888 */ + } + else if (temp && (mflags & MATCH_QUOTED) == 0) { tt = quote_escapes (temp); free (temp); @@ -7851,11 +8407,26 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags) #if defined (ARRAY_VARS) case VT_ARRAYVAR: + /* If we are expanding in a context where word splitting will not be + performed, treat as quoted. This changes how ${A[*]} will be + expanded to make it identical to $*. */ + if ((mflags & MATCH_STARSUB) && (mflags & MATCH_ASSIGNRHS) && ifs_is_null) + mflags |= MATCH_QUOTED; /* Posix interp 888 */ + temp = assoc_p (v) ? assoc_modcase (assoc_cell (v), pat, modop, mflags) : array_modcase (array_cell (v), pat, modop, mflags); - /* Don't call quote_escapes; array_modcase calls array_quote_escapes - as appropriate before adding the space separators; ditto for - assoc_modcase. */ + + if (temp && quoted == 0 && ifs_is_null) + { + /* Posix interp 888 */ + } + else if (temp && (mflags & MATCH_QUOTED) == 0) + { + tt = quote_escapes (temp); + free (temp); + temp = tt; + } + break; #endif } @@ -7863,6 +8434,8 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags) FREE (pat); free (lpat); + this_command_name = oname; + return temp; } @@ -7970,7 +8543,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta name[1] = '\0'; t_index++; } - else if (*name == '!' && t_index > sindex && string[t_index] == '@' && string[t_index+1] == '}') + else if (*name == '!' && t_index > sindex && string[t_index] == '@' && string[t_index+1] == RBRACE) { name = (char *)xrealloc (name, t_index - sindex + 2); name[t_index - sindex] = '@'; @@ -8063,7 +8636,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta (legal_variable_starter ((unsigned char)name[1]) || DIGIT (name[1]) || VALID_INDIR_PARAM (name[1])); - /* Determine the value of this variable. */ + /* Determine the value of this variable whose name is NAME. */ /* Check for special variables, directly referenced. */ if (SPECIAL_VAR (name, want_indir)) @@ -8130,7 +8703,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta x = all_variables_matching_prefix (temp1); xlist = strvec_to_word_list (x, 0, 0); if (string[sindex - 2] == '*') - temp = string_list_dollar_star (xlist); + temp = string_list_dollar_star (xlist, quoted, 0); else { temp = string_list_dollar_at (xlist, quoted, 0); @@ -8155,16 +8728,16 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta } #if defined (ARRAY_VARS) - /* Process ${!ARRAY[@]} and ${!ARRAY[*]} expansion. */ /* [ */ + /* Process ${!ARRAY[@]} and ${!ARRAY[*]} expansion. */ if (want_indir && string[sindex - 1] == RBRACE && - string[sindex - 2] == ']' && valid_array_reference (name+1, 0)) + string[sindex - 2] == RBRACK && valid_array_reference (name+1, 0)) { char *x, *x1; temp1 = savestring (name + 1); - x = array_variable_name (temp1, &x1, (int *)0); /* [ */ + x = array_variable_name (temp1, 0, &x1, (int *)0); FREE (x); - if (ALL_ELEMENT_SUB (x1[0]) && x1[1] == ']') + if (ALL_ELEMENT_SUB (x1[0]) && x1[1] == RBRACK) { temp = array_keys (temp1, quoted); /* handles assoc vars too */ if (x1[0] == '@') @@ -8207,6 +8780,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta temp = (char *)NULL; goto bad_substitution; } + /* Turn off the W_ARRAYIND flag because there is no way for this function to return the index we're supposed to be using. */ if (tdesc && tdesc->flags) @@ -8215,6 +8789,12 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta else tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind); + if (tdesc == &expand_wdesc_error || tdesc == &expand_wdesc_fatal) + { + tflag = 0; + tdesc = 0; + } + if (tdesc) { temp = tdesc->word; @@ -8240,13 +8820,18 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta qflags = quoted; /* If in a context where word splitting will not take place, treat as if double-quoted. Has effects with $* and ${array[*]} */ + if (pflags & PF_ASSIGNRHS) qflags |= Q_DOUBLE_QUOTES; - chk_atstar (name, qflags, quoted_dollar_atp, contains_dollar_at); /* We duplicate a little code here */ - t = mbschr (name, '['); - if (t && ALL_ELEMENT_SUB (t[1]) && t[2] == ']') - all_element_arrayref = 1; + t = mbschr (name, LBRACK); + if (t && ALL_ELEMENT_SUB (t[1]) && t[2] == RBRACK) + { + all_element_arrayref = 1; + if (expand_no_split_dollar_star && t[1] == '*') /* XXX */ + qflags |= Q_DOUBLE_QUOTES; + } + chk_atstar (name, qflags, quoted_dollar_atp, contains_dollar_at); } #endif @@ -8255,6 +8840,14 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta /* XXX - this may not need to be restricted to special variables */ if (check_nullness) var_is_null |= var_is_set && var_is_special && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && QUOTED_NULL (temp); +#if defined (ARRAY_VARS) + if (check_nullness) + var_is_null |= var_is_set && + (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && + QUOTED_NULL (temp) && + valid_array_reference (name, 0) && + chk_atstar (name, 0, (int *)0, (int *)0); +#endif /* Get the rest of the stuff inside the braces. */ if (c && c != RBRACE) @@ -8290,15 +8883,15 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta /* If this is a substring spec, process it and add the result. */ if (want_substring) { - temp1 = parameter_brace_substring (name, temp, ind, value, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0); - FREE (name); + temp1 = parameter_brace_substring (name, temp, ind, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); FREE (value); FREE (temp); - if (temp1 == &expand_param_error) - return (&expand_wdesc_error); - else if (temp1 == &expand_param_fatal) - return (&expand_wdesc_fatal); + if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) + { + FREE (name); + return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal); + } ret = alloc_word_desc (); ret->word = temp1; @@ -8310,19 +8903,24 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) ret->flags |= W_QUOTED|W_HASQUOTEDNULL; + /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */ + else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null) + ret->flags |= W_SPLITSPACE; /* Posix interp 888 */ + + FREE (name); return ret; } else if (want_patsub) { temp1 = parameter_brace_patsub (name, temp, ind, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); - FREE (name); FREE (value); FREE (temp); - if (temp1 == &expand_param_error) - return (&expand_wdesc_error); - else if (temp1 == &expand_param_fatal) - return (&expand_wdesc_fatal); + if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) + { + FREE (name); + return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal); + } ret = alloc_word_desc (); ret->word = temp1; @@ -8330,20 +8928,25 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) ret->flags |= W_QUOTED|W_HASQUOTEDNULL; + /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */ + else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null) + ret->flags |= W_SPLITSPACE; /* Posix interp 888 */ + + FREE (name); return ret; } #if defined (CASEMOD_EXPANSIONS) else if (want_casemod) { - temp1 = parameter_brace_casemod (name, temp, ind, modspec, value, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0); - FREE (name); + temp1 = parameter_brace_casemod (name, temp, ind, modspec, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); FREE (value); FREE (temp); - if (temp1 == &expand_param_error) - return (&expand_wdesc_error); - else if (temp1 == &expand_param_fatal) - return (&expand_wdesc_fatal); + if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) + { + FREE (name); + return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal); + } ret = alloc_word_desc (); ret->word = temp1; @@ -8351,6 +8954,11 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) ret->flags |= W_QUOTED|W_HASQUOTEDNULL; + /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */ + else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null) + ret->flags |= W_SPLITSPACE; /* Posix interp 888 */ + + FREE (name); return ret; } #endif @@ -8375,13 +8983,14 @@ bad_substitution: break; case '@': - temp1 = parameter_brace_transform (name, temp, ind, value, c, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0); + temp1 = parameter_brace_transform (name, temp, ind, value, c, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); free (temp); free (value); - free (name); + if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) { - last_command_exit_value = EXECUTION_FAILURE; + free (name); + last_command_exit_value = EXECUTION_FAILURE; report_error (_("%s: bad substitution"), string ? string : "??"); return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal); } @@ -8390,6 +8999,11 @@ bad_substitution: ret->word = temp1; if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) ret->flags |= W_QUOTED|W_HASQUOTEDNULL; + /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */ + else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null) + ret->flags |= W_SPLITSPACE; /* Posix interp 888 */ + + free (name); return ret; case '#': /* ${param#[#]pattern} */ @@ -8402,12 +9016,16 @@ bad_substitution: temp1 = parameter_brace_remove_pattern (name, temp, ind, value, c, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0); free (temp); free (value); - free (name); ret = alloc_word_desc (); ret->word = temp1; if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) ret->flags |= W_QUOTED|W_HASQUOTEDNULL; + /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */ + else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null) + ret->flags |= W_SPLITSPACE; /* Posix interp 888 */ + + free (name); return ret; case '-': @@ -8468,7 +9086,7 @@ bad_substitution: } else if (c == '?') { - parameter_brace_expand_error (name, value); + parameter_brace_expand_error (name, value, check_nullness); return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); } else if (c != '+') @@ -8551,6 +9169,7 @@ param_expand (string, sindex, quoted, expanded_something, case '8': case '9': temp1 = dollar_vars[TODIGIT (c)]; + /* This doesn't get called when (pflags&PF_IGNUNBOUND) != 0 */ if (unbound_vars_is_error && temp1 == (char *)NULL) { uerror[0] = '$'; @@ -8599,7 +9218,7 @@ param_expand (string, sindex, quoted, expanded_something, if (expanded_something) *expanded_something = 0; temp = (char *)NULL; - if (unbound_vars_is_error) + if (unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0) { uerror[0] = '$'; uerror[1] = c; @@ -8649,7 +9268,7 @@ param_expand (string, sindex, quoted, expanded_something, quote the whole string, including the separators. If IFS is unset, the parameters are separated by ' '; if $IFS is null, the parameters are concatenated. */ - temp = (quoted & (Q_DOUBLE_QUOTES|Q_PATQUOTE)) ? string_list_dollar_star (list) : string_list (list); + temp = (quoted & (Q_DOUBLE_QUOTES|Q_PATQUOTE)) ? string_list_dollar_star (list, quoted, 0) : string_list (list); if (temp) { temp1 = (quoted & Q_DOUBLE_QUOTES) ? quote_string (temp) : temp; @@ -8667,16 +9286,44 @@ param_expand (string, sindex, quoted, expanded_something, an assignment statement. In that case, we don't separate the arguments at all. Otherwise, if the $* is not quoted it is identical to $@ */ + if (expand_no_split_dollar_star && quoted == 0 && ifs_is_set == 0 && (pflags & PF_ASSIGNRHS)) + { + /* Posix interp 888: RHS of assignment, IFS unset */ + temp = string_list_dollar_at (list, Q_DOUBLE_QUOTES, pflags); + tflag |= W_SPLITSPACE; + } + else if (expand_no_split_dollar_star && quoted == 0 && ifs_is_null && (pflags & PF_ASSIGNRHS)) + { + /* Posix interp 888: RHS of assignment, IFS set to '' */ + temp1 = string_list_dollar_star (list, quoted, pflags); + temp = temp1 ? quote_escapes (temp1) : temp1; + FREE (temp1); + } + else if (expand_no_split_dollar_star && quoted == 0 && ifs_is_set && ifs_is_null == 0 && (pflags & PF_ASSIGNRHS)) + { + /* Posix interp 888: RHS of assignment, IFS set to non-null value */ + temp1 = string_list_dollar_star (list, quoted, pflags); + temp = temp1 ? quote_string (temp1) : temp1; + FREE (temp1); + } + /* XXX - should we check ifs_is_set here as well? */ # if defined (HANDLE_MULTIBYTE) - if (expand_no_split_dollar_star && ifs_firstc[0] == 0) + else if (expand_no_split_dollar_star && ifs_firstc[0] == 0) # else - if (expand_no_split_dollar_star && ifs_firstc == 0) + else if (expand_no_split_dollar_star && ifs_firstc == 0) # endif - temp = string_list_dollar_star (list); + /* Posix interp 888: not RHS, no splitting, IFS set to '' */ + temp = string_list_dollar_star (list, quoted, 0); else { temp = string_list_dollar_at (list, quoted, 0); + /* Set W_SPLITSPACE to make sure the individual positional + parameters are split into separate arguments */ +#if 0 if (quoted == 0 && (ifs_is_set == 0 || ifs_is_null)) +#else /* change with bash-5.0 */ + if (quoted == 0 && ifs_is_null) +#endif tflag |= W_SPLITSPACE; /* If we're not quoted but we still don't want word splitting, make we quote the IFS characters to protect them from splitting (e.g., @@ -8741,10 +9388,32 @@ param_expand (string, sindex, quoted, expanded_something, parameters no matter what IFS is set to. */ /* XXX - what to do when in a context where word splitting is not performed? Even when IFS is not the default, posix seems to imply - that we behave like unquoted $* ? Maybe we should use PF_NOSPLIT2 - here. */ - /* XXX - bash-4.4/bash-5.0 passing PFLAGS */ - temp = string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quoted|Q_DOUBLE_QUOTES) : quoted, pflags); + that we behave like unquoted $* ? See below for how we use + PF_NOSPLIT2 here. */ + + /* These are the cases where word splitting will not be performed. */ + if (pflags & PF_ASSIGNRHS) + temp = string_list_dollar_at (list, (quoted|Q_DOUBLE_QUOTES), pflags); + /* This needs to match what expand_word_internal does with non-quoted $@ + does with separating with spaces. Passing Q_DOUBLE_QUOTES means that + the characters in LIST will be quoted, and PF_ASSIGNRHS ensures that + they will separated by spaces. After doing this, we need the special + handling for PF_NOSPLIT2 in expand_word_internal to remove the CTLESC + quotes. */ + else if (pflags & PF_NOSPLIT2) + { +#if defined (HANDLE_MULTIBYTE) + if (quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc[0] != ' ') +#else + if (quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc != ' ') +#endif + /* Posix interp 888 */ + temp = string_list_dollar_at (list, Q_DOUBLE_QUOTES, pflags); + else + temp = string_list_dollar_at (list, quoted, pflags); + } + else + temp = string_list_dollar_at (list, quoted, pflags); tflag |= W_DOLLARAT; dispose_words (list); @@ -8826,7 +9495,7 @@ arithsub: /* No error messages. */ savecmd = this_command_name; this_command_name = (char *)NULL; - number = evalexp (temp1, &expok); + number = evalexp (temp1, EXP_EXPANDED, &expok); this_command_name = savecmd; free (temp); free (temp1); @@ -8850,7 +9519,7 @@ comsub: temp1 = substring (string, *sindex, zindex+1); else { - tdesc = command_substitute (temp, quoted); + tdesc = command_substitute (temp, quoted, pflags&PF_ASSIGNRHS); temp1 = tdesc ? tdesc->word : (char *)NULL; if (tdesc) dispose_word_desc (tdesc); @@ -8861,7 +9530,7 @@ comsub: /* Do POSIX.2d9-style arithmetic substitution. This will probably go away in a future bash release. */ - case '[': + case '[': /*]*/ /* Extract the contents of this arithmetic substitution. */ t_index = zindex + 1; temp = extract_arithmetic_subst (string, &t_index); @@ -8923,7 +9592,8 @@ comsub: temp = (*temp && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) ? quote_string (temp) - : quote_escapes (temp); + : ((pflags & PF_ASSIGNRHS) ? quote_rhs (temp) + : quote_escapes (temp)); } free (temp1); @@ -9067,8 +9737,10 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin /* State flags */ int had_quoted_null; + int has_quoted_ifs; /* did we add a quoted $IFS character here? */ int has_dollar_at, temp_has_dollar_at; int split_on_spaces; + int local_expanded; int tflag; int pflags; /* flags passed to param_expand */ int mb_cur_max; @@ -9102,6 +9774,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin istring = (char *)xmalloc (istring_size = DEFAULT_INITIAL_ARRAY_SIZE); istring[istring_index = 0] = '\0'; quoted_dollar_at = had_quoted_null = has_dollar_at = 0; + has_quoted_ifs = 0; split_on_spaces = 0; quoted_state = UNQUOTED; @@ -9111,7 +9784,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin mb_cur_max = MB_CUR_MAX; /* Don't need the string length for the SADD... and COPY_ macros unless - multibyte characters are possible. */ + multibyte characters are possible, but do need it for bounds checking. */ string_size = (mb_cur_max > 1) ? strlen (string) : 1; if (contains_dollar_at) @@ -9165,8 +9838,7 @@ add_string: case '<': case '>': { - /* bash-4.4/bash-5.0 - XXX - technically this should only be expanded at the start + /* XXX - technically this should only be expanded at the start of a word */ if (string[++sindex] != LPAREN || (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (word->flags & (W_DQUOTE|W_NOPROCSUB)) || posixly_correct) { @@ -9225,17 +9897,19 @@ add_string: word->flags |= W_ITILDE; #endif - /* XXX - bash-4.4/bash-5.0 */ if (word->flags & W_ASSIGNARG) word->flags |= W_ASSIGNRHS; /* affects $@ */ if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c)) - goto add_ifs_character; + { + has_quoted_ifs++; + goto add_ifs_character; + } else goto add_character; case ':': - if (word->flags & W_NOTILDE) + if (word->flags & (W_NOTILDE|W_NOASSNTILDE)) { if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c)) goto add_ifs_character; @@ -9255,12 +9929,12 @@ add_string: case '~': /* If the word isn't supposed to be tilde expanded, or we're not at the start of a word or after an unquoted : or = in an - assignment statement, we don't do tilde expansion. If we don't want - tilde expansion when expanding words to be passed to the arithmetic - evaluator, remove the check for Q_ARITH. */ + assignment statement, we don't do tilde expansion. We don't + do tilde expansion if quoted or in an arithmetic context. */ + if ((word->flags & (W_NOTILDE|W_DQUOTE)) || (sindex > 0 && ((word->flags & W_ITILDE) == 0)) || - ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) && ((quoted & Q_ARITH) == 0))) + (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) { word->flags &= ~W_ITILDE; if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0) @@ -9303,6 +9977,7 @@ add_string: case '$': if (expanded_something) *expanded_something = 1; + local_expanded = 1; temp_has_dollar_at = 0; pflags = (word->flags & W_NOCOMSUB) ? PF_NOCOMSUB : 0; @@ -9329,7 +10004,9 @@ add_string: *contains_dollar_at = 1; if (tword && (tword->flags & W_HASQUOTEDNULL)) - had_quoted_null = 1; + had_quoted_null = 1; /* note for later */ + if (tword && (tword->flags & W_SAWQUOTEDNULL)) + had_quoted_null = 1; /* XXX */ temp = tword ? tword->word : (char *)NULL; dispose_word_desc (tword); @@ -9369,6 +10046,7 @@ add_string: if (expanded_something) *expanded_something = 1; + local_expanded = 1; if (word->flags & W_NOCOMSUB) /* sindex + 1 because string[sindex] == '`' */ @@ -9376,7 +10054,7 @@ add_string: else { de_backslash (temp); - tword = command_substitute (temp, quoted); + tword = command_substitute (temp, quoted, 0); temp1 = tword ? tword->word : (char *)NULL; if (tword) dispose_word_desc (tword); @@ -9419,6 +10097,15 @@ add_string: SCOPY_CHAR_I (twochars, CTLESC, c, string, sindex, string_size); } + else if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && c == 0) + { + RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, + DEFAULT_ARRAY_SIZE); + istring[istring_index++] = CTLESC; + istring[istring_index++] = '\\'; + istring[istring_index] = '\0'; + break; + } else if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && ((sh_syntaxtab[c] & tflag) == 0)) { SCOPY_CHAR_I (twochars, '\\', c, string, sindex, string_size); @@ -9463,9 +10150,8 @@ add_twochars: tword = alloc_word_desc (); tword->word = temp; - /* XXX - bash-4.4/bash-5.0 */ if (word->flags & W_ASSIGNARG) - tword->flags |= word->flags & (W_ASSIGNARG|W_ASSIGNRHS); /* affects $@ */ + tword->flags |= word->flags & (W_ASSIGNARG|W_ASSIGNRHS); /* affects $@ */ if (word->flags & W_COMPLETE) tword->flags |= W_COMPLETE; /* for command substitutions */ if (word->flags & W_NOCOMSUB) @@ -9475,7 +10161,7 @@ add_twochars: temp = (char *)NULL; - temp_has_dollar_at = 0; /* XXX */ + temp_has_dollar_at = 0; /* does this quoted (sub)string include $@? */ /* Need to get W_HASQUOTEDNULL flag through this function. */ list = expand_word_internal (tword, Q_DOUBLE_QUOTES, 0, &temp_has_dollar_at, (int *)NULL); has_dollar_at += temp_has_dollar_at; @@ -9495,13 +10181,32 @@ add_twochars: /* "$@" (a double-quoted dollar-at) expands into nothing, not even a NULL word, when there are no positional - parameters. */ + parameters. Posix interp 888 says that other parts of the + word that expand to quoted nulls result in quoted nulls, so + we can't just throw the entire word away if we have "$@" + anywhere in it. We use had_quoted_null to keep track */ if (list == 0 && temp_has_dollar_at) /* XXX - was has_dollar_at */ { quoted_dollar_at++; break; } + /* If this list comes back with a quoted null from expansion, + we have either "$x" or "$@" with $1 == ''. In either case, + we need to make sure we add a quoted null argument and + disable the special handling that "$@" gets. */ + if (list && list->word && list->next == 0 && (list->word->flags & W_HASQUOTEDNULL)) + { + /* If we already saw a quoted null, we don't need to add + another one */ + if (had_quoted_null && temp_has_dollar_at) + { + quoted_dollar_at++; + break; + } + had_quoted_null = 1; /* XXX */ + } + /* If we get "$@", we know we have expanded something, so we need to remember it for the final split on $IFS. This is a special case; it's the only case where a quoted string @@ -9513,9 +10218,6 @@ add_twochars: if (list) dequote_list (list); - if (list && list->word && (list->word->flags & W_HASQUOTEDNULL)) - had_quoted_null = 1; /* XXX */ - if (temp_has_dollar_at) /* XXX - was has_dollar_at */ { quoted_dollar_at++; @@ -9523,6 +10225,7 @@ add_twochars: *contains_dollar_at = 1; if (expanded_something) *expanded_something = 1; + local_expanded = 1; } } else @@ -9530,6 +10233,7 @@ add_twochars: /* What we have is "". This is a minor optimization. */ FREE (temp); list = (WORD_LIST *)NULL; + had_quoted_null = 1; /* note for later */ } /* The code above *might* return a list (consider the case of "$@", @@ -9578,6 +10282,9 @@ add_twochars: else temp = (char *)NULL; + if (temp == 0 && quoted_state == PARTIALLY_QUOTED) + had_quoted_null = 1; /* note for later */ + /* We do not want to add quoted nulls to strings that are only partially quoted; we can throw them away. The exception to this is when we are going to be performing word splitting, @@ -9600,6 +10307,7 @@ add_twochars: /* Add NULL arg. */ c = CTLNUL; sindex--; /* add_character: label increments sindex */ + had_quoted_null = 1; /* note for later */ goto add_character; } @@ -9627,9 +10335,13 @@ add_twochars: else remove_quoted_escapes (temp); /* ??? */ + if (temp == 0 && quoted_state == PARTIALLY_QUOTED) + had_quoted_null = 1; /* note for later */ + /* We do not want to add quoted nulls to strings that are only partially quoted; such nulls are discarded. See above for the - exception, which is when the string is going to be split. */ + exception, which is when the string is going to be split. + Posix interp 888 */ if (temp == 0 && (quoted_state == PARTIALLY_QUOTED) && (word->flags & (W_NOSPLIT|W_NOSPLIT2))) continue; @@ -9650,6 +10362,8 @@ add_twochars: add_ifs_character: if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (isexp == 0 && isifs (c) && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0)) { + if ((quoted&(Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0) + has_quoted_ifs++; if (string[sindex]) /* from old goto dollar_add_string */ sindex++; if (c == 0) @@ -9660,6 +10374,8 @@ add_twochars: else { #if HANDLE_MULTIBYTE + /* XXX - should make sure that c is actually multibyte, + otherwise we can use the twochars branch */ if (mb_cur_max > 1) sindex--; @@ -9723,7 +10439,9 @@ finished_with_string: { istring[0] = CTLNUL; istring[1] = '\0'; - tword = make_bare_word (istring); + tword = alloc_word_desc (); + tword->word = istring; + istring = 0; /* avoid later free() */ tword->flags |= W_HASQUOTEDNULL; /* XXX */ list = make_word_list (tword, (WORD_LIST *)NULL); if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) @@ -9736,22 +10454,16 @@ finished_with_string: null arguments */ else if (quoted_state == UNQUOTED || quoted_dollar_at) list = (WORD_LIST *)NULL; -#if 0 - else - { - tword = make_bare_word (istring); - if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) - tword->flags |= W_QUOTED; - list = make_word_list (tword, (WORD_LIST *)NULL); - } -#else else list = (WORD_LIST *)NULL; -#endif } else if (word->flags & W_NOSPLIT) { - tword = make_bare_word (istring); + tword = alloc_word_desc (); + tword->word = istring; + if (had_quoted_null && QUOTED_NULL (istring)) + tword->flags |= W_HASQUOTEDNULL; + istring = 0; /* avoid later free() */ if (word->flags & W_ASSIGNMENT) tword->flags |= W_ASSIGNMENT; /* XXX */ if (word->flags & W_COMPASSIGN) @@ -9764,14 +10476,11 @@ finished_with_string: tword->flags |= W_NOEXPAND; /* XXX */ if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) tword->flags |= W_QUOTED; - if (had_quoted_null && QUOTED_NULL (istring)) - tword->flags |= W_HASQUOTEDNULL; list = make_word_list (tword, (WORD_LIST *)NULL); } else { char *ifs_chars; - char *tstring; ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL; @@ -9787,7 +10496,16 @@ finished_with_string: or we expanded "$@" with IFS null and we need to split the positional parameters into separate words. */ if (split_on_spaces) - list = list_string (istring, " ", 1); /* XXX quoted == 1? */ + { + /* If IFS is not set, and the word is not quoted, we want to split + the individual words on $' \t\n'. We rely on previous steps to + quote the portions of the word that should not be split */ + if (ifs_is_set == 0) + list = list_string (istring, " \t\n", 1); /* XXX quoted == 1? */ + else + list = list_string (istring, " ", 1); /* XXX quoted == 1? */ + } + /* If we have $@ (has_dollar_at != 0) and we are in a context where we don't want to split the result (W_NOSPLIT2), and we are not quoted, we have already separated the arguments with the first character of @@ -9799,35 +10517,49 @@ finished_with_string: double-quoted $@ while expanding it. */ else if (has_dollar_at && quoted_dollar_at == 0 && ifs_chars && quoted == 0 && (word->flags & W_NOSPLIT2)) { + tword = alloc_word_desc (); /* Only split and rejoin if we have to */ if (*ifs_chars && *ifs_chars != ' ') { + /* list_string dequotes CTLESCs in the string it's passed, so we + need it to get the space separation right if space isn't the + first character in IFS (but is present) and to remove the + quoting we added back in param_expand(). */ list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1); - tstring = string_list (list); + /* This isn't exactly right in the case where we're expanding + the RHS of an expansion like ${var-$@} where IFS=: (for + example). The W_NOSPLIT2 means we do the separation with :; + the list_string removes the quotes and breaks the string into + a list, and the string_list rejoins it on spaces. When we + return, we expect to be able to split the results, but the + space separation means the right split doesn't happen. */ + tword->word = string_list (list); } else - tstring = istring; - tword = make_bare_word (tstring); - if (tstring != istring) - free (tstring); - goto set_word_flags; - } - /* This is the attempt to make $* in an assignment context (a=$*) and - array variables subscripted with * in an assignment context (a=${foo[*]}) - behave similarly. It has side effects that, though they increase - compatibility with other shells, are not backwards compatible. */ -#if 0 - else if (has_dollar_at && quoted == 0 && ifs_chars && (word->flags & W_ASSIGNRHS)) - { - tword = make_bare_word (istring); + tword->word = istring; + if (had_quoted_null && QUOTED_NULL (istring)) + tword->flags |= W_HASQUOTEDNULL; /* XXX */ + if (tword->word != istring) + free (istring); + istring = 0; /* avoid later free() */ goto set_word_flags; } -#endif else if (has_dollar_at && ifs_chars) list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1); else { - tword = make_bare_word (istring); + tword = alloc_word_desc (); + if (expanded_something && *expanded_something == 0 && has_quoted_ifs) + tword->word = remove_quoted_ifs (istring); + else + tword->word = istring; + if (had_quoted_null && QUOTED_NULL (istring)) + tword->flags |= W_HASQUOTEDNULL; /* XXX */ + else if (had_quoted_null) + tword->flags |= W_SAWQUOTEDNULL; /* XXX */ + if (tword->word != istring) + free (istring); + istring = 0; /* avoid later free() */ set_word_flags: if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED)) tword->flags |= W_QUOTED; @@ -9841,8 +10573,6 @@ set_word_flags: tword->flags |= W_NOBRACE; if (word->flags & W_NOEXPAND) tword->flags |= W_NOEXPAND; - if (had_quoted_null && QUOTED_NULL (istring)) - tword->flags |= W_HASQUOTEDNULL; /* XXX */ list = make_word_list (tword, (WORD_LIST *)NULL); } } @@ -10002,14 +10732,19 @@ setifs (v) #if defined (HANDLE_MULTIBYTE) if (ifs_value == 0) { - ifs_firstc[0] = '\0'; + ifs_firstc[0] = '\0'; /* XXX - ? */ ifs_firstc_len = 1; } else { - size_t ifs_len; - ifs_len = strnlen (ifs_value, MB_CUR_MAX); - ifs_firstc_len = MBLEN (ifs_value, ifs_len); + if (locale_utf8locale && UTF8_SINGLEBYTE (*ifs_value)) + ifs_firstc_len = (*ifs_value != 0) ? 1 : 0; + else + { + size_t ifs_len; + ifs_len = strnlen (ifs_value, MB_CUR_MAX); + ifs_firstc_len = MBLEN (ifs_value, ifs_len); + } if (ifs_firstc_len == 1 || ifs_firstc_len == 0 || MB_INVALIDCH (ifs_firstc_len)) { ifs_firstc[0] = ifs_value[0]; @@ -10060,10 +10795,24 @@ word_list_split (list) WORD_LIST *list; { WORD_LIST *result, *t, *tresult, *e; + WORD_DESC *w; for (t = list, result = (WORD_LIST *)NULL; t; t = t->next) { tresult = word_split (t->word, ifs_value); + /* POSIX 2.6: "If the complete expansion appropriate for a word results + in an empty field, that empty field shall be deleted from the list + of fields that form the completely expanded command, unless the + original word contained single-quote or double-quote characters." + This is where we handle these words that contain quoted null strings + and other characters that expand to nothing after word splitting. */ + if (tresult == 0 && t->word && (t->word->flags & W_SAWQUOTEDNULL)) /* XXX */ + { + w = alloc_word_desc (); + w->word = (char *)xmalloc (1); + w->word[0] = '\0'; + tresult = make_word_list (w, (WORD_LIST *)NULL); + } if (result == 0) result = e = tresult; else @@ -10091,6 +10840,8 @@ exp_jump_to_top_level (v) /* Cleanup code goes here. */ expand_no_split_dollar_star = 0; /* XXX */ + if (expanding_redir) + undo_partial_redirects (); expanding_redir = 0; assigning_in_environment = 0; @@ -10467,7 +11218,6 @@ shell_expand_word_list (tlist, eflags) { WORD_LIST *expanded, *orig_list, *new_list, *next, *temp_list, *wcmd; int expanded_something, has_dollar_at; - char *temp_string; /* We do tilde expansion all the time. This is what 1003.2 says. */ new_list = (WORD_LIST *)NULL; @@ -10477,8 +11227,6 @@ shell_expand_word_list (tlist, eflags) for (orig_list = tlist; tlist; tlist = next) { - temp_string = tlist->word->word; - next = tlist->next; #if defined (ARRAY_VARS) @@ -10491,10 +11239,11 @@ shell_expand_word_list (tlist, eflags) if ((tlist->word->flags & (W_COMPASSIGN|W_ASSIGNARG)) == (W_COMPASSIGN|W_ASSIGNARG)) { int t; - char opts[16], opti; + char opts[16]; + int opti; opti = 0; - if (tlist->word->flags & (W_ASSIGNASSOC|W_ASSNGLOBAL|W_ASSIGNARRAY)) + if (tlist->word->flags & (W_ASSIGNASSOC|W_ASSNGLOBAL|W_CHKLOCAL|W_ASSIGNARRAY)) opts[opti++] = '-'; if ((tlist->word->flags & (W_ASSIGNASSOC|W_ASSNGLOBAL)) == (W_ASSIGNASSOC|W_ASSNGLOBAL)) @@ -10514,6 +11263,9 @@ shell_expand_word_list (tlist, eflags) else if (tlist->word->flags & W_ASSNGLOBAL) opts[opti++] = 'g'; + if (tlist->word->flags & W_CHKLOCAL) + opts[opti++] = 'G'; + /* If we have special handling note the integer attribute and others that transform the value upon assignment. What we do is take all of the option arguments and scan through them looking for options @@ -10673,11 +11425,12 @@ expand_word_list_internal (list, eflags) tint = do_word_assignment (temp_list->word, 0); this_command_name = savecmd; /* Variable assignment errors in non-interactive shells - running in Posix.2 mode cause the shell to exit. */ + running in Posix.2 mode cause the shell to exit, unless + they are being run by the `command' builtin. */ if (tint == 0) { last_command_exit_value = EXECUTION_FAILURE; - if (interactive_shell == 0 && posixly_correct) + if (interactive_shell == 0 && posixly_correct && executing_command_builtin == 0) exp_jump_to_top_level (FORCE_EOF); else exp_jump_to_top_level (DISCARD); @@ -10748,11 +11501,16 @@ expand_word_list_internal (list, eflags) if (assign_func == do_word_assignment) { last_command_exit_value = EXECUTION_FAILURE; - if (interactive_shell == 0 && posixly_correct && is_special_builtin) + if (interactive_shell == 0 && posixly_correct) exp_jump_to_top_level (FORCE_EOF); else exp_jump_to_top_level (DISCARD); } + else if (interactive_shell == 0 && is_special_builtin) + { + last_command_exit_value = EXECUTION_FAILURE; + exp_jump_to_top_level (FORCE_EOF); + } else tempenv_assign_error++; } diff --git a/subst.h b/subst.h index a2a8294ed..34763222e 100644 --- a/subst.h +++ b/subst.h @@ -1,6 +1,6 @@ /* subst.h -- Names of externally visible functions in subst.c. */ -/* Copyright (C) 1993-2015 Free Software Foundation, Inc. +/* Copyright (C) 1993-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -50,6 +50,10 @@ #define ASS_MKGLOBAL 0x0008 /* force global assignment */ #define ASS_NAMEREF 0x0010 /* assigning to nameref variable */ #define ASS_FORCE 0x0020 /* force assignment even to readonly variable */ +#define ASS_CHKLOCAL 0x0040 /* check local variable before assignment */ +#define ASS_NOEXPAND 0x0080 /* don't expand associative array subscripts */ +#define ASS_NOEVAL 0x0100 /* don't evaluate value as expression */ +#define ASS_NOLONGJMP 0x0200 /* don't longjmp on fatal assignment error */ /* Flags for the string extraction functions. */ #define SX_NOALLOC 0x0001 /* just skip; don't return substring */ @@ -102,7 +106,7 @@ extern char *string_list_internal __P((WORD_LIST *, char *)); extern char *string_list __P((WORD_LIST *)); /* Turn $* into a single string, obeying POSIX rules. */ -extern char *string_list_dollar_star __P((WORD_LIST *)); +extern char *string_list_dollar_star __P((WORD_LIST *, int, int)); /* Expand $@ into a single string, obeying POSIX rules. */ extern char *string_list_dollar_at __P((WORD_LIST *, int, int)); @@ -188,7 +192,9 @@ extern char *expand_arith_string __P((char *, int)); extern char *dequote_string __P((char *)); /* De-quote CTLESC-escaped CTLESC or CTLNUL characters in STRING. */ -extern char *dequote_escapes __P((char *)); +extern char *dequote_escapes __P((const char *)); + +extern WORD_DESC *dequote_word __P((WORD_DESC *)); /* De-quote quoted characters in each word in LIST. */ extern WORD_LIST *dequote_list __P((WORD_LIST *)); @@ -212,7 +218,7 @@ extern char *quote_string __P((char *)); /* Quote escape characters (characters special to interals of expansion) in a string. */ -extern char *quote_escapes __P((char *)); +extern char *quote_escapes __P((const char *)); /* And remove such quoted special characters. */ extern char *remove_quoted_escapes __P((char *)); @@ -258,9 +264,10 @@ extern WORD_LIST *expand_words_no_vars __P((WORD_LIST *)); command substitution, arithmetic expansion, and word splitting. */ extern WORD_LIST *expand_words_shellexp __P((WORD_LIST *)); -extern WORD_DESC *command_substitute __P((char *, int)); +extern WORD_DESC *command_substitute __P((char *, int, int)); extern char *pat_subst __P((char *, char *, char *, int)); +#if defined (PROCESS_SUBSTITUTION) extern int fifos_pending __P((void)); extern int num_fifos __P((void)); extern void unlink_fifo_list __P((void)); @@ -272,6 +279,13 @@ extern void close_new_fifos __P((char *, int)); extern void clear_fifo_list __P((void)); +extern int find_procsub_child __P((pid_t)); +extern void set_procsub_status __P((int, pid_t, int)); + +extern void wait_procsubs __P((void)); +extern void reap_procsubs __P((void)); +#endif + extern WORD_LIST *list_string_with_quotes __P((char *)); #if defined (ARRAY_VARS) @@ -312,6 +326,7 @@ extern WORD_LIST *split_at_delims __P((char *, int, char *, int, int, int *, int extern SHELL_VAR *ifs_var; extern char *ifs_value; extern unsigned char ifs_cmap[]; +extern int ifs_is_set, ifs_is_null; #if defined (HANDLE_MULTIBYTE) extern unsigned char ifs_firstc[]; @@ -320,6 +335,12 @@ extern size_t ifs_firstc_len; extern unsigned char ifs_firstc; #endif +extern int assigning_in_environment; +extern int expanding_redir; +extern int inherit_errexit; + +extern pid_t last_command_subst_pid; + /* Evaluates to 1 if C is a character in $IFS. */ #define isifs(c) (ifs_cmap[(unsigned char)(c)] != 0) diff --git a/support/Makefile.in b/support/Makefile.in index 9ed70215c..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 @@ -79,10 +80,9 @@ man2html$(EXEEXT): $(OBJ1) $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) $(OBJ1) -o $@ ${LIBS_FOR_BUILD} clean: - $(RM) man2html$(EXEEXT) + $(RM) man2html$(EXEEXT) $(OBJ1) distclean maintainer-clean mostlyclean: clean - $(RM) $(OBJ1) - $(RM) bash.pc + $(RM) bash.pc bashbug.sh man2html.o: man2html.c diff --git a/support/bashbug.sh.in b/support/bashbug.sh.in new file mode 100644 index 000000000..5e92b9959 --- /dev/null +++ b/support/bashbug.sh.in @@ -0,0 +1,272 @@ +#!/bin/sh - +# +# bashbug - create a bug report and mail it to the bug address +# +# The bug address depends on the release status of the shell. Versions +# with status `devel', `alpha', `beta', or `rc' mail bug reports to +# chet@cwru.edu and, optionally, to bash-testers@cwru.edu. +# Other versions send mail to bug-bash@gnu.org. +# +# Copyright (C) 1996-2004 Free Software Foundation, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# +# configuration section: +# these variables are filled in by the make target in Makefile +# +MACHINE="@host_cpu@" +OS="@host_os@" +CC="@CC@" +CFLAGS="@CFLAGS@" +RELEASE="@BASHVERS@" +PATCHLEVEL="!PATCHLEVEL!" +RELSTATUS="@RELSTATUS@" +MACHTYPE="@host@" + +PATH=/bin:/usr/bin:/usr/local/bin:$PATH +export PATH + +# Check if TMPDIR is set, default to /tmp +: ${TMPDIR:=/tmp} + +#Securely create a temporary directory for the temporary files +TEMPDIR=$TMPDIR/bbug.$$ +(umask 077 && mkdir $TEMPDIR) || { + echo "$0: could not create temporary directory" >&2 + exit 1 +} + +TEMPFILE1=$TEMPDIR/bbug1 +TEMPFILE2=$TEMPDIR/bbug2 + +USAGE="Usage: $0 [--help] [--version] [bug-report-email-address]" +VERSTR="GNU bashbug, version ${RELEASE}.${PATCHLEVEL}-${RELSTATUS}" + +do_help= do_version= + +while [ $# -gt 0 ]; do + case "$1" in + --help) shift ; do_help=y ;; + --version) shift ; do_version=y ;; + --) shift ; break ;; + -*) echo "bashbug: ${1}: invalid option" >&2 + echo "$USAGE" >&2 + exit 2 ;; + *) break ;; + esac +done + +if [ -n "$do_version" ]; then + echo "${VERSTR}" + exit 0 +fi + +if [ -n "$do_help" ]; then + echo "${VERSTR}" + echo "${USAGE}" + echo + cat << HERE_EOF +Bashbug is used to send mail to the Bash maintainers +for when Bash doesn't behave like you'd like, or expect. + +Bashbug will start up your editor (as defined by the shell's +EDITOR environment variable) with a preformatted bug report +template for you to fill in. The report will be mailed to the +bug-bash mailing list by default. See the manual for details. + +If you invoke bashbug by accident, just quit your editor without +saving any changes to the template, and no bug report will be sent. +HERE_EOF + exit 0 +fi + +# Figure out how to echo a string without a trailing newline +N=`echo 'hi there\c'` +case "$N" in +*c) n=-n c= ;; +*) n= c='\c' ;; +esac + +BASHTESTERS="bash-testers@cwru.edu" + +case "$RELSTATUS" in +alpha*|beta*|devel*|rc*) BUGBASH=chet@cwru.edu ;; +*) BUGBASH=bug-bash@gnu.org ;; +esac + +case "$RELSTATUS" in +alpha*|beta*|devel*|rc*) + echo "$0: This is a testing release. Would you like your bug report" + echo "$0: to be sent to the bash-testers mailing list?" + echo $n "$0: Send to bash-testers? $c" + read ans + case "$ans" in + y*|Y*) BUGBASH="${BUGBASH},${BASHTESTERS}" ;; + esac ;; +esac + +BUGADDR="${1-$BUGBASH}" + +if [ -z "$DEFEDITOR" ] && [ -z "$EDITOR" ]; then + if [ -x /usr/bin/editor ]; then + DEFEDITOR=editor + elif [ -x /usr/local/bin/ce ]; then + DEFEDITOR=ce + elif [ -x /usr/local/bin/emacs ]; then + DEFEDITOR=emacs + elif [ -x /usr/contrib/bin/emacs ]; then + DEFEDITOR=emacs + elif [ -x /usr/bin/emacs ]; then + DEFEDITOR=emacs + elif [ -x /usr/bin/xemacs ]; then + DEFEDITOR=xemacs + elif [ -x /usr/contrib/bin/jove ]; then + DEFEDITOR=jove + elif [ -x /usr/local/bin/jove ]; then + DEFEDITOR=jove + elif [ -x /usr/bin/vi ]; then + DEFEDITOR=vi + else + echo "$0: No default editor found: attempting to use vi" >&2 + DEFEDITOR=vi + fi +fi + + +: ${EDITOR=$DEFEDITOR} + +: ${USER=${LOGNAME-`whoami`}} + +trap 'rm -rf "$TEMPDIR"; exit 1' 1 2 3 13 15 +trap 'rm -rf "$TEMPDIR"' 0 + +UN= +if (uname) >/dev/null 2>&1; then + UN=`uname -a` +fi + +if [ -f /usr/lib/sendmail ] ; then + RMAIL="/usr/lib/sendmail" + SMARGS="-i -t" +elif [ -f /usr/sbin/sendmail ] ; then + RMAIL="/usr/sbin/sendmail" + SMARGS="-i -t" +else + RMAIL=rmail + SMARGS="$BUGADDR" +fi + +INITIAL_SUBJECT='[50 character or so descriptive subject here (for reference)]' + +cat > "$TEMPFILE1" <> $HOME/dead.bashbug + echo "$0: mail to ${BUGADDR} failed: report saved in $HOME/dead.bashbug" >&2 + echo "$0: please send it manually to ${BUGADDR}" >&2 +} + +exit 0 diff --git a/support/config.guess b/support/config.guess old mode 100644 new mode 100755 index 9afd67620..18f8edc0f --- a/support/config.guess +++ b/support/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2013 Free Software Foundation, Inc. +# Copyright 1992-2018 Free Software Foundation, Inc. -timestamp='2013-11-29' +timestamp='2018-08-29' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -15,7 +15,7 @@ timestamp='2013-11-29' # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, see . +# 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 @@ -24,12 +24,12 @@ timestamp='2013-11-29' # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # -# Originally written by Per Bothner. +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # -# Please send patches with a ChangeLog entry to config-patches@gnu.org. +# Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` @@ -39,7 +39,7 @@ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. -Operation modes: +Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -84,8 +84,6 @@ if test $# != 0; then exit 1 fi -trap 'exit 1' 1 2 15 - # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a @@ -96,34 +94,39 @@ trap 'exit 1' 1 2 15 # Portable tmp directory creation inspired by the Autoconf team. -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 1 2 13 15 +trap 'exitcode=$?; test -z "$tmp" || rm -fr "$tmp"; exit $exitcode' 0 + +set_cc_for_build() { + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD="$driver" + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then +if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi @@ -132,14 +135,14 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "${UNAME_SYSTEM}" in +case "$UNAME_SYSTEM" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu - eval $set_cc_for_build - cat <<-EOF > $dummy.c + set_cc_for_build + cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc @@ -149,13 +152,20 @@ Linux|GNU|GNU/*) LIBC=gnu #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + + # If ldd exists, use it to detect musl libc. + if command -v ldd >/dev/null && \ + ldd --version 2>&1 | grep -q ^musl + then + LIBC=musl + fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in +case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -168,21 +178,31 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + "/sbin/$sysctl" 2>/dev/null || \ + "/usr/sbin/$sysctl" 2>/dev/null || \ + echo unknown)` + case "$UNAME_MACHINE_ARCH" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine="${arch}${endian}"-unknown + ;; + *) machine="$UNAME_MACHINE_ARCH"-unknown ;; esac # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in + # to ELF recently (or will in the future) and ABI. + case "$UNAME_MACHINE_ARCH" in + earm*) + os=netbsdelf + ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build + set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then @@ -197,44 +217,67 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in os=netbsd ;; esac + # Determine ABI tags. + case "$UNAME_MACHINE_ARCH" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in + case "$UNAME_VERSION" in Debian*) release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" + echo "$machine-${os}${release}${abi-}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" + exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" + exit ;; + *:MidnightBSD:*:*) + echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" exit ;; *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" exit ;; *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" exit ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} + echo powerpc-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" + exit ;; + *:Sortix:*:*) + echo "$UNAME_MACHINE"-unknown-sortix + exit ;; + *:Redox:*:*) + echo "$UNAME_MACHINE"-unknown-redox exit ;; + mips:OSF1:*.*) + echo mips-dec-osf1 + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -251,63 +294,54 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; + UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; + UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; + UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; + UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; + UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; + UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; + UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; + UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; + UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos + echo "$UNAME_MACHINE"-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos + echo "$UNAME_MACHINE"-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition @@ -319,7 +353,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} + echo arm-acorn-riscix"$UNAME_RELEASE" exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos @@ -346,38 +380,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} + echo i386-pc-auroraux"$UNAME_RELEASE" exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH="x86_64" - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + UNAME_REL="`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + case `isainfo -b` in + 32) + echo i386-pc-solaris2"$UNAME_REL" + ;; + 64) + echo x86_64-pc-solaris2"$UNAME_REL" + ;; + esac exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in @@ -386,25 +415,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" exit ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} + echo m68k-sun-sunos"$UNAME_RELEASE" exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) - echo m68k-sun-sunos${UNAME_RELEASE} + echo m68k-sun-sunos"$UNAME_RELEASE" ;; sun4) - echo sparc-sun-sunos${UNAME_RELEASE} + echo sparc-sun-sunos"$UNAME_RELEASE" ;; esac exit ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} + echo sparc-auspex-sunos"$UNAME_RELEASE" exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not @@ -415,44 +444,44 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint"$UNAME_RELEASE" exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint"$UNAME_RELEASE" exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint"$UNAME_RELEASE" exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} + echo m68k-milan-mint"$UNAME_RELEASE" exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} + echo m68k-hades-mint"$UNAME_RELEASE" exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} + echo m68k-unknown-mint"$UNAME_RELEASE" exit ;; m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} + echo m68k-apple-machten"$UNAME_RELEASE" exit ;; powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} + echo powerpc-apple-machten"$UNAME_RELEASE" exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} + echo mips-dec-ultrix"$UNAME_RELEASE" exit ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} + echo vax-dec-ultrix"$UNAME_RELEASE" exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} + echo clipper-intergraph-clix"$UNAME_RELEASE" exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { @@ -461,23 +490,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} + echo mips-mips-riscos"$UNAME_RELEASE" exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax @@ -503,17 +532,17 @@ EOF AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] + if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ + [ "$TARGET_BINARY_INTERFACE"x = x ] then - echo m88k-dg-dgux${UNAME_RELEASE} + echo m88k-dg-dgux"$UNAME_RELEASE" else - echo m88k-dg-dguxbcs${UNAME_RELEASE} + echo m88k-dg-dguxbcs"$UNAME_RELEASE" fi else - echo i586-dg-dgux${UNAME_RELEASE} + echo i586-dg-dgux"$UNAME_RELEASE" fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) @@ -530,7 +559,7 @@ EOF echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id @@ -542,14 +571,14 @@ EOF if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #include main() @@ -560,7 +589,7 @@ EOF exit(0); } EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then echo "$SYSTEM_NAME" else @@ -574,26 +603,27 @@ EOF exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} + echo "$IBM_ARCH"-ibm-aix"$IBM_REV" exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx @@ -608,28 +638,28 @@ EOF echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + case "$UNAME_MACHINE" in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + case "$sc_cpu_version" in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + case "$sc_kernel_bits" in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + if [ "$HP_ARCH" = "" ]; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include @@ -662,13 +692,13 @@ EOF exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = "hppa2.0w" ] + if [ "$HP_ARCH" = hppa2.0w ] then - eval $set_cc_for_build + set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler @@ -679,23 +709,23 @@ EOF # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then - HP_ARCH="hppa2.0w" + HP_ARCH=hppa2.0w else - HP_ARCH="hppa64" + HP_ARCH=hppa64 fi fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} + echo "$HP_ARCH"-hp-hpux"$HPUX_REV" exit ;; ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux"$HPUX_REV" exit ;; 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #include int main () @@ -720,11 +750,11 @@ EOF exit (0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) @@ -733,7 +763,7 @@ EOF *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) @@ -741,9 +771,9 @@ EOF exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk + echo "$UNAME_MACHINE"-unknown-osf1mk else - echo ${UNAME_MACHINE}-unknown-osf1 + echo "$UNAME_MACHINE"-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) @@ -768,127 +798,120 @@ EOF echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" exit ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} + echo sparc-unknown-bsdi"$UNAME_RELEASE" exit ;; *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" + exit ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi + else + echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf + fi exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in + case "$UNAME_PROCESSOR" in amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; esac + echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin + echo "$UNAME_MACHINE"-pc-cygwin exit ;; *:MINGW64*:*) - echo ${UNAME_MACHINE}-pc-mingw64 + echo "$UNAME_MACHINE"-pc-mingw64 exit ;; *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 + echo "$UNAME_MACHINE"-pc-mingw32 exit ;; - i*:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 + *:MSYS*:*) + echo "$UNAME_MACHINE"-pc-msys exit ;; i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 + echo "$UNAME_MACHINE"-pc-pw32 exit ;; *:Interix*:*) - case ${UNAME_MACHINE} in + case "$UNAME_MACHINE" in x86) - echo i586-pc-interix${UNAME_RELEASE} + echo i586-pc-interix"$UNAME_RELEASE" exit ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} + echo x86_64-unknown-interix"$UNAME_RELEASE" exit ;; IA64) - echo ia64-unknown-interix${UNAME_RELEASE} + echo ia64-unknown-interix"$UNAME_RELEASE" exit ;; esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin + echo "$UNAME_MACHINE"-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin + echo x86_64-pc-cygwin exit ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; *:GNU:*:*) # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix + *:Minix:*:*) + echo "$UNAME_MACHINE"-unknown-minix exit ;; aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in @@ -901,58 +924,64 @@ EOF EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arc:Linux:*:* | arceb:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arm*:Linux:*:*) - eval $set_cc_for_build + set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf fi fi exit ;; avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + e2k:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + k1om:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el @@ -966,64 +995,70 @@ EOF #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" + test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } ;; - or1k:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + mips64el:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-"$LIBC" exit ;; - or32:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + or32:Linux:*:* | or1k*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; padre:Linux:*:*) - echo sparc-unknown-linux-${LIBC} + echo sparc-unknown-linux-"$LIBC" exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${LIBC} + echo hppa64-unknown-linux-"$LIBC" exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; + PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; + PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; + *) echo hppa-unknown-linux-"$LIBC" ;; esac exit ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} + echo powerpc64-unknown-linux-"$LIBC" exit ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} + echo powerpc-unknown-linux-"$LIBC" exit ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-${LIBC} + echo powerpc64le-unknown-linux-"$LIBC" exit ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-${LIBC} + echo powerpcle-unknown-linux-"$LIBC" + exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} + echo "$UNAME_MACHINE"-dec-linux-"$LIBC" exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. @@ -1037,34 +1072,34 @@ EOF # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx + echo "$UNAME_MACHINE"-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop + echo "$UNAME_MACHINE"-unknown-stop exit ;; i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos + echo "$UNAME_MACHINE"-unknown-atheos exit ;; i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable + echo "$UNAME_MACHINE"-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} + echo i386-unknown-lynxos"$UNAME_RELEASE" exit ;; i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp + echo "$UNAME_MACHINE"-pc-msdosdjgpp exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" fi exit ;; i*86:*:5:[678]*) @@ -1074,12 +1109,12 @@ EOF *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1089,9 +1124,9 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" else - echo ${UNAME_MACHINE}-pc-sysv32 + echo "$UNAME_MACHINE"-pc-sysv32 fi exit ;; pc:*:*:*) @@ -1099,7 +1134,7 @@ EOF # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; @@ -1111,9 +1146,9 @@ EOF exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) @@ -1133,9 +1168,9 @@ EOF test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; @@ -1144,28 +1179,28 @@ EOF test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} + echo m68k-unknown-lynxos"$UNAME_RELEASE" exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} + echo sparc-unknown-lynxos"$UNAME_RELEASE" exit ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} + echo rs6000-unknown-lynxos"$UNAME_RELEASE" exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} + echo powerpc-unknown-lynxos"$UNAME_RELEASE" exit ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} + echo mips-dde-sysv"$UNAME_RELEASE" exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 @@ -1176,7 +1211,7 @@ EOF *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 + echo "$UNAME_MACHINE"-sni-sysv4 else echo ns32k-sni-sysv fi @@ -1196,23 +1231,23 @@ EOF exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos + echo "$UNAME_MACHINE"-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} + echo m68k-apple-aux"$UNAME_RELEASE" exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} + echo mips-nec-sysv"$UNAME_RELEASE" else - echo mips-unknown-sysv${UNAME_RELEASE} + echo mips-unknown-sysv"$UNAME_RELEASE" fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. @@ -1231,46 +1266,56 @@ EOF echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} + echo sx4-nec-superux"$UNAME_RELEASE" exit ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} + echo sx5-nec-superux"$UNAME_RELEASE" exit ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} + echo sx6-nec-superux"$UNAME_RELEASE" exit ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} + echo sx7-nec-superux"$UNAME_RELEASE" exit ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} + echo sx8-nec-superux"$UNAME_RELEASE" exit ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} + echo sx8r-nec-superux"$UNAME_RELEASE" + exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux"$UNAME_RELEASE" exit ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} + echo powerpc-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval $set_cc_for_build + set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi - if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub @@ -1281,27 +1326,33 @@ EOF # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then + if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} + NEO-*:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk"$UNAME_RELEASE" exit ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} + echo nse-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSR-*:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk"$UNAME_RELEASE" exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} + NSV-*:NONSTOP_KERNEL:*:*) + echo nsv-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSX-*:NONSTOP_KERNEL:*:*) + echo nsx-tandem-nsk"$UNAME_RELEASE" exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux @@ -1310,18 +1361,19 @@ EOF echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = "386"; then + # shellcheck disable=SC2154 + if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi - echo ${UNAME_MACHINE}-unknown-plan9 + echo "$UNAME_MACHINE"-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 @@ -1342,14 +1394,14 @@ EOF echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} + echo mips-sei-seiux"$UNAME_RELEASE" exit ;; *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in + case "$UNAME_MACHINE" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; @@ -1358,182 +1410,48 @@ EOF echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" exit ;; i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos + echo "$UNAME_MACHINE"-pc-rdos exit ;; i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros + echo "$UNAME_MACHINE"-pc-aros exit ;; x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx + echo "$UNAME_MACHINE"-unknown-esx + exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs exit ;; esac -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif +echo "$0: unable to guess system type" >&2 -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif +case "$UNAME_MACHINE:$UNAME_SYSTEM" in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 </dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi + ;; +esac cat >&2 < in order to provide the needed -information to handle your system. +If $0 has already been updated, send the following data and any +information you think might be pertinent to config-patches@gnu.org to +provide the necessary information to handle your system. config.guess timestamp = $timestamp @@ -1552,16 +1470,16 @@ hostinfo = `(hostinfo) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" EOF exit 1 # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" 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=/' <. +# 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 @@ -25,7 +25,7 @@ timestamp='2013-10-01' # of the GNU General Public License, version 3 ("GPLv3"). -# Please send patches with a ChangeLog entry to config-patches@gnu.org. +# Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -33,7 +33,7 @@ timestamp='2013-10-01' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -53,12 +53,11 @@ timestamp='2013-10-01' me=`echo "$0" | sed -e 's,.*/,,'` usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. -Operation modes: +Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -68,7 +67,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -90,12 +89,12 @@ while test $# -gt 0 ; do - ) # Use stdin as input. break ;; -* ) - echo "$me: invalid option $1$help" + echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. - echo $1 + echo "$1" exit ;; * ) @@ -111,1211 +110,1159 @@ case $# in exit 1;; esac -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - android-linux) - os=-linux-android - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac +# Split fields of configuration type +IFS="-" read -r field1 field2 field3 field4 <&2 + exit 1 ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + *-*-*-*) + basic_machine=$field1-$field2 + os=$field3-$field4 ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \ + | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \ + | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ + | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ + | storm-chaos* | os2-emx* | rtmk-nova*) + basic_machine=$field1 + os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + os=linux-android + ;; + *) + basic_machine=$field1-$field2 + os=$field3 + ;; + esac ;; - -psos*) - os=-psos + *-*) + # A lone config we happen to match not fitting any pattern + case $field1-$field2 in + decstation-3100) + basic_machine=mips-dec + os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + sun*os*) + basic_machine=$field1 + os=$field2 + ;; + # Manufacturers + dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ + | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ + | unicom* | ibm* | next | hp | isi* | apollo | altos* \ + | convergent* | ncr* | news | 32* | 3600* | 3100* \ + | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ + | ultra | tti* | harris | dolphin | highlevel | gould \ + | cbm | ns | masscomp | apple | axis | knuth | cray \ + | microblaze* | sim | cisco \ + | oki | wec | wrs | winbond) + basic_machine=$field1-$field2 + os= + ;; + *) + basic_machine=$field1 + os=$field2 + ;; + esac + ;; + esac ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + os=bsd + ;; + a29khif) + basic_machine=a29k-amd + os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=scout + ;; + alliant) + basic_machine=fx80-alliant + os= + ;; + altos | altos3068) + basic_machine=m68k-altos + os= + ;; + am29k) + basic_machine=a29k-none + os=bsd + ;; + amdahl) + basic_machine=580-amdahl + os=sysv + ;; + amiga) + basic_machine=m68k-unknown + os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=bsd + ;; + aros) + basic_machine=i386-pc + os=aros + ;; + aux) + basic_machine=m68k-apple + os=aux + ;; + balance) + basic_machine=ns32k-sequent + os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=linux + ;; + cegcc) + basic_machine=arm-unknown + os=cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=bsd + ;; + convex-c2) + basic_machine=c2-convex + os=bsd + ;; + convex-c32) + basic_machine=c32-convex + os=bsd + ;; + convex-c34) + basic_machine=c34-convex + os=bsd + ;; + convex-c38) + basic_machine=c38-convex + os=bsd + ;; + cray) + basic_machine=j90-cray + os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + os= + ;; + da30) + basic_machine=m68k-da30 + os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + os= + ;; + delta88) + basic_machine=m88k-motorola + os=sysv3 + ;; + dicos) + basic_machine=i686-pc + os=dicos + ;; + djgpp) + basic_machine=i586-pc + os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=ose + ;; + gmicro) + basic_machine=tron-gmicro + os=sysv + ;; + go32) + basic_machine=i386-pc + os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=hms + ;; + harris) + basic_machine=m88k-harris + os=sysv3 + ;; + hp300) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=hpux + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=proelf + ;; + i386mach) + basic_machine=i386-mach + os=mach + ;; + vsta) + basic_machine=i386-pc + os=vsta + ;; + isi68 | isi) + basic_machine=m68k-isi + os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + os=sysv + ;; + merlin) + basic_machine=ns32k-utek + os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + os=coff + ;; + morphos) + basic_machine=powerpc-unknown + os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=moxiebox + ;; + msdos) + basic_machine=i386-pc + os=msdos + ;; + msys) + basic_machine=i686-pc + os=msys + ;; + mvs) + basic_machine=i370-ibm + os=mvs + ;; + nacl) + basic_machine=le32-unknown + os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=newsos + ;; + news1000) + basic_machine=m68030-sony + os=newsos + ;; + necv70) + basic_machine=v70-nec + os=sysv + ;; + nh3000) + basic_machine=m68k-harris + os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=cxux + ;; + nindy960) + basic_machine=i960-intel + os=nindy + ;; + mon960) + basic_machine=i960-intel + os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=ose + ;; + os68k) + basic_machine=m68k-none + os=os68k + ;; + paragon) + basic_machine=i860-intel + os=osf + ;; + parisc) + basic_machine=hppa-unknown + os=linux + ;; + pw32) + basic_machine=i586-unknown + os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=rdos + ;; + rdos32) + basic_machine=i386-pc + os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=coff + ;; + sa29200) + basic_machine=a29k-amd + os=udi + ;; + sei) + basic_machine=mips-sei + os=seiux + ;; + sequent) + basic_machine=i386-sequent + os= + ;; + sps7) + basic_machine=m68k-bull + os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + os= + ;; + stratus) + basic_machine=i860-stratus + os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + os= + ;; + sun2os3) + basic_machine=m68000-sun + os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + os= + ;; + sun3os3) + basic_machine=m68k-sun + os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + os= + ;; + sun4os3) + basic_machine=sparc-sun + os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + os= + ;; + sv1) + basic_machine=sv1-cray + os=unicos + ;; + symmetry) + basic_machine=i386-sequent + os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=unicos + ;; + t90) + basic_machine=t90-cray + os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + os=tpf + ;; + udi29k) + basic_machine=a29k-amd + os=udi + ;; + ultra3) + basic_machine=a29k-nyu + os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=none + ;; + vaxv) + basic_machine=vax-dec + os=sysv + ;; + vms) + basic_machine=vax-dec + os=vms + ;; + vxworks960) + basic_machine=i960-wrs + os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=vxworks + ;; + xbox) + basic_machine=i686-pc + os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + os=unicos + ;; + *) + basic_machine=$1 + os= + ;; + esac ;; esac -# Decode aliases for certain CPU-COMPANY combinations. +# Decode 1-component or ad-hoc basic machines case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arceb \ - | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ - | avr | avr32 \ - | be32 | be64 \ - | bfin \ - | c4x | c8051 | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | epiphany \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | k1om \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipsr5900 | mipsr5900el \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 | nios2eb | nios2el \ - | ns16k | ns32k \ - | open8 \ - | or1k | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown + op50n) + cpu=hppa1.1 + vendor=oki ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none + op60c) + cpu=hppa1.1 + vendor=oki ;; - xscaleeb) - basic_machine=armeb-unknown + ibm*) + cpu=i370 + vendor=ibm ;; - - xscaleel) - basic_machine=armel-unknown + orion105) + cpu=clipper + vendor=highlevel ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | k1om-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ - | microblaze-* | microblazeel-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipsr5900-* | mipsr5900el-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* | nios2eb-* | nios2el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown + pmac | pmac-mpw) + cpu=powerpc + vendor=apple ;; + # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att + cpu=m68000 + vendor=att ;; 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux + cpu=we32k + vendor=att ;; bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec + cpu=powerpc + vendor=ibm + os=cnk ;; decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 + cpu=pdp10 + vendor=dec + os=tops10 ;; decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 + cpu=pdp10 + vendor=dec + os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos + cpu=m68k + vendor=motorola ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd + dpx2*) + cpu=m68k + vendor=bull + os=sysv3 ;; encore | umax | mmax) - basic_machine=ns32k-encore + cpu=ns32k + vendor=encore ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose + elxsi) + cpu=elxsi + vendor=elxsi + os=${os:-bsd} ;; fx2800) - basic_machine=i860-alliant + cpu=i860 + vendor=alliant ;; genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 + cpu=ns32k + vendor=ns ;; h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux + cpu=hppa1.1 + vendor=hitachi + os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp + cpu=hppa1.0 + vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp + cpu=m68000 + vendor=hp ;; hp9k3[2-9][0-9]) - basic_machine=m68k-hp + cpu=m68k + vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp + cpu=hppa1.0 + vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm + cpu=hppa1.0 + vendor=hp ;; i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=sysv32 ;; i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=sysv4 ;; i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=sysv ;; i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=solaris2 ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta + j90 | j90-cray) + cpu=j90 + vendor=cray + os=${os:-unicos} ;; iris | iris4d) - basic_machine=mips-sgi + cpu=mips + vendor=sgi case $os in - -irix*) + irix*) ;; *) - os=-irix4 + os=irix4 ;; esac ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze*) - basic_machine=microblaze-xilinx - ;; - mingw64) - basic_machine=x86_64-pc - os=-mingw64 - ;; - mingw32) - basic_machine=i686-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - msys) - basic_machine=i686-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 + cpu=m68000 + vendor=convergent ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + os=mint ;; news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv + cpu=mips + vendor=sony + os=newsos ;; - next | m*-next ) - basic_machine=m68k-next + next | m*-next) + cpu=m68k + vendor=next case $os in - -nextstep* ) + nextstep* ) ;; - -ns2*) - os=-nextstep2 + ns2*) + os=nextstep2 ;; *) - os=-nextstep3 + os=nextstep3 ;; esac ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem + cpu=np1 + vendor=gould ;; op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k + cpu=hppa1.1 + vendor=oki + os=proelf ;; pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux + cpu=hppa1.1 + vendor=hitachi + os=hiuxwe2 ;; pbd) - basic_machine=sparc-tti + cpu=sparc + vendor=tti ;; pbb) - basic_machine=m68k-tti + cpu=m68k + vendor=tti ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + pc532) + cpu=ns32k + vendor=pc532 ;; pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm + cpu=pn + vendor=gould ;; - ppc | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + power) + cpu=power + vendor=ibm ;; ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos | rdos64) - basic_machine=x86_64-pc - os=-rdos - ;; - rdos32) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff + cpu=i386 + vendor=ibm ;; rm[46]00) - basic_machine=mips-siemens + cpu=mips + vendor=siemens ;; rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm + cpu=romp + vendor=ibm ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown + sde) + cpu=mipsisa32 + vendor=sde + os=${os:-elf} ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown + simso-wrs) + cpu=sparclite + vendor=wrs + os=vxworks ;; - sde) - basic_machine=mipsisa32-sde - os=-elf + tower | tower-32) + cpu=m68k + vendor=ncr ;; - sei) - basic_machine=mips-sei - os=-seiux + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu ;; - sequent) - basic_machine=i386-sequent + w65) + cpu=w65 + vendor=wdc ;; - sh) - basic_machine=sh-hitachi - os=-hms + w89k-*) + cpu=hppa1.1 + vendor=winbond + os=proelf ;; - sh5el) - basic_machine=sh5le-unknown + none) + cpu=none + vendor=none ;; - sh64) - basic_machine=sh64-unknown + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 + + *-*) + IFS="-" read -r cpu vendor <&2 - exit 1 + # Recognize the canonical CPU types that are allowed with any + # company name. + case $cpu in + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | abacus \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ + | alphapca5[67] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[lb]e | arme[lb] | armv* \ + | avr | avr32 \ + | asmjs \ + | ba \ + | be32 | be64 \ + | bfin | bs2000 \ + | c[123]* | c30 | [cjt]90 | c4x \ + | c8051 | clipper | craynv | csky | cydra \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | elxsi | epiphany \ + | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ + | h8300 | h8500 \ + | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i*86 | i860 | i960 | ia16 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle \ + | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k | v70 | w65 \ + | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip \ + | m88110 | m88k | maxq | mb | mcore | mep | metag \ + | microblaze | microblazeel \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mmix \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nfp \ + | nios | nios2 | nios2eb | nios2el \ + | none | np1 | ns16k | ns32k \ + | open8 \ + | or1k* \ + | or32 \ + | orion \ + | pdp10 | pdp11 | pj | pjl | pn | power \ + | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ + | pru \ + | pyramid \ + | riscv | riscv32 | riscv64 \ + | rl78 | romp | rs6000 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ + | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ + | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ + | spu \ + | tahoe \ + | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ + | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ + | vax \ + | visium \ + | wasm32 \ + | we32k \ + | x86 | x86_64 | xc16x | xgate | xps100 \ + | xstormy16 | xtensa* \ + | ymp \ + | z8k | z80) + ;; + + *) + echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 + exit 1 + ;; + esac ;; esac # Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` +case $vendor in + digital*) + vendor=dec ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + commodore*) + vendor=cbm ;; *) ;; @@ -1323,197 +1270,246 @@ esac # Decode manufacturer-specific aliases for certain operating systems. -if [ x"$os" != x"" ] +if [ x$os != x ] then case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux + # First match some system type aliases that might get confused + # with valid system types. + # solaris* is a basic system type, with this one exception. + auroraux) + os=auroraux ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` + bluegene*) + os=cnk ;; - -solaris) - os=-solaris2 + solaris1 | solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; - -svr4*) - os=-sysv4 + solaris) + os=solaris2 ;; - -unixware*) - os=-sysv4.2uw + unixware*) + os=sysv4.2uw ;; - -gnu/linux*) + gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; - # First accept the basic system types. + # es1800 is here to avoid being matched by es* (a different OS) + es1800*) + os=ose + ;; + # Some version numbers need modification + chorusos*) + os=chorusos + ;; + isc) + os=isc2.2 + ;; + sco6) + os=sco5v6 + ;; + sco5) + os=sco3.2v5 + ;; + sco4) + os=sco3.2v4 + ;; + sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + ;; + sco3.2v[4-9]* | sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + ;; + scout) + # Don't match below + ;; + sco*) + os=sco3.2v2 + ;; + psos*) + os=psos + ;; + # Now accept the basic system types. # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* | -plan9* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Each alternative MUST end in a * to match a version number. + # sysv* is not here because it comes later, after sysvr4. + gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ + | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\ + | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ + | sym* | kopensolaris* | plan9* \ + | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ + | aos* | aros* | cloudabi* | sortix* \ + | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ + | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ + | knetbsd* | mirbsd* | netbsd* \ + | bitrig* | openbsd* | solidbsd* | libertybsd* \ + | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \ + | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ + | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ + | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \ + | chorusrdb* | cegcc* | glidix* \ + | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ + | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \ + | linux-newlib* | linux-musl* | linux-uclibc* \ + | uxpv* | beos* | mpeix* | udk* | moxiebox* \ + | interix* | uwin* | mks* | rhapsody* | darwin* \ + | openstep* | oskit* | conix* | pw32* | nonstopux* \ + | storm-chaos* | tops10* | tenex* | tops20* | its* \ + | os2* | vos* | palmos* | uclinux* | nucleus* \ + | morphos* | superux* | rtmk* | windiss* \ + | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ + | skyos* | haiku* | rdos* | toppers* | drops* | es* \ + | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ + | midnightbsd*) # Remember, each alternative MUST END IN *, to match a version number. ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) + qnx*) + case $cpu in + x86 | i*86) ;; *) - os=-nto$os + os=nto-$os ;; esac ;; - -nto-qnx*) + hiux*) + os=hiuxwe2 ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` + nto-qnx*) ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` + sim | xray | os68k* | v88r* \ + | windows* | osx | abug | netware* | os9* \ + | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) ;; - -linux-dietlibc) - os=-linux-dietlibc + linux-dietlibc) + os=linux-dietlibc ;; - -linux*) + linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` + lynx*178) + os=lynxos178 ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` + lynx*5) + os=lynxos5 ;; - -opened*) - os=-openedition + lynx*) + os=lynxos ;; - -os400*) - os=-os400 + mac*) + os=`echo "$os" | sed -e 's|mac|macos|'` ;; - -wince*) - os=-wince + opened*) + os=openedition ;; - -osfrose*) - os=-osfrose + os400*) + os=os400 ;; - -osf*) - os=-osf + sunos5*) + os=`echo "$os" | sed -e 's|sunos5|solaris2|'` ;; - -utek*) - os=-bsd + sunos6*) + os=`echo "$os" | sed -e 's|sunos6|solaris3|'` ;; - -dynix*) - os=-bsd + wince*) + os=wince ;; - -acis*) - os=-aos + utek*) + os=bsd ;; - -atheos*) - os=-atheos + dynix*) + os=bsd ;; - -syllable*) - os=-syllable + acis*) + os=aos ;; - -386bsd) - os=-bsd + atheos*) + os=atheos ;; - -ctix* | -uts*) - os=-sysv + syllable*) + os=syllable ;; - -nova*) - os=-rtmk-nova + 386bsd) + os=bsd ;; - -ns2 ) - os=-nextstep2 + ctix* | uts*) + os=sysv ;; - -nsk*) - os=-nsk + nova*) + os=rtmk-nova + ;; + ns2) + os=nextstep2 + ;; + nsk*) + os=nsk ;; # Preserve the version number of sinix5. - -sinix5.*) + sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; - -sinix*) - os=-sysv4 + sinix*) + os=sysv4 ;; - -tpf*) - os=-tpf + tpf*) + os=tpf ;; - -triton*) - os=-sysv3 + triton*) + os=sysv3 ;; - -oss*) - os=-sysv3 + oss*) + os=sysv3 ;; - -svr4) - os=-sysv4 + svr4*) + os=sysv4 ;; - -svr3) - os=-sysv3 + svr3) + os=sysv3 ;; - -sysvr4) - os=-sysv4 + sysvr4) + os=sysv4 ;; - # This must come after -sysvr4. - -sysv*) + # This must come after sysvr4. + sysv*) ;; - -ose*) - os=-ose + ose*) + os=ose ;; - -es1800*) - os=-ose + *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + os=mint ;; - -xenix) - os=-xenix + zvmoe) + os=zvmoe ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint + dicos*) + os=dicos ;; - -aros*) - os=-aros + pikeos*) + # Until real need of OS specific support for + # particular features comes up, bare metal + # configurations are quite functional. + case $cpu in + arm*) + os=eabi + ;; + *) + os=elf + ;; + esac ;; - -zvmoe) - os=-zvmoe + nacl*) ;; - -dicos*) - os=-dicos + ios) ;; - -nacl*) + none) ;; - -none) + *-eabi) ;; *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 exit 1 ;; esac @@ -1529,264 +1525,265 @@ else # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. -case $basic_machine in +case $cpu-$vendor in score-*) - os=-elf + os=elf ;; spu-*) - os=-elf + os=elf ;; *-acorn) - os=-riscix1.2 + os=riscix1.2 ;; arm*-rebel) - os=-linux + os=linux ;; arm*-semi) - os=-aout + os=aout ;; c4x-* | tic4x-*) - os=-coff + os=coff ;; c8051-*) - os=-elf + os=elf + ;; + clipper-intergraph) + os=clix ;; hexagon-*) - os=-elf + os=elf ;; tic54x-*) - os=-coff + os=coff ;; tic55x-*) - os=-coff + os=coff ;; tic6x-*) - os=-coff + os=coff ;; # This must come before the *-dec entry. pdp10-*) - os=-tops20 + os=tops20 ;; pdp11-*) - os=-none + os=none ;; *-dec | vax-*) - os=-ultrix4.2 + os=ultrix4.2 ;; m68*-apollo) - os=-domain + os=domain ;; i386-sun) - os=-sunos4.0.2 + os=sunos4.0.2 ;; m68000-sun) - os=-sunos3 + os=sunos3 ;; m68*-cisco) - os=-aout + os=aout ;; mep-*) - os=-elf + os=elf ;; mips*-cisco) - os=-elf + os=elf ;; mips*-*) - os=-elf - ;; - or1k-*) - os=-elf + os=elf ;; or32-*) - os=-coff + os=coff ;; *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 + os=sysv3 ;; sparc-* | *-sun) - os=-sunos4.1.1 + os=sunos4.1.1 ;; - *-be) - os=-beos + pru-*) + os=elf ;; - *-haiku) - os=-haiku + *-be) + os=beos ;; *-ibm) - os=-aix + os=aix ;; *-knuth) - os=-mmixware + os=mmixware ;; *-wec) - os=-proelf + os=proelf ;; *-winbond) - os=-proelf + os=proelf ;; *-oki) - os=-proelf + os=proelf ;; *-hp) - os=-hpux + os=hpux ;; *-hitachi) - os=-hiux + os=hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv + os=sysv ;; *-cbm) - os=-amigaos + os=amigaos ;; *-dg) - os=-dgux + os=dgux ;; *-dolphin) - os=-sysv3 + os=sysv3 ;; m68k-ccur) - os=-rtu + os=rtu ;; m88k-omron*) - os=-luna + os=luna ;; - *-next ) - os=-nextstep + *-next) + os=nextstep ;; *-sequent) - os=-ptx + os=ptx ;; *-crds) - os=-unos + os=unos ;; *-ns) - os=-genix + os=genix ;; i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 + os=mvs ;; *-gould) - os=-sysv + os=sysv ;; *-highlevel) - os=-bsd + os=bsd ;; *-encore) - os=-bsd + os=bsd ;; *-sgi) - os=-irix + os=irix ;; *-siemens) - os=-sysv4 + os=sysv4 ;; *-masscomp) - os=-rtu + os=rtu ;; f30[01]-fujitsu | f700-fujitsu) - os=-uxpv + os=uxpv ;; *-rom68k) - os=-coff + os=coff ;; *-*bug) - os=-coff + os=coff ;; *-apple) - os=-macos + os=macos ;; *-atari*) - os=-mint + os=mint + ;; + *-wrs) + os=vxworks ;; *) - os=-none + os=none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) +case $vendor in + unknown) case $os in - -riscix*) + riscix*) vendor=acorn ;; - -sunos*) + sunos*) vendor=sun ;; - -cnk*|-aix*) + cnk*|-aix*) vendor=ibm ;; - -beos*) + beos*) vendor=be ;; - -hpux*) + hpux*) vendor=hp ;; - -mpeix*) + mpeix*) vendor=hp ;; - -hiux*) + hiux*) vendor=hitachi ;; - -unos*) + unos*) vendor=crds ;; - -dgux*) + dgux*) vendor=dg ;; - -luna*) + luna*) vendor=omron ;; - -genix*) + genix*) vendor=ns ;; - -mvs* | -opened*) + clix*) + vendor=intergraph + ;; + mvs* | opened*) vendor=ibm ;; - -os400*) + os400*) vendor=ibm ;; - -ptx*) + ptx*) vendor=sequent ;; - -tpf*) + tpf*) vendor=ibm ;; - -vxsim* | -vxworks* | -windiss*) + vxsim* | vxworks* | windiss*) vendor=wrs ;; - -aux*) + aux*) vendor=apple ;; - -hms*) + hms*) vendor=hitachi ;; - -mpw* | -macos*) + mpw* | macos*) vendor=apple ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) vendor=atari ;; - -vos*) + vos*) vendor=stratus ;; esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac -echo $basic_machine$os +echo "$cpu-$vendor-$os" exit # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff --git a/support/man2html.c b/support/man2html.c index 6ba50616a..b10cb9597 100644 --- a/support/man2html.c +++ b/support/man2html.c @@ -522,6 +522,7 @@ read_man_page(char *filename) man_buf[buf_size] = '\n'; man_buf[buf_size + 1] = man_buf[buf_size + 2] = '\0'; } else { + free(man_buf); man_buf = NULL; } fclose(man_stream); @@ -1992,7 +1993,7 @@ unescape (char *c) while (i < l && c[i]) { if (c[i] == '\a') { if (c[i+1]) - strcpy(c + i, c + i + 1); /* should be memmove */ + memmove (c + i, c + i + 1, l - i); else { c[i] = '\0'; break; @@ -2562,7 +2563,6 @@ scan_request(char *c) h = name; if (stat(h, &stbuf) != -1) l = stbuf.st_size; - buf = stralloc(l + 4); #if NOCGI if (!out_length) { char *t, *s; diff --git a/support/shobj-conf b/support/shobj-conf index 1f64433de..7920f1b5c 100755 --- a/support/shobj-conf +++ b/support/shobj-conf @@ -189,7 +189,7 @@ darwin*) darwin[1-7].*) SHOBJ_STATUS=unsupported SHOBJ_LDFLAGS='-dynamic' - SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v' ;; # Darwin 8 == Mac OS X 10.4; Mac OS X 10.N == Darwin N+4 *) @@ -205,7 +205,7 @@ darwin*) ;; esac SHOBJ_LDFLAGS="-dynamiclib -dynamic -undefined dynamic_lookup ${SHOBJ_ARCHFLAGS}" - SHLIB_XLDFLAGS="-dynamiclib ${SHOBJ_ARCHFLAGS}"' -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + SHLIB_XLDFLAGS="-dynamiclib ${SHOBJ_ARCHFLAGS}"' -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v' ;; esac diff --git a/test.c b/test.c index ee6342045..4cb3343cd 100644 --- a/test.c +++ b/test.c @@ -274,7 +274,7 @@ term () value = binary_operator (); /* Might be a switch type argument */ - else if (argv[pos][0] == '-' && argv[pos][2] == '\0') + else if (argv[pos][0] == '-' && argv[pos][1] && argv[pos][2] == '\0') { if (test_unop (argv[pos])) value = unary_operator (); @@ -344,10 +344,10 @@ arithcomp (s, t, op, flags) if (flags & TEST_ARITHEXP) { - l = evalexp (s, &expok); + l = evalexp (s, 0, &expok); if (expok == 0) return (FALSE); /* should probably longjmp here */ - r = evalexp (t, &expok); + r = evalexp (t, 0, &expok); if (expok == 0) return (FALSE); /* ditto */ } @@ -622,15 +622,19 @@ unary_test (op, arg) return (minus_o_option_value (arg) == 1); case 'v': - v = find_variable (arg); #if defined (ARRAY_VARS) - if (v == 0 && valid_array_reference (arg, 0)) + if (valid_array_reference (arg, 0)) { char *t; - t = array_value (arg, 0, 0, (int *)0, (arrayind_t *)0); - return (t ? TRUE : FALSE); + int rtype, ret; + t = array_value (arg, 0, 0, &rtype, (arrayind_t *)0); + ret = t ? TRUE : FALSE; + if (rtype > 0) /* subscript is * or @ */ + free (t); + return ret; } - else if (v && invisible_p (v) == 0 && array_p (v)) + v = find_variable (arg); + if (v && invisible_p (v) == 0 && array_p (v)) { char *t; /* [[ -v foo ]] == [[ -v foo[0] ]] */ @@ -643,6 +647,8 @@ unary_test (op, arg) t = assoc_reference (assoc_cell (v), "0"); return (t ? TRUE : FALSE); } +#else + v = find_variable (arg); #endif return (v && invisible_p (v) == 0 && var_isset (v) ? TRUE : FALSE); @@ -670,7 +676,7 @@ test_binop (op) else if (op[2] == '\0' && op[1] == '~' && (op[0] == '=' || op[0] == '!')) return (1); #endif - else if (op[0] != '-' || op[2] == '\0' || op[3] != '\0') + else if (op[0] != '-' || op[1] == '\0' || op[2] == '\0' || op[3] != '\0') return (0); else { @@ -714,7 +720,7 @@ int test_unop (op) char *op; { - if (op[0] != '-' || op[2] != 0) + if (op[0] != '-' || (op[1] && op[2] != 0)) return (0); switch (op[1]) @@ -736,7 +742,7 @@ two_arguments () { if (argv[pos][0] == '!' && argv[pos][1] == '\0') return (argv[pos + 1][0] == '\0'); - else if (argv[pos][0] == '-' && argv[pos][2] == '\0') + else if (argv[pos][0] == '-' && argv[pos][1] && argv[pos][2] == '\0') { if (test_unop (argv[pos])) return (unary_operator ()); @@ -749,7 +755,7 @@ two_arguments () return (0); } -#define ANDOR(s) (s[0] == '-' && !s[2] && (s[1] == 'a' || s[1] == 'o')) +#define ANDOR(s) (s[0] == '-' && (s[1] == 'a' || s[1] == 'o') && s[2] == 0) /* This could be augmented to handle `-t' as equivalent to `-t 1', but POSIX requires that `-t' be given an argument. */ diff --git a/tests/alias.right b/tests/alias.right index cab07a988..3ab9a7171 100644 --- a/tests/alias.right +++ b/tests/alias.right @@ -18,3 +18,15 @@ one two three four +Error: bar +ok 1 +ok 2 +text +whoops: nullalias +foo +a +a b +a b +a a b +ok 3 +ok 4 diff --git a/tests/alias.tests b/tests/alias.tests index d1ba97b30..6aa1218b0 100644 --- a/tests/alias.tests +++ b/tests/alias.tests @@ -38,3 +38,5 @@ unalias foo bar baz ${THIS_SH} ./alias1.sub ${THIS_SH} ./alias2.sub +${THIS_SH} ./alias3.sub +${THIS_SH} ./alias4.sub diff --git a/tests/alias3.sub b/tests/alias3.sub new file mode 100644 index 000000000..bb94268a8 --- /dev/null +++ b/tests/alias3.sub @@ -0,0 +1,12 @@ +#!/bin/bash +shopt -s expand_aliases +alias foo='oneword' +foo_word='foo' +# +# Fails silently to match 'foo': +# +case "$foo_word" +in + foo) ;; + *) echo bad 1;; +esac diff --git a/tests/alias4.sub b/tests/alias4.sub new file mode 100644 index 000000000..6ea513a17 --- /dev/null +++ b/tests/alias4.sub @@ -0,0 +1,70 @@ +shopt -s expand_aliases + +# from an austin-group report +alias foo="echo 'Error:" +foo bar' + +# from some FreeBSD sh tests + +v=1 +alias a='unalias -a +v=2' +eval a +[ "$v" = 2 ] && echo ok 1 +v=1 +alias a='unalias a +v=2' +eval a +[ "$v" = 2 ] && echo ok 2 + +# make sure command doesn't ever reset anything even if it's made a keyword +unalias -a +alias command=command +alias true='echo bad' +eval 'command true' + +unalias -a +alias alias0=command +alias true='echo bad' +eval 'alias0 true' + +# make sure null aliases are ok +unalias -a +alias nullalias='' +alias foo='echo ' +foo nullalias text +unalias foo + +# aliases shouldn't be expanded in quoted strings even when the previous word +# is an alias whose expansion ends in a space +alias foo="echo 'whoops: " +foo nullalias' + +unalias -a + +# recursive alias definitions +alias echo=echo +eval echo foo + +alias echo='echo a' + +echo +echo b +eval echo b +echo $(eval echo b) + +unalias -a + +# alias expansion when in a command position after redirections +alias e=echo +eval '&1 | sed 's|^.*/||' +#echo $? -for (( i=0; i < 3; i++; 7 )) +{ +${THIS_SH} -c 'for (( i=0; i < 3; i++; 7 )) do echo $i -done -echo $? +done' ; echo $?; } 2>&1 | sed 's|^.*/||' +#echo $? # one-liners added in post-bash-2.04 for ((i=0; i < 20; i++)) do : ; done diff --git a/tests/arith.right b/tests/arith.right index 13c8c7106..2c3d172af 100644 --- a/tests/arith.right +++ b/tests/arith.right @@ -242,14 +242,22 @@ efg e abcdefg efg +0 +0 +0 +0 +0 +0 +0 8 12 -./arith.tests: line 294: ((: x=9 y=41 : syntax error in expression (error token is "y=41 ") -./arith.tests: line 298: a b: syntax error in expression (error token is "b") -./arith.tests: line 299: ((: a b: syntax error in expression (error token is "b") +./arith.tests: line 297: ((: x=9 y=41 : syntax error in expression (error token is "y=41 ") +./arith.tests: line 301: a b: syntax error in expression (error token is "b") +./arith.tests: line 302: ((: a b: syntax error in expression (error token is "b") 42 42 42 42 42 42 -./arith.tests: line 310: b[c]d: syntax error in expression (error token is "d") +./arith.tests: line 314: 'foo' : syntax error: operand expected (error token is "'foo' ") +./arith.tests: line 318: b[c]d: syntax error in expression (error token is "d") diff --git a/tests/arith.tests b/tests/arith.tests index 79ce016d5..bc9490e98 100644 --- a/tests/arith.tests +++ b/tests/arith.tests @@ -283,6 +283,9 @@ ${THIS_SH} ./arith6.sub # part of word expansions such as substring extraction ${THIS_SH} ./arith7.sub +# problems with evaluation of conditional expressions +${THIS_SH} ./arith8.sub + x=4 y=7 @@ -306,5 +309,10 @@ printf "%u\n" $n echo $(( 16#$(printf "%x\n" $n) )) echo $(( 16#$(printf "%X\n" $n) )) +# these are errors +foo=1 +echo $(( 'foo' )) + + # causes longjmp botches through bash-2.05b a[b[c]d]=e diff --git a/tests/arith8.sub b/tests/arith8.sub new file mode 100644 index 000000000..1ab0895ef --- /dev/null +++ b/tests/arith8.sub @@ -0,0 +1,37 @@ +# problems with evaluation of wrong terms in conditional expressions through +# bash-4.4 + +a=0 x="a=1" +((0?x:0)) +echo $a +unset a x + +a=0 x="a=1" +((1?0:x)) +echo $a +unset a x + +a=0 x="a=1" +((0?(x):0)) +echo $a +unset a x + +a=0 x="a=1" +((0?$x:0)) +echo $a +unset a x + +a=0 x="a=1" +((0&&x)) +echo $a +unset a x + +a=0 x="a=1" +((1||x)) +echo $a +unset a x + +a=0 +((0?arr[a=1]:0)) +echo $a +unset a diff --git a/tests/array.right b/tests/array.right index 031a0b7e4..834e5684e 100644 --- a/tests/array.right +++ b/tests/array.right @@ -26,7 +26,7 @@ hello world 11 3 bdef hello world test expression test 2 -./array.tests: line 76: readonly: `a[5]': not a valid identifier +./array.tests: line 79: readonly: `a[5]': not a valid identifier declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2") declare -ar c declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2") @@ -46,17 +46,17 @@ declare -ar c declare -a d=([1]="" [2]="bdef" [5]="hello world" [6]="test" [9]="ninth element") declare -a e=([0]="test") declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element") -./array.tests: line 100: a: readonly variable -./array.tests: line 102: b[]: bad array subscript -./array.tests: line 103: b[*]: bad array subscript -./array.tests: line 104: ${b[ ]}: bad substitution -./array.tests: line 106: c[-2]: bad array subscript -./array.tests: line 107: c: bad array subscript +./array.tests: line 103: a: readonly variable +./array.tests: line 105: b[]: bad array subscript +./array.tests: line 106: b[*]: bad array subscript +this +./array.tests: line 109: c[-2]: bad array subscript +./array.tests: line 110: c: bad array subscript -./array.tests: line 109: d[7]: cannot assign list to array member -./array.tests: line 111: []=abcde: bad array subscript -./array.tests: line 111: [*]=last: cannot assign to non-numeric index -./array.tests: line 111: [-65]=negative: bad array subscript +./array.tests: line 112: d[7]: cannot assign list to array member +./array.tests: line 114: []=abcde: bad array subscript +./array.tests: line 114: [*]=last: cannot assign to non-numeric index +./array.tests: line 114: [-65]=negative: bad array subscript declare -a BASH_ARGC=() declare -a BASH_ARGV=() declare -a BASH_LINENO=([0]="0") @@ -68,8 +68,8 @@ declare -a b=([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd") declare -ar c declare -a d=([1]="test test") declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element") -./array.tests: line 119: unset: ps1: not an array variable -./array.tests: line 123: declare: c: cannot destroy array variables in this way +./array.tests: line 122: unset: ps1: not an array variable +./array.tests: line 126: declare: c: cannot destroy array variables in this way this of this is a test of read using arrays this test @@ -127,7 +127,7 @@ grep [ 123 ] * 6 7 9 5 length = 3 value = new1 new2 new3 -./array.tests: line 239: narray: unbound variable +./array.tests: line 242: narray: unbound variable ./array1.sub: line 1: syntax error near unexpected token `(' ./array1.sub: line 1: `printf "%s\n" -a a=(a 'b c')' ./array2.sub: line 1: declare: `[]=asdf': not a valid identifier @@ -154,10 +154,10 @@ for case if then else 12 14 16 18 20 4414758999202 aaa bbb -./array.tests: line 289: syntax error near unexpected token `<>' -./array.tests: line 289: `metas=( <> < > ! )' -./array.tests: line 290: syntax error near unexpected token `<>' -./array.tests: line 290: `metas=( [1]=<> [2]=< [3]=> [4]=! )' +./array.tests: line 292: syntax error near unexpected token `<>' +./array.tests: line 292: `metas=( <> < > ! )' +./array.tests: line 293: syntax error near unexpected token `<>' +./array.tests: line 293: `metas=( [1]=<> [2]=< [3]=> [4]=! )' abc 3 case 4 abc case if then else 5 @@ -395,7 +395,7 @@ qux: unset array element 0: ok 0 0 1 -2 +./array17.sub: line 30: ~: syntax error: operand expected (error token is "~") 0 0 3 @@ -446,7 +446,7 @@ declare -a a=([0]="1" [1]="2" [2]="3") declare -A a=() declare -- a="([0]=a [1]=b)" declare -a a=([0]="a" [1]="b") -declare -A a=([0]="a" [1]="b" ) +declare -A a=([1]="b" [0]="a" ) declare -a var=([0]="[\$(echo" [1]="total" [2]="0)]=1" [3]="[2]=2]") declare -a var=([0]="[\$(echo total 0)]=1 [2]=2]") declare -a var=([0]="[\$(echo" [1]="total" [2]="0)]=1" [3]="[2]=2]") @@ -502,3 +502,263 @@ unset declare -a a=() declare -A A=() declare -a foo=([0]="1" [1]="(4 5 6)" [2]="3") +a1 +argv[1] = <> +argv[2] = <> +a2 +argv[1] = +argv[1] = +a3 +argv[1] = <> +argv[2] = +a4 +argv[1] = +p1 +argv[1] = <> +argv[2] = <> +p2 +argv[1] = <> +argv[2] = +p3 +argv[1] = + + +./array23.sub: line 9: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ") +./array23.sub: line 10: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ") +foo +0 +foo +foo +foo +6 +./array23.sub: line 21: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )") +./array23.sub: line 22: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )") +0 +0 +0 +IFS=: ${var-$*} +abc +def ghi +jkl +abc +def ghi +jkl +---- +IFS=: ${var=$*} +abc +def ghi +jkl +var=abc:def ghi:jkl +abc +def ghi +jkl +var=abc:def ghi:jkl +---- +IFS=: ${var+$*} +abc +def ghi +jkl +abc +def ghi +jkl +---- +IFS= ${var-$*} +abc +def ghi +jkl +abc +def ghi +jkl +---- +IFS= ${var=$*} +abcdef ghijkl +var=abcdef ghijkl +abcdef ghijkl +var=abcdef ghijkl +---- +IFS= ${var+$*} +abc +def ghi +jkl +abc +def ghi +jkl +1. indexed: +reference: +1. 0 +./array25.sub: line 11: ' ': syntax error: operand expected (error token is "' '") +3. 0 +4. 0 +5. 0 +6. 0 +assignment: +1.declare -a a=([0]="10" [1]="1") +2.declare -a a=([0]="11" [1]="1") +3.declare -a a=([0]="12" [1]="1") +4.declare -a a=([0]="13" [1]="1") +arithmetic: +1.declare -a a=([0]="10" [1]="1") +2.declare -a a=([0]="11" [1]="1") +3.declare -a a=([0]="12" [1]="1") +4.declare -a a=([0]="13" [1]="1") +5.declare -a a=([0]="10" [1]="1") +6.declare -a a=([0]="11" [1]="1") +7.declare -a a=([0]="12" [1]="1") +8.declare -a a=([0]="13" [1]="1") +2. associative: +reference: +1. +2. +3. +4. +5. +6. +assignment: +1.declare -A a=([1]="1" [0]="0" [" "]="10" ) +2.declare -A a=([1]="1" [0]="0" [" "]="11" ) +3.declare -A a=([1]="1" [0]="0" [" "]="12" ) +4.declare -A a=([1]="1" [0]="0" [" "]="13" ) +arithmetic: +1.declare -A a=([1]="1" [0]="0" [" "]="10" ) +2.declare -A a=([1]="1" [0]="0" [" "]="11" ) +3.declare -A a=([1]="1" [0]="0" [" "]="12" ) +4.declare -A a=([1]="1" [0]="0" [" "]="13" ) +5.declare -A a=([1]="1" [0]="0" [" "]="10" ) +6.declare -A a=([1]="1" [0]="0" [" "]="10" ["\" \""]="11" ) +7.declare -A a=([1]="1" [0]="0" [" "]="12" ["\" \""]="11" ) +8.declare -A a=([1]="1" [0]="0" [" "]="12" ["\" \""]="13" ) +argv[1] = +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] = +7 +./array27.sub: line 11: a[]]=7 : syntax error: invalid arithmetic operator (error token is "]=7 ") +declare -A A=([$'\t']="2" [" "]="2" ) +./array27.sub: line 23: ((: A[]]=2 : syntax error: invalid arithmetic operator (error token is "]=2 ") +declare -A A=([$'\t']="2" ["*"]="2" [" "]="2" ["@"]="2" ) +./array27.sub: line 32: A[]]: bad array subscript +declare -A A=([$'\t']="X" ["*"]="X" [" "]="X" ["@"]="X" ) +./array27.sub: line 40: A[]]: bad array subscript +declare -A A=([$'\t']="X" ["*"]="X" [" "]="X" ["@"]="X" ) +./array27.sub: line 48: declare: `A[]]=X': not a valid identifier +declare -A A=(["*"]="X" ["@"]="X" ) +./array27.sub: line 56: declare: `A[]]=X': not a valid identifier +./array27.sub: line 56: A[*]: bad array subscript +./array27.sub: line 56: A[@]: bad array subscript +declare -A A diff --git a/tests/array.tests b/tests/array.tests index b10539376..afd3df51b 100644 --- a/tests/array.tests +++ b/tests/array.tests @@ -21,6 +21,9 @@ unset a a=abcde declare -a a echo ${a[0]} +if [ "$a" != "${a[0]}" ]; then + echo 'array.tests: $a and $a[0] array mismatch' +fi unset a a=abcde @@ -248,7 +251,7 @@ ${THIS_SH} ./array3.sub ${THIS_SH} ./array4.sub set +u -cd /tmp +cd ${TMPDIR:=/tmp} touch 1=bar foo=([10]="bar") @@ -397,3 +400,9 @@ ${THIS_SH} ./array18.sub ${THIS_SH} ./array19.sub ${THIS_SH} ./array20.sub ${THIS_SH} ./array21.sub +${THIS_SH} ./array22.sub +${THIS_SH} ./array23.sub +${THIS_SH} ./array24.sub +${THIS_SH} ./array25.sub +${THIS_SH} ./array26.sub +${THIS_SH} ./array27.sub diff --git a/tests/array22.sub b/tests/array22.sub new file mode 100644 index 000000000..adae6e1a1 --- /dev/null +++ b/tests/array22.sub @@ -0,0 +1,46 @@ +# This isn't perfect behavior, but it establishes a baseline and will provide +# a way to detect behavior changes + +echo a1 +a[0]= a[1]=; recho "${a[@]:-y}" +unset a + +echo a2 +a[1]=; recho "${a[@]:-y}" +a[1]=; recho "${a[*]:-z}" +unset a + +echo a3 +a[0]= a[1]=x; recho "${a[@]:-y}" +unset a + +echo a4 +a[0]= a[1]=x; recho ${a[@]:+y} +unset a + +echo p1 +set '' '' +recho "${@:-y}" + +shift $# + +echo p2 +set '' x +recho "${@:-y}" + +shift $# + +echo p3 +set '' x +recho ${@:+y} + +# problems with * and null expansions dating back to bash's earliest days +A=(''); set -- '' + +echo "<${A[*]:-X}>" "<${*:-X}>" "<${A:-X}>" "<${A[0]:-X}>" + +IFS= +A=('' ''); set -- '' '' +B='' + +echo "<${A[*]:-X}>" "<${*:-X}>" "<${B:-X}>" "<${B[*]:-X}>" diff --git a/tests/array23.sub b/tests/array23.sub new file mode 100644 index 000000000..bd64fe1f4 --- /dev/null +++ b/tests/array23.sub @@ -0,0 +1,28 @@ +# this captures how bash and ksh93 expand indexed array subscripts in +# various contexts. if changes are ever made, or an option added to do +# this differently, the diffs will show up here + +typeset -a array + +index='$( echo >&2 foo )' # Literal shell code should never be evaluated unless an 'eval' is involved. + +echo ${array[ $index ]} # [] expands $index, results in a literal that [] does not re-evaluate. +echo $(( $index )) # (( )) expands $index, results in a literal that (( )) does not re-evaluate. +echo $(( array[ $index ] )) # (( )) expands $index, results in a literal that [] DOES re-evaluate. + +(( array[ $index ] )) + +typeset -a a + +: $(( a[$index]=5 )) + +#shopt -s assoc_expand_once +echo $((1+a[$index])) +echo $((1+a[\$index])) +echo "1+${a[$index]}" + +# intermediate problems discovered while bash-5.0 was in testing +a=0 +echo $(( a[a[0]] )) +echo ${a[a[a[0]]]} +echo $(( a[a[a[0]]] )) diff --git a/tests/array24.sub b/tests/array24.sub new file mode 100644 index 000000000..108f761bc --- /dev/null +++ b/tests/array24.sub @@ -0,0 +1,47 @@ +set -- "abc" "def ghi" "jkl" +A=("$@") + +IFS=':' + +echo 'IFS=: ${var-$*}' +unset var; printf '%s\n' ${var-$*} +printf '%s\n' ${var-${A[*]}} + +echo "----" +echo 'IFS=: ${var=$*}' + +unset var; printf '%s\n' ${var=$*} +printf 'var=%s\n' "$var" + +unset var; printf '%s\n' ${var=${A[*]}} +printf 'var=%s\n' "$var" + +echo "----" +echo 'IFS=: ${var+$*}' + +printf '%s\n' ${var+$*} +printf '%s\n' ${var+${A[*]}} + +echo "----" +echo 'IFS= ${var-$*}' + +IFS='' +unset var; printf '%s\n' ${var-$*} +unset var; printf '%s\n' ${var-${A[*]}} + +echo "----" +echo 'IFS= ${var=$*}' + +unset var +printf '%s\n' ${var=$*} +printf 'var=%s\n' "$var" + +unset var +printf '%s\n' ${var=${A[*]}} +printf 'var=%s\n' "$var" + +echo "----" +echo 'IFS= ${var+$*}' + +printf '%s\n' ${var+$*} +printf '%s\n' ${var+${A[*]}} diff --git a/tests/array25.sub b/tests/array25.sub new file mode 100644 index 000000000..b550d9d5e --- /dev/null +++ b/tests/array25.sub @@ -0,0 +1,70 @@ +# tests with blank subscripts, indexed and associative + +echo 1. indexed: +a[0]=0 a[1]=1 + +v=" " + +echo reference: + +echo 1. ${a[ ]} +echo 2. ${a[' ']} +echo 3. "${a[ ]}" +echo 4. ${a[$v]} +echo 5. ${a["$v"]} +echo 6. "${a[$v]}" + +echo assignment: + +echo -n 1. ; a[ ]=10 ; typeset -p a ; a[0]=0 +echo -n 2. ; a[" "]=11 ; typeset -p a ; a[0]=0 +echo -n 3. ; a[$v]=12 ; typeset -p a ; a[0]=0 +echo -n 4. ; a["$v"]=13 ; typeset -p a ; a[0]=0 + +echo arithmetic: + +echo -n 1. ; (( a[ ]=10 )); typeset -p a ; a[0]=0 +echo -n 2. ; (( a[" "]=11 )); typeset -p a ; a[0]=0 +echo -n 3. ; (( a[$v]=12 )); typeset -p a ; a[0]=0 +echo -n 4. ; (( a["$v"]=13 )); typeset -p a ; a[0]=0 +echo -n 5. ; let "a[ ]=10" ; typeset -p a ; a[0]=0 +echo -n 6. ; let "a[\" \"]=11" ; typeset -p a ; a[0]=0 +echo -n 7. ; let "a[$v]=12" ; typeset -p a ; a[0]=0 +echo -n 8. ; let "a[\"$v\"]=13" ; typeset -p a ; a[0]=0 + +unset -v a v + +echo 2. associative: +shopt -s assoc_expand_once + +typeset -A a +a[0]=0 a[1]=1 + +v=" " + +echo reference: + +echo 1. ${a[ ]} +echo 2. ${a[' ']} +echo 3. "${a[ ]}" +echo 4. ${a[$v]} +echo 5. ${a["$v"]} +echo 6. "${a[$v]}" + +echo assignment: + +echo -n 1. ; a[ ]=10 ; typeset -p a ; a[0]=0 +echo -n 2. ; a[" "]=11 ; typeset -p a ; a[0]=0 +echo -n 3. ; a[$v]=12 ; typeset -p a ; a[0]=0 +echo -n 4. ; a["$v"]=13 ; typeset -p a ; a[0]=0 + +echo arithmetic: + +echo -n 1. ; (( a[ ]=10 )); typeset -p a ; a[0]=0 +echo -n 2. ; (( a[" "]=11 )); typeset -p a ; a[0]=0 +echo -n 3. ; (( a[$v]=12 )); typeset -p a ; a[0]=0 +echo -n 4. ; (( a["$v"]=13 )); typeset -p a ; a[0]=0 +echo -n 5. ; let "a[ ]=10" ; typeset -p a ; a[0]=0 +echo -n 6. ; let "a[\" \"]=11" ; typeset -p a ; a[0]=0 +echo -n 7. ; let "a[$v]=12" ; typeset -p a ; a[0]=0 +echo -n 8. ; let "a[\"$v\"]=13" ; typeset -p a ; a[0]=0 diff --git a/tests/array26.sub b/tests/array26.sub new file mode 100644 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/array27.sub b/tests/array27.sub new file mode 100644 index 000000000..fe1ffd355 --- /dev/null +++ b/tests/array27.sub @@ -0,0 +1,59 @@ +# tests for `problem' keys when using associative arrays and assoc_expand_once +# deal with problems for now; this is a placeholder for if and when I fix them + +typeset -A a +shopt -s assoc_expand_once + +k='[' +echo $(( a[$k]=7 )) + +k=']' +echo $(( a[$k]=7 )) + +unset a + +declare -A A + +for k in $'\t' ' '; do + (( A[$k]=2 )) +done +declare -p A + +for k in ']' '*' '@'; do + (( A[$k]=2 )) +done + +declare -p A + +unset A +declare -A A + +for k in $'\t' ' ' ']' '*' '@'; do + read "A[$k]" <<< X +done +declare -p A + +unset A +declare -A A + +for k in $'\t' ' ' ']' '*' '@'; do + printf -v "A[$k]" "%s" X +done +declare -p A + +unset A +declare -A A + +for k in ']' '*' '@'; do + declare A[$k]=X +done +declare -p A + +unset A +declare -A A + +for k in ']' '*' '@'; do + declare "A[$k]=X" +done +declare -p A + diff --git a/tests/array5.sub b/tests/array5.sub index 778a28df4..00953c4a6 100644 --- a/tests/array5.sub +++ b/tests/array5.sub @@ -4,7 +4,7 @@ mkdir $TMPDIR/bash-test-$$ cd $TMPDIR/bash-test-$$ -trap "cd / ; rm -rf $TMPDIR/bash-test-$$" 0 1 2 3 6 15 +trap "cd $OLDPWD ; rm -rf $TMPDIR/bash-test-$$" 0 1 2 3 6 15 touch '[3]=abcde' diff --git a/tests/assoc.right b/tests/assoc.right index 0a6951d4a..90abb6d64 100644 --- a/tests/assoc.right +++ b/tests/assoc.right @@ -3,43 +3,43 @@ declare -A BASH_CMDS=() declare -A fluff declare -A BASH_ALIASES=() declare -A BASH_CMDS=() -declare -A fluff=([bar]="two" [foo]="one" ) -declare -A fluff=([bar]="two" [foo]="one" ) +declare -A fluff=([foo]="one" [bar]="two" ) +declare -A fluff=([foo]="one" [bar]="two" ) declare -A fluff=([bar]="two" ) declare -A fluff=([bar]="newval" [qux]="assigned" ) ./assoc.tests: line 26: chaff: four: must use subscript when assigning associative array declare -A BASH_ALIASES=() declare -A BASH_CMDS=() -declare -Ai chaff=([one]="10" [zero]="5" ) -declare -Ar waste=([version]="4.0-devel" [source]="./assoc.tests" [lineno]="28" [pid]="42134" ) -declare -A wheat=([two]="b" [three]="c" [one]="a" [zero]="0" ) -declare -A chaff=([one]="10" ["hello world"]="flip" [zero]="5" ) +declare -Ai chaff=([zero]="5" [one]="10" ) +declare -Ar waste=([lineno]="28" [source]="./assoc.tests" [version]="4.0-devel" [pid]="42134" ) +declare -A wheat=([two]="b" [three]="c" [zero]="0" [one]="a" ) +declare -A chaff=(["hello world"]="flip" [zero]="5" [one]="10" ) ./assoc.tests: line 38: waste: readonly variable ./assoc.tests: line 39: unset: waste: cannot unset: readonly variable ./assoc.tests: line 40: chaff[*]: bad array subscript ./assoc.tests: line 41: [*]=12: invalid associative array key -declare -A chaff=([one]="a" ["hello world"]="flip" ) +declare -A chaff=(["hello world"]="flip" [one]="a" ) flip -argv[1] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = argv[2] = -argv[3] = -argv[4] = -argv[1] = -argv[2] = -argv[3] = -argv[1] = -argv[2] = -argv[3] = -argv[4] = -argv[1] = +argv[3] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = ./assoc.tests: line 58: declare: chaff: cannot destroy array variables in this way ./assoc.tests: line 60: chaff[*]: bad array subscript ./assoc.tests: line 61: [*]=12: invalid associative array key -declare -A wheat=([six]="6" ["foo bar"]="qux qix" ) +declare -A wheat=(["foo bar"]="qux qix" [six]="6" ) argv[1] = argv[2] = argv[1] = -declare -A wheat=([six]="6" ["foo bar"]="qux qix" ) +declare -A wheat=(["foo bar"]="qux qix" [six]="6" ) argv[1] = <2> argv[1] = <7> argv[1] = @@ -48,16 +48,16 @@ argv[3] = argv[1] = argv[1] = <16> argv[1] = <16> -argv[1] = <6> -argv[2] = -argv[1] = -argv[2] = -argv[3] = -argv[1] = -argv[2] = +argv[1] = +argv[2] = <6> +argv[1] = +argv[2] = +argv[3] = +argv[1] = +argv[2] = 8 -. /sbin /usr/bin /bin /usr/ucb /usr/local/bin /bin /usr/sbin -. sbin bin bin ucb bin bin sbin +/sbin /usr/bin /bin /usr/ucb /usr/local/bin . /usr/sbin /bin +sbin bin bin ucb bin . sbin bin bin / / / / / / / / @@ -66,83 +66,83 @@ argv[1] = argv[1] = argv[1] = 8 -. /sbin /usr/bin /bin /usr/ucb /usr/local/bin /bin /usr/sbin -. sbin bin bin ucb bin bin sbin +/sbin /usr/bin /bin /usr/ucb /usr/local/bin . /usr/sbin /bin +sbin bin bin ucb bin . sbin bin / / / / / / / 8 4 -- /bin -. ^sbin ^usr^bin ^bin ^usr^ucb ^usr^local^bin ^bin ^usr^sbin -. ^sbin ^usr^bin ^bin ^usr^ucb ^usr^local^bin ^bin ^usr^sbin -. \sbin \usr/bin \bin \usr/ucb \usr/local/bin \bin \usr/sbin -. \sbin \usr\bin \bin \usr\ucb \usr\local\bin \bin \usr\sbin -. \sbin \usr\bin \bin \usr\ucb \usr\local\bin \bin \usr\sbin +^sbin ^usr^bin ^bin ^usr^ucb ^usr^local^bin . ^usr^sbin ^bin +^sbin ^usr^bin ^bin ^usr^ucb ^usr^local^bin . ^usr^sbin ^bin +\sbin \usr/bin \bin \usr/ucb \usr/local/bin . \usr/sbin \bin +\sbin \usr\bin \bin \usr\ucb \usr\local\bin . \usr\sbin \bin +\sbin \usr\bin \bin \usr\ucb \usr\local\bin . \usr\sbin \bin ([a]=1) -qux foo -/usr/local/bin/qux /usr/sbin/foo +foo qux +/usr/sbin/foo /usr/local/bin/qux hits command 0 /sbin/blat - 0 /usr/local/bin/qux - 0 /bin/sh 0 /usr/sbin/foo -blat qux sh foo -/sbin/blat /usr/local/bin/qux /bin/sh /usr/sbin/foo + 0 /bin/sh + 0 /usr/local/bin/qux +blat foo sh qux +/sbin/blat /usr/sbin/foo /bin/sh /usr/local/bin/qux -qux foo -argv[1] = -argv[2] = <-l> -argv[3] = +foo qux +argv[1] = +argv[2] = +argv[3] = <-l> alias blat='cd /blat ; echo $PWD' alias foo='/usr/sbin/foo' alias qux='/usr/local/bin/qux -l' alias sh='/bin/bash --login -o posix' -blat qux sh foo +blat foo sh qux argv[1] = -argv[2] = +argv[2] = argv[3] = -argv[4] = +argv[4] = outside: outside declare -A BASH_ALIASES=() declare -A BASH_CMDS=() -declare -A afoo=([six]="six" ["foo bar"]="foo quux" ) +declare -A afoo=(["foo bar"]="foo quux" [six]="six" ) argv[1] = -argv[2] = -argv[3] = +argv[2] = +argv[3] = outside 2: outside -argv[1] = -argv[1] = -argv[2] = <> -argv[3] = -argv[4] = <> -argv[1] = -argv[1] = -argv[2] = <> -argv[3] = -argv[4] = <> -argv[1] = -argv[1] = -argv[2] = <> -argv[3] = -argv[4] = <> -argv[1] = -argv[1] = -argv[2] = <> -argv[3] = -argv[4] = <> -argv[1] = -argv[1] = -argv[2] = <> -argv[3] = -argv[4] = <> +argv[1] = +argv[1] = <> +argv[2] = +argv[3] = <> +argv[4] = +argv[1] = +argv[1] = <> +argv[2] = +argv[3] = <> +argv[4] = +argv[1] = +argv[1] = <> +argv[2] = +argv[3] = <> +argv[4] = +argv[1] = +argv[1] = <> +argv[2] = +argv[3] = <> +argv[4] = +argv[1] = +argv[1] = <> +argv[2] = +argv[3] = <> +argv[4] = abc def def ./assoc5.sub: line 13: declare: `myarray[foo[bar]=bleh': not a valid identifier -bleh abc def -myarray=(["a]=test1;#a"]="123" [foo]="bleh" ["a]a"]="abc" ["]"]="def" ) +bleh def abc +myarray=([foo]="bleh" ["]"]="def" ["a]=test1;#a"]="123" ["a]a"]="abc" ) 123 -myarray=(["a]=test1;#a"]="123" [foo]="bleh" ["a]a"]="abc" ["a]=test2;#a"]="def" ["]"]="def" ) +myarray=([foo]="bleh" ["]"]="def" ["a]=test2;#a"]="def" ["a]=test1;#a"]="123" ["a]a"]="abc" ) bar"bie doll declare -A foo=(["bar\"bie"]="doll" ) @@ -195,3 +195,37 @@ declare -A assoc=([0]="assoc" ) assoc declare -A assoc=([two]="twoless" [three]="three" [one]="onemore" ) declare -Ar assoc=([two]="twoless" [three]="three" [one]="onemore" ) +declare -A b=([")"]="" ["\""]="" ["]"]="" ["\\"]="" ["\`"]="" ) +declare -A b=(["]"]="" ["\`"]="" ) +declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" ) +./assoc9.sub: line 23: unset: `dict[']': not a valid identifier +./assoc9.sub: line 23: unset: `dict["]': not a valid identifier +./assoc9.sub: line 23: unset: `dict[\]': not a valid identifier +./assoc9.sub: line 23: unset: `dict[`]': not a valid identifier +declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" ) +declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" ) +declare -A dict=() +4 +4 +a[$b]= 5 +declare -A a=(["80's"]="Depeche Mode" ) +./assoc9.sub: line 71: read: `a[80's]': not a valid identifier +declare -A a +declare -A a=(["80's"]="Depeche Mode" ) +./assoc9.sub: line 83: printf: `a[80's]': not a valid identifier +declare -A a +declare -A a=(["80's"]="Depeche Mode" ) +6 +1 +1+5 +declare -A a=(["\$(date >&2)"]="5" ) +declare -A myarray=([foo]="bleh" ["foo[bar"]="bleh" ) +./assoc10.sub: line 1: declare: a: cannot convert indexed to associative array +f: declare -a a +./assoc10.sub: line 4: declare: a: cannot convert associative to indexed array +f: declare -A a + +f: declare -a a +main: declare -- a="7" +f: declare -A a +main: declare -- a="42" diff --git a/tests/assoc.tests b/tests/assoc.tests index 32536b8d2..84326c9c6 100644 --- a/tests/assoc.tests +++ b/tests/assoc.tests @@ -107,7 +107,7 @@ unset flix wheat # TEST - index expansion: no word splitting or globbing typeset -A wheat -cd /tmp +cd ${TMPDIR:=/tmp} touch '[sfiri]' wheat=([s*]=6 [foo bar]=flix ) @@ -174,6 +174,13 @@ T='([a]=1)' echo "${T[@]}" unset T +# peculiar ksh93 semantics for unsubscripted assoc variable reference +declare -A T +T[0]='zero' +if [ "$T" != "${T[0]}" ]; then + echo 'assoc.tests: $T and ${T[0]} mismatch' +fi + ${THIS_SH} ./assoc1.sub ${THIS_SH} ./assoc2.sub @@ -207,3 +214,8 @@ readonly -A assoc declare -p assoc ${THIS_SH} ./assoc8.sub + +# new shopt option to prevent multiple expansion of assoc array subscripts +${THIS_SH} ./assoc9.sub + +${THIS_SH} ./assoc10.sub diff --git a/tests/assoc10.sub b/tests/assoc10.sub new file mode 100644 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/assoc9.sub b/tests/assoc9.sub new file mode 100644 index 000000000..c5fbe45bd --- /dev/null +++ b/tests/assoc9.sub @@ -0,0 +1,110 @@ +typeset -A a=( [\\]= [\"]= [\)]= ) b +for x in "${!a[@]}"; do b[$x]=; done +b+=([\`]= [\]]=) +typeset -p b +for x in "${!a[@]}"; do + unset -v 'b[$x]' +done +typeset -p b + +unset -v a b + +loaddict() +{ + dict['"']=1 + dict['`']=2 + dict["'"]=3 + dict['\']=4 + declare -p dict +} + +del() +{ + unset -v dict["$1"]; +} + +declare -A dict +loaddict +for k in "${!dict[@]}"; do del "$k"; done +declare -p dict + +unset 'dict[@]' + +shopt -s assoc_expand_once +declare -A dict +loaddict +for k in "${!dict[@]}"; do del "$k"; done +declare -p dict + +unset a b dict + +typeset -A a +b="80's" + +((++a[$b])) + +((++a["$b"])) +[[ $((++a[$b])) ]] +[[ $((++a["$b"])) ]] +echo ${a["$b"]} +echo ${a[$b]} + +let "++a[$b]" + +echo 'a[$b]=' "${a[$b]}" + +unset a b + +declare -A a +b="80's" + +: ${a[$b]:='Depeche Mode'} + +declare -p a + +unset a b +shopt -u assoc_expand_once + +typeset -A a +b="80's" + +read a[$b] <<<"Depeche Mode" +typeset -p a + +shopt -s assoc_expand_once +read a[$b] <<<"Depeche Mode" +typeset -p a + +unset a +shopt -u assoc_expand_once + +typeset -A a + +printf -v a[$b] "%s" "Depeche Mode" +typeset -p a + +shopt -s assoc_expand_once + +printf -v a[$b] "%s" "Depeche Mode" +typeset -p a + +unset a + +declare -A a +x='$(date >&2)' +a[$x]=5 + +shopt -s assoc_expand_once +echo $((1+a[$x])) +echo $((1+a[\$x])) +echo "1+${a[$x]}" + +declare -p a + +shopt -s assoc_expand_once +declare -A myarray + +declare myarray["foo[bar"]=bleh +myarray["foo"]=bleh + +declare -p myarray diff --git a/tests/case.right b/tests/case.right index a17234b9f..d2055c9db 100644 --- a/tests/case.right +++ b/tests/case.right @@ -25,3 +25,38 @@ ok 8 ok 9 mysterious 1 mysterious 2 +argv[1] = <\a\b\c\^A\d\e\f> +argv[1] = <\a\b\c\^A\d\e\f> +argv[1] = +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +ok 6 +ok 7 +ok 8 +--- testing: soh +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +--- testing: stx +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +--- testing: del +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 diff --git a/tests/case.tests b/tests/case.tests index 7ab316a7e..fe9c05a72 100644 --- a/tests/case.tests +++ b/tests/case.tests @@ -51,3 +51,6 @@ case " " in ( [" "] ) echo ok;; ( * ) echo no;; esac # tests of quote removal and pattern matching ${THIS_SH} ./case1.sub +${THIS_SH} ./case2.sub +${THIS_SH} ./case3.sub +${THIS_SH} ./case4.sub diff --git a/tests/case2.sub b/tests/case2.sub new file mode 100644 index 000000000..085f888c3 --- /dev/null +++ b/tests/case2.sub @@ -0,0 +1,52 @@ +x=$'\\a\\b\\c\\\001\\d\\e\\f' +y='\a\b\c\\d\e\f' +z=$'abc\001def' + +recho "$x" +recho "$y" +recho "$z" + +case $'abc\001def' in +$x) echo ok 1 ;; +*) echo oops 1;; +esac + +case $z in +$x) echo ok 2 ;; +*) echo oops 2;; +esac + +case $'abc\001def' in +$y) echo ok 3 ;; +*) echo oops 3;; +esac + +case $z in +$y) echo ok 4 ;; +*) echo oops 4;; +esac + +# no backslash before \001 +x=$'\\a\\b\\c\001\\d\\e\\f' +y='\a\b\c\d\e\f' + +case $'abc\001def' in +$x) echo ok 5 ;; +*) echo oops 5;; +esac + +case $z in +$x) echo ok 6 ;; +*) echo oops 6;; +esac + +case $'abc\001def' in +$y) echo ok 7 ;; +*) echo oops 7;; +esac + +case $z in +$y) echo ok 8 ;; +*) echo oops 8;; +esac + diff --git a/tests/case3.sub b/tests/case3.sub new file mode 100644 index 000000000..77526c322 --- /dev/null +++ b/tests/case3.sub @@ -0,0 +1,40 @@ +#!/bin/sh + +testmatch() { + case $1 in + ( $2 ) printf ok1 ;; + ( * ) printf fail1 ;; + esac + case $1,$2 in + ( $2,"$2" ) printf ok2 ;; + ( * ) printf fail2 ;; + esac + case $1, in + ( $2, ) printf ok3 ;; + ( * ) printf fail3 ;; + esac + case ,$2 in + ( ,"$2" ) printf ok4 ;; + ( * ) printf fail4 ;; + esac + case "$1,$2" in + ( $2,"$2" ) printf ok5 ;; + ( * ) printf fail5 ;; + esac + echo +} + +for c in $'\1' $'\2' $'\177'; do + echo -n "--- testing: " + echo "$c" | od -t a | awk 'NR==1 { print $2 } ' + testmatch "${c}" "\\${c}" + testmatch "${c}x" "\\${c}\\x" # bash-git fails case 2 and 5 for $'\1' + testmatch "${c}x" "${c}\\x" + testmatch "${c}x" "${c}x" + testmatch "${c}x" "\\${c}x" + testmatch "x${c}" "\\x\\${c}" + testmatch "x${c}" "x\\${c}" +done + +match() { case $1 in ( $2 ) ;; ( * ) return 1 ;; esac; } +match $'? *x\1y\177z' $'??\\*\\x\\\1\\y\\\177\\z' || echo bad 6 diff --git a/tests/case4.sub b/tests/case4.sub new file mode 100644 index 000000000..56f88baad --- /dev/null +++ b/tests/case4.sub @@ -0,0 +1,25 @@ +shopt -s -o posix +two="t w o" +ten="t e +n" +set 1 "$two" 3 4 5 6 7 8 9 "$ten" + +unset IFS +expvar="$*" +case $* in +"$expvar") ;; +*) echo "failed 1" ;; +esac + +case $* in +$expvar) ;; +*) echo "failed 2" ;; +esac + +alias foo='oneword' +foo_word='foo' +case "$foo_word" +in + foo) ;; + *) echo failed 3;; +esac diff --git a/tests/casemod.right b/tests/casemod.right index ca1de49a9..a5840171d 100644 --- a/tests/casemod.right +++ b/tests/casemod.right @@ -13,10 +13,10 @@ aCKNOWLEDGEMENT oENOPHILE aCKNoWLeDGeMeNT oeNoPHiLe aCKNOWLEDGEMENT oENOPHILE acknowledgement oenophile -Acknowledgement Oenophile -ACKNOWLEDGEMENT OENOPHILE -Acknowledgement Oenophile -AcknOwlEdgEmEnt OEnOphIlE +Oenophile Acknowledgement +OENOPHILE ACKNOWLEDGEMENT +Oenophile Acknowledgement +OEnOphIlE AcknOwlEdgEmEnt oENOPHILE aCKNOWLEDGEMENT oenophile acknowledgement oENOPHILE aCKNOWLEDGEMENT diff --git a/tests/comsub-posix.tests b/tests/comsub-posix.tests index 0650ca987..d53e6ebc9 100644 --- a/tests/comsub-posix.tests +++ b/tests/comsub-posix.tests @@ -1,3 +1,4 @@ +: ${HOME:=/} # works right echo ab$(echo mnop)yz diff --git a/tests/comsub.right b/tests/comsub.right index 09518aae8..71bb205a8 100644 --- a/tests/comsub.right +++ b/tests/comsub.right @@ -28,6 +28,7 @@ ok 4 ok 5 ok 6 xyz +ok 7 \/tmp\/foo\/bar /tmp/foo/bar /tmp/foo/bar @@ -48,3 +49,9 @@ b c 1 2 +d \ +g +d \ +g +d \ +g diff --git a/tests/comsub.tests b/tests/comsub.tests index 4defc31eb..ed56007c0 100644 --- a/tests/comsub.tests +++ b/tests/comsub.tests @@ -44,6 +44,19 @@ bar') # long-standing parse error in all versions up through bash-4.3 echo ${foo:-$(echo a{b,c})} >/dev/null +# parsing problem based on recursively calling bison parser through bash-4.4 +for (( INDEX=0; INDEX<$((10-$(echo length $V_NAME))); INDEX++ )) +do + : +done + +# problem with four-character words followed by a metachar through bash-4.4 +comsub_foo_1() +{ + echo $(while true; do case $HOME in /*) echo abs ;; esac; done) +} + ${THIS_SH} ./comsub1.sub ${THIS_SH} ./comsub2.sub ${THIS_SH} ./comsub3.sub +${THIS_SH} ./comsub4.sub diff --git a/tests/comsub1.sub b/tests/comsub1.sub index 216e03f1f..b1af263be 100644 --- a/tests/comsub1.sub +++ b/tests/comsub1.sub @@ -52,3 +52,9 @@ echo $( # we just took and pasted in some # command substitution echo xyz ) + +# problem with parse_comsub through bash-4.4 +case $(echo $$'x\nx') in +x*) echo bad 7;; +*) echo ok 7;; +esac diff --git a/tests/comsub2.sub b/tests/comsub2.sub index a2d58ad01..d60ae6a0e 100644 --- a/tests/comsub2.sub +++ b/tests/comsub2.sub @@ -3,6 +3,6 @@ qpath='\/tmp\/foo\/bar' echo "$qpath" # it's crazy that all three of these produce the same result -echo ${qpath//\\/} -echo ${qpath//"`echo \\`"/} -echo ${qpath//`echo "\\\\\\\\"`/} +printf "%s\n" ${qpath//\\/} +printf "%s\n" ${qpath//"`printf '%s' \\`"/} +printf "%s\n" ${qpath//`printf '%s' "\\\\\\\\"`/} diff --git a/tests/comsub4.sub b/tests/comsub4.sub new file mode 100644 index 000000000..461a9ad18 --- /dev/null +++ b/tests/comsub4.sub @@ -0,0 +1,27 @@ +x=$(cat <<'EOT' +d \ +g +EOT +) + +echo "$x" +unset x + +x=$( cat <<\EOT\ +4 +d \ +g +EOT4 +) + +echo "$x" +unset x + +x=$( cat <<\EOT +d \ +g +EOT +) + +echo "$x" + diff --git a/tests/cond-regexp2.sub b/tests/cond-regexp2.sub index 71abfb70d..2bea63845 100644 --- a/tests/cond-regexp2.sub +++ b/tests/cond-regexp2.sub @@ -28,3 +28,5 @@ [[ ']' =~ [']'] ]] && echo ok 11 [[ a =~ ['a]'] ]] || echo ok 12 + +[[ "\\" =~ [^]"."] ]] || echo unexpected diff --git a/tests/cond.tests b/tests/cond.tests index 8e4548acb..2cef92931 100755 --- a/tests/cond.tests +++ b/tests/cond.tests @@ -180,6 +180,9 @@ echo ${BASH_REMATCH[@]} if [[ "123abc" == *?(a)bc ]]; then echo ok 42; else echo bad 42; fi if [[ "123abc" == *?(a)bc ]]; then echo ok 43; else echo bad 43; fi +match() { [[ $1 == $2 ]]; } +match $'? *x\1y\177z' $'??\\*\\x\\\1\\y\\\177\\z' || echo bad 44 + foo="" [[ bar == *"${foo,,}"* ]] && echo ok 1 [[ bar == *${foo,,}* ]] && echo ok 2 diff --git a/tests/coproc.tests b/tests/coproc.tests index d347eb749..5066f7c5d 100644 --- a/tests/coproc.tests +++ b/tests/coproc.tests @@ -30,8 +30,8 @@ read LINE <&${REFLECT[0]} echo $LINE { sleep 1; kill $REFLECT_PID; } & -wait $REFLECT_PID >$TMPOUT 2>&1 || echo "coproc.tests: REFLECT: status $?" -grep 'Terminated.*coproc.*REFLECT' < $TMPOUT >/dev/null 2>&1 || { +wait $REFLECT_PID >$TMPOUT 2>&1 || { status=$? ; echo "coproc.tests: REFLECT: status $status" ; } +[[ $status < 128 || $status == 143 ]] || { echo "coproc.tests: wait for REFLECT failed" >&2 } rm -f $TMPOUT diff --git a/tests/dollar-at-star b/tests/dollar-at-star index 2d2a1b66e..0f713dc39 100755 --- a/tests/dollar-at-star +++ b/tests/dollar-at-star @@ -6,6 +6,23 @@ recho "$*" recho $@ recho $* +foo=$* +foo=$@ + +foo="$*" +foo="$@" + +unset -v bar + +foo=${bar:-$*} +foo=${bar:-$@} + +foo=${bar:-"$*"} +foo=${bar:-"$@"} + +foo=${!*} +foo=${!@} + set a b recho "$*" @@ -271,4 +288,18 @@ ${THIS_SH} ./dollar-star6.sub # problem through bash-4.2 ${THIS_SH} ./dollar-star7.sub +# tests for expansions of $* (unquoted) when IFS is null and word splitting is +# not going to be performed. +# problem through bash-4.4 in some parameter expansion contexts +${THIS_SH} ./dollar-star8.sub + +# tests for expansions of "$@" when there are no positional parameter or when +# $1 == '' and the expansion is preceded by something that results in a quoted +# null string +${THIS_SH} ./dollar-at7.sub + +# tests for expansions of $* when in an assignment context (no splitting) and +# IFS is null +${THIS_SH} ./dollar-star9.sub + exit 0 diff --git a/tests/dollar-at-star4.sub b/tests/dollar-at-star4.sub index 690eb677b..be2892ddc 100644 --- a/tests/dollar-at-star4.sub +++ b/tests/dollar-at-star4.sub @@ -33,10 +33,12 @@ unset a unset IFS set a b "c d" printf '<%s>' $* ; echo +printf '<%s>' ${q-$*} ; echo IFS= set a b "c d" printf '<%s>' $* ; echo +printf '<%s>' ${q-$*} ; echo IFS=: set a b diff --git a/tests/dollar-at7.sub b/tests/dollar-at7.sub new file mode 100644 index 000000000..311a6fef3 --- /dev/null +++ b/tests/dollar-at7.sub @@ -0,0 +1,46 @@ +set -- '' + +recho 1 ''"$@" +recho 2 """$@" + +recho 3 "$@""$@" +recho 4 "$x""$@" + +set -- + +echo ----- +recho 1 ''"$@" +recho 2 """$@" + +recho 3 "$@""$@" +recho 4 "$x""$@" + +set -- X + +echo ------ +recho 1 ''"${@/*}" +recho 2 """${@/*}" + +recho 3 "$x""${@/*}" + +recho 4 ''"${@#X}" +recho 5 """${@#X}" + +recho 6 "$x""${@#X}" + +set -- + +echo ----- +recho 1 ''"${@/*}" +recho 2 """${@/*}" + +recho 3 "$x""${@/*}" + +recho 4 ''"${@#X}" +recho 5 """${@#X}" + +recho 6 "$x""${@#X}" + +echo ----- +recho 1 "$novar${*}$(echo)" +recho 2 ''"$novar${@}$(echo)" diff --git a/tests/dollar-star8.sub b/tests/dollar-star8.sub new file mode 100644 index 000000000..72ba10807 --- /dev/null +++ b/tests/dollar-star8.sub @@ -0,0 +1,21 @@ +IFS= +set "abc" "def ghi" "jkl" + +set ${1+$*} +printf '<%s>\n' "$#" "$@" + +set "abc" "def ghi" "jkl" +set $* +printf '<%s>\n' "$#" "$@" + +printf '<%s>\n' $* ; +printf '<%s>\n' ${q:-$*} +printf '<%s>\n' "${q:-$*}" + +IFS=: +printf '<%s>\n' $* ; +printf '<%s>\n' ${q:-$*} +printf '<%s>\n' "${q:-$*}" + +unset -v IFS +printf '<%s>\n' $* $@ diff --git a/tests/dollar-star9.sub b/tests/dollar-star9.sub new file mode 100644 index 000000000..26d0ed21e --- /dev/null +++ b/tests/dollar-star9.sub @@ -0,0 +1,46 @@ +set -- 1 2 + +IFS= + +a=$* b=${*} +c=${*/} d=${*#} e=${*%} f=${*:1} +printf '<%s>' "$a" "$b" "$c" "$d" "$e" "$f"; echo + +unset a b c d e f +: ${a=$*} ${b=${*}} ${c=${*/}} +: ${d=${*#}} ${e=${*%}} ${f=${*:1}} +printf '<%s>' "$a" "$b" "$c" "$d" "$e" "$f" ; echo + +unset f g +f=${*,,} g=${*@Q} +printf '<%s>' "$f" "$g" ; echo + +unset -v a b c d e f g +unset var + +# resetting IFS here + +IFS=$' \t\n' + +printf '%s\n' "${*:1}" +var=${*:1}; printf '%s\n' "$var" +var="${*:1}"; printf '%s\n' "$var" + +unset var +recho ${var-${*}} +recho ${var-${*:1}} +recho "${var-${*:1}}" +recho ${var-"${*:1}"} + +unset var +recho ${var=${*}} +printf 'var=%s\n' "$var" +unset var +recho ${var=${*:1}} +printf 'var=%s\n' "$var" + +a=${*:1} +recho "$a" + +: ${b=${*:1}} +recho "$b" diff --git a/tests/dollar.right b/tests/dollar.right index 1e48c24ee..d72361f9d 100644 --- a/tests/dollar.right +++ b/tests/dollar.right @@ -177,6 +177,8 @@ ab a b a b + + @@ -478,3 +480,100 @@ argv[2] = argv[3] = argv[4] = argv[1] = +<3> + + + +<3> + + + + + + + + + + + + + + + + + + + + + + + + + +argv[1] = <1> +argv[2] = <> +argv[1] = <2> +argv[2] = <> +argv[1] = <3> +argv[2] = <> +argv[1] = <4> +argv[2] = <> +----- +argv[1] = <1> +argv[2] = <> +argv[1] = <2> +argv[2] = <> +argv[1] = <3> +argv[1] = <4> +argv[2] = <> +------ +argv[1] = <1> +argv[2] = <> +argv[1] = <2> +argv[2] = <> +argv[1] = <3> +argv[2] = <> +argv[1] = <4> +argv[2] = <> +argv[1] = <5> +argv[2] = <> +argv[1] = <6> +argv[2] = <> +----- +argv[1] = <1> +argv[2] = <> +argv[1] = <2> +argv[2] = <> +argv[1] = <3> +argv[2] = <> +argv[1] = <4> +argv[2] = <> +argv[1] = <5> +argv[2] = <> +argv[1] = <6> +argv[2] = <> +----- +argv[1] = <1> +argv[2] = <> +argv[1] = <2> +argv[2] = <> +<12><12><12><12><12><12> +<12><12><12><12><12><12> +<12><'1''2'> +1 2 +1 2 +1 2 +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1 2> +argv[1] = <1 2> +argv[1] = <1> +argv[2] = <2> +var=1 2 +argv[1] = <1> +argv[2] = <2> +var=1 2 +argv[1] = <1 2> +argv[1] = <1 2> diff --git a/tests/dstack2.tests b/tests/dstack2.tests index d902bffb4..3aa105b3d 100644 --- a/tests/dstack2.tests +++ b/tests/dstack2.tests @@ -1,3 +1,4 @@ +wdir=$PWD cd / echo expect '~1' @@ -31,3 +32,5 @@ dirs -v -1 echo these lines should be the same dirs -0 echo ~-0 ${DIRSTACK[NDIRS]} + +cd "$wdir" diff --git a/tests/dynvar.right b/tests/dynvar.right new file mode 100644 index 000000000..e1344c60d --- /dev/null +++ b/tests/dynvar.right @@ -0,0 +1,7 @@ +BASHPID ok +BASH_ARGV0 ok +BASH_ARGV0 ok +SECONDS ok +EPOCHSECONDS ok +EPOCHREALTIME ok +echo $BASH_COMMAND diff --git a/tests/dynvar.tests b/tests/dynvar.tests new file mode 100644 index 000000000..a01f5ed28 --- /dev/null +++ b/tests/dynvar.tests @@ -0,0 +1,77 @@ +# specvar -- test some of the dynamic variables + +# BASHPID +pid=$$ +bpid=$BASHPID +subpid=$( (echo $BASHPID) ) + +if [ "$bpid" -ne "$subpid" ]; then echo BASHPID ok; fi + +# BASH_ARGV0 + +BASH_ARGV0=hello +case $0 in +hello) echo BASH_ARGV0 ok ;; +*) echo "BASH_ARGV0 mismatch: $BASH_ARGV0 ($0)" >&2 ;; +esac + +setarg0() +{ + BASH_ARGV0="$1" +} + +setarg0 arg0 +case $0 in +arg0) echo BASH_ARGV0 ok ;; +*) echo "BASH_ARGV0 mismatch: $BASH_ARGV0 ($0)" >&2 ;; +esac + +# SECONDS +before=$SECONDS +sleep 2 +after=$SECONDS + +if (( $after > $before )); then echo SECONDS ok; fi +unset before after + +# EPOCHSECONDS + +# not exact, but should work + +now1=$(perl -e 'print time') +now2=$EPOCHSECONDS + +case $now1 in +$now2) echo EPOCHSECONDS ok ;; +*) echo "current time via perl and EPOCHSECONDS possible mismatch|$now1|$now2" >&2 ;; +esac +unset now1 now2 + +LC_ALL=C # force decimal point to `.' +now1=$EPOCHREALTIME +now2=$EPOCHREALTIME +sec1=${now1%%.*} +sec2=${now2%%.*} + +msec1=${now1##*.} +msec2=${now2##*.} +# cut off leading zeros +shopt -s extglob +msec1=${msec1##*(0)} +msec2=${msec2##*(0)} + +dsec=$(( $sec2 - $sec1 )) +dmsec=$(( $msec2 - $msec1 )) +if (( $dmsec < 0 )); then + dmsec=$(( dmsec + 1000000 )) + dsec=$(( desc - 1 )) +fi + +# not a real test, but ok for a start +if (( $dmsec < 1000000 )); then echo EPOCHREALTIME ok; fi + +${THIS_SH} -c 'echo $BASH_COMMAND' + +# FUNCNAME tested in func.tests +# RANDOM tested in varenv.sh +# LINENO tested in dbg-support diff --git a/tests/errors.right b/tests/errors.right index 362855e3b..83338ae03 100644 --- a/tests/errors.right +++ b/tests/errors.right @@ -120,17 +120,79 @@ after readonly assignment ./errors4.sub: line 7: var: readonly variable ./errors5.sub: line 6: array: unbound variable ./errors5.sub: line 7: array: unbound variable -./errors5.sub: line 10: 7: unbound variable +./errors5.sub: line 8: array[7]: unbound variable ./errors5.sub: line 11: 7: unbound variable +./errors5.sub: line 12: 7: unbound variable after 1: 1 after 2: 1 after 3: 1 -array after 1: 1 -array after 2: 1 -./errors6.sub: line 18: ${-3}: bad substitution -./errors6.sub: line 19: -3: bad substitution +4 +array after 1: 0 + +array after 2: 0 +./errors6.sub: uvar: parameter not set +./errors6.sub: uvar: parameter null or not set + +./errors6.sub: uvar: parameter null or not set +./errors6.sub: line 25: ${-3:-${-3}}: bad substitution +./errors6.sub: line 26: ${-3}: bad substitution +./errors6.sub: line 27: -3: invalid variable name after indir: 1 -./errors6.sub: line 18: ${-3}: bad substitution -./errors6.sub: line 19: -3: bad substitution +./errors6.sub: line 30: -3: invalid variable name + +unset +./errors6.sub: line 37: var: invalid indirect expansion +./errors6.sub: line 38: var: invalid indirect expansion +./errors6.sub: line 41: invalid-ident: invalid variable name +./errors6.sub: line 42: invalid-ident: invalid variable name +./errors6.sub: line 43: invalid-ident: invalid variable name +4 +array after 1: 0 + +array after 2: 0 +./errors6.sub: uvar: parameter not set +./errors6.sub: uvar: parameter null or not set + +./errors6.sub: uvar: parameter null or not set +./errors6.sub: line 25: ${-3:-${-3}}: bad substitution +./errors6.sub: line 26: ${-3}: bad substitution +./errors6.sub: line 27: -3: invalid variable name after indir: 1 -./errors.tests: line 278: `!!': not a valid identifier +./errors6.sub: line 30: -3: invalid variable name + +unset +./errors6.sub: line 37: var: invalid indirect expansion +./errors6.sub: line 38: var: invalid indirect expansion +./errors6.sub: line 41: invalid-ident: invalid variable name +./errors6.sub: line 42: invalid-ident: invalid variable name +./errors6.sub: line 43: invalid-ident: invalid variable name +./errors7.sub: line 8: x: readonly variable +./errors7.sub: line 8: notthere: command not found +after no such command: 127 +./errors7.sub: line 10: x: readonly variable +echo builtin +after non-special builtin: 0 +./errors7.sub: line 12: x: readonly variable +after special builtin: 0 +./errors7.sub: line 14: x: readonly variable +./errors7.sub: line 8: x: readonly variable +./errors7.sub: line 8: notthere: command not found +after no such command: 127 +./errors7.sub: line 10: x: readonly variable +echo builtin +after non-special builtin: 0 +./errors7.sub: line 12: x: readonly variable +./errors7.sub: line 14: x: readonly variable +./errors8.sub: eval: line 7: syntax error: unexpected end of file +ok 1 +./errors8.sub: line 8: v: readonly variable +ok 2 +./errors8.sub: line 9: v: readonly variable +ok 3 +./errors8.sub: line 11: shift: 12: shift count out of range +ok 4 +./errors8.sub: line 13: return: can only `return' from a function or sourced script +ok 5 +./errors8.sub: line 14: set: notanoption: invalid option name +ok 6 +./errors.tests: line 283: `!!': not a valid identifier diff --git a/tests/errors.tests b/tests/errors.tests index ff542f783..e1554cd10 100644 --- a/tests/errors.tests +++ b/tests/errors.tests @@ -270,6 +270,11 @@ ${THIS_SH} ./errors5.sub ${THIS_SH} ./errors6.sub THIS_SH="${THIS_SH} -o posix" ${THIS_SH} ./errors6.sub +${THIS_SH} ./errors7.sub +${THIS_SH} -o posix ./errors7.sub + +${THIS_SH} ./errors8.sub + # this must be last! # in posix mode, a function name must be a valid identifier # this can't go in posix2.tests, since it causes the shell to exit diff --git a/tests/errors5.sub b/tests/errors5.sub index 7d9068b76..112b2a113 100644 --- a/tests/errors5.sub +++ b/tests/errors5.sub @@ -5,6 +5,7 @@ set -u ( echo ${#array} ) ( echo ${array} ) +( echo ${array[7]} ) set -- 1 2 3 ( echo ${#7} ) diff --git a/tests/errors6.sub b/tests/errors6.sub index 3c05625a4..b80580e73 100644 --- a/tests/errors6.sub +++ b/tests/errors6.sub @@ -15,6 +15,29 @@ echo array after 1: $?' 2>/dev/null ${THIS_SH} -c 'typeset -A v ; v["0"]=one ; echo ${v[ ]} echo array after 2: $?' 2>/dev/null +${THIS_SH} -c 'echo ${uvar?}' ./errors6.sub +${THIS_SH} -c 'echo ${uvar:?}' ./errors6.sub +export uvar= +${THIS_SH} -c 'echo ${uvar?}' ./errors6.sub +${THIS_SH} -c 'echo ${uvar:?}' ./errors6.sub +unset uvar + +echo "${-3:-${-3}}" echo ${-3} x=-3; echo ${!x} echo after indir: $? + +function ivar() { echo -n "${!1:-${1}}"; } +ivar -3 + +foo=bar +echo ${!foo} +echo ${!foo:-unset} + +echo ${!var:-unset} +echo ${!var+unset} + +foo=invalid-ident +echo ${!foo} +echo ${!foo:-unset} +echo ${!foo+unset} diff --git a/tests/errors7.sub b/tests/errors7.sub new file mode 100644 index 000000000..067867a1f --- /dev/null +++ b/tests/errors7.sub @@ -0,0 +1,15 @@ +: ${THIS_SH:=./bash} +readonly x=4 + +# in posix mode, these are all variable assignment errors, so strict conformance +# implies that we exit after any of them. ksh93 doesn't do that. we more-or-less +# emulate the ksh93 behavior + +x=8 notthere +echo after no such command: $? +x=8 echo echo builtin +echo after non-special builtin: $? +( x=8 : nosuchdir +echo after special builtin: $? ) +( x=8 $nocmd +echo after assignment error: $? ) diff --git a/tests/errors8.sub b/tests/errors8.sub new file mode 100644 index 000000000..b65e1ab69 --- /dev/null +++ b/tests/errors8.sub @@ -0,0 +1,14 @@ +# the start of a set of tests for command keeping special builtins from +# exiting the shell on failure +set -o posix +readonly v + +command eval '( ' || echo ok 1 + +command export v=foo || echo ok 2 +command readonly v=foo || echo ok 3 + +command shift 12 || echo ok 4 + +command return 16 || echo ok 5 +command set -o notanoption || echo ok 6 diff --git a/tests/exec.right b/tests/exec.right index 81224fa55..6075cc86c 100644 --- a/tests/exec.right +++ b/tests/exec.right @@ -84,9 +84,9 @@ after exit code: 1 exit code: 1 exit code: 1 -exit code: 127 -exit code: 127 -exit code: 127 +exit code: 1 +exit code: 1 +exit code: 1 a b c diff --git a/tests/exec12.sub b/tests/exec12.sub index 4bd6121b3..79bcfc77c 100644 --- a/tests/exec12.sub +++ b/tests/exec12.sub @@ -1,9 +1,11 @@ : ${TMPDIR:=/var/tmp} TMPFILE=$TMPDIR/exitcode +trap 'rm -f $TMPFILE' 0 rm -f $TMPFILE set -e -exit_handler() { echo "exit code: $?" ; touch $TMPFILE; } +# we normalize the exit code to accommodate false returning 255 on Solaris +exit_handler() { echo "exit code: $(( $? != 0 ))" ; touch $TMPFILE; } false() { ! :; } notfound() { nosuchcommand ; } syntaxerror() { !:; } diff --git a/tests/exec7.sub b/tests/exec7.sub index ea2fd0668..0267505c4 100644 --- a/tests/exec7.sub +++ b/tests/exec7.sub @@ -18,3 +18,6 @@ chmod 755 testb/foo PATH=$TMPDIR/testa:$TMPDIR/testb $THIS_SH -c foo rm -rf testa testb + +cd $OLDPWD +exit 0 diff --git a/tests/execscript b/tests/execscript index 3415ae3c6..c1819de79 100644 --- a/tests/execscript +++ b/tests/execscript @@ -59,10 +59,10 @@ echo $? echo $? # kill two birds with one test -- test out the BASH_ENV code -echo echo this is bashenv > /tmp/bashenv -export BASH_ENV=/tmp/bashenv +echo echo this is bashenv > $TMPDIR/bashenv +export BASH_ENV=$TMPDIR/bashenv ${THIS_SH} ./exec3.sub -rm -f /tmp/bashenv +rm -f $TMPDIR/bashenv unset BASH_ENV # we're resetting the $PATH to empty, so this should be last @@ -108,7 +108,7 @@ ${THIS_SH} ./exec6.sub # checks for properly deciding what constitutes an executable file ${THIS_SH} ./exec7.sub -${THIS_SH} -i ./exec8.sub +${THIS_SH} -i ${PWD}/exec8.sub ${THIS_SH} ./exec9.sub diff --git a/tests/exp.right b/tests/exp.right index 96617397d..a2dc86f90 100644 --- a/tests/exp.right +++ b/tests/exp.right @@ -216,6 +216,12 @@ argv[2] = <^C> argv[3] = <^C> argv[4] = <^C> argv[1] = <^A> +argv[1] = +argv[2] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = argv[1] = argv[1] = declare -- var="xyz" @@ -291,7 +297,9 @@ var=abc:def ghi:jkl abcdef ghijkl abcdef ghijkl abcdef ghijkl -abcdef ghijkl +abc +def ghi +jkl abcdef ghijkl abcdef ghijkl abcdef ghijkl @@ -332,3 +340,68 @@ jkl [] [foo] [] +< A >< B >< A >< B > +< A >< B >< A >< B > +< A >< B >< a >< b > +< A >< B >< A >< B > +< A >< B ><' A '><' B '> +----- +< A >< B >< A >< B > +< A >< B >< A >< B > +< A >< B >< a >< b > +< A >< B >< A >< B > +< A >< B ><' A '><' B '> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1 2> +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <12> +argv[1] = <12> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = < > +argv[1] = < > +argv[1] = < > +argv[1] = < > +argv[1] = < > +argv[1] = <12> +argv[1] = <12> +argv[1] = <12> +argv[1] = <12> +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +ok 6 +ok 7 +ok 8 +ok 9 +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +abcdefg +abcdefg +abcdefg +abcdefg +cdefg +abcdefg +abcde +abcdefg diff --git a/tests/exp.tests b/tests/exp.tests index b446d6372..6e364f9ca 100644 --- a/tests/exp.tests +++ b/tests/exp.tests @@ -405,3 +405,6 @@ ${THIS_SH} ./exp6.sub ${THIS_SH} ./exp7.sub ${THIS_SH} ./exp8.sub ${THIS_SH} ./exp9.sub +${THIS_SH} ./exp10.sub +${THIS_SH} ./exp11.sub +${THIS_SH} ./exp12.sub diff --git a/tests/exp10.sub b/tests/exp10.sub new file mode 100644 index 000000000..6592bab97 --- /dev/null +++ b/tests/exp10.sub @@ -0,0 +1,26 @@ +set -- ' A ' ' B ' +IFS= + +printf '<%s>' ${*} ${*##} +echo +printf '<%s>' ${*} ${*/} +echo +printf '<%s>' ${*} ${*,,} +echo +printf '<%s>' ${*} ${*:1:2} +echo +printf '<%s>' ${*} ${*@Q} +echo + +echo ----- + +printf '<%s>' ${@} ${@##} +echo +printf '<%s>' ${@} ${@/} +echo +printf '<%s>' ${@} ${@,,} +echo +printf '<%s>' ${@} ${@:1:2} +echo +printf '<%s>' ${@} ${@@Q} +echo diff --git a/tests/exp11.sub b/tests/exp11.sub new file mode 100644 index 000000000..cae7b19cd --- /dev/null +++ b/tests/exp11.sub @@ -0,0 +1,92 @@ +set -- '1 2' + +unset var +recho ${var-${*:1}} + +unset var +recho ${var=$*} + +unset var +recho ${var=${*:1}} +recho "$var" + +# posix interp 221 +unset var +recho ${var:-a\ b} + +recho ${var:=a\ b} +recho "$var" + +set -- 1 2 +IFS= + +unset a b c +recho $* +recho ${a-$*} +recho ${b-${*/}} +recho ${c=${*/}} +recho "$c" +recho ${b-${*,,}} +recho ${d-${*,,}} + +unset -v a b c +IFS=$' \t\n' + +set -- ' ' +A=(' ') + +IFS= +unset var +var=${*@E} +recho "$var" + +unset var +var=${A[*]@E} +recho "$var" + +unset var +var=${@@E} +recho "$var" + +unset var +var=${A[@]@E} +recho "$var" + +unset novar +recho ${novar-${A[*]@E}} + +unset -v var novar +IFS=$' \t\n' + +set -- 1 2 +A=( 1 2 ) +IFS= + +a=$* +recho "$a" +b=${*@E} +recho "$b" + +unset a b +a=${A[*]} +recho "$a" +b=${A[*]@E} +recho "$b" + +set -- $'\t' +A=$1 + +IFS=$1 +[[ ${A[@]} ]] && echo ok 1 +[[ ${A[*]} ]] && echo ok 2 +[[ ${A[0]} ]] && echo ok 3 + +IFS=$' \t\n' +[[ ${A[@]} ]] && echo ok 4 +[[ ${A[*]} ]] && echo ok 5 +[[ ${A[0]} ]] && echo ok 6 + +IFS= +[[ ${A[@]} ]] && echo ok 7 +[[ ${A[*]} ]] && echo ok 8 +[[ ${A[0]} ]] && echo ok 9 diff --git a/tests/exp12.sub b/tests/exp12.sub new file mode 100644 index 000000000..0aaa2f441 --- /dev/null +++ b/tests/exp12.sub @@ -0,0 +1,38 @@ +# force single-byte versions of these functions + +export LANG=C + +# remove shortest trailing match +x=file.c +recho ${x%.c}.o + +# remove longest trailing match +x=posix/src/std +recho ${x%%/*} + +# remove shortest leading pattern +x=$HOME/src/cmd +recho ${x#$HOME} + +# remove longest leading pattern +x=/one/two/three +recho ${x##*/} + +# and no match thrown in for good measure +recho ${x#nomatch} + +foo=abcdefg + +# fail +echo ${foo%ab} +echo ${foo%def} + +echo ${foo#fg} +echo ${foo#def} + +# succeed +echo ${foo#ab} +echo ${foo#def} + +echo ${foo%fg} +echo ${foo%def} diff --git a/tests/exp5.sub b/tests/exp5.sub index 9346b5792..52dd4a15e 100644 --- a/tests/exp5.sub +++ b/tests/exp5.sub @@ -1,15 +1,14 @@ # expansions involving patterns - var='[hello' echo "${var//[/}" red='\[\e[0;31m\]' -echo "${red//\\[\\e/}" +printf "%s\n" "${red//\\[\\e/}" foo="${red//\\[\\e/}" # foo == [0;31m\] -echo "${foo//[0;31m\\/}" +printf "%s\n" "${foo//[0;31m\\/}" echo "${var//[]/}" echo "${red//[]/}" diff --git a/tests/exp7.sub b/tests/exp7.sub index 0a4acc3c9..f3f3b6bd9 100644 --- a/tests/exp7.sub +++ b/tests/exp7.sub @@ -9,3 +9,15 @@ recho $# "$1" "$2" "$3" x=$c recho "$x" + +unset c c2 x + +c=$'Y\1Y'; + +v=X${c}X; +recho X${c}X +recho "$v" + +v=X$c +recho X$c +recho "$v" diff --git a/tests/exp8.sub b/tests/exp8.sub index 99340838b..ff44febcf 100644 --- a/tests/exp8.sub +++ b/tests/exp8.sub @@ -10,11 +10,11 @@ declare -p var | sed -n l recho ${var@Q} recho ${var@P} -echo ${var@A} +echo -E ${var@A} unset array array=( [$'x\001y\177z']=foo ) # should be error -echo ${array[@]@A} +echo -E ${array[@]@A} unset array declare -a array=([0]=$'x\001y\177z') @@ -23,9 +23,9 @@ declare -p array unset array array=( "$var" ) recho ${array[@]} -echo ${array[@]@A} +echo -E ${array[@]@A} unset array declare -A array array=( [$'x\001y\177z']=$'a\242b\002c' ) -echo ${array[@]@A} +echo -E ${array[@]@A} diff --git a/tests/extglob.right b/tests/extglob.right index efb7e5fbb..691f6879d 100644 --- a/tests/extglob.right +++ b/tests/extglob.right @@ -94,14 +94,23 @@ a ab a . .. . .. a.log +*(foo) +*(foo|bar) a.log ?(foo) a.log a.log . .. +. .. +a.log a.log .x .y .z a b c .x .y .z a b c a b c a b c +a b c +a b c +.x .y .z a b c +.x .y .z a b c +* diff --git a/tests/extglob.tests b/tests/extglob.tests index a51c4db15..32a6569fb 100644 --- a/tests/extglob.tests +++ b/tests/extglob.tests @@ -374,4 +374,6 @@ ${THIS_SH} ./extglob3.sub ${THIS_SH} ./extglob4.sub +${THIS_SH} ./extglob5.sub + exit 0 diff --git a/tests/extglob1a.sub b/tests/extglob1a.sub index e029ea491..686dab74b 100644 --- a/tests/extglob1a.sub +++ b/tests/extglob1a.sub @@ -12,5 +12,5 @@ echo a!(x) echo a*?(x) echo a?(x) -builtin cd / +builtin cd $OLDPWD rm -rf $TESTDIR diff --git a/tests/extglob3.sub b/tests/extglob3.sub index 94567ee99..3f51c40cd 100644 --- a/tests/extglob3.sub +++ b/tests/extglob3.sub @@ -1,5 +1,5 @@ shopt -s extglob -DIR=/tmp/extglob-$$ +DIR=$TMPDIR/extglob-$$ mkdir $DIR cd $DIR @@ -7,15 +7,18 @@ touch a.log echo *(.) echo *(.)* +echo *(foo) +echo *(foo|bar) echo ?(foo)* echo ?(foo) echo *(foo)* echo @(|foo)* echo *(foo).* +echo *(foo|bar).* echo !(foo)* +echo !(foo|bar)* cd $OLDPWD rm -rf $DIR - diff --git a/tests/extglob4.sub b/tests/extglob4.sub index 2ec8f3197..2b4c53c9f 100644 --- a/tests/extglob4.sub +++ b/tests/extglob4.sub @@ -19,7 +19,14 @@ echo @(*|.!(|.)) # wrong, adds . and .. echo @(*|@(f)) # ?? echo @(*|@(ff)) -cd / +echo !(f) +echo !(f)!(f) + +shopt -s dotglob +echo @(*|@(f)) +echo @(*|@(ff)) + +cd $OLDPWD rm -rf $GTDIR [[ a = a*?(/)b ]] && echo bad match 1 diff --git a/tests/extglob5.sub b/tests/extglob5.sub new file mode 100644 index 000000000..d400f8390 --- /dev/null +++ b/tests/extglob5.sub @@ -0,0 +1,18 @@ +# globignore extglob patterns containing colons -- problem until bash-4.2 + +: ${TMPDIR:=/tmp} +TESTDIR=$TMPDIR/bash-globignore-$$ +[ -d "$TESTDIR" ] || mkdir "$TESTDIR" + +cd "$TESTDIR" || exit 2 + +shopt -s extglob +GLOBIGNORE='+([^[:alnum:]]):@([-.,:; _]):[![:alnum:]]' + +touch ';' '++' +echo * + +rm ';' '++' + +cd $OLDPWD +rmdir $TESTDIR diff --git a/tests/getopts5.sub b/tests/getopts5.sub index 30614ef92..874b28107 100644 --- a/tests/getopts5.sub +++ b/tests/getopts5.sub @@ -2,7 +2,7 @@ getop () { - local OPTIND + local OPTIND=1 local OPTERR=1 echo getop: OPTERR=$OPTERR diff --git a/tests/glob.right b/tests/glob.right index 04a0fd5f0..1ead7b61d 100644 --- a/tests/glob.right +++ b/tests/glob.right @@ -1,4 +1,66 @@ foo/bar foobar/bar +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +b +argv[1] = +argv[1] = +argv[1] = +argv[1] = +0000000 141 243 134 142 +0000004 +ok 6 +ok 7 +invalid bracket expression +== LANG=C == +[[:alpha:] +ok 1 +[a +[[:alpha:] +ok 2 +ok 3 +== LANG=en_US.UTF-8 == +[[:alpha:] +ok 1 +[a +[[:alpha:] +ok 2 +ok 3 +invalid character class +== LANG=C == +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +ok 6 +== LANG=en_US.UTF-8 == +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +ok 6 +invalid collating symbols +== LANG=C == +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +== LANG=en_US.UTF-8 == +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +argv[1] = +a? +argv[1] = +a? +aa argv[1] = argv[2] = argv[3] = @@ -13,7 +75,7 @@ argv[2] = argv[3] = argv[4] = tmp/l1 tmp/l2 tmp/*4 tmp/l3 -./glob.tests: line 44: no match: tmp/*4 +./glob.tests: line 47: no match: tmp/*4 argv[1] = argv[1] = <*> argv[1] = diff --git a/tests/glob.tests b/tests/glob.tests index d32988bc4..01913bbe0 100644 --- a/tests/glob.tests +++ b/tests/glob.tests @@ -4,15 +4,18 @@ export LC_COLLATE=C # expect() { - echo expect "$@" +: # if needed, change me to echo expect "$@" } # First, a test that bash-2.01.1 fails ${THIS_SH} ./glob1.sub +${THIS_SH} ./glob2.sub +${THIS_SH} ./glob3.sub +${THIS_SH} ./glob4.sub MYDIR=$PWD # save where we are -TESTDIR=/tmp/glob-test +TESTDIR=$TMPDIR/glob-test-$$ mkdir $TESTDIR builtin cd $TESTDIR || { echo $0: cannot cd to $TESTDIR >&2 ; exit 1; } rm -rf * diff --git a/tests/glob1.sub b/tests/glob1.sub index 8745cd99a..6b3b8ad1a 100644 --- a/tests/glob1.sub +++ b/tests/glob1.sub @@ -1,7 +1,10 @@ # bash-2.01.1 failed this test -FN=/tmp/bash-glob.$$ +: ${TMPDIR:=/var/tmp} + +FN=$TMPDIR/bash-glob.$$ mkdir $FN cd $FN + mkdir foo mkdir foobar touch foo/bar @@ -10,5 +13,5 @@ chmod 311 foo foobar echo f*/bar chmod 777 foo foobar -cd / +cd $OLDPWD rm -rf $FN diff --git a/tests/glob2.sub b/tests/glob2.sub new file mode 100644 index 000000000..d33013b67 --- /dev/null +++ b/tests/glob2.sub @@ -0,0 +1,44 @@ +. ./test-glue-functions + +var='ab\' + +case $var in +ab\\) echo ok 1;; +*) echo bad 1;; +esac + +case $var in +$var) echo ok 2;; +*) echo bad 2;; +esac + +case $var in +'ab\') echo ok 3;; +*) echo bad 3;; +esac + +[[ $var = $var ]] && echo ok 4 +[[ $var = $'ab\134' ]] && echo ok 5 + +LC_ALL=zh_HK.big5hkscs + +read a b c <<< $'\u3b1 b c\n' +echo $b +unset a b c + +export alpha=$'\u3b1' + +printf -v v 'A%sB' "$alpha" +recho "$v" +IFS=$alpha read a b c <<<"$v" +recho "$a" +recho "$b" +unset a b v + +recho "a${alpha}b" +printf "%s" "a${alpha}b" | LC_ALL=C od -b | _intl_normalize_spaces + +a=$'\u3b1' +[[ $a = $a ]] && echo ok 6 + +LC_ALL=zh_HK.big5hkscs ${THIS_SH} -c $'[[ \u3b1 = \u3b1 ]]' && echo ok 7 diff --git a/tests/glob3.sub b/tests/glob3.sub new file mode 100644 index 000000000..378234dbc --- /dev/null +++ b/tests/glob3.sub @@ -0,0 +1,123 @@ +: ${TMPDIR:=/var/tmp} +cd $TMPDIR + +matchfunc() +{ + echo == LANG=$LANG == + + touch a p + echo [[:alpha:] + rm a p + + case l in + [[:alpha:]) echo bad 1;; + *) echo ok 1;; + esac + + touch '[a' '[x' + echo [[:alpha:] + rm '[a' + echo [[:alpha:] + rm '[x' + + case [a in + [[:alpha:]) echo ok 2;; + *) echo bad 2;; + esac + + case [x in + [[:alpha:]) echo bad 3;; + *) echo ok 3;; + esac +} + +echo invalid bracket expression +export LANG=C +matchfunc + +export LANG=en_US.UTF-8 +matchfunc + +unset -f matchfunc + +matchfunc() +{ + echo == LANG=$LANG == + + case a] in + [[:aleph:]]) echo bad 1;; + *) echo ok 1;; + esac + + case a in + [[:aleph:]]) echo bad 2;; + *) echo ok 2;; + esac + + case a] in + [[:"alpha":]]) echo bad 3;; + *) echo ok 3;; + esac + + case a in + [[:"alpha":]]) echo bad 4;; + *) echo ok 4;; + esac + + case a in + [abc[:foo:]]) echo ok 5;; + *) echo bad 5 ;; + esac + + case a in + [[:foo:]abc]) echo ok 6;; + *) echo bad 6 ;; + esac +} + +echo invalid character class +export LANG=C +matchfunc + +export LANG=en_US.UTF-8 +matchfunc + +unset -f matchfunc + +matchfunc() +{ + echo == LANG=$LANG == + + case h in + [[.hyphen.]) echo bad 1;; + *) echo ok 1;; + esac + + case - in + [[.hyphen.]]) echo ok 2;; + *) echo bad 2;; + esac + + case slash in + [[.slash.]]) echo bad 3;; + *) echo ok 3;; + esac + + case a in + [abc[.nonsense.]]) echo ok 4;; + *) echo bad 4 ;; + esac + + case a in + [[.nonsense.]abc]) echo ok 5;; + *) echo bad 5 ;; + esac +} + +echo invalid collating symbols + +export LANG=C +matchfunc + +export LANG=en_US.UTF-8 +matchfunc diff --git a/tests/glob4.sub b/tests/glob4.sub new file mode 100644 index 000000000..378b5a926 --- /dev/null +++ b/tests/glob4.sub @@ -0,0 +1,13 @@ +trap "rm 'a?' aa" EXIT +touch 'a?' aa + +set -- a \?; IFS=\\; var=$*; +recho "$var" +unset IFS; printf "%s\n" ${var} + +var='a\?' +recho "$var" +printf "%s\n" ${var} + +var='a\a' +printf "%s\n" ${var} diff --git a/tests/globstar2.sub b/tests/globstar2.sub index f4bb1b1c4..4e1a02455 100644 --- a/tests/globstar2.sub +++ b/tests/globstar2.sub @@ -1,5 +1,6 @@ olddir=$PWD -EMPTY=/tmp/empty +: ${TMPDIR:=/var/tmp} +EMPTY=$TMPDIR/empty shopt -s globstar s() diff --git a/tests/heredoc.right b/tests/heredoc.right index 137a2956d..f6541dcaf 100644 --- a/tests/heredoc.right +++ b/tests/heredoc.right @@ -20,7 +20,7 @@ jkl mno fff is a function fff () { - ed /tmp/foo > /dev/null < /dev/null /^name/d w q @@ -31,7 +31,7 @@ ENDOFINPUT fff is a function fff () { - ed /tmp/foo > /dev/null < /dev/null /^name/d w q @@ -43,11 +43,11 @@ foo is a function foo () { echo; - cat <\END -./heredoc3.sub: line 78: warning: here-document at line 76 delimited by end-of-file (wanted `EOF') -./heredoc3.sub: line 79: syntax error: unexpected end of file +./heredoc3.sub: line 85: warning: here-document at line 83 delimited by end-of-file (wanted `EOF') +./heredoc3.sub: line 86: syntax error: unexpected end of file +heredoc1 +EOF +Ok:0 +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[3] = comsub here-string ./heredoc.tests: line 105: warning: here-document at line 103 delimited by end-of-file (wanted `EOF') hi diff --git a/tests/heredoc.tests b/tests/heredoc.tests index ebc770ac0..303949f48 100644 --- a/tests/heredoc.tests +++ b/tests/heredoc.tests @@ -59,22 +59,22 @@ cat <<- EOF EOF # check appending of text to file from here document -rm -f /tmp/bash-zzz -cat > /tmp/bash-zzz << EOF +rm -f ${TMPDIR}/bash-zzz +cat > ${TMPDIR}/bash-zzz << EOF abc EOF -cat >> /tmp/bash-zzz << EOF +cat >> ${TMPDIR}/bash-zzz << EOF def ghi jkl mno EOF -cat /tmp/bash-zzz -rm -f /tmp/bash-zzz +cat ${TMPDIR}/bash-zzz +rm -f ${TMPDIR}/bash-zzz # make sure command printing puts the here-document as the last redirection # on the line, and the function export code preserves syntactic correctness fff() { - ed /tmp/foo </dev/null + ed ${TMPDIR}/foo </dev/null /^name/d w q @@ -90,8 +90,8 @@ ${THIS_SH} ./heredoc1.sub # test heredocs in command substitutions ${THIS_SH} ./heredoc2.sub - ${THIS_SH} ./heredoc3.sub +${THIS_SH} ./heredoc4.sub echo $( cat <<< "comsub here-string" diff --git a/tests/heredoc3.sub b/tests/heredoc3.sub index baf91c140..a5a2fbc02 100644 --- a/tests/heredoc3.sub +++ b/tests/heredoc3.sub @@ -1,4 +1,5 @@ SAVEPWD=$PWD +: ${TMPDIR:=/tmp} cd $TMPDIR || echo "heredoc3.sub: cannot cd to $TMPDIR" >&2 text=$(cat <\END' +echo -E end 'hello\END' + +# gprof +if [ -n "$GMON_OUT_PREFIX" ]; then + mv ${GMON_OUT_PREFIX}.[0-9]* "$SAVEPWD" >/dev/null 2>&1 +fi +cd "$SAVEPWD" # this has to be last -- results in a syntax error # doesn't currently parse because EOF is not on a line by itself -- should it? diff --git a/tests/heredoc4.sub b/tests/heredoc4.sub new file mode 100644 index 000000000..381b64a97 --- /dev/null +++ b/tests/heredoc4.sub @@ -0,0 +1,12 @@ +cat < /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 99c7520d1..5ae925e13 100644 --- a/tests/histexp.tests +++ b/tests/histexp.tests @@ -1,6 +1,6 @@ LC_ALL=C LANG=C -trap 'rm /tmp/newhistory' 0 +trap 'rm $TMPDIR/newhistory' 0 file=bax histchars='!^#' # make sure history comment char is set correctly @@ -25,7 +25,7 @@ history -p '!!:z' history -HISTFILE=/tmp/newhistory +HISTFILE=$TMPDIR/newhistory history -a history -w @@ -140,3 +140,5 @@ ${THIS_SH} ./histexp1.sub ${THIS_SH} ./histexp2.sub ${THIS_SH} ./histexp3.sub ${THIS_SH} ./histexp4.sub +${THIS_SH} ./histexp5.sub +${THIS_SH} ./histexp6.sub diff --git a/tests/histexp3.sub b/tests/histexp3.sub index ae2b4986d..495f0952b 100644 --- a/tests/histexp3.sub +++ b/tests/histexp3.sub @@ -31,5 +31,14 @@ echo "!!" echo g eval echo "!!" +echo h +echo \!\! `echo !!` + +echo i +echo !! `echo !!` + +echo j +echo `echo j` !! + set +o history rm -f $HISTFILE # just in case diff --git a/tests/histexp5.sub b/tests/histexp5.sub new file mode 100644 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/history.right b/tests/history.right index de8e22b46..d83fc7180 100644 --- a/tests/history.right +++ b/tests/history.right @@ -36,13 +36,13 @@ echo line for history echo line for history displaying $HISTFILE after history -a echo line for history -HISTFILE=/tmp/newhistory +HISTFILE=$TMPDIR/newhistory 1 for i in one two three; do echo $i; done 2 /bin/sh -c 'echo this is $0' 3 ls 4 echo $BASH_VERSION 5 echo line for history - 6 HISTFILE=/tmp/newhistory + 6 HISTFILE=$TMPDIR/newhistory 7 echo displaying \$HISTFILE after history -a 8 cat $HISTFILE for i in one two three; do echo $i; done @@ -50,7 +50,7 @@ for i in one two three; do echo $i; done ls echo $BASH_VERSION echo line for history -HISTFILE=/tmp/newhistory +HISTFILE=$TMPDIR/newhistory echo displaying \$HISTFILE after history -a cat $HISTFILE 1 for i in one two three; do echo $i; done @@ -58,7 +58,7 @@ cat $HISTFILE 3 ls 4 echo $BASH_VERSION 5 echo line for history - 6 HISTFILE=/tmp/newhistory + 6 HISTFILE=$TMPDIR/newhistory 7 echo displaying \$HISTFILE after history -a 8 cat $HISTFILE 9 echo line 2 for history @@ -69,7 +69,7 @@ echo line 2 for history 3 ls 4 echo $BASH_VERSION 5 echo line for history - 6 HISTFILE=/tmp/newhistory + 6 HISTFILE=$TMPDIR/newhistory 7 echo displaying \$HISTFILE after history -a 8 cat $HISTFILE 9 echo line 2 for history @@ -80,7 +80,7 @@ echo line 2 for history line 2 for history 4 echo $BASH_VERSION 5 echo line for history -6 HISTFILE=/tmp/newhistory +6 HISTFILE=$TMPDIR/newhistory 7 echo displaying \$HISTFILE after history -a 8 cat $HISTFILE 9 echo line 2 for history @@ -94,10 +94,10 @@ line 2 for history 17 unset HISTFILE 4 echo $BASH_VERSION 5 echo line for history -6 HISTFILE=/tmp/newhistory +6 HISTFILE=$TMPDIR/newhistory 7 echo displaying \$HISTFILE after history -a 8 cat $HISTFILE -./history.tests: line 75: fc: history specification out of range +./history.tests: line 76: fc: history specification out of range 14 set -H 15 echo line 2 for history 16 unset HISTSIZE @@ -107,7 +107,7 @@ echo xx xb xc xx xb xc echo 44 48 4c 44 48 4c -./history.tests: line 90: fc: no command found +./history.tests: line 91: fc: no command found aa bb cc @@ -140,7 +140,41 @@ three one two three -4.4 +5.0 echo ${BASH_VERSION%\.*} -4.4 +5.0 echo ${BASH_VERSION%\.*} +a +b +c +d +e + 1 echo a + 2 echo b + 3 echo c + 4 echo d + 5 echo e + + 1 echo a + 2 echo e +f +g +h +i + 1 echo a + 2 echo e + 3 echo f + 4 echo g + 5 echo h + +./history3.sub: line 27: history: 16: history position out of range +./history3.sub: line 28: history: 200: history position out of range +./history3.sub: line 29: history: -20: history position out of range +./history3.sub: line 30: history: -50: history position out of range +./history3.sub: line 31: history: 5-0xaf: history position out of range + 1 echo a + 2 echo e + 3 echo f + 4 echo g + 5 echo h + diff --git a/tests/history.tests b/tests/history.tests index f976fbdf7..4001bd6cc 100644 --- a/tests/history.tests +++ b/tests/history.tests @@ -1,4 +1,4 @@ -trap 'rm /tmp/newhistory' 0 +trap 'rm $TMPDIR/newhistory' 0 # bad options history -x @@ -20,6 +20,7 @@ HISTFILE=history.list HISTCONTROL=ignoreboth HISTIGNORE='&:history*:fc*' HISTSIZE=32 +export HISTIGNORE shopt -s cmdhist set -o history @@ -39,7 +40,7 @@ history -p '!!' fc -nl -HISTFILE=/tmp/newhistory +HISTFILE=$TMPDIR/newhistory history -a echo displaying \$HISTFILE after history -a cat $HISTFILE @@ -112,3 +113,4 @@ ${THIS_SH} ./history1.sub rm -f $TMPDIR/foohist-* ${THIS_SH} ./history2.sub +${THIS_SH} ./history3.sub diff --git a/tests/history3.sub b/tests/history3.sub new file mode 100644 index 000000000..8722666ce --- /dev/null +++ b/tests/history3.sub @@ -0,0 +1,36 @@ +: ${TMPDIR:=/tmp} + +set -o history +HISTFILE=$TMPDIR/history-$$ + +history -c + +echo a +echo b +echo c +echo d +echo e + +history ; echo + +history -d 2-4 + +history + +echo f +echo g +echo h +echo i +history -d 6--1 +history ; echo + +history -d 16-40 +history -d 1-200 +history -d -20-50 +history -d 1--50 +history -d 5-0xaf + +history ; echo + +unset HISTFILE +exit 0 diff --git a/tests/ifs.right b/tests/ifs.right index 512f6ee5a..465efcf0e 100644 --- a/tests/ifs.right +++ b/tests/ifs.right @@ -8,3 +8,5 @@ a:b:c:d:e a:b:c:d:e a b c d e a b c d e +argv[1] = +argv[1] = <*> diff --git a/tests/ifs.tests b/tests/ifs.tests index 763e2a001..717690059 100644 --- a/tests/ifs.tests +++ b/tests/ifs.tests @@ -59,3 +59,5 @@ IFS=: export x echo $x IFS="$DEFIFS" + +${THIS_SH} ./ifs1.sub diff --git a/tests/ifs1.sub b/tests/ifs1.sub new file mode 100644 index 000000000..6ea489af6 --- /dev/null +++ b/tests/ifs1.sub @@ -0,0 +1,14 @@ +: ${TMPDIR:=/tmp} +dir=bashtest-$$ + +mkdir $TMPDIR/$dir || exit 1 +touch $TMPDIR/$dir/file || exit 2 +cd $TMPDIR/$dir || exit 3 + +IFS='?*[]' +recho * + +recho "*" + +cd $OLDPWD +rm -rf $TMPDIR/$dir 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/jobs.right b/tests/jobs.right index c3ee9443a..0e9d1d19e 100644 --- a/tests/jobs.right +++ b/tests/jobs.right @@ -16,31 +16,32 @@ Waiting for job 6 job 6 returns 0 Waiting for job 7 job 7 returns 0 -[1] Running sleep 5 & -[2] Running sleep 5 & -[3] Running sleep 5 & -[4]- Running sleep 5 & -[5]+ Running ( sleep 5; exit 4 ) & +[1] Running sleep 2 & +[2] Running sleep 2 & +[3] Running sleep 2 & +[4]- Running sleep 2 & +[5]+ Running ( sleep 2; exit 4 ) & 4 0 i killed it 12 [1]- Running sleep 20 & [3]+ Running sleep 20 & +child1 exit status 0 0 -./jobs.tests: line 22: wait: %1: no such job -./jobs.tests: line 27: fg: no job control +./jobs.tests: line 25: wait: %1: no such job +./jobs.tests: line 30: fg: no job control wait-for-pid wait-errors -./jobs.tests: line 40: wait: `1-1': not a pid or valid job spec -./jobs.tests: line 41: wait: `-4': not a pid or valid job spec +./jobs.tests: line 43: wait: `1-1': not a pid or valid job spec +./jobs.tests: line 44: wait: `-4': not a pid or valid job spec wait-for-background-pids async list wait-for-background-pids async list wait for child forked wait-when-no-children wait-for-job -./jobs.tests: line 63: wait: %2: no such job +./jobs.tests: line 66: wait: %2: no such job 127 async list wait-for-job forked @@ -53,19 +54,19 @@ sleep 5 fg-bg 4 sleep 5 fg-bg 5 -./jobs.tests: line 90: fg: %2: no such job -./jobs.tests: line 91: bg: job 1 already in background +./jobs.tests: line 93: fg: %2: no such job +./jobs.tests: line 94: bg: job 1 already in background fg-bg 6 -./jobs.tests: line 98: fg: -s: invalid option +./jobs.tests: line 101: fg: -s: invalid option fg: usage: fg [job_spec] -./jobs.tests: line 99: bg: -s: invalid option +./jobs.tests: line 102: bg: -s: invalid option bg: usage: bg [job_spec ...] -./jobs.tests: line 104: disown: -s: invalid option +./jobs.tests: line 107: disown: -s: invalid option disown: usage: disown [-h] [-ar] [jobspec ... | pid ...] -./jobs.tests: line 108: disown: %1: no such job -./jobs.tests: line 111: disown: %2: no such job +./jobs.tests: line 111: disown: %1: no such job +./jobs.tests: line 114: disown: %2: no such job wait-for-non-child -./jobs.tests: line 114: wait: pid 1 is not a child of this shell +./jobs.tests: line 117: wait: pid 1 is not a child of this shell 127 3 -- 1 2 3 -- 1 - 2 - 3 [1] Running sleep 300 & @@ -75,8 +76,8 @@ running jobs: [1] Running sleep 300 & [2]- Running sleep 350 & [3]+ Running sleep 400 & -./jobs.tests: line 131: kill: %4: no such job -./jobs.tests: line 133: jobs: %4: no such job +./jobs.tests: line 134: kill: %4: no such job +./jobs.tests: line 136: jobs: %4: no such job current job: [3]+ Running sleep 400 & previous job: diff --git a/tests/jobs.tests b/tests/jobs.tests index c99f4f712..3c2eef31a 100644 --- a/tests/jobs.tests +++ b/tests/jobs.tests @@ -15,6 +15,9 @@ ${THIS_SH} ./jobs4.sub # test out wait -n framework ${THIS_SH} ./jobs5.sub +# test out wait -f framework +${THIS_SH} ./jobs6.sub + jobs echo $? diff --git a/tests/jobs1.sub b/tests/jobs1.sub index aa9a37261..53f66cc61 100644 --- a/tests/jobs1.sub +++ b/tests/jobs1.sub @@ -2,7 +2,7 @@ set -m sleep 60 & -FN=/tmp/jobs-pid.$$ +FN=$TMPDIR/jobs-pid.$$ pid1=$! jobs -p %+ > $FN diff --git a/tests/jobs4.sub b/tests/jobs4.sub index 2eb4197a9..898b449b8 100644 --- a/tests/jobs4.sub +++ b/tests/jobs4.sub @@ -1,12 +1,12 @@ # test being able to use job control notation in jobs/kill/wait without # job control active, as the SUS requires -sleep 5 & +sleep 2 & -sleep 5 & -sleep 5 & -sleep 5 & -(sleep 5 ; exit 4) & +sleep 2 & +sleep 2 & +sleep 2 & +(sleep 2 ; exit 4) & jobs diff --git a/tests/jobs6.sub b/tests/jobs6.sub new file mode 100644 index 000000000..9ed59ee5b --- /dev/null +++ b/tests/jobs6.sub @@ -0,0 +1,14 @@ +# framework to test `wait -f' which forces wait until a job exits +set -o monitor +sleep 5 & +child1=$! + +( sleep 1; kill -STOP $child1 ; sleep 1 ; kill -CONT $child1 )& + +child2=$! + +wait -f %1 +echo child1 exit status $? + +wait $child2 +exit 0 diff --git a/tests/more-exp.tests b/tests/more-exp.tests index 4a3cb7f54..10b3a47ea 100644 --- a/tests/more-exp.tests +++ b/tests/more-exp.tests @@ -152,7 +152,7 @@ b1() b2() { recho $* - recho $# + recho ${#} } expect '<1>' @@ -414,7 +414,7 @@ recho ${#} expect '<5>' recho ${#?:-xyz} -shift $# +shift ${#} expect '<0>' recho ${#:-foo} diff --git a/tests/nameref.right b/tests/nameref.right index 530025952..698002ec8 100644 --- a/tests/nameref.right +++ b/tests/nameref.right @@ -48,7 +48,7 @@ argv[1] = expect argv[1] = expect -argv[1] = +./nameref3.sub: line 16: foo: invalid indirect expansion ./nameref3.sub: line 21: unset: bar: cannot unset: readonly variable expect two @@ -226,6 +226,13 @@ declare -r RO="x" ./nameref11.sub: line 39: declare: RO_PID: not found ./nameref11.sub: line 41: RO2: readonly variable declare -r RO2="a" +2 +./nameref11.sub: line 52: typeset: `2': invalid variable name for name reference +2 +./nameref11.sub: line 57: typeset: `2': invalid variable name for name reference +2 +./nameref11.sub: line 62: foo[2]: invalid indirect expansion +./nameref11.sub: line 63: bar: invalid indirect expansion ./nameref12.sub: line 6: declare: `/': invalid variable name for name reference ./nameref12.sub: line 9: declare: `%': invalid variable name for name reference ./nameref12.sub: line 13: `^': not a valid identifier @@ -306,30 +313,38 @@ declare -a b=([0]="0") ./nameref15.sub: line 19: warning: ref: circular name reference ./nameref15.sub: line 20: warning: ref: circular name reference ./nameref15.sub: line 21: warning: ref: circular name reference -inside +inside X outside X -./nameref15.sub: line 29: typeset: ref: nameref variable self references not allowed -./nameref15.sub: line 31: ref: nameref variable self references not allowed +before: 7 +./nameref15.sub: line 32: typeset: warning: xxx: circular name reference +./nameref15.sub: line 32: warning: xxx: circular name reference +./nameref15.sub: line 33: warning: xxx: circular name reference +declare -n xxx="xxx" +./nameref15.sub: line 35: warning: xxx: circular name reference +xxx_func: inside: xxx = foo +after: foo +./nameref15.sub: line 46: typeset: ref: nameref variable self references not allowed +./nameref15.sub: line 48: ref: nameref variable self references not allowed declare -n ref="re" declare -n ref="re" declare -- re="4" 4 declare -n foo="var[@]" declare -n ref="var[@]" -./nameref15.sub: line 48: var[@]: bad array subscript +./nameref15.sub: line 65: var[@]: bad array subscript declare -n bar="var[@]" -./nameref15.sub: line 53: var[@]: bad array subscript +./nameref15.sub: line 70: var[@]: bad array subscript declare -n a="b" declare -n b="a[1]" -./nameref15.sub: line 61: warning: a: removing nameref attribute +./nameref15.sub: line 78: warning: a: removing nameref attribute declare -a a=([1]="foo") declare -n b="a[1]" -./nameref15.sub: line 66: warning: a: removing nameref attribute +./nameref15.sub: line 83: warning: a: removing nameref attribute declare -a a=([1]="foo") declare -n b="a[1]" declare -n n="v" declare -a v=([1]="1") -./nameref15.sub: line 82: typeset: n: not found +./nameref15.sub: line 99: typeset: n: not found declare -a v=([0]="0" [1]="1") declare -n n="v[1]" declare -a v=([0]="0") @@ -409,3 +424,62 @@ declare -a var=([123]="") declare -n ref="var[123]" ./nameref18.sub: line 54: declare: var[123]: not found declare -a var=([123]="X") +declare -n foo="bar" +declare -- foo="bar" +./nameref19.sub: line 9: declare: bar: not found +declare -n foo="bar" +declare -- foo="bar" +declare -i bar="11" +declare -inx foo6 +declare -ix foo6 +declare -n foo="bar" +declare -- bar="Hello World!" +declare -- foo="bar" +declare -- bar="Hello World!" +declare -n foo="bar" +declare -- bar +declare -- foo="bar" +declare -- bar +declare -a v=([0]="Y") +r: +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/nameref11.sub b/tests/nameref11.sub index 85feedfa6..402e50158 100644 --- a/tests/nameref11.sub +++ b/tests/nameref11.sub @@ -39,3 +39,25 @@ unset -n ref ; unset ref declare -r RO RO_PID; coproc RO { :; }; declare -p RO_PID; wait; declare -p RO RO_PID declare -r RO2=a; declare -n ref_PID=RO2; coproc ref { :; }; wait; declare -p RO2 + +unset x y +set -- one two three + +y=2 +typeset -n x=y +echo ${x} + +unset -n x + +typeset -n y +echo $y + +unset -n y + +typeset -n y +y=2 +echo ${y} + +declare -n foo=bar +echo ${!foo[2]} +echo ${!bar} diff --git a/tests/nameref15.sub b/tests/nameref15.sub index 6c9ace5ef..9fbacd4ff 100644 --- a/tests/nameref15.sub +++ b/tests/nameref15.sub @@ -26,6 +26,23 @@ add_X_echo ref echo outside "$ref" unset ref +# same test, but assigning nameref variable circular reference directly +xxx_func() +{ + typeset -n xxx=xxx + xxx=foo + declare -p xxx + echo $FUNCNAME: inside: xxx = $xxx +} + +xxx=7 +echo before: $xxx +xxx_func +echo after: $xxx + +unset xxx +unset -f xxx_func + typeset -n ref=ref typeset -n ref=re ref+=f @@ -85,4 +102,3 @@ v=(0 1) declare -n n=v[1] unset n declare -p n v - diff --git a/tests/nameref19.sub b/tests/nameref19.sub new file mode 100644 index 000000000..d46c003f1 --- /dev/null +++ b/tests/nameref19.sub @@ -0,0 +1,51 @@ +# can we unset the nameref attribute on variables with values that reference +# unset variables? + +unset bar +declare -n foo="bar" +declare -p foo + +declare +n foo +declare -p foo bar + +declare -n foo +declare -p foo + +# let's try removing the nameref attribute -- other attributes and assignments +# apply to the nameref target + +declare +n -i foo=7+4 +declare -p foo bar + +unset foo bar + +# but if the nameref variable doesn't have a value, the attributes apply to +# the nameref variable itself. thanks ksh93 + +declare -n foo6 +declare -xi foo6 +declare -p foo6 + +# and when we remove the nameref attribute, the other attributes remain + +declare +n foo6 +declare -p foo6 + +unset foo6 + +# make sure these cases continue to work + +# nameref referencing an existing, set variable +declare -n foo=bar +bar='Hello World!' +declare -p foo bar +declare +n foo +declare -p foo bar +unset foo bar + +# nameref referencing an existing, unset variable +declare -n foo=bar +declare bar +declare -p foo bar +declare +n foo +declare -p foo bar diff --git a/tests/nameref20.sub b/tests/nameref20.sub new file mode 100644 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/new-exp.right b/tests/new-exp.right index 9913fbd6f..c0f78fbb3 100644 --- a/tests/new-exp.right +++ b/tests/new-exp.right @@ -3,7 +3,7 @@ argv[1] = argv[1] = argv[1] = argv[1] = -./new-exp.tests: line 24: HOME: }: syntax error: operand expected (error token is "}") +./new-exp.tests: line 28: HOME: }: syntax error: operand expected (error token is "}") unset argv[1] = argv[1] = @@ -66,8 +66,8 @@ argv[4] = argv[1] = argv[2] = argv[3] = -./new-exp.tests: line 180: ABX: unbound variable -./new-exp.tests: line 184: $6: cannot assign in this way +./new-exp.tests: line 184: ABX: unbound variable +./new-exp.tests: line 188: $6: cannot assign in this way argv[1] = argv[1] = argv[1] = @@ -169,14 +169,14 @@ lines. This-string-has-multiple-lines. this is a test of proc subst this is test 2 -./new-exp2.sub: line 31: /tmp/bashtmp.x*: No such file or directory -./new-exp2.sub: line 35: /tmp/redir-notthere: No such file or directory +a +./new-exp2.sub: line 42: /tmp/redir-notthere: No such file or directory 1 -./new-exp2.sub: line 42: 1111111111111111111111: command not found +./new-exp2.sub: line 49: 1111111111111111111111: command not found argv[1] = <6> -./new-exp.tests: line 285: ${#:}: bad substitution +./new-exp.tests: line 289: ${#:}: bad substitution argv[1] = <'> argv[1] = <"> argv[1] = <"hello"> @@ -411,13 +411,13 @@ argv[6] = argv[7] = argv[8] = argv[9] = -./new-exp.tests: line 503: $9: unbound variable -./new-exp.tests: line 504: 9: unbound variable -./new-exp.tests: line 505: UNSET: unbound variable -./new-exp.tests: line 506: UNSET: unbound variable -./new-exp.tests: line 507: UNSET: unbound variable -./new-exp.tests: line 508: UNSET: unbound variable +./new-exp.tests: line 507: $9: unbound variable +./new-exp.tests: line 508: 9: unbound variable ./new-exp.tests: line 509: UNSET: unbound variable +./new-exp.tests: line 510: UNSET: unbound variable +./new-exp.tests: line 511: UNSET: unbound variable +./new-exp.tests: line 512: UNSET: unbound variable +./new-exp.tests: line 513: UNSET: unbound variable argv[1] = <5> argv[1] = <#> argv[1] = <#> @@ -464,7 +464,7 @@ Case05---3---A:B:C--- Case06---1---A B C::--- Case07---3---A:B:C--- Case08---3---A:B:C--- -./new-exp.tests: line 529: ${$(($#-1))}: bad substitution +./new-exp.tests: line 533: ${$(($#-1))}: bad substitution argv[1] = argv[2] = argv[3] = @@ -481,7 +481,7 @@ argv[1] = argv[1] = argv[2] = argv[1] = <> -./new-exp.tests: line 548: $(($# - 2)): substring expression < 0 +./new-exp.tests: line 552: $(($# - 2)): substring expression < 0 argv[1] = argv[2] = argv[3] = @@ -624,7 +624,7 @@ c Sub = 0 2 4 8 <'ab cd'> <'4'> <'ab cd'> <> -argv[1] = +argv[1] = < > <' \t\n'> @@ -643,6 +643,30 @@ ir a b c d e 5 a5b +i +declare -i foo +A +declare -A foo +abcxxxdef +abcÃ¥def +ḅć +Ã¥ +prependḅć +Ã¥append +prependÃ¥ +ḅćappend +Ã¥ +ḅć +ḅć +ḅć +Ã¥ +Ã¥ +Ã¥ +ḅć +Ã¥ +Ã¥ +ḅć +ḅć argv[1] = argv[1] = -./new-exp.tests: line 608: ABXD: parameter unset +./new-exp.tests: line 615: ABXD: parameter unset diff --git a/tests/new-exp.tests b/tests/new-exp.tests index c4aa9d167..557d6b44d 100644 --- a/tests/new-exp.tests +++ b/tests/new-exp.tests @@ -1,3 +1,7 @@ +if (( $UID == 0 )); then + echo "new-exp.tests: the test suite should not be run as root" >&2 +fi + # must do this because posix mode causes process substitution to be disabled # and flagged as a syntax error, which causes the shell to exit set +o posix @@ -340,7 +344,7 @@ recho "${foo:-$@}" expect ' ' recho "${foo:-"$@"}" -shift $# +shift ${#} expect nothing recho $xxx"$@" expect nothing @@ -498,7 +502,7 @@ recho ${*%?} recho ${@#?} recho ${*#?} -shift $# +shift ${#} set -u ( recho $9 ; echo after 1) ( recho ${9} ; echo after 2) @@ -597,6 +601,9 @@ ${THIS_SH} ./new-exp9.sub # new parameter transformation `@' expansion operator ${THIS_SH} ./new-exp10.sub +# parameter substring replacement and removal operators with multibyte chars +${THIS_SH} ./new-exp11.sub + # problems with stray CTLNUL in bash-4.0-alpha unset a a=/a diff --git a/tests/new-exp1.sub b/tests/new-exp1.sub index c015c2239..2b621fcaa 100644 --- a/tests/new-exp1.sub +++ b/tests/new-exp1.sub @@ -1,3 +1,4 @@ +FN=${TMPDIR}/bashtest-$$ expect() { echo expect "$@" @@ -5,7 +6,11 @@ expect() expect this is a test of proc subst cat <(echo this is a test of proc subst) -echo this is test 2 > /tmp/x +echo this is test 2 > $FN expect this is test 2 -cat <(cat /tmp/x) -rm -f /tmp/x +cat <(cat $FN) +rm -f $FN + +foo= +expect a +cat ${foo:-<(echo a)} diff --git a/tests/new-exp10.sub b/tests/new-exp10.sub index e07e5581a..9e89a7010 100644 --- a/tests/new-exp10.sub +++ b/tests/new-exp10.sub @@ -84,3 +84,17 @@ set -- a b c d e echo ${@} echo ${#@} echo a${#@}b + +# new feature in bash-5.0: display attributes of even unset variables +unset -v foo + +declare -i foo +echo ${foo@a} + +declare -p foo + +unset foo +declare -A foo +echo ${foo@a} + +declare -p foo diff --git a/tests/new-exp11.sub b/tests/new-exp11.sub new file mode 100644 index 000000000..da6b4e1f7 --- /dev/null +++ b/tests/new-exp11.sub @@ -0,0 +1,46 @@ +# pattern matching and replacement operators with multibyte characters + +LANG=en_US.UTF-8 + +s1='abcÃ¥def' +s2='Ã¥' +s3='ḅć' + +s23=${s2}${s3} + +echo ${s1/$s2/xxx} +echo ${s1/$s3/xxx} + +echo ${s23/#$s2/} +echo ${s23/%$s3/} + +echo ${s23/#$s2/prepend} +echo ${s23/%$s3/append} + +echo ${s2/#/prepend} +echo ${s3/%/append} + +echo ${s2/#/} +echo ${s3/%/} + +recho ${s2/$s2/} +recho ${s3/$s3/} + +# posix pattern replacements + +echo ${s23##$s2} +echo ${s23#$s2} + +echo ${s23%%$s3} +echo ${s23%$s3} + +# fail + +echo ${s2/#ab/xx} +echo ${s3/%ab/xx} + +echo ${s2#ab} +echo ${s2##ab} + +echo ${s3%ab} +echo ${s3%%ab} diff --git a/tests/new-exp2.sub b/tests/new-exp2.sub index e83777993..ea52b3ce4 100644 --- a/tests/new-exp2.sub +++ b/tests/new-exp2.sub @@ -4,7 +4,7 @@ export LANG=C # test out the new $(< filename) code # it should be exactly equivalent to $(cat filename) -FILENAME=/tmp/bashtmp.x$$ +FILENAME=$TMPDIR/bashtmp.x$$ trap 'rm -f $FILENAME' 0 @@ -21,17 +21,24 @@ if [[ $LINES1 != $LINES2 ]]; then echo 'whoops: $(< filename) failed' fi -LINES2=$(< /tmp/bashtmp.x*) +LINES2=$(< $TMPDIR/bashtmp.x*) if [[ $LINES1 != $LINES2 ]]; then echo 'whoops: $(< filename) with glob expansion failed' fi # but the glob expansion in the redirection should fail in posix mode set -o posix -LINES2=$(< /tmp/bashtmp.x*) +exec 3>&2 +exec 2>/dev/null +LINES2=$(< $TMPDIR/bashtmp.x*) +exec 2>&3 +if [[ $LINES2 -gt 0 ]]; then + echo "whoops: redirection glob expansion should be disabled in posix mode" >&2 +fi set +o posix # now see what happens when we try it with a non-existant file +rm -f /tmp/redir-notthere LINES3=$(< /tmp/redir-notthere) echo $? 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/parser.right b/tests/parser.right index 43d5a8ed6..cecbb2223 100644 --- a/tests/parser.right +++ b/tests/parser.right @@ -1 +1,16 @@ AAA +bash5: `invalid-name': not a valid identifier +in +in +in +in +bash5: -c: line 0: syntax error near unexpected token `)' +bash5: -c: line 0: `case x in esac) echo done; esac' +in +bash5: -c: line 0: syntax error near unexpected token `do' +bash5: -c: line 0: `case in do do) echo in; esac' +bash5: -c: line 0: syntax error near unexpected token `(' +bash5: -c: line 0: `for()' +in +done +ok 1 diff --git a/tests/parser.tests b/tests/parser.tests index 12ff88c29..6e020a4ba 100644 --- a/tests/parser.tests +++ b/tests/parser.tests @@ -2,3 +2,5 @@ # this has to be in a separate file to get desired EOF behavior ${THIS_SH} ./parser1.sub + +${THIS_SH} ./posix2syntax.sub diff --git a/tests/posix2syntax.sub b/tests/posix2syntax.sub new file mode 100644 index 000000000..e7dda58f7 --- /dev/null +++ b/tests/posix2syntax.sub @@ -0,0 +1,53 @@ +: ${THIS_SH:=./bash} +bashname=bash${BASH_VERSION%%.*} + +# tests for Posix grammar special cases + +# Posix grammar rule 5 +${THIS_SH} -c 'for invalid-name in a b c; do echo error; done' $bashname + +# Posix grammar rule 6: third word in FOR or SELECT +for i; do echo; done; echo in +for i; do echo in; done +for i do echo in; done + +select i; do echo; done; echo in +select i; do echo in; done; echo in +select i do echo in; done; echo in + +# Posix grammar rule 4: when PATTERN == ESAC, return ESAC +${THIS_SH} -c 'case x in esac) echo done; esac' $bashname + +# Posix grammar rule 6: third word in CASE +${THIS_SH} -c 'case in in in) echo in; esac;' $bashname +${THIS_SH} -c 'case in do do) echo in; esac' $bashname + +# Posix grammar rule 8: function NAME +${THIS_SH} -o posix -c 'for() +{ +echo function for; +}' $bashname + +for for in for; do echo in; echo done; done + +${THIS_SH} -c 'for (( i = 0; i < 5; i++ )) do : ; done' $bashname +${THIS_SH} -c 'for (( i = 0; i < 5; i++ )) { : ; }' $bashname + +# bug report: IN turning on unwanted alias expansion +${THIS_SH} -o posix -c ' +alias foo='two words' +foo_word='foo' +case "$foo_word" +in + foo) echo "bad 1";; +esac' $bashname + +${THIS_SH} -o posix -c ' +alias foo='oneword' +foo_word='foo' +case "$foo_word" +in + foo) echo "ok 1";; +esac' $bashname + + diff --git a/tests/posixexp.right b/tests/posixexp.right index 0ba6555aa..53a08e3b6 100644 --- a/tests/posixexp.right +++ b/tests/posixexp.right @@ -37,5 +37,247 @@ argv[1] = <'bar> argv[1] = argv[1] = <}z> argv[1] = <''z}> -./posixexp.tests: line 77: unexpected EOF while looking for matching `}' -./posixexp.tests: line 78: syntax error: unexpected end of file +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1 2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1 2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1 2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1 2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1 2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <12> +argv[1] = <1 2> +argv[1] = <1 2> +argv[1] = <1 2> +argv[1] = <1 2> +argv[1] = <1 2> +argv[1] = <1 2> +argv[1] = <12> +argv[1] = <12> +argv[1] = <12> +argv[1] = <12> +argv[1] = <12> +argv[1] = <12> +argv[1] = <1 2> +argv[1] = <1 2> +argv[1] = <12> +argv[1] = <12> +normal IFS +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +null IFS +argv[1] = < abc> +argv[2] = +argv[3] = +argv[1] = < abc def ghi jkl > +argv[1] = < abc> +argv[2] = +argv[3] = +non-standard IFS +argv[1] = < abc> +argv[2] = +argv[3] = +argv[1] = < abc def ghi jkl > +argv[1] = < abc def ghi jkl > +unset IFS +argv[1] = < abc> +argv[2] = +argv[3] = +argv[1] = < abc def ghi jkl > +argv[1] = < abc def ghi jkl > + +001: IFS = (unset): unset -v foo; set -- ${foo=$*} +soh stx etx del / soh stx etx del + +002: IFS = (unset): unset -v foo; set -- ${foo="$*"} +soh stx etx del / soh stx etx del + +003: IFS = (unset): unset -v foo; set -- "${foo=$*}" +soh stx etx del / soh stx etx del + +004: IFS = (unset): foo=; set -- ${foo:=$*} +soh stx etx del / soh stx etx del + +005: IFS = (unset): foo=; set -- ${foo:="$*"} +soh stx etx del / soh stx etx del + +006: IFS = (unset): foo=; set -- "${foo:=$*}" +soh stx etx del / soh stx etx del + +007: IFS = (unset): unset -v foo; set -- ${foo=$@} +soh stx etx del / soh stx etx del + +008: IFS = (unset): unset -v foo; set -- ${foo="$@"} +soh stx etx del / soh stx etx del + +009: IFS = (unset): unset -v foo; set -- "${foo=$@}" +soh stx etx del / soh stx etx del + +010: IFS = (unset): foo=; set -- ${foo:=$@} +soh stx etx del / soh stx etx del + +011: IFS = (unset): foo=; set -- ${foo:="$@"} +soh stx etx del / soh stx etx del + +012: IFS = (unset): foo=; set -- "${foo:=$@}" +soh stx etx del / soh stx etx del + +013: IFS = (null): unset -v foo; set -- ${foo=$*} +soh stx etx del / soh stx etx del + +014: IFS = (null): unset -v foo; set -- ${foo="$*"} +soh stx etx del / soh stx etx del + +015: IFS = (null): unset -v foo; set -- "${foo=$*}" +soh stx etx del / soh stx etx del + +016: IFS = (null): foo=; set -- ${foo:=$*} +soh stx etx del / soh stx etx del + +017: IFS = (null): foo=; set -- ${foo:="$*"} +soh stx etx del / soh stx etx del + +018: IFS = (null): foo=; set -- "${foo:=$*}" +soh stx etx del / soh stx etx del + +019: IFS = (null): unset -v foo; set -- ${foo=$@} +soh stx etx del / soh stx etx del + +020: IFS = (null): unset -v foo; set -- ${foo="$@"} +soh stx etx del / soh stx etx del + +021: IFS = (null): unset -v foo; set -- "${foo=$@}" +soh stx etx del / soh stx etx del + +022: IFS = (null): foo=; set -- ${foo:=$@} +soh stx etx del / soh stx etx del + +023: IFS = (null): foo=; set -- ${foo:="$@"} +soh stx etx del / soh stx etx del + +024: IFS = (null): foo=; set -- "${foo:=$@}" +soh stx etx del / soh stx etx del + +025: IFS = x: unset -v foo; set -- ${foo=$*} +soh stx etx del / soh stx etx del + +026: IFS = x: unset -v foo; set -- ${foo="$*"} +soh stx etx del / soh stx etx del + +027: IFS = x: unset -v foo; set -- "${foo=$*}" +soh stx etx del / soh stx etx del + +028: IFS = x: foo=; set -- ${foo:=$*} +soh stx etx del / soh stx etx del + +029: IFS = x: foo=; set -- ${foo:="$*"} +soh stx etx del / soh stx etx del + +030: IFS = x: foo=; set -- "${foo:=$*}" +soh stx etx del / soh stx etx del + +031: IFS = x: unset -v foo; set -- ${foo=$@} +soh stx etx del / soh stx etx del + +032: IFS = x: unset -v foo; set -- ${foo="$@"} +soh stx etx del / soh stx etx del + +033: IFS = x: unset -v foo; set -- "${foo=$@}" +soh stx etx del / soh stx etx del + +034: IFS = x: foo=; set -- ${foo:=$@} +soh stx etx del / soh stx etx del + +035: IFS = x: foo=; set -- ${foo:="$@"} +soh stx etx del / soh stx etx del + +036: IFS = x: foo=; set -- "${foo:=$@}" +soh stx etx del / soh stx etx del + +037: IFS = sp ht nl: unset -v foo; set -- ${foo=$*} +soh stx etx del / soh stx etx del + +038: IFS = sp ht nl: unset -v foo; set -- ${foo="$*"} +soh stx etx del / soh stx etx del + +039: IFS = sp ht nl: unset -v foo; set -- "${foo=$*}" +soh stx etx del / soh stx etx del + +040: IFS = sp ht nl: foo=; set -- ${foo:=$*} +soh stx etx del / soh stx etx del + +041: IFS = sp ht nl: foo=; set -- ${foo:="$*"} +soh stx etx del / soh stx etx del + +042: IFS = sp ht nl: foo=; set -- "${foo:=$*}" +soh stx etx del / soh stx etx del + +043: IFS = sp ht nl: unset -v foo; set -- ${foo=$@} +soh stx etx del / soh stx etx del + +044: IFS = sp ht nl: unset -v foo; set -- ${foo="$@"} +soh stx etx del / soh stx etx del + +045: IFS = sp ht nl: unset -v foo; set -- "${foo=$@}" +soh stx etx del / soh stx etx del + +046: IFS = sp ht nl: foo=; set -- ${foo:=$@} +soh stx etx del / soh stx etx del + +047: IFS = sp ht nl: foo=; set -- ${foo:="$@"} +soh stx etx del / soh stx etx del + +048: IFS = sp ht nl: foo=; set -- "${foo:=$@}" +soh stx etx del / soh stx etx del +argv[1] = <^A^B^C^?> +argv[1] = <^A^B^C^?> +argv[1] = <^A^B^C^?> +argv[1] = <^A^B^C^?> +argv[1] = <^A^B^C^?> +argv[1] = <^A^B^C^?> +argv[1] = <^A^B^C^?> +argv[1] = <^A^B^C^?> +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +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 ] +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 60be1c741..3368711fb 100644 --- a/tests/posixexp.tests +++ b/tests/posixexp.tests @@ -72,6 +72,12 @@ ${THIS_SH} ./posixexp1.sub || echo "bash posixexp1.sub: test $? failed" THIS_SH=$TMPDIR/sh ${THIS_SH} ./posixexp2.sub || echo "sh posixexp2.sub: test $? failed" rm -f $TMPDIR/sh +${THIS_SH} ./posixexp3.sub +${THIS_SH} ./posixexp4.sub +${THIS_SH} ./posixexp5.sub +${THIS_SH} ./posixexp6.sub +${THIS_SH} ./posixexp7.sub + # this will be an error foo=bar echo "${foo:-"a}" diff --git a/tests/posixexp1.sub b/tests/posixexp1.sub index ce0b29dcf..91718e3d3 100644 --- a/tests/posixexp1.sub +++ b/tests/posixexp1.sub @@ -27,4 +27,12 @@ ${THIS_SH} -uc 'echo $1' 2>/dev/null && exit 20 ${THIS_SH} -uc 'echo $1' ${THIS_SH} xnotthere >/dev/null || exit 21 ${THIS_SH} -uc 'echo $2' ${THIS_SH} xnotthere 2>/dev/null && exit 22 ${THIS_SH} -uc 'echo $2' ${THIS_SH} xnotthere ynotthere >/dev/null || exit 23 + +${THIS_SH} -uc 'echo $! ; exit 24' 2>/dev/null +${THIS_SH} -uc 'echo ${!} ; exit 25' 2>/dev/null +${THIS_SH} -uc 'echo ${!,} ; exit 26' 2>/dev/null + +${THIS_SH} -uc 'echo ${!-ok 27} >/dev/null || exit 27' +${THIS_SH} -uc 'echo ${2-ok 28} >/dev/null || exit 28' + exit 0 diff --git a/tests/posixexp2.sub b/tests/posixexp2.sub index f48d0887b..397769da0 100644 --- a/tests/posixexp2.sub +++ b/tests/posixexp2.sub @@ -18,4 +18,7 @@ ${THIS_SH} -c 'echo ${1?}' 2>/dev/null && exit 11 ${THIS_SH} -c 'echo ${1?}' ${THIS_SH} x >/dev/null || exit 12 ${THIS_SH} -c 'echo ${2?}' ${THIS_SH} x 2>/dev/null && exit 13 ${THIS_SH} -c 'echo ${2?}' ${THIS_SH} x y >/dev/null || exit 14 + +${THIS_SH} -c $'echo $(( x+ )) \n exit 0' ${THIS_SH} 2>/dev/null && exit 15 + exit 0 diff --git a/tests/posixexp2.tests b/tests/posixexp2.tests index 57dd767d1..2bec58e03 100644 --- a/tests/posixexp2.tests +++ b/tests/posixexp2.tests @@ -1,6 +1,6 @@ # From mksh -set -o posix +set -o posix ; shopt -u xpg_echo (echo 1 ${IFS+'}'z}) 2>&- || echo failed in 1 (echo 2 "${IFS+'}'z}") 2>&- || echo failed in 2 diff --git a/tests/posixexp3.sub b/tests/posixexp3.sub new file mode 100644 index 000000000..c40afa947 --- /dev/null +++ b/tests/posixexp3.sub @@ -0,0 +1,52 @@ +set -- 1 2 + +unset var +recho ${var-$@} +recho ${var-"$@"} +recho ${var-$*} +recho ${var-"$*"} + +unset -v a b c d +recho ${a=$@} +recho "$a" +recho ${b="$@"} +recho "$b" +recho ${c=$*} +recho "$c" +recho ${d="$*"} +recho "$d" + +IFS= +unset var +recho ${var-$@} +recho ${var-"$@"} +recho ${var-$*} +recho ${var-"$*"} + +unset -v a b c d +# Posix interp 221 +# there should never be any word splitting because IFS is null +recho ${a=$@} +recho "$a" +recho $a +recho ${b="$@"} +recho "$b" +recho $b +recho ${c=$*} +recho "$c" +recho $c +recho ${d="$*"} +recho "$d" +recho $d + +unset -v a b c d +a=$@ +recho $a +b="$@" +recho $b +c=$* +recho $c +d="$*" +recho $d + +unset -v parameter a b c d diff --git a/tests/posixexp4.sub b/tests/posixexp4.sub new file mode 100644 index 000000000..22bfeca89 --- /dev/null +++ b/tests/posixexp4.sub @@ -0,0 +1,31 @@ +set -- ' abc' 'def ghi' 'jkl ' + +echo normal IFS +recho $@ +: ${var=$@} +recho $var +unset -v var +recho ${var-$@} + +echo null IFS +IFS= +recho $@ +: ${var=$@} +recho $var +unset -v var +recho ${var-$@} + +echo non-standard IFS +IFS=: +recho $@ +: ${var=$@} +recho $var +unset -v var +recho ${var-$@} # this is inconsistent + +echo unset IFS +recho $@ +: ${var=$@} +recho $var +unset -v var +recho ${var-$@} diff --git a/tests/posixexp5.sub b/tests/posixexp5.sub new file mode 100644 index 000000000..e477bbb1e --- /dev/null +++ b/tests/posixexp5.sub @@ -0,0 +1,51 @@ +# test suite contribution from Martijn Dekker + +defaultIFS=$IFS +set -o errexit -o noglob +(set -o pipefail) 2>/dev/null && set -o pipefail +teststring=$(printf '\1\2\3\177') +n=0 + +trim_od() { + od -t a | sed -n '1 { s/^0*[[:blank:]]*//; s/[[:blank:]]*$//; p; }' +} + +doTest() { + set -- "$teststring" + eval "$testcmd" + case ${IFS+s}${IFS:+n} in + ( sn ) i=$(printf %s "$IFS" | trim_od) ;; + ( s ) i='(null)' ;; + ( '' ) i='(unset)' ;; + ( * ) echo 'internal error!' >&2; exit 125 ;; + esac + printf '\n%03d: IFS = %s: %s\n' "$((n+=1))" "$i" "$testcmd" + printf %s "$*${foo+/}${foo-}" | trim_od +} + +doAllTests() { + for testcmd in \ + 'unset -v foo; set -- ${foo=$*}' \ + 'unset -v foo; set -- ${foo="$*"}' \ + 'unset -v foo; set -- "${foo=$*}"' \ + \ + 'foo=; set -- ${foo:=$*}' \ + 'foo=; set -- ${foo:="$*"}' \ + 'foo=; set -- "${foo:=$*}"' \ + \ + 'unset -v foo; set -- ${foo=$@}' \ + 'unset -v foo; set -- ${foo="$@"}' \ + 'unset -v foo; set -- "${foo=$@}"' \ + \ + 'foo=; set -- ${foo:=$@}' \ + 'foo=; set -- ${foo:="$@"}' \ + 'foo=; set -- "${foo:=$@}"' + do + doTest "$testcmd" + done +} + +unset -v IFS; doAllTests +IFS=''; doAllTests +IFS='x'; doAllTests +IFS=$defaultIFS; doAllTests diff --git a/tests/posixexp6.sub b/tests/posixexp6.sub new file mode 100644 index 000000000..ed38d535a --- /dev/null +++ b/tests/posixexp6.sub @@ -0,0 +1,57 @@ +var=$'\01\02\03\177' + +bar=${unset:-$var} +recho "$bar" +unset -v bar +bar=${unset:-"$var"} +recho "$bar" + +foo=${parameter:=$var} + +recho "$foo" +recho "$parameter" + +unset -v foo parameter + +foo=${parameter:="$var"} + +recho "$foo" +recho "$parameter" + +unset -v foo parameter + +foo="${parameter:=$var}" + +recho "$foo" +recho "$parameter" + +unset -v foo parameter + +recho ${parameter:=a\ b} +unset -v parameter + +recho ${parameter:="a b"} +unset -v parameter + +v='a b' + +recho ${parameter:=$v} +unset -v parameter + +recho ${parameter:="$v"} +unset -v parameter + +# unsetting IFS here + +set " abc " " def ghi " "jkl " +unset -v IFS var +var=${var-$*}/${var-$*} +printf '[%s]\n' "$var" + +unset -v var +: ${var=$*} +printf '[%s]\n' "$var" + +unset -v var +: ${var:=$*/$*/${var-$*}} +printf '[%s]\n' "$var" diff --git a/tests/posixexp7.sub b/tests/posixexp7.sub new file mode 100644 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 << > one one\ctwo 4\.2 diff --git a/tests/printf.tests b/tests/printf.tests index e72f5c8bb..9dbac6f0b 100644 --- a/tests/printf.tests +++ b/tests/printf.tests @@ -308,6 +308,9 @@ shopt -s nullglob extglob echo "x$(printf "%b" @(hugo))x" printf -v var "%b" @(hugo); echo "x${var}x" +# make sure that missing arguments are always handled like the empty string +printf "<%3s><%3b>\n" + # tests variable assignment with -v ${THIS_SH} ./printf1.sub @@ -316,4 +319,3 @@ ${THIS_SH} ./printf2.sub ${THIS_SH} ./printf3.sub ${THIS_SH} ./printf4.sub - diff --git a/tests/printf3.sub b/tests/printf3.sub index ec14fa34d..d45e101cb 100644 --- a/tests/printf3.sub +++ b/tests/printf3.sub @@ -6,7 +6,7 @@ SECS=1275250155 export TZ=EST5EDT case $SHELLSTART in -*s*) SHELLSTART=$(perl -e 'print time') ; DATESECS=false ;; # take a shot +*s*) SHELLSTART=$EPOCHSECONDS ; DATESECS=false ;; # take a shot *) DATESECS=true ;; esac @@ -15,7 +15,7 @@ printf "%(abde)Z\n" -1 printf "%(%e-%b-%Y %T)T\n" $SECS -printf -v v1 "%(%e-%b-%Y %T)T\n" $( $DATESECS && date +%s || perl -e 'print time') +printf -v v1 "%(%e-%b-%Y %T)T\n" $( $DATESECS && date +%s || echo $EPOCHSECONDS ) printf -v v2 "%(%e-%b-%Y %T)T\n" -1 case $v1 in diff --git a/tests/procsub.right b/tests/procsub.right new file mode 100644 index 000000000..cf1dbb104 --- /dev/null +++ b/tests/procsub.right @@ -0,0 +1,29 @@ +test1 +foo +test2 +test3 +test4 +8 +test5 +test6 +test7 +test8 +test8a +test9 +hi +bye +l8r +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +intern +1 +0 +0 +0 +0 +extern +1 +0 +0 +0 +0 +123 diff --git a/tests/procsub.tests b/tests/procsub.tests new file mode 100644 index 000000000..01ba46a8e --- /dev/null +++ b/tests/procsub.tests @@ -0,0 +1,105 @@ +# process substitution constructs that have caused problems in the past +. ./test-glue-functions + +eval cat <(echo test1) +eval "echo foo;cat" <(echo test2) + +unset f +f=<(echo test3); cat "$f" + +unset f +eval f=<(echo test4) "; cat \$f" + +unset f + +FN=$TMPDIR/bashtest-procsub-$$ +cat >"$FN" </dev/null +} +f2(){ + date >/dev/null + cat $1 +} +cat <(echo hi) +f1 <(echo bye) +f2 <(echo l8r) + +unset -f f1 f2 + +# set up conditions for test +ulimit -n 256 + +bug() +{ +c=$(ulimit -n) +let c+=100 +while let c-- +do + while read -ru3 x + do + echo -n : + done 3< <(echo x) +done +echo +} + +bug +unset -f bug + +count_lines() +{ + wc -l < $1 + +# case "$1" in +# *sh-np*) [ -e "$1" ] || { echo 0; echo 0; echo 0; echo 0; return; } ;; +# *) ;; +# esac + + wc -l < $1 + wc -l < $1 + true | wc -l < $1 + wc -l < $1 +} + +echo intern +count_lines <(date) | _cut_leading_spaces +unset -f count_lines + +echo extern +FN=$TMPDIR/bashtest-$$ +cat >$FN << \EOF +wc -l < $1 +wc -l < $1 +wc -l < $1 +true | wc -l < $1 +wc -l < $1 +EOF + +${THIS_SH} -c "source $FN <(date)" | _cut_leading_spaces +rm -f $FN + +moo() { ls -l "$1" >/dev/null; ls -l "$1" >/dev/null; }; moo >(true) +moo() { ls -al "$1" >/dev/null; (true); ls -al "$1" >/dev/null; }; moo >(true) + +unset -f moo + +${THIS_SH} ./procsub1.sub diff --git a/tests/procsub1.sub b/tests/procsub1.sub new file mode 100644 index 000000000..0e68f3b23 --- /dev/null +++ b/tests/procsub1.sub @@ -0,0 +1,5 @@ +# make sure we can wait for the last process substitution, since it sets $! +cat <(exit 123) >/dev/null + +wait "$!" +echo $? diff --git a/tests/quote.right b/tests/quote.right index 00b55c623..e4eb9bb95 100644 --- a/tests/quote.right +++ b/tests/quote.right @@ -66,6 +66,12 @@ argv[2] = ${ argv[1] = <(")> argv[1] = <(")> +string \ +string \ +string \ +string \ +string \ +string \} 'weferfds'\''dsfsdf' 'weferfdsdsfsdf' 'weferfds'\''dsfsdf' @@ -80,3 +86,37 @@ test'string a'b'c foo b c baz foo 'bar baz +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +===== +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +===== +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +===== +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> +argv[1] = <> diff --git a/tests/quote.tests b/tests/quote.tests index 0c55293bb..d7f13cd0c 100644 --- a/tests/quote.tests +++ b/tests/quote.tests @@ -109,4 +109,16 @@ recho `echo "(\\")"` # ultimate workaround recho `echo "(\")"` +# various strings ending in backslashes + +echo 'string \' +echo "string \\" + +echo string\ \\ + +echo ${foo:-'string \'} +echo "${foo:-string \\}" +echo ${foo:-string \\\}} + ${THIS_SH} ./quote1.sub +${THIS_SH} ./quote2.sub diff --git a/tests/quote1.sub b/tests/quote1.sub index c83e64ac3..a9a1ef155 100644 --- a/tests/quote1.sub +++ b/tests/quote1.sub @@ -14,7 +14,7 @@ echo "'${test//"'"/}'" echo "'${test//"'"/"'\\''"}'" -echo "'${test//"'"/\'\\'\'}'" +printf "%s\n" "'${test//"'"/\'\\'\'}'" #echo "'${test//'/}'" # hangs waiting for ' #echo "'${test//"'"/'\\''}'" # hangs waiting for ' diff --git a/tests/quote2.sub b/tests/quote2.sub new file mode 100644 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/read.tests b/tests/read.tests index fe27dae3e..f67cd00e7 100644 --- a/tests/read.tests +++ b/tests/read.tests @@ -25,43 +25,43 @@ echo $'\177' | ( read ; recho "$REPLY" ) # the input stream echo $'ab\\\ncd' | ( read ; recho "$REPLY" ) -echo "A B " > /tmp/IN +echo "A B " > $TMPDIR/IN unset x y z -read x y z < /tmp/IN +read x y z < $TMPDIR/IN echo 1: "x[$x] y[$y] z[$z]" echo 1a: ${z-z not set} -read x < /tmp/IN +read x < $TMPDIR/IN echo 2: "x[$x]" -rm /tmp/IN +rm $TMPDIR/IN # this is where the bash `read' behavior with respect to $REPLY differs # from ksh93 -echo "A B " > /tmp/IN +echo "A B " > $TMPDIR/IN -read < /tmp/IN +read < $TMPDIR/IN echo "[$REPLY]" -rm /tmp/IN +rm $TMPDIR/IN -echo " A B " > /tmp/IN +echo " A B " > $TMPDIR/IN -read < /tmp/IN +read < $TMPDIR/IN echo "[$REPLY]" -rm /tmp/IN +rm $TMPDIR/IN # make sure that read with more variables than words sets the extra # variables to the empty string bvar=bvar cvar=cvar -echo aa > /tmp/IN -read avar bvar cvar < /tmp/IN +echo aa > $TMPDIR/IN +read avar bvar cvar < $TMPDIR/IN echo =="$avar"== echo =="$bvar"== echo =="$cvar"== -rm /tmp/IN +rm $TMPDIR/IN # test behavior of read with various settings of IFS diff --git a/tests/redir.right b/tests/redir.right index c158e2518..d4ab60d52 100644 --- a/tests/redir.right +++ b/tests/redir.right @@ -26,10 +26,10 @@ from stdin: aa to stdout ./redir4.sub: line 32: $fd: ambiguous redirect ./redir4.sub: line 33: $fd: ambiguous redirect -/tmp/err-and-out: +err-and-out: to stdout to stderr -/tmp/err-and-out: +err-and-out: to stdout to stderr 0 -- 3 0 @@ -44,7 +44,7 @@ kl ab cd cd -./redir.tests: line 154: redir1.*: No such file or directory +./redir.tests: line 157: redir1.*: No such file or directory # tests of ksh93-like dup-and-close redirection operators exec 9<$0 @@ -64,14 +64,14 @@ f typeset -f f # make sure it was closed -read -u 5 foo +read -u 5 foo 2>&1 | grep -q 'invalid file descriptor' echo after read exec 5<&0 exec <&- -read abcde +read abcde 2>&1 | grep -q 'read error' exec 0<&9- read line @@ -84,9 +84,7 @@ f () echo "$line"; done } -./redir5.sub: line 20: read: 5: invalid file descriptor: Bad file descriptor after read -./redir5.sub: line 27: read: read error: 0: Bad file descriptor # tests of ksh93-like dup-and-close redirection operators / / @@ -141,20 +139,10 @@ bix () foo :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 1 -./redir11.sub: line 8: $a: Bad file descriptor -./redir11.sub: line 9: $(echo $a): Bad file descriptor 7 after: 42 -./redir11.sub: line 24: echo: write error: Bad file descriptor -./redir11.sub: line 25: echo: write error: Bad file descriptor -./redir11.sub: line 26: $(a=4 foo): Bad file descriptor -./redir11.sub: line 27: $(a=4 foo): Bad file descriptor -./redir11.sub: line 30: $a: Bad file descriptor -./redir11.sub: line 31: $(echo $a): Bad file descriptor -./redir11.sub: line 39: $(ss= declare -i ss): ambiguous redirect +./redir11.sub: line 40: $(ss= declare -i ss): ambiguous redirect after: 42 a+=3 foo foo -./redir11.sub: line 53: $(echo $a): Bad file descriptor -123 diff --git a/tests/redir.tests b/tests/redir.tests index 24e3cd1a5..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 # @@ -191,4 +194,3 @@ ${THIS_SH} ./redir9.sub ${THIS_SH} ./redir10.sub ${THIS_SH} ./redir11.sub -${THIS_SH} ./redir12.sub diff --git a/tests/redir11.sub b/tests/redir11.sub index 59ed493a3..a919602c7 100644 --- a/tests/redir11.sub +++ b/tests/redir11.sub @@ -4,9 +4,10 @@ a=1 a=4 b=7 ss=4 echo $a +# use grep to avoid differences due to different system error messages a=42 -a=2 echo foo >&$a -a=2 echo foo >&$(echo $a) +a=2 echo foo 2>&1 >&$a | { grep -q '\$a: Bad file' || echo 'redir11 bad 1'; } +a=2 echo foo 2>&1 >&$(echo $a) | { grep -q 'Bad file' || echo 'redir11 bad 2'; } foo() { @@ -21,14 +22,14 @@ a=4 b=7 foo echo after: $a unset a -a=4 echo foo >&$(foo) -a=1 echo foo >&$(foo) -a=1 echo foo >&$(a=4 foo) -echo foo >&$(a=4 foo) +a=4 echo foo 2>&1 >&$(foo) | { grep -q 'Bad file' || echo 'redir11 bad 3'; } +a=1 echo foo 2>&1 >&$(foo) | { grep -q 'Bad file' || echo 'redir11 bad 4'; } +a=1 echo foo 2>&1 >&$(a=4 foo) | { grep -q 'Bad file' || echo 'redir11 bad 5'; } +echo foo 2>&1 >&$(a=4 foo) | { grep -q 'Bad file' || echo 'redir11 bad 6'; } a=42 -a=2 echo foo >&$a -a=2 echo foo >&$(echo $a) +a=2 echo foo 2>&1 >&$a | { grep -q 'Bad file' || echo 'redir11 bad 7'; } +a=2 echo foo 2>&1 >&$(echo $a) | { grep -q 'Bad file' || echo 'redir11 bad 8'; } unset -f foo foo() @@ -50,4 +51,4 @@ a=9 echo foo >&$(echo $a) a=2 a=9 eval echo foo >&$(echo $a) a=2 -a=9 eval echo foo '>&$(echo $a)' +a=9 eval echo foo '2>&1 >&$(echo $a)' | { grep -q 'Bad file' || echo 'redir11 bad 9'; } diff --git a/tests/redir4.sub b/tests/redir4.sub index 47344554e..14406d011 100644 --- a/tests/redir4.sub +++ b/tests/redir4.sub @@ -34,23 +34,23 @@ exec 4>&$fd exec 3>&1 4>&2 -exec >&/tmp/err-and-out +exec >&${TMPDIR}/err-and-out echo to stdout echo to stderr >&2 exec 1>&3 2>&4 -echo /tmp/err-and-out: -cat /tmp/err-and-out +echo err-and-out: +cat ${TMPDIR}/err-and-out -rm /tmp/err-and-out +rm ${TMPDIR}/err-and-out -fd=/tmp/err-and-out +fd=${TMPDIR}/err-and-out exec >&$fd echo to stdout echo to stderr >&2 exec 1>&3 2>&4 -echo /tmp/err-and-out: -cat /tmp/err-and-out +echo err-and-out: +cat ${TMPDIR}/err-and-out -rm /tmp/err-and-out +rm ${TMPDIR}/err-and-out diff --git a/tests/redir5.sub b/tests/redir5.sub index 5d59d39c5..ee7b045af 100644 --- a/tests/redir5.sub +++ b/tests/redir5.sub @@ -17,14 +17,14 @@ f typeset -f f # make sure it was closed -read -u 5 foo +read -u 5 foo 2>&1 | grep -q 'invalid file descriptor' echo after read exec 5<&0 exec <&- -read abcde +read abcde 2>&1 | grep -q 'read error' exec 0<&9- read line diff --git a/tests/redir6.sub b/tests/redir6.sub index 60cc68b0a..c735e5233 100644 --- a/tests/redir6.sub +++ b/tests/redir6.sub @@ -6,3 +6,5 @@ pwd echo $? echo $? echo $? + +cd $OLDPWD diff --git a/tests/redir8.sub b/tests/redir8.sub index 5f972a14d..88753f2f2 100644 --- a/tests/redir8.sub +++ b/tests/redir8.sub @@ -56,4 +56,6 @@ exec 0<&7 exec 7<&- rm -f infile + +cd $OLDPWD exit 0 diff --git a/tests/rsh.right b/tests/rsh.right index 022b2ca1f..a728f1379 100644 --- a/tests/rsh.right +++ b/tests/rsh.right @@ -1,13 +1,19 @@ -./rsh.tests: line 9: cd: restricted -./rsh.tests: line 10: PATH: readonly variable -./rsh.tests: line 11: SHELL: readonly variable -./rsh.tests: line 12: /bin/sh: restricted: cannot specify `/' in command names -./rsh.tests: line 14: .: ./source.sub3: restricted -./rsh.tests: line 17: /tmp/restricted: restricted: cannot redirect output -./rsh.tests: line 21: /tmp/restricted: restricted: cannot redirect output -./rsh.tests: line 26: command: -p: restricted -./rsh.tests: line 28: set: +r: invalid option +./rsh1.sub: line 9: /bin/sh: restricted +./rsh1.sub: line 11: sh: not found +./rsh1.sub: line 12: a: command not found +./rsh2.sub: line 10: hash: /bin/sh: restricted +./rsh2.sub: line 12: hash: sh: not found +./rsh2.sub: line 13: a: command not found +./rsh.tests: line 12: cd: restricted +./rsh.tests: line 13: PATH: readonly variable +./rsh.tests: line 14: SHELL: readonly variable +./rsh.tests: line 15: /bin/sh: restricted: cannot specify `/' in command names +./rsh.tests: line 17: .: ./source.sub3: restricted +./rsh.tests: line 20: /tmp/restricted: restricted: cannot redirect output +./rsh.tests: line 24: /tmp/restricted: restricted: cannot redirect output +./rsh.tests: line 29: command: -p: restricted +./rsh.tests: line 31: set: +r: invalid option set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] -./rsh.tests: line 29: set: restricted: invalid option name -./rsh.tests: line 31: exec: restricted +./rsh.tests: line 32: set: restricted: invalid option name +./rsh.tests: line 34: exec: restricted ./rsh.tests: after exec diff --git a/tests/rsh.tests b/tests/rsh.tests index ffdf6e553..d1d777846 100644 --- a/tests/rsh.tests +++ b/tests/rsh.tests @@ -4,6 +4,9 @@ # adding builtins dynamically with enable -f # importing function definitions from environment +${THIS_SH} ./rsh1.sub +${THIS_SH} ./rsh2.sub + set -r cd / diff --git a/tests/rsh1.sub b/tests/rsh1.sub new file mode 100644 index 000000000..fdd4ddd96 --- /dev/null +++ b/tests/rsh1.sub @@ -0,0 +1,16 @@ +cd ${TMPDIR:-/tmp} +cp /bin/sh . + +PATH=/rbin:/usr/local/rbin +hash -p /bin/rm rm + +set -r + +BASH_CMDS[x]=/bin/sh + +BASH_CMDS[a]="sh" +a -c 'echo hello' + +rm -f sh a + +exit 0 diff --git a/tests/rsh2.sub b/tests/rsh2.sub new file mode 100644 index 000000000..8c82c68bb --- /dev/null +++ b/tests/rsh2.sub @@ -0,0 +1,17 @@ +cd ${TMPDIR:-/tmp} +cp /bin/sh . +ln sh a + +PATH=/rbin:/usr/local/rbin +hash -p /bin/rm rm + +set -r + +hash -p /bin/sh sh + +hash -p sh a +a -c 'echo hello' + +rm -f sh a + +exit 0 diff --git a/tests/run-all b/tests/run-all index 2882fe079..34d3e4c8e 100644 --- a/tests/run-all +++ b/tests/run-all @@ -9,15 +9,21 @@ SUFFIX=`${THIS_SH} -c 'echo $(( $RANDOM + $BASHPID ))'` BASH_TSTOUT=${TMPDIR}/bashtst-$SUFFIX # for now export BASH_TSTOUT -trap 'rm -f $BASH_TSTOUT' 0 +trap 'rm -f $BASH_TSTOUT' 0 1 2 3 15 PATH=.:$PATH # just to get recho/zecho/printenv if not run via `make tests' export PATH # unset BASH_ENV only if it is set [ "${BASH_ENV+set}" = "set" ] && unset BASH_ENV -# ditto for SHELLOPTS -#[ "${SHELLOPTS+set}" = "set" ] && unset SHELLOPTS +# can't reliably do it for SHELLOPTS; SHELLOPTS is readonly in bash +if [ "${BASH_VERSION+set}" = "set" ]; then + export -n SHELLOPTS # just make sure its not exported + set +o posix + typeset -p SHELLOPTS +else + [ "${SHELLOPTS+set}" = "set" ] && unset SHELLOPTS 2>/dev/null +fi : ${THIS_SH:=../bash} export THIS_SH diff --git a/tests/run-dynvar b/tests/run-dynvar new file mode 100644 index 000000000..26c5434b1 --- /dev/null +++ b/tests/run-dynvar @@ -0,0 +1,2 @@ +${THIS_SH} ./dynvar.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} dynvar.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-glob-test b/tests/run-glob-test index 43aa276fd..246501ccf 100644 --- a/tests/run-glob-test +++ b/tests/run-glob-test @@ -1,4 +1,7 @@ PATH=$PATH:`pwd` export PATH -${THIS_SH} ./glob.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} -diff ${BASH_TSTOUT} glob.right && rm -f ${BASH_TSTOUT} + +( diff -a glob.right glob.right >/dev/null 2>&1 ) && AFLAG=-a + +${THIS_SH} ./glob.tests > ${BASH_TSTOUT} 2>&1 +diff ${AFLAG} ${BASH_TSTOUT} glob.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-minimal b/tests/run-minimal index c7fba73e6..bbb9da189 100644 --- a/tests/run-minimal +++ b/tests/run-minimal @@ -41,6 +41,8 @@ do run-ifs-tests|run-input-test|run-invert|run-more-exp|run-nquote) echo $x ; sh $x ;; run-ifs-posix|run-posix2|run-posixpat|run-posixpipe) echo $x ; sh $x ;; run-precedence|run-quote|run-read|run-rhs-exp|run-strip|run-tilde) echo $x ; sh $x ;; + run-dynvar) echo $x ; sh $x ;; + ;; *) ;; esac rm -f "$BASH_TSTOUT" diff --git a/tests/run-nquote4 b/tests/run-nquote4 index 44baac4cb..985c31113 100644 --- a/tests/run-nquote4 +++ b/tests/run-nquote4 @@ -1,4 +1,8 @@ +# See whether or not we can use `diff -a' +( diff -a ./nquote4.right ./nquote4.right >/dev/null 2>&1 ) && AFLAG=-a + echo warning: some of these tests will fail if you do not have UTF-8 >&2 echo warning: locales installed on your system >&2 -${THIS_SH} ./nquote4.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} -diff ${BASH_TSTOUT} nquote4.right && rm -f ${BASH_TSTOUT} + +${THIS_SH} ./nquote4.tests > ${BASH_TSTOUT} 2>&1 +diff ${AFLAG} ${BASH_TSTOUT} nquote4.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-procsub b/tests/run-procsub new file mode 100644 index 000000000..796faaa8f --- /dev/null +++ b/tests/run-procsub @@ -0,0 +1,7 @@ +echo "warning: all of these tests will fail if process substitution has not" >&2 +echo "warning: been compiled into the shell or if the OS does not provide" >&2 +echo "warning: FIFOs or /dev/fd. Some tests may fail if the OS does not" >&2 +echo "warning: provide FIFOs." >&2 + +${THIS_SH} ./procsub.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} procsub.right && rm -f ${BASH_TSTOUT} 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/set-x.right b/tests/set-x.right index a41a382a3..259602e5e 100644 --- a/tests/set-x.right +++ b/tests/set-x.right @@ -26,6 +26,10 @@ + x=i + case x in + x=i ++ foo=one ++ foo+=two ++ echo onetwo +onetwo + set +x 1 2 diff --git a/tests/set-x.tests b/tests/set-x.tests index 648f0a9eb..531c53f6a 100755 --- a/tests/set-x.tests +++ b/tests/set-x.tests @@ -14,6 +14,11 @@ case x in 0) x=i ;; *) x=i ;; esac + +foo=one +foo+=two +echo $foo + set +x # test BASH_XTRACEFD diff --git a/tests/shopt.right b/tests/shopt.right index 86d9ed6b3..08db75f17 100644 --- a/tests/shopt.right +++ b/tests/shopt.right @@ -2,6 +2,7 @@ shopt: usage: shopt [-pqsu] [-o] [optname ...] -- shopt -u autocd +shopt -u assoc_expand_once shopt -u cdable_vars shopt -s cdspell shopt -u checkhash @@ -14,6 +15,7 @@ shopt -u compat40 shopt -u compat41 shopt -u compat42 shopt -u compat43 +shopt -u compat44 shopt -s complete_fullquote shopt -u direxpand shopt -u dirspell @@ -25,7 +27,7 @@ shopt -u extglob shopt -s extquote shopt -u failglob shopt -s force_fignore -shopt -u globasciiranges +shopt -s globasciiranges shopt -u globstar shopt -u gnu_errfmt shopt -u histappend @@ -37,6 +39,8 @@ shopt -u inherit_errexit shopt -s interactive_comments shopt -u lastpipe shopt -u lithist +shopt -u localvar_inherit +shopt -u localvar_unset shopt -u login_shell shopt -u mailwarn shopt -u no_empty_cmd_completion @@ -44,6 +48,7 @@ shopt -u nocaseglob shopt -u nocasematch shopt -u nullglob shopt -s progcomp +shopt -u progcomp_alias shopt -s promptvars shopt -u restricted_shell shopt -u shift_verbose @@ -60,6 +65,7 @@ shopt -s complete_fullquote shopt -s expand_aliases shopt -s extquote shopt -s force_fignore +shopt -s globasciiranges shopt -s hostcomplete shopt -s interactive_comments shopt -s progcomp @@ -67,6 +73,7 @@ shopt -s promptvars shopt -s sourcepath -- shopt -u autocd +shopt -u assoc_expand_once shopt -u cdable_vars shopt -u checkhash shopt -u checkjobs @@ -77,6 +84,7 @@ shopt -u compat40 shopt -u compat41 shopt -u compat42 shopt -u compat43 +shopt -u compat44 shopt -u direxpand shopt -u dirspell shopt -u dotglob @@ -84,7 +92,6 @@ shopt -u execfail shopt -u extdebug shopt -u extglob shopt -u failglob -shopt -u globasciiranges shopt -u globstar shopt -u gnu_errfmt shopt -u histappend @@ -94,17 +101,21 @@ shopt -u huponexit shopt -u inherit_errexit shopt -u lastpipe shopt -u lithist +shopt -u localvar_inherit +shopt -u localvar_unset shopt -u login_shell shopt -u mailwarn shopt -u no_empty_cmd_completion shopt -u nocaseglob shopt -u nocasematch shopt -u nullglob +shopt -u progcomp_alias shopt -u restricted_shell shopt -u shift_verbose shopt -u xpg_echo -- autocd off +assoc_expand_once off cdable_vars off checkhash off checkjobs off @@ -115,6 +126,7 @@ compat40 off compat41 off compat42 off compat43 off +compat44 off direxpand off dirspell off dotglob off @@ -122,7 +134,6 @@ execfail off extdebug off extglob off failglob off -globasciiranges off globstar off gnu_errfmt off histappend off @@ -132,12 +143,15 @@ huponexit off inherit_errexit off lastpipe off lithist off +localvar_inherit off +localvar_unset off login_shell off mailwarn off no_empty_cmd_completion off nocaseglob off nocasematch off nullglob off +progcomp_alias off restricted_shell off shift_verbose off xpg_echo off diff --git a/tests/test-glue-functions b/tests/test-glue-functions index 2b2f61d0b..07ad8215f 100644 --- a/tests/test-glue-functions +++ b/tests/test-glue-functions @@ -6,4 +6,8 @@ _intl_normalize_spaces() sed -e 's/[[:space:]]\{1,\}/ /g' -e 's/[[:space:]]*$//' } - +# avoid whitespace differences in wc implementations +_cut_leading_spaces() +{ + sed -e 's/^[ ]*//g' +} diff --git a/tests/test.right b/tests/test.right index 7fcd99640..9832bd6d3 100644 --- a/tests/test.right +++ b/tests/test.right @@ -289,3 +289,7 @@ t -t /dev/tty4 t -t /dev/tty4444444... 1 1 +t -p /dev/fd/6 +1 +t -p /dev/fd/6 +0 diff --git a/tests/test.tests b/tests/test.tests index 47eef3546..07a87a0b2 100644 --- a/tests/test.tests +++ b/tests/test.tests @@ -436,3 +436,5 @@ t -t /dev/tty4444444... # fixed in bash-4.0-beta t -t ' ' + +${THIS_SH} ./test1.sub diff --git a/tests/test1.sub b/tests/test1.sub new file mode 100644 index 000000000..a1c58170c --- /dev/null +++ b/tests/test1.sub @@ -0,0 +1,21 @@ +# some systems, like old SunOS, have stat on /dev/fd/N and fstat(N, ...) +# return different results +: ${TMPDIR:=/tmp} + +trap 'rm -f ${TMPDIR}/pipe' 0 1 2 3 6 15 + +exec 6>&- +echo "t -p /dev/fd/6" +test -p /dev/fd/6 +echo $? + +rm -f ${TMPDIR}/pipe 2>/dev/null +mkfifo ${TMPDIR}/pipe +cat < ${TMPDIR}/pipe & +exec 6>&- +exec 6>${TMPDIR}/pipe +echo "t -p /dev/fd/6" +test -p /dev/fd/6 +echo $? +exec 2>/dev/null # disable process termination message +kill $! 2>/dev/null diff --git a/tests/tilde.tests b/tests/tilde.tests index 50f19e98a..8a9f13691 100644 --- a/tests/tilde.tests +++ b/tests/tilde.tests @@ -1,3 +1,4 @@ +wdir=$PWD # this is needed because posix mode restricts tilde expansion to assignment # statements preceding a command, instead of the default of expanding all # assignment statements on the line (e.g., after `export'). Without this, @@ -69,3 +70,6 @@ esac USER=root # should exist just about everywhere echo ~$USER + +cd "$wdir" +exit 0 diff --git a/tests/trap.right b/tests/trap.right index 1f68d3318..416582931 100644 --- a/tests/trap.right +++ b/tests/trap.right @@ -64,6 +64,14 @@ after while before false in trap2a.sub after false in trap2a.sub command substitution +ERRTRAP +ERRTRAP +bar +ERRTRAP +ERRTRAP +ERRTRAP +ERRTRAP +ERRTRAP +[6] echo 1 1 +[7] echo 2 @@ -93,6 +101,10 @@ sleep 2 wait $! exit in trap EXIT +fn +after 1 +fn +after 2 caught a child death caught a child death caught a child death diff --git a/tests/trap.tests b/tests/trap.tests index 4176df085..637bfd282 100644 --- a/tests/trap.tests +++ b/tests/trap.tests @@ -74,6 +74,9 @@ ${THIS_SH} ./trap4.sub # This doesn't work right on all Unix versions #${THIS_SH} ./trap5.sub +# Return trap issues +${THIS_SH} ./trap6.sub + # # show that setting a trap on SIGCHLD is not disastrous. # diff --git a/tests/trap2.sub b/tests/trap2.sub index 73357df2a..0f1f2d962 100755 --- a/tests/trap2.sub +++ b/tests/trap2.sub @@ -23,3 +23,27 @@ echo after while ./trap2a.sub echo $(false ; echo command substitution) + +# test behavior of failed commands following `command' builtin +command false + +(command false) +command false | echo bar + +(false) + +exit 42 | command false + +command command command false + +unset FALSE +if [ -x /bin/false ]; then + FALSE=/bin/false +elif [ -x /usr/bin/false ]; then + FALSE=/usr/bin/false +else + FALSE='command false' +fi + +command $FALSE +command command command $FALSE diff --git a/tests/trap6.sub b/tests/trap6.sub new file mode 100644 index 000000000..332a17737 --- /dev/null +++ b/tests/trap6.sub @@ -0,0 +1,15 @@ +set -o functrace +fn() { return; } + +trap "echo fn ; fn" RETURN + +fn +echo after 1 + +unset -f fn + +fn() { eval return; } +fn +echo after 2 + +unset -f fn diff --git a/tests/type.right b/tests/type.right index 3f7d26e2d..7ec6bfba5 100644 --- a/tests/type.right +++ b/tests/type.right @@ -65,11 +65,11 @@ foo is a function foo () { echo; - cat <> ${f} <<-EOF + cat <<-EOF >> ${f} file EOF @@ -99,7 +99,7 @@ c:file bb is a function bb () { - ( cat < 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/varenv10.sub b/tests/varenv10.sub new file mode 100644 index 000000000..887cfd2c2 --- /dev/null +++ b/tests/varenv10.sub @@ -0,0 +1,47 @@ +#!/bin/bash +# +# various tests of unset when applied to variables at different local scopes + +# function unsetting variable at previous local scope, uncovering global + +inner() +{ + unset res + echo ${FUNCNAME}: ${res-res unset} + if [[ $1 == "set" ]]; then + res[0]="X" + res[1]="Y" + fi +} + +outer() +{ + local res= + inner "$1" + echo ${FUNCNAME}: "res: ${res[@]}" +} + +echo main: ${res-unset} +outer set +echo main: after first call: ${res-unset} +outer dontset +echo main: after second call: ${res-unset} + +unset -f outer inner +unset res + +# local scope, unset variable at the same scope as local declaration +func() +{ + typeset x=4 + + unset x + echo ${FUNCNAME}: ${x:-null or unset} +} + +x=outside +func +echo after func: x = $x + +unset -f func +unset x diff --git a/tests/varenv11.sub b/tests/varenv11.sub new file mode 100644 index 000000000..d43849830 --- /dev/null +++ b/tests/varenv11.sub @@ -0,0 +1,30 @@ +# couple of errors here +func() +{ + local qux=7 + local qux=(one two) + local what=(zero one two) +} + +readonly qux=42 +func + +func2() +{ + declare -gA foo=([zero]=zero [one]=one) + declare -ga bar=(zero one) +} + +foo=help +bar=me + +func2 + +declare -p foo bar +unset foo bar +func2 +declare -p foo bar + +readonly a=7 +a=(1 2 3) + diff --git a/tests/varenv12.sub b/tests/varenv12.sub new file mode 100644 index 000000000..edba3c946 --- /dev/null +++ b/tests/varenv12.sub @@ -0,0 +1,100 @@ +set -o posix + +fn() { foo=abc : ; typeset +x foo; printenv|grep ^foo=; } + +fn +unset -v foo +unset -f fn + +func1() { + var=1 + var=2 : # or 'var=2 return', or another special builtin + unset -v var + echo $FUNCNAME: var = $var +} +func2() { + func1 + unset -v var # bug: fails silently +} +func1 +echo ${var+"BUG: still set 1"} + +unset var +func2 +echo ${var+"BUG: still set 2"} + +unset -v var +unset -f func1 func2 + +fn() { foo=abc : ; typeset +x foo; echo -n 'inside: ' ; declare -p foo; } +fn +echo outside: +declare -p foo + +unset -v foo +unset -f fn + +func() +{ + var=value declare -x var + echo -n 'inside: ' ; declare -p var +} + +var=one +func +echo -n 'outside: ' ; declare -p var + +unset -v var +unset -f func + +# this will probably change behavior; export shouldn't behave like this when +# not in posix mode and the sequencing is probably wrong in posix mode. since +# export is a special builtin, the variable assignment should modify the +# global variable, leaving the local variable unchanged. all shells, including +# bash, modify the local variable; bash is the only one that propagates the +# value out to the calling environment. bash does that only when in posix +# mode. + +func() +{ + local var=inside + var=value export var + echo -n 'inside: ' ; declare -p var +} + +var=outside +func +echo -n 'outside: ' ; declare -p var + +unset -v var +unset -f func + +func() +{ + local var=local + var=global : + echo -n 'inside: ' ; declare -p var +} + +var=outside +func +echo -n 'outside: ' ; declare -p var + +unset -v var +unset -f func + +# test whether or not temporary environment assignments are exported +# in posix mode +showfoo() +{ + printf %s "foo=${foo-}" + 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/tests/varenv9.sub b/tests/varenv9.sub new file mode 100644 index 000000000..eda1be3fa --- /dev/null +++ b/tests/varenv9.sub @@ -0,0 +1,66 @@ +# case 1: readonly modifying local scalar variables +o1() { + local i1 j1 + readonly i1=$1 + readonly j1="1 2 3" + + echo "in o1 (readonly modifying local scalars):" + declare -p i1 + declare -p j1 +} + +o1 "a b c" + +echo after o1: +declare -p i1 j1 + +unset i1 j1 + +# case 2: readonly setting global scalar variables +o2() { + readonly i2=$1 + readonly j2="1 2 3" + + echo "in o2 (readonly setting global scalars):" + declare -p i2 + declare -p j2 +} + +o2 "a b c" +echo after o2: +declare -p i2 j2 + +unset i2 j2 + +# case 3: readonly modifying local variables, converting to arrays +o3() { + local i3 j3 + readonly i3=($1) + readonly j3=(1 2 3) + + echo "in o3 (readonly modifying locals, converting to arrays):" + declare -p i3 + declare -p j3 +} + +o3 "a b c" +echo after o3: +declare -p i3 j3 + +unset i3 j3 + +# case 4: readonly setting global array variables +o4() { + readonly i4=($1) + readonly j4=(1 2 3) + + echo "in o4 (readonly setting global array variables):" + declare -p i4 + declare -p j4 +} + +o4 "a b c" +echo after o4: +declare -p i4 j4 + +unset i4 j4 diff --git a/tests/version b/tests/version index bd7402053..9ad08f7d4 100644 --- a/tests/version +++ b/tests/version @@ -1,3 +1,8 @@ +if (( $UID == 0 )); then + echo "${THIS_SH}: the test suite should not be run as root" >&2 + echo +fi + echo Testing ${THIS_SH} echo version: $BASH_VERSION diff --git a/tests/version.mini b/tests/version.mini index 72e4bf963..637565ea9 100644 --- a/tests/version.mini +++ b/tests/version.mini @@ -1,3 +1,8 @@ +if (( $UID == 0 )); then + echo "${THIS_SH}: the test suite should not be run as root" >&2 + echo +fi + echo Testing ${THIS_SH} echo version: $BASH_VERSION diff --git a/tests/vredir.right b/tests/vredir.right index 3985f22df..f4fe0db83 100644 --- a/tests/vredir.right +++ b/tests/vredir.right @@ -11,9 +11,6 @@ bar () ./vredir.tests: line 6: v: readonly variable ./vredir.tests: line 6: v: cannot assign fd to variable 42 -./vredir.tests: line 25: $v: Bad file descriptor -./vredir.tests: line 26: $v: Bad file descriptor -./vredir.tests: line 27: $v: Bad file descriptor bar is a function bar () { @@ -27,7 +24,7 @@ line 3 bar is a function bar () { - exec {v}<&- readonly v=42 bar -echo foo 1 >&$v -echo foo 2 >&$v -echo foo 3 >&$v +echo foo 1 2>&1 >&$v | { grep -q '\$v: Bad' || echo 'bad foo 1'; } +echo foo 2 2>&1 >&$v | { grep -q '\$v: Bad' || echo 'bad foo 2'; } +echo foo 3 2>&1 >&$v | { grep -q '\$v: Bad' || echo 'bad foo 3'; } cat $TMPFILE rm -f $TMPFILE diff --git a/trap.c b/trap.c index eb8ecf3a1..3cb67cdf0 100644 --- a/trap.c +++ b/trap.c @@ -1,7 +1,7 @@ /* trap.c -- Not the trap command, but useful functions for manipulating those objects. The trap command is in builtins/trap.def. */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -38,7 +38,9 @@ #include "trap.h" #include "shell.h" +#include "execute_cmd.h" #include "flags.h" +#include "parser.h" #include "input.h" /* for save_token_state, restore_token_state */ #include "jobs.h" #include "signames.h" @@ -85,20 +87,10 @@ static void reset_or_restore_signal_handlers (sh_resetsig_func_t *); static void trap_if_untrapped (int, char *); /* Variables used here but defined in other files. */ -extern int last_command_exit_value; -extern int line_number; - -extern int sigalrm_seen; extern procenv_t alrmbuf; extern volatile int from_return_trap; -extern char *this_command_name; -extern sh_builtin_func_t *this_shell_builtin; -extern procenv_t wait_intr_buf; -extern int wait_intr_flag; -extern int return_catch_flag, return_catch_value; -extern int subshell_level; extern WORD_LIST *subst_assign_varlist; /* The list of things to do originally, before we started trapping. */ @@ -242,6 +234,23 @@ decode_signal (string, flags) if (legal_number (string, &sig)) return ((sig >= 0 && sig < NSIG) ? (int)sig : NO_SIG); +#if defined (SIGRTMIN) && defined (SIGRTMAX) + if (STREQN (string, "SIGRTMIN+", 9) || ((flags & DSIG_NOCASE) && strncasecmp (string, "SIGRTMIN+", 9) == 0)) + { + if (legal_number (string+9, &sig) && sig >= 0 && sig <= SIGRTMAX - SIGRTMIN) + return (SIGRTMIN + sig); + else + return NO_SIG; + } + else if (STREQN (string, "RTMIN+", 6) || ((flags & DSIG_NOCASE) && strncasecmp (string, "RTMIN+", 6) == 0)) + { + if (legal_number (string+6, &sig) && sig >= 0 && sig <= SIGRTMAX - SIGRTMIN) + return (SIGRTMIN + sig); + else + return NO_SIG; + } +#endif /* SIGRTMIN && SIGRTMAX */ + /* A leading `SIG' may be omitted. */ for (sig = 0; sig < BASH_NSIG; sig++) { @@ -303,9 +312,15 @@ run_pending_traps () #if defined (SIGWINCH) if (running_trap == SIGWINCH+1 && pending_traps[SIGWINCH]) return; /* no recursive SIGWINCH trap invocations */ -#else - ; #endif + /* could check for running the trap handler for the same signal here + (running_trap == sig+1) */ + if (evalnest_max > 0 && evalnest > evalnest_max) + { + internal_error (_("trap handler: maximum trap handler level exceeded (%d)"), evalnest_max); + evalnest = 0; + jump_to_top_level (DISCARD); + } } catch_flag = trapped_signal_received = 0; @@ -330,8 +345,10 @@ run_pending_traps () if (sig == SIGINT) { pending_traps[sig] = 0; /* XXX */ + /* We don't modify evalnest here, since run_interrupt_trap() calls + _run_trap_internal, which does. */ run_interrupt_trap (0); - CLRINTERRUPT; + CLRINTERRUPT; /* interrupts don't stack */ } #if defined (JOB_CONTROL) && defined (SIGCHLD) else if (sig == SIGCHLD && @@ -339,10 +356,14 @@ run_pending_traps () (sigmodes[SIGCHLD] & SIG_INPROGRESS) == 0) { sigmodes[SIGCHLD] |= SIG_INPROGRESS; + /* We modify evalnest here even though run_sigchld_trap can run + the trap action more than once */ + evalnest++; x = pending_traps[sig]; pending_traps[sig] = 0; run_sigchld_trap (x); /* use as counter */ running_trap = 0; + evalnest--; sigmodes[SIGCHLD] &= ~SIG_INPROGRESS; /* continue here rather than reset pending_traps[SIGCHLD] below in case there are recursive calls to run_pending_traps and children @@ -406,7 +427,9 @@ run_pending_traps () #endif /* XXX - set pending_traps[sig] = 0 here? */ pending_traps[sig] = 0; + evalnest++; evalstring (savestring (trap_list[sig]), "trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE); + evalnest--; #if defined (JOB_CONTROL) restore_pipeline (1); #endif @@ -479,7 +502,7 @@ trap_handler (sig) errno = oerrno; } - + SIGRETURN (0); } @@ -494,6 +517,8 @@ first_pending_trap () return -1; } +/* Return > 0 if any of the "real" signals (not fake signals like EXIT) are + trapped. */ int any_signals_trapped () { @@ -940,8 +965,8 @@ _run_trap_internal (sig, tag) char *tag; { char *trap_command, *old_trap; - int trap_exit_value, *token_state; - volatile int save_return_catch_flag, function_code, top_level_code, old_int; + int trap_exit_value; + volatile int save_return_catch_flag, function_code, old_int; int flags; procenv_t save_return_catch; WORD_LIST *save_subst_varlist; @@ -1001,6 +1026,7 @@ _run_trap_internal (sig, tag) flags = SEVAL_NONINT|SEVAL_NOHIST; if (sig != DEBUG_TRAP && sig != RETURN_TRAP && sig != ERROR_TRAP) flags |= SEVAL_RESETLINE; + evalnest++; if (function_code == 0) { parse_and_execute (trap_command, tag, flags); @@ -1008,6 +1034,7 @@ _run_trap_internal (sig, tag) } else trap_exit_value = return_catch_value; + evalnest--; #if defined (JOB_CONTROL) if (sig != DEBUG_TRAP) /* run_debug_trap does this */ @@ -1037,6 +1064,8 @@ _run_trap_internal (sig, tag) #endif free (old_trap); sigmodes[sig] &= ~SIG_CHANGED; + + CHECK_TERMSIG; /* some pathological conditions lead here */ } if (save_return_catch_flag) @@ -1060,9 +1089,11 @@ _run_trap_internal (sig, tag) int run_debug_trap () { - int trap_exit_value; + int trap_exit_value, old_verbose; pid_t save_pgrp; +#if defined (PGRP_PIPE) int save_pipe[2]; +#endif /* XXX - question: should the DEBUG trap inherit the RETURN trap? */ trap_exit_value = 0; @@ -1078,8 +1109,15 @@ run_debug_trap () stop_making_children (); #endif + old_verbose = echo_input_at_read; +#if 0 /* not yet */ + echo_input_at_read = 0; +#endif + trap_exit_value = _run_trap_internal (DEBUG_TRAP, "debug trap"); + echo_input_at_read = old_verbose; + #if defined (JOB_CONTROL) pipeline_pgrp = save_pgrp; restore_pipeline (1); @@ -1087,8 +1125,9 @@ run_debug_trap () close_pgrp_pipe (); restore_pgrp_pipe (save_pipe); # endif - if (pipeline_pgrp > 0) + if (pipeline_pgrp > 0 && ((subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0)) give_terminal_to (pipeline_pgrp, 1); + notify_and_cleanup (); #endif @@ -1176,7 +1215,7 @@ free_trap_string (sig) int sig; { change_signal (sig, (char *)DEFAULT_SIG); - sigmodes[sig] &= ~SIG_TRAPPED; + sigmodes[sig] &= ~SIG_TRAPPED; /* XXX - SIG_INPROGRESS? */ } /* Reset the handler for SIG to the original value but leave the trap string @@ -1186,7 +1225,7 @@ reset_signal (sig) int sig; { set_signal_handler (sig, original_signals[sig]); - sigmodes[sig] &= ~SIG_TRAPPED; + sigmodes[sig] &= ~SIG_TRAPPED; /* XXX - SIG_INPROGRESS? */ } /* Set the handler signal SIG to the original and free any trap @@ -1209,7 +1248,7 @@ reset_or_restore_signal_handlers (reset) /* Take care of the exit trap first */ if (sigmodes[EXIT_TRAP] & SIG_TRAPPED) { - sigmodes[EXIT_TRAP] &= ~SIG_TRAPPED; + sigmodes[EXIT_TRAP] &= ~SIG_TRAPPED; /* XXX - SIG_INPROGRESS? */ if (reset != reset_signal) { free_trap_command (EXIT_TRAP); diff --git a/trap.h b/trap.h index 41f185f7d..91cec2d86 100644 --- a/trap.h +++ b/trap.h @@ -60,6 +60,11 @@ extern char *trap_list[]; +extern int trapped_signal_received; +extern int wait_signal_received; +extern int running_trap; +extern int trap_saved_exit_value; + /* Externally-visible functions declared in trap.c. */ extern void initialize_traps __P((void)); @@ -112,6 +117,7 @@ extern int signal_in_progress __P((int)); extern int first_pending_trap __P((void)); extern int any_signals_trapped __P((void)); +extern void check_signals __P((void)); extern void check_signals_and_traps __P((void)); #endif /* _TRAP_H_ */ diff --git a/variables.c b/variables.c index be2446e03..610629abb 100644 --- a/variables.c +++ b/variables.c @@ -1,6 +1,6 @@ /* variables.c -- Functions for hacking shell variables. */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -47,6 +47,7 @@ #define NEED_XTRACE_SET_DECL #include "shell.h" +#include "parser.h" #include "flags.h" #include "execute_cmd.h" #include "findcmd.h" @@ -96,30 +97,7 @@ extern char **environ; /* Variables used here and defined in other files. */ -extern int posixly_correct; -extern int line_number, line_number_base; -extern int subshell_environment, indirection_level, subshell_level; -extern int build_version, patch_level; -extern int expanding_redir; -extern int last_command_exit_value; -extern char *dist_version, *release_status; -extern char *shell_name; -extern char *primary_prompt, *secondary_prompt; -extern char *current_host_name; -extern sh_builtin_func_t *this_shell_builtin; -extern SHELL_VAR *this_shell_function; -extern char *the_printed_command_except_trap; -extern char *this_command_name; -extern char *command_execution_string; extern time_t shell_start_time; -extern int assigning_in_environment; -extern int executing_builtin; -extern int funcnest_max; - -#if defined (READLINE) -extern int no_line_editing; -extern int perform_hostname_completion; -#endif /* The list of shell variables that the user has created at the global scope, or that came from the environment. */ @@ -132,6 +110,8 @@ VAR_CONTEXT *shell_variables = (VAR_CONTEXT *)NULL; the environment. */ HASH_TABLE *shell_functions = (HASH_TABLE *)NULL; +HASH_TABLE *invalid_env = (HASH_TABLE *)NULL; + #if defined (DEBUGGER) /* The table of shell function definitions that the user defined or that came from the environment. */ @@ -142,6 +122,15 @@ HASH_TABLE *shell_function_defs = (HASH_TABLE *)NULL; executing functions we are. */ int variable_context = 0; +/* If non-zero, local variables inherit values and attributes from a variable + with the same name at a previous scope. */ +int localvar_inherit = 0; + +/* If non-zero, calling `unset' on local variables in previous scopes marks + them as invisible so lookups find them unset. This is the same behavior + as local variables in the current local scope. */ +int localvar_unset = 0; + /* The set of shell assignments which are made only in the environment for a single command. */ HASH_TABLE *temporary_env = (HASH_TABLE *)NULL; @@ -180,6 +169,7 @@ SHELL_VAR nameref_invalid_value; static SHELL_VAR nameref_maxloop_value; static HASH_TABLE *last_table_searched; /* hash_lookup sets this */ +static VAR_CONTEXT *last_context_searched; /* Some forward declarations. */ static void create_variable_tables __P((void)); @@ -221,6 +211,9 @@ static SHELL_VAR *get_lineno __P((SHELL_VAR *)); static SHELL_VAR *assign_subshell __P((SHELL_VAR *, char *, arrayind_t, char *)); static SHELL_VAR *get_subshell __P((SHELL_VAR *)); +static SHELL_VAR *get_epochseconds __P((SHELL_VAR *)); +static SHELL_VAR *get_epochrealtime __P((SHELL_VAR *)); + static SHELL_VAR *get_bashpid __P((SHELL_VAR *)); #if defined (HISTORY) @@ -239,7 +232,9 @@ static SHELL_VAR *get_dirstack __P((SHELL_VAR *)); #if defined (ARRAY_VARS) static SHELL_VAR *get_groupset __P((SHELL_VAR *)); - +# if defined (DEBUGGER) +static SHELL_VAR *get_bashargcv __P((SHELL_VAR *)); +# endif static SHELL_VAR *build_hashcmd __P((SHELL_VAR *)); static SHELL_VAR *get_hashcmd __P((SHELL_VAR *)); static SHELL_VAR *assign_hashcmd __P((SHELL_VAR *, char *, arrayind_t, char *)); @@ -255,6 +250,10 @@ static SHELL_VAR *init_funcname_var __P((void)); static void initialize_dynamic_variables __P((void)); +static SHELL_VAR *bind_invalid_envvar __P((const char *, char *, int)); + +static int var_sametype __P((SHELL_VAR *, SHELL_VAR *)); + static SHELL_VAR *hash_lookup __P((const char *, HASH_TABLE *)); static SHELL_VAR *new_shell_variable __P((const char *)); static SHELL_VAR *make_new_variable __P((const char *, HASH_TABLE *)); @@ -290,6 +289,7 @@ static SHELL_VAR *find_variable_nameref_context __P((SHELL_VAR *, VAR_CONTEXT *, static SHELL_VAR *find_variable_last_nameref_context __P((SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **)); static SHELL_VAR *bind_tempenv_variable __P((const char *, char *)); +static void push_posix_temp_var __P((PTR_T)); static void push_temp_var __P((PTR_T)); static void propagate_temp_var __P((PTR_T)); static void dispose_temporary_env __P((sh_free_func_t *)); @@ -304,8 +304,11 @@ static int n_shell_variables __P((void)); static int set_context __P((SHELL_VAR *)); static void push_func_var __P((PTR_T)); +static void push_builtin_var __P((PTR_T)); static void push_exported_var __P((PTR_T)); +static inline void push_posix_tempvar_internal __P((SHELL_VAR *, int)); + static inline int find_special_var __P((const char *)); static void @@ -400,7 +403,7 @@ initialize_shell_variables (env, privmode) } else { - if (temp_var = bind_variable (name, string, 0)) + if (temp_var = bind_invalid_envvar (name, string, 0)) { VSETATTR (temp_var, (att_exported | att_imported | att_invisible)); array_needs_making = 1; @@ -431,24 +434,34 @@ initialize_shell_variables (env, privmode) #endif { ro = 0; - if (posixly_correct && STREQ (name, "SHELLOPTS")) + /* If we processed a command-line option that caused SHELLOPTS to be + set, it may already be set (and read-only) by the time we process + the shell's environment. */ + if (/* posixly_correct &&*/ STREQ (name, "SHELLOPTS")) { temp_var = find_variable ("SHELLOPTS"); ro = temp_var && readonly_p (temp_var); if (temp_var) VUNSETATTR (temp_var, att_readonly); } - temp_var = bind_variable (name, string, 0); - if (temp_var) + if (legal_identifier (name)) { - if (legal_identifier (name)) - VSETATTR (temp_var, (att_exported | att_imported)); - else + temp_var = bind_variable (name, string, 0); + if (temp_var) + { + VSETATTR (temp_var, (att_exported | att_imported)); + if (ro) + VSETATTR (temp_var, att_readonly); + } + } + else + { + temp_var = bind_invalid_envvar (name, string, 0); + if (temp_var) VSETATTR (temp_var, (att_exported | att_imported | att_invisible)); - if (ro) - VSETATTR (temp_var, att_readonly); - array_needs_making = 1; } + if (temp_var) + array_needs_making = 1; } name[char_index] = '='; @@ -471,14 +484,7 @@ initialize_shell_variables (env, privmode) /* Now make our own defaults in case the vars that we think are important are missing. */ temp_var = set_if_not ("PATH", DEFAULT_PATH_VALUE); -#if 0 - set_auto_export (temp_var); /* XXX */ -#endif - temp_var = set_if_not ("TERM", "dumb"); -#if 0 - set_auto_export (temp_var); /* XXX */ -#endif #if defined (__QNX__) /* set node id -- don't import it from the environment */ @@ -611,8 +617,9 @@ initialize_shell_variables (env, privmode) #endif /* HISTORY */ #if defined (READLINE) && defined (STRICT_POSIX) - /* POSIXLY_CORRECT will only be 1 here if the shell was compiled - -DSTRICT_POSIX */ + /* POSIXLY_CORRECT will be 1 here if the shell was compiled + -DSTRICT_POSIX or if POSIXLY_CORRECT was supplied in the shell's + environment */ if (interactive_shell && posixly_correct && no_line_editing == 0) rl_prefer_env_winsize = 1; #endif /* READLINE && STRICT_POSIX */ @@ -872,8 +879,13 @@ set_pwd () current_dir = sh_canonpath (temp_string, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); if (current_dir == 0) current_dir = get_working_directory ("shell_init"); - else + else set_working_directory (current_dir); + if (posixly_correct && current_dir) + { + temp_var = bind_variable ("PWD", current_dir, 0); + set_auto_export (temp_var); + } free (current_dir); } else if (home_string && interactive_shell && login_shell && @@ -899,7 +911,11 @@ set_pwd () don't find OLDPWD in the environment, or it doesn't name a directory, make a dummy invisible variable for OLDPWD, and mark it as exported. */ temp_var = find_variable ("OLDPWD"); +#if defined (OLDPWD_CHECK_DIRECTORY) if (temp_var == 0 || value_cell (temp_var) == 0 || file_isdir (value_cell (temp_var)) == 0) +#else + if (temp_var == 0 || value_cell (temp_var) == 0) +#endif { temp_var = bind_variable ("OLDPWD", (char *)NULL, 0); VSETATTR (temp_var, (att_exported | att_invisible)); @@ -1296,34 +1312,48 @@ init_seconds_var () } /* The random number seed. You can change this by setting RANDOM. */ -static unsigned long rseed = 1; +static u_bits32_t rseed = 1; static int last_random_value; static int seeded_subshell = 0; -/* A linear congruential random number generator based on the example - one in the ANSI C standard. This one isn't very good, but a more - complicated one is overkill. */ +#define BASH_RANDOM_16 1 + +#if BASH_RANDOM_16 +# define BASH_RAND_MAX 32767 /* 0x7fff - 16 bits */ +#else +# define BASH_RAND_MAX 0x7fffffff /* 32 bits */ +#endif /* Returns a pseudo-random number between 0 and 32767. */ static int brand () { - /* From "Random number generators: good ones are hard to find", + /* Minimal Standard generator from + "Random number generators: good ones are hard to find", Park and Miller, Communications of the ACM, vol. 31, no. 10, - October 1988, p. 1195. filtered through FreeBSD */ - long h, l; + October 1988, p. 1195. filtered through FreeBSD. + + x(n+1) = 16807 * x(n) mod (2**31 - 1). + + We split up the calculations to avoid overflow. + + h = rseed / q; l = x - h * q; t = a * l - h * r + m = 2147483647, a = 16807, q = 127773, r = 2836 + + There are lots of other combinations of constants to use; look at + https://www.gnu.org/software/gsl/manual/html_node/Other-random-number-generators.html#Other-random-number-generators */ + + bits32_t h, l, t; /* Can't seed with 0. */ if (rseed == 0) rseed = 123459876; h = rseed / 127773; - l = rseed % 127773; - rseed = 16807 * l - 2836 * h; -#if 0 - if (rseed < 0) - rseed += 0x7fffffff; -#endif - return ((unsigned int)(rseed & 32767)); /* was % 32768 */ + l = rseed - (127773 * h); + t = 16807 * l - 2836 * h; + rseed = (t < 0) ? t + 0x7fffffff : t; + + return ((unsigned int)(rseed & BASH_RAND_MAX)); /* was % BASH_RAND_MAX+1 */ } /* Set the random number generator seed to SEED. */ @@ -1339,9 +1369,15 @@ static void seedrand () { struct timeval tv; + SHELL_VAR *v; gettimeofday (&tv, NULL); +#if 0 + v = find_variable ("BASH_VERSION"); + sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid () ^ ((u_bits32_t)&v & 0x7fffffff)); +#else sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid ()); +#endif } static SHELL_VAR * @@ -1451,6 +1487,40 @@ get_subshell (var) return (var); } +static SHELL_VAR * +get_epochseconds (var) + SHELL_VAR *var; +{ + intmax_t now; + char *p; + + now = NOW; + p = itos (now); + + FREE (value_cell (var)); + var_setvalue (var, p); + return (var); +} + +static SHELL_VAR * +get_epochrealtime (var) + SHELL_VAR *var; +{ + char buf[32]; + char *p; + struct timeval tv; + + gettimeofday (&tv, NULL); + snprintf (buf, sizeof (buf), "%u%c%06u", (unsigned)tv.tv_sec, + locale_decpoint (), + (unsigned)tv.tv_usec); + + p = savestring (buf); + FREE (value_cell (var)); + var_setvalue (var, p); + return (var); +} + static SHELL_VAR * get_bashpid (var) SHELL_VAR *var; @@ -1462,11 +1532,49 @@ get_bashpid (var) p = itos (pid); FREE (value_cell (var)); - VSETATTR (var, att_integer|att_readonly); + VSETATTR (var, att_integer); /* XXX - was also att_readonly */ var_setvalue (var, p); return (var); } +static SHELL_VAR * +get_bash_argv0 (var) + SHELL_VAR *var; +{ + char *p; + + p = savestring (dollar_vars[0]); + FREE (value_cell (var)); + var_setvalue (var, p); + return var; +} + +static char *static_shell_name = 0; + +static SHELL_VAR * +assign_bash_argv0 (var, value, unused, key) + SHELL_VAR *var; + char *value; + arrayind_t unused; + char *key; +{ + size_t vlen; + + if (value == 0) + return var; + + FREE (dollar_vars[0]); + dollar_vars[0] = savestring (value); + + /* Need these gyrations because shell_name isn't dynamically allocated */ + vlen = STRLEN (value); + static_shell_name = xrealloc (static_shell_name, vlen + 1); + strcpy (static_shell_name, value); + + shell_name = static_shell_name; + return var; +} + static SHELL_VAR * get_bash_command (var) SHELL_VAR *var; @@ -1583,6 +1691,27 @@ get_groupset (self) return (self); } +# if defined (DEBUGGER) +static SHELL_VAR * +get_bashargcv (self) + SHELL_VAR *self; +{ + static int self_semaphore = 0; + + /* Backwards compatibility: if we refer to BASH_ARGV or BASH_ARGC at the + top level without enabling debug mode, and we don't have an instance + of the variable set, initialize the arg arrays. + This will already have been done if debugging_mode != 0. */ + if (self_semaphore == 0 && variable_context == 0 && debugging_mode == 0) /* don't do it for shell functions */ + { + self_semaphore = 1; + init_bash_argv (); + self_semaphore = 0; + } + return self; +} +# endif + static SHELL_VAR * build_hashcmd (self) SHELL_VAR *self; @@ -1633,10 +1762,25 @@ assign_hashcmd (self, value, ind, key) char *key; { #if defined (RESTRICTED_SHELL) - if (restricted && strchr (value, '/')) + char *full_path; + + if (restricted) { - sh_restricted (value); - return (SHELL_VAR *)NULL; + if (strchr (value, '/')) + { + sh_restricted (value); + return (SHELL_VAR *)NULL; + } + /* If we are changing the hash table in a restricted shell, make sure the + target pathname can be found using a $PATH search. */ + full_path = find_user_command (value); + if (full_path == 0 || *full_path == 0 || executable_file (full_path) == 0) + { + sh_notfound (value); + free (full_path); + return ((SHELL_VAR *)NULL); + } + free (full_path); } #endif phash_insert (key, value, 0, 0); @@ -1693,6 +1837,11 @@ assign_aliasvar (self, value, ind, key) arrayind_t ind; char *key; { + if (legal_alias_name (key, 0) == 0) + { + report_error (_("`%s': invalid alias name"), key); + return (self); + } add_alias (key, value); return (build_aliasvar (self)); } @@ -1758,16 +1907,23 @@ initialize_dynamic_variables () v = init_seconds_var (); + INIT_DYNAMIC_VAR ("BASH_ARGV0", (char *)NULL, get_bash_argv0, assign_bash_argv0); + INIT_DYNAMIC_VAR ("BASH_COMMAND", (char *)NULL, get_bash_command, (sh_var_assign_func_t *)NULL); INIT_DYNAMIC_VAR ("BASH_SUBSHELL", (char *)NULL, get_subshell, assign_subshell); INIT_DYNAMIC_VAR ("RANDOM", (char *)NULL, get_random, assign_random); VSETATTR (v, att_integer); INIT_DYNAMIC_VAR ("LINENO", (char *)NULL, get_lineno, assign_lineno); - VSETATTR (v, att_integer); + VSETATTR (v, att_integer|att_regenerate); INIT_DYNAMIC_VAR ("BASHPID", (char *)NULL, get_bashpid, null_assign); - VSETATTR (v, att_integer|att_readonly); + VSETATTR (v, att_integer); + + INIT_DYNAMIC_VAR ("EPOCHSECONDS", (char *)NULL, get_epochseconds, null_assign); + VSETATTR (v, att_regenerate); + INIT_DYNAMIC_VAR ("EPOCHREALTIME", (char *)NULL, get_epochrealtime, null_assign); + VSETATTR (v, att_regenerate); #if defined (HISTORY) INIT_DYNAMIC_VAR ("HISTCMD", (char *)NULL, get_histcmd, (sh_var_assign_func_t *)NULL); @@ -1786,8 +1942,8 @@ initialize_dynamic_variables () v = init_dynamic_array_var ("GROUPS", get_groupset, null_array_assign, att_noassign); # if defined (DEBUGGER) - v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, att_noassign|att_nounset); - v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, att_noassign|att_nounset); + v = init_dynamic_array_var ("BASH_ARGC", get_bashargcv, null_array_assign, att_noassign|att_nounset); + v = init_dynamic_array_var ("BASH_ARGV", get_bashargcv, null_array_assign, att_noassign|att_nounset); # endif /* DEBUGGER */ v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, att_noassign|att_nounset); v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, att_noassign|att_nounset); @@ -1904,7 +2060,7 @@ find_variable_nameref (v) SHELL_VAR *v; { int level, flags; - char *newname, *t; + char *newname; SHELL_VAR *orig, *oldv; level = 0; @@ -1926,6 +2082,13 @@ find_variable_nameref (v) if (v == orig || v == oldv) { internal_warning (_("%s: circular name reference"), orig->name); +#if 1 + /* XXX - provisional change - circular refs go to + global scope for resolution, without namerefs. */ + if (variable_context && v->context) + return (find_global_variable_noref (v->name)); + else +#endif return ((SHELL_VAR *)0); } } @@ -1995,7 +2158,6 @@ find_nameref_at_context (v, vc) VAR_CONTEXT *vc; { SHELL_VAR *nv, *nv2; - VAR_CONTEXT *nvc; char *newname; int level; @@ -2129,6 +2291,36 @@ find_variable_nameref_for_assignment (name, flags) return (var); } +/* If find_variable (name) returns NULL, check that it's not a nameref + referencing a variable that doesn't exist. If it is, return the new + name. If not, return the original name. Kind of like the previous + function, but dealing strictly with names. This takes assignment flags + so it can deal with the various assignment modes used by `declare'. */ +char * +nameref_transform_name (name, flags) + char *name; + int flags; +{ + SHELL_VAR *v; + char *newname; + + v = 0; + if (flags & ASS_MKLOCAL) + { + v = find_variable_last_nameref (name, 1); + /* If we're making local variables, only follow namerefs that point to + non-existant variables at the same variable context. */ + if (v && v->context != variable_context) + v = 0; + } + else if (flags & ASS_MKGLOBAL) + v = (flags & ASS_CHKLOCAL) ? find_variable_last_nameref (name, 1) + : find_global_variable_last_nameref (name, 1); + if (v && nameref_p (v) && valid_nameref_value (nameref_cell (v), 1)) + return nameref_cell (v); + return name; +} + /* Find a variable, forcing a search of the temporary environment first */ SHELL_VAR * find_variable_tempenv (name) @@ -2341,6 +2533,42 @@ sh_get_env_value (v) /* */ /* **************************************************************** */ +static int +var_sametype (v1, v2) + SHELL_VAR *v1; + SHELL_VAR *v2; +{ + if (v1 == 0 || v2 == 0) + return 0; +#if defined (ARRAY_VARS) + else if (assoc_p (v1) && assoc_p (v2)) + return 1; + else if (array_p (v1) && array_p (v2)) + return 1; + else if (array_p (v1) || array_p (v2)) + return 0; + else if (assoc_p (v1) || assoc_p (v2)) + return 0; +#endif + else + return 1; +} + +int +validate_inherited_value (var, type) + SHELL_VAR *var; + int type; +{ +#if defined (ARRAY_VARS) + if (type == att_array && assoc_p (var)) + return 0; + else if (type == att_assoc && array_p (var)) + return 0; + else +#endif + return 1; /* should we run convert_var_to_array here or let the caller? */ +} + /* Set NAME to VALUE if NAME has no value. */ SHELL_VAR * set_if_not (name, value) @@ -2359,13 +2587,14 @@ set_if_not (name, value) /* Create a local variable referenced by NAME. */ SHELL_VAR * -make_local_variable (name) +make_local_variable (name, flags) const char *name; + int flags; { SHELL_VAR *new_var, *old_var, *old_ref; VAR_CONTEXT *vc; int was_tmpvar; - char *tmp_value; + char *old_value; /* We don't want to follow the nameref chain when making local variables; we just want to create them. */ @@ -2399,10 +2628,23 @@ make_local_variable (name) if (was_tmpvar && old_var->context == variable_context && last_table_searched != temporary_env) { VUNSETATTR (old_var, att_invisible); /* XXX */ +#if 0 /* TAG:bash-5.1 */ + /* We still want to flag this variable as local, though, and set things + up so that it gets treated as a local variable. */ + new_var = old_var; + /* Since we found the variable in a temporary environment, this will + succeed. */ + for (vc = shell_variables; vc; vc = vc->down) + if (vc_isfuncenv (vc) && vc->scope == variable_context) + break; + goto set_local_var_flags; +#endif return (old_var); } - if (was_tmpvar) - tmp_value = value_cell (old_var); + + /* If we want to change to "inherit the old variable's value" semantics, + here is where to save the old value. */ + old_value = was_tmpvar ? value_cell (old_var) : (char *)NULL; for (vc = shell_variables; vc; vc = vc->down) if (vc_isfuncenv (vc) && vc->scope == variable_context) @@ -2448,12 +2690,43 @@ make_local_variable (name) things like `x=4 local x'. XXX - see above for temporary env variables with the same context level as variable_context */ /* XXX - we should only do this if the variable is not an array. */ + /* If we want to change the local variable semantics to "inherit + the old variable's value" here is where to set it. And we would + need to use copy_variable (currently unused) to do it for all + possible variable values. */ if (was_tmpvar) - var_setvalue (new_var, savestring (tmp_value)); + var_setvalue (new_var, savestring (old_value)); + else if (localvar_inherit || (flags & MKLOC_INHERIT)) + { + /* This may not make sense for nameref variables that are shadowing + variables with the same name, but we don't know that yet. */ +#if defined (ARRAY_VARS) + if (assoc_p (old_var)) + var_setassoc (new_var, assoc_copy (assoc_cell (old_var))); + else if (array_p (old_var)) + var_setarray (new_var, array_copy (array_cell (old_var))); + else if (value_cell (old_var)) +#else + if (value_cell (old_var)) +#endif + var_setvalue (new_var, savestring (value_cell (old_var))); + else + var_setvalue (new_var, (char *)NULL); + } - new_var->attributes = exported_p (old_var) ? att_exported : 0; + if (localvar_inherit || (flags & MKLOC_INHERIT)) + { + /* It doesn't make sense to inherit the nameref attribute */ + new_var->attributes = old_var->attributes & ~att_nameref; + new_var->dynamic_value = old_var->dynamic_value; + new_var->assign_func = old_var->assign_func; + } + else + /* We inherit the export attribute, but no others. */ + new_var->attributes = exported_p (old_var) ? att_exported : 0; } +set_local_var_flags: vc->flags |= VC_HASLOCAL; new_var->context = variable_context; @@ -2462,7 +2735,9 @@ make_local_variable (name) if (ifsname (name)) setifs (new_var); - if (was_tmpvar == 0 && no_invisible_vars == 0) + /* value_cell will be 0 if localvar_inherit == 0 or there was no old variable + with the same name or the old variable was invisible */ + if (was_tmpvar == 0 && no_invisible_vars == 0 && value_cell (new_var) == 0) VSETATTR (new_var, att_invisible); /* XXX */ return (new_var); } @@ -2539,14 +2814,32 @@ make_local_array_variable (name, assoc_ok) SHELL_VAR *var; ARRAY *array; - var = make_local_variable (name); + var = make_local_variable (name, 0); /* XXX for now */ + /* If ASSOC_OK is non-zero, assume that we are ok with letting an assoc + variable return to the caller without converting it. The caller will + either flag an error or do the conversion itself. */ if (var == 0 || array_p (var) || (assoc_ok && assoc_p (var))) return var; - array = array_create (); + /* Validate any value we inherited from a variable instance at a previous + scope and disard anything that's invalid. */ + if (localvar_inherit && assoc_p (var)) + { + internal_warning ("%s: cannot inherit value from incompatible type", name); + VUNSETATTR (var, att_assoc); + dispose_variable_value (var); + array = array_create (); + var_setarray (var, array); + } + else if (localvar_inherit) + var = convert_var_to_array (var); /* XXX */ + else + { + dispose_variable_value (var); + array = array_create (); + var_setarray (var, array); + } - dispose_variable_value (var); - var_setarray (var, array); VSETATTR (var, att_array); return var; } @@ -2567,20 +2860,39 @@ make_new_assoc_variable (name) } SHELL_VAR * -make_local_assoc_variable (name) +make_local_assoc_variable (name, array_ok) char *name; + int array_ok; { SHELL_VAR *var; HASH_TABLE *hash; - var = make_local_variable (name); - if (var == 0 || assoc_p (var)) + var = make_local_variable (name, 0); /* XXX for now */ + /* If ARRAY_OK is non-zero, assume that we are ok with letting an array + variable return to the caller without converting it. The caller will + either flag an error or do the conversion itself. */ + if (var == 0 || assoc_p (var) || (array_ok && array_p (var))) return var; - dispose_variable_value (var); - hash = assoc_create (0); + /* Validate any value we inherited from a variable instance at a previous + scope and disard anything that's invalid. */ + if (localvar_inherit && array_p (var)) + { + internal_warning ("%s: cannot inherit value from incompatible type", name); + VUNSETATTR (var, att_array); + dispose_variable_value (var); + hash = assoc_create (0); + var_setassoc (var, hash); + } + else if (localvar_inherit) + var = convert_var_to_assoc (var); /* XXX */ + else + { + dispose_variable_value (var); + hash = assoc_create (0); + var_setassoc (var, hash); + } - var_setassoc (var, hash); VSETATTR (var, att_assoc); return var; } @@ -2600,24 +2912,37 @@ make_variable_value (var, value, flags) then do expression evaluation on it and store the result. The functions in expr.c (evalexp()) and bind_int_variable() are responsible for turning off the integer flag if they don't want further - evaluation done. */ - if (integer_p (var)) + evaluation done. Callers that find it inconvenient to do this can set + the ASS_NOEVAL flag. For the special case of arithmetic expression + evaluation, the caller can set ASS_NOLONGJMP to avoid jumping out to + top_level. */ + if ((flags & ASS_NOEVAL) == 0 && integer_p (var)) { if (flags & ASS_APPEND) { oval = value_cell (var); - lval = evalexp (oval, &expok); /* ksh93 seems to do this */ + lval = evalexp (oval, 0, &expok); /* ksh93 seems to do this */ if (expok == 0) { - top_level_cleanup (); - jump_to_top_level (DISCARD); + if (flags & ASS_NOLONGJMP) + goto make_value; + else + { + top_level_cleanup (); + jump_to_top_level (DISCARD); + } } } - rval = evalexp (value, &expok); + rval = evalexp (value, 0, &expok); if (expok == 0) { - top_level_cleanup (); - jump_to_top_level (DISCARD); + if (flags & ASS_NOLONGJMP) + goto make_value; + else + { + top_level_cleanup (); + jump_to_top_level (DISCARD); + } } /* This can be fooled if the variable's value changes while evaluating `rval'. We can change it if we move the evaluation of lval to here. */ @@ -2626,7 +2951,7 @@ make_variable_value (var, value, flags) retval = itos (rval); } #if defined (CASEMOD_ATTRS) - else if (capcase_p (var) || uppercase_p (var) || lowercase_p (var)) + else if ((flags & ASS_NOEVAL) == 0 && (capcase_p (var) || uppercase_p (var) || lowercase_p (var))) { if (flags & ASS_APPEND) { @@ -2655,6 +2980,7 @@ make_variable_value (var, value, flags) #endif /* CASEMOD_ATTRS */ else if (value) { +make_value: if (flags & ASS_APPEND) { oval = get_variable_value (var); @@ -2680,8 +3006,55 @@ make_variable_value (var, value, flags) return retval; } +/* If we can optimize appending to string variables, say so */ +static int +can_optimize_assignment (entry, value, aflags) + SHELL_VAR *entry; + char *value; + int aflags; +{ + if ((aflags & ASS_APPEND) == 0) + return 0; +#if defined (ARRAY_VARS) + if (array_p (entry) || assoc_p (entry)) + return 0; +#endif + if (integer_p (entry) || uppercase_p (entry) || lowercase_p (entry) || capcase_p (entry)) + return 0; + if (readonly_p (entry) || noassign_p (entry)) + return 0; + return 1; +} + +/* right now we optimize appends to string variables */ +static SHELL_VAR * +optimized_assignment (entry, value, aflags) + SHELL_VAR *entry; + char *value; + int aflags; +{ + size_t len, vlen; + char *v, *new; + + v = value_cell (entry); + len = STRLEN (v); + vlen = STRLEN (value); + + new = (char *)xrealloc (v, len + vlen + 8); /* for now */ + if (vlen == 1) + { + new[len] = *value; + new[len+1] = '\0'; + } + else + strcpy (new + len, value); + var_setvalue (entry, new); + return entry; +} + /* Bind a variable NAME to VALUE in the HASH_TABLE TABLE, which may be the - temporary environment (but usually is not). */ + temporary environment (but usually is not). HFLAGS controls how NAME + is looked up in TABLE; AFLAGS controls how VALUE is assigned */ static SHELL_VAR * bind_variable_internal (name, value, table, hflags, aflags) const char *name; @@ -2718,12 +3091,17 @@ bind_variable_internal (name, value, table, hflags, aflags) } else if (entry && nameref_p (entry)) { - newval = nameref_cell (entry); + newval = nameref_cell (entry); /* XXX - newval can't be NULL here */ + if (valid_nameref_value (newval, 0) == 0) + { + sh_invalidid (newval); + return ((SHELL_VAR *)NULL); + } #if defined (ARRAY_VARS) /* declare -n foo=x[2] ; foo=bar */ if (valid_array_reference (newval, 0)) { - tname = array_variable_name (newval, (char **)0, (int *)0); + tname = array_variable_name (newval, 0, (char **)0, (int *)0); if (tname && (tentry = find_variable_noref (tname)) && nameref_p (tentry)) { /* nameref variables can't be arrays */ @@ -2734,21 +3112,21 @@ bind_variable_internal (name, value, table, hflags, aflags) } free (tname); /* XXX - should it be aflags? */ - entry = assign_array_element (newval, make_variable_value (entry, value, 0), aflags|ASS_NAMEREF); + entry = assign_array_element (newval, make_variable_value (entry, value, aflags), aflags|ASS_NAMEREF); if (entry == 0) return entry; } else #endif - { - entry = make_new_variable (newval, table); - var_setvalue (entry, make_variable_value (entry, value, 0)); - } + { + entry = make_new_variable (newval, table); + var_setvalue (entry, make_variable_value (entry, value, aflags)); + } } else if (entry == 0) { entry = make_new_variable (name, table); - var_setvalue (entry, make_variable_value (entry, value, 0)); /* XXX */ + var_setvalue (entry, make_variable_value (entry, value, aflags)); /* XXX */ } else if (entry->assign_func) /* array vars have assign functions now */ { @@ -2777,12 +3155,27 @@ assign_value: /* Variables which are bound are visible. */ VUNSETATTR (entry, att_invisible); + /* If we can optimize the assignment, do so and return. Right now, we + optimize appends to string variables. */ + if (can_optimize_assignment (entry, value, aflags)) + { + INVALIDATE_EXPORTSTR (entry); + optimized_assignment (entry, value, aflags); + + if (mark_modified_vars) + VSETATTR (entry, att_exported); + + if (exported_p (entry)) + array_needs_making = 1; + + return (entry); + } + #if defined (ARRAY_VARS) if (assoc_p (entry) || array_p (entry)) newval = make_array_variable_value (entry, 0, "0", value, aflags); else #endif - newval = make_variable_value (entry, value, aflags); /* XXX */ /* Invalidate any cached export string */ @@ -2832,7 +3225,6 @@ bind_variable (name, value, flags) { SHELL_VAR *v, *nv; VAR_CONTEXT *vc, *nvc; - int level; if (shell_variables == 0) create_variable_tables (); @@ -2854,6 +3246,9 @@ bind_variable (name, value, flags) nvc = vc; if (v && nameref_p (v)) { + /* This starts at the context where we found the nameref. If we + want to start the name resolution over again at the original + context, this is where we need to change it */ nv = find_variable_nameref_context (v, vc, &nvc); if (nv == 0) { @@ -2875,8 +3270,9 @@ bind_variable (name, value, flags) else if (nv == &nameref_maxloop_value) { internal_warning (_("%s: circular name reference"), v->name); -#if 0 - return (bind_variable_value (v, value, flags|ASS_NAMEREF)); +#if 1 + /* TAG:bash-5.1 */ + return (bind_global_variable (v->name, value, flags)); #else v = 0; /* backwards compat */ #endif @@ -2887,8 +3283,9 @@ bind_variable (name, value, flags) else if (nv == &nameref_maxloop_value) { internal_warning (_("%s: circular name reference"), v->name); -#if 0 - return (bind_variable_value (v, value, flags|ASS_NAMEREF)); +#if 1 + /* TAG:bash-5.1 */ + return (bind_global_variable (v->name, value, flags)); #else v = 0; /* backwards compat */ #endif @@ -2910,10 +3307,6 @@ bind_global_variable (name, value, flags) char *value; int flags; { - SHELL_VAR *v, *nv; - VAR_CONTEXT *vc, *nvc; - int level; - if (shell_variables == 0) create_variable_tables (); @@ -2921,6 +3314,17 @@ bind_global_variable (name, value, flags) return (bind_variable_internal (name, value, global_variables->table, 0, flags)); } +static SHELL_VAR * +bind_invalid_envvar (name, value, flags) + const char *name; + char *value; + int flags; +{ + if (invalid_env == 0) + invalid_env = hash_create (64); /* XXX */ + return (bind_variable_internal (name, value, invalid_env, HASH_NOSRCH, flags)); +} + /* Make VAR, a simple shell variable, have value VALUE. Once assigned a value, variables are no longer invisible. This is a duplicate of part of the internals of bind_variable. If the variable is exported, or @@ -2996,18 +3400,24 @@ bind_variable_value (var, value, aflags) variable we set here, then turn it back on after binding as necessary. */ SHELL_VAR * -bind_int_variable (lhs, rhs) +bind_int_variable (lhs, rhs, flags) char *lhs, *rhs; + int flags; { register SHELL_VAR *v; int isint, isarr, implicitarray; isint = isarr = implicitarray = 0; #if defined (ARRAY_VARS) - if (valid_array_reference (lhs, 0)) + if (valid_array_reference (lhs, (flags & ASS_NOEXPAND) != 0)) { isarr = 1; - v = array_variable_part (lhs, (char **)0, (int *)0); + v = array_variable_part (lhs, (flags & ASS_NOEXPAND) != 0, (char **)0, (int *)0); + } + else if (legal_identifier (lhs) == 0) + { + sh_invalidid (lhs); + return ((SHELL_VAR *)NULL); } else #endif @@ -3025,12 +3435,12 @@ bind_int_variable (lhs, rhs) #if defined (ARRAY_VARS) if (isarr) - v = assign_array_element (lhs, rhs, 0); + v = assign_array_element (lhs, rhs, flags); else if (implicitarray) - v = bind_array_variable (lhs, 0, rhs, 0); + v = bind_array_variable (lhs, 0, rhs, 0); /* XXX - check on flags */ else #endif - v = bind_variable (lhs, rhs, 0); + v = bind_variable (lhs, rhs, 0); /* why not use bind_variable_value? */ if (v) { @@ -3053,7 +3463,7 @@ bind_var_to_int (var, val) char ibuf[INT_STRLEN_BOUND (intmax_t) + 1], *p; p = fmtulong (val, 10, ibuf, sizeof (ibuf), 0); - return (bind_int_variable (var, p)); + return (bind_int_variable (var, p, 0)); } /* Do a function binding to a variable. You pass the name and @@ -3104,22 +3514,27 @@ bind_function (name, value) #if defined (DEBUGGER) /* Bind a function definition, which includes source file and line number - information in addition to the command, into the FUNCTION_DEF hash table.*/ + information in addition to the command, into the FUNCTION_DEF hash table. + If (FLAGS & 1), overwrite any existing definition. If FLAGS == 0, leave + any existing definition alone. */ void -bind_function_def (name, value) +bind_function_def (name, value, flags) const char *name; FUNCTION_DEF *value; + int flags; { FUNCTION_DEF *entry; BUCKET_CONTENTS *elt; COMMAND *cmd; entry = find_function_def (name); - if (entry) + if (entry && (flags & 1)) { dispose_function_def_contents (entry); entry = copy_function_def_contents (value, entry); } + else if (entry) + return; else { cmd = value->command; @@ -3165,6 +3580,12 @@ assign_in_env (word, flags) aflags |= ASS_APPEND; } + if (legal_identifier (name) == 0) + { + sh_invalidid (name); + return (0); + } + var = find_variable (name); if (var == 0) { @@ -3174,7 +3595,10 @@ assign_in_env (word, flags) but the variable does not already exist, assign to the nameref target and add the target to the temporary environment. This is what ksh93 does */ - if (var && nameref_p (var) && valid_nameref_value (nameref_cell (var), 1)) + /* We use 2 in the call to valid_nameref_value because we don't want + to allow array references here at all (newname will be used to + create a variable directly below) */ + if (var && nameref_p (var) && valid_nameref_value (nameref_cell (var), 2)) { newname = nameref_cell (var); var = 0; /* don't use it for append */ @@ -3503,7 +3927,8 @@ makunbound (name, vc) must be done so that if the variable is subsequently assigned a new value inside the function, the `local' attribute is still present. We also need to add it back into the correct hash table. */ - if (old_var && local_p (old_var) && variable_context == old_var->context) + if (old_var && local_p (old_var) && + (old_var->context == variable_context || (localvar_unset && old_var->context < variable_context))) { if (nofree_p (old_var)) var_setvalue (old_var, (char *)NULL); @@ -3960,7 +4385,7 @@ static int visible_array_vars (var) SHELL_VAR *var; { - return (invisible_p (var) == 0 && array_p (var)); + return (invisible_p (var) == 0 && (array_p (var) || assoc_p (var))); } SHELL_VAR ** @@ -4034,8 +4459,46 @@ find_tempenv_variable (name) char **tempvar_list; int tvlist_ind; +/* Take a variable from an assignment statement preceding a posix special + builtin (including `return') and create a global variable from it. This + is called from merge_temporary_env, which is only called when in posix + mode. */ +static void +push_posix_temp_var (data) + PTR_T data; +{ + SHELL_VAR *var, *v; + HASH_TABLE *binding_table; + + var = (SHELL_VAR *)data; + + binding_table = global_variables->table; + if (binding_table == 0) + binding_table = global_variables->table = hash_create (VARIABLES_HASH_BUCKETS); + + v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE|ASS_NOLONGJMP); + + /* global variables are no longer temporary and don't need propagating. */ + var->attributes &= ~(att_tempvar|att_propagate); + if (v) + v->attributes |= var->attributes; + + if (find_special_var (var->name) >= 0) + tempvar_list[tvlist_ind++] = savestring (var->name); + + dispose_variable (var); +} + /* Push the variable described by (SHELL_VAR *)DATA down to the next - variable context from the temporary environment. */ + variable context from the temporary environment. This can be called + from one context: + 1. propagate_temp_var: which is called to propagate variables in + assignments like `var=value declare -x var' to the surrounding + scope. + + In this case, the variable should have the att_propagate flag set and + we can create variables in the current scope. +*/ static void push_temp_var (data) PTR_T data; @@ -4055,10 +4518,13 @@ push_temp_var (data) binding_table = shell_variables->table = hash_create (TEMPENV_HASH_BUCKETS); } - v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE); + v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE|ASS_NOLONGJMP); /* XXX - should we set the context here? It shouldn't matter because of how - assign_in_env works, but might want to check. */ + assign_in_env works, but we do it anyway. */ + if (v) + v->context = shell_variables->scope; + if (binding_table == global_variables->table) /* XXX */ var->attributes &= ~(att_tempvar|att_propagate); else @@ -4076,6 +4542,10 @@ push_temp_var (data) dispose_variable (var); } +/* Take a variable described by DATA and push it to the surrounding scope if + the PROPAGATE attribute is set. That gets set by push_temp_var if we are + taking a variable like `var=value declare -x var' and propagating it to + the enclosing scope. */ static void propagate_temp_var (data) PTR_T data; @@ -4117,9 +4587,6 @@ dispose_temporary_env (pushf) array_needs_making = 1; -#if 0 - sv_ifs ("IFS"); /* XXX here for now -- check setifs in assign_in_env */ -#endif for (i = 0; i < tvlist_ind; i++) stupidly_hack_special_variables (tempvar_list[i]); @@ -4139,12 +4606,15 @@ dispose_used_env_vars () } /* Take all of the shell variables in the temporary environment HASH_TABLE - and make shell variables from them at the current variable context. */ + and make shell variables from them at the current variable context. + Right now, this is only called in Posix mode to implement the historical + accident of creating global variables from assignment statements preceding + special builtins, but we check in case this acquires another caller later. */ void merge_temporary_env () { if (temporary_env) - dispose_temporary_env (push_temp_var); + dispose_temporary_env (posixly_correct ? push_posix_temp_var : push_temp_var); } void @@ -4170,7 +4640,7 @@ mk_env_string (name, value, isfunc) int isfunc; { size_t name_len, value_len; - char *p, *q; + char *p, *q, *t; name_len = strlen (name); value_len = STRLEN (value); @@ -4197,7 +4667,17 @@ mk_env_string (name, value, isfunc) q[0] = '='; if (value && *value) - memcpy (q + 1, value, value_len + 1); + { + if (isfunc) + { + t = dequote_escapes (value); + value_len = STRLEN (t); + memcpy (q + 1, t, value_len + 1); + free (t); + } + else + memcpy (q + 1, value, value_len + 1); + } else q[1] = '\0'; @@ -4260,6 +4740,14 @@ make_env_array_from_var_list (vars) /* We don't use the exportstr stuff on Cygwin at all. */ INVALIDATE_EXPORTSTR (var); #endif + + /* If the value is generated dynamically, generate it here. */ + if (regen_p (var) && var->dynamic_value) + { + var = (*(var->dynamic_value)) (var); + INVALIDATE_EXPORTSTR (var); + } + if (var->exportstr) value = var->exportstr; else if (function_p (var)) @@ -4465,7 +4953,7 @@ maybe_make_export_env () { register char **temp_array; int new_size; - VAR_CONTEXT *tcxt; + VAR_CONTEXT *tcxt, *icxt; if (array_needs_making) { @@ -4477,7 +4965,7 @@ maybe_make_export_env () variables are not (yet) exported, this will always be big enough for the exported variables and functions. */ new_size = n_shell_variables () + HASH_ENTRIES (shell_functions) + 1 + - HASH_ENTRIES (temporary_env); + HASH_ENTRIES (temporary_env) + HASH_ENTRIES (invalid_env); if (new_size > export_env_size) { export_env_size = new_size; @@ -4498,11 +4986,23 @@ maybe_make_export_env () } else tcxt = shell_variables; + + if (invalid_env) + { + icxt = new_var_context ((char *)NULL, 0); + icxt->table = invalid_env; + icxt->down = tcxt; + } + else + icxt = tcxt; - temp_array = make_var_export_array (tcxt); + temp_array = make_var_export_array (icxt); if (temp_array) add_temp_array_to_env (temp_array, 0, 0); + if (icxt != tcxt) + free (icxt); + if (tcxt != shell_variables) free (tcxt); @@ -4613,11 +5113,26 @@ push_var_context (name, flags, tempvars) HASH_TABLE *tempvars; { VAR_CONTEXT *vc; + int posix_func_behavior; + + /* As of IEEE Std 1003.1-2017, assignment statements preceding shell + functions no longer behave like assignment statements preceding + special builtins, and do not persist in the current shell environment. + This is austin group interp #654, though nobody implements it yet. */ +#if 0 /* XXX - TAG: bash-5.1 */ + posix_func_behavior = 0; +#else + posix_func_behavior = posixly_correct; +#endif vc = new_var_context (name, flags); - vc->table = tempvars; - if (tempvars) + /* Posix interp 1009, temporary assignments preceding function calls modify + the current environment *before* the command is executed. */ + if (posix_func_behavior && (flags & VC_FUNCENV) && tempvars == temporary_env) + merge_temporary_env (); + else if (tempvars) { + vc->table = tempvars; /* Have to do this because the temp environment was created before variable_context was incremented. */ flatten (tempvars, set_context, (VARLIST *)NULL, 0); @@ -4629,27 +5144,51 @@ push_var_context (name, flags, tempvars) return (shell_variables = vc); } -static void -push_func_var (data) - PTR_T data; -{ - SHELL_VAR *var, *v; +/* This can be called from one of two code paths: + 1. pop_scope, which implements the posix rules for propagating variable + assignments preceding special builtins to the surrounding scope + (push_builtin_var); + 2. pop_var_context, which is called from pop_context and implements the + posix rules for propagating variable assignments preceding function + calls to the surrounding scope (push_func_var). - var = (SHELL_VAR *)data; + It takes variables out of a temporary environment hash table. We take the + variable in data. +*/ + +static inline void +push_posix_tempvar_internal (var, isbltin) + SHELL_VAR *var; + int isbltin; +{ + SHELL_VAR *v; + int posix_var_behavior; + + /* As of IEEE Std 1003.1-2017, assignment statements preceding shell + functions no longer behave like assignment statements preceding + special builtins, and do not persist in the current shell environment. + This is austin group interp #654, though nobody implements it yet. */ +#if 0 /* XXX - TAG: bash-5.1 */ + posix_var_behavior = posixly_correct && isbltin; +#else + posix_var_behavior = posixly_correct; +#endif if (local_p (var) && STREQ (var->name, "-")) set_current_options (value_cell (var)); - else if (tempvar_p (var) && (posixly_correct || (var->attributes & att_propagate))) + else if (tempvar_p (var) && (posix_var_behavior || (var->attributes & att_propagate))) { /* Make sure we have a hash table to store the variable in while it is being propagated down to the global variables table. Create one if we have to */ if ((vc_isfuncenv (shell_variables) || vc_istempenv (shell_variables)) && shell_variables->table == 0) shell_variables->table = hash_create (VARIABLES_HASH_BUCKETS); - /* XXX - should we set v->context here? */ v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0); + /* XXX - should we set v->context here? */ + if (v) + v->context = shell_variables->scope; #if defined (ARRAY_VARS) - if (array_p (var) || assoc_p (var)) + if (v && (array_p (var) || assoc_p (var))) { FREE (value_cell (v)); if (array_p (var)) @@ -4671,6 +5210,26 @@ push_func_var (data) dispose_variable (var); } +static void +push_func_var (data) + PTR_T data; +{ + SHELL_VAR *var; + + var = (SHELL_VAR *)data; + push_posix_tempvar_internal (var, 0); +} + +static void +push_builtin_var (data) + PTR_T data; +{ + SHELL_VAR *var; + + var = (SHELL_VAR *)data; + push_posix_tempvar_internal (var, 1); +} + /* Pop the top context off of VCXT and dispose of it, returning the rest of the stack. */ void @@ -4741,18 +5300,17 @@ push_exported_var (data) propagated, bind it in the previous scope before disposing it. */ /* XXX - This isn't exactly right, because all tempenv variables have the export attribute set. */ -#if 0 - if (exported_p (var) || (var->attributes & att_propagate)) -#else if (tempvar_p (var) && exported_p (var) && (var->attributes & att_propagate)) -#endif { var->attributes &= ~att_tempvar; /* XXX */ v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0); if (shell_variables == global_variables) var->attributes &= ~att_propagate; if (v) - v->attributes |= var->attributes; + { + v->attributes |= var->attributes; + v->context = shell_variables->scope; + } } else stupidly_hack_special_variables (var->name); /* XXX */ @@ -4760,11 +5318,17 @@ push_exported_var (data) dispose_variable (var); } +/* This is called to propagate variables in the temporary environment of a + special builtin (if IS_SPECIAL != 0) or exported variables that are the + result of a builtin like `source' or `command' that can operate on the + variables in its temporary environment. In the first case, we call + push_builtin_var, which does the right thing. */ void pop_scope (is_special) int is_special; { VAR_CONTEXT *vcxt, *ret; + int is_bltinenv; vcxt = shell_variables; if (vc_istempscope (vcxt) == 0) @@ -4772,6 +5336,7 @@ pop_scope (is_special) internal_error (_("pop_scope: head of shell_variables not a temporary environment scope")); return; } + is_bltinenv = vc_isbltnenv (vcxt); /* XXX - for later */ ret = vcxt->down; if (ret) @@ -4785,7 +5350,7 @@ pop_scope (is_special) if (vcxt->table) { if (is_special) - hash_flush (vcxt->table, push_func_var); + hash_flush (vcxt->table, push_builtin_var); else hash_flush (vcxt->table, push_exported_var); hash_dispose (vcxt->table); @@ -4801,10 +5366,64 @@ pop_scope (is_special) /* */ /* **************************************************************** */ -static WORD_LIST **dollar_arg_stack = (WORD_LIST **)NULL; +struct saved_dollar_vars { + char **first_ten; + WORD_LIST *rest; +}; + +static struct saved_dollar_vars *dollar_arg_stack = (struct saved_dollar_vars *)NULL; static int dollar_arg_stack_slots; static int dollar_arg_stack_index; +/* Functions to manipulate dollar_vars array. Need to keep these in sync with + whatever remember_args() does. */ +static char ** +save_dollar_vars () +{ + char **ret; + int i; + + ret = strvec_create (10); + for (i = 1; i < 10; i++) + { + ret[i] = dollar_vars[i]; + dollar_vars[i] = (char *)NULL; + } + return ret; +} + +static void +restore_dollar_vars (args) + char **args; +{ + int i; + + for (i = 1; i < 10; i++) + dollar_vars[i] = args[i]; +} + +static void +free_dollar_vars () +{ + int i; + + for (i = 1; i < 10; i++) + { + FREE (dollar_vars[i]); + dollar_vars[i] = (char *)NULL; + } +} + +static void +free_saved_dollar_vars (args) + char **args; +{ + int i; + + for (i = 1; i < 10; i++) + FREE (args[i]); +} + /* XXX - should always be followed by remember_args () */ void push_context (name, is_subshell, tempvars) @@ -4836,35 +5455,75 @@ push_dollar_vars () { if (dollar_arg_stack_index + 2 > dollar_arg_stack_slots) { - dollar_arg_stack = (WORD_LIST **) + dollar_arg_stack = (struct saved_dollar_vars *) xrealloc (dollar_arg_stack, (dollar_arg_stack_slots += 10) - * sizeof (WORD_LIST *)); + * sizeof (struct saved_dollar_vars)); } - dollar_arg_stack[dollar_arg_stack_index++] = list_rest_of_args (); - dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL; + + dollar_arg_stack[dollar_arg_stack_index].first_ten = save_dollar_vars (); + dollar_arg_stack[dollar_arg_stack_index++].rest = rest_of_args; + rest_of_args = (WORD_LIST *)NULL; + + dollar_arg_stack[dollar_arg_stack_index].first_ten = (char **)NULL; + dollar_arg_stack[dollar_arg_stack_index].rest = (WORD_LIST *)NULL; } /* Restore the positional parameters from our stack. */ void pop_dollar_vars () { - if (!dollar_arg_stack || dollar_arg_stack_index == 0) + if (dollar_arg_stack == 0 || dollar_arg_stack_index == 0) return; - remember_args (dollar_arg_stack[--dollar_arg_stack_index], 1); - dispose_words (dollar_arg_stack[dollar_arg_stack_index]); - dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL; + /* Do what remember_args (xxx, 1) would have done. */ + free_dollar_vars (); + dispose_words (rest_of_args); + + rest_of_args = dollar_arg_stack[--dollar_arg_stack_index].rest; + restore_dollar_vars (dollar_arg_stack[dollar_arg_stack_index].first_ten); + free (dollar_arg_stack[dollar_arg_stack_index].first_ten); + + dollar_arg_stack[dollar_arg_stack_index].first_ten = (char **)NULL; + dollar_arg_stack[dollar_arg_stack_index].rest = (WORD_LIST *)NULL; + set_dollar_vars_unchanged (); + invalidate_cached_quoted_dollar_at (); } void dispose_saved_dollar_vars () { - if (!dollar_arg_stack || dollar_arg_stack_index == 0) + if (dollar_arg_stack == 0 || dollar_arg_stack_index == 0) return; - dispose_words (dollar_arg_stack[dollar_arg_stack_index]); - dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL; + dispose_words (dollar_arg_stack[--dollar_arg_stack_index].rest); + free_saved_dollar_vars (dollar_arg_stack[dollar_arg_stack_index].first_ten); + free (dollar_arg_stack[dollar_arg_stack_index].first_ten); + + dollar_arg_stack[dollar_arg_stack_index].first_ten = (char **)NULL; + dollar_arg_stack[dollar_arg_stack_index].rest = (WORD_LIST *)NULL; +} + +/* Initialize BASH_ARGV and BASH_ARGC after turning on extdebug after the + shell is initialized */ +void +init_bash_argv () +{ + if (bash_argv_initialized == 0) + { + save_bash_argv (); + bash_argv_initialized = 1; + } +} + +void +save_bash_argv () +{ + WORD_LIST *list; + + list = list_rest_of_args (); + push_args (list); + dispose_words (list); } /* Manipulate the special BASH_ARGV and BASH_ARGC variables. */ @@ -4924,11 +5583,6 @@ pop_args () *************************************************/ /* Extern declarations for variables this code has to manage. */ -extern int eof_encountered, eof_encountered_limit, ignoreeof; - -#if defined (READLINE) -extern int hostname_list_initialized; -#endif /* An alist of name.function for each special variable. Most of the functions don't do much, and in fact, this would be faster with a @@ -5512,7 +6166,7 @@ set_pipestatus_array (ps, nproc) { ae = element_forw (a->head); free (element_value (ae)); - ae->value = itos (ps[0]); + set_element_value (ae, itos (ps[0])); } else if (array_num_elements (a) <= nproc) { @@ -5522,7 +6176,7 @@ set_pipestatus_array (ps, nproc) { ae = element_forw (ae); free (element_value (ae)); - ae->value = itos (ps[i]); + set_element_value (ae, itos (ps[i])); } /* add any more */ for ( ; i < nproc; i++) @@ -5547,16 +6201,15 @@ ARRAY * save_pipestatus_array () { SHELL_VAR *v; - ARRAY *a, *a2; + ARRAY *a; v = find_variable ("PIPESTATUS"); if (v == 0 || array_p (v) == 0 || array_cell (v) == 0) return ((ARRAY *)NULL); - a = array_cell (v); - a2 = array_copy (array_cell (v)); + a = array_copy (array_cell (v)); - return a2; + return a; } void diff --git a/variables.h b/variables.h index 25c9ae072..2f6e35468 100644 --- a/variables.h +++ b/variables.h @@ -1,6 +1,6 @@ /* variables.h -- data structures for shell variables. */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -125,6 +125,7 @@ typedef struct _vlist { #define att_imported 0x0008000 /* came from environment */ #define att_special 0x0010000 /* requires special handling */ #define att_nofree 0x0020000 /* do not free value on unset */ +#define att_regenerate 0x0040000 /* regenerate when exported */ #define attmask_int 0x00ff000 @@ -153,8 +154,10 @@ typedef struct _vlist { #define imported_p(var) ((((var)->attributes) & (att_imported))) #define specialvar_p(var) ((((var)->attributes) & (att_special))) #define nofree_p(var) ((((var)->attributes) & (att_nofree))) +#define regen_p(var) ((((var)->attributes) & (att_regenerate))) #define tempvar_p(var) ((((var)->attributes) & (att_tempvar))) +#define propagate_p(var) ((((var)->attributes) & (att_propagate))) /* Variable names: lvalues */ #define name_cell(var) ((var)->name) @@ -218,6 +221,9 @@ typedef struct _vlist { #define ifsname(s) ((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0') +/* Flag values for make_local_variable */ +#define MKLOC_INHERIT 0x01 + /* Special value for nameref with invalid value for creation or assignment */ extern SHELL_VAR nameref_invalid_value; #define INVALID_NAMEREF_VALUE (void *)&nameref_invalid_value @@ -236,7 +242,18 @@ extern int variable_context; extern char *dollar_vars[]; extern char **export_env; +extern int tempenv_assign_error; +extern int array_needs_making; +extern int shell_level; + +/* XXX */ +extern WORD_LIST *rest_of_args; +extern pid_t dollar_dollar_pid; + extern void initialize_shell_variables __P((char **, int)); + +extern int validate_inherited_value __P((SHELL_VAR *, int)); + extern SHELL_VAR *set_if_not __P((char *, char *)); extern void sh_set_lines_and_columns __P((int, int)); @@ -264,13 +281,14 @@ extern SHELL_VAR *find_shell_variable __P((const char *)); extern SHELL_VAR *find_tempenv_variable __P((const char *)); extern SHELL_VAR *find_variable_no_invisible __P((const char *)); extern SHELL_VAR *find_variable_for_assignment __P((const char *)); +extern char *nameref_transform_name __P((char *, int)); extern SHELL_VAR *copy_variable __P((SHELL_VAR *)); -extern SHELL_VAR *make_local_variable __P((const char *)); +extern SHELL_VAR *make_local_variable __P((const char *, int)); extern SHELL_VAR *bind_variable __P((const char *, char *, int)); extern SHELL_VAR *bind_global_variable __P((const char *, char *, int)); extern SHELL_VAR *bind_function __P((const char *, COMMAND *)); -extern void bind_function_def __P((const char *, FUNCTION_DEF *)); +extern void bind_function_def __P((const char *, FUNCTION_DEF *, int)); extern SHELL_VAR **map_over __P((sh_var_map_func_t *, VAR_CONTEXT *)); SHELL_VAR **map_over_funcs __P((sh_var_map_func_t *)); @@ -296,7 +314,7 @@ extern char *sh_get_env_value __P((const char *)); extern char *make_variable_value __P((SHELL_VAR *, char *, int)); extern SHELL_VAR *bind_variable_value __P((SHELL_VAR *, char *, int)); -extern SHELL_VAR *bind_int_variable __P((char *, char *)); +extern SHELL_VAR *bind_int_variable __P((char *, char *, int)); extern SHELL_VAR *bind_var_to_int __P((char *, intmax_t)); extern int assign_in_env __P((WORD_DESC *, int)); @@ -326,6 +344,8 @@ extern void push_dollar_vars __P((void)); extern void pop_dollar_vars __P((void)); extern void dispose_saved_dollar_vars __P((void)); +extern void init_bash_argv __P((void)); +extern void save_bash_argv __P((void)); extern void push_args __P((WORD_LIST *)); extern void pop_args __P((void)); @@ -364,7 +384,7 @@ extern SHELL_VAR *make_new_array_variable __P((char *)); extern SHELL_VAR *make_local_array_variable __P((char *, int)); extern SHELL_VAR *make_new_assoc_variable __P((char *)); -extern SHELL_VAR *make_local_assoc_variable __P((char *)); +extern SHELL_VAR *make_local_assoc_variable __P((char *, int)); extern void set_pipestatus_array __P((int *, int)); extern ARRAY *save_pipestatus_array __P((void)); diff --git a/version.c b/version.c index f241c5c78..d9280f034 100644 --- a/version.c +++ b/version.c @@ -1,6 +1,6 @@ /* version.c -- distribution and version numbers. */ -/* Copyright (C) 1989-2016 Free Software Foundation, Inc. +/* Copyright (C) 1989-2019 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -43,7 +43,7 @@ const char * const release_status = (char *)0; #endif const char * const sccs_version = SCCSVERSION; -const char * const bash_copyright = N_("Copyright (C) 2016 Free Software Foundation, Inc."); +const char * const bash_copyright = N_("Copyright (C) 2019 Free Software Foundation, Inc."); const char * const bash_license = N_("License GPLv3+: GNU GPL version 3 or later \n"); /* If == 31, shell compatible with bash-3.1, == 32 with bash-3.2, and so on */ diff --git a/xmalloc.c b/xmalloc.c index b32c0685f..ca297dcf0 100644 --- a/xmalloc.c +++ b/xmalloc.c @@ -51,9 +51,11 @@ extern char *sbrk(); #endif +#if defined (HAVE_SBRK) && defined (USING_BASH_MALLOC) static PTR_T lbreak; static int brkfound; static size_t allocated; +#endif /* **************************************************************** */ /* */ diff --git a/y.tab.c b/y.tab.c index e9a57fcc8..1abe2c505 100644 --- a/y.tab.c +++ b/y.tab.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.0.5. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.4" +#define YYBISON_VERSION "3.0.5" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -90,6 +90,7 @@ #define NEED_STRFTIME_DECL /* used in externs.h */ #include "shell.h" +#include "execute_cmd.h" #include "typemax.h" /* SIZE_MAX if needed */ #include "trap.h" #include "flags.h" @@ -139,6 +140,8 @@ typedef void *alias_t; #define RE_READ_TOKEN -99 #define NO_EXPANSION -100 +#define END_ALIAS -2 + #ifdef DEBUG # define YYDEBUG 1 #else @@ -160,24 +163,12 @@ typedef void *alias_t; extern int extended_glob; #endif -extern int eof_encountered; -extern int no_line_editing, running_under_emacs; -extern int current_command_number; -extern int sourcelevel, parse_and_execute_level; -extern int posixly_correct; -extern int last_command_exit_value; -extern pid_t last_command_subst_pid; -extern char *shell_name, *current_host_name; -extern char *dist_version; -extern int patch_level; extern int dump_translatable_strings, dump_po_strings; -extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; -extern int here_doc_first_line; -#if defined (BUFFERED_INPUT) -extern int bash_input_fd_changed; -#endif +#if !defined (errno) extern int errno; +#endif + /* **************************************************************** */ /* */ /* "Forward" declarations */ @@ -263,6 +254,7 @@ static void print_prompt __P((void)); #if defined (HANDLE_MULTIBYTE) static void set_line_mbstate __P((void)); static char *shell_input_line_property = NULL; +static size_t shell_input_line_propsize = 0; #else # define set_line_mbstate() #endif @@ -374,7 +366,10 @@ static WORD_DESC *word_desc_to_read; static REDIRECTEE source; static REDIRECTEE redir; -#line 378 "y.tab.c" /* yacc.c:339 */ +static FILE *yyoutstream; +static FILE *yyerrstream; + +#line 373 "y.tab.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -512,7 +507,7 @@ extern int yydebug; union YYSTYPE { -#line 333 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:355 */ +#line 328 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:355 */ WORD_DESC *word; /* the word that we read. */ int number; /* the number that we read. */ @@ -522,7 +517,7 @@ union YYSTYPE ELEMENT element; PATTERN_LIST *pattern; -#line 526 "y.tab.c" /* yacc.c:355 */ +#line 521 "y.tab.c" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -539,7 +534,7 @@ int yyparse (void); /* Copy the second part of user declarations. */ -#line 543 "y.tab.c" /* yacc.c:358 */ +#line 538 "y.tab.c" /* yacc.c:358 */ #ifdef short # undef short @@ -779,18 +774,18 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 116 +#define YYFINAL 117 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 638 +#define YYLAST 669 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 61 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 38 /* YYNRULES -- Number of rules. */ -#define YYNRULES 167 +#define YYNRULES 170 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 334 +#define YYNSTATES 343 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -841,23 +836,24 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 386, 386, 397, 406, 421, 431, 433, 437, 443, - 449, 455, 461, 467, 473, 479, 485, 491, 497, 503, - 509, 515, 521, 527, 534, 541, 548, 555, 562, 569, - 575, 581, 587, 593, 599, 605, 611, 617, 623, 629, - 635, 641, 647, 653, 659, 665, 671, 677, 683, 689, - 695, 701, 709, 711, 713, 717, 721, 732, 734, 738, - 740, 742, 758, 760, 764, 766, 768, 770, 772, 774, - 776, 778, 780, 782, 784, 788, 793, 798, 803, 808, - 813, 818, 823, 830, 835, 840, 845, 852, 857, 862, - 867, 872, 877, 884, 889, 894, 901, 904, 907, 911, - 913, 944, 951, 956, 973, 978, 995, 1002, 1004, 1006, - 1011, 1015, 1019, 1023, 1025, 1027, 1031, 1032, 1036, 1038, - 1040, 1042, 1046, 1048, 1050, 1052, 1054, 1056, 1060, 1062, - 1071, 1079, 1080, 1086, 1087, 1094, 1098, 1100, 1102, 1109, - 1111, 1113, 1117, 1118, 1121, 1123, 1125, 1129, 1130, 1139, - 1152, 1168, 1183, 1185, 1187, 1194, 1197, 1201, 1203, 1209, - 1215, 1234, 1256, 1258, 1281, 1285, 1287, 1289 + 0, 381, 381, 392, 401, 416, 433, 443, 445, 449, + 455, 461, 467, 473, 479, 485, 491, 497, 503, 509, + 515, 521, 527, 533, 539, 546, 553, 560, 567, 574, + 581, 587, 593, 599, 605, 611, 617, 623, 629, 635, + 641, 647, 653, 659, 665, 671, 677, 683, 689, 695, + 701, 707, 713, 721, 723, 725, 729, 733, 744, 746, + 750, 752, 754, 770, 772, 776, 778, 780, 782, 784, + 786, 788, 790, 792, 794, 796, 800, 805, 810, 815, + 820, 825, 830, 835, 842, 848, 854, 860, 868, 873, + 878, 883, 888, 893, 898, 903, 910, 915, 920, 927, + 930, 933, 937, 939, 970, 977, 982, 999, 1004, 1021, + 1028, 1030, 1032, 1037, 1041, 1045, 1049, 1051, 1053, 1057, + 1058, 1062, 1064, 1066, 1068, 1072, 1074, 1076, 1078, 1080, + 1082, 1086, 1088, 1097, 1105, 1106, 1112, 1113, 1120, 1124, + 1126, 1128, 1135, 1137, 1139, 1143, 1144, 1147, 1149, 1151, + 1155, 1156, 1165, 1178, 1194, 1209, 1211, 1213, 1220, 1223, + 1227, 1229, 1235, 1241, 1261, 1284, 1286, 1309, 1313, 1315, + 1317 }; #endif @@ -904,10 +900,10 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -205 +#define YYPACT_NINF -204 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-205))) + (!!((Yystate) == (-204))) #define YYTABLE_NINF -1 @@ -918,40 +914,41 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 308, -28, -205, 6, -1, 37, -205, -205, 57, 558, - 18, 358, 54, 45, -205, 251, 583, -205, 102, 104, - 35, 107, 80, 112, 127, 140, 146, 147, -205, -205, - 153, 154, -205, -205, 188, -205, -205, 196, -205, 219, - -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, - -205, 17, 23, -205, -19, 358, -205, -205, 185, 408, - -205, 144, 51, 166, 189, 207, 133, 28, 196, 219, - 211, -205, -205, -205, -205, -205, 201, 184, 220, 226, - 81, 227, 126, 233, 234, 241, 242, 245, 246, 249, - 142, 255, 148, 256, 257, 259, 266, 267, -205, -205, - -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, - -205, -205, -205, -205, 243, 240, -205, -205, -205, -205, - 219, -205, -205, -205, -205, -205, 458, 458, -205, -205, - -205, -205, -205, -205, -205, 299, -205, 68, -205, 61, - -205, -205, -205, -205, 72, -205, -205, 244, 41, 219, - 219, -205, -205, -205, -205, -205, -205, -205, -205, -205, - -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, - -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, - -205, -205, -205, -205, -205, 408, 408, 63, 63, 508, - 508, 179, -205, -205, -205, -205, -205, -205, 60, -205, - 155, -205, 287, 252, 74, 108, -205, 286, -205, 300, - 302, -205, 219, -205, 219, 41, -205, -205, -19, -19, - -205, -205, -205, 307, 408, 408, 408, 408, 408, 313, - 159, -205, -4, -205, -205, 312, -205, 161, -205, 265, - -205, -205, -205, -205, -205, -205, 314, 408, 161, 270, - -205, -205, 41, 219, -205, 332, 336, -205, -205, -205, - 87, 87, 87, -205, -205, -205, -205, 178, 11, -205, - -205, 315, -43, 327, 298, -205, -205, -205, 110, -205, - 342, 306, 343, 319, -205, 299, -205, -205, -205, -205, - -205, -205, -205, -205, -205, -32, 346, -205, -205, -205, - 113, -205, -205, -205, -205, -205, -205, 118, 137, -205, - -205, -205, 408, -205, -205, 363, 321, -205, -205, -205, - -205, -205, 408, 367, 325, -205, -205, 374, 333, -205, - -205, -205, -205, -205 + 306, -13, -204, -14, 68, 5, -204, -204, 22, 556, + -12, 356, 21, 4, -204, 601, 614, -204, 43, 58, + 139, 60, 143, 79, 90, 98, 100, 102, -204, -204, + 104, 111, -204, -204, 154, -204, -204, 234, -204, 588, + -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, + -204, 70, 192, -204, 65, 356, -204, -204, -204, 135, + 406, -204, 93, 23, 107, 153, 162, 124, 99, 234, + 588, 167, -204, -204, -204, -204, -204, 165, 133, 178, + 206, 144, 210, 145, 213, 225, 229, 232, 233, 238, + 239, 149, 241, 156, 242, 250, 256, 257, 258, -204, + -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, + -204, -204, -204, -204, -204, 169, 170, -204, -204, -204, + -204, 588, -204, -204, -204, -204, -204, 456, 456, -204, + -204, -204, -204, -204, -204, -204, 184, -204, -10, -204, + 7, -204, -204, -204, -204, 19, -204, -204, 226, 41, + 588, 588, -204, -204, -204, -204, -204, -204, -204, -204, + -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, + -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, + -204, -204, -204, -204, -204, -204, 406, 406, 147, 147, + 506, 506, 201, -204, -204, -204, -204, -204, -204, 11, + -204, 82, -204, 270, 235, 32, 36, -204, 82, -204, + 275, 276, -204, 588, -204, 588, 41, -204, -204, 65, + 65, -204, -204, -204, 285, 406, 406, 406, 406, 406, + 286, 204, -204, -4, -204, -204, 281, -204, 137, -204, + 243, -204, -204, -204, -204, -204, -204, 282, 406, 137, + -204, 244, -204, -204, 41, 588, -204, 293, 299, -204, + -204, -204, 180, 180, 180, -204, -204, -204, -204, 208, + 6, -204, -204, 278, -30, 295, 253, -204, -204, -204, + 46, -204, 300, 263, 310, 268, -204, 184, -204, 74, + -204, -204, -204, -204, -204, -204, -204, -204, -24, 301, + -204, -204, -204, 87, -204, -204, -204, -204, -204, -204, + 109, -204, -204, 248, -204, -204, -204, 406, -204, -204, + 315, 273, -204, -204, 322, 280, -204, -204, -204, 406, + 324, 288, -204, -204, 325, 289, -204, -204, -204, -204, + -204, -204, -204 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -959,58 +956,59 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 0, 147, 0, 0, 0, 147, 147, 0, 0, - 0, 0, 165, 52, 53, 0, 0, 111, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, - 0, 0, 147, 147, 0, 54, 57, 59, 164, 60, - 64, 74, 68, 65, 62, 70, 63, 69, 71, 72, - 73, 0, 149, 156, 157, 0, 4, 131, 0, 0, - 147, 147, 0, 147, 0, 0, 147, 52, 106, 102, - 0, 145, 144, 146, 161, 158, 166, 0, 0, 0, + 0, 0, 150, 0, 0, 0, 150, 150, 0, 0, + 0, 0, 168, 53, 54, 0, 0, 114, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, + 0, 0, 150, 150, 0, 55, 58, 60, 167, 61, + 65, 75, 69, 66, 63, 71, 64, 70, 72, 73, + 74, 0, 152, 159, 160, 0, 4, 5, 134, 0, + 0, 150, 150, 0, 150, 0, 0, 150, 53, 109, + 105, 0, 148, 147, 149, 164, 161, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 14, 23, - 38, 32, 47, 29, 41, 35, 44, 26, 50, 51, - 20, 17, 8, 9, 0, 0, 1, 52, 58, 55, - 61, 142, 143, 2, 147, 147, 150, 151, 147, 147, - 160, 159, 147, 148, 130, 132, 141, 0, 147, 0, - 147, 147, 147, 147, 0, 147, 147, 0, 0, 104, - 103, 112, 167, 147, 16, 25, 40, 34, 49, 31, - 43, 37, 46, 28, 22, 19, 12, 13, 15, 24, - 39, 33, 48, 30, 42, 36, 45, 27, 21, 18, - 10, 11, 110, 101, 56, 0, 0, 154, 155, 0, - 0, 0, 147, 147, 147, 147, 147, 147, 0, 147, - 0, 147, 0, 0, 0, 0, 147, 0, 147, 0, - 0, 147, 99, 98, 105, 0, 152, 153, 163, 162, - 147, 147, 107, 0, 0, 0, 134, 135, 133, 0, - 116, 147, 0, 147, 147, 0, 6, 0, 147, 0, - 85, 86, 147, 147, 147, 147, 0, 0, 0, 0, - 66, 67, 0, 100, 96, 0, 0, 109, 136, 137, - 138, 139, 140, 95, 122, 124, 126, 117, 0, 93, - 128, 0, 0, 0, 0, 75, 7, 147, 0, 76, - 0, 0, 0, 0, 87, 0, 147, 88, 97, 108, - 147, 123, 125, 127, 94, 0, 0, 147, 77, 78, - 0, 147, 147, 83, 84, 89, 90, 0, 113, 147, - 129, 118, 119, 147, 147, 0, 0, 147, 147, 147, - 115, 120, 121, 0, 0, 81, 82, 0, 0, 114, - 79, 80, 91, 92 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 24, 39, 33, 48, 30, 42, 36, 45, 27, 51, + 52, 21, 18, 9, 10, 0, 0, 1, 53, 59, + 56, 62, 145, 146, 2, 150, 150, 153, 154, 150, + 150, 163, 162, 150, 151, 133, 135, 144, 0, 150, + 0, 150, 150, 150, 150, 0, 150, 150, 0, 0, + 107, 106, 115, 170, 150, 17, 26, 41, 35, 50, + 32, 44, 38, 47, 29, 23, 20, 13, 14, 16, + 25, 40, 34, 49, 31, 43, 37, 46, 28, 22, + 19, 11, 12, 113, 104, 57, 0, 0, 157, 158, + 0, 0, 0, 150, 150, 150, 150, 150, 150, 0, + 150, 0, 150, 0, 0, 0, 0, 150, 0, 150, + 0, 0, 150, 102, 101, 108, 0, 155, 156, 166, + 165, 150, 150, 110, 0, 0, 0, 137, 138, 136, + 0, 119, 150, 0, 150, 150, 0, 7, 0, 150, + 0, 86, 87, 150, 150, 150, 150, 0, 0, 0, + 150, 0, 67, 68, 0, 103, 99, 0, 0, 112, + 139, 140, 141, 142, 143, 98, 125, 127, 129, 120, + 0, 96, 131, 0, 0, 0, 0, 76, 8, 150, + 0, 77, 0, 0, 0, 0, 88, 0, 150, 0, + 89, 100, 111, 150, 126, 128, 130, 97, 0, 0, + 150, 78, 79, 0, 150, 150, 84, 85, 90, 91, + 0, 150, 150, 116, 150, 132, 121, 122, 150, 150, + 0, 0, 150, 150, 0, 0, 150, 118, 123, 124, + 0, 0, 82, 83, 0, 0, 94, 95, 117, 80, + 81, 92, 93 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -205, -205, 183, -36, -23, -50, 364, -205, -7, -205, - -205, -205, -205, -205, -204, -205, -205, -205, -205, -205, - -205, 84, -205, 167, -205, 128, -202, -6, -205, 52, - -205, -46, -48, -205, -119, 24, -33, -205 + -204, -204, 140, -36, 35, -60, 345, -204, -7, -204, + -204, -204, -204, -204, -198, -204, -204, -204, -204, -204, + -204, 42, -204, 130, -204, 83, -203, -6, -204, -5, + -204, -46, -48, -204, -120, 24, 66, -204 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 34, 237, 35, 36, 120, 37, 38, 39, 40, - 41, 42, 43, 44, 213, 45, 46, 47, 48, 49, - 50, 223, 229, 230, 231, 272, 57, 58, 134, 135, - 123, 74, 59, 51, 52, 136, 54, 55 + -1, 34, 238, 35, 36, 121, 37, 38, 39, 40, + 41, 42, 43, 44, 214, 45, 46, 47, 48, 49, + 50, 224, 230, 231, 232, 274, 58, 59, 135, 136, + 124, 75, 60, 51, 52, 137, 54, 55 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1018,138 +1016,144 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 64, 65, 69, 119, 246, 269, 249, 187, 188, 130, - 296, 254, 137, 139, 118, 144, 142, 297, 148, 150, - 294, 296, 270, 56, 53, 61, 114, 115, 309, 128, - 62, 2, 60, 119, 129, 75, 3, 270, 4, 5, - 6, 7, 282, 283, 2, 118, 10, 133, 288, 3, - 70, 4, 5, 6, 7, 271, 124, 125, 17, 10, - 149, 100, 133, 63, 101, 140, 216, 217, 121, 122, - 271, 17, 126, 127, 233, 199, 185, 186, 76, 131, - 189, 190, 200, 66, 184, 32, 206, 33, 242, 197, - 198, 102, 133, 207, 204, 205, 124, 125, 32, 214, - 33, 71, 72, 73, 77, 215, 104, 156, 141, 105, - 157, 133, 133, 119, 184, 327, 328, 234, 201, 133, - 192, 193, 244, 133, 301, 133, 191, 313, 98, 208, - 99, 243, 317, 103, 202, 203, 106, 158, 107, 209, - 210, 212, 319, 221, 224, 225, 226, 227, 228, 232, - 53, 53, 160, 108, 238, 161, 218, 219, 247, 133, - 247, 133, 253, 252, 133, 245, 109, 302, 170, 133, - 314, 171, 110, 111, 174, 318, 119, 175, 184, 112, - 113, 236, 162, 268, 220, 221, 222, 276, 116, 132, - 278, 277, 147, 235, 138, 239, 247, 247, 172, 264, - 265, 266, 286, 145, 176, 71, 72, 73, 212, 53, - 53, 71, 72, 73, 255, 256, 143, 184, 291, 292, - 293, 146, 117, 14, 15, 16, 152, 273, 274, 300, - 151, 18, 19, 20, 21, 22, 280, 281, 307, 23, - 24, 25, 26, 27, 153, 212, 154, 15, 16, 312, - 30, 31, 155, 159, 18, 19, 20, 21, 22, 163, - 164, 322, 23, 24, 25, 26, 27, 165, 166, 247, - 247, 167, 168, 30, 31, 169, 258, 259, 260, 261, - 262, 173, 177, 178, 308, 179, 78, 79, 80, 81, - 82, 311, 180, 181, 83, 315, 316, 84, 85, 285, - 183, 182, 240, 321, 211, 86, 87, 323, 324, 1, - 241, 2, 236, 329, 257, 250, 3, 251, 4, 5, - 6, 7, 263, 279, 8, 9, 10, 275, 287, 284, - 11, 12, 192, 193, 13, 14, 15, 16, 17, 289, - 290, 270, 298, 18, 19, 20, 21, 22, 194, 195, - 196, 23, 24, 25, 26, 27, 299, 303, 305, 28, - 29, 2, 30, 31, 304, 32, 3, 33, 4, 5, - 6, 7, 310, 68, 8, 9, 10, 306, 325, 326, - 11, 12, 330, 331, 13, 14, 15, 16, 17, 332, - 248, 333, 320, 18, 19, 20, 21, 22, 267, 295, - 0, 23, 24, 25, 26, 27, 0, 0, 71, 72, - 73, 2, 30, 31, 0, 32, 3, 33, 4, 5, - 6, 7, 0, 0, 8, 9, 10, 0, 0, 0, - 11, 12, 0, 0, 13, 14, 15, 16, 17, 0, - 0, 0, 0, 18, 19, 20, 21, 22, 0, 0, - 0, 23, 24, 25, 26, 27, 0, 0, 0, 133, - 0, 2, 30, 31, 0, 32, 3, 33, 4, 5, - 6, 7, 0, 0, 8, 9, 10, 0, 0, 0, - 11, 12, 0, 0, 13, 14, 15, 16, 17, 0, + 65, 66, 70, 120, 247, 271, 251, 188, 189, 131, + 151, 198, 61, 138, 140, 297, 145, 143, 256, 149, + 71, 200, 272, 299, 53, 234, 115, 116, 201, 299, + 300, 64, 272, 207, 120, 76, 314, 141, 56, 57, + 208, 134, 284, 285, 2, 77, 243, 134, 67, 3, + 245, 4, 5, 6, 7, 273, 291, 134, 134, 10, + 304, 150, 134, 78, 202, 273, 217, 218, 235, 99, + 134, 17, 119, 72, 73, 74, 209, 186, 187, 132, + 142, 190, 191, 134, 100, 185, 104, 134, 311, 244, + 215, 199, 134, 246, 62, 205, 206, 134, 32, 63, + 33, 318, 2, 305, 119, 108, 216, 3, 237, 4, + 5, 6, 7, 129, 120, 185, 109, 10, 130, 334, + 335, 122, 123, 322, 110, 134, 111, 192, 112, 17, + 113, 312, 72, 73, 74, 203, 204, 114, 134, 133, + 210, 211, 213, 139, 319, 225, 226, 227, 228, 229, + 233, 53, 53, 255, 117, 239, 32, 144, 33, 248, + 134, 248, 250, 278, 254, 101, 323, 146, 102, 105, + 157, 161, 106, 158, 162, 171, 147, 120, 172, 185, + 125, 126, 175, 148, 270, 176, 152, 72, 73, 74, + 153, 280, 279, 154, 236, 103, 240, 248, 248, 107, + 159, 163, 289, 288, 155, 173, 221, 222, 223, 213, + 53, 53, 177, 193, 194, 257, 258, 193, 194, 185, + 260, 261, 262, 263, 264, 125, 126, 183, 275, 276, + 184, 303, 156, 195, 196, 197, 160, 282, 283, 164, + 310, 127, 128, 287, 266, 267, 268, 213, 294, 295, + 296, 165, 317, 326, 222, 166, 219, 220, 167, 168, + 118, 14, 15, 16, 169, 170, 329, 174, 178, 18, + 19, 20, 21, 22, 248, 248, 179, 23, 24, 25, + 26, 27, 180, 181, 182, 241, 212, 313, 30, 31, + 252, 253, 259, 242, 316, 265, 277, 286, 320, 321, + 292, 281, 290, 293, 272, 324, 325, 1, 328, 2, + 301, 302, 330, 331, 3, 306, 4, 5, 6, 7, + 338, 307, 8, 9, 10, 308, 309, 315, 11, 12, + 332, 333, 13, 14, 15, 16, 17, 336, 337, 339, + 341, 18, 19, 20, 21, 22, 340, 342, 249, 23, + 24, 25, 26, 27, 69, 327, 298, 28, 29, 2, + 30, 31, 269, 32, 3, 33, 4, 5, 6, 7, + 0, 0, 8, 9, 10, 0, 0, 0, 11, 12, + 0, 0, 13, 14, 15, 16, 17, 0, 0, 0, + 0, 18, 19, 20, 21, 22, 0, 0, 0, 23, + 24, 25, 26, 27, 0, 0, 72, 73, 74, 2, + 30, 31, 0, 32, 3, 33, 4, 5, 6, 7, + 0, 0, 8, 9, 10, 0, 0, 0, 11, 12, + 0, 0, 13, 14, 15, 16, 17, 0, 0, 0, + 0, 18, 19, 20, 21, 22, 0, 0, 0, 23, + 24, 25, 26, 27, 0, 0, 0, 134, 0, 2, + 30, 31, 0, 32, 3, 33, 4, 5, 6, 7, + 0, 0, 8, 9, 10, 0, 0, 0, 11, 12, + 0, 0, 13, 14, 15, 16, 17, 0, 0, 0, + 0, 18, 19, 20, 21, 22, 0, 0, 0, 23, + 24, 25, 26, 27, 0, 0, 0, 0, 0, 2, + 30, 31, 0, 32, 3, 33, 4, 5, 6, 7, + 0, 0, 8, 9, 10, 0, 0, 0, 0, 0, + 0, 0, 13, 14, 15, 16, 17, 0, 0, 0, + 0, 18, 19, 20, 21, 22, 0, 0, 0, 23, + 24, 25, 26, 27, 0, 0, 0, 134, 0, 2, + 30, 31, 0, 32, 3, 33, 4, 5, 6, 7, + 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, + 0, 0, 68, 14, 15, 16, 17, 0, 0, 0, + 0, 18, 19, 20, 21, 22, 0, 0, 0, 23, + 24, 25, 26, 27, 0, 0, 0, 0, 0, 0, + 30, 31, 0, 32, 0, 33, 15, 16, 0, 0, 0, 0, 0, 18, 19, 20, 21, 22, 0, 0, - 0, 23, 24, 25, 26, 27, 0, 0, 0, 0, - 0, 2, 30, 31, 0, 32, 3, 33, 4, 5, - 6, 7, 0, 0, 8, 9, 10, 0, 0, 0, - 0, 0, 0, 0, 13, 14, 15, 16, 17, 0, - 0, 0, 0, 18, 19, 20, 21, 22, 0, 0, - 0, 23, 24, 25, 26, 27, 0, 0, 0, 133, - 0, 2, 30, 31, 0, 32, 3, 33, 4, 5, - 6, 7, 0, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 67, 14, 15, 16, 17, 0, - 0, 0, 0, 18, 19, 20, 21, 22, 0, 0, - 0, 23, 24, 25, 26, 27, 0, 0, 0, 0, - 0, 0, 30, 31, 0, 32, 0, 33, 88, 89, - 90, 91, 92, 0, 0, 0, 93, 0, 0, 94, - 95, 0, 0, 0, 0, 0, 0, 96, 97 + 0, 23, 24, 25, 26, 27, 79, 80, 81, 82, + 83, 0, 30, 31, 84, 0, 0, 85, 86, 89, + 90, 91, 92, 93, 0, 87, 88, 94, 0, 0, + 95, 96, 0, 0, 0, 0, 0, 0, 97, 98 }; static const yytype_int16 yycheck[] = { - 6, 7, 9, 39, 206, 9, 208, 126, 127, 55, - 53, 215, 60, 61, 37, 63, 62, 60, 66, 69, - 9, 53, 26, 51, 0, 26, 32, 33, 60, 48, - 31, 3, 26, 69, 53, 11, 8, 26, 10, 11, - 12, 13, 244, 245, 3, 68, 18, 51, 252, 8, - 32, 10, 11, 12, 13, 59, 33, 34, 30, 18, - 67, 26, 51, 26, 29, 14, 185, 186, 51, 52, - 59, 30, 49, 50, 14, 14, 124, 125, 24, 55, - 128, 129, 21, 26, 120, 57, 14, 59, 14, 21, - 138, 56, 51, 21, 142, 143, 33, 34, 57, 149, - 59, 50, 51, 52, 59, 153, 26, 26, 57, 29, - 29, 51, 51, 149, 150, 317, 318, 57, 57, 51, - 33, 34, 14, 51, 14, 51, 132, 14, 26, 57, - 26, 57, 14, 26, 140, 141, 56, 56, 26, 145, - 146, 148, 5, 6, 192, 193, 194, 195, 196, 197, - 126, 127, 26, 26, 200, 29, 189, 190, 206, 51, - 208, 51, 212, 211, 51, 57, 26, 57, 26, 51, - 57, 29, 26, 26, 26, 57, 212, 29, 214, 26, - 26, 26, 56, 231, 5, 6, 7, 26, 0, 4, - 238, 237, 59, 199, 50, 201, 244, 245, 56, 40, - 41, 42, 248, 14, 56, 50, 51, 52, 215, 185, - 186, 50, 51, 52, 220, 221, 50, 253, 40, 41, - 42, 14, 26, 27, 28, 29, 25, 233, 234, 277, - 19, 35, 36, 37, 38, 39, 242, 243, 286, 43, - 44, 45, 46, 47, 60, 252, 26, 28, 29, 297, - 54, 55, 26, 26, 35, 36, 37, 38, 39, 26, - 26, 309, 43, 44, 45, 46, 47, 26, 26, 317, - 318, 26, 26, 54, 55, 26, 224, 225, 226, 227, - 228, 26, 26, 26, 290, 26, 35, 36, 37, 38, - 39, 297, 26, 26, 43, 301, 302, 46, 47, 247, - 60, 58, 15, 309, 60, 54, 55, 313, 314, 1, - 58, 3, 26, 319, 7, 15, 8, 15, 10, 11, - 12, 13, 9, 58, 16, 17, 18, 15, 58, 15, - 22, 23, 33, 34, 26, 27, 28, 29, 30, 7, - 4, 26, 15, 35, 36, 37, 38, 39, 49, 50, - 51, 43, 44, 45, 46, 47, 58, 15, 15, 51, - 52, 3, 54, 55, 58, 57, 8, 59, 10, 11, - 12, 13, 26, 9, 16, 17, 18, 58, 15, 58, - 22, 23, 15, 58, 26, 27, 28, 29, 30, 15, - 207, 58, 308, 35, 36, 37, 38, 39, 231, 271, - -1, 43, 44, 45, 46, 47, -1, -1, 50, 51, - 52, 3, 54, 55, -1, 57, 8, 59, 10, 11, - 12, 13, -1, -1, 16, 17, 18, -1, -1, -1, - 22, 23, -1, -1, 26, 27, 28, 29, 30, -1, - -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, - -1, 43, 44, 45, 46, 47, -1, -1, -1, 51, - -1, 3, 54, 55, -1, 57, 8, 59, 10, 11, - 12, 13, -1, -1, 16, 17, 18, -1, -1, -1, - 22, 23, -1, -1, 26, 27, 28, 29, 30, -1, - -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, - -1, 43, 44, 45, 46, 47, -1, -1, -1, -1, - -1, 3, 54, 55, -1, 57, 8, 59, 10, 11, - 12, 13, -1, -1, 16, 17, 18, -1, -1, -1, - -1, -1, -1, -1, 26, 27, 28, 29, 30, -1, + 6, 7, 9, 39, 207, 9, 209, 127, 128, 55, + 70, 21, 26, 61, 62, 9, 64, 63, 216, 67, + 32, 14, 26, 53, 0, 14, 32, 33, 21, 53, + 60, 26, 26, 14, 70, 11, 60, 14, 51, 52, + 21, 51, 245, 246, 3, 24, 14, 51, 26, 8, + 14, 10, 11, 12, 13, 59, 254, 51, 51, 18, + 14, 68, 51, 59, 57, 59, 186, 187, 57, 26, + 51, 30, 37, 50, 51, 52, 57, 125, 126, 55, + 57, 129, 130, 51, 26, 121, 26, 51, 14, 57, + 150, 139, 51, 57, 26, 143, 144, 51, 57, 31, + 59, 14, 3, 57, 69, 26, 154, 8, 26, 10, + 11, 12, 13, 48, 150, 151, 26, 18, 53, 322, + 323, 51, 52, 14, 26, 51, 26, 133, 26, 30, + 26, 57, 50, 51, 52, 141, 142, 26, 51, 4, + 146, 147, 149, 50, 57, 193, 194, 195, 196, 197, + 198, 127, 128, 213, 0, 201, 57, 50, 59, 207, + 51, 209, 208, 26, 212, 26, 57, 14, 29, 26, + 26, 26, 29, 29, 29, 26, 14, 213, 29, 215, + 33, 34, 26, 59, 232, 29, 19, 50, 51, 52, + 25, 239, 238, 60, 200, 56, 202, 245, 246, 56, + 56, 56, 250, 249, 26, 56, 5, 6, 7, 216, + 186, 187, 56, 33, 34, 221, 222, 33, 34, 255, + 225, 226, 227, 228, 229, 33, 34, 58, 234, 235, + 60, 279, 26, 49, 50, 51, 26, 243, 244, 26, + 288, 49, 50, 248, 40, 41, 42, 254, 40, 41, + 42, 26, 300, 5, 6, 26, 190, 191, 26, 26, + 26, 27, 28, 29, 26, 26, 314, 26, 26, 35, + 36, 37, 38, 39, 322, 323, 26, 43, 44, 45, + 46, 47, 26, 26, 26, 15, 60, 293, 54, 55, + 15, 15, 7, 58, 300, 9, 15, 15, 304, 305, + 7, 58, 58, 4, 26, 311, 312, 1, 314, 3, + 15, 58, 318, 319, 8, 15, 10, 11, 12, 13, + 326, 58, 16, 17, 18, 15, 58, 26, 22, 23, + 15, 58, 26, 27, 28, 29, 30, 15, 58, 15, + 15, 35, 36, 37, 38, 39, 58, 58, 208, 43, + 44, 45, 46, 47, 9, 313, 273, 51, 52, 3, + 54, 55, 232, 57, 8, 59, 10, 11, 12, 13, + -1, -1, 16, 17, 18, -1, -1, -1, 22, 23, + -1, -1, 26, 27, 28, 29, 30, -1, -1, -1, + -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, + 44, 45, 46, 47, -1, -1, 50, 51, 52, 3, + 54, 55, -1, 57, 8, 59, 10, 11, 12, 13, + -1, -1, 16, 17, 18, -1, -1, -1, 22, 23, + -1, -1, 26, 27, 28, 29, 30, -1, -1, -1, + -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, + 44, 45, 46, 47, -1, -1, -1, 51, -1, 3, + 54, 55, -1, 57, 8, 59, 10, 11, 12, 13, + -1, -1, 16, 17, 18, -1, -1, -1, 22, 23, + -1, -1, 26, 27, 28, 29, 30, -1, -1, -1, + -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, + 44, 45, 46, 47, -1, -1, -1, -1, -1, 3, + 54, 55, -1, 57, 8, 59, 10, 11, 12, 13, + -1, -1, 16, 17, 18, -1, -1, -1, -1, -1, + -1, -1, 26, 27, 28, 29, 30, -1, -1, -1, + -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, + 44, 45, 46, 47, -1, -1, -1, 51, -1, 3, + 54, 55, -1, 57, 8, 59, 10, 11, 12, 13, + -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, + -1, -1, 26, 27, 28, 29, 30, -1, -1, -1, + -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, + 44, 45, 46, 47, -1, -1, -1, -1, -1, -1, + 54, 55, -1, 57, -1, 59, 28, 29, -1, -1, -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, - -1, 43, 44, 45, 46, 47, -1, -1, -1, 51, - -1, 3, 54, 55, -1, 57, 8, 59, 10, 11, - 12, 13, -1, -1, -1, -1, 18, -1, -1, -1, - -1, -1, -1, -1, 26, 27, 28, 29, 30, -1, - -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, - -1, 43, 44, 45, 46, 47, -1, -1, -1, -1, - -1, -1, 54, 55, -1, 57, -1, 59, 35, 36, - 37, 38, 39, -1, -1, -1, 43, -1, -1, 46, - 47, -1, -1, -1, -1, -1, -1, 54, 55 + -1, 43, 44, 45, 46, 47, 35, 36, 37, 38, + 39, -1, 54, 55, 43, -1, -1, 46, 47, 35, + 36, 37, 38, 39, -1, 54, 55, 43, -1, -1, + 46, 47, -1, -1, -1, -1, -1, -1, 54, 55 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1161,79 +1165,82 @@ static const yytype_uint8 yystos[] = 37, 38, 39, 43, 44, 45, 46, 47, 51, 52, 54, 55, 57, 59, 62, 64, 65, 67, 68, 69, 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, - 81, 94, 95, 96, 97, 98, 51, 87, 88, 93, - 26, 26, 31, 26, 88, 88, 26, 26, 67, 69, - 32, 50, 51, 52, 92, 96, 24, 59, 35, 36, - 37, 38, 39, 43, 46, 47, 54, 55, 35, 36, - 37, 38, 39, 43, 46, 47, 54, 55, 26, 26, - 26, 29, 56, 26, 26, 29, 56, 26, 26, 26, - 26, 26, 26, 26, 88, 88, 0, 26, 65, 64, - 66, 51, 52, 91, 33, 34, 49, 50, 48, 53, - 92, 96, 4, 51, 89, 90, 96, 93, 50, 93, - 14, 57, 92, 50, 93, 14, 14, 59, 93, 69, - 66, 19, 25, 60, 26, 26, 26, 29, 56, 26, - 26, 29, 56, 26, 26, 26, 26, 26, 26, 26, - 26, 29, 56, 26, 26, 29, 56, 26, 26, 26, - 26, 26, 58, 60, 64, 93, 93, 95, 95, 93, - 93, 88, 33, 34, 49, 50, 51, 21, 93, 14, - 21, 57, 88, 88, 93, 93, 14, 21, 57, 88, - 88, 60, 69, 75, 66, 93, 95, 95, 97, 97, - 5, 6, 7, 82, 93, 93, 93, 93, 93, 83, - 84, 85, 93, 14, 57, 88, 26, 63, 92, 88, - 15, 58, 14, 57, 14, 57, 87, 93, 63, 87, - 15, 15, 93, 66, 75, 88, 88, 7, 90, 90, - 90, 90, 90, 9, 40, 41, 42, 84, 93, 9, - 26, 59, 86, 88, 88, 15, 26, 92, 93, 58, - 88, 88, 87, 87, 15, 90, 92, 58, 75, 7, - 4, 40, 41, 42, 9, 86, 53, 60, 15, 58, - 93, 14, 57, 15, 58, 15, 58, 93, 88, 60, - 26, 88, 93, 14, 57, 88, 88, 14, 57, 5, - 82, 88, 93, 88, 88, 15, 58, 87, 87, 88, - 15, 58, 15, 58 + 81, 94, 95, 96, 97, 98, 51, 52, 87, 88, + 93, 26, 26, 31, 26, 88, 88, 26, 26, 67, + 69, 32, 50, 51, 52, 92, 96, 24, 59, 35, + 36, 37, 38, 39, 43, 46, 47, 54, 55, 35, + 36, 37, 38, 39, 43, 46, 47, 54, 55, 26, + 26, 26, 29, 56, 26, 26, 29, 56, 26, 26, + 26, 26, 26, 26, 26, 88, 88, 0, 26, 65, + 64, 66, 51, 52, 91, 33, 34, 49, 50, 48, + 53, 92, 96, 4, 51, 89, 90, 96, 93, 50, + 93, 14, 57, 92, 50, 93, 14, 14, 59, 93, + 69, 66, 19, 25, 60, 26, 26, 26, 29, 56, + 26, 26, 29, 56, 26, 26, 26, 26, 26, 26, + 26, 26, 29, 56, 26, 26, 29, 56, 26, 26, + 26, 26, 26, 58, 60, 64, 93, 93, 95, 95, + 93, 93, 88, 33, 34, 49, 50, 51, 21, 93, + 14, 21, 57, 88, 88, 93, 93, 14, 21, 57, + 88, 88, 60, 69, 75, 66, 93, 95, 95, 97, + 97, 5, 6, 7, 82, 93, 93, 93, 93, 93, + 83, 84, 85, 93, 14, 57, 88, 26, 63, 92, + 88, 15, 58, 14, 57, 14, 57, 87, 93, 63, + 92, 87, 15, 15, 93, 66, 75, 88, 88, 7, + 90, 90, 90, 90, 90, 9, 40, 41, 42, 84, + 93, 9, 26, 59, 86, 88, 88, 15, 26, 92, + 93, 58, 88, 88, 87, 87, 15, 90, 92, 93, + 58, 75, 7, 4, 40, 41, 42, 9, 86, 53, + 60, 15, 58, 93, 14, 57, 15, 58, 15, 58, + 93, 14, 57, 88, 60, 26, 88, 93, 14, 57, + 88, 88, 14, 57, 88, 88, 5, 82, 88, 93, + 88, 88, 15, 58, 87, 87, 15, 58, 88, 15, + 58, 15, 58 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 61, 62, 62, 62, 62, 63, 63, 64, 64, + 0, 61, 62, 62, 62, 62, 62, 63, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 65, 65, 65, 66, 66, 67, 67, 68, - 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 70, 70, 70, 70, 70, - 70, 70, 70, 71, 71, 71, 71, 72, 72, 72, - 72, 72, 72, 73, 73, 73, 74, 74, 74, 75, - 75, 76, 77, 77, 77, 77, 77, 78, 78, 78, - 79, 80, 81, 82, 82, 82, 83, 83, 84, 84, - 84, 84, 85, 85, 85, 85, 85, 85, 86, 86, - 87, 88, 88, 89, 89, 89, 90, 90, 90, 90, - 90, 90, 91, 91, 92, 92, 92, 93, 93, 94, - 94, 94, 95, 95, 95, 95, 95, 96, 96, 96, - 96, 96, 97, 97, 97, 98, 98, 98 + 64, 64, 64, 65, 65, 65, 66, 66, 67, 67, + 68, 68, 68, 68, 68, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 70, 70, 70, 70, + 70, 70, 70, 70, 71, 71, 71, 71, 72, 72, + 72, 72, 72, 72, 72, 72, 73, 73, 73, 74, + 74, 74, 75, 75, 76, 77, 77, 77, 77, 77, + 78, 78, 78, 79, 80, 81, 82, 82, 82, 83, + 83, 84, 84, 84, 84, 85, 85, 85, 85, 85, + 85, 86, 86, 87, 88, 88, 89, 89, 89, 90, + 90, 90, 90, 90, 90, 91, 91, 92, 92, 92, + 93, 93, 94, 94, 94, 95, 95, 95, 95, 95, + 96, 96, 96, 96, 96, 97, 97, 97, 98, 98, + 98 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { - 0, 2, 2, 1, 2, 1, 1, 2, 2, 2, - 3, 3, 3, 3, 2, 3, 3, 2, 3, 3, + 0, 2, 2, 1, 2, 2, 1, 1, 2, 2, + 2, 3, 3, 3, 3, 2, 3, 3, 2, 3, + 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, - 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, - 2, 2, 1, 1, 1, 1, 2, 1, 2, 1, - 1, 2, 1, 1, 1, 1, 5, 5, 1, 1, - 1, 1, 1, 1, 1, 6, 6, 7, 7, 10, - 10, 9, 9, 7, 7, 5, 5, 6, 6, 7, - 7, 10, 10, 6, 7, 6, 5, 6, 4, 1, - 2, 3, 2, 3, 3, 4, 2, 5, 7, 6, - 3, 1, 3, 4, 6, 5, 1, 2, 4, 4, - 5, 5, 2, 3, 2, 3, 2, 3, 1, 3, - 2, 1, 2, 3, 3, 3, 4, 4, 4, 4, - 4, 1, 1, 1, 1, 1, 1, 0, 2, 1, - 2, 2, 4, 4, 3, 3, 1, 1, 2, 2, - 2, 2, 4, 4, 1, 1, 2, 3 + 3, 2, 2, 1, 1, 1, 1, 2, 1, 2, + 1, 1, 2, 1, 1, 1, 1, 5, 5, 1, + 1, 1, 1, 1, 1, 1, 6, 6, 7, 7, + 10, 10, 9, 9, 7, 7, 5, 5, 6, 6, + 7, 7, 10, 10, 9, 9, 6, 7, 6, 5, + 6, 4, 1, 2, 3, 2, 3, 3, 4, 2, + 5, 7, 6, 3, 1, 3, 4, 6, 5, 1, + 2, 4, 4, 5, 5, 2, 3, 2, 3, 2, + 3, 1, 3, 2, 1, 2, 3, 3, 3, 4, + 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, + 0, 2, 1, 2, 2, 4, 4, 3, 3, 1, + 1, 2, 2, 2, 2, 4, 4, 1, 1, 2, + 3 }; @@ -1594,6 +1601,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, case N: \ yyformat = S; \ break + default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); @@ -1910,7 +1918,7 @@ yyreduce: switch (yyn) { case 2: -#line 387 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 382 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { /* Case of regular command. Discard the error safety net,and return the command just parsed. */ @@ -1921,11 +1929,11 @@ yyreduce: parser_state |= PST_EOFTOKEN; YYACCEPT; } -#line 1925 "y.tab.c" /* yacc.c:1646 */ +#line 1933 "y.tab.c" /* yacc.c:1648 */ break; case 3: -#line 398 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 393 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { /* Case of regular command, but not a very interesting one. Return a NULL command. */ @@ -1934,11 +1942,11 @@ yyreduce: parser_state |= PST_EOFTOKEN; YYACCEPT; } -#line 1938 "y.tab.c" /* yacc.c:1646 */ +#line 1946 "y.tab.c" /* yacc.c:1648 */ break; case 4: -#line 407 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 402 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { /* Error during parsing. Return NULL command. */ global_command = (COMMAND *)NULL; @@ -1953,11 +1961,32 @@ yyreduce: YYABORT; } } -#line 1957 "y.tab.c" /* yacc.c:1646 */ +#line 1965 "y.tab.c" /* yacc.c:1648 */ break; case 5: -#line 422 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 417 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ + { + /* EOF after an error. Do ignoreeof or not. Really + only interesting in non-interactive shells */ + global_command = (COMMAND *)NULL; + if (last_command_exit_value == 0) + last_command_exit_value = EX_BADUSAGE; /* force error return */ + handle_eof_input_unit (); + if (interactive && parse_and_execute_level == 0) + { + YYACCEPT; + } + else + { + YYABORT; + } + } +#line 1986 "y.tab.c" /* yacc.c:1648 */ + break; + + case 6: +#line 434 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { /* Case of EOF seen by itself. Do ignoreeof or not. */ @@ -1965,495 +1994,495 @@ yyreduce: handle_eof_input_unit (); YYACCEPT; } -#line 1969 "y.tab.c" /* yacc.c:1646 */ +#line 1998 "y.tab.c" /* yacc.c:1648 */ break; - case 6: -#line 432 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 7: +#line 444 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); } -#line 1975 "y.tab.c" /* yacc.c:1646 */ +#line 2004 "y.tab.c" /* yacc.c:1648 */ break; - case 7: -#line 434 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 8: +#line 446 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); } -#line 1981 "y.tab.c" /* yacc.c:1646 */ +#line 2010 "y.tab.c" /* yacc.c:1648 */ break; - case 8: -#line 438 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 9: +#line 450 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0); } -#line 1991 "y.tab.c" /* yacc.c:1646 */ +#line 2020 "y.tab.c" /* yacc.c:1648 */ break; - case 9: -#line 444 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 10: +#line 456 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0); } -#line 2001 "y.tab.c" /* yacc.c:1646 */ +#line 2030 "y.tab.c" /* yacc.c:1648 */ break; - case 10: -#line 450 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 11: +#line 462 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0); } -#line 2011 "y.tab.c" /* yacc.c:1646 */ +#line 2040 "y.tab.c" /* yacc.c:1648 */ break; - case 11: -#line 456 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 12: +#line 468 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0); } -#line 2021 "y.tab.c" /* yacc.c:1646 */ +#line 2050 "y.tab.c" /* yacc.c:1648 */ break; - case 12: -#line 462 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 13: +#line 474 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN); } -#line 2031 "y.tab.c" /* yacc.c:1646 */ +#line 2060 "y.tab.c" /* yacc.c:1648 */ break; - case 13: -#line 468 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 14: +#line 480 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN); } -#line 2041 "y.tab.c" /* yacc.c:1646 */ +#line 2070 "y.tab.c" /* yacc.c:1648 */ break; - case 14: -#line 474 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 15: +#line 486 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0); } -#line 2051 "y.tab.c" /* yacc.c:1646 */ +#line 2080 "y.tab.c" /* yacc.c:1648 */ break; - case 15: -#line 480 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 16: +#line 492 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0); } -#line 2061 "y.tab.c" /* yacc.c:1646 */ +#line 2090 "y.tab.c" /* yacc.c:1648 */ break; - case 16: -#line 486 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 17: +#line 498 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN); } -#line 2071 "y.tab.c" /* yacc.c:1646 */ +#line 2100 "y.tab.c" /* yacc.c:1648 */ break; - case 17: -#line 492 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 18: +#line 504 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_force, redir, 0); } -#line 2081 "y.tab.c" /* yacc.c:1646 */ +#line 2110 "y.tab.c" /* yacc.c:1648 */ break; - case 18: -#line 498 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 19: +#line 510 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_force, redir, 0); } -#line 2091 "y.tab.c" /* yacc.c:1646 */ +#line 2120 "y.tab.c" /* yacc.c:1648 */ break; - case 19: -#line 504 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 20: +#line 516 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN); } -#line 2101 "y.tab.c" /* yacc.c:1646 */ +#line 2130 "y.tab.c" /* yacc.c:1648 */ break; - case 20: -#line 510 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 21: +#line 522 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_output, redir, 0); } -#line 2111 "y.tab.c" /* yacc.c:1646 */ +#line 2140 "y.tab.c" /* yacc.c:1648 */ break; - case 21: -#line 516 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 22: +#line 528 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_output, redir, 0); } -#line 2121 "y.tab.c" /* yacc.c:1646 */ +#line 2150 "y.tab.c" /* yacc.c:1648 */ break; - case 22: -#line 522 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 23: +#line 534 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN); } -#line 2131 "y.tab.c" /* yacc.c:1646 */ +#line 2160 "y.tab.c" /* yacc.c:1648 */ break; - case 23: -#line 528 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 24: +#line 540 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); push_heredoc ((yyval.redirect)); } -#line 2142 "y.tab.c" /* yacc.c:1646 */ +#line 2171 "y.tab.c" /* yacc.c:1648 */ break; - case 24: -#line 535 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 25: +#line 547 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); push_heredoc ((yyval.redirect)); } -#line 2153 "y.tab.c" /* yacc.c:1646 */ +#line 2182 "y.tab.c" /* yacc.c:1648 */ break; - case 25: -#line 542 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 26: +#line 554 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN); push_heredoc ((yyval.redirect)); } -#line 2164 "y.tab.c" /* yacc.c:1646 */ +#line 2193 "y.tab.c" /* yacc.c:1648 */ break; - case 26: -#line 549 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 27: +#line 561 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); push_heredoc ((yyval.redirect)); } -#line 2175 "y.tab.c" /* yacc.c:1646 */ +#line 2204 "y.tab.c" /* yacc.c:1648 */ break; - case 27: -#line 556 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 28: +#line 568 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); push_heredoc ((yyval.redirect)); } -#line 2186 "y.tab.c" /* yacc.c:1646 */ +#line 2215 "y.tab.c" /* yacc.c:1648 */ break; - case 28: -#line 563 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 29: +#line 575 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN); push_heredoc ((yyval.redirect)); } -#line 2197 "y.tab.c" /* yacc.c:1646 */ +#line 2226 "y.tab.c" /* yacc.c:1648 */ break; - case 29: -#line 570 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 30: +#line 582 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0); } -#line 2207 "y.tab.c" /* yacc.c:1646 */ +#line 2236 "y.tab.c" /* yacc.c:1648 */ break; - case 30: -#line 576 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 31: +#line 588 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0); } -#line 2217 "y.tab.c" /* yacc.c:1646 */ +#line 2246 "y.tab.c" /* yacc.c:1648 */ break; - case 31: -#line 582 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 32: +#line 594 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN); } -#line 2227 "y.tab.c" /* yacc.c:1646 */ +#line 2256 "y.tab.c" /* yacc.c:1648 */ break; - case 32: -#line 588 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 33: +#line 600 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = 0; redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0); } -#line 2237 "y.tab.c" /* yacc.c:1646 */ +#line 2266 "y.tab.c" /* yacc.c:1648 */ break; - case 33: -#line 594 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 34: +#line 606 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = (yyvsp[-2].number); redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0); } -#line 2247 "y.tab.c" /* yacc.c:1646 */ +#line 2276 "y.tab.c" /* yacc.c:1648 */ break; - case 34: -#line 600 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 35: +#line 612 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.filename = (yyvsp[-2].word); redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN); } -#line 2257 "y.tab.c" /* yacc.c:1646 */ +#line 2286 "y.tab.c" /* yacc.c:1648 */ break; - case 35: -#line 606 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 36: +#line 618 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = 1; redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0); } -#line 2267 "y.tab.c" /* yacc.c:1646 */ +#line 2296 "y.tab.c" /* yacc.c:1648 */ break; - case 36: -#line 612 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 37: +#line 624 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = (yyvsp[-2].number); redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0); } -#line 2277 "y.tab.c" /* yacc.c:1646 */ +#line 2306 "y.tab.c" /* yacc.c:1648 */ break; - case 37: -#line 618 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 38: +#line 630 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.filename = (yyvsp[-2].word); redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN); } -#line 2287 "y.tab.c" /* yacc.c:1646 */ +#line 2316 "y.tab.c" /* yacc.c:1648 */ break; - case 38: -#line 624 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 39: +#line 636 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0); } -#line 2297 "y.tab.c" /* yacc.c:1646 */ +#line 2326 "y.tab.c" /* yacc.c:1648 */ break; - case 39: -#line 630 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 40: +#line 642 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0); } -#line 2307 "y.tab.c" /* yacc.c:1646 */ +#line 2336 "y.tab.c" /* yacc.c:1648 */ break; - case 40: -#line 636 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 41: +#line 648 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN); } -#line 2317 "y.tab.c" /* yacc.c:1646 */ +#line 2346 "y.tab.c" /* yacc.c:1648 */ break; - case 41: -#line 642 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 42: +#line 654 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0); } -#line 2327 "y.tab.c" /* yacc.c:1646 */ +#line 2356 "y.tab.c" /* yacc.c:1648 */ break; - case 42: -#line 648 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 43: +#line 660 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0); } -#line 2337 "y.tab.c" /* yacc.c:1646 */ +#line 2366 "y.tab.c" /* yacc.c:1648 */ break; - case 43: -#line 654 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 44: +#line 666 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN); } -#line 2347 "y.tab.c" /* yacc.c:1646 */ +#line 2376 "y.tab.c" /* yacc.c:1648 */ break; - case 44: -#line 660 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 45: +#line 672 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = 1; redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); } -#line 2357 "y.tab.c" /* yacc.c:1646 */ +#line 2386 "y.tab.c" /* yacc.c:1648 */ break; - case 45: -#line 666 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 46: +#line 678 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = (yyvsp[-2].number); redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); } -#line 2367 "y.tab.c" /* yacc.c:1646 */ +#line 2396 "y.tab.c" /* yacc.c:1648 */ break; - case 46: -#line 672 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 47: +#line 684 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.filename = (yyvsp[-2].word); redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN); } -#line 2377 "y.tab.c" /* yacc.c:1646 */ +#line 2406 "y.tab.c" /* yacc.c:1648 */ break; - case 47: -#line 678 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 48: +#line 690 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = 0; redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); } -#line 2387 "y.tab.c" /* yacc.c:1646 */ +#line 2416 "y.tab.c" /* yacc.c:1648 */ break; - case 48: -#line 684 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 49: +#line 696 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = (yyvsp[-2].number); redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); } -#line 2397 "y.tab.c" /* yacc.c:1646 */ +#line 2426 "y.tab.c" /* yacc.c:1648 */ break; - case 49: -#line 690 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 50: +#line 702 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.filename = (yyvsp[-2].word); redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN); } -#line 2407 "y.tab.c" /* yacc.c:1646 */ +#line 2436 "y.tab.c" /* yacc.c:1648 */ break; - case 50: -#line 696 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 51: +#line 708 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0); } -#line 2417 "y.tab.c" /* yacc.c:1646 */ +#line 2446 "y.tab.c" /* yacc.c:1648 */ break; - case 51: -#line 702 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 52: +#line 714 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0); } -#line 2427 "y.tab.c" /* yacc.c:1646 */ +#line 2456 "y.tab.c" /* yacc.c:1648 */ break; - case 52: -#line 710 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 53: +#line 722 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; } -#line 2433 "y.tab.c" /* yacc.c:1646 */ +#line 2462 "y.tab.c" /* yacc.c:1648 */ break; - case 53: -#line 712 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 54: +#line 724 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; } -#line 2439 "y.tab.c" /* yacc.c:1646 */ +#line 2468 "y.tab.c" /* yacc.c:1648 */ break; - case 54: -#line 714 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 55: +#line 726 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; } -#line 2445 "y.tab.c" /* yacc.c:1646 */ +#line 2474 "y.tab.c" /* yacc.c:1648 */ break; - case 55: -#line 718 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 56: +#line 730 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.redirect) = (yyvsp[0].redirect); } -#line 2453 "y.tab.c" /* yacc.c:1646 */ +#line 2482 "y.tab.c" /* yacc.c:1648 */ break; - case 56: -#line 722 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 57: +#line 734 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { register REDIRECT *t; @@ -2462,346 +2491,368 @@ yyreduce: t->next = (yyvsp[0].redirect); (yyval.redirect) = (yyvsp[-1].redirect); } -#line 2466 "y.tab.c" /* yacc.c:1646 */ +#line 2495 "y.tab.c" /* yacc.c:1648 */ break; - case 57: -#line 733 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 58: +#line 745 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); } -#line 2472 "y.tab.c" /* yacc.c:1646 */ +#line 2501 "y.tab.c" /* yacc.c:1648 */ break; - case 58: -#line 735 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 59: +#line 747 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); } -#line 2478 "y.tab.c" /* yacc.c:1646 */ +#line 2507 "y.tab.c" /* yacc.c:1648 */ break; - case 59: -#line 739 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 60: +#line 751 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = clean_simple_command ((yyvsp[0].command)); } -#line 2484 "y.tab.c" /* yacc.c:1646 */ +#line 2513 "y.tab.c" /* yacc.c:1648 */ break; - case 60: -#line 741 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 61: +#line 753 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); } -#line 2490 "y.tab.c" /* yacc.c:1646 */ +#line 2519 "y.tab.c" /* yacc.c:1648 */ break; - case 61: -#line 743 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 62: +#line 755 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { COMMAND *tc; tc = (yyvsp[-1].command); - if (tc->redirects) + if (tc && tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = (yyvsp[0].redirect); } - else + else if (tc) tc->redirects = (yyvsp[0].redirect); (yyval.command) = (yyvsp[-1].command); } -#line 2510 "y.tab.c" /* yacc.c:1646 */ - break; - - case 62: -#line 759 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { (yyval.command) = (yyvsp[0].command); } -#line 2516 "y.tab.c" /* yacc.c:1646 */ +#line 2539 "y.tab.c" /* yacc.c:1648 */ break; case 63: -#line 761 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 771 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); } -#line 2522 "y.tab.c" /* yacc.c:1646 */ +#line 2545 "y.tab.c" /* yacc.c:1648 */ break; case 64: -#line 765 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 773 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); } -#line 2528 "y.tab.c" /* yacc.c:1646 */ +#line 2551 "y.tab.c" /* yacc.c:1648 */ break; case 65: -#line 767 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 777 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); } -#line 2534 "y.tab.c" /* yacc.c:1646 */ +#line 2557 "y.tab.c" /* yacc.c:1648 */ break; case 66: -#line 769 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); } -#line 2540 "y.tab.c" /* yacc.c:1646 */ +#line 779 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2563 "y.tab.c" /* yacc.c:1648 */ break; case 67: -#line 771 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); } -#line 2546 "y.tab.c" /* yacc.c:1646 */ +#line 781 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ + { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); } +#line 2569 "y.tab.c" /* yacc.c:1648 */ break; case 68: -#line 773 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { (yyval.command) = (yyvsp[0].command); } -#line 2552 "y.tab.c" /* yacc.c:1646 */ +#line 783 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ + { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); } +#line 2575 "y.tab.c" /* yacc.c:1648 */ break; case 69: -#line 775 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 785 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); } -#line 2558 "y.tab.c" /* yacc.c:1646 */ +#line 2581 "y.tab.c" /* yacc.c:1648 */ break; case 70: -#line 777 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 787 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); } -#line 2564 "y.tab.c" /* yacc.c:1646 */ +#line 2587 "y.tab.c" /* yacc.c:1648 */ break; case 71: -#line 779 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 789 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); } -#line 2570 "y.tab.c" /* yacc.c:1646 */ +#line 2593 "y.tab.c" /* yacc.c:1648 */ break; case 72: -#line 781 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 791 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); } -#line 2576 "y.tab.c" /* yacc.c:1646 */ +#line 2599 "y.tab.c" /* yacc.c:1648 */ break; case 73: -#line 783 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 793 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); } -#line 2582 "y.tab.c" /* yacc.c:1646 */ +#line 2605 "y.tab.c" /* yacc.c:1648 */ break; case 74: -#line 785 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 795 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); } -#line 2588 "y.tab.c" /* yacc.c:1646 */ +#line 2611 "y.tab.c" /* yacc.c:1648 */ break; case 75: -#line 789 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { - (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); - if (word_top > 0) word_top--; - } -#line 2597 "y.tab.c" /* yacc.c:1646 */ +#line 797 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2617 "y.tab.c" /* yacc.c:1648 */ break; case 76: -#line 794 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 801 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2606 "y.tab.c" /* yacc.c:1646 */ +#line 2626 "y.tab.c" /* yacc.c:1648 */ break; case 77: -#line 799 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 806 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { - (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2615 "y.tab.c" /* yacc.c:1646 */ +#line 2635 "y.tab.c" /* yacc.c:1648 */ break; case 78: -#line 804 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 811 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2624 "y.tab.c" /* yacc.c:1646 */ +#line 2644 "y.tab.c" /* yacc.c:1648 */ break; case 79: -#line 809 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 816 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { - (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); + (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2633 "y.tab.c" /* yacc.c:1646 */ +#line 2653 "y.tab.c" /* yacc.c:1648 */ break; case 80: -#line 814 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 821 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2642 "y.tab.c" /* yacc.c:1646 */ +#line 2662 "y.tab.c" /* yacc.c:1648 */ break; case 81: -#line 819 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 826 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { - (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); + (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2651 "y.tab.c" /* yacc.c:1646 */ +#line 2671 "y.tab.c" /* yacc.c:1648 */ break; case 82: -#line 824 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 831 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2660 "y.tab.c" /* yacc.c:1646 */ +#line 2680 "y.tab.c" /* yacc.c:1648 */ break; case 83: -#line 831 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 836 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { - (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno); - if (word_top > 0) word_top--; - } -#line 2669 "y.tab.c" /* yacc.c:1646 */ + (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +#line 2689 "y.tab.c" /* yacc.c:1648 */ break; case 84: -#line 836 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 843 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno); + if ((yyval.command) == 0) YYERROR; if (word_top > 0) word_top--; } -#line 2678 "y.tab.c" /* yacc.c:1646 */ +#line 2699 "y.tab.c" /* yacc.c:1648 */ break; case 85: -#line 841 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 849 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { - (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno); + (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno); + if ((yyval.command) == 0) YYERROR; if (word_top > 0) word_top--; } -#line 2687 "y.tab.c" /* yacc.c:1646 */ +#line 2709 "y.tab.c" /* yacc.c:1648 */ break; case 86: -#line 846 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 855 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno); + if ((yyval.command) == 0) YYERROR; if (word_top > 0) word_top--; } -#line 2696 "y.tab.c" /* yacc.c:1646 */ +#line 2719 "y.tab.c" /* yacc.c:1648 */ break; case 87: -#line 853 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 861 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { - (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); - if (word_top > 0) word_top--; - } -#line 2705 "y.tab.c" /* yacc.c:1646 */ + (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno); + if ((yyval.command) == 0) YYERROR; + if (word_top > 0) word_top--; + } +#line 2729 "y.tab.c" /* yacc.c:1648 */ break; case 88: -#line 858 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 869 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2714 "y.tab.c" /* yacc.c:1646 */ +#line 2738 "y.tab.c" /* yacc.c:1648 */ break; case 89: -#line 863 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 874 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { - (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2723 "y.tab.c" /* yacc.c:1646 */ +#line 2747 "y.tab.c" /* yacc.c:1648 */ break; case 90: -#line 868 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 879 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2732 "y.tab.c" /* yacc.c:1646 */ +#line 2756 "y.tab.c" /* yacc.c:1648 */ break; case 91: -#line 873 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 884 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { - (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); + (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2741 "y.tab.c" /* yacc.c:1646 */ +#line 2765 "y.tab.c" /* yacc.c:1648 */ break; case 92: -#line 878 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 889 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2750 "y.tab.c" /* yacc.c:1646 */ +#line 2774 "y.tab.c" /* yacc.c:1648 */ break; case 93: -#line 885 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 894 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { - (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); + (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2759 "y.tab.c" /* yacc.c:1646 */ +#line 2783 "y.tab.c" /* yacc.c:1648 */ break; case 94: -#line 890 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 899 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { - (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]); + (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2768 "y.tab.c" /* yacc.c:1646 */ +#line 2792 "y.tab.c" /* yacc.c:1648 */ break; case 95: -#line 895 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 904 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { - (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]); + (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2777 "y.tab.c" /* yacc.c:1646 */ +#line 2801 "y.tab.c" /* yacc.c:1648 */ break; case 96: -#line 902 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); } -#line 2783 "y.tab.c" /* yacc.c:1646 */ +#line 911 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ + { + (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); + if (word_top > 0) word_top--; + } +#line 2810 "y.tab.c" /* yacc.c:1648 */ break; case 97: -#line 905 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); } -#line 2789 "y.tab.c" /* yacc.c:1646 */ +#line 916 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ + { + (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +#line 2819 "y.tab.c" /* yacc.c:1648 */ break; case 98: -#line 908 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { (yyval.command) = make_function_def ((yyvsp[-2].word), (yyvsp[0].command), function_dstart, function_bstart); } -#line 2795 "y.tab.c" /* yacc.c:1646 */ +#line 921 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ + { + (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +#line 2828 "y.tab.c" /* yacc.c:1648 */ break; case 99: -#line 912 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { (yyval.command) = (yyvsp[0].command); } -#line 2801 "y.tab.c" /* yacc.c:1646 */ +#line 928 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ + { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); } +#line 2834 "y.tab.c" /* yacc.c:1648 */ break; case 100: -#line 914 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 931 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ + { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); } +#line 2840 "y.tab.c" /* yacc.c:1648 */ + break; + + case 101: +#line 934 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ + { (yyval.command) = make_function_def ((yyvsp[-2].word), (yyvsp[0].command), function_dstart, function_bstart); } +#line 2846 "y.tab.c" /* yacc.c:1648 */ + break; + + case 102: +#line 938 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2852 "y.tab.c" /* yacc.c:1648 */ + break; + + case 103: +#line 940 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { COMMAND *tc; @@ -2819,320 +2870,320 @@ yyreduce: redirection. The two are semantically equivalent, though -- the only difference is in how the command printing code displays the redirections. */ - if (tc->redirects) + if (tc && tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = (yyvsp[0].redirect); } - else + else if (tc) tc->redirects = (yyvsp[0].redirect); (yyval.command) = (yyvsp[-1].command); } -#line 2834 "y.tab.c" /* yacc.c:1646 */ +#line 2885 "y.tab.c" /* yacc.c:1648 */ break; - case 101: -#line 945 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 104: +#line 971 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_subshell_command ((yyvsp[-1].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL; } -#line 2843 "y.tab.c" /* yacc.c:1646 */ +#line 2894 "y.tab.c" /* yacc.c:1648 */ break; - case 102: -#line 952 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 105: +#line 978 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } -#line 2852 "y.tab.c" /* yacc.c:1646 */ +#line 2903 "y.tab.c" /* yacc.c:1648 */ break; - case 103: -#line 957 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 106: +#line 983 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { COMMAND *tc; tc = (yyvsp[-1].command); - if (tc->redirects) + if (tc && tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = (yyvsp[0].redirect); } - else + else if (tc) tc->redirects = (yyvsp[0].redirect); (yyval.command) = make_coproc_command ("COPROC", (yyvsp[-1].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } -#line 2873 "y.tab.c" /* yacc.c:1646 */ +#line 2924 "y.tab.c" /* yacc.c:1648 */ break; - case 104: -#line 974 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 107: +#line 1000 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } -#line 2882 "y.tab.c" /* yacc.c:1646 */ +#line 2933 "y.tab.c" /* yacc.c:1648 */ break; - case 105: -#line 979 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 108: +#line 1005 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { COMMAND *tc; tc = (yyvsp[-1].command); - if (tc->redirects) + if (tc && tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = (yyvsp[0].redirect); } - else + else if (tc) tc->redirects = (yyvsp[0].redirect); (yyval.command) = make_coproc_command ((yyvsp[-2].word)->word, (yyvsp[-1].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } -#line 2903 "y.tab.c" /* yacc.c:1646 */ +#line 2954 "y.tab.c" /* yacc.c:1648 */ break; - case 106: -#line 996 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 109: +#line 1022 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command))); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } -#line 2912 "y.tab.c" /* yacc.c:1646 */ +#line 2963 "y.tab.c" /* yacc.c:1648 */ break; - case 107: -#line 1003 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 110: +#line 1029 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); } -#line 2918 "y.tab.c" /* yacc.c:1646 */ +#line 2969 "y.tab.c" /* yacc.c:1648 */ break; - case 108: -#line 1005 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 111: +#line 1031 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); } -#line 2924 "y.tab.c" /* yacc.c:1646 */ +#line 2975 "y.tab.c" /* yacc.c:1648 */ break; - case 109: -#line 1007 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 112: +#line 1033 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); } -#line 2930 "y.tab.c" /* yacc.c:1646 */ +#line 2981 "y.tab.c" /* yacc.c:1648 */ break; - case 110: -#line 1012 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 113: +#line 1038 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_group_command ((yyvsp[-1].command)); } -#line 2936 "y.tab.c" /* yacc.c:1646 */ +#line 2987 "y.tab.c" /* yacc.c:1648 */ break; - case 111: -#line 1016 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 114: +#line 1042 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); } -#line 2942 "y.tab.c" /* yacc.c:1646 */ +#line 2993 "y.tab.c" /* yacc.c:1648 */ break; - case 112: -#line 1020 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 115: +#line 1046 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[-1].command); } -#line 2948 "y.tab.c" /* yacc.c:1646 */ +#line 2999 "y.tab.c" /* yacc.c:1648 */ break; - case 113: -#line 1024 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 116: +#line 1050 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); } -#line 2954 "y.tab.c" /* yacc.c:1646 */ +#line 3005 "y.tab.c" /* yacc.c:1648 */ break; - case 114: -#line 1026 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 117: +#line 1052 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); } -#line 2960 "y.tab.c" /* yacc.c:1646 */ +#line 3011 "y.tab.c" /* yacc.c:1648 */ break; - case 115: -#line 1028 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 118: +#line 1054 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); } -#line 2966 "y.tab.c" /* yacc.c:1646 */ +#line 3017 "y.tab.c" /* yacc.c:1648 */ break; - case 117: -#line 1033 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 120: +#line 1059 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); } -#line 2972 "y.tab.c" /* yacc.c:1646 */ +#line 3023 "y.tab.c" /* yacc.c:1648 */ break; - case 118: -#line 1037 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 121: +#line 1063 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); } -#line 2978 "y.tab.c" /* yacc.c:1646 */ +#line 3029 "y.tab.c" /* yacc.c:1648 */ break; - case 119: -#line 1039 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 122: +#line 1065 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); } -#line 2984 "y.tab.c" /* yacc.c:1646 */ +#line 3035 "y.tab.c" /* yacc.c:1648 */ break; - case 120: -#line 1041 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 123: +#line 1067 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); } -#line 2990 "y.tab.c" /* yacc.c:1646 */ +#line 3041 "y.tab.c" /* yacc.c:1648 */ break; - case 121: -#line 1043 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 124: +#line 1069 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); } -#line 2996 "y.tab.c" /* yacc.c:1646 */ +#line 3047 "y.tab.c" /* yacc.c:1648 */ break; - case 122: -#line 1047 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 125: +#line 1073 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3002 "y.tab.c" /* yacc.c:1646 */ +#line 3053 "y.tab.c" /* yacc.c:1648 */ break; - case 123: -#line 1049 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 126: +#line 1075 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3008 "y.tab.c" /* yacc.c:1646 */ +#line 3059 "y.tab.c" /* yacc.c:1648 */ break; - case 124: -#line 1051 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 127: +#line 1077 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3014 "y.tab.c" /* yacc.c:1646 */ +#line 3065 "y.tab.c" /* yacc.c:1648 */ break; - case 125: -#line 1053 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 128: +#line 1079 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3020 "y.tab.c" /* yacc.c:1646 */ +#line 3071 "y.tab.c" /* yacc.c:1648 */ break; - case 126: -#line 1055 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 129: +#line 1081 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3026 "y.tab.c" /* yacc.c:1646 */ +#line 3077 "y.tab.c" /* yacc.c:1648 */ break; - case 127: -#line 1057 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 130: +#line 1083 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3032 "y.tab.c" /* yacc.c:1646 */ +#line 3083 "y.tab.c" /* yacc.c:1648 */ break; - case 128: -#line 1061 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 131: +#line 1087 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); } -#line 3038 "y.tab.c" /* yacc.c:1646 */ +#line 3089 "y.tab.c" /* yacc.c:1648 */ break; - case 129: -#line 1063 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 132: +#line 1089 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); } -#line 3044 "y.tab.c" /* yacc.c:1646 */ +#line 3095 "y.tab.c" /* yacc.c:1648 */ break; - case 130: -#line 1072 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 133: +#line 1098 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); if (need_here_doc) gather_here_documents (); } -#line 3054 "y.tab.c" /* yacc.c:1646 */ +#line 3105 "y.tab.c" /* yacc.c:1648 */ break; - case 132: -#line 1081 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 135: +#line 1107 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); } -#line 3062 "y.tab.c" /* yacc.c:1646 */ +#line 3113 "y.tab.c" /* yacc.c:1648 */ break; - case 134: -#line 1088 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 137: +#line 1114 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { if ((yyvsp[-2].command)->type == cm_connection) (yyval.command) = connect_async_list ((yyvsp[-2].command), (COMMAND *)NULL, '&'); else (yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&'); } -#line 3073 "y.tab.c" /* yacc.c:1646 */ +#line 3124 "y.tab.c" /* yacc.c:1648 */ break; - case 136: -#line 1099 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 139: +#line 1125 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); } -#line 3079 "y.tab.c" /* yacc.c:1646 */ +#line 3130 "y.tab.c" /* yacc.c:1648 */ break; - case 137: -#line 1101 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 140: +#line 1127 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); } -#line 3085 "y.tab.c" /* yacc.c:1646 */ +#line 3136 "y.tab.c" /* yacc.c:1648 */ break; - case 138: -#line 1103 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 141: +#line 1129 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { if ((yyvsp[-3].command)->type == cm_connection) (yyval.command) = connect_async_list ((yyvsp[-3].command), (yyvsp[0].command), '&'); else (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&'); } -#line 3096 "y.tab.c" /* yacc.c:1646 */ +#line 3147 "y.tab.c" /* yacc.c:1648 */ break; - case 139: -#line 1110 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 142: +#line 1136 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); } -#line 3102 "y.tab.c" /* yacc.c:1646 */ +#line 3153 "y.tab.c" /* yacc.c:1648 */ break; - case 140: -#line 1112 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 143: +#line 1138 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); } -#line 3108 "y.tab.c" /* yacc.c:1646 */ +#line 3159 "y.tab.c" /* yacc.c:1648 */ break; - case 141: -#line 1114 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 144: +#line 1140 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); } -#line 3114 "y.tab.c" /* yacc.c:1646 */ +#line 3165 "y.tab.c" /* yacc.c:1648 */ break; - case 144: -#line 1122 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 147: +#line 1148 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.number) = '\n'; } -#line 3120 "y.tab.c" /* yacc.c:1646 */ +#line 3171 "y.tab.c" /* yacc.c:1648 */ break; - case 145: -#line 1124 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 148: +#line 1150 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.number) = ';'; } -#line 3126 "y.tab.c" /* yacc.c:1646 */ +#line 3177 "y.tab.c" /* yacc.c:1648 */ break; - case 146: -#line 1126 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 149: +#line 1152 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.number) = yacc_EOF; } -#line 3132 "y.tab.c" /* yacc.c:1646 */ +#line 3183 "y.tab.c" /* yacc.c:1648 */ break; - case 149: -#line 1140 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 152: +#line 1166 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); if (need_here_doc) @@ -3145,11 +3196,11 @@ yyreduce: YYACCEPT; } } -#line 3149 "y.tab.c" /* yacc.c:1646 */ +#line 3200 "y.tab.c" /* yacc.c:1648 */ break; - case 150: -#line 1153 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 153: +#line 1179 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { if ((yyvsp[-1].command)->type == cm_connection) (yyval.command) = connect_async_list ((yyvsp[-1].command), (COMMAND *)NULL, '&'); @@ -3165,11 +3216,11 @@ yyreduce: YYACCEPT; } } -#line 3169 "y.tab.c" /* yacc.c:1646 */ +#line 3220 "y.tab.c" /* yacc.c:1648 */ break; - case 151: -#line 1169 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 154: +#line 1195 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[-1].command); if (need_here_doc) @@ -3182,72 +3233,72 @@ yyreduce: YYACCEPT; } } -#line 3186 "y.tab.c" /* yacc.c:1646 */ +#line 3237 "y.tab.c" /* yacc.c:1648 */ break; - case 152: -#line 1184 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 155: +#line 1210 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); } -#line 3192 "y.tab.c" /* yacc.c:1646 */ +#line 3243 "y.tab.c" /* yacc.c:1648 */ break; - case 153: -#line 1186 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 156: +#line 1212 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); } -#line 3198 "y.tab.c" /* yacc.c:1646 */ +#line 3249 "y.tab.c" /* yacc.c:1648 */ break; - case 154: -#line 1188 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 157: +#line 1214 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { if ((yyvsp[-2].command)->type == cm_connection) (yyval.command) = connect_async_list ((yyvsp[-2].command), (yyvsp[0].command), '&'); else (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&'); } -#line 3209 "y.tab.c" /* yacc.c:1646 */ +#line 3260 "y.tab.c" /* yacc.c:1648 */ break; - case 155: -#line 1195 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 158: +#line 1221 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); } -#line 3215 "y.tab.c" /* yacc.c:1646 */ +#line 3266 "y.tab.c" /* yacc.c:1648 */ break; - case 156: -#line 1198 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 159: +#line 1224 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); } -#line 3221 "y.tab.c" /* yacc.c:1646 */ +#line 3272 "y.tab.c" /* yacc.c:1648 */ break; - case 157: -#line 1202 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 160: +#line 1228 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); } -#line 3227 "y.tab.c" /* yacc.c:1646 */ +#line 3278 "y.tab.c" /* yacc.c:1648 */ break; - case 158: -#line 1204 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 161: +#line 1230 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { if ((yyvsp[0].command)) (yyvsp[0].command)->flags ^= CMD_INVERT_RETURN; /* toggle */ (yyval.command) = (yyvsp[0].command); } -#line 3237 "y.tab.c" /* yacc.c:1646 */ +#line 3288 "y.tab.c" /* yacc.c:1648 */ break; - case 159: -#line 1210 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 162: +#line 1236 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { if ((yyvsp[0].command)) (yyvsp[0].command)->flags |= (yyvsp[-1].number); (yyval.command) = (yyvsp[0].command); } -#line 3247 "y.tab.c" /* yacc.c:1646 */ +#line 3298 "y.tab.c" /* yacc.c:1648 */ break; - case 160: -#line 1216 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 163: +#line 1242 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { ELEMENT x; @@ -3265,12 +3316,13 @@ yyreduce: token_to_read = '\n'; else if ((yyvsp[0].number) == ';') token_to_read = ';'; + parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */ } -#line 3270 "y.tab.c" /* yacc.c:1646 */ +#line 3322 "y.tab.c" /* yacc.c:1648 */ break; - case 161: -#line 1235 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 164: +#line 1262 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { ELEMENT x; @@ -3289,18 +3341,19 @@ yyreduce: token_to_read = '\n'; if ((yyvsp[0].number) == ';') token_to_read = ';'; + parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */ } -#line 3294 "y.tab.c" /* yacc.c:1646 */ +#line 3347 "y.tab.c" /* yacc.c:1648 */ break; - case 162: -#line 1257 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 165: +#line 1285 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); } -#line 3300 "y.tab.c" /* yacc.c:1646 */ +#line 3353 "y.tab.c" /* yacc.c:1648 */ break; - case 163: -#line 1259 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 166: +#line 1287 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ COMMAND *tc; @@ -3323,35 +3376,35 @@ yyreduce: (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); } -#line 3327 "y.tab.c" /* yacc.c:1646 */ +#line 3380 "y.tab.c" /* yacc.c:1648 */ break; - case 164: -#line 1282 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 167: +#line 1310 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.command) = (yyvsp[0].command); } -#line 3333 "y.tab.c" /* yacc.c:1646 */ +#line 3386 "y.tab.c" /* yacc.c:1648 */ break; - case 165: -#line 1286 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 168: +#line 1314 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.number) = CMD_TIME_PIPELINE; } -#line 3339 "y.tab.c" /* yacc.c:1646 */ +#line 3392 "y.tab.c" /* yacc.c:1648 */ break; - case 166: -#line 1288 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 169: +#line 1316 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } -#line 3345 "y.tab.c" /* yacc.c:1646 */ +#line 3398 "y.tab.c" /* yacc.c:1648 */ break; - case 167: -#line 1290 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 170: +#line 1318 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } -#line 3351 "y.tab.c" /* yacc.c:1646 */ +#line 3404 "y.tab.c" /* yacc.c:1648 */ break; -#line 3355 "y.tab.c" /* yacc.c:1646 */ +#line 3408 "y.tab.c" /* yacc.c:1648 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3579,7 +3632,7 @@ yyreturn: #endif return yyresult; } -#line 1292 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1906 */ +#line 1320 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1907 */ /* Initial size to allocate for tokens, and the @@ -3607,6 +3660,8 @@ debug_parser (i) { #if YYDEBUG != 0 yydebug = i; + yyoutstream = stdout; + yyerrstream = stderr; #endif } #endif @@ -3744,6 +3799,7 @@ yy_readline_get () old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler); } + sh_unset_nodelay_mode (fileno (rl_instream)); /* just in case */ current_readline_line = readline (current_readline_prompt ? current_readline_prompt : ""); @@ -3906,19 +3962,9 @@ yy_stream_get () result = EOF; if (bash_input.location.file) { -#if 0 - if (interactive) - interrupt_immediately++; -#endif - /* XXX - don't need terminate_immediately; getc_with_restart checks for terminating signals itself if read returns < 0 */ result = getc_with_restart (bash_input.location.file); - -#if 0 - if (interactive) - interrupt_immediately--; -#endif } return (result); } @@ -4252,6 +4298,23 @@ parser_restore_alias () #endif } +#if defined (ALIAS) +/* Before freeing AP, make sure that there aren't any cases of pointer + aliasing that could cause us to reference freed memory later on. */ +void +clear_string_list_expander (ap) + alias_t *ap; +{ + register STRING_SAVER *t; + + for (t = pushed_string_list; t; t = t->next) + { + if (t->expander && t->expander == ap) + t->expander = 0; + } +} +#endif + void clear_shell_input_line () { @@ -4305,7 +4368,8 @@ read_a_line (remove_quoted_newline) c = '\n'; } - /* `+2' in case the final character in the buffer is a newline. */ + /* `+2' in case the final character in the buffer is a newline or we + have to handle CTLESC or CTLNUL. */ RESIZE_MALLOCED_BUFFER (line_buffer, indx, 2, buffer_size, 128); /* IF REMOVE_QUOTED_NEWLINES is non-zero, we are reading a @@ -4336,7 +4400,14 @@ read_a_line (remove_quoted_newline) } } else - line_buffer[indx++] = c; + { + /* remove_quoted_newline is non-zero if the here-document delimiter + is unquoted. In this case, we will be expanding the lines and + need to make sure CTLESC and CTLNUL in the input are quoted. */ + if (remove_quoted_newline && (c == CTLESC || c == CTLNUL)) + line_buffer[indx++] = CTLESC; + line_buffer[indx++] = c; + } if (c == '\n') { @@ -4597,6 +4668,16 @@ shell_getc (remove_quoted_newline) #if 0 internal_warning ("shell_getc: ignored null byte in input"); #endif + /* If we get EOS while parsing a string, treat it as EOF so we + don't just keep looping. Happens very rarely */ + if (bash_input.type == st_string) + { + if (i == 0) + shell_input_line_terminator = EOF; + shell_input_line[i] = '\0'; + c = EOF; + break; + } continue; } @@ -4660,20 +4741,21 @@ shell_getc (remove_quoted_newline) { char *expansions; # if defined (BANG_HISTORY) - int old_hist; - /* If the current delimiter is a single quote, we should not be performing history expansion, even if we're on a different line from the original single quote. */ - old_hist = history_expansion_inhibited; if (current_delimiter (dstack) == '\'') - history_expansion_inhibited = 1; + history_quoting_state = '\''; + else if (current_delimiter (dstack) == '"') + history_quoting_state = '"'; + else + history_quoting_state = 0; # endif /* Calling with a third argument of 1 allows remember_on_history to determine whether or not the line is saved to the history list */ expansions = pre_process_line (shell_input_line, 1, 1); # if defined (BANG_HISTORY) - history_expansion_inhibited = old_hist; + history_quoting_state = 0; # endif if (expansions != shell_input_line) { @@ -4775,7 +4857,34 @@ next_alias_char: parsing an alias, we have just saved one (push_string, when called by the parse_dparen code) In this case, just go on as well. The PSH_SOURCE case is handled below. */ + + /* If we're at the end of an alias expansion add a space to make sure that + the alias remains marked as being in use while we expand its last word. + This makes sure that pop_string doesn't mark the alias as not in use + before the string resulting from the alias expansion is tokenized and + checked for alias expansion, preventing recursion. At this point, the + last character in shell_input_line is the last character of the alias + expansion. We test that last character to determine whether or not to + return the space that will delimit the token and postpone the pop_string. + This set of conditions duplicates what used to be in mk_alexpansion () + below, with the addition that we don't add a space if we're currently + reading a quoted string or in a shell comment. */ +#ifndef OLD_ALIAS_HACK + if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE && + pushed_string_list->flags != PSH_DPAREN && + (parser_state & PST_COMMENT) == 0 && + shell_input_line_index > 0 && + shell_input_line[shell_input_line_index-1] != ' ' && + shell_input_line[shell_input_line_index-1] != '\n' && + shellmeta (shell_input_line[shell_input_line_index-1]) == 0 && + (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"')) + { + return ' '; /* END_ALIAS */ + } +#endif + pop_alias: + /* This case works for PSH_DPAREN as well */ if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE) { pop_string (); @@ -4793,10 +4902,9 @@ pop_alias: /* What do we do here if we're expanding an alias whose definition includes an escaped newline? If that's the last character in the alias expansion, we just pop the pushed string list (recall that - we inhibit the appending of a space in mk_alexpansion() if newline - is the last character). If it's not the last character, we need - to consume the quoted newline and move to the next character in - the expansion. */ + we inhibit the appending of a space if newline is the last + character). If it's not the last character, we need to consume the + quoted newline and move to the next character in the expansion. */ #if defined (ALIAS) if (expanding_alias () && shell_input_line[shell_input_line_index+1] == '\0') { @@ -4861,7 +4969,7 @@ parser_remaining_input () { if (shell_input_line == 0) return 0; - if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len) + if ((int)shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len) return ""; /* XXX */ return (shell_input_line + shell_input_line_index); } @@ -4971,7 +5079,7 @@ yylex () if (bash_input.type == st_string) rewind_input_string (); } - parser_state &= ~PST_EOFTOKEN; + parser_state &= ~PST_EOFTOKEN; /* ??? */ return (current_token); } @@ -4980,6 +5088,10 @@ yylex () which allow ESAC to be the next one read. */ static int esacs_needed_count; +/* When non-zero, we can read IN as an acceptable token, regardless of how + many newlines we read. */ +static int expecting_in_token; + static void push_heredoc (r) REDIRECT *r; @@ -5100,10 +5212,15 @@ mk_alexpansion (s) l = strlen (s); r = xmalloc (l + 2); strcpy (r, s); +#ifdef OLD_ALIAS_HACK /* If the last character in the alias is a newline, don't add a trailing space to the expansion. Works with shell_getc above. */ - if (r[l - 1] != ' ' && r[l - 1] != '\n' && shellmeta(r[l - 1]) == 0) + /* Need to do something about the case where the alias expansion contains + an unmatched quoted string, since appending this space affects the + subsequent output. */ + if (l > 0 && r[l - 1] != ' ' && r[l - 1] != '\n' && shellmeta(r[l - 1]) == 0) r[l++] = ' '; +#endif r[l] = '\0'; return r; } @@ -5124,10 +5241,14 @@ alias_expand_token (tokstr) if (ap && (ap->flags & AL_BEINGEXPANDED)) return (NO_EXPANSION); +#ifdef OLD_ALIAS_HACK /* mk_alexpansion puts an extra space on the end of the alias expansion, - so the lookahead by the parser works right. If this gets changed, - make sure the code in shell_getc that deals with reaching the end of - an expanded alias is changed with it. */ + so the lookahead by the parser works right (the alias needs to remain + `in use' while parsing its last word to avoid alias recursion for + something like "alias echo=echo"). If this gets changed, make sure + the code in shell_getc that deals with reaching the end of an + expanded alias is changed with it. */ +#endif expanded = ap ? mk_alexpansion (ap->value) : (char *)NULL; if (expanded) @@ -5225,6 +5346,7 @@ static int special_case_tokens (tokstr) char *tokstr; { + /* Posix grammar rule 6 */ if ((last_read_token == WORD) && #if defined (SELECT_COMMAND) ((token_before_that == FOR) || (token_before_that == CASE) || (token_before_that == SELECT)) && @@ -5238,9 +5360,34 @@ special_case_tokens (tokstr) parser_state |= PST_CASEPAT; esacs_needed_count++; } + if (expecting_in_token) + expecting_in_token--; return (IN); } + /* XXX - leaving above code intact for now, but it should eventually be + removed in favor of this clause. */ + /* Posix grammar rule 6 */ + if (expecting_in_token && (last_read_token == WORD || last_read_token == '\n') && + (tokstr[0] == 'i' && tokstr[1] == 'n' && tokstr[2] == 0)) + { + if (parser_state & PST_CASESTMT) + { + parser_state |= PST_CASEPAT; + esacs_needed_count++; + } + expecting_in_token--; + return (IN); + } + /* Posix grammar rule 6, third word in FOR: for i; do command-list; done */ + else if (expecting_in_token && (last_read_token == '\n' || last_read_token == ';') && + (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0')) + { + expecting_in_token--; + return (DO); + } + + /* for i do; command-list; done */ if (last_read_token == WORD && #if defined (SELECT_COMMAND) (token_before_that == FOR || token_before_that == SELECT) && @@ -5248,7 +5395,11 @@ special_case_tokens (tokstr) (token_before_that == FOR) && #endif (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0')) - return (DO); + { + if (expecting_in_token) + expecting_in_token--; + return (DO); + } /* Ditto for ESAC in the CASE case. Specifically, this handles "case word in esac", which is a legal @@ -5258,9 +5409,9 @@ special_case_tokens (tokstr) the designers disagree. */ if (esacs_needed_count) { - esacs_needed_count--; - if (STREQ (tokstr, "esac")) + if (last_read_token == IN && STREQ (tokstr, "esac")) { + esacs_needed_count--; parser_state &= ~PST_CASEPAT; return (ESAC); } @@ -5351,6 +5502,13 @@ reset_parser () token_to_read = '\n'; } +void +reset_readahead_token () +{ + if (token_to_read == '\n') + token_to_read = 0; +} + /* Read the next token. Command can be READ (normal operation) or RESET (to normalize state). */ static int @@ -5412,11 +5570,24 @@ read_token (command) return (yacc_EOF); } + /* If we hit the end of the string and we're not expanding an alias (e.g., + we are eval'ing a string that is an incomplete command), return EOF */ + if (character == '\0' && bash_input.type == st_string && expanding_alias() == 0) + { +#if defined (DEBUG) +itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.string); +#endif + EOF_Reached = 1; + return (yacc_EOF); + } + if MBTEST(character == '#' && (!interactive || interactive_comments)) { /* A comment. Discard until EOL or EOF, and then return a newline. */ + parser_state |= PST_COMMENT; discard_until ('\n'); shell_getc (0); + parser_state &= ~PST_COMMENT; character = '\n'; /* this will take the next if statement and return. */ } @@ -5607,18 +5778,19 @@ tokword: #define P_DOLBRACE 0x0040 /* parsing a ${...} construct */ /* Lexical state while parsing a grouping construct or $(...). */ -#define LEX_WASDOL 0x001 -#define LEX_CKCOMMENT 0x002 -#define LEX_INCOMMENT 0x004 -#define LEX_PASSNEXT 0x008 -#define LEX_RESWDOK 0x010 -#define LEX_CKCASE 0x020 -#define LEX_INCASE 0x040 -#define LEX_INHEREDOC 0x080 -#define LEX_HEREDELIM 0x100 /* reading here-doc delimiter */ -#define LEX_STRIPDOC 0x200 /* <<- strip tabs from here doc delim */ -#define LEX_QUOTEDDOC 0x400 /* here doc with quoted delim */ -#define LEX_INWORD 0x800 +#define LEX_WASDOL 0x0001 +#define LEX_CKCOMMENT 0x0002 +#define LEX_INCOMMENT 0x0004 +#define LEX_PASSNEXT 0x0008 +#define LEX_RESWDOK 0x0010 +#define LEX_CKCASE 0x0020 +#define LEX_INCASE 0x0040 +#define LEX_INHEREDOC 0x0080 +#define LEX_HEREDELIM 0x0100 /* reading here-doc delimiter */ +#define LEX_STRIPDOC 0x0200 /* <<- strip tabs from here doc delim */ +#define LEX_QUOTEDDOC 0x0400 /* here doc with quoted delim */ +#define LEX_INWORD 0x0800 +#define LEX_GTLT 0x1000 #define COMSUB_META(ch) ((ch) == ';' || (ch) == '&' || (ch) == '|') @@ -5649,7 +5821,7 @@ parse_matched_pair (qc, open, close, lenp, flags) int open, close; int *lenp, flags; { - int count, ch, tflags; + int count, ch, prevch, tflags; int nestlen, ttranslen, start_lineno; char *ret, *nestret, *ttrans; int retind, retsize, rflags; @@ -5671,8 +5843,10 @@ parse_matched_pair (qc, open, close, lenp, flags) retind = 0; start_lineno = line_number; + ch = EOF; /* just in case */ while (count) { + prevch = ch; ch = shell_getc (qc != '\'' && (tflags & (LEX_PASSNEXT)) == 0); if (ch == EOF) @@ -5823,7 +5997,7 @@ parse_matched_pair (qc, open, close, lenp, flags) { /* Translate $'...' here. */ ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); - xfree (nestret); + free (nestret); /* If we're parsing a double-quoted brace expansion and we are not in a place where single quotes are treated specially, @@ -5853,7 +6027,7 @@ parse_matched_pair (qc, open, close, lenp, flags) { /* Locale expand $"..." here. */ ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); - xfree (nestret); + free (nestret); nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); free (ttrans); @@ -5866,6 +6040,12 @@ parse_matched_pair (qc, open, close, lenp, flags) } else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ goto parse_dollar_word; +#if defined (PROCESS_SUBSTITUTION) + /* XXX - technically this should only be recognized at the start of + a word */ + else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_GTLT) && (ch == '(')) /* ) */ + goto parse_dollar_word; +#endif } /* Parse an old-style command substitution within double quotes as a single word. */ @@ -5897,7 +6077,13 @@ parse_dollar_word: FREE (nestret); } - if MBTEST(ch == '$') +#if defined (PROCESS_SUBSTITUTION) + if MBTEST((ch == '<' || ch == '>') && (tflags & LEX_GTLT) == 0) + tflags |= LEX_GTLT; + else + tflags &= ~LEX_GTLT; +#endif + if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0) tflags |= LEX_WASDOL; else tflags &= ~LEX_WASDOL; @@ -6029,7 +6215,7 @@ parse_comsub (qc, open, close, lenp, flags) while (count) { comsub_readchar: - ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT)) == 0); + ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT|LEX_QUOTEDDOC)) == 0); if (ch == EOF) { @@ -6060,7 +6246,7 @@ eof_error: tind = lex_firstind; while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t') tind++; - if (STREQN (ret + tind, heredelim, hdlen)) + if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen)) { tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC); /*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/ @@ -6301,11 +6487,13 @@ eof_error: tflags |= LEX_RESWDOK; lex_rwlen = 0; } - else + else if (shellmeta (ch) == 0) { tflags &= ~LEX_RESWDOK; /*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 0", line_number, ret+retind-4);*/ } + else /* can't be in a reserved word any more */ + lex_rwlen = 0; } else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0))) ; /* don't modify LEX_RESWDOK if we're starting a comment */ @@ -6378,7 +6566,10 @@ eof_error: continue; } else - ch = peekc; /* fall through and continue XXX */ + { + shell_ungetc (peekc); /* not a here-doc, start over */ + continue; + } } else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (((tflags & LEX_RESWDOK) && lex_rwlen == 0) || ((tflags & LEX_INWORD) && lex_wlen == 0))) { @@ -6434,7 +6625,7 @@ eof_error: { /* Translate $'...' here. */ ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); - xfree (nestret); + free (nestret); if ((rflags & P_DQUOTE) == 0) { @@ -6453,7 +6644,7 @@ eof_error: { /* Locale expand $"..." here. */ ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); - xfree (nestret); + free (nestret); nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); free (ttrans); @@ -6481,7 +6672,7 @@ eof_error: FREE (nestret); } - if MBTEST(ch == '$') + if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0) tflags |= LEX_WASDOL; else tflags &= ~LEX_WASDOL; @@ -6506,12 +6697,25 @@ xparse_dolparen (base, string, indp, flags) sh_parser_state_t ps; sh_input_line_state_t ls; int orig_ind, nc, sflags, orig_eof_token; - char *ret, *s, *ep, *ostring; + char *ret, *ep, *ostring; +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + STRING_SAVER *saved_pushed_strings; +#endif - /*yydebug = 1;*/ +/*debug_parser(1);*/ orig_ind = *indp; ostring = string; + if (*string == 0) + { + if (flags & SX_NOALLOC) + return (char *)NULL; + + ret = xmalloc (1); + ret[0] = '\0'; + return ret; + } + /*itrace("xparse_dolparen: size = %d shell_input_line = `%s'", shell_input_line_size, shell_input_line);*/ sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE; if (flags & SX_NOLONGJMP) @@ -6519,29 +6723,47 @@ xparse_dolparen (base, string, indp, flags) save_parser_state (&ps); save_input_line_state (&ls); orig_eof_token = shell_eof_token; +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + saved_pushed_strings = pushed_string_list; /* separate parsing context */ + pushed_string_list = (STRING_SAVER *)NULL; +#endif /*(*/ parser_state |= PST_CMDSUBST|PST_EOFTOKEN; /* allow instant ')' */ /*(*/ shell_eof_token = ')'; + /* Should we save and restore the bison/yacc lookahead token (yychar) here? + Or only if it's not YYEMPTY? */ + nc = parse_string (string, "command substitution", sflags, &ep); + if (current_token == shell_eof_token) + yyclearin; /* might want to clear lookahead token unconditionally */ + shell_eof_token = orig_eof_token; restore_parser_state (&ps); reset_parser (); /* reset_parser clears shell_input_line and associated variables */ restore_input_line_state (&ls); +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + pushed_string_list = saved_pushed_strings; +#endif + token_to_read = 0; /* If parse_string returns < 0, we need to jump to top level with the - negative of the return value */ + negative of the return value. We abandon the rest of this input line + first */ if (nc < 0) - jump_to_top_level (-nc); /* XXX */ + { + clear_shell_input_line (); /* XXX */ + jump_to_top_level (-nc); /* XXX */ + } /* Need to find how many characters parse_and_execute consumed, update *indp, if flags != 0, copy the portion of the string parsed into RET - and return it. If flags & 1 (EX_NOALLOC) we can return NULL. */ + and return it. If flags & 1 (SX_NOALLOC) we can return NULL. */ /*(*/ if (ep[-1] != ')') @@ -6560,6 +6782,8 @@ xparse_dolparen (base, string, indp, flags) #if DEBUG if (base[*indp] != ')') itrace("xparse_dolparen:%d: base[%d] != RPAREN (%d), base = `%s'", line_number, *indp, base[*indp], base); + if (*indp < orig_ind) + itrace("xparse_dolparen:%d: *indp (%d) < orig_ind (%d), orig_string = `%s'", line_number, *indp, orig_ind, ostring); #endif if (flags & SX_NOALLOC) @@ -6803,7 +7027,7 @@ cond_term () if (term) term->flags |= CMD_INVERT_RETURN; } - else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[2] == 0 && test_unop (yylval.word->word)) + else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[1] && yylval.word->word[2] == 0 && test_unop (yylval.word->word)) { op = yylval.word; tok = read_token (READ); @@ -6936,20 +7160,30 @@ parse_cond_command () #if defined (ARRAY_VARS) /* When this is called, it's guaranteed that we don't care about anything - in t beyond i. We do save and restore the chars, though. */ + in t beyond i. We use a buffer with room for the characters we add just + in case assignment() ends up doing something like parsing a command + substitution that will reallocate atoken. We don't want to write beyond + the end of an allocated buffer. */ static int token_is_assignment (t, i) char *t; int i; { - unsigned char c, c1; int r; + char *atoken; - c = t[i]; c1 = t[i+1]; - t[i] = '='; t[i+1] = '\0'; - r = assignment (t, (parser_state & PST_COMPASSIGN) != 0); - t[i] = c; t[i+1] = c1; - return r; + atoken = xmalloc (i + 3); + memcpy (atoken, t, i); + atoken[i] = '='; + atoken[i+1] = '\0'; + + r = assignment (atoken, (parser_state & PST_COMPASSIGN) != 0); + + free (atoken); + + /* XXX - check that r == i to avoid returning false positive for + t containing `=' before t[i]. */ + return (r > 0 && r == i); } /* XXX - possible changes here for `+=' */ @@ -7064,7 +7298,8 @@ read_token_word (character) strcpy (token + token_index, ttok); token_index += ttoklen; all_digit_token = 0; - quoted = 1; + if (character != '`') + quoted = 1; dollar_present |= (character == '"' && strchr (ttok, '$') != 0); FREE (ttok); goto next_character; @@ -7404,6 +7639,7 @@ got_token: yylval.word = the_word; + /* should we check that quoted == 0 as well? */ if (token[0] == '{' && token[token_index-1] == '}' && (character == '<' || character == '>')) { @@ -7416,9 +7652,15 @@ got_token: #endif { strcpy (the_word->word, token+1); -/*itrace("read_token_word: returning REDIR_WORD for %s", the_word->word);*/ +/* itrace("read_token_word: returning REDIR_WORD for %s", the_word->word); */ + yylval.word = the_word; /* accommodate recursive call */ return (REDIR_WORD); } + else + /* valid_array_reference can call the parser recursively; need to + make sure that yylval.word doesn't change if we are going to + return WORD or ASSIGNMENT_WORD */ + yylval.word = the_word; } result = ((the_word->flags & (W_ASSIGNMENT|W_NOSPLIT)) == (W_ASSIGNMENT|W_NOSPLIT)) @@ -7436,6 +7678,7 @@ got_token: if (word_top < MAX_CASE_NEST) word_top++; word_lineno[word_top] = line_number; + expecting_in_token++; break; } @@ -7639,6 +7882,9 @@ history_delimiting_chars (line) return (" "); } + if (line_isblank (line)) + return (""); + return ("; "); } #endif /* HISTORY */ @@ -7709,6 +7955,31 @@ print_prompt () fflush (stderr); } +#if defined (HISTORY) + /* The history library increments the history offset as soon as it stores + the first line of a potentially multi-line command, so we compensate + here by returning one fewer when appropriate. */ +static int +prompt_history_number (pmt) + char *pmt; +{ + int ret; + + ret = history_number (); + if (ret == 1) + return ret; + + if (pmt == ps1_prompt) /* are we expanding $PS1? */ + return ret; + else if (pmt == ps2_prompt && command_oriented_history == 0) + return ret; /* not command oriented history */ + else if (pmt == ps2_prompt && command_oriented_history && current_command_first_line_saved) + return ret - 1; + else + return ret - 1; /* PS0, PS4, ${var@P}, PS2 other cases */ +} +#endif + /* Return a string which will be printed as a prompt. The string may contain special characters which are decoded as follows: @@ -7746,7 +8017,7 @@ decode_prompt_string (string) char *string; { WORD_LIST *list; - char *result, *t; + char *result, *t, *orig_string; struct dstack save_dstack; int last_exit_value, last_comsub_pid; #if defined (PROMPT_STRING_DECODE) @@ -7762,6 +8033,7 @@ decode_prompt_string (string) result = (char *)xmalloc (result_size = PROMPT_GROWTH); result[result_index = 0] = 0; temp = (char *)NULL; + orig_string = string; while (c = *string++) { @@ -7777,7 +8049,7 @@ decode_prompt_string (string) #if !defined (HISTORY) temp = savestring ("1"); #else /* HISTORY */ - temp = itos (history_number ()); + temp = itos (prompt_history_number (orig_string)); #endif /* HISTORY */ string--; /* add_string increments string again. */ goto add_string; @@ -8009,14 +8281,19 @@ decode_prompt_string (string) goto add_string; case '#': - temp = itos (current_command_number); + n = current_command_number; + /* If we have already incremented current_command_number (PS4, + ${var@P}), compensate */ + if (orig_string != ps0_prompt && orig_string != ps1_prompt && orig_string != ps2_prompt) + n--; + temp = itos (n); goto add_string; case '!': #if !defined (HISTORY) temp = savestring ("1"); #else /* HISTORY */ - temp = itos (history_number ()); + temp = itos (prompt_history_number (orig_string)); #endif /* HISTORY */ goto add_string; @@ -8593,8 +8870,6 @@ sh_parser_state_t * save_parser_state (ps) sh_parser_state_t *ps; { - int i; - if (ps == 0) ps = (sh_parser_state_t *)xmalloc (sizeof (sh_parser_state_t)); if (ps == 0) @@ -8630,15 +8905,10 @@ save_parser_state (ps) ps->need_here_doc = need_here_doc; ps->here_doc_first_line = here_doc_first_line; -#if 0 - for (i = 0; i < HEREDOC_MAX; i++) - ps->redir_stack[i] = redir_stack[i]; -#else if (need_here_doc == 0) ps->redir_stack[0] = 0; else memcpy (ps->redir_stack, redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX); -#endif ps->token = token; ps->token_buffer_size = token_buffer_size; @@ -8748,6 +9018,10 @@ restore_input_line_state (ls) ************************************************/ #if defined (HANDLE_MULTIBYTE) + +/* We don't let the property buffer get larger than this unless the line is */ +#define MAX_PROPSIZE 32768 + static void set_line_mbstate () { @@ -8759,8 +9033,22 @@ set_line_mbstate () if (shell_input_line == NULL) return; len = strlen (shell_input_line); /* XXX - shell_input_line_len ? */ - shell_input_line_property = (char *)xrealloc (shell_input_line_property, len + 1); + if (len == 0) + return; + if (shell_input_line_propsize >= MAX_PROPSIZE && len < MAX_PROPSIZE>>1) + { + free (shell_input_line_property); + shell_input_line_property = 0; + shell_input_line_propsize = 0; + } + if (len+1 > shell_input_line_propsize) + { + shell_input_line_propsize = len + 1; + shell_input_line_property = (char *)xrealloc (shell_input_line_property, shell_input_line_propsize); + } + /* XXX - use whether or not we are in a UTF-8 locale to avoid calls to + mbrlen */ memset (&prevs, '\0', sizeof (mbstate_t)); for (i = previ = 0; i < len; i++) { @@ -8775,6 +9063,9 @@ set_line_mbstate () break; } + /* I'd love to take more advantage of UTF-8's properties in a UTF-8 + locale, but mbrlen changes the mbstate_t on every call even when + presented with single-byte characters. */ mbclen = mbrlen (shell_input_line + previ, i - previ + 1, &mbs); if (mbclen == 1 || mbclen == (size_t)-1) { diff --git a/y.tab.h b/y.tab.h index b367eb205..86c8e505d 100644 --- a/y.tab.h +++ b/y.tab.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.0.5. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -148,7 +148,7 @@ extern int yydebug; union YYSTYPE { -#line 333 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1909 */ +#line 328 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1910 */ WORD_DESC *word; /* the word that we read. */ int number; /* the number that we read. */ @@ -158,7 +158,7 @@ union YYSTYPE ELEMENT element; PATTERN_LIST *pattern; -#line 162 "y.tab.h" /* yacc.c:1909 */ +#line 162 "y.tab.h" /* yacc.c:1910 */ }; typedef union YYSTYPE YYSTYPE;